| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852 |
- /*! For license information please see iclient-mapboxgl-react.min.js.LICENSE.txt */
- /*!
- *
- * @supermap/react-iclient.(https://iclient.supermap.io)
- * Copyright© 2000 - 2023 SuperMap Software Co.Ltd
- * license: Apache-2.0
- * version: v11.1.0
- *
- */
- !function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("../public/libs/mapboxgl/mapbox-gl-enhance.js"),require("echarts"),require("three/build/three"),require("../public/libs/deckgl/deck.gl.min.js"),require("../public/libs/iclient-mapboxgl/iclient-mapboxgl.min.js"),require("antd"),require("../public/libs/echarts-layer/EchartsLayer.js"),require("react"),require("canvg")):"function"===typeof define&&define.amd?define(["../public/libs/mapboxgl/mapbox-gl-enhance.js","echarts","three/build/three","../public/libs/deckgl/deck.gl.min.js","../public/libs/iclient-mapboxgl/iclient-mapboxgl.min.js","antd","../public/libs/echarts-layer/EchartsLayer.js","react","canvg"],t):"object"===typeof exports?exports.SuperMap=t(require("../public/libs/mapboxgl/mapbox-gl-enhance.js"),require("echarts"),require("three/build/three"),require("../public/libs/deckgl/deck.gl.min.js"),require("../public/libs/iclient-mapboxgl/iclient-mapboxgl.min.js"),require("antd"),require("../public/libs/echarts-layer/EchartsLayer.js"),require("react"),require("canvg")):(e.SuperMap=e.SuperMap||{},e.SuperMap.Components=t(e.mapboxgl,e.echarts,e.THREE,e.DeckGL,e.SuperMap,e.antd,e.EchartsLayer,e.React,e.canvg))}(self,(function(__WEBPACK_EXTERNAL_MODULE__375__,__WEBPACK_EXTERNAL_MODULE__550__,__WEBPACK_EXTERNAL_MODULE__2069__,__WEBPACK_EXTERNAL_MODULE__2371__,__WEBPACK_EXTERNAL_MODULE__2395__,__WEBPACK_EXTERNAL_MODULE__2721__,__WEBPACK_EXTERNAL_MODULE__3094__,__WEBPACK_EXTERNAL_MODULE__3899__,__WEBPACK_EXTERNAL_MODULE__5973__){/******/
- return function(){// webpackBootstrap
- /******/var __webpack_modules__={
- /***/9705:
- /***/function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(1540);
- /**
- * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.
- *
- * @name bbox
- * @param {GeoJSON} geojson any GeoJSON object
- * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order
- * @example
- * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);
- * var bbox = turf.bbox(line);
- * var bboxPolygon = turf.bboxPolygon(bbox);
- *
- * //addToMap
- * var addToMap = [line, bboxPolygon]
- */function a(e){var t=[1/0,1/0,-1/0,-1/0];return n.coordEach(e,(function(e){t[0]>e[0]&&(t[0]=e[0]),t[1]>e[1]&&(t[1]=e[1]),t[2]<e[0]&&(t[2]=e[0]),t[3]<e[1]&&(t[3]=e[1])})),t}a.default=a,t.default=a},
- /***/3880:
- /***/function(e,t,r){"use strict";
- // ESM COMPAT FLAG
- r.r(t),
- // EXPORTS
- r.d(t,{default:function(){/* binding */return f}});// CONCATENATED MODULE: ./node_modules/@turf/envelope/node_modules/@turf/meta/main.es.js
- /**
- * Callback for coordEach
- *
- * @callback coordEachCallback
- * @param {Array<number>} currentCoord The current coordinate being processed.
- * @param {number} coordIndex The current index of the coordinate being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- * @param {number} geometryIndex The current index of the Geometry being processed.
- */
- /**
- * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()
- *
- * @name coordEach
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)
- * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
- * @returns {void}
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {"foo": "bar"}),
- * turf.point([36, 53], {"hello": "world"})
- * ]);
- *
- * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- * //=currentCoord
- * //=coordIndex
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * });
- */
- function n(e,t,r){
- // Handles null Geometry -- Skips this GeoJSON
- if(null!==e)
- // This logic may look a little weird. The reason why it is that way
- // is because it's trying to be fast. GeoJSON supports multiple kinds
- // of objects at its root: FeatureCollection, Features, Geometries.
- // This function has the responsibility of handling all of them, and that
- // means that some of the `for` loops you see below actually just don't apply
- // to certain inputs. For instance, if you give this just a
- // Point geometry, then both loops are short-circuited and all we do
- // is gradually rename the input until it's called 'geometry'.
- // This also aims to allocate as few resources as possible: just a
- // few numbers and booleans, rather than any temporary arrays as would
- // be required with the normalization approach.
- for(var a,i,o,s,u,l,c,d,f=0,h=0,p=e.type,y="FeatureCollection"===p,m="Feature"===p,v=y?e.features.length:1,g=0;g<v;g++){u=(d=!!(c=y?e.features[g].geometry:m?e.geometry:e)&&"GeometryCollection"===c.type)?c.geometries.length:1;for(var b=0;b<u;b++){var w=0,S=0;
- // Handles null Geometry -- Skips this geometry
- if(null!==(s=d?c.geometries[b]:c)){l=s.coordinates;var L=s.type;switch(f=!r||"Polygon"!==L&&"MultiPolygon"!==L?0:1,L){case null:break;case"Point":if(!1===t(l,h,g,w,S))return!1;h++,w++;break;case"LineString":case"MultiPoint":for(a=0;a<l.length;a++){if(!1===t(l[a],h,g,w,S))return!1;h++,"MultiPoint"===L&&w++}"LineString"===L&&w++;break;case"Polygon":case"MultiLineString":for(a=0;a<l.length;a++){for(i=0;i<l[a].length-f;i++){if(!1===t(l[a][i],h,g,w,S))return!1;h++}"MultiLineString"===L&&w++,"Polygon"===L&&S++}"Polygon"===L&&w++;break;case"MultiPolygon":for(a=0;a<l.length;a++){for("MultiPolygon"===L&&(S=0),i=0;i<l[a].length;i++){for(o=0;o<l[a][i].length-f;o++){if(!1===t(l[a][i][o],h,g,w,S))return!1;h++}S++}w++}break;case"GeometryCollection":for(a=0;a<s.geometries.length;a++)if(!1===n(s.geometries[a],t,r))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}
- /**
- * Callback for coordReduce
- *
- * The first time the callback function is called, the values provided as arguments depend
- * on whether the reduce method has an initialValue argument.
- *
- * If an initialValue is provided to the reduce method:
- * - The previousValue argument is initialValue.
- * - The currentValue argument is the value of the first element present in the array.
- *
- * If an initialValue is not provided:
- * - The previousValue argument is the value of the first element present in the array.
- * - The currentValue argument is the value of the second element present in the array.
- *
- * @callback coordReduceCallback
- * @param {*} previousValue The accumulated value previously returned in the last invocation
- * of the callback, or initialValue, if supplied.
- * @param {Array<number>} currentCoord The current coordinate being processed.
- * @param {number} coordIndex The current index of the coordinate being processed.
- * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- * @param {number} geometryIndex The current index of the Geometry being processed.
- */
- /**
- * Reduce coordinates in any GeoJSON object, similar to Array.reduce()
- *
- * @name coordReduce
- * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object
- * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)
- * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
- * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
- * @returns {*} The value that results from the reduction.
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {"foo": "bar"}),
- * turf.point([36, 53], {"hello": "world"})
- * ]);
- *
- * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- * //=previousValue
- * //=currentCoord
- * //=coordIndex
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * return currentCoord;
- * });
- */
- /* harmony default export */var a=// CONCATENATED MODULE: ./node_modules/@turf/envelope/node_modules/@turf/bbox/main.es.js
- /**
- * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.
- *
- * @name bbox
- * @param {GeoJSON} geojson any GeoJSON object
- * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order
- * @example
- * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);
- * var bbox = turf.bbox(line);
- * var bboxPolygon = turf.bboxPolygon(bbox);
- *
- * //addToMap
- * var addToMap = [line, bboxPolygon]
- */
- function(e){var t=[1/0,1/0,-1/0,-1/0];return n(e,(function(e){t[0]>e[0]&&(t[0]=e[0]),t[1]>e[1]&&(t[1]=e[1]),t[2]<e[0]&&(t[2]=e[0]),t[3]<e[1]&&(t[3]=e[1])})),t};
- /**
- * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
- *
- * @name feature
- * @param {Geometry} geometry input geometry
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature} a GeoJSON Feature
- * @example
- * var geometry = {
- * "type": "Point",
- * "coordinates": [110, 50]
- * };
- *
- * var feature = turf.feature(geometry);
- *
- * //=feature
- */
- function i(e,t,r){if(!u(
- // Optional Parameters
- r=r||{}))throw new Error("options is invalid");var n=r.bbox,a=r.id;
- // Validation
- if(void 0===e)throw new Error("geometry is required");if(t&&t.constructor!==Object)throw new Error("properties must be an Object");n&&l(n),a&&c(a);
- // Main
- var i={type:"Feature"};return a&&(i.id=a),n&&(i.bbox=n),i.properties=t||{},i.geometry=e,i}
- /**
- * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
- * For GeometryCollection type use `helpers.geometryCollection`
- *
- * @name geometry
- * @param {string} type Geometry Type
- * @param {Array<number>} coordinates Coordinates
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry
- * @returns {Geometry} a GeoJSON Geometry
- * @example
- * var type = 'Point';
- * var coordinates = [110, 50];
- *
- * var geometry = turf.geometry(type, coordinates);
- *
- * //=geometry
- */
- /**
- * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.
- *
- * @name polygon
- * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature<Polygon>} Polygon Feature
- * @example
- * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });
- *
- * //=polygon
- */
- function o(e,t,r){if(!e)throw new Error("coordinates is required");for(var n=0;n<e.length;n++){var a=e[n];if(a.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");for(var o=0;o<a[a.length-1].length;o++){
- // Check if first point of Polygon contains two numbers
- if(0===n&&0===o&&!s(a[0][0])||!s(a[0][1]))throw new Error("coordinates must contain numbers");if(a[a.length-1][o]!==a[0][o])throw new Error("First and last Position are not equivalent.")}}return i({type:"Polygon",coordinates:e},t,r)}
- /**
- * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.
- *
- * @name polygons
- * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the FeatureCollection
- * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection
- * @example
- * var polygons = turf.polygons([
- * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],
- * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],
- * ]);
- *
- * //=polygons
- */
- /**
- * isNumber
- *
- * @param {*} num Number to validate
- * @returns {boolean} true/false
- * @example
- * turf.isNumber(123)
- * //=true
- * turf.isNumber('foo')
- * //=false
- */
- function s(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}
- /**
- * isObject
- *
- * @param {*} input variable to validate
- * @returns {boolean} true/false
- * @example
- * turf.isObject({elevation: 10})
- * //=true
- * turf.isObject('foo')
- * //=false
- */function u(e){return!!e&&e.constructor===Object}
- /**
- * Validate BBox
- *
- * @private
- * @param {Array<number>} bbox BBox to validate
- * @returns {void}
- * @throws Error if BBox is not valid
- * @example
- * validateBBox([-180, -40, 110, 50])
- * //=OK
- * validateBBox([-180, -40])
- * //=Error
- * validateBBox('Foo')
- * //=Error
- * validateBBox(5)
- * //=Error
- * validateBBox(null)
- * //=Error
- * validateBBox(undefined)
- * //=Error
- */function l(e){if(!e)throw new Error("bbox is required");if(!Array.isArray(e))throw new Error("bbox must be an Array");if(4!==e.length&&6!==e.length)throw new Error("bbox must be an Array of 4 or 6 numbers");e.forEach((function(e){if(!s(e))throw new Error("bbox must only contain numbers")}))}
- /**
- * Validate Id
- *
- * @private
- * @param {string|number} id Id to validate
- * @returns {void}
- * @throws Error if Id is not valid
- * @example
- * validateId([-180, -40, 110, 50])
- * //=Error
- * validateId([-180, -40])
- * //=Error
- * validateId('Foo')
- * //=OK
- * validateId(5)
- * //=OK
- * validateId(null)
- * //=Error
- * validateId(undefined)
- * //=Error
- */function c(e){if(!e)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof e))throw new Error("id must be a number or a string")}
- // Deprecated methods
- /* harmony default export */var d=// CONCATENATED MODULE: ./node_modules/@turf/bbox-polygon/main.es.js
- /**
- * Takes a bbox and returns an equivalent {@link Polygon|polygon}.
- *
- * @name bboxPolygon
- * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order
- * @returns {Feature<Polygon>} a Polygon representation of the bounding box
- * @example
- * var bbox = [0, 0, 10, 10];
- *
- * var poly = turf.bboxPolygon(bbox);
- *
- * //addToMap
- * var addToMap = [poly]
- */
- function(e){l(e);
- // Convert BBox positions to Numbers
- // No performance loss for including Number()
- // https://github.com/Turfjs/turf/issues/1119
- var t=Number(e[0]),r=Number(e[1]),n=Number(e[2]),a=Number(e[3]);if(6===e.length)throw new Error("@turf/bbox-polygon does not support BBox with 6 positions");var i=[t,r];return o([[i,[n,r],[n,a],[t,a],i]])};
- /* harmony default export */var f=// CONCATENATED MODULE: ./node_modules/@turf/envelope/main.es.js
- /**
- * Takes any number of features and returns a rectangular {@link Polygon} that encompasses all vertices.
- *
- * @name envelope
- * @param {GeoJSON} geojson input features
- * @returns {Feature<Polygon>} a rectangular Polygon feature that encompasses all vertices
- * @example
- * var features = turf.featureCollection([
- * turf.point([-75.343, 39.984], {"name": "Location A"}),
- * turf.point([-75.833, 39.284], {"name": "Location B"}),
- * turf.point([-75.534, 39.123], {"name": "Location C"})
- * ]);
- *
- * var enveloped = turf.envelope(features);
- *
- * //addToMap
- * var addToMap = [features, enveloped];
- */
- function(e){return d(a(e))};
- /***/},
- /***/4102:
- /***/function(e,t){"use strict";
- /**
- * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
- *
- * @name feature
- * @param {Geometry} geometry input geometry
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature} a GeoJSON Feature
- * @example
- * var geometry = {
- * "type": "Point",
- * "coordinates": [110, 50]
- * };
- *
- * var feature = turf.feature(geometry);
- *
- * //=feature
- */
- function r(e,t,r){void 0===r&&(r={});var n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}
- /**
- * Creates a {@link Point} {@link Feature} from a Position.
- *
- * @name point
- * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature<Point>} a Point feature
- * @example
- * var point = turf.point([-75.343, 39.984]);
- *
- * //=point
- */
- function n(e,t,n){if(void 0===n&&(n={}),!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!h(e[0])||!h(e[1]))throw new Error("coordinates must contain numbers");return r({type:"Point",coordinates:e},t,n)}
- /**
- * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.
- *
- * @name polygon
- * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature<Polygon>} Polygon Feature
- * @example
- * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });
- *
- * //=polygon
- */
- function a(e,t,n){void 0===n&&(n={});for(var a=0,i=e;a<i.length;a++){var o=i[a];if(o.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");for(var s=0;s<o[o.length-1].length;s++)
- // Check if first point of Polygon contains two numbers
- if(o[o.length-1][s]!==o[0][s])throw new Error("First and last Position are not equivalent.")}return r({type:"Polygon",coordinates:e},t,n)}
- /**
- * Creates a {@link LineString} {@link Feature} from an Array of Positions.
- *
- * @name lineString
- * @param {Array<Array<number>>} coordinates an array of Positions
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature<LineString>} LineString Feature
- * @example
- * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});
- * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});
- *
- * //=linestring1
- * //=linestring2
- */
- function i(e,t,n){if(void 0===n&&(n={}),e.length<2)throw new Error("coordinates must be an array of two or more positions");return r({type:"LineString",coordinates:e},t,n)}
- /**
- * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.
- *
- * @name featureCollection
- * @param {Feature[]} features input features
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {FeatureCollection} FeatureCollection of Features
- * @example
- * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});
- * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});
- * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});
- *
- * var collection = turf.featureCollection([
- * locationA,
- * locationB,
- * locationC
- * ]);
- *
- * //=collection
- */
- function o(e,t){void 0===t&&(t={});var r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}
- /**
- * Creates a {@link Feature<MultiLineString>} based on a
- * coordinate array. Properties can be added optionally.
- *
- * @name multiLineString
- * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature<MultiLineString>} a MultiLineString feature
- * @throws {Error} if no coordinates are passed
- * @example
- * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);
- *
- * //=multiLine
- */
- function s(e,t,n){return void 0===n&&(n={}),r({type:"MultiLineString",coordinates:e},t,n)}
- /**
- * Creates a {@link Feature<MultiPoint>} based on a
- * coordinate array. Properties can be added optionally.
- *
- * @name multiPoint
- * @param {Array<Array<number>>} coordinates an array of Positions
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature<MultiPoint>} a MultiPoint feature
- * @throws {Error} if no coordinates are passed
- * @example
- * var multiPt = turf.multiPoint([[0,0],[10,10]]);
- *
- * //=multiPt
- */
- function u(e,t,n){return void 0===n&&(n={}),r({type:"MultiPoint",coordinates:e},t,n)}
- /**
- * Creates a {@link Feature<MultiPolygon>} based on a
- * coordinate array. Properties can be added optionally.
- *
- * @name multiPolygon
- * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature<MultiPolygon>} a multipolygon feature
- * @throws {Error} if no coordinates are passed
- * @example
- * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);
- *
- * //=multiPoly
- *
- */
- function l(e,t,n){return void 0===n&&(n={}),r({type:"MultiPolygon",coordinates:e},t,n)}
- /**
- * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
- *
- * @name radiansToLength
- * @param {number} radians in radians across the sphere
- * @param {string} [units="kilometers"] can be degrees, radians, miles, inches, yards, metres,
- * meters, kilometres, kilometers.
- * @returns {number} distance
- */
- function c(e,r){void 0===r&&(r="kilometers");var n=t.factors[r];if(!n)throw new Error(r+" units is invalid");return e*n}
- /**
- * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
- *
- * @name lengthToRadians
- * @param {number} distance in real units
- * @param {string} [units="kilometers"] can be degrees, radians, miles, inches, yards, metres,
- * meters, kilometres, kilometers.
- * @returns {number} radians
- */
- function d(e,r){void 0===r&&(r="kilometers");var n=t.factors[r];if(!n)throw new Error(r+" units is invalid");return e/n}
- /**
- * Converts an angle in radians to degrees
- *
- * @name radiansToDegrees
- * @param {number} radians angle in radians
- * @returns {number} degrees between 0 and 360 degrees
- */
- function f(e){return 180*(e%(2*Math.PI))/Math.PI}
- /**
- * isNumber
- *
- * @param {*} num Number to validate
- * @returns {boolean} true/false
- * @example
- * turf.isNumber(123)
- * //=true
- * turf.isNumber('foo')
- * //=false
- */
- function h(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}Object.defineProperty(t,"__esModule",{value:!0}),
- /**
- * @module helpers
- */
- /**
- * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.
- *
- * @memberof helpers
- * @type {number}
- */
- t.earthRadius=6371008.8,
- /**
- * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.
- *
- * @memberof helpers
- * @type {Object}
- */
- t.factors={centimeters:100*t.earthRadius,centimetres:100*t.earthRadius,degrees:t.earthRadius/111325,feet:3.28084*t.earthRadius,inches:39.37*t.earthRadius,kilometers:t.earthRadius/1e3,kilometres:t.earthRadius/1e3,meters:t.earthRadius,metres:t.earthRadius,miles:t.earthRadius/1609.344,millimeters:1e3*t.earthRadius,millimetres:1e3*t.earthRadius,nauticalmiles:t.earthRadius/1852,radians:1,yards:1.0936*t.earthRadius},
- /**
- * Units of measurement factors based on 1 meter.
- *
- * @memberof helpers
- * @type {Object}
- */
- t.unitsFactors={centimeters:100,centimetres:100,degrees:1/111325,feet:3.28084,inches:39.37,kilometers:.001,kilometres:.001,meters:1,metres:1,miles:1/1609.344,millimeters:1e3,millimetres:1e3,nauticalmiles:1/1852,radians:1/t.earthRadius,yards:1.0936133},
- /**
- * Area of measurement factors based on 1 square meter.
- *
- * @memberof helpers
- * @type {Object}
- */
- t.areaFactors={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,millimeters:1e6,millimetres:1e6,yards:1.195990046},t.feature=r,t.geometry=
- /**
- * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
- * For GeometryCollection type use `helpers.geometryCollection`
- *
- * @name geometry
- * @param {string} type Geometry Type
- * @param {Array<any>} coordinates Coordinates
- * @param {Object} [options={}] Optional Parameters
- * @returns {Geometry} a GeoJSON Geometry
- * @example
- * var type = "Point";
- * var coordinates = [110, 50];
- * var geometry = turf.geometry(type, coordinates);
- * // => geometry
- */
- function(e,t,r){switch(void 0===r&&(r={}),e){case"Point":return n(t).geometry;case"LineString":return i(t).geometry;case"Polygon":return a(t).geometry;case"MultiPoint":return u(t).geometry;case"MultiLineString":return s(t).geometry;case"MultiPolygon":return l(t).geometry;default:throw new Error(e+" is invalid")}},t.point=n,t.points=
- /**
- * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.
- *
- * @name points
- * @param {Array<Array<number>>} coordinates an array of Points
- * @param {Object} [properties={}] Translate these properties to each Feature
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]
- * associated with the FeatureCollection
- * @param {string|number} [options.id] Identifier associated with the FeatureCollection
- * @returns {FeatureCollection<Point>} Point Feature
- * @example
- * var points = turf.points([
- * [-75, 39],
- * [-80, 45],
- * [-78, 50]
- * ]);
- *
- * //=points
- */
- function(e,t,r){return void 0===r&&(r={}),o(e.map((function(e){return n(e,t)})),r)},t.polygon=a,t.polygons=
- /**
- * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.
- *
- * @name polygons
- * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the FeatureCollection
- * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection
- * @example
- * var polygons = turf.polygons([
- * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],
- * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],
- * ]);
- *
- * //=polygons
- */
- function(e,t,r){return void 0===r&&(r={}),o(e.map((function(e){return a(e,t)})),r)},t.lineString=i,t.lineStrings=
- /**
- * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.
- *
- * @name lineStrings
- * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]
- * associated with the FeatureCollection
- * @param {string|number} [options.id] Identifier associated with the FeatureCollection
- * @returns {FeatureCollection<LineString>} LineString FeatureCollection
- * @example
- * var linestrings = turf.lineStrings([
- * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],
- * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]
- * ]);
- *
- * //=linestrings
- */
- function(e,t,r){return void 0===r&&(r={}),o(e.map((function(e){return i(e,t)})),r)},t.featureCollection=o,t.multiLineString=s,t.multiPoint=u,t.multiPolygon=l,t.geometryCollection=
- /**
- * Creates a {@link Feature<GeometryCollection>} based on a
- * coordinate array. Properties can be added optionally.
- *
- * @name geometryCollection
- * @param {Array<Geometry>} geometries an array of GeoJSON Geometries
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature
- * @example
- * var pt = turf.geometry("Point", [100, 0]);
- * var line = turf.geometry("LineString", [[101, 0], [102, 1]]);
- * var collection = turf.geometryCollection([pt, line]);
- *
- * // => collection
- */
- function(e,t,n){return void 0===n&&(n={}),r({type:"GeometryCollection",geometries:e},t,n)},t.round=
- /**
- * Round number to precision
- *
- * @param {number} num Number
- * @param {number} [precision=0] Precision
- * @returns {number} rounded number
- * @example
- * turf.round(120.4321)
- * //=120
- *
- * turf.round(120.4321, 2)
- * //=120.43
- */
- function(e,t){if(void 0===t&&(t=0),t&&!(t>=0))throw new Error("precision must be a positive number");var r=Math.pow(10,t||0);return Math.round(e*r)/r},t.radiansToLength=c,t.lengthToRadians=d,t.lengthToDegrees=
- /**
- * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet
- *
- * @name lengthToDegrees
- * @param {number} distance in real units
- * @param {string} [units="kilometers"] can be degrees, radians, miles, inches, yards, metres,
- * meters, kilometres, kilometers.
- * @returns {number} degrees
- */
- function(e,t){return f(d(e,t))},t.bearingToAzimuth=
- /**
- * Converts any bearing angle from the north line direction (positive clockwise)
- * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line
- *
- * @name bearingToAzimuth
- * @param {number} bearing angle, between -180 and +180 degrees
- * @returns {number} angle between 0 and 360 degrees
- */
- function(e){var t=e%360;return t<0&&(t+=360),t},t.radiansToDegrees=f,t.degreesToRadians=
- /**
- * Converts an angle in degrees to radians
- *
- * @name degreesToRadians
- * @param {number} degrees angle between 0 and 360 degrees
- * @returns {number} angle in radians
- */
- function(e){return e%360*Math.PI/180},t.convertLength=
- /**
- * Converts a length to the requested unit.
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
- *
- * @param {number} length to be converted
- * @param {Units} [originalUnit="kilometers"] of the length
- * @param {Units} [finalUnit="kilometers"] returned unit
- * @returns {number} the converted length
- */
- function(e,t,r){if(void 0===t&&(t="kilometers"),void 0===r&&(r="kilometers"),!(e>=0))throw new Error("length must be a positive number");return c(d(e,t),r)},t.convertArea=
- /**
- * Converts a area to the requested unit.
- * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares
- * @param {number} area to be converted
- * @param {Units} [originalUnit="meters"] of the distance
- * @param {Units} [finalUnit="kilometers"] returned unit
- * @returns {number} the converted area
- */
- function(e,r,n){if(void 0===r&&(r="meters"),void 0===n&&(n="kilometers"),!(e>=0))throw new Error("area must be a positive number");var a=t.areaFactors[r];if(!a)throw new Error("invalid original units");var i=t.areaFactors[n];if(!i)throw new Error("invalid final units");return e/a*i},t.isNumber=h,t.isObject=
- /**
- * isObject
- *
- * @param {*} input variable to validate
- * @returns {boolean} true/false
- * @example
- * turf.isObject({elevation: 10})
- * //=true
- * turf.isObject('foo')
- * //=false
- */
- function(e){return!!e&&e.constructor===Object},t.validateBBox=
- /**
- * Validate BBox
- *
- * @private
- * @param {Array<number>} bbox BBox to validate
- * @returns {void}
- * @throws Error if BBox is not valid
- * @example
- * validateBBox([-180, -40, 110, 50])
- * //=OK
- * validateBBox([-180, -40])
- * //=Error
- * validateBBox('Foo')
- * //=Error
- * validateBBox(5)
- * //=Error
- * validateBBox(null)
- * //=Error
- * validateBBox(undefined)
- * //=Error
- */
- function(e){if(!e)throw new Error("bbox is required");if(!Array.isArray(e))throw new Error("bbox must be an Array");if(4!==e.length&&6!==e.length)throw new Error("bbox must be an Array of 4 or 6 numbers");e.forEach((function(e){if(!h(e))throw new Error("bbox must only contain numbers")}))},t.validateId=
- /**
- * Validate Id
- *
- * @private
- * @param {string|number} id Id to validate
- * @returns {void}
- * @throws Error if Id is not valid
- * @example
- * validateId([-180, -40, 110, 50])
- * //=Error
- * validateId([-180, -40])
- * //=Error
- * validateId('Foo')
- * //=OK
- * validateId(5)
- * //=OK
- * validateId(null)
- * //=Error
- * validateId(undefined)
- * //=Error
- */
- function(e){if(!e)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof e))throw new Error("id must be a number or a string")}},
- /***/1540:
- /***/function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(4102);
- /**
- * Callback for coordEach
- *
- * @callback coordEachCallback
- * @param {Array<number>} currentCoord The current coordinate being processed.
- * @param {number} coordIndex The current index of the coordinate being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- * @param {number} geometryIndex The current index of the Geometry being processed.
- */
- /**
- * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()
- *
- * @name coordEach
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)
- * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
- * @returns {void}
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {"foo": "bar"}),
- * turf.point([36, 53], {"hello": "world"})
- * ]);
- *
- * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- * //=currentCoord
- * //=coordIndex
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * });
- */function a(e,t,r){
- // Handles null Geometry -- Skips this GeoJSON
- if(null!==e)
- // This logic may look a little weird. The reason why it is that way
- // is because it's trying to be fast. GeoJSON supports multiple kinds
- // of objects at its root: FeatureCollection, Features, Geometries.
- // This function has the responsibility of handling all of them, and that
- // means that some of the `for` loops you see below actually just don't apply
- // to certain inputs. For instance, if you give this just a
- // Point geometry, then both loops are short-circuited and all we do
- // is gradually rename the input until it's called 'geometry'.
- // This also aims to allocate as few resources as possible: just a
- // few numbers and booleans, rather than any temporary arrays as would
- // be required with the normalization approach.
- for(var n,i,o,s,u,l,c,d,f=0,h=0,p=e.type,y="FeatureCollection"===p,m="Feature"===p,v=y?e.features.length:1,g=0;g<v;g++){u=(d=!!(c=y?e.features[g].geometry:m?e.geometry:e)&&"GeometryCollection"===c.type)?c.geometries.length:1;for(var b=0;b<u;b++){var w=0,S=0;
- // Handles null Geometry -- Skips this geometry
- if(null!==(s=d?c.geometries[b]:c)){l=s.coordinates;var L=s.type;switch(f=!r||"Polygon"!==L&&"MultiPolygon"!==L?0:1,L){case null:break;case"Point":if(!1===t(l,h,g,w,S))return!1;h++,w++;break;case"LineString":case"MultiPoint":for(n=0;n<l.length;n++){if(!1===t(l[n],h,g,w,S))return!1;h++,"MultiPoint"===L&&w++}"LineString"===L&&w++;break;case"Polygon":case"MultiLineString":for(n=0;n<l.length;n++){for(i=0;i<l[n].length-f;i++){if(!1===t(l[n][i],h,g,w,S))return!1;h++}"MultiLineString"===L&&w++,"Polygon"===L&&S++}"Polygon"===L&&w++;break;case"MultiPolygon":for(n=0;n<l.length;n++){for(S=0,i=0;i<l[n].length;i++){for(o=0;o<l[n][i].length-f;o++){if(!1===t(l[n][i][o],h,g,w,S))return!1;h++}S++}w++}break;case"GeometryCollection":for(n=0;n<s.geometries.length;n++)if(!1===a(s.geometries[n],t,r))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}
- /**
- * Callback for coordReduce
- *
- * The first time the callback function is called, the values provided as arguments depend
- * on whether the reduce method has an initialValue argument.
- *
- * If an initialValue is provided to the reduce method:
- * - The previousValue argument is initialValue.
- * - The currentValue argument is the value of the first element present in the array.
- *
- * If an initialValue is not provided:
- * - The previousValue argument is the value of the first element present in the array.
- * - The currentValue argument is the value of the second element present in the array.
- *
- * @callback coordReduceCallback
- * @param {*} previousValue The accumulated value previously returned in the last invocation
- * of the callback, or initialValue, if supplied.
- * @param {Array<number>} currentCoord The current coordinate being processed.
- * @param {number} coordIndex The current index of the coordinate being processed.
- * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- * @param {number} geometryIndex The current index of the Geometry being processed.
- */
- /**
- * Reduce coordinates in any GeoJSON object, similar to Array.reduce()
- *
- * @name coordReduce
- * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object
- * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)
- * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
- * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
- * @returns {*} The value that results from the reduction.
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {"foo": "bar"}),
- * turf.point([36, 53], {"hello": "world"})
- * ]);
- *
- * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- * //=previousValue
- * //=currentCoord
- * //=coordIndex
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * return currentCoord;
- * });
- */
- /**
- * Callback for propEach
- *
- * @callback propEachCallback
- * @param {Object} currentProperties The current Properties being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- */
- /**
- * Iterate over properties in any GeoJSON object, similar to Array.forEach()
- *
- * @name propEach
- * @param {FeatureCollection|Feature} geojson any GeoJSON object
- * @param {Function} callback a method that takes (currentProperties, featureIndex)
- * @returns {void}
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {foo: 'bar'}),
- * turf.point([36, 53], {hello: 'world'})
- * ]);
- *
- * turf.propEach(features, function (currentProperties, featureIndex) {
- * //=currentProperties
- * //=featureIndex
- * });
- */
- function i(e,t){var r;switch(e.type){case"FeatureCollection":for(r=0;r<e.features.length&&!1!==t(e.features[r].properties,r);r++);break;case"Feature":t(e.properties,0)}}
- /**
- * Callback for propReduce
- *
- * The first time the callback function is called, the values provided as arguments depend
- * on whether the reduce method has an initialValue argument.
- *
- * If an initialValue is provided to the reduce method:
- * - The previousValue argument is initialValue.
- * - The currentValue argument is the value of the first element present in the array.
- *
- * If an initialValue is not provided:
- * - The previousValue argument is the value of the first element present in the array.
- * - The currentValue argument is the value of the second element present in the array.
- *
- * @callback propReduceCallback
- * @param {*} previousValue The accumulated value previously returned in the last invocation
- * of the callback, or initialValue, if supplied.
- * @param {*} currentProperties The current Properties being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- */
- /**
- * Reduce properties in any GeoJSON object into a single value,
- * similar to how Array.reduce works. However, in this case we lazily run
- * the reduction, so an array of all properties is unnecessary.
- *
- * @name propReduce
- * @param {FeatureCollection|Feature} geojson any GeoJSON object
- * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)
- * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
- * @returns {*} The value that results from the reduction.
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {foo: 'bar'}),
- * turf.point([36, 53], {hello: 'world'})
- * ]);
- *
- * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {
- * //=previousValue
- * //=currentProperties
- * //=featureIndex
- * return currentProperties
- * });
- */
- /**
- * Callback for featureEach
- *
- * @callback featureEachCallback
- * @param {Feature<any>} currentFeature The current Feature being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- */
- /**
- * Iterate over features in any GeoJSON object, similar to
- * Array.forEach.
- *
- * @name featureEach
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (currentFeature, featureIndex)
- * @returns {void}
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {foo: 'bar'}),
- * turf.point([36, 53], {hello: 'world'})
- * ]);
- *
- * turf.featureEach(features, function (currentFeature, featureIndex) {
- * //=currentFeature
- * //=featureIndex
- * });
- */
- function o(e,t){if("Feature"===e.type)t(e,0);else if("FeatureCollection"===e.type)for(var r=0;r<e.features.length&&!1!==t(e.features[r],r);r++);}
- /**
- * Callback for featureReduce
- *
- * The first time the callback function is called, the values provided as arguments depend
- * on whether the reduce method has an initialValue argument.
- *
- * If an initialValue is provided to the reduce method:
- * - The previousValue argument is initialValue.
- * - The currentValue argument is the value of the first element present in the array.
- *
- * If an initialValue is not provided:
- * - The previousValue argument is the value of the first element present in the array.
- * - The currentValue argument is the value of the second element present in the array.
- *
- * @callback featureReduceCallback
- * @param {*} previousValue The accumulated value previously returned in the last invocation
- * of the callback, or initialValue, if supplied.
- * @param {Feature} currentFeature The current Feature being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- */
- /**
- * Reduce features in any GeoJSON object, similar to Array.reduce().
- *
- * @name featureReduce
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)
- * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
- * @returns {*} The value that results from the reduction.
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {"foo": "bar"}),
- * turf.point([36, 53], {"hello": "world"})
- * ]);
- *
- * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {
- * //=previousValue
- * //=currentFeature
- * //=featureIndex
- * return currentFeature
- * });
- */
- /**
- * Callback for geomEach
- *
- * @callback geomEachCallback
- * @param {Geometry} currentGeometry The current Geometry being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {Object} featureProperties The current Feature Properties being processed.
- * @param {Array<number>} featureBBox The current Feature BBox being processed.
- * @param {number|string} featureId The current Feature Id being processed.
- */
- /**
- * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()
- *
- * @name geomEach
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)
- * @returns {void}
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {foo: 'bar'}),
- * turf.point([36, 53], {hello: 'world'})
- * ]);
- *
- * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
- * //=currentGeometry
- * //=featureIndex
- * //=featureProperties
- * //=featureBBox
- * //=featureId
- * });
- */
- function s(e,t){var r,n,a,i,o,s,u,l,c,d,f=0,h="FeatureCollection"===e.type,p="Feature"===e.type,y=h?e.features.length:1;
- // This logic may look a little weird. The reason why it is that way
- // is because it's trying to be fast. GeoJSON supports multiple kinds
- // of objects at its root: FeatureCollection, Features, Geometries.
- // This function has the responsibility of handling all of them, and that
- // means that some of the `for` loops you see below actually just don't apply
- // to certain inputs. For instance, if you give this just a
- // Point geometry, then both loops are short-circuited and all we do
- // is gradually rename the input until it's called 'geometry'.
- // This also aims to allocate as few resources as possible: just a
- // few numbers and booleans, rather than any temporary arrays as would
- // be required with the normalization approach.
- for(r=0;r<y;r++){for(s=h?e.features[r].geometry:p?e.geometry:e,l=h?e.features[r].properties:p?e.properties:{},c=h?e.features[r].bbox:p?e.bbox:void 0,d=h?e.features[r].id:p?e.id:void 0,o=(u=!!s&&"GeometryCollection"===s.type)?s.geometries.length:1,a=0;a<o;a++)
- // Handle null Geometry
- if(null!==(i=u?s.geometries[a]:s))switch(i.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(i,f,l,c,d))return!1;break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===t(i.geometries[n],f,l,c,d))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,f,l,c,d))return!1;
- // Only increase `featureIndex` per each feature
- f++}}
- /**
- * Callback for geomReduce
- *
- * The first time the callback function is called, the values provided as arguments depend
- * on whether the reduce method has an initialValue argument.
- *
- * If an initialValue is provided to the reduce method:
- * - The previousValue argument is initialValue.
- * - The currentValue argument is the value of the first element present in the array.
- *
- * If an initialValue is not provided:
- * - The previousValue argument is the value of the first element present in the array.
- * - The currentValue argument is the value of the second element present in the array.
- *
- * @callback geomReduceCallback
- * @param {*} previousValue The accumulated value previously returned in the last invocation
- * of the callback, or initialValue, if supplied.
- * @param {Geometry} currentGeometry The current Geometry being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {Object} featureProperties The current Feature Properties being processed.
- * @param {Array<number>} featureBBox The current Feature BBox being processed.
- * @param {number|string} featureId The current Feature Id being processed.
- */
- /**
- * Reduce geometry in any GeoJSON object, similar to Array.reduce().
- *
- * @name geomReduce
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)
- * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
- * @returns {*} The value that results from the reduction.
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {foo: 'bar'}),
- * turf.point([36, 53], {hello: 'world'})
- * ]);
- *
- * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
- * //=previousValue
- * //=currentGeometry
- * //=featureIndex
- * //=featureProperties
- * //=featureBBox
- * //=featureId
- * return currentGeometry
- * });
- */
- /**
- * Callback for flattenEach
- *
- * @callback flattenEachCallback
- * @param {Feature} currentFeature The current flattened feature being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- */
- /**
- * Iterate over flattened features in any GeoJSON object, similar to
- * Array.forEach.
- *
- * @name flattenEach
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {foo: 'bar'}),
- * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})
- * ]);
- *
- * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {
- * //=currentFeature
- * //=featureIndex
- * //=multiFeatureIndex
- * });
- */
- function u(e,t){s(e,(function(e,r,a,i,o){
- // Callback for single geometry
- var s,u=null===e?null:e.type;switch(u){case null:case"Point":case"LineString":case"Polygon":return!1!==t(n.feature(e,a,{bbox:i,id:o}),r,0)&&void 0}
- // Callback for multi-geometry
- switch(u){case"MultiPoint":s="Point";break;case"MultiLineString":s="LineString";break;case"MultiPolygon":s="Polygon"}for(var l=0;l<e.coordinates.length;l++){var c={type:s,coordinates:e.coordinates[l]};if(!1===t(n.feature(c,a),r,l))return!1}}))}
- /**
- * Callback for flattenReduce
- *
- * The first time the callback function is called, the values provided as arguments depend
- * on whether the reduce method has an initialValue argument.
- *
- * If an initialValue is provided to the reduce method:
- * - The previousValue argument is initialValue.
- * - The currentValue argument is the value of the first element present in the array.
- *
- * If an initialValue is not provided:
- * - The previousValue argument is the value of the first element present in the array.
- * - The currentValue argument is the value of the second element present in the array.
- *
- * @callback flattenReduceCallback
- * @param {*} previousValue The accumulated value previously returned in the last invocation
- * of the callback, or initialValue, if supplied.
- * @param {Feature} currentFeature The current Feature being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- */
- /**
- * Reduce flattened features in any GeoJSON object, similar to Array.reduce().
- *
- * @name flattenReduce
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)
- * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
- * @returns {*} The value that results from the reduction.
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {foo: 'bar'}),
- * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})
- * ]);
- *
- * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {
- * //=previousValue
- * //=currentFeature
- * //=featureIndex
- * //=multiFeatureIndex
- * return currentFeature
- * });
- */
- /**
- * Callback for segmentEach
- *
- * @callback segmentEachCallback
- * @param {Feature<LineString>} currentSegment The current Segment being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- * @param {number} geometryIndex The current index of the Geometry being processed.
- * @param {number} segmentIndex The current index of the Segment being processed.
- * @returns {void}
- */
- /**
- * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()
- * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
- *
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON
- * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)
- * @returns {void}
- * @example
- * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);
- *
- * // Iterate over GeoJSON by 2-vertex segments
- * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
- * //=currentSegment
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * //=segmentIndex
- * });
- *
- * // Calculate the total number of segments
- * var total = 0;
- * turf.segmentEach(polygon, function () {
- * total++;
- * });
- */
- function l(e,t){u(e,(function(e,r,i){var o=0;
- // Exclude null Geometries
- if(e.geometry){
- // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
- var s=e.geometry.type;if("Point"!==s&&"MultiPoint"!==s){
- // Generate 2-vertex line segments
- var u,l=0,c=0,d=0;return!1!==a(e,(function(a,s,f,h,p){
- // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`
- if(void 0===u||r>l||h>c||p>d)return u=a,l=r,c=h,d=p,void(o=0);var y=n.lineString([u,a],e.properties);if(!1===t(y,r,i,p,o))return!1;o++,u=a}))&&void 0}}}))}
- /**
- * Callback for segmentReduce
- *
- * The first time the callback function is called, the values provided as arguments depend
- * on whether the reduce method has an initialValue argument.
- *
- * If an initialValue is provided to the reduce method:
- * - The previousValue argument is initialValue.
- * - The currentValue argument is the value of the first element present in the array.
- *
- * If an initialValue is not provided:
- * - The previousValue argument is the value of the first element present in the array.
- * - The currentValue argument is the value of the second element present in the array.
- *
- * @callback segmentReduceCallback
- * @param {*} previousValue The accumulated value previously returned in the last invocation
- * of the callback, or initialValue, if supplied.
- * @param {Feature<LineString>} currentSegment The current Segment being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- * @param {number} geometryIndex The current index of the Geometry being processed.
- * @param {number} segmentIndex The current index of the Segment being processed.
- */
- /**
- * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()
- * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
- *
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON
- * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)
- * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
- * @returns {void}
- * @example
- * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);
- *
- * // Iterate over GeoJSON by 2-vertex segments
- * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
- * //= previousSegment
- * //= currentSegment
- * //= featureIndex
- * //= multiFeatureIndex
- * //= geometryIndex
- * //= segmentIndex
- * return currentSegment
- * });
- *
- * // Calculate the total number of segments
- * var initialValue = 0
- * var total = turf.segmentReduce(polygon, function (previousValue) {
- * previousValue++;
- * return previousValue;
- * }, initialValue);
- */
- /**
- * Callback for lineEach
- *
- * @callback lineEachCallback
- * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed
- * @param {number} featureIndex The current index of the Feature being processed
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed
- * @param {number} geometryIndex The current index of the Geometry being processed
- */
- /**
- * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,
- * similar to Array.forEach.
- *
- * @name lineEach
- * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object
- * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)
- * @example
- * var multiLine = turf.multiLineString([
- * [[26, 37], [35, 45]],
- * [[36, 53], [38, 50], [41, 55]]
- * ]);
- *
- * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
- * //=currentLine
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * });
- */
- function c(e,t){
- // validation
- if(!e)throw new Error("geojson is required");u(e,(function(e,r,a){if(null!==e.geometry){var i=e.geometry.type,o=e.geometry.coordinates;switch(i){case"LineString":if(!1===t(e,r,a,0,0))return!1;break;case"Polygon":for(var s=0;s<o.length;s++)if(!1===t(n.lineString(o[s],e.properties),r,a,s))return!1}}}))}
- /**
- * Callback for lineReduce
- *
- * The first time the callback function is called, the values provided as arguments depend
- * on whether the reduce method has an initialValue argument.
- *
- * If an initialValue is provided to the reduce method:
- * - The previousValue argument is initialValue.
- * - The currentValue argument is the value of the first element present in the array.
- *
- * If an initialValue is not provided:
- * - The previousValue argument is the value of the first element present in the array.
- * - The currentValue argument is the value of the second element present in the array.
- *
- * @callback lineReduceCallback
- * @param {*} previousValue The accumulated value previously returned in the last invocation
- * of the callback, or initialValue, if supplied.
- * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.
- * @param {number} featureIndex The current index of the Feature being processed
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed
- * @param {number} geometryIndex The current index of the Geometry being processed
- */
- /**
- * Reduce features in any GeoJSON object, similar to Array.reduce().
- *
- * @name lineReduce
- * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object
- * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)
- * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
- * @returns {*} The value that results from the reduction.
- * @example
- * var multiPoly = turf.multiPolygon([
- * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),
- * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])
- * ]);
- *
- * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
- * //=previousValue
- * //=currentLine
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * return currentLine
- * });
- */t.coordAll=
- /**
- * Get all coordinates from any GeoJSON object.
- *
- * @name coordAll
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @returns {Array<Array<number>>} coordinate position array
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {foo: 'bar'}),
- * turf.point([36, 53], {hello: 'world'})
- * ]);
- *
- * var coords = turf.coordAll(features);
- * //= [[26, 37], [36, 53]]
- */
- function(e){var t=[];return a(e,(function(e){t.push(e)})),t},t.coordEach=a,t.coordReduce=function(e,t,r,n){var i=r;return a(e,(function(e,n,a,o,s){i=0===n&&void 0===r?e:t(i,e,n,a,o,s)}),n),i},t.featureEach=o,t.featureReduce=function(e,t,r){var n=r;return o(e,(function(e,a){n=0===a&&void 0===r?e:t(n,e,a)})),n},t.findPoint=
- /**
- * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.
- *
- * Negative indexes are permitted.
- *
- * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry
- * @param {Object} [options={}] Optional parameters
- * @param {number} [options.featureIndex=0] Feature Index
- * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index
- * @param {number} [options.geometryIndex=0] Geometry Index
- * @param {number} [options.coordIndex=0] Coord Index
- * @param {Object} [options.properties={}] Translate Properties to output Point
- * @param {BBox} [options.bbox={}] Translate BBox to output Point
- * @param {number|string} [options.id={}] Translate Id to output Point
- * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point
- * @example
- * var multiLine = turf.multiLineString([
- * [[10, 10], [50, 30], [30, 40]],
- * [[-10, -10], [-50, -30], [-30, -40]]
- * ]);
- *
- * // First Segment (defaults are 0)
- * turf.findPoint(multiLine);
- * // => Feature<Point<[10, 10]>>
- *
- * // First Segment of the 2nd Multi-Feature
- * turf.findPoint(multiLine, {multiFeatureIndex: 1});
- * // => Feature<Point<[-10, -10]>>
- *
- * // Last Segment of last Multi-Feature
- * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});
- * // => Feature<Point<[-30, -40]>>
- */
- function(e,t){if(
- // Optional Parameters
- t=t||{},!n.isObject(t))throw new Error("options is invalid");var r,a=t.featureIndex||0,i=t.multiFeatureIndex||0,o=t.geometryIndex||0,s=t.coordIndex||0,u=t.properties;switch(e.type){case"FeatureCollection":a<0&&(a=e.features.length+a),u=u||e.features[a].properties,r=e.features[a].geometry;break;case"Feature":u=u||e.properties,r=e.geometry;break;case"Point":case"MultiPoint":return null;case"LineString":case"Polygon":case"MultiLineString":case"MultiPolygon":r=e;break;default:throw new Error("geojson is invalid")}
- // Find Coord Index
- if(null===r)return null;var l=r.coordinates;switch(r.type){case"Point":return n.point(l,u,t);case"MultiPoint":return i<0&&(i=l.length+i),n.point(l[i],u,t);case"LineString":return s<0&&(s=l.length+s),n.point(l[s],u,t);case"Polygon":return o<0&&(o=l.length+o),s<0&&(s=l[o].length+s),n.point(l[o][s],u,t);case"MultiLineString":return i<0&&(i=l.length+i),s<0&&(s=l[i].length+s),n.point(l[i][s],u,t);case"MultiPolygon":return i<0&&(i=l.length+i),o<0&&(o=l[i].length+o),s<0&&(s=l[i][o].length-s),n.point(l[i][o][s],u,t)}throw new Error("geojson is invalid")},t.findSegment=
- /**
- * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.
- *
- * Negative indexes are permitted.
- * Point & MultiPoint will always return null.
- *
- * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry
- * @param {Object} [options={}] Optional parameters
- * @param {number} [options.featureIndex=0] Feature Index
- * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index
- * @param {number} [options.geometryIndex=0] Geometry Index
- * @param {number} [options.segmentIndex=0] Segment Index
- * @param {Object} [options.properties={}] Translate Properties to output LineString
- * @param {BBox} [options.bbox={}] Translate BBox to output LineString
- * @param {number|string} [options.id={}] Translate Id to output LineString
- * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString
- * @example
- * var multiLine = turf.multiLineString([
- * [[10, 10], [50, 30], [30, 40]],
- * [[-10, -10], [-50, -30], [-30, -40]]
- * ]);
- *
- * // First Segment (defaults are 0)
- * turf.findSegment(multiLine);
- * // => Feature<LineString<[[10, 10], [50, 30]]>>
- *
- * // First Segment of 2nd Multi Feature
- * turf.findSegment(multiLine, {multiFeatureIndex: 1});
- * // => Feature<LineString<[[-10, -10], [-50, -30]]>>
- *
- * // Last Segment of Last Multi Feature
- * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});
- * // => Feature<LineString<[[-50, -30], [-30, -40]]>>
- */
- function(e,t){if(
- // Optional Parameters
- t=t||{},!n.isObject(t))throw new Error("options is invalid");var r,a=t.featureIndex||0,i=t.multiFeatureIndex||0,o=t.geometryIndex||0,s=t.segmentIndex||0,u=t.properties;switch(e.type){case"FeatureCollection":a<0&&(a=e.features.length+a),u=u||e.features[a].properties,r=e.features[a].geometry;break;case"Feature":u=u||e.properties,r=e.geometry;break;case"Point":case"MultiPoint":return null;case"LineString":case"Polygon":case"MultiLineString":case"MultiPolygon":r=e;break;default:throw new Error("geojson is invalid")}
- // Find SegmentIndex
- if(null===r)return null;var l=r.coordinates;switch(r.type){case"Point":case"MultiPoint":return null;case"LineString":return s<0&&(s=l.length+s-1),n.lineString([l[s],l[s+1]],u,t);case"Polygon":return o<0&&(o=l.length+o),s<0&&(s=l[o].length+s-1),n.lineString([l[o][s],l[o][s+1]],u,t);case"MultiLineString":return i<0&&(i=l.length+i),s<0&&(s=l[i].length+s-1),n.lineString([l[i][s],l[i][s+1]],u,t);case"MultiPolygon":return i<0&&(i=l.length+i),o<0&&(o=l[i].length+o),s<0&&(s=l[i][o].length-s-1),n.lineString([l[i][o][s],l[i][o][s+1]],u,t)}throw new Error("geojson is invalid")},t.flattenEach=u,t.flattenReduce=function(e,t,r){var n=r;return u(e,(function(e,a,i){n=0===a&&0===i&&void 0===r?e:t(n,e,a,i)})),n},t.geomEach=s,t.geomReduce=function(e,t,r){var n=r;return s(e,(function(e,a,i,o,s){n=0===a&&void 0===r?e:t(n,e,a,i,o,s)})),n},t.lineEach=c,t.lineReduce=function(e,t,r){var n=r;return c(e,(function(e,a,i,o){n=0===a&&void 0===r?e:t(n,e,a,i,o)})),n},t.propEach=i,t.propReduce=function(e,t,r){var n=r;return i(e,(function(e,a){n=0===a&&void 0===r?e:t(n,e,a)})),n},t.segmentEach=l,t.segmentReduce=function(e,t,r){var n=r,a=!1;return l(e,(function(e,i,o,s,u){n=!1===a&&void 0===r?e:t(n,e,i,o,s,u),a=!0})),n}},
- /***/5748:
- /***/function(e,t,r){"use strict";
- // ESM COMPAT FLAG
- /**
- * Clone Feature
- *
- * @private
- * @param {Feature<any>} geojson GeoJSON Feature
- * @returns {Feature<any>} cloned Feature
- */
- function n(e){var t={type:"Feature"};
- // Preserve Foreign Members
- return Object.keys(e).forEach((function(r){switch(r){case"type":case"properties":case"geometry":return;default:t[r]=e[r]}})),
- // Add properties & geometry last
- t.properties=a(e.properties),t.geometry=i(e.geometry),t}
- /**
- * Clone Properties
- *
- * @private
- * @param {Object} properties GeoJSON Properties
- * @returns {Object} cloned Properties
- */function a(e){var t={};return e?(Object.keys(e).forEach((function(r){var n=e[r];"object"===typeof n?null===n?
- // handle null
- t[r]=null:n.length?
- // handle Array
- t[r]=n.map((function(e){return e})):
- // handle generic Object
- t[r]=a(n):t[r]=n})),t):t}
- /**
- * Clone Feature Collection
- *
- * @private
- * @param {FeatureCollection<any>} geojson GeoJSON Feature Collection
- * @returns {FeatureCollection<any>} cloned Feature Collection
- */
- /**
- * Clone Geometry
- *
- * @private
- * @param {Geometry<any>} geometry GeoJSON Geometry
- * @returns {Geometry<any>} cloned Geometry
- */
- function i(e){var t={type:e.type};return e.bbox&&(t.bbox=e.bbox),"GeometryCollection"===e.type?(t.geometries=e.geometries.map((function(e){return i(e)})),t):(t.coordinates=o(e.coordinates),t)}
- /**
- * Deep Slice coordinates
- *
- * @private
- * @param {Coordinates} coords Coordinates
- * @returns {Coordinates} all coordinates sliced
- */function o(e){return"object"!==typeof e[0]?e.slice():e.map((function(e){return o(e)}))}
- /* harmony default export */r.r(t),
- // EXPORTS
- r.d(t,{default:function(){/* binding */return ie}});var s=// CONCATENATED MODULE: ./node_modules/@turf/clone/main.es.js
- /**
- * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.
- * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.
- *
- * @name clone
- * @param {GeoJSON} geojson GeoJSON Object
- * @returns {GeoJSON} cloned GeoJSON Object
- * @example
- * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});
- *
- * var lineCloned = turf.clone(line);
- */
- function(e){if(!e)throw new Error("geojson is required");switch(e.type){case"Feature":return n(e);case"FeatureCollection":return function(e){var t={type:"FeatureCollection"};
- // Preserve Foreign Members
- return Object.keys(e).forEach((function(r){switch(r){case"type":case"features":return;default:t[r]=e[r]}})),
- // Add features
- t.features=e.features.map((function(e){return n(e)})),t}(e);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return i(e);default:throw new Error("unknown GeoJSON type")}};
- /**
- * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
- *
- * @name feature
- * @param {Geometry} geometry input geometry
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature} a GeoJSON Feature
- * @example
- * var geometry = {
- * "type": "Point",
- * "coordinates": [110, 50]
- * };
- *
- * var feature = turf.feature(geometry);
- *
- * //=feature
- */
- function u(e,t,r){if(!d(
- // Optional Parameters
- r=r||{}))throw new Error("options is invalid");var n=r.bbox,a=r.id;
- // Validation
- if(void 0===e)throw new Error("geometry is required");if(t&&t.constructor!==Object)throw new Error("properties must be an Object");n&&f(n),a&&h(a);
- // Main
- var i={type:"Feature"};return a&&(i.id=a),n&&(i.bbox=n),i.properties=t||{},i.geometry=e,i}
- /**
- * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
- * For GeometryCollection type use `helpers.geometryCollection`
- *
- * @name geometry
- * @param {string} type Geometry Type
- * @param {Array<number>} coordinates Coordinates
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry
- * @returns {Geometry} a GeoJSON Geometry
- * @example
- * var type = 'Point';
- * var coordinates = [110, 50];
- *
- * var geometry = turf.geometry(type, coordinates);
- *
- * //=geometry
- */
- /**
- * Creates a {@link Point} {@link Feature} from a Position.
- *
- * @name point
- * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature<Point>} a Point feature
- * @example
- * var point = turf.point([-75.343, 39.984]);
- *
- * //=point
- */
- function l(e,t,r){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!c(e[0])||!c(e[1]))throw new Error("coordinates must contain numbers");return u({type:"Point",coordinates:e},t,r)}
- /**
- * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.
- *
- * @name points
- * @param {Array<Array<number>>} coordinates an array of Points
- * @param {Object} [properties={}] Translate these properties to each Feature
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
- * @param {string|number} [options.id] Identifier associated with the FeatureCollection
- * @returns {FeatureCollection<Point>} Point Feature
- * @example
- * var points = turf.points([
- * [-75, 39],
- * [-80, 45],
- * [-78, 50]
- * ]);
- *
- * //=points
- */
- /**
- * isNumber
- *
- * @param {*} num Number to validate
- * @returns {boolean} true/false
- * @example
- * turf.isNumber(123)
- * //=true
- * turf.isNumber('foo')
- * //=false
- */
- function c(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}
- /**
- * isObject
- *
- * @param {*} input variable to validate
- * @returns {boolean} true/false
- * @example
- * turf.isObject({elevation: 10})
- * //=true
- * turf.isObject('foo')
- * //=false
- */function d(e){return!!e&&e.constructor===Object}
- /**
- * Validate BBox
- *
- * @private
- * @param {Array<number>} bbox BBox to validate
- * @returns {void}
- * @throws Error if BBox is not valid
- * @example
- * validateBBox([-180, -40, 110, 50])
- * //=OK
- * validateBBox([-180, -40])
- * //=Error
- * validateBBox('Foo')
- * //=Error
- * validateBBox(5)
- * //=Error
- * validateBBox(null)
- * //=Error
- * validateBBox(undefined)
- * //=Error
- */function f(e){if(!e)throw new Error("bbox is required");if(!Array.isArray(e))throw new Error("bbox must be an Array");if(4!==e.length&&6!==e.length)throw new Error("bbox must be an Array of 4 or 6 numbers");e.forEach((function(e){if(!c(e))throw new Error("bbox must only contain numbers")}))}
- /**
- * Validate Id
- *
- * @private
- * @param {string|number} id Id to validate
- * @returns {void}
- * @throws Error if Id is not valid
- * @example
- * validateId([-180, -40, 110, 50])
- * //=Error
- * validateId([-180, -40])
- * //=Error
- * validateId('Foo')
- * //=OK
- * validateId(5)
- * //=OK
- * validateId(null)
- * //=Error
- * validateId(undefined)
- * //=Error
- */function h(e){if(!e)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof e))throw new Error("id must be a number or a string")}
- // Deprecated methods
- // CONCATENATED MODULE: ./node_modules/@turf/center/node_modules/@turf/meta/main.es.js
- /**
- * Callback for coordEach
- *
- * @callback coordEachCallback
- * @param {Array<number>} currentCoord The current coordinate being processed.
- * @param {number} coordIndex The current index of the coordinate being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- * @param {number} geometryIndex The current index of the Geometry being processed.
- */
- /**
- * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()
- *
- * @name coordEach
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)
- * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
- * @returns {void}
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {"foo": "bar"}),
- * turf.point([36, 53], {"hello": "world"})
- * ]);
- *
- * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- * //=currentCoord
- * //=coordIndex
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * });
- */
- function p(e,t,r){
- // Handles null Geometry -- Skips this GeoJSON
- if(null!==e)
- // This logic may look a little weird. The reason why it is that way
- // is because it's trying to be fast. GeoJSON supports multiple kinds
- // of objects at its root: FeatureCollection, Features, Geometries.
- // This function has the responsibility of handling all of them, and that
- // means that some of the `for` loops you see below actually just don't apply
- // to certain inputs. For instance, if you give this just a
- // Point geometry, then both loops are short-circuited and all we do
- // is gradually rename the input until it's called 'geometry'.
- // This also aims to allocate as few resources as possible: just a
- // few numbers and booleans, rather than any temporary arrays as would
- // be required with the normalization approach.
- for(var n,a,i,o,s,u,l,c,d=0,f=0,h=e.type,y="FeatureCollection"===h,m="Feature"===h,v=y?e.features.length:1,g=0;g<v;g++){s=(c=!!(l=y?e.features[g].geometry:m?e.geometry:e)&&"GeometryCollection"===l.type)?l.geometries.length:1;for(var b=0;b<s;b++){var w=0,S=0;
- // Handles null Geometry -- Skips this geometry
- if(null!==(o=c?l.geometries[b]:l)){u=o.coordinates;var L=o.type;switch(d=!r||"Polygon"!==L&&"MultiPolygon"!==L?0:1,L){case null:break;case"Point":if(!1===t(u,f,g,w,S))return!1;f++,w++;break;case"LineString":case"MultiPoint":for(n=0;n<u.length;n++){if(!1===t(u[n],f,g,w,S))return!1;f++,"MultiPoint"===L&&w++}"LineString"===L&&w++;break;case"Polygon":case"MultiLineString":for(n=0;n<u.length;n++){for(a=0;a<u[n].length-d;a++){if(!1===t(u[n][a],f,g,w,S))return!1;f++}"MultiLineString"===L&&w++,"Polygon"===L&&S++}"Polygon"===L&&w++;break;case"MultiPolygon":for(n=0;n<u.length;n++){for("MultiPolygon"===L&&(S=0),a=0;a<u[n].length;a++){for(i=0;i<u[n][a].length-d;i++){if(!1===t(u[n][a][i],f,g,w,S))return!1;f++}S++}w++}break;case"GeometryCollection":for(n=0;n<o.geometries.length;n++)if(!1===p(o.geometries[n],t,r))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}
- /**
- * Callback for coordReduce
- *
- * The first time the callback function is called, the values provided as arguments depend
- * on whether the reduce method has an initialValue argument.
- *
- * If an initialValue is provided to the reduce method:
- * - The previousValue argument is initialValue.
- * - The currentValue argument is the value of the first element present in the array.
- *
- * If an initialValue is not provided:
- * - The previousValue argument is the value of the first element present in the array.
- * - The currentValue argument is the value of the second element present in the array.
- *
- * @callback coordReduceCallback
- * @param {*} previousValue The accumulated value previously returned in the last invocation
- * of the callback, or initialValue, if supplied.
- * @param {Array<number>} currentCoord The current coordinate being processed.
- * @param {number} coordIndex The current index of the coordinate being processed.
- * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- * @param {number} geometryIndex The current index of the Geometry being processed.
- */
- /**
- * Reduce coordinates in any GeoJSON object, similar to Array.reduce()
- *
- * @name coordReduce
- * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object
- * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)
- * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
- * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
- * @returns {*} The value that results from the reduction.
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {"foo": "bar"}),
- * turf.point([36, 53], {"hello": "world"})
- * ]);
- *
- * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- * //=previousValue
- * //=currentCoord
- * //=coordIndex
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * return currentCoord;
- * });
- */
- /* harmony default export */var y=// CONCATENATED MODULE: ./node_modules/@turf/center/node_modules/@turf/bbox/main.es.js
- /**
- * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.
- *
- * @name bbox
- * @param {GeoJSON} geojson any GeoJSON object
- * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order
- * @example
- * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);
- * var bbox = turf.bbox(line);
- * var bboxPolygon = turf.bboxPolygon(bbox);
- *
- * //addToMap
- * var addToMap = [line, bboxPolygon]
- */
- function(e){var t=[1/0,1/0,-1/0,-1/0];return p(e,(function(e){t[0]>e[0]&&(t[0]=e[0]),t[1]>e[1]&&(t[1]=e[1]),t[2]<e[0]&&(t[2]=e[0]),t[3]<e[1]&&(t[3]=e[1])})),t};
- /* harmony default export */var m=// CONCATENATED MODULE: ./node_modules/@turf/center/main.es.js
- /**
- * Takes a {@link Feature} or {@link FeatureCollection} and returns the absolute center point of all features.
- *
- * @name center
- * @param {GeoJSON} geojson GeoJSON to be centered
- * @param {Object} [options={}] Optional parameters
- * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties
- * @returns {Feature<Point>} a Point feature at the absolute center point of all input features
- * @example
- * var features = turf.featureCollection([
- * turf.point( [-97.522259, 35.4691]),
- * turf.point( [-97.502754, 35.463455]),
- * turf.point( [-97.508269, 35.463245])
- * ]);
- *
- * var center = turf.center(features);
- *
- * //addToMap
- * var addToMap = [features, center]
- * center.properties['marker-size'] = 'large';
- * center.properties['marker-color'] = '#000';
- */
- function(e,t){if(!d(
- // Optional parameters
- t=t||{}))throw new Error("options is invalid");var r=t.properties;
- // Input validation
- if(!e)throw new Error("geojson is required");var n=y(e);return l([(n[0]+n[2])/2,(n[1]+n[3])/2],r)};
- /**
- * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
- *
- * @name feature
- * @param {Geometry} geometry input geometry
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature} a GeoJSON Feature
- * @example
- * var geometry = {
- * "type": "Point",
- * "coordinates": [110, 50]
- * };
- *
- * var feature = turf.feature(geometry);
- *
- * //=feature
- */
- function v(e,t,r){if(!w(
- // Optional Parameters
- r=r||{}))throw new Error("options is invalid");var n=r.bbox,a=r.id;
- // Validation
- if(void 0===e)throw new Error("geometry is required");if(t&&t.constructor!==Object)throw new Error("properties must be an Object");n&&S(n),a&&L(a);
- // Main
- var i={type:"Feature"};return a&&(i.id=a),n&&(i.bbox=n),i.properties=t||{},i.geometry=e,i}
- /**
- * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
- * For GeometryCollection type use `helpers.geometryCollection`
- *
- * @name geometry
- * @param {string} type Geometry Type
- * @param {Array<number>} coordinates Coordinates
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry
- * @returns {Geometry} a GeoJSON Geometry
- * @example
- * var type = 'Point';
- * var coordinates = [110, 50];
- *
- * var geometry = turf.geometry(type, coordinates);
- *
- * //=geometry
- */
- /**
- * Creates a {@link Point} {@link Feature} from a Position.
- *
- * @name point
- * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature<Point>} a Point feature
- * @example
- * var point = turf.point([-75.343, 39.984]);
- *
- * //=point
- */
- function g(e,t,r){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!b(e[0])||!b(e[1]))throw new Error("coordinates must contain numbers");return v({type:"Point",coordinates:e},t,r)}
- /**
- * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.
- *
- * @name points
- * @param {Array<Array<number>>} coordinates an array of Points
- * @param {Object} [properties={}] Translate these properties to each Feature
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
- * @param {string|number} [options.id] Identifier associated with the FeatureCollection
- * @returns {FeatureCollection<Point>} Point Feature
- * @example
- * var points = turf.points([
- * [-75, 39],
- * [-80, 45],
- * [-78, 50]
- * ]);
- *
- * //=points
- */
- /**
- * isNumber
- *
- * @param {*} num Number to validate
- * @returns {boolean} true/false
- * @example
- * turf.isNumber(123)
- * //=true
- * turf.isNumber('foo')
- * //=false
- */
- function b(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}
- /**
- * isObject
- *
- * @param {*} input variable to validate
- * @returns {boolean} true/false
- * @example
- * turf.isObject({elevation: 10})
- * //=true
- * turf.isObject('foo')
- * //=false
- */function w(e){return!!e&&e.constructor===Object}
- /**
- * Validate BBox
- *
- * @private
- * @param {Array<number>} bbox BBox to validate
- * @returns {void}
- * @throws Error if BBox is not valid
- * @example
- * validateBBox([-180, -40, 110, 50])
- * //=OK
- * validateBBox([-180, -40])
- * //=Error
- * validateBBox('Foo')
- * //=Error
- * validateBBox(5)
- * //=Error
- * validateBBox(null)
- * //=Error
- * validateBBox(undefined)
- * //=Error
- */function S(e){if(!e)throw new Error("bbox is required");if(!Array.isArray(e))throw new Error("bbox must be an Array");if(4!==e.length&&6!==e.length)throw new Error("bbox must be an Array of 4 or 6 numbers");e.forEach((function(e){if(!b(e))throw new Error("bbox must only contain numbers")}))}
- /**
- * Validate Id
- *
- * @private
- * @param {string|number} id Id to validate
- * @returns {void}
- * @throws Error if Id is not valid
- * @example
- * validateId([-180, -40, 110, 50])
- * //=Error
- * validateId([-180, -40])
- * //=Error
- * validateId('Foo')
- * //=OK
- * validateId(5)
- * //=OK
- * validateId(null)
- * //=Error
- * validateId(undefined)
- * //=Error
- */function L(e){if(!e)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof e))throw new Error("id must be a number or a string")}
- // Deprecated methods
- // CONCATENATED MODULE: ./node_modules/@turf/centroid/node_modules/@turf/meta/main.es.js
- /**
- * Callback for coordEach
- *
- * @callback coordEachCallback
- * @param {Array<number>} currentCoord The current coordinate being processed.
- * @param {number} coordIndex The current index of the coordinate being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- * @param {number} geometryIndex The current index of the Geometry being processed.
- */
- /**
- * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()
- *
- * @name coordEach
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)
- * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
- * @returns {void}
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {"foo": "bar"}),
- * turf.point([36, 53], {"hello": "world"})
- * ]);
- *
- * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- * //=currentCoord
- * //=coordIndex
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * });
- */
- function E(e,t,r){
- // Handles null Geometry -- Skips this GeoJSON
- if(null!==e)
- // This logic may look a little weird. The reason why it is that way
- // is because it's trying to be fast. GeoJSON supports multiple kinds
- // of objects at its root: FeatureCollection, Features, Geometries.
- // This function has the responsibility of handling all of them, and that
- // means that some of the `for` loops you see below actually just don't apply
- // to certain inputs. For instance, if you give this just a
- // Point geometry, then both loops are short-circuited and all we do
- // is gradually rename the input until it's called 'geometry'.
- // This also aims to allocate as few resources as possible: just a
- // few numbers and booleans, rather than any temporary arrays as would
- // be required with the normalization approach.
- for(var n,a,i,o,s,u,l,c,d=0,f=0,h=e.type,p="FeatureCollection"===h,y="Feature"===h,m=p?e.features.length:1,v=0;v<m;v++){s=(c=!!(l=p?e.features[v].geometry:y?e.geometry:e)&&"GeometryCollection"===l.type)?l.geometries.length:1;for(var g=0;g<s;g++){var b=0,w=0;
- // Handles null Geometry -- Skips this geometry
- if(null!==(o=c?l.geometries[g]:l)){u=o.coordinates;var S=o.type;switch(d=!r||"Polygon"!==S&&"MultiPolygon"!==S?0:1,S){case null:break;case"Point":if(!1===t(u,f,v,b,w))return!1;f++,b++;break;case"LineString":case"MultiPoint":for(n=0;n<u.length;n++){if(!1===t(u[n],f,v,b,w))return!1;f++,"MultiPoint"===S&&b++}"LineString"===S&&b++;break;case"Polygon":case"MultiLineString":for(n=0;n<u.length;n++){for(a=0;a<u[n].length-d;a++){if(!1===t(u[n][a],f,v,b,w))return!1;f++}"MultiLineString"===S&&b++,"Polygon"===S&&w++}"Polygon"===S&&b++;break;case"MultiPolygon":for(n=0;n<u.length;n++){for("MultiPolygon"===S&&(w=0),a=0;a<u[n].length;a++){for(i=0;i<u[n][a].length-d;i++){if(!1===t(u[n][a][i],f,v,b,w))return!1;f++}w++}b++}break;case"GeometryCollection":for(n=0;n<o.geometries.length;n++)if(!1===E(o.geometries[n],t,r))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}
- /**
- * Callback for coordReduce
- *
- * The first time the callback function is called, the values provided as arguments depend
- * on whether the reduce method has an initialValue argument.
- *
- * If an initialValue is provided to the reduce method:
- * - The previousValue argument is initialValue.
- * - The currentValue argument is the value of the first element present in the array.
- *
- * If an initialValue is not provided:
- * - The previousValue argument is the value of the first element present in the array.
- * - The currentValue argument is the value of the second element present in the array.
- *
- * @callback coordReduceCallback
- * @param {*} previousValue The accumulated value previously returned in the last invocation
- * of the callback, or initialValue, if supplied.
- * @param {Array<number>} currentCoord The current coordinate being processed.
- * @param {number} coordIndex The current index of the coordinate being processed.
- * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- * @param {number} geometryIndex The current index of the Geometry being processed.
- */
- /**
- * Reduce coordinates in any GeoJSON object, similar to Array.reduce()
- *
- * @name coordReduce
- * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object
- * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)
- * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
- * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
- * @returns {*} The value that results from the reduction.
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {"foo": "bar"}),
- * turf.point([36, 53], {"hello": "world"})
- * ]);
- *
- * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- * //=previousValue
- * //=currentCoord
- * //=coordIndex
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * return currentCoord;
- * });
- */
- /* harmony default export */var M=// CONCATENATED MODULE: ./node_modules/@turf/centroid/main.es.js
- /**
- * Takes one or more features and calculates the centroid using the mean of all vertices.
- * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.
- *
- * @name centroid
- * @param {GeoJSON} geojson GeoJSON to be centered
- * @param {Object} [properties={}] an Object that is used as the {@link Feature}'s properties
- * @returns {Feature<Point>} the centroid of the input features
- * @example
- * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);
- *
- * var centroid = turf.centroid(polygon);
- *
- * //addToMap
- * var addToMap = [polygon, centroid]
- */
- function(e,t){var r=0,n=0,a=0;return E(e,(function(e){r+=e[0],n+=e[1],a++}),!0),g([r/a,n/a],t)};
- /**
- * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
- *
- * @name feature
- * @param {Geometry} geometry input geometry
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature} a GeoJSON Feature
- * @example
- * var geometry = {
- * "type": "Point",
- * "coordinates": [110, 50]
- * };
- *
- * var feature = turf.feature(geometry);
- *
- * //=feature
- */
- function k(e,t,r){if(!F(
- // Optional Parameters
- r=r||{}))throw new Error("options is invalid");var n=r.bbox,a=r.id;
- // Validation
- if(void 0===e)throw new Error("geometry is required");if(t&&t.constructor!==Object)throw new Error("properties must be an Object");n&&P(n),a&&C(a);
- // Main
- var i={type:"Feature"};return a&&(i.id=a),n&&(i.bbox=n),i.properties=t||{},i.geometry=e,i}
- /**
- * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
- * For GeometryCollection type use `helpers.geometryCollection`
- *
- * @name geometry
- * @param {string} type Geometry Type
- * @param {Array<number>} coordinates Coordinates
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry
- * @returns {Geometry} a GeoJSON Geometry
- * @example
- * var type = 'Point';
- * var coordinates = [110, 50];
- *
- * var geometry = turf.geometry(type, coordinates);
- *
- * //=geometry
- */
- /**
- * Creates a {@link Point} {@link Feature} from a Position.
- *
- * @name point
- * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature<Point>} a Point feature
- * @example
- * var point = turf.point([-75.343, 39.984]);
- *
- * //=point
- */
- function x(e,t,r){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!T(e[0])||!T(e[1]))throw new Error("coordinates must contain numbers");return k({type:"Point",coordinates:e},t,r)}
- /**
- * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.
- *
- * @name points
- * @param {Array<Array<number>>} coordinates an array of Points
- * @param {Object} [properties={}] Translate these properties to each Feature
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
- * @param {string|number} [options.id] Identifier associated with the FeatureCollection
- * @returns {FeatureCollection<Point>} Point Feature
- * @example
- * var points = turf.points([
- * [-75, 39],
- * [-80, 45],
- * [-78, 50]
- * ]);
- *
- * //=points
- */
- /**
- * isNumber
- *
- * @param {*} num Number to validate
- * @returns {boolean} true/false
- * @example
- * turf.isNumber(123)
- * //=true
- * turf.isNumber('foo')
- * //=false
- */
- function T(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}
- /**
- * isObject
- *
- * @param {*} input variable to validate
- * @returns {boolean} true/false
- * @example
- * turf.isObject({elevation: 10})
- * //=true
- * turf.isObject('foo')
- * //=false
- */function F(e){return!!e&&e.constructor===Object}
- /**
- * Validate BBox
- *
- * @private
- * @param {Array<number>} bbox BBox to validate
- * @returns {void}
- * @throws Error if BBox is not valid
- * @example
- * validateBBox([-180, -40, 110, 50])
- * //=OK
- * validateBBox([-180, -40])
- * //=Error
- * validateBBox('Foo')
- * //=Error
- * validateBBox(5)
- * //=Error
- * validateBBox(null)
- * //=Error
- * validateBBox(undefined)
- * //=Error
- */function P(e){if(!e)throw new Error("bbox is required");if(!Array.isArray(e))throw new Error("bbox must be an Array");if(4!==e.length&&6!==e.length)throw new Error("bbox must be an Array of 4 or 6 numbers");e.forEach((function(e){if(!T(e))throw new Error("bbox must only contain numbers")}))}
- /**
- * Validate Id
- *
- * @private
- * @param {string|number} id Id to validate
- * @returns {void}
- * @throws Error if Id is not valid
- * @example
- * validateId([-180, -40, 110, 50])
- * //=Error
- * validateId([-180, -40])
- * //=Error
- * validateId('Foo')
- * //=OK
- * validateId(5)
- * //=OK
- * validateId(null)
- * //=Error
- * validateId(undefined)
- * //=Error
- */function C(e){if(!e)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof e))throw new Error("id must be a number or a string")}
- // Deprecated methods
- // CONCATENATED MODULE: ./node_modules/@turf/transform-scale/node_modules/@turf/meta/main.es.js
- /**
- * Callback for coordEach
- *
- * @callback coordEachCallback
- * @param {Array<number>} currentCoord The current coordinate being processed.
- * @param {number} coordIndex The current index of the coordinate being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- * @param {number} geometryIndex The current index of the Geometry being processed.
- */
- /**
- * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()
- *
- * @name coordEach
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)
- * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
- * @returns {void}
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {"foo": "bar"}),
- * turf.point([36, 53], {"hello": "world"})
- * ]);
- *
- * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- * //=currentCoord
- * //=coordIndex
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * });
- */
- function N(e,t,r){
- // Handles null Geometry -- Skips this GeoJSON
- if(null!==e)
- // This logic may look a little weird. The reason why it is that way
- // is because it's trying to be fast. GeoJSON supports multiple kinds
- // of objects at its root: FeatureCollection, Features, Geometries.
- // This function has the responsibility of handling all of them, and that
- // means that some of the `for` loops you see below actually just don't apply
- // to certain inputs. For instance, if you give this just a
- // Point geometry, then both loops are short-circuited and all we do
- // is gradually rename the input until it's called 'geometry'.
- // This also aims to allocate as few resources as possible: just a
- // few numbers and booleans, rather than any temporary arrays as would
- // be required with the normalization approach.
- for(var n,a,i,o,s,u,l,c,d=0,f=0,h=e.type,p="FeatureCollection"===h,y="Feature"===h,m=p?e.features.length:1,v=0;v<m;v++){s=(c=!!(l=p?e.features[v].geometry:y?e.geometry:e)&&"GeometryCollection"===l.type)?l.geometries.length:1;for(var g=0;g<s;g++){var b=0,w=0;
- // Handles null Geometry -- Skips this geometry
- if(null!==(o=c?l.geometries[g]:l)){u=o.coordinates;var S=o.type;switch(d=!r||"Polygon"!==S&&"MultiPolygon"!==S?0:1,S){case null:break;case"Point":if(!1===t(u,f,v,b,w))return!1;f++,b++;break;case"LineString":case"MultiPoint":for(n=0;n<u.length;n++){if(!1===t(u[n],f,v,b,w))return!1;f++,"MultiPoint"===S&&b++}"LineString"===S&&b++;break;case"Polygon":case"MultiLineString":for(n=0;n<u.length;n++){for(a=0;a<u[n].length-d;a++){if(!1===t(u[n][a],f,v,b,w))return!1;f++}"MultiLineString"===S&&b++,"Polygon"===S&&w++}"Polygon"===S&&b++;break;case"MultiPolygon":for(n=0;n<u.length;n++){for("MultiPolygon"===S&&(w=0),a=0;a<u[n].length;a++){for(i=0;i<u[n][a].length-d;i++){if(!1===t(u[n][a][i],f,v,b,w))return!1;f++}w++}b++}break;case"GeometryCollection":for(n=0;n<o.geometries.length;n++)if(!1===N(o.geometries[n],t,r))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}
- /**
- * Callback for coordReduce
- *
- * The first time the callback function is called, the values provided as arguments depend
- * on whether the reduce method has an initialValue argument.
- *
- * If an initialValue is provided to the reduce method:
- * - The previousValue argument is initialValue.
- * - The currentValue argument is the value of the first element present in the array.
- *
- * If an initialValue is not provided:
- * - The previousValue argument is the value of the first element present in the array.
- * - The currentValue argument is the value of the second element present in the array.
- *
- * @callback coordReduceCallback
- * @param {*} previousValue The accumulated value previously returned in the last invocation
- * of the callback, or initialValue, if supplied.
- * @param {Array<number>} currentCoord The current coordinate being processed.
- * @param {number} coordIndex The current index of the coordinate being processed.
- * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.
- * @param {number} featureIndex The current index of the Feature being processed.
- * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
- * @param {number} geometryIndex The current index of the Geometry being processed.
- */
- /**
- * Reduce coordinates in any GeoJSON object, similar to Array.reduce()
- *
- * @name coordReduce
- * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object
- * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)
- * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
- * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
- * @returns {*} The value that results from the reduction.
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {"foo": "bar"}),
- * turf.point([36, 53], {"hello": "world"})
- * ]);
- *
- * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- * //=previousValue
- * //=currentCoord
- * //=coordIndex
- * //=featureIndex
- * //=multiFeatureIndex
- * //=geometryIndex
- * return currentCoord;
- * });
- */
- /**
- * Callback for featureEach
- *
- * @callback featureEachCallback
- * @param {Feature<any>} currentFeature The current Feature being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- */
- /**
- * Iterate over features in any GeoJSON object, similar to
- * Array.forEach.
- *
- * @name featureEach
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (currentFeature, featureIndex)
- * @returns {void}
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {foo: 'bar'}),
- * turf.point([36, 53], {hello: 'world'})
- * ]);
- *
- * turf.featureEach(features, function (currentFeature, featureIndex) {
- * //=currentFeature
- * //=featureIndex
- * });
- */
- function W(e,t){if("Feature"===e.type)t(e,0);else if("FeatureCollection"===e.type)for(var r=0;r<e.features.length&&!1!==t(e.features[r],r);r++);}
- /**
- * Callback for featureReduce
- *
- * The first time the callback function is called, the values provided as arguments depend
- * on whether the reduce method has an initialValue argument.
- *
- * If an initialValue is provided to the reduce method:
- * - The previousValue argument is initialValue.
- * - The currentValue argument is the value of the first element present in the array.
- *
- * If an initialValue is not provided:
- * - The previousValue argument is the value of the first element present in the array.
- * - The currentValue argument is the value of the second element present in the array.
- *
- * @callback featureReduceCallback
- * @param {*} previousValue The accumulated value previously returned in the last invocation
- * of the callback, or initialValue, if supplied.
- * @param {Feature} currentFeature The current Feature being processed.
- * @param {number} featureIndex The current index of the Feature being processed.
- */
- /**
- * Reduce features in any GeoJSON object, similar to Array.reduce().
- *
- * @name featureReduce
- * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
- * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)
- * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
- * @returns {*} The value that results from the reduction.
- * @example
- * var features = turf.featureCollection([
- * turf.point([26, 37], {"foo": "bar"}),
- * turf.point([36, 53], {"hello": "world"})
- * ]);
- *
- * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {
- * //=previousValue
- * //=currentFeature
- * //=featureIndex
- * return currentFeature
- * });
- */
- /* harmony default export */var j=// CONCATENATED MODULE: ./node_modules/@turf/transform-scale/node_modules/@turf/bbox/main.es.js
- /**
- * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.
- *
- * @name bbox
- * @param {GeoJSON} geojson any GeoJSON object
- * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order
- * @example
- * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);
- * var bbox = turf.bbox(line);
- * var bboxPolygon = turf.bboxPolygon(bbox);
- *
- * //addToMap
- * var addToMap = [line, bboxPolygon]
- */
- function(e){var t=[1/0,1/0,-1/0,-1/0];return N(e,(function(e){t[0]>e[0]&&(t[0]=e[0]),t[1]>e[1]&&(t[1]=e[1]),t[2]<e[0]&&(t[2]=e[0]),t[3]<e[1]&&(t[3]=e[1])})),t};// CONCATENATED MODULE: ./node_modules/@turf/invariant/main.es.js
- /**
- * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.
- *
- * @name getCoord
- * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers
- * @returns {Array<number>} coordinates
- * @example
- * var pt = turf.point([10, 10]);
- *
- * var coord = turf.getCoord(pt);
- * //= [10, 10]
- */
- function I(e){if(!e)throw new Error("coord is required");if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return e.geometry.coordinates;if("Point"===e.type)return e.coordinates;if(Array.isArray(e)&&e.length>=2&&void 0===e[0].length&&void 0===e[1].length)return e;throw new Error("coord must be GeoJSON Point or an Array of numbers")}
- /**
- * Unwrap coordinates from a Feature, Geometry Object or an Array
- *
- * @name getCoords
- * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array
- * @returns {Array<any>} coordinates
- * @example
- * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);
- *
- * var coords = turf.getCoords(poly);
- * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]
- */
- /**
- * Converts an angle in radians to degrees
- *
- * @name radiansToDegrees
- * @param {number} radians angle in radians
- * @returns {number} degrees between 0 and 360 degrees
- */
- function O(e){if(null===e||void 0===e)throw new Error("radians is required");return 180*(e%(2*Math.PI))/Math.PI}
- /**
- * Converts an angle in degrees to radians
- *
- * @name degreesToRadians
- * @param {number} degrees angle between 0 and 360 degrees
- * @returns {number} angle in radians
- */function D(e){if(null===e||void 0===e)throw new Error("degrees is required");return e%360*Math.PI/180}
- /**
- * Converts a length to the requested unit.
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
- *
- * @param {number} length to be converted
- * @param {string} originalUnit of the length
- * @param {string} [finalUnit='kilometers'] returned unit
- * @returns {number} the converted length
- */
- /**
- * isObject
- *
- * @param {*} input variable to validate
- * @returns {boolean} true/false
- * @example
- * turf.isObject({elevation: 10})
- * //=true
- * turf.isObject('foo')
- * //=false
- */
- function R(e){return!!e&&e.constructor===Object}
- /**
- * Validate BBox
- *
- * @private
- * @param {Array<number>} bbox BBox to validate
- * @returns {void}
- * @throws Error if BBox is not valid
- * @example
- * validateBBox([-180, -40, 110, 50])
- * //=OK
- * validateBBox([-180, -40])
- * //=Error
- * validateBBox('Foo')
- * //=Error
- * validateBBox(5)
- * //=Error
- * validateBBox(null)
- * //=Error
- * validateBBox(undefined)
- * //=Error
- */
- /**
- * Returns the bearing from ‘this’ point to destination point along a rhumb line.
- * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js
- *
- * @private
- * @param {Array<number>} from - origin point.
- * @param {Array<number>} to - destination point.
- * @returns {number} Bearing in degrees from north.
- * @example
- * var p1 = new LatLon(51.127, 1.338);
- * var p2 = new LatLon(50.964, 1.853);
- * var d = p1.rhumbBearingTo(p2); // 116.7 m
- */
- function V(e,t){
- // φ => phi
- // Δλ => deltaLambda
- // Δψ => deltaPsi
- // θ => theta
- var r=D(e[1]),n=D(t[1]),a=D(t[0]-e[0]);
- // if deltaLambdaon over 180° take shorter rhumb line across the anti-meridian:
- a>Math.PI&&(a-=2*Math.PI),a<-Math.PI&&(a+=2*Math.PI);var i=Math.log(Math.tan(n/2+Math.PI/4)/Math.tan(r/2+Math.PI/4));return(O(Math.atan2(a,i))+360)%360}
- /* harmony default export */var U=// CONCATENATED MODULE: ./node_modules/@turf/rhumb-bearing/main.es.js
- // https://en.wikipedia.org/wiki/Rhumb_line
- /**
- * Takes two {@link Point|points} and finds the bearing angle between them along a Rhumb line
- * i.e. the angle measured in degrees start the north line (0 degrees)
- *
- * @name rhumbBearing
- * @param {Coord} start starting Point
- * @param {Coord} end ending Point
- * @param {Object} [options] Optional parameters
- * @param {boolean} [options.final=false] calculates the final bearing if true
- * @returns {number} bearing from north in decimal degrees, between -180 and 180 degrees (positive clockwise)
- * @example
- * var point1 = turf.point([-75.343, 39.984], {"marker-color": "#F00"});
- * var point2 = turf.point([-75.534, 39.123], {"marker-color": "#00F"});
- *
- * var bearing = turf.rhumbBearing(point1, point2);
- *
- * //addToMap
- * var addToMap = [point1, point2];
- * point1.properties.bearing = bearing;
- * point2.properties.bearing = bearing;
- */
- function(e,t,r){if(!R(
- // Optional parameters
- r=r||{}))throw new Error("options is invalid");var n,a=r.final;
- // validation
- if(!e)throw new Error("start point is required");if(!t)throw new Error("end point is required");return(n=a?V(I(t),I(e)):V(I(e),I(t)))>180?-(360-n):n},A=6371008.8,q={meters:A,metres:A,millimeters:1e3*A,millimetres:1e3*A,centimeters:100*A,centimetres:100*A,kilometers:A/1e3,kilometres:A/1e3,miles:A/1609.344,nauticalmiles:A/1852,inches:39.37*A,yards:A/1.0936,feet:3.28084*A,radians:1,degrees:A/111325};
- /**
- * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
- *
- * @name lengthToRadians
- * @param {number} distance in real units
- * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
- * @returns {number} radians
- */
- function K(e,t){if(void 0===e||null===e)throw new Error("distance is required");if(t&&"string"!==typeof t)throw new Error("units must be a string");var r=q[t||"kilometers"];if(!r)throw new Error(t+" units is invalid");return e/r}
- /**
- * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet
- *
- * @name lengthToDegrees
- * @param {number} distance in real units
- * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
- * @returns {number} degrees
- */
- /**
- * Converts a length to the requested unit.
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
- *
- * @param {number} length to be converted
- * @param {string} originalUnit of the length
- * @param {string} [finalUnit='kilometers'] returned unit
- * @returns {number} the converted length
- */
- function X(e,t,r){if(null===e||void 0===e)throw new Error("length is required");if(!(e>=0))throw new Error("length must be a positive number");
- /**
- * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
- *
- * @name radiansToLength
- * @param {number} radians in radians across the sphere
- * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
- * @returns {number} distance
- */
- return function(e,t){if(void 0===e||null===e)throw new Error("radians is required");if(t&&"string"!==typeof t)throw new Error("units must be a string");var r=q[t||"kilometers"];if(!r)throw new Error(t+" units is invalid");return e*r}(K(e,t),r||"kilometers")}
- /**
- * Converts a area to the requested unit.
- * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches
- * @param {number} area to be converted
- * @param {string} [originalUnit='meters'] of the distance
- * @param {string} [finalUnit='kilometers'] returned unit
- * @returns {number} the converted distance
- */
- /**
- * isObject
- *
- * @param {*} input variable to validate
- * @returns {boolean} true/false
- * @example
- * turf.isObject({elevation: 10})
- * //=true
- * turf.isObject('foo')
- * //=false
- */
- function Z(e){return!!e&&e.constructor===Object}
- /**
- * Validate BBox
- *
- * @private
- * @param {Array<number>} bbox BBox to validate
- * @returns {void}
- * @throws Error if BBox is not valid
- * @example
- * validateBBox([-180, -40, 110, 50])
- * //=OK
- * validateBBox([-180, -40])
- * //=Error
- * validateBBox('Foo')
- * //=Error
- * validateBBox(5)
- * //=Error
- * validateBBox(null)
- * //=Error
- * validateBBox(undefined)
- * //=Error
- */
- /* harmony default export */var z=// CONCATENATED MODULE: ./node_modules/@turf/rhumb-distance/main.es.js
- // https://en.wikipedia.org/wiki/Rhumb_line
- /**
- * Calculates the distance along a rhumb line between two {@link Point|points} in degrees, radians,
- * miles, or kilometers.
- *
- * @name rhumbDistance
- * @param {Coord} from origin point
- * @param {Coord} to destination point
- * @param {Object} [options] Optional parameters
- * @param {string} [options.units="kilometers"] can be degrees, radians, miles, or kilometers
- * @returns {number} distance between the two points
- * @example
- * var from = turf.point([-75.343, 39.984]);
- * var to = turf.point([-75.534, 39.123]);
- * var options = {units: 'miles'};
- *
- * var distance = turf.rhumbDistance(from, to, options);
- *
- * //addToMap
- * var addToMap = [from, to];
- * from.properties.distance = distance;
- * to.properties.distance = distance;
- */
- function(e,t,r){if(!Z(
- // Optional parameters
- r=r||{}))throw new Error("options is invalid");var n=r.units;
- // validation
- if(!e)throw new Error("from point is required");if(!t)throw new Error("to point is required");var a=I(e),i=I(t);
- // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)
- // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678
- return i[0]+=i[0]-a[0]>180?-360:a[0]-i[0]>180?360:0,X(
- /**
- * Returns the distance travelling from ‘this’ point to destination point along a rhumb line.
- * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js
- *
- * @private
- * @param {Array<number>} origin point.
- * @param {Array<number>} destination point.
- * @param {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).
- * @returns {number} Distance in km between this point and destination point (same units as radius).
- *
- * @example
- * var p1 = new LatLon(51.127, 1.338);
- * var p2 = new LatLon(50.964, 1.853);
- * var d = p1.distanceTo(p2); // 40.31 km
- */
- function(e,t,r){
- // see www.edwilliams.org/avform.htm#Rhumb
- var n=
- // φ => phi
- // λ => lambda
- // ψ => psi
- // Δ => Delta
- // δ => delta
- // θ => theta
- r=void 0===r?A:Number(r),a=e[1]*Math.PI/180,i=t[1]*Math.PI/180,o=i-a,s=Math.abs(t[0]-e[0])*Math.PI/180;
- // if dLon over 180° take shorter rhumb line across the anti-meridian:
- s>Math.PI&&(s-=2*Math.PI);
- // on Mercator projection, longitude distances shrink by latitude; q is the 'stretch factor'
- // q becomes ill-conditioned along E-W line (0/0); use empirical tolerance to avoid it
- var u=Math.log(Math.tan(i/2+Math.PI/4)/Math.tan(a/2+Math.PI/4)),l=Math.abs(u)>1e-11?o/u:Math.cos(a);return Math.sqrt(o*o+l*l*s*s)*n}(a,i),"meters",n)},Y=6371008.8,B={meters:Y,metres:Y,millimeters:1e3*Y,millimetres:1e3*Y,centimeters:100*Y,centimetres:100*Y,kilometers:Y/1e3,kilometres:Y/1e3,miles:Y/1609.344,nauticalmiles:Y/1852,inches:39.37*Y,yards:Y/1.0936,feet:3.28084*Y,radians:1,degrees:Y/111325};
- /**
- * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
- *
- * @name feature
- * @param {Geometry} geometry input geometry
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature} a GeoJSON Feature
- * @example
- * var geometry = {
- * "type": "Point",
- * "coordinates": [110, 50]
- * };
- *
- * var feature = turf.feature(geometry);
- *
- * //=feature
- */
- function G(e,t,r){if(!ee(
- // Optional Parameters
- r=r||{}))throw new Error("options is invalid");var n=r.bbox,a=r.id;
- // Validation
- if(void 0===e)throw new Error("geometry is required");if(t&&t.constructor!==Object)throw new Error("properties must be an Object");n&&te(n),a&&re(a);
- // Main
- var i={type:"Feature"};return a&&(i.id=a),n&&(i.bbox=n),i.properties=t||{},i.geometry=e,i}
- /**
- * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
- * For GeometryCollection type use `helpers.geometryCollection`
- *
- * @name geometry
- * @param {string} type Geometry Type
- * @param {Array<number>} coordinates Coordinates
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry
- * @returns {Geometry} a GeoJSON Geometry
- * @example
- * var type = 'Point';
- * var coordinates = [110, 50];
- *
- * var geometry = turf.geometry(type, coordinates);
- *
- * //=geometry
- */
- /**
- * Creates a {@link Point} {@link Feature} from a Position.
- *
- * @name point
- * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
- * @param {Object} [properties={}] an Object of key-value pairs to add as properties
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
- * @param {string|number} [options.id] Identifier associated with the Feature
- * @returns {Feature<Point>} a Point feature
- * @example
- * var point = turf.point([-75.343, 39.984]);
- *
- * //=point
- */
- function J(e,t,r){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!$(e[0])||!$(e[1]))throw new Error("coordinates must contain numbers");return G({type:"Point",coordinates:e},t,r)}
- /**
- * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.
- *
- * @name points
- * @param {Array<Array<number>>} coordinates an array of Points
- * @param {Object} [properties={}] Translate these properties to each Feature
- * @param {Object} [options={}] Optional Parameters
- * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
- * @param {string|number} [options.id] Identifier associated with the FeatureCollection
- * @returns {FeatureCollection<Point>} Point Feature
- * @example
- * var points = turf.points([
- * [-75, 39],
- * [-80, 45],
- * [-78, 50]
- * ]);
- *
- * //=points
- */
- /**
- * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
- *
- * @name lengthToRadians
- * @param {number} distance in real units
- * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
- * @returns {number} radians
- */
- function H(e,t){if(void 0===e||null===e)throw new Error("distance is required");if(t&&"string"!==typeof t)throw new Error("units must be a string");var r=B[t||"kilometers"];if(!r)throw new Error(t+" units is invalid");return e/r}
- /**
- * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet
- *
- * @name lengthToDegrees
- * @param {number} distance in real units
- * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
- * @returns {number} degrees
- */
- /**
- * Converts an angle in degrees to radians
- *
- * @name degreesToRadians
- * @param {number} degrees angle between 0 and 360 degrees
- * @returns {number} angle in radians
- */
- function Q(e){if(null===e||void 0===e)throw new Error("degrees is required");return e%360*Math.PI/180}
- /**
- * Converts a length to the requested unit.
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
- *
- * @param {number} length to be converted
- * @param {string} originalUnit of the length
- * @param {string} [finalUnit='kilometers'] returned unit
- * @returns {number} the converted length
- */function _(e,t,r){if(null===e||void 0===e)throw new Error("length is required");if(!(e>=0))throw new Error("length must be a positive number");
- /**
- * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.
- * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
- *
- * @name radiansToLength
- * @param {number} radians in radians across the sphere
- * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
- * @returns {number} distance
- */
- return function(e,t){if(void 0===e||null===e)throw new Error("radians is required");if(t&&"string"!==typeof t)throw new Error("units must be a string");var r=B[t||"kilometers"];if(!r)throw new Error(t+" units is invalid");return e*r}(H(e,t),r||"kilometers")}
- /**
- * Converts a area to the requested unit.
- * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches
- * @param {number} area to be converted
- * @param {string} [originalUnit='meters'] of the distance
- * @param {string} [finalUnit='kilometers'] returned unit
- * @returns {number} the converted distance
- */
- /**
- * isNumber
- *
- * @param {*} num Number to validate
- * @returns {boolean} true/false
- * @example
- * turf.isNumber(123)
- * //=true
- * turf.isNumber('foo')
- * //=false
- */
- function $(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}
- /**
- * isObject
- *
- * @param {*} input variable to validate
- * @returns {boolean} true/false
- * @example
- * turf.isObject({elevation: 10})
- * //=true
- * turf.isObject('foo')
- * //=false
- */function ee(e){return!!e&&e.constructor===Object}
- /**
- * Validate BBox
- *
- * @private
- * @param {Array<number>} bbox BBox to validate
- * @returns {void}
- * @throws Error if BBox is not valid
- * @example
- * validateBBox([-180, -40, 110, 50])
- * //=OK
- * validateBBox([-180, -40])
- * //=Error
- * validateBBox('Foo')
- * //=Error
- * validateBBox(5)
- * //=Error
- * validateBBox(null)
- * //=Error
- * validateBBox(undefined)
- * //=Error
- */function te(e){if(!e)throw new Error("bbox is required");if(!Array.isArray(e))throw new Error("bbox must be an Array");if(4!==e.length&&6!==e.length)throw new Error("bbox must be an Array of 4 or 6 numbers");e.forEach((function(e){if(!$(e))throw new Error("bbox must only contain numbers")}))}
- /**
- * Validate Id
- *
- * @private
- * @param {string|number} id Id to validate
- * @returns {void}
- * @throws Error if Id is not valid
- * @example
- * validateId([-180, -40, 110, 50])
- * //=Error
- * validateId([-180, -40])
- * //=Error
- * validateId('Foo')
- * //=OK
- * validateId(5)
- * //=OK
- * validateId(null)
- * //=Error
- * validateId(undefined)
- * //=Error
- */function re(e){if(!e)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof e))throw new Error("id must be a number or a string")}
- // Deprecated methods
- /* harmony default export */var ne=// CONCATENATED MODULE: ./node_modules/@turf/rhumb-destination/main.es.js
- // https://en.wikipedia.org/wiki/Rhumb_line
- /**
- * Returns the destination {@link Point} having travelled the given distance along a Rhumb line from the
- * origin Point with the (varant) given bearing.
- *
- * @name rhumbDestination
- * @param {Coord} origin starting point
- * @param {number} distance distance from the starting point
- * @param {number} bearing varant bearing angle ranging from -180 to 180 degrees from north
- * @param {Object} [options={}] Optional parameters
- * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers
- * @param {Object} [options.properties={}] translate properties to destination point
- * @returns {Feature<Point>} Destination point.
- * @example
- * var pt = turf.point([-75.343, 39.984], {"marker-color": "F00"});
- * var distance = 50;
- * var bearing = 90;
- * var options = {units: 'miles'};
- *
- * var destination = turf.rhumbDestination(pt, distance, bearing, options);
- *
- * //addToMap
- * var addToMap = [pt, destination]
- * destination.properties['marker-color'] = '#00F';
- */
- function(e,t,r,n){if(!ee(
- // Optional parameters
- n=n||{}))throw new Error("options is invalid");var a=n.units,i=n.properties;
- // validation
- if(!e)throw new Error("origin is required");if(void 0===t||null===t)throw new Error("distance is required");if(void 0===r||null===r)throw new Error("bearing is required");if(!(t>=0))throw new Error("distance must be greater than 0");var o=_(t,a,"meters"),s=I(e),u=
- /**
- * Returns the destination point having travelled along a rhumb line from origin point the given
- * distance on the given bearing.
- * Adapted from Geodesy: http://www.movable-type.co.uk/scripts/latlong.html#rhumblines
- *
- * @private
- * @param {Array<number>} origin - point
- * @param {number} distance - Distance travelled, in same units as earth radius (default: metres).
- * @param {number} bearing - Bearing in degrees from north.
- * @param {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).
- * @returns {Array<number>} Destination point.
- */
- function(e,t,r,n){
- // φ => phi
- // λ => lambda
- // ψ => psi
- // Δ => Delta
- // δ => delta
- // θ => theta
- n=void 0===n?Y:Number(n);var a=t/n,i=e[0]*Math.PI/180,o=Q(e[1]),s=Q(r),u=a*Math.cos(s),l=o+u;// angular distance in radians
- // check for some daft bugger going past the pole, normalise latitude if so
- Math.abs(l)>Math.PI/2&&(l=l>0?Math.PI-l:-Math.PI-l);var c=Math.log(Math.tan(l/2+Math.PI/4)/Math.tan(o/2+Math.PI/4)),d=Math.abs(c)>1e-11?u/c:Math.cos(o),f=a*Math.sin(s)/d;return[(180*(i+f)/Math.PI+540)%360-180,180*l/Math.PI];// normalise to −180..+180°
- }(s,o,r);
- // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)
- // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678
- return u[0]+=u[0]-s[0]>180?-360:s[0]-u[0]>180?360:0,J(u,i)};
- /**
- * Scale Feature/Geometry
- *
- * @private
- * @param {Feature|Geometry} feature GeoJSON Feature/Geometry
- * @param {number} factor of scaling, positive or negative values greater than 0
- * @param {string|Coord} [origin="centroid"] Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid)
- * @returns {Feature|Geometry} scaled GeoJSON Feature/Geometry
- */
- function ae(e,t,r){
- // Default params
- var n="Point"===
- /**
- * Get GeoJSON object's type, Geometry type is prioritize.
- *
- * @param {GeoJSON} geojson GeoJSON object
- * @param {string} [name="geojson"] name of the variable to display in error message
- * @returns {string} GeoJSON type
- * @example
- * var point = {
- * "type": "Feature",
- * "properties": {},
- * "geometry": {
- * "type": "Point",
- * "coordinates": [110, 40]
- * }
- * }
- * var geom = turf.getType(point)
- * //="Point"
- */
- function(e,t){if(!e)throw new Error((t||"geojson")+" is required");
- // GeoJSON Feature & GeometryCollection
- if(e.geometry&&e.geometry.type)return e.geometry.type;
- // GeoJSON Geometry & FeatureCollection
- if(e.type)return e.type;throw new Error((t||"geojson")+" is invalid")}(e);
- // Shortcut no-scaling
- return r=
- /**
- * Define Origin
- *
- * @private
- * @param {GeoJSON} geojson GeoJSON
- * @param {string|Coord} origin sw/se/nw/ne/center/centroid
- * @returns {Feature<Point>} Point origin
- */
- function(e,t){
- // Default params
- void 0!==t&&null!==t||(t="centroid");
- // Input Coord
- if(Array.isArray(t)||"object"===typeof t)return I(t);
- // Define BBox
- var r=e.bbox?e.bbox:j(e),n=r[0],a=r[1],i=r[2],o=r[3];switch(t){case"sw":case"southwest":case"westsouth":case"bottomleft":return x([n,a]);case"se":case"southeast":case"eastsouth":case"bottomright":return x([i,a]);case"nw":case"northwest":case"westnorth":case"topleft":return x([n,o]);case"ne":case"northeast":case"eastnorth":case"topright":return x([i,o]);case"center":return m(e);case void 0:case null:case"centroid":return M(e);default:throw new Error("invalid origin")}}
- /* harmony default export */(e,r),1===t||n||
- // Scale each coordinate
- N(e,(function(e){var n=z(r,e),a=U(r,e),i=function(e){if(!e)throw new Error("coords is required");
- // Feature
- if("Feature"===e.type&&null!==e.geometry)return e.geometry.coordinates;
- // Geometry
- if(e.coordinates)return e.coordinates;
- // Array of numbers
- if(Array.isArray(e))return e;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}
- /**
- * Checks if coordinates contains a number
- *
- * @name containsNumber
- * @param {Array<any>} coordinates GeoJSON Coordinates
- * @returns {boolean} true if Array contains a number
- */(ne(r,n*t,a));e[0]=i[0],e[1]=i[1],3===e.length&&(e[2]*=t)})),e}var ie=// CONCATENATED MODULE: ./node_modules/@turf/transform-scale/main.es.js
- /**
- * Scale a GeoJSON from a given point by a factor of scaling (ex: factor=2 would make the GeoJSON 200% larger).
- * If a FeatureCollection is provided, the origin point will be calculated based on each individual Feature.
- *
- * @name transformScale
- * @param {GeoJSON} geojson GeoJSON to be scaled
- * @param {number} factor of scaling, positive or negative values greater than 0
- * @param {Object} [options={}] Optional parameters
- * @param {string|Coord} [options.origin='centroid'] Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid)
- * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)
- * @returns {GeoJSON} scaled GeoJSON
- * @example
- * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);
- * var scaledPoly = turf.transformScale(poly, 3);
- *
- * //addToMap
- * var addToMap = [poly, scaledPoly];
- * scaledPoly.properties = {stroke: '#F00', 'stroke-width': 4};
- */
- function(e,t,r){if(!F(
- // Optional parameters
- r=r||{}))throw new Error("options is invalid");var n=r.origin,a=r.mutate;
- // Input validation
- if(!e)throw new Error("geojson required");if("number"!==typeof t||0===t)throw new Error("invalid factor");var i=Array.isArray(n)||"object"===typeof n;
- // Clone geojson to avoid side effects
- // Scale each Feature separately
- return!0!==a&&(e=s(e)),"FeatureCollection"!==e.type||i?ae(e,t,n):(W(e,(function(r,a){e.features[a]=ae(r,t,n)})),e);
- // Scale Feature/Geometry
- };
- /***/},
- /***/9458:
- /***/function(e,t,r){"use strict";var n=(0,r(4836).default)(r(885));function a(e,t,r,n){var a;return n=(255-(a=Math.min(e,t,r)))/255,[e=((e-a)/n).toFixed(0),t=((t-a)/n).toFixed(0),r=((r-a)/n).toFixed(0),n=parseFloat(n.toFixed(4))]}function i(e){var t={},r={h:e[1]/360,s:e[2]/100,l:e[3]/100,a:parseFloat(e[4])};if(0===r.s){var n=255*r.l;t={r:n,g:n,b:n,a:r.a}}else{var a=r.l<.5?r.l*(1+r.s):r.l+r.s-r.l*r.s,i=2*r.l-a;t.r=255*l(i,a,r.h+1/3),t.g=255*l(i,a,r.h),t.b=255*l(i,a,r.h-1/3),t.a=r.a}return t}function o(e){e.r=e.r/255,e.g=e.g/255,e.b=e.b/255;var t,r=Math.max(e.r,e.g,e.b),n=Math.min(e.r,e.g,e.b),a=[];if(a.a=e.a,a.l=(r+n)/2,r===n)a.h=0,a.s=0;else{switch(t=r-n,a.s=a.l>=.5?t/(2-r-n):t/(r+n),r){case e.r:a.h=(e.g-e.b)/t+(e.g<e.b?6:0);break;case e.g:a.h=(e.b-e.r)/t+2;break;case e.b:a.h=(e.r-e.g)/t+4}a.h/=6}return a.h=parseInt((360*a.h).toFixed(0),10),a.s=parseInt((100*a.s).toFixed(0),10),a.l=parseInt((100*a.l).toFixed(0),10),a}function s(e){var t={},r={h:e[1]/360,s:e[2]/100,v:e[3]/100},n=Math.floor(6*r.h),a=6*r.h-n,i=r.v*(1-r.s),o=r.v*(1-a*r.s),s=r.v*(1-(1-a)*r.s);switch(n%6){case 0:t.r=r.v,t.g=s,t.b=i;break;case 1:t.r=o,t.g=r.v,t.b=i;break;case 2:t.r=i,t.g=r.v,t.b=s;break;case 3:t.r=i,t.g=o,t.b=r.v;break;case 4:t.r=s,t.g=i,t.b=r.v;break;case 5:t.r=r.v,t.g=i,t.b=o}return t.r=255*t.r,t.g=255*t.g,t.b=255*t.b,t}function u(e){e.r=c(parseInt(e.r,10)%256,256),e.g=c(parseInt(e.g,10)%256,256),e.b=c(parseInt(e.b,10)%256,256);var t=Math.max(e.r,e.g,e.b),r=Math.min(e.r,e.g,e.b),n=t-r,a={h:0,s:0===t?0:n/t,v:t};if(t!==r){switch(t){case e.r:a.h=(e.g-e.b)/n+(e.g<e.b?6:0);break;case e.g:a.h=(e.b-e.r)/n+2;break;case e.b:a.h=(e.r-e.g)/n+4}a.h/=6}return a.h=parseInt((360*a.h).toFixed(0),10),a.s=parseInt((100*a.s).toFixed(0),10),a.v=parseInt((100*a.v).toFixed(0),10),a}function l(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+6*(2/3-r)*(t-e):e}function c(e,t){return e/t}e.exports=/*jshint esversion: 6 */function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"rgba",l=arguments.length>2&&void 0!==arguments[2]&&arguments[2];e=e.toLowerCase(),t=t.toLowerCase();var c,d,f,h,p=e,y=r(8874),m={rgb:{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:["rgb(123, 234, 45)","rgb(255,234,245)"],toRGBA:function(e){return[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3],10),1]}},rgba:{re:/^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d+(?:\.\d+)?|\.\d+)\s*\)/,example:["rgba(123, 234, 45, 1)","rgba(255,234,245, 0.5)"],toRGBA:function(e){return[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3],10),parseFloat(e[4])]}},hex:{re:/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,example:["00ff00","336699"],toRGBA:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16),1]}},hex3:{re:/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,example:["fb0","f0f"],toRGBA:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),1]}},hexa:{re:/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,example:["00ff00ff","336699a0"],toRGBA:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16),parseInt(e[4],16)/255]}},hex4a:{re:/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,example:["fb0f","f0f8"],toRGBA:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),parseInt(e[4]+e[4],16)/255]}},hsl:{re:/^hsl\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%\)$/,example:["hsl(120, 100%, 25%)","hsl(0, 100%, 50%)"],toRGBA:function(e){e[4]=1;var t=i(e);return[t.r,t.g,t.b,t.a]}},hsla:{re:/^hsla\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%,\s*(\d+(?:\.\d+)?|\.\d+)\s*\)/,example:["hsla(120, 100%, 25%, 1)","hsla(0, 100%, 50%, 0.5)"],toRGBA:function(e){var t=i(e);return[t.r,t.g,t.b,t.a]}},hsv:{re:/^hsv\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%\)$/,example:["hsv(120, 100%, 25%)","hsv(0, 100%, 50%)"],toRGBA:function(e){var t=s(e);return[t.r,t.g,t.b,1]}},hsb:{re:/^hsb\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%\)$/,example:["hsb(120, 100%, 25%)","hsb(0, 100%, 50%)"],toRGBA:function(e){var t=s(e);return[t.r,t.g,t.b,1]}}};// Search the color definitions for a match
- for(var v in// If this is a named color, convert it to hex
- y.hasOwnProperty(e)&&((e=y[e]).forEach((function(t,r){e[r]=("0"+t.toString(16)).slice(-2)})),e="#"+e.join("")),m){var g=m[v].re,b=m[v].toRGBA,w=g.exec(e);if(w){var S=b(w);c=S[0],d=S[1],f=S[2],h=+(Math.round(S[3]+"e+4")+"e-4")}}switch(c=Math.round(c<0||isNaN(c)?0:c>255?255:c),d=Math.round(d<0||isNaN(d)?0:d>255?255:d),f=Math.round(f<0||isNaN(f)?0:f>255?255:f),h=h<0||isNaN(h)?0:h>1?1:h,t){case"hex":p="#"+("0"+c.toString(16)).slice(-2)+("0"+d.toString(16)).slice(-2)+("0"+f.toString(16)).slice(-2);break;case"hexa":if(l){var L=a(c,d,f,h),E=(0,n.default)(L,4);c=E[0],d=E[1],f=E[2],h=E[3]}p="#"+("0"+c.toString(16)).slice(-2)+("0"+d.toString(16)).slice(-2)+("0"+f.toString(16)).slice(-2)+("0"+Math.round(255*h).toString(16)).slice(-2);break;case"hsl":var M=o({r:c,g:d,b:f});p="hsl(".concat(M.h,",").concat(M.s,"%,").concat(M.l,"%)");break;case"hsla":if(l){var k=a(c,d,f,h),x=(0,n.default)(k,4);c=x[0],d=x[1],f=x[2],h=x[3]}var T=o({r:c,g:d,b:f,a:h});p="hsla(".concat(T.h,",").concat(T.s,"%,").concat(T.l,"%,").concat(T.a,")");break;case"hsb":/* Same as `hsv` */var F=u({r:c,g:d,b:f});p="hsb(".concat(F.h,",").concat(F.s,"%,").concat(F.v,"%)");break;case"hsv":var P=u({r:c,g:d,b:f});p="hsv(".concat(P.h,",").concat(P.s,"%,").concat(P.v,"%)");break;case"rgb":p="rgb(".concat(c,",").concat(d,",").concat(f,")");break;/* falls through */default:if(l){var C=a(c,d,f,h),N=(0,n.default)(C,4);c=N[0],d=N[1],f=N[2],h=N[3]}p="rgba(".concat(c,",").concat(d,",").concat(f,",").concat(h,")")}return p},r.g.colorcolor=e.exports},
- /***/1892:
- /***/function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addListener=function(e,t){e.__resize_mutation_handler__||(e.__resize_mutation_handler__=c.bind(e));if(!e.__resize_listeners__)if(e.__resize_listeners__=[],window.ResizeObserver){var r=e.offsetWidth,n=e.offsetHeight,p=new ResizeObserver((function(){(e.__resize_observer_triggered__||(e.__resize_observer_triggered__=!0,e.offsetWidth!==r||e.offsetHeight!==n))&&f(e)})),y=o(e),m=y.detached,v=y.rendered;e.__resize_observer_triggered__=!1===m&&!1===v,e.__resize_observer__=p,p.observe(e)}else if(e.attachEvent&&e.addEventListener)// targeting IE9/10
- e.__resize_legacy_resize_handler__=function(){f(e)},e.attachEvent("onresize",e.__resize_legacy_resize_handler__),document.addEventListener("DOMSubtreeModified",e.__resize_mutation_handler__);else if(u||(l=function(e){var t=document.createElement("style");t.type="text/css",t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e));return(document.querySelector("head")||document.body).appendChild(t),t}(s)),function(e){var t=i(e,"position");t&&"static"!==t||(e.style.position="relative");e.__resize_old_position__=t,e.__resize_last__={};var r=a("div",{className:"resize-triggers"}),n=a("div",{className:"resize-expand-trigger"}),o=a("div"),s=a("div",{className:"resize-contract-trigger"});n.appendChild(o),r.appendChild(n),r.appendChild(s),e.appendChild(r),e.__resize_triggers__={triggers:r,expand:n,expandChild:o,contract:s},h(e),e.addEventListener("scroll",d,!0),e.__resize_last__={width:e.offsetWidth,height:e.offsetHeight}}(e),e.__resize_rendered__=o(e).rendered,window.MutationObserver){var g=new MutationObserver(e.__resize_mutation_handler__);g.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),e.__resize_mutation_observer__=g}e.__resize_listeners__.push(t),u++},t.removeListener=function(e,t){var r=e.__resize_listeners__;if(!r)return;t&&r.splice(r.indexOf(t),1);// no listeners exist, or removing all listeners
- if(!r.length||!t){// targeting IE9/10
- if(e.detachEvent&&e.removeEventListener)return e.detachEvent("onresize",e.__resize_legacy_resize_handler__),void document.removeEventListener("DOMSubtreeModified",e.__resize_mutation_handler__);e.__resize_observer__?(e.__resize_observer__.unobserve(e),e.__resize_observer__.disconnect(),e.__resize_observer__=null):(e.__resize_mutation_observer__&&(e.__resize_mutation_observer__.disconnect(),e.__resize_mutation_observer__=null),e.removeEventListener("scroll",d),e.removeChild(e.__resize_triggers__.triggers),e.__resize_triggers__=null),e.__resize_listeners__=null}! --u&&l&&l.parentNode.removeChild(l)};var r=null;var n=null;function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=document.createElement(e);return Object.keys(t).forEach((function(e){r[e]=t[e]})),r}function i(e,t,r){return(window.getComputedStyle(e,r||null)||{display:"none"})[t]}function o(e){if(!document.documentElement.contains(e))return{detached:!0,rendered:!1};for(var t=e;t!==document;){if("none"===i(t,"display"))return{detached:!1,rendered:!1};t=t.parentNode}return{detached:!1,rendered:!0}}var s='.resize-triggers{visibility:hidden;opacity:0;pointer-events:none}.resize-contract-trigger,.resize-contract-trigger:before,.resize-expand-trigger,.resize-triggers{content:"";position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-contract-trigger,.resize-expand-trigger{background:#eee;overflow:auto}.resize-contract-trigger:before{width:200%;height:200%}',u=0,l=null;function c(){// `this` denotes the scrolling element
- var e=o(this),t=e.rendered,r=e.detached;t!==this.__resize_rendered__&&(!r&&this.__resize_triggers__&&(h(this),this.addEventListener("scroll",d,!0)),this.__resize_rendered__=t,f(this))}function d(){var e,t,a=this;// `this` denotes the scrolling element
- h(this),this.__resize_raf__&&(e=this.__resize_raf__,n||(n=(window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||function(e){clearTimeout(e)}).bind(window)),n(e)),this.__resize_raf__=(t=function(){var e=function(e){var t=e.__resize_last__,r=t.width,n=t.height,a=e.offsetWidth,i=e.offsetHeight;return a!==r||i!==n?{width:a,height:i}:null}(a);e&&(a.__resize_last__=e,f(a))},r||(r=(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(e){return setTimeout(e,16)}).bind(window)),r(t))}function f(e){e&&e.__resize_listeners__&&e.__resize_listeners__.forEach((function(t){t.call(e,e)}))}function h(e){var t=e.__resize_triggers__,r=t.expand,n=t.expandChild,a=t.contract,i=a.scrollWidth,o=a.scrollHeight,s=r.offsetWidth,u=r.offsetHeight,l=r.scrollWidth,c=r.scrollHeight;// batch read
- // batch write
- a.scrollLeft=i,a.scrollTop=o,n.style.width=s+1+"px",n.style.height=u+1+"px",r.scrollLeft=l,r.scrollTop=c}
- /***/},
- /***/4870:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=r(7187),l=n(r(5618)),c=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l.default[1];return(0,a.default)(this,r),(e=t.call(this))._theme=n,e}return(0,i.default)(r,[{key:"theme",get:function(){return this._theme},set:function(e){this._theme=e}}]),r}(u.EventEmitter),d=new c;t.default=d},
- /***/9752:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.callHook=function(e,t,r){i.includes(t)&&e[t]&&"function"===typeof e[t]&&e[t](r)},t.clearNumberComma=// 清除数字(字符串型的)的逗号
- function(e){e.replace&&(e=e.replace(/,/g,""));return e}
- /**
- * 判断是否地理X坐标
- * @param data
- */,t.getColorWithOpacity=function(e,t){if(e.indexOf("rgba")>-1)return e.substring(0,e.lastIndexOf(",")+1)+t+")";var r=(0,a.default)(e,"rgb");return"rgba"+r.substring(3,r.length-1)+",".concat(t,")")},t.getComponentInstance=function(e){this.instanceRef=e},t.getFirstMapTarget=function(e){var t;for(var r in e)if(r){t=r;break}return t}
- /***/,t.hexToRgba=// 获取当前时间返回置顶格式
- // export function getDateTime(timeType) {
- // return geti18n().d(new Date(), timeType.replace(/\+/g, '_'), getLanguage());
- // }
- // hex -> rgba
- function(e,t){return"rgba("+parseInt("0x"+e.slice(1,3))+","+parseInt("0x"+e.slice(3,5))+","+parseInt("0x"+e.slice(5,7))+","+t+")"}// export function isTransparent(color) {
- // const rgba = colorcolor(color, 'rgba');
- // return +rgba.match(/(\d(\.\d+)?)+/g)[3] === 0;
- // }
- // 保留指定位数的小数
- ,t.isFunction=function(e){return"[object Function]"===Object.prototype.toString.call(e)},t.isXField=function(e){var t=e.toLowerCase();return"x"===t||"smx"===t||"jd"===t||"\u7ecf\u5ea6"===t||"\u4e1c\u7ecf"===t||"longitude"===t||"lot"===t||"lon"===t||"lng"===t||"x\u5750\u6807"===t}
- /**
- * 判断是否地理Y坐标
- * @param data
- */,t.isYField=function(e){var t=e.toLowerCase();return"y"===t||"smy"===t||"wd"===t||"\u7eac\u5ea6"===t||"\u5317\u7eac"===t||"latitude"===t||"lat"===t||"y\u5750\u6807"===t},t.reservedDecimal=function(e,t){return Number(e).toFixed(t)};var a=n(r(9458));var i=["loaded","removed"]},
- /***/7006:
- /***/function(e,t,r){"use strict";var n=r(5263).default,a=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=function(t){(0,l.default)(n,t);var r=(0,c.default)(n);function n(e){var t;return(0,o.default)(this,n),(t=r.call(this,e)).registerEvents=[],t.$_emitEvent=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="on".concat((0,y.default)(e));(0,m.isFunction)(t.props[n])&&t.props[n]((0,i.default)({map:t.map,layerId:t.props.layerId},r))},t.$_emitLayerMapEvent=function(e){t.$_emitEvent(e.type,{mapboxEvent:e})},t.$_bindLayerEvents=function(){Object.keys(t.props).forEach((function(e){if(t.eventList.includes(e)){var r=t.props.layerId,n=t.map.overlayLayersManager[r],a=e.replace("on","").toLowerCase();// @ts-ignore
- t.registerEvents.push(a),n?(t.overLayer=n,n.on(a,t.$_emitLayerMapEvent)):t.map.on(a,r,t.$_emitLayerMapEvent)}}))},t.$_unbindLayerEvents=function(e){t.map&&e.forEach((function(e){!t.overLayer&&t.map.off(e,t.props.layerId,t.$_emitLayerMapEvent)}))},// move = beforeId => {
- // this.map.moveLayer(this.props.layerId, beforeId);
- // this.$_emitEvent('layer-moved', {
- // beforeId: beforeId
- // });
- // };
- t.remove=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:t.props.layerId;t.registerEvents&&t.registerEvents.length&&t.$_unbindLayerEvents(t.registerEvents),t.map&&(t.map&&t.map.removeLayer(e),t.$_emitEvent("layer-removed"))},t.eventList=["onMousedown","onMouseup","onClick","onDblclick","onMousemove","onMouseenter","onMouseleave","onMouseover","onMouseout","onContextmenu","onTouchstart","onTouchend","onTouchcancel"],t.getComponentInstance=m.getComponentInstance.bind((0,u.default)(t)),t}return(0,s.default)(n,[{key:"componentDidUpdate",value:function(e){if(e.minzoom===this.props.minzoom&&e.maxzoom===this.props.maxzoom||this.map.setLayerZoomRange(this.props.layerId,this.props.minzoom,this.props.maxzoom),e.filter!==this.props.filter&&this.map.setFilter(this.props.layerId,this.props.filter),this.props.layout&&e.layout!==this.props.layout)for(var t=0,r=Object.keys(this.props.layout);t<r.length;t++){var n=r[t];this.map.setLayoutProperty(this.props.layerId,n,this.props.layout[n])}if(this.props.paint&&e.paint!==this.props.paint)for(var a=0,i=Object.keys(this.props.paint);a<i.length;a++){var o=i[a];this.map.setPaintProperty(this.props.layerId,o,this.props.paint[o])}if(this.props.metadata&&e.metadata!==this.props.metadata){var s=this.map.getLayer(this.props.layerId);s.metadata?Object.assign(s.metadata,this.props.metadata):s.metadata=this.props.metadata}}},{key:"componentWillUnmount",value:function(){this.remove()}},{key:"loaded",value:function(e){this.map=e,(0,m.callHook)(this.instanceRef,"loaded",this.map),this.$_bindLayerEvents()}},{key:"removed",value:function(e){this.props.layerId&&this.map&&this.remove(),this.map=e,(0,m.callHook)(this.instanceRef,"removed",this.map)}},{key:"render",value:function(){// const { layerId } = this.props;
- // const id = source || layerId;
- // const sourceLoaded =
- // this.map && layerId ? this.map.isSourceLoaded(layerId) : false;
- // const mapLayer = this.map ? this.map.getLayer(layerId) : null;
- // const mapSource =
- // this.map && layerId ? this.map.getSource(layerId) : null;
- var t=Object.assign({},this.props,{});return(0,v.jsx)(e,(0,i.default)((0,i.default)({},t),{},{ref:this.getComponentInstance,remove:this.remove}))}}]),n}(f.PureComponent);return t.displayName=(0,d.default)(e,"withLayer"),t.defaultProps={layerId:(0,p.default)("".concat(e.name.toLowerCase(),"-")),minzoom:0,maxzoom:22},(0,h.default)(t,e)};var i=a(r(8683)),o=a(r(5671)),s=a(r(3144)),u=a(r(7326)),l=a(r(9340)),c=a(r(8557)),d=a(r(6626)),f=n(r(3899)),h=a(r(8679)),p=a(r(4461)),y=a(r(1633)),m=r(9752),v=r(5893)},
- /***/9635:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=function(t){(0,u.default)(n,t);var r=(0,l.default)(n);function n(e){var t;return(0,i.default)(this,n),(t=r.call(this,e)).loadMapSucceed=t.loadMapSucceed.bind((0,s.default)(t)),t.deleteMapSucceed=t.deleteMapSucceed.bind((0,s.default)(t)),t.getComponentInstance=m.getComponentInstance.bind((0,s.default)(t)),t}return(0,o.default)(n,[{key:"componentDidMount",value:function(){var e=this.getTargetName();p.default.getMap(e)&&this.loadMap(e),p.default.on("load-map",this.loadMapSucceed),y.default.on("delete-map",this.deleteMapSucceed)}},{key:"componentDidUpdate",value:function(e){var t=this.props.mapTarget,r=e.mapTarget;t&&r&&t!==r&&this.mapTargetChanged(t)}},{key:"componentWillUnmount",value:function(){p.default.off("load-map",this.loadMapSucceed),y.default.off("delete-map",this.deleteMapSucceed)}},{key:"getTargetName",value:function(){
- /**
- * 便于区分存在多个map时,子组件对应的map的渲染;
- * map 和 webmap 的 props 属性是 target 其他组件都叫 mapTarget
- * 如果子组件包裹在 map 组件里面,若没有传 mapTarget, 则 targetName 直接取父元素的target 的值
- * 如果子组件和 map 同层级,且没有设置 mapTarget 时,则默认渲染到第一个 map 上
- *
- */
- // const selfParent = this._reactInternalInstance._currentElement._owner._instance;
- // console.log(selfParent);
- // console.log('selfParent: ', selfParent);
- // const parentTarget =
- // selfParent && selfParent.name.toLowerCase() === 'smwebmap' &&
- // selfParent.target;
- // return this.props.mapTarget || parentTarget || Object.keys(mapEvent.getAllMaps())[0];
- var e=p.default.getAllMaps();return this.props.mapTarget||(0,m.getFirstMapTarget)(e)}},{key:"loadMapSucceed",value:function(e,t){t===this.getTargetName()&&this.loadMap(t)}},{key:"mapTargetChanged",value:function(e){// 多个map切换的时候,需要删除该组件与前一个map的图层绑定, 如果新的target没有对应的map,那么默认绑定第一个地图
- var t=p.default.getAllMaps(),r=(0,m.getFirstMapTarget)(t),n=p.default.getMap(r);this.resetData(),(p.default.getMap(e)||n)&&this.loadMap(e)}},{key:"loadMap",value:function(e){this.map=p.default.getMap(e),this.webmap=p.default.getWebMap(e),(0,m.callHook)(this.instanceRef,"loaded",this.map)}},{key:"deleteMapSucceed",value:function(e){e===this.getTargetName()&&this.resetData()}},{key:"resetData",value:function(){this.map=null,this.webmap=null,(0,m.callHook)(this.instanceRef,"removed",this.map)}},{key:"mapNotLoadedTip",value:function(){return!this.map&&(h.message.destroy(),// TODO
- // message.warning(this.$t('warning.unassociatedMap'));
- h.message.warning("\u60a8\u9700\u8981\u914d\u7f6e\u5173\u8054\u5730\u56fe\uff01"),!0)}},{key:"render",value:function(){return(0,v.jsx)(e,(0,a.default)((0,a.default)({},this.props),{},{ref:this.getComponentInstance,mapNotLoadedTip:this.mapNotLoadedTip}))}}]),n}(d.default.Component);return t.displayName=(0,c.default)(e,"mapGetter"),(0,f.default)(t,e)}
- /***/;var a=n(r(8683)),i=n(r(5671)),o=n(r(3144)),s=n(r(7326)),u=n(r(9340)),l=n(r(8557)),c=n(r(6626)),d=n(r(3899)),f=n(r(8679)),h=r(2721),p=n(r(1104)),y=n(r(4870)),m=r(9752),v=r(5893)},
- /***/1558:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(3144)),i=n(r(5671)),o=(0,a.default)((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,i.default)(this,e),this.layout={visibility:"visible"},this.paint={"circle-radius":6,"circle-color":"#3fb1e3","circle-opacity":1,"circle-blur":0,"circle-translate":[0,0],"circle-translate-anchor":"map","circle-pitch-scale":"map","circle-pitch-alignment":"viewport","circle-stroke-width":0,"circle-stroke-color":"#000","circle-stroke-opacity":1},Object.assign(this.paint,t),Object.assign(this.layout,r)}));t.default=o},
- /***/3768:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(3144)),i=n(r(5671)),o=(0,a.default)((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,i.default)(this,e),this.layout={visibility:"visible"},this.paint={"fill-opacity":.8,"fill-color":"#3fb1e3","fill-translate":[0,0],"fill-antialias":!0,"fill-outline-color":"#3fb1e3","fill-translate-anchor":"map"},Object.assign(this.paint,t),Object.assign(this.layout,r)}));t.default=o},
- /***/9623:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(3144)),i=n(r(5671)),o=(0,a.default)((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,i.default)(this,e),this.paint={"heatmap-radius":30,"heatmap-weight":1,"heatmap-intensity":1,"heatmap-color":["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],"heatmap-opacity":1},this.layout={visibility:"visible"},Object.assign(this.paint,t),Object.assign(this.layout,r)}));t.default=o},
- /***/8214:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(3144)),i=n(r(5671)),o=(0,a.default)((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,i.default)(this,e),this.layout={visibility:"visible","line-cap":"butt","line-join":"miter"},this.paint={"line-opacity":1,"line-color":"#3fb1e3","line-width":3,"line-blur":1},Object.assign(this.paint,t),Object.assign(this.layout,r)}));t.default=o},
- /***/1700:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(3144)),i=n(r(5671)),o=(0,a.default)((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,i.default)(this,e),this.paint=Object.assign({},t),this.layout=Object.assign({visibility:"visible"},r)}));t.default=o},
- /***/2009:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"CircleStyle",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"FillStyle",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"HeatMapStyle",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"LineStyle",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"SymbolStyle",{enumerable:!0,get:function(){return u.default}});var a=n(r(1558)),i=n(r(3768)),o=n(r(8214)),s=n(r(9623)),u=n(r(1700))},
- /***/1104:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=r(7187),l=n(r(8383)),c=n(r(4870)),d=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(){var e;(0,a.default)(this,r);for(var n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];return(e=t.call.apply(t,[this].concat(i))).mapCache={},e.webMapCache={},e}return(0,i.default)(r,[{key:"getMap",value:function(e){return this.mapCache[e]}},{key:"getWebMap",value:function(e){return this.webMapCache[e]}},{key:"getAllMaps",value:function(){return this.mapCache}},{key:"getAllWebMap",value:function(){return this.webMapCache}},{key:"setMap",value:function(e,t){this.mapCache[e]=t}},{key:"setWebMap",value:function(e,t){this.webMapCache[e]=t}},{key:"deleteMap",value:function(e){c.default.emit("delete-map",e),// drawEvent.$options.deletDrawOfMap(mapTarget);
- delete this.mapCache[e]}},{key:"deleteWebMap",value:function(e){delete this.webMapCache[e]}},{key:"getMapSource",value:function(e){var t=[],r=this.getMap(e);if(r){var n=new l.default({map:r}).getSourceList();for(var a in n){if(a)(n[a].layers||[]).forEach((function(e){e.source&&"raster"!==e.type&&t.push(e.source)}))}}return t}}]),r}(u.EventEmitter),f=new d;t.default=f},
- /***/3595:
- /***/function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.handleMultyPolygon=void 0;t.handleMultyPolygon=function(e){return e.forEach((function(e){if("Polygon"===e.geometry.type){var t=e.geometry.coordinates;if(t.length>1){var r=[];t.forEach((function(e){r.push([e])})),e.geometry.coordinates=r,e.geometry.type="MultiPolygon"}}})),e}},
- /***/1191:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"SmAnimateMarkerLayer",{enumerable:!0,get:function(){return E.default}}),Object.defineProperty(t,"SmClusterLayer",{enumerable:!0,get:function(){return y.default}}),Object.defineProperty(t,"SmDataFlowLayer",{enumerable:!0,get:function(){return S.default}}),Object.defineProperty(t,"SmDeckglLayer",{enumerable:!0,get:function(){return m.default}}),Object.defineProperty(t,"SmEchartsLayer",{enumerable:!0,get:function(){return w.default}}),Object.defineProperty(t,"SmFireLayer",{enumerable:!0,get:function(){return L.default}}),Object.defineProperty(t,"SmGeojsonLayer",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"SmGraphThemeLayer",{enumerable:!0,get:function(){return p.default}}),Object.defineProperty(t,"SmHeatmapLayer",{enumerable:!0,get:function(){return g.default}}),Object.defineProperty(t,"SmLabelThemeLayer",{enumerable:!0,get:function(){return v.default}}),Object.defineProperty(t,"SmLayer",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"SmMap",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"SmMapvLayer",{enumerable:!0,get:function(){return b.default}}),Object.defineProperty(t,"SmRangeThemeLayer",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(t,"SmRanksymbolThemeLayer",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(t,"SmRasterTileLayer",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"SmSource",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"SmUniqueThemeLayer",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(t,"SmVectorTileLayer",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(t,"SmWebMap",{enumerable:!0,get:function(){return a.default}});var a=n(r(4416)),i=n(r(8611)),o=n(r(1406)),s=n(r(5558)),u=n(r(9704)),l=n(r(1771)),c=n(r(2125)),d=n(r(4204)),f=n(r(3930)),h=n(r(5890)),p=n(r(910)),y=n(r(9407)),m=n(r(9183)),v=n(r(2174)),g=n(r(6073)),b=n(r(7)),w=n(r(1762)),S=n(r(2313)),L=n(r(4799)),E=n(r(1193))},
- /***/4483:
- /***/function(e,t,r){"use strict";var n=r(5263).default,a=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0});var i={};t.default=void 0;var o=a(r(8683));r(9626),r(2547);var s=n(r(1191));Object.keys(s).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(i,e)||e in t&&t[e]===s[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return s[e]}}))}));var u=n(r(2009)),l=(0,o.default)((0,o.default)({},s),{},{commontypes:u});t.default=l},
- /***/1016:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(3144)),i=n(r(5671)),o=(0,a.default)((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,i.default)(this,e),this.id=t.id,this.maxzoom=t.maxzoom,this.minzoom=t.minzoom,this.source=t.source,this.type=t.type,this.visibility=t.visibility||"visible"})),s=o;t.default=s},
- /***/8611:
- /***/function(e,t,r){"use strict";var n=r(5263).default,a=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=a(r(8683)),o=a(r(5671)),s=a(r(3144)),u=a(r(7326)),l=a(r(9340)),c=a(r(8557)),d=n(r(3899)),f=r(4831),h=a(r(8031)),p=a(r(1296)),y=a(r(1633)),m=a(r(39)),v=a(r(9208)),g=a(r(2307)),b=r(1892),w=a(r(1104)),S=r(9752),L=r(5893),E=function(e){(0,l.default)(r,e);var t=(0,c.default)(r);function r(e){var n;return(0,o.default)(this,r),(n=t.call(this,e)).viewModelProps=["mapOptions.center","mapOptions.zoom","mapOptions.crs","mapOptions.minZoom","mapOptions.maxZoom","mapOptions.maxBounds","mapOptions.renderWorldCopies","mapOptions.bearing","mapOptions.pitch"],n.initializeWebMap=function(){var e=n.props,t=e.target,r=e.tiandituKey,a=e.mapOptions,i=e.autoresize;n.viewModel=new h.default({target:t,tiandituKey:r},a),i&&(0,b.addListener)(n.selfRef.current,n.__resizeHandler)},n.registerEvents=function(){var e=n.props,t=e.target,r=e.onLoad;n.viewModel.on("addlayerssucceeded",(function(e){n.setState({spinning:!1}),w.default.setMap(t,e.map),n.viewModel&&w.default.setWebMap(t,n.viewModel),w.default.emit("load-map",e.map,t),e.map.resize(),n.map=e.map,// 绑定map event
- n.bindMapEvents(),
- /**
- * @event load
- * @desc webmap 加载完成之后触发。
- * @property {mapboxgl.Map} map - MapBoxGL Map 对象。
- */
- (0,S.isFunction)(r)&&r((0,i.default)((0,i.default)({},e),{},{component:(0,u.default)(n)}))}))},n.mapEventCallback=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n.emitMapEvent(e.type,(0,i.default)({mapboxEvent:e},t))},n.state={spinning:!0},n.selfRef=d.default.createRef(),n.__resizeHandler=(0,p.default)(n.__resizeHandler.bind((0,u.default)(n)),100,{leading:!0}),n}return(0,s.default)(r,[{key:"componentDidMount",value:function(){this.initializeWebMap(),this.registerEvents()}},{key:"getLayerIds",value:function(e){return null===e||void 0===e?void 0:e.reduce((function(e,t){var r,n;if(null!==t&&void 0!==t&&null!==(r=t.type)&&void 0!==r&&null!==(n=r.displayName)&&void 0!==n&&n.includes("Layer")){var a=t.props.layerId;a&&e.push(a)}return e}),[])}},{key:"componentDidUpdate",value:function(e){var t=this;this.viewModel&&this.viewModelProps.forEach((function(r){var n=r.includes(".")?r.split(".")[1]:r,a="set".concat((0,m.default)(n)),i=(0,v.default)(t.props,r),o=(0,v.default)(e,r);i&&!(0,g.default)(i,o)&&t.viewModel[a](i)}));var r=this.props,n=r.sprites,a=r.glyphs;for(var i in n)e.sprites[i]!==n[i]&&this.viewModel.addSprites(i,n[i]);for(var o in a)e.glyphs[o]!==a[o]&&this.viewModel.addGlyphs(o,a[o]);if(this.map){var s=this.getLayerIds(e.children),u=this.getLayerIds(this.props.children);// 过滤图层顺序相等的情况
- (0,g.default)(s,u)||this.viewModel.changeLayersOrder(u)}}},{key:"componentWillUnmount",value:function(){var e=this.props,t=e.target,r=e.autoresize;w.default.deleteMap(t),w.default.deleteWebMap(t),r&&this.selfRef.current&&(0,b.removeListener)(this.selfRef.current,this.__resizeHandler)}},{key:"bindMapEvents",value:function(){var e=this;Object.keys(this.props).forEach((function(t){if(f.MAP_EVENT_NAMES.includes(t)){var r=t.replace("on","");e.bindMapEvent(r.toLowerCase(),e.mapEventCallback)}}))}},{key:"bindMapEvent",value:function(e,t){this.map.on(e,t)}},{key:"emitMapEvent",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r="on".concat((0,y.default)(e));(0,S.isFunction)(this.props[r])&&this.props[r]((0,i.default)({map:this.map,component:this},t))}},{key:"__resizeHandler",value:function(){this.resize()}},{key:"resize",value:function(){this.viewModel&&this.viewModel.resize&&this.viewModel.resize()}},{key:"render",value:function(){var e=this.state.spinning,t=this.props,r=t.target,n=t.children;return(0,L.jsx)("div",{id:r,className:"sm-component-map",ref:this.selfRef,children:!e&&n})}}]),r}(d.Component);E.defaultProps={target:"map",autoresize:!0};var M=E;t.default=M},
- /***/8031:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=n(r(375)),l=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e){var n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{style:{version:8,sources:{},layers:[]}};return(0,a.default)(this,r),(n=t.call(this)).mapOptions=Object.assign({style:{version:8,sources:{},layers:[]}},i),n.tiandituKey=e.tiandituKey||"",n.target=e.target||"map",n.center=i.center||[],n.zoom=i.zoom,n._createMap(),n}return(0,i.default)(r,[{key:"_createMap",value:function(){var e=this;this.map&&(this.map.remove(),this.center=[],this.zoom=null),this.mapOptions.container=this.target,setTimeout((function(){e.map=new u.default.Map(e.mapOptions),e.map.on("load",(function(){e.fire("addlayerssucceeded",{map:e.map})}))}),0)}
- /**
- * @function WebMapViewModel.prototype.resize
- * @description Map 更新大小。
- */},{key:"resize",value:function(){this.map&&this.map.resize()}
- /**
- * @function WebMapViewModel.prototype.setCRS
- * @description 设置地图的投影。
- * @param {Number} crs - 地图投影。
- */},{key:"setCrs",value:function(e){this.map&&(this.mapOptions.crs=e,//@ts-ignore
- e&&this.map.setCRS(u.default.CRS.get(e)))}
- /**
- * @function WebMapViewModel.prototype.setZoom
- * @description 设置地图的缩放级别。
- * @param {Number} zoom - 地图缩放级别。
- */},{key:"setZoom",value:function(e){this.map&&(this.mapOptions.zoom=e,(e||0===e)&&this.map.setZoom(e))}
- /**
- * @function WebMapViewModel.prototype.setCenter
- * @description 设置地图的中心点。
- * @param {Array} center - 地图中心点。
- */},{key:"setCenter",value:function(e){this.map&&(this.mapOptions.center=e,e&&e.length>0&&this.map.setCenter(e))}
- /**
- * @function WebMapViewModel.prototype.setMaxBounds
- * @description 设置地图的最大范围。
- * @param {Array} maxBounds - 地图最大范围。
- */},{key:"setMaxBounds",value:function(e){this.map&&(this.mapOptions.maxBounds=e,e&&e.length>0&&this.map.setMaxBounds(e))}
- /**
- * @function WebMapViewModel.prototype.setMinZoom
- * @description 设置地图的最小级别。
- * @param {Number} minZoom - 地图最小级别。
- */},{key:"setMinZoom",value:function(e){this.map&&(this.mapOptions.minZoom=e,(e||0===e)&&this.map.setMinZoom(e))}
- /**
- * @function WebMapViewModel.prototype.setMaxZoom
- * @description 设置地图的最大级别。
- * @param {Number} maxZoom - 地图最大级别。
- */},{key:"setMaxZoom",value:function(e){this.map&&(this.mapOptions.maxZoom=e,(e||0===e)&&this.map.setMinZoom(e))}
- /**
- * @function WebMapViewModel.prototype.setRenderWorldCopies
- * @description 设置地图的平铺。
- * @param {Boolean} renderWorldCopies - 地图是否平铺。
- */},{key:"setRenderWorldCopies",value:function(e){this.map&&(this.mapOptions.renderWorldCopies=e,e&&this.map.setRenderWorldCopies(e))}
- /**
- * @function WebMapViewModel.prototype.setBearing
- * @description 设置地图的方位。
- * @param {Number} bearing - 地图的初始方位。
- */},{key:"setBearing",value:function(e){this.map&&(this.mapOptions.bearing=e,(e||0===e)&&this.map.setBearing(e))}
- /**
- * @function WebMapViewModel.prototype.setPitch
- * @description 设置地图的俯仰。
- * @param {Number} pitch - 地图的初始俯仰。
- */},{key:"setPitch",value:function(e){this.map&&(this.mapOptions.pitch=e,(e||0===e)&&this.map.setPitch(e))}},{key:"addSprites",value:function(e,t){var r;null!==(r=this.map)&&void 0!==r&&r.style&&this.map.style.addSprite(e,t)}},{key:"addGlyphs",value:function(e,t){var r;null!==(r=this.map)&&void 0!==r&&r.style&&this.map.style.addGlyphs(e,t)}
- /**
- * @function MapViewModel.prototype.changeLayersOrder
- * @description 设置图层顺序
- * @param {string[]} newLayerIds - 正确顺序的图层id数据
- */},{key:"changeLayersOrder",value:function(e){// 最后一个图层的位置不变,从倒数第二个图层开始移动图层顺序
- for(var t=e.length-2;t>-1;t--){var r=e[t],n=e[t+1];this.map.moveLayer(r,n)}}}]),r}(u.default.Evented),c=l;t.default=c},
- /***/1406:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i=n(r(4925)),o=n(r(5671)),s=n(r(3144)),u=n(r(9340)),l=n(r(8557)),c=n(r(8808)),d=n(r(3899)),f=n(r(9635)),h=["id","mapNotLoadedTip"],p=(0,c.default)(f.default)(a=function(e){(0,u.default)(r,e);var t=(0,l.default)(r);function r(e){var n;return(0,o.default)(this,r),(n=t.call(this,e))._map=null,n}return(0,s.default)(r,[{key:"componentWillUnmount",value:function(){var e=this;setTimeout((function(){e._map.removeSource(e.props.id)}),100)}},{key:"loaded",value:function(e){this._map=e;var t=this.props,r=t.id,n=(t.mapNotLoadedTip,(0,i.default)(t,h));this._map.getSource(r)||this._map.addSource(r,n)}},{key:"render",value:function(){return null}}]),r}(d.default.PureComponent))||a;t.default=p},
- /***/8383:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(7591)),s=n(r(1016)),u=function(){function e(t){(0,a.default)(this,e),this.map=t.map,this.style=this.map.getStyle(),this.layers=this.map.getStyle().layers,this.overlayLayers=this.map.overlayLayersManager,this.detailLayers=null,this.sourceList={},this.sourceNames=[],this._initLayers(),this._initSource(),this.excludeSourceNames=["tdt-search-","tdt-route-","smmeasure","mapbox-gl-draw"]}return(0,i.default)(e,[{key:"getSourceList",value:function(){var e={};for(var t in this.sourceList)t&&this.excludeSource(t)&&(e[t]=this.sourceList[t]);return e}},{key:"getSourceNames",value:function(){var e=this,t=[];return this.sourceNames.forEach((function(r){r&&e.excludeSource(r)&&t.push(r)})),t}},{key:"excludeSource",value:function(e){for(var t=0;t<this.excludeSourceNames.length;t++)if(e.indexOf(this.excludeSourceNames[t])>=0)return!1;return!0}},{key:"getLegendStyle",value:function(e){return e?this.sourceList[e]?this.sourceList[e].style:"":(Object.values(this.sourceList)||[]).filter((function(e){return!!e.style}))}},{key:"getLayers",value:function(){return this.detailLayers}},{key:"getLayersBySourceLayer",value:function(e,t){return this.sourceList[e].sourceLayerList[t]}},{key:"getSourceLayersBySource",value:function(e){return this.sourceList[e].sourceLayerList}},{key:"addSourceStyle",value:function(e,t){this.sourceList[e]&&(this.sourceList[e].style=t)}},{key:"_initLayers",value:function(){var e=this;this.layers&&(this.detailLayers=this.layers.map((function(t){return e.map.getLayer(t.id)}))),Object.values(this.overlayLayers).forEach((function(t){t.id&&e.detailLayers.push({id:t.id,visibility:t.visibility?"visible":"none",source:t.id})}))}},{key:"_initSource",value:function(){var e=this;this.detailLayers&&this.detailLayers.forEach((function(t){e.sourceList[t.source]||(e.sourceList[t.source]=new o.default({source:t.source}),e.sourceNames.push(t.source)),e.sourceList[t.source].addLayer(new s.default(t),t.sourceLayer)}))}}]),e}();t.default=u},
- /***/7591:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=function(){function e(t){(0,a.default)(this,e),this.id=t.source,this.sourceLayerList={},this.layers=[],this.type=null}return(0,i.default)(e,[{key:"addLayer",value:function(e,t){t?(this.sourceLayerList[t]||(this.sourceLayerList[t]=[]),this.sourceLayerList[t].push(e)):this.sourceLayerList=void 0,this.layers.push(e),this.type=e.type,[e.visibility,this.visibility].includes("visible")?this.visibility="visible":this.visibility="none"}}]),e}();t.default=o},
- /***/4416:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(8683)),i=n(r(5671)),o=n(r(3144)),s=n(r(7326)),u=n(r(9340)),l=n(r(8557)),c=n(r(3899)),d=r(1892),f=n(r(1296)),h=n(r(1633)),p=n(r(39)),y=r(2721),m=n(r(9208)),v=n(r(2307)),g=n(r(1104)),b=n(r(2872)),w=r(9752),S=r(4831),L=r(5893),E=function(e){(0,u.default)(r,e);var t=(0,l.default)(r);function r(e){var n;return(0,i.default)(this,r),(n=t.call(this,e))._isMounted=!1,n.initializeWebMap=function(){var e=n.props,t=e.target,r=e.serverUrl,a=e.accessToken,i=e.accessKey,o=e.tiandituKey,s=e.withCredentials,u=e.excludePortalProxyUrl,l=e.mapOptions,c=e.autoresize;n.viewModel=new b.default(n.props.mapId,{target:t,serverUrl:r,accessToken:a,accessKey:i,tiandituKey:o,withCredentials:s,excludePortalProxyUrl:u},l),c&&(0,d.addListener)(n.selfRef.current,n.__resizeHandler)},n.registerEvents=function(){var e=n.props,t=e.target,r=e.onLoad;n.viewModel.on("addlayerssucceeded",(function(e){n._isMounted&&n.setState({spinning:!1}),g.default.setMap(t,e.map),n.viewModel&&g.default.setWebMap(t,n.viewModel),g.default.emit("load-map",e.map,t),e.map.resize(),n.map=e.map,// 绑定map event
- n.bindMapEvents(),
- /**
- * @event load
- * @desc webmap 加载完成之后触发。
- * @property {mapboxgl.Map} map - MapBoxGL Map 对象。
- */
- (0,w.isFunction)(r)&&r((0,a.default)((0,a.default)({},e),{},{component:(0,s.default)(n)}))})),n.viewModel.on("getmapinfofailed",(function(e){var t=n.props.onGetMapFailed;
- /**
- * @event getMapFailed
- * @desc 获取 WebMap 地图信息失败。
- * @property {Object} error - 失败原因。
- */(0,w.isFunction)(t)&&t({error:e.error}),y.message.error(e.error.message),n._isMounted&&n.setState({spinning:!1})})),n.viewModel.on("getlayerdatasourcefailed",(function(e){var t=n.props.onGetLayerDatasourceFailed;
- /**
- * @event getLayerDatasourceFailed
- * @desc 获取图层数据失败。
- * @property {Object} error - 失败原因。
- * @property {Object} layer - 图层信息。
- * @property {mapboxgl.Map} map - MapBoxGL Map 对象。
- */(0,w.isFunction)(t)&&t({error:e.error,layer:e.layer,map:e.map}),// TODO
- // message.error(this.$t('webmap.getLayerInfoFailed'));
- y.message.error("\u83b7\u53d6\u56fe\u5c42\u4fe1\u606f\u5931\u8d25\uff01")}))},n.state={spinning:!0,viewModelProps:["mapId","serverUrl","mapOptions.center","mapOptions.zoom","mapOptions.style","mapOptions.crs","mapOptions.minZoom","mapOptions.maxZoom","mapOptions.maxBounds","mapOptions.renderWorldCopies","mapOptions.bearing","mapOptions.pitch","withCredentials"]},n.selfRef=c.default.createRef(),n.__resizeHandler=(0,f.default)(n.__resizeHandler.bind((0,s.default)(n)),100,{leading:!0}),n}return(0,o.default)(r,[{key:"componentDidMount",value:function(){this._isMounted=!0,this.initializeWebMap(),this.registerEvents()}},{key:"componentDidUpdate",value:function(e){var t=this;this.viewModel&&this.state.viewModelProps.forEach((function(r){var n=r.includes(".")?r.split(".")[1]:r,a="set".concat((0,p.default)(n)),i=(0,m.default)(t.props,r),o=(0,m.default)(e,r);void 0===i||null===i||(0,v.default)(i,o)||t.viewModel[a](i)}))}},{key:"componentWillUnmount",value:function(){var e=this.props,t=e.target,r=e.autoresize;g.default.deleteMap(t),g.default.deleteWebMap(t),r&&this.selfRef.current&&(0,d.removeListener)(this.selfRef.current,this.__resizeHandler),this._isMounted=!1}},{key:"__resizeHandler",value:function(){this.resize()}},{key:"resize",value:function(){this.viewModel&&this.viewModel.resize&&this.viewModel.resize()}},{key:"bindMapEvents",value:function(){var e=this;Object.keys(this.props).forEach((function(t){if(S.MAP_EVENT_NAMES.includes(t)){var r=t.replace("on","");e.bindMapEvent(r.toLowerCase(),e.mapEventCallback.bind(e))}}))}},{key:"bindMapEvent",value:function(e,t){this.map.on(e,t)}},{key:"mapEventCallback",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.emitMapEvent(e.type,(0,a.default)({mapboxEvent:e},t))}},{key:"emitMapEvent",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r="on".concat((0,h.default)(e));(0,w.isFunction)(this.props[r])&&this.props[r]((0,a.default)({map:this.map,component:this},t))}},{key:"render",value:function(){var e=this.state.spinning,t=this.props,r=t.target,n=t.children;return(0,L.jsxs)("div",{id:r,className:"sm-component-web-map",ref:this.selfRef,children:[n,e&&(0,L.jsx)(y.Spin,{size:"large",tip:"\u5730\u56fe\u52a0\u8f7d\u4e2d...",spinning:e})]})}}]),r}(c.default.Component);E.defaultProps={target:"map",autoresize:!0};var M=E;t.default=M},
- /***/2872:
- /***/function(e,t,r){"use strict";var n=r(5263).default,a=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=a(r(5671)),o=a(r(3144)),s=a(r(9340)),u=a(r(8557)),l=a(r(375)),c=a(r(8383)),d=r(3595),f=r(9752);r(2395),r(8399),r(8553);var h=n(r(7888)),p=a(r(5973)),y=a(r(550)),m=a(r(3094)),v=a(r(5385)),g=a(r(2158)),b=a(r(4461)),w=a(r(3465)),S=["559082264.0287178","279541132.0143589","139770566.0071794","69885283.00358972","34942641.50179486","17471320.75089743","8735660.375448715","4367830.1877224357","2183915.093862179","1091957.546931089","545978.7734655447","272989.7734655447","272989.3867327723","136494.6933663862","68247.34668319309","34123.67334159654","17061.83667079827","8530.918335399136","4265.459167699568","2132.729583849784"],L=["5.590822640287176E8","2.795411320143588E8","1.397705660071794E8","6.98852830035897E7","3.494264150179485E7","1.7471320750897426E7","8735660.375448713","4367830.187724357","2183915.0938621783","1091957.5469310891","545978.7734655446","272989.3867327723","136494.69336638614","68247.34668319307","34123.673341596535","17061.836670798268","8530.918335399134"],E=["GoogleCRS84Quad","GoogleMapsCompatible","GlobalCRS84Scale"],M=function(e){(0,s.default)(r,e);var t=(0,u.default)(r);function r(e){var n,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{style:{version:8,sources:{},layers:[]}};return(0,i.default)(this,r),(n=t.call(this)).mapParams={},// on: any;
- // fire: any;
- n.echartslayer=[],n.canvgsV=[],n._layers=[],n.mapId=e,n.mapOptions=Object.assign({style:{version:8,sources:{},layers:[]}},o),n.serverUrl=a.serverUrl||"http://www.supermapol.com",n.accessToken=a.accessToken,n.accessKey=a.accessKey,n.tiandituKey=a.tiandituKey||"",n.withCredentials=a.withCredentials||!1,n.target=a.target||"map",n.excludePortalProxyUrl=a.excludePortalProxyUrl,n.center=o.center||[],n.zoom=o.zoom,n.echartslayer=[],n._createWebMap(),n.on("mapinitialized",(function(){n.map.on("remove",(function(){n._stopCanvg()}))})),n}
- /**
- * @function WebMapViewModel.prototype.resize
- * @description Map 更新大小。
- */return(0,o.default)(r,[{key:"resize",value:function(){this.map&&this.map.resize(),this.echartsLayerResize()}
- /**
- * @function WebMapViewModel.prototype.EchartsLayerResize
- * @description echartslayer 更新大小。
- */},{key:"echartsLayerResize",value:function(){this.echartslayer.forEach((function(e){e.chart.resize()}))}
- /**
- * @function WebMapViewModel.prototype.setMapId
- * @description 设置地图 ID。
- * @param {String} mapId - iPortal|Online 地图 ID。
- */},{key:"setMapId",value:function(e){var t=this;this.mapId=e,setTimeout((function(){t._createWebMap(),//@ts-ignore
- window.map=t.map}),0)}
- /**
- * @function WebMapViewModel.prototype.setServerUrl
- * @description 设置地图的地址。
- * @param {string} options.serverUrl - 地图的地址。
- */},{key:"setServerUrl",value:function(e){this.serverUrl=e}},{key:"setWithCredentials",value:function(e){this.withCredentials=e}
- /**
- * @function WebMapViewModel.prototype.setCRS
- * @description 设置地图的投影。
- * @param {Number} crs - 地图投影。
- */},{key:"setCrs",value:function(e){this.map&&(this.mapOptions.crs=e,//@ts-ignore
- e&&this.map.setCRS(l.default.CRS.get(e)))}
- /**
- * @function WebMapViewModel.prototype.setZoom
- * @description 设置地图的缩放级别。
- * @param {Number} zoom - 地图缩放级别。
- */},{key:"setZoom",value:function(e){this.map&&(this.mapOptions.zoom=e,(e||0===e)&&this.map.setZoom(e))}
- /**
- * @function WebMapViewModel.prototype.setCenter
- * @description 设置地图的中心点。
- * @param {Array} center - 地图中心点。
- */},{key:"setCenter",value:function(e){this.map&&(this.mapOptions.center=e,e&&e.length>0&&this.map.setCenter(e))}
- /**
- * @function WebMapViewModel.prototype.setMaxBounds
- * @description 设置地图的最大范围。
- * @param {Array} maxBounds - 地图最大范围。
- */},{key:"setMaxBounds",value:function(e){this.map&&(this.mapOptions.maxBounds=e,e&&e.length>0&&this.map.setMaxBounds(e))}
- /**
- * @function WebMapViewModel.prototype.setMinZoom
- * @description 设置地图的最小级别。
- * @param {Number} minZoom - 地图最小级别。
- */},{key:"setMinZoom",value:function(e){this.map&&(this.mapOptions.minZoom=e,(e||0===e)&&this.map.setMinZoom(e))}
- /**
- * @function WebMapViewModel.prototype.setMaxZoom
- * @description 设置地图的最大级别。
- * @param {Number} maxZoom - 地图最大级别。
- */},{key:"setMaxZoom",value:function(e){this.map&&(this.mapOptions.maxZoom=e,(e||0===e)&&this.map.setMaxZoom(e))}
- /**
- * @function WebMapViewModel.prototype.setRenderWorldCopies
- * @description 设置地图的平铺。
- * @param {Boolean} renderWorldCopies - 地图是否平铺。
- */},{key:"setRenderWorldCopies",value:function(e){this.map&&(this.mapOptions.renderWorldCopies=e,e&&this.map.setRenderWorldCopies(e))}
- /**
- * @function WebMapViewModel.prototype.setBearing
- * @description 设置地图的方位。
- * @param {Number} bearing - 地图的初始方位。
- */},{key:"setBearing",value:function(e){this.map&&(this.mapOptions.bearing=e,(e||0===e)&&this.map.setBearing(e))}
- /**
- * @function WebMapViewModel.prototype.setPitch
- * @description 设置地图的俯仰。
- * @param {Number} pitch - 地图的初始俯仰。
- */},{key:"setPitch",value:function(e){this.map&&(this.mapOptions.pitch=e,(e||0===e)&&this.map.setPitch(e))}
- /**
- * @function WebMapViewModel.prototype.setStyle
- * @description 设置地图的样式。
- * @param {Object} style - 地图的样式。
- */},{key:"setStyle",value:function(e){this.map&&(this.mapOptions.style=e,e&&this.map.setStyle(e))}},{key:"getSourceListModel",get:function(){return this._sourceListModel}
- /**
- * @private
- * @function WebMapViewModel.prototype._createWebMap
- * @description 登陆窗口后添加地图图层。
- */},{key:"_createWebMap",value:function(){var e=this;if(this.map&&(this.map.remove(),this.center=[],this.zoom=null,this._dataflowService&&this._dataflowService.off("messageSucceeded",this._handleDataflowFeaturesCallback)),!this.mapId||!this.serverUrl)return this.mapOptions.container=this.target,void setTimeout((function(){e.map=new l.default.Map(e.mapOptions),e.map.on("load",(function(){e.fire("addlayerssucceeded",{map:e.map,mapparams:{},layers:[]})}))}),0);this._legendList={},this._taskID=new Date;var t=this.serverUrl.split("");"/"!==t[t.length-1]&&(this.serverUrl+="/");var r=this.serverUrl+"web/maps/"+this.mapId+"/map";(this.accessToken||this.accessKey)&&(r+=(this.accessToken&&this.accessKey,"token="+this.accessToken));var n="getUrlResource.json?url=";if(this.excludePortalProxyUrl&&this.serverUrl.indexOf(n)>-1){// 大屏需求,或者有加上代理的
- var a=this.serverUrl.split(n);a.length>1&&(r=a[0]+n+this.serverUrl+"web/maps/"+this.mapId+"/map.json")}this._getMapInfo(r,this._taskID)}
- /**
- * @private
- * @function WebMapViewModel.prototype._createMap
- * @description 创建地图。
- */},{key:"_createMap",value:function(e){// 获取字体样式
- var t=[],r=e.layers;// 获取 label 图层字体类型
- r&&r.length>0&&r.forEach((function(e){e.labelStyle&&t.push(e.labelStyle.fontFamily)}),this),t.push("'supermapol-icons'");var n,a=t.join(",");// zoom
- n=e.center&&[e.center.x,e.center.y];// center
- var i=e.level||0;i=0===i?0:i-1,n||(n=[0,0]),"EPSG:3857"===this.baseProjection&&(n=this._unproject(n)),n=new l.default.LngLat(n[0],n[1]),// 初始化 map
- this.map=new l.default.Map({container:this.target,center:this.center.length?this.center:n,zoom:this.zoom||i,style:{version:8,sources:{},// "glyphs": 'http://iclsvr.supermap.io/iserver/services/map-beijing/rest/maps/beijingMap/tileFeature/sdffonts/{fontstack}/{range}.pbf',
- layers:[]},// @ts-ignore -------- crs 为 enhance 新加属性
- crs:this.baseProjection,localIdeographFontFamily:a||"",renderWorldCopies:!1,preserveDrawingBuffer:this.mapOptions.preserveDrawingBuffer||!1}),
- /**
- * @event WebMapViewModel#mapinitialized
- * @description Map 初始化成功。
- * @property {mapboxglTypes.Map} map - MapBoxGL Map 对象。
- */
- this.fire("mapinitialized",{map:this.map})}
- /**
- * @private
- * @function WebMapViewModel.prototype._getMapInfo
- * @description 获取地图的 JSON 信息。
- * @param {string} url - 请求地图的 url。
- */},{key:"_getMapInfo",value:function(e,t){var r=this,n=-1===e.indexOf(".json")?"".concat(e,".json"):e;SuperMap.FetchRequest.get(n,null,{withCredentials:this.withCredentials}).then((function(e){return e.json()})).then((function(e){// 坐标系异常处理
- if(r.baseProjection=e.projection,// 存储地图的名称以及描述等信息,返回给用户
- r.mapParams={title:e.title,description:e.description},!l.default.CRS.get(r.baseProjection))throw Error("\u4e0d\u652f\u6301\u5f53\u524d\u5730\u56fe\u7684\u5750\u6807\u7cfb");r._createMap(e);var n=e.layers;r.map.on("load",(function(){e.baseLayer&&"MAPBOXSTYLE"===e.baseLayer.layerType?// 添加矢量瓦片服务作为底图
- r._addMVTBaseMap(e):r._addBaseMap(e),n&&0!==n.length?r._addLayers(n,t):r._sendMapToUser(0,0)}))})).catch((function(e){
- /**
- * @event WebMapViewModel#getmapinfofailed
- * @description 获取地图信息失败。
- * @property {Object} error - 失败原因。
- */
- r.fire("getmapinfofailed",{error:e})}))}},{key:"_addMVTBaseMap",value:function(e){var t=e.baseLayer.dataSource.url;// @ts-ignore
- this.map.addStyle(t)}
- /**
- * @private
- * @function WebMapViewModel.prototype._addBaseMap
- * @description 添加底图。
- * @param {Object} mapInfo - map 信息。
- */},{key:"_addBaseMap",value:function(e){this._createBaseLayer(e)}
- /**
- * @private
- * @function WebMapViewModel.prototype._createBaseLayer
- * @description 创建底图。
- * @param {Object} mapInfo - map 信息。
- */},{key:"_createBaseLayer",value:function(e){var t=e.baseLayer||e,r=t.layerType;// 底图和rest地图兼容
- (r.indexOf("TIANDITU_VEC")>-1||r.indexOf("TIANDITU_IMG")>-1||r.indexOf("TIANDITU_TER")>-1)&&(r=r.substr(0,12));var n;switch(r){case"TIANDITU_VEC":case"TIANDITU_IMG":case"TIANDITU_TER":this._createTiandituLayer(e);break;case"BING":this._createBingLayer(t.name);break;case"WMS":this._createWMSLayer(t);break;case"WMTS":this._createWMTSLayer(t);break;case"TILE":case"SUPERMAP_REST":this._createDynamicTiledLayer(t);break;case"CLOUD":case"CLOUD_BLACK":case"OSM":case"JAPAN_ORT":case"JAPAN_RELIEF":case"JAPAN_PALE":case"JAPAN_STD":case"GOOGLE_CN":case"GOOGLE":n={CLOUD:"http://t2.dituhui.com/FileService/image?map=quanguo&type=web&x={x}&y={y}&z={z}",CLOUD_BLACK:"http://t3.dituhui.com/MapService/getGdp?x={x}&y={y}&z={z}",OSM:"http://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png",GOOGLE:"http://www.google.cn/maps/vt/pb=!1m4!1m3!1i{z}!2i{x}!3i{y}!2m3!1e0!2sm!3i380072576!3m8!2szh-CN!3scn!5e1105!12m4!1e68!2m2!1sset!2sRoadmap!4e0!5m1!1e0",GOOGLE_CN:"https://mt{0-3}.google.cn/vt/lyrs=m&hl=zh-CN&gl=cn&x={x}&y={y}&z={z}",JAPAN_STD:"http://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png",JAPAN_PALE:"http://cyberjapandata.gsi.go.jp/xyz/pale/{z}/{x}/{y}.png",JAPAN_RELIEF:"http://cyberjapandata.gsi.go.jp/xyz/relief/{z}/{x}/{y}.png",JAPAN_ORT:"http://cyberjapandata.gsi.go.jp/xyz/ort/{z}/{x}/{y}.jpg"}[r],this._createXYZLayer(t,n)}}
- /**
- * @private
- * @function WebMapViewModel.prototype._createTiandituLayer
- * @description 创建天地图底图。
- * @param {Object} mapInfo - map 信息。
- */},{key:"_createTiandituLayer",value:function(e){var t=this._getTiandituUrl(e),r=e.baseLayer.layerType,n=Boolean(e.baseLayer.labelLayerVisible),a=t.labelUrl,i=t.tiandituUrl;this._addBaselayer(i,"tianditu-layers-"+r),n&&this._addBaselayer(a,"tianditu-label-layers-"+r)}
- /**
- * @private
- * @function WebMapViewModel.prototype._createWMTSLayer
- * @description 创建 WMTS 底图。
- * @param {Object} layerInfo - 地图信息。
- */},{key:"_createWMTSLayer",value:function(e){var t=this,r=this._getWMTSUrl(e);this._filterWMTSIsMatched(e,(function(n,a){n&&t._addBaselayer([r],"wmts-layers"+e.name,0,a)}))}
- /**
- * @private
- * @function WebMapViewModel.prototype._filterWMTSIsMatched
- * @description 过滤能够跟mapboxgl匹配的wmts服务。
- * @param {Object} mapInfo - map 信息。
- * @callback matchedCallback
- */},{key:"_filterWMTSIsMatched",value:function(e,t){var r=this,n=!1,a=22,i=e.url;SuperMap.FetchRequest.get(i,null,{withCredentials:!1,withoutFormatSuffix:!0}).then((function(e){return e.text()})).then((function(i){for(var o=h||window.convert,s=JSON.parse(o.xml2json(i,{compact:!0,spaces:4})).Capabilities.Contents.TileMatrixSet,u=0;u<s.length;u++)if(s[u]["ows:Identifier"]&&s[u]["ows:Identifier"]._text===e.tileMatrixSet)if(E.includes(s[u].WellKnownScaleSet._text))n=!0;else{if(!s[u].WellKnownScaleSet||"Custom"!==s[u].WellKnownScaleSet._text)throw Error("\u4e0d\u652f\u6301\u4f20\u5165\u7684 TileMatrixSet");for(var l=[],c=// @ts-ignore -------- crs 为 enhance 新加属性
- "EPSG:3857"===r.map.crs?S:L,d=0,f=c.length// 坐标系判断
- ;d<f&&s[u].TileMatrix[d]&&c[d]===s[u].TileMatrix[d].ScaleDenominator._text;d++)l.push(c[d]);if(a=l.length-1,0===l.length)throw Error("\u4e0d\u652f\u6301\u4f20\u5165\u7684 TileMatrixSet");n=!0}t(n,a)})).catch((function(e){
- /**
- * @event WebMapViewModel#getwmtsinfofailed
- * @description 获取 WMTS 图层信息失败。
- * @property {Object} error - 失败原因。
- * @property {mapboxglTypes.Map} map - MapBoxGL Map 对象。
- */
- r.fire("getwmtsinfofailed",{error:e,map:r.map})}))}
- /**
- * @private
- * @function WebMapViewModel.prototype._createBingLayer
- * @description 创建 Bing 图层。
- */},{key:"_createBingLayer",value:function(e){// @ts-ignore
- this._addBaselayer(["http://dynamic.t0.tiles.ditu.live.com/comp/ch/{quadkey}?it=G,TW,L,LA&mkt=zh-cn&og=109&cstl=w4c&ur=CN&n=z"],"bing-layers-"+e)}
- /**
- * @private
- * @function WebMapViewModel.prototype._createXYZLayer
- * @description 创建 XYZ 底图。
- * @param {String} url - url 地址。
- */},{key:"_createXYZLayer",value:function(e,t){var r=[];if("OSM"===e.layerType){for(var n=t.match(/\w\-\w/g)[0],a=n[0],i=n[2],o="",s=97;s<123;s++)o+=String.fromCharCode(s);for(var u=o.split(""),l=u.indexOf(a),c=u.indexOf(i),d=u.slice(l,c+1),f=0;f<d.length;f++){var h=t.replace(/{\w\-\w}/g,d[f]);r.push(h)}}else if("GOOGLE_CN"===e.layerType)for(var p=t.match(/\d\-\d/g)[0],y=parseInt(p[0]),m=parseInt(p[2]),v=y;v<=m;v++){var g=t.replace(/{\d\-\d}/g,v.toString());r.push(g)}else r=[t];this._addBaselayer(r,"XYZ-layers-"+e.name)}
- /**
- * @private
- * @function WebMapViewModel.prototype._createDynamicTiledLayer
- * @description 创建 iserver 底图。
- * @param {Object} layerInfo - 图层信息。
- */},{key:"_createDynamicTiledLayer",value:function(e){var t=e.url+"/zxyTileImage.png?z={z}&x={x}&y={y}";// @ts-ignore -------- setCRS 为 enhance 新加属性
- this.map.setCRS&&"EPSG:3857"!==this.baseProjection&&(t=e.url+"/image.png?viewBounds={viewBounds}&width={width}&height={height}"),this._addBaselayer([t],"tile-layers-"+e.name)}
- /**
- * @private
- * @function WebMapViewModel.prototype._createWMSLayer
- * @description 创建 WMS 图层。
- * @param {Object} layerInfo - 图层信息。
- */},{key:"_createWMSLayer",value:function(e){var t=this._getWMSUrl(e);this._addBaselayer([t],"WMS-layers-"+e.name)}
- /**
- * @private
- * @function WebMapViewModel.prototype._createVectorLayer
- * @description 创建 Vector 图层。
- * @param {Object} layerInfo - map 信息。
- * @param {Array} features - 属性 信息。
- */},{key:"_createVectorLayer",value:function(e,t){var r=e.style,n=e.featureType,a=e.layerID,i=e.visible,o={style:this._transformStyleToMapBoxGl(r,n),layout:{visibility:i}},s={type:"geojson",data:{type:"FeatureCollection",features:t}};this._addOverlayToMap(n,s,a,o),// 如果面有边框
- "POLYGON"===n&&r.strokeColor&&this._addStrokeLineForPoly(r,s,a+"-strokeLine",i)}
- /**
- * @function WebMapViewModel.prototype._getTiandituUrl
- * @private
- * @description 创建天地图url;
- * @param {Object} mapInfo - map 信息。
- */},{key:"_getTiandituUrl",value:function(e){for(var t=/t0/gi,r={tiandituUrl:[],labelUrl:[]},n=e.baseLayer.layerType.split("_")[1].toLowerCase(),a=Boolean(e.baseLayer.labelLayerVisible),i="http://t0.tianditu.com/{layer}_{proj}/wmts?tk=".concat(this.tiandituKey),o=i,s="EPSG:4326"===this.baseProjection?"c":"w",u={service:"WMTS",request:"GetTile",style:"default",version:"1.0.0",layer:n,tilematrixSet:s,format:"tiles",width:256,height:256},l=(i+=this._getParamString(u,i)+"&tilematrix={z}&tilerow={y}&tilecol={x}").replace("{layer}",n).replace("{proj}",s),c=[],d=0;d<8;d++)c.push(l.replace(t,"t".concat(d)));// 如果有 label 图层
- if(r.tiandituUrl=c,a){var f={vec:"cva",ter:"cta",img:"cia"}[n];u.layer=f,o=(o+=this._getParamString(u,o)+"&tilematrix={z}&tilerow={y}&tilecol={x}").replace("{layer}",f).replace("{proj}",s);for(var h=[],p=0;p<8;p++)h.push(o.replace(t,"t".concat(p)));r.labelUrl=h}return r}
- /**
- * @function WebMapViewModel.prototype._getWMSUrl
- * @private
- * @description 创建 WMS url;
- * @param {Object} mapInfo - map 信息。
- */},{key:"_getWMSUrl",value:function(e){var t=e.url,r=(t=t.split("?")[0]).split("/"),n={service:"WMS",request:"GetMap",layers:r[r.length-1],styles:"",format:"image/png",transparent:"true",version:"1.1.1",width:256,height:256,srs:this.baseProjection},a="EPSG:4326"===this.baseProjection?"{bbox-epsg-4326}":"{bbox-epsg-3857}";return t+=this._getParamString(n,t)+"&bbox=".concat(a)}
- /**
- * @private
- * @function WebMapViewModel.prototype._checkUploadToRelationship
- * @description 检查是否上传到关系型
- * @param {String} fileId - 文件的id
- * @returns {Promise<T | never>} 关系型文件一些参数
- */},{key:"_checkUploadToRelationship",value:function(e){return SuperMap.FetchRequest.get("".concat(this.serverUrl,"web/datas/").concat(e,"/datasets.json"),null,{withCredentials:this.withCredentials}).then((function(e){return e.json()})).then((function(e){return e}))}
- /**
- * @private
- * @function ol.supermap.WebMap.prototype._getDataService
- * @description 获取上传的数据信息
- * @param {String} fileId - 文件id
- * @param {String} datasetName 数据服务的数据集名称
- * @returns {Promise<T | never>} 数据的信息
- */},{key:"_getDataService",value:function(e,t){return SuperMap.FetchRequest.get("".concat(this.serverUrl,"web/datas/").concat(e,".json"),null,{withCredentials:this.withCredentials}).then((function(e){return e.json()})).then((function(r){return r.fileId=e,r.datasetName=t,r}))}
- /**
- * @private
- * @function WebMapViewModel.prototype._getService
- * @description 获取当前数据发布的服务中的某种类型服务
- * @param {Array} services 服务集合
- * @param {String} type 服务类型,RESTDATA, RESTMAP
- * @returns {Object} 服务
- */},{key:"_getService",value:function(e,t){return e.filter((function(e){return e&&e.serviceType===t}))[0]}},{key:"_getServiceInfoFromLayer",value:function(e,t,r,n,a,i,o){var s=this,u=o?!o.isMvt:"HOSTED_TILE"===r.layerType,l=!1;n.forEach((function(n,c){l||(//有服务了,就不需要循环
- n&&u&&"RESTMAP"===n.serviceType?(l=!0,//地图服务,判断使用mvt还是tile
- s._getTileLayerInfo(n.address).then((function(e){e.forEach((function(e){var n=e.bounds;r.layerType="TILE",r.orginEpsgCode=s.baseProjection,r.units=e.coordUnit&&e.coordUnit.toLowerCase(),r.extent=[n.left,n.bottom,n.right,n.top],r.visibleScales=e.visibleScales,r.url=e.url,r.sourceType="TILE",s._createBaseLayer(r),s.layerAdded++,s._sendMapToUser(s.layerAdded,t)}))}))):n&&!u&&"RESTDATA"===n.serviceType&&(o&&o.isMvt?(s._addVectorLayer(o,r,i),s.layerAdded++,s._sendMapToUser(s.layerAdded,t)):(//数据服务
- l=!0,//关系型文件发布的数据服务
- s._getDatasources(n.address).then((function(i){r.dataSource.dataSourceName=i+":"+a,r.dataSource.url="".concat(n.address,"/data"),s._getFeatureBySQL(r.dataSource.url,[r.dataSource.dataSourceName||r.name],(function(n){var a=s._parseGeoJsonData2Feature({allDatas:{features:n.result.features.features},fileCode:r.projection,featureProjection:s.baseProjection});s._addLayer(r,a,e),s.layerAdded++,s._sendMapToUser(s.layerAdded,t)}),(function(e){s.layerAdded++,s._sendMapToUser(s.layerAdded,t),s.fire("getlayerdatasourcefailed",{error:e,layer:r,map:s.map})}))})))))}),this),l||(//循环完成了,也没有找到合适的服务。有可能服务被删除
- this.layerAdded++,this._sendMapToUser(this.layerAdded,t),this.fire("getlayerdatasourcefailed",{error:null,layer:r,map:this.map}))}
- /**
- * @private
- * @function WebMapViewModel.prototype._getDatasources
- * @description 获取关系型文件发布的数据服务中数据源的名称
- * @param {String} url - 获取数据源信息的url
- * @returns {Promise<T | never>} 数据源名称
- */},{key:"_getDatasources",value:function(e){return SuperMap.FetchRequest.get("".concat(e,"/data/datasources.json")).then((function(e){return e.json()})).then((function(e){return e.datasourceNames[0]}))}
- /**
- * @private
- * @function WebMapViewModel.prototype._getTileLayerInfo
- * @description 获取地图服务的信息
- * @param {String} url 地图服务的url(没有地图名字)
- * @returns {Promise<T | never>} 地图服务信息
- */},{key:"_getTileLayerInfo",value:function(e){var t=this,r=this.serverUrl+"apps/viewer/getUrlResource.json?url=",n=r+encodeURIComponent(e),a=this.baseProjection.split("EPSG:")[1];return SuperMap.FetchRequest.get("".concat(n,"/maps.json"),null,{withCredentials:this.withCredentials}).then((function(e){return e.json()})).then((function(e){var n=[];return e&&e.forEach((function(e){var i=SuperMap.FetchRequest.get("".concat(r).concat(e.path,".json?prjCoordSys=").concat(JSON.stringify({epsgCode:a})),null,{withCredentials:t.withCredentials}).then((function(e){return e.json()})).then((function(t){return t.url=e.path,t}));n.push(i)})),Promise.all(n).then((function(e){return e}))}))}
- /**
- * @private
- * @function WebMapViewModel.prototype._addLayers
- * @description 添加叠加图层。
- * @param {Object} mapInfo - 图层信息。
- */},{key:"_addLayers",value:function(e,t){var r,n=this;// 存储地图上所有的图层对象
- this._layers=e,this.layerAdded=0;var a=e.length;a>0&&e.forEach((function(e,i){if(e.dataSource&&e.dataSource.serverId||"MARKER"===e.layerType||"HOSTED_TILE"===e.layerType){//数据存储到iportal上了
- var o=e.dataSource,s=o?o.serverId:e.serverId;if(!s)return n._addLayer(e,null,i),n.layerAdded++,void n._sendMapToUser(n.layerAdded,a);if("MARKER"===e.layerType||o&&(!o.accessType||"DIRECT"===o.accessType)){//原来二进制文件
- var u="".concat(n.serverUrl,"web/datas/").concat(s,"/content.json?pageSize=9999999¤tPage=1");n.accessToken&&(u="".concat(u,"&").concat(n.accessKey,"=").concat(n.accessToken)),SuperMap.FetchRequest.get(u,null,{withCredentials:n.withCredentials}).then((function(e){return e.json()})).then((function(o){if(t===n._taskID)return!1===o.succeed?(//请求失败
- n.layerAdded++,n._sendMapToUser(n.layerAdded,a),void// -----------------------todo-----------------
- n.fire("getlayerdatasourcefailed",{error:o.error,layer:e,map:n.map})):void(o&&o.type&&("JSON"===o.type||"GEOJSON"===o.type?(o.content=JSON.parse(o.content.trim()),r=n._formatGeoJSON(o.content)):"EXCEL"!==o.type&&"CSV"!==o.type||(r=n._excelData2Feature(o.content)),n._addLayer(e,r,i),n.layerAdded++,n._sendMapToUser(n.layerAdded,a)))})).catch((function(t){n.layerAdded++,n._sendMapToUser(n.layerAdded,a),n.fire("getlayerdatasourcefailed",{error:t,layer:e,map:n.map})}))}else{//关系型文件
- var l="HOSTED_TILE"===e.layerType,c=o?o.serverId:e.serverId;n._checkUploadToRelationship(c).then((function(t){if(t&&t.length>0){var r=t[0].name,o=t[0].type.toUpperCase();n._getDataService(c,r).then((function(t){var s=t.dataItemServices;if(0===s.length)return n.layerAdded++,n._sendMapToUser(n.layerAdded,a),void n.fire("getlayerdatasourcefailed",{error:null,layer:e,map:n.map});if(l){var u=s.filter((function(e){return e&&"RESTDATA"===e.serviceType}))[0];n._isMvt(u.address,r).then((function(t){n._getServiceInfoFromLayer(i,a,e,s,r,o,t)})).catch((function(){//判断失败就走之前逻辑,>数据量用tile
- n._getServiceInfoFromLayer(i,a,e,s,r,o)}))}else n._getServiceInfoFromLayer(i,a,e,s,r,o)}))}else n.layerAdded++,n._sendMapToUser(n.layerAdded,a),n.fire("getlayerdatasourcefailed",{error:null,layer:e,map:n.map})})).catch((function(t){n.layerAdded++,n._sendMapToUser(n.layerAdded,a),n.fire("getlayerdatasourcefailed",{error:t,layer:e,map:n.map})}))}}else if("SUPERMAP_REST"===e.layerType||"TILE"===e.layerType||"WMS"===e.layerType||"WMTS"===e.layerType)n._createBaseLayer(e),n.layerAdded++,n._sendMapToUser(n.layerAdded,a);else if(e.dataSource&&"REST_DATA"===e.dataSource.type){//从restData获取数据
- var d=e.dataSource;n._getFeatureBySQL(d.url,[d.dataSourseName||e.name],(function(t){r=n._parseGeoJsonData2Feature({allDatas:{features:t.result.features.features},fileCode:e.projection,featureProjection:n.baseProjection}),n._addLayer(e,r,i),n.layerAdded++,n._sendMapToUser(n.layerAdded,a)}),(function(t){n.layerAdded++,n._sendMapToUser(n.layerAdded,a),n.fire("getlayerdatasourcefailed",{error:t,layer:e,map:n.map})}))}else e.dataSource&&"REST_MAP"===e.dataSource.type&&e.dataSource.url?n._queryFeatureBySQL(e.dataSource.url,e.dataSource.layerName,(function(t){var r=t&&t.result.recordsets,o=r&&r[0],s=o.fields;if(o&&s){var u=[];for(var l in s){var c=s[l];0===c.indexOf("Sm")&&"SmID"!==c||u.push(c)}n._getFeatures(u,e,(function(t){n._addLayer(e,t,i),n.layerAdded++,n._sendMapToUser(n.layerAdded,a)}),(function(t){n.layerAdded++,n.fire("getlayerdatasourcefailed",{error:t,layer:e,map:n.map})}))}}),(function(t){n.fire("getlayerdatasourcefailed",{error:t,layer:e,map:n.map})}),"smid=1"):"DATAFLOW_POINT_TRACK"!==e.layerType&&"DATAFLOW_HEAT"!==e.layerType||n._getDataflowInfo(e,(function(){n._addLayer(e,null,i),n.layerAdded++,n._sendMapToUser(n.layerAdded,a)}),(function(e){n.layerAdded++;// TODO fire faild
- }))}),this)}
- /**
- * @private
- * @function WebMapViewModel.prototype._getFeatures
- */},{key:"_getFeatures",value:function(e,t,r,n){var a=this,i=t.dataSource,o=t.projection;this._queryFeatureBySQL(i.url,i.layerName,(function(e){var t=e.result.recordsets[0].features.features,n=a._parseGeoJsonData2Feature({allDatas:{features:t},fileCode:o,featureProjection:a.baseProjection});r(n)}),(function(e){n(e)}),null,e)}
- /**
- * @private
- * @function WebMapViewModel.prototype._addLayer
- * @description 将单个图层添加到地图上。
- * @param layerInfo 某个图层的图层信息
- * @param {Array.<GeoJSON>} features - feature。
- */},{key:"_addLayer",value:function(e,t,r){var n=e.layerType;e.layerID=n+"-"+e.name+"-"+r,e.visible=e.visible?"visible":"none",// mbgl 目前不能处理 geojson 复杂面情况
- // mbgl isssue https://github.com/mapbox/mapbox-gl-js/issues/7023
- t&&t[0]&&"Polygon"===t[0].geometry.type&&(t=(0,d.handleMultyPolygon)(t)),e.style&&e.filterCondition&&"RANGE"!==n&&"UNIQUE"!==n&&"RANK_SYMBOL"!==n&&(t=this._getFiterFeatures(e.filterCondition,t)),t&&e.projection&&"EPSG:4326"!==e.projection&&this._transformFeatures(t),"VECTOR"===n?"POINT"===e.featureType?"SYMBOL_POINT"===e.style.type?this._createSymbolLayer(e,t):this._createGraphicLayer(e,t):// 线和面
- this._createVectorLayer(e,t):"UNIQUE"===n?this._createUniqueLayer(e,t):"RANGE"===n?this._createRangeLayer(e,t):"HEAT"===n?this._createHeatLayer(e,t):"MARKER"===n?this._createMarkerLayer(e,t):"MIGRATION"===e.layerType?this._createMigrationLayer(e,t):"RANK_SYMBOL"===e.layerType?this._createRankSymbolLayer(e,t):"DATAFLOW_POINT_TRACK"!==e.layerType&&"DATAFLOW_HEAT"!==e.layerType||this._createDataflowLayer(e),e.labelStyle&&e.labelStyle.labelField&&"DATAFLOW_POINT_TRACK"!==e.layerType&&// 存在标签专题图
- this._addLabelLayer(e,t)}},{key:"_createDataflowLayer",value:function(e){var t=new l.default.supermap.DataFlowService(e.wsUrl).initSubscribe();this._handleDataflowFeaturesCallback=this._handleDataflowFeatures.bind(this,e),t.on("messageSucceeded",this._handleDataflowFeaturesCallback),this._dataflowService=t}},{key:"_handleDataflowFeatures",value:function(e,t){var r=t.data&&JSON.parse(t.data);// this._transformFeatures([features]); // TODO 坐标系
- if(this.fire("dataflowfeatureupdated",{features:r,identifyField:e.identifyField,layerID:e.layerID}),e.filterCondition){//过滤条件
- var n="select * from json where ("+this._replaceFilterCharacter(e.filterCondition)+")",a=window.jsonsql.query(n,{attributes:r&&r.properties});a&&a.length>0&&this._addDataflowLayer(e,r)}else this._addDataflowLayer(e,r)}},{key:"_getDataFlowRotateStyle",value:function(e,t,r){var n=["match",["get",r]];return e.forEach((function(e){var a;if((a=void 0!==t&&"\u672a\u8bbe\u7f6e"!==t&&"None"!==t?e.properties[t]:0)>360||a<0)return null;// @ts-ignore
- n.push(e.properties[r],parseInt(a))})),// @ts-ignore
- n.push(0),n}},{key:"_addDataflowLayer",value:function(e,t){var r=e.layerID;if("DATAFLOW_HEAT"===e.layerType)this.map.getSource(r)?this._updateDataFlowFeature(r,t,e):this._createHeatLayer(e,[t]);else{var n=e.pointStyle;if(e.style=n,this.map.getSource(r))this._updateDataFlowFeature(r,t,e,"point");else{var a=this._getDataFlowRotateStyle(t?[t]:[],e.directionField,e.identifyField);["BASIC_POINT","SVG_POINT","IMAGE_POINT"].includes(n.type)?this._createGraphicLayer(e,[t],null,a):this._createSymbolLayer(e,[t],null,a)}if(e.labelStyle&&e.visible&&(this.map.getSource(r+"label")?this._updateDataFlowFeature(r+"label",t,e):this._addLabelLayer(e,[t])),e.lineStyle&&e.visible)if(this.map.getSource(r+"-line"))this._updateDataFlowFeature(r+"-line",t,e,"line");else{var i=t&&t.geometry.coordinates||[],o={type:"Feature",properties:t&&t.properties,geometry:{type:"LineString",coordinates:[i]}};this._createVectorLayer({style:e.lineStyle,featureType:"LINE",visible:"visible",layerID:r+"-line"},[o])}}}},{key:"_updateDataFlowFeature",value:function(e,t,r,n){var a=r.identifyField,i=r.maxPointCount,o=r.directionField,s=(0,w.default)(this.map.getSource(e)._data.features),u=!1;// @ts-ignore
- if(s.map((function(e,r){if(t&&e.properties[a]===t.properties[a])if(u=!0,"line"===n){var o=e.geometry.coordinates;o.push(t.geometry.coordinates),i&&o.length>i&&o.splice(0,o.length-i),s[r].geometry.coordinates=o}else s[r]=t})),u||("line"===n?s.push({type:"Feature",properties:t.properties,geometry:{type:"LineString",coordinates:[t.geometry.coordinates]}}):s.push(t)),// @ts-ignore
- this.map.getSource(e).setData({type:"FeatureCollection",features:s}),"point"===n){var l=r.pointStyle.type,c=this._getDataFlowRotateStyle(s,o,a);["SVG_POINT","IMAGE_POINT"].includes(l)?this.map.setLayoutProperty(e,"icon-rotate",c):"SYMBOL_POINT"===l&&this.map.setLayoutProperty(e,"text-rotate",c)}}},{key:"_getDataflowInfo",value:function(e,t,r){var n,a=e.url,i="".concat(a,".json");e.credential&&e.credential.token&&(n=e.credential.token,i+="?token=".concat(n)),SuperMap.FetchRequest.get(i).then((function(e){return e.json()})).then((function(n){n&&n.featureMetaData?(e.featureType=n.featureMetaData.featureType.toUpperCase(),e.dataSource={dataTypes:{}},n.featureMetaData.fieldInfos&&n.featureMetaData.fieldInfos.length>0&&n.featureMetaData.fieldInfos.forEach((function(t){var r=t.name.trim();"TEXT"===t.type?e.dataSource.dataTypes[r]="STRING":["DOUBLE","INT","FLOAT","LONG","SHORT"].includes(t.type)?e.dataSource.dataTypes[r]="NUMBER":e.dataSource.dataTypes[r]="UNKNOWN"})),e.wsUrl=n.urls[0].url,e.name=n.urls[0].url.split("iserver/services/")[1].split("/dataflow")[0],t())://失败也要到成功会调函数中,否则不会继续执行
- r()})).catch((function(){r()}))}},{key:"_createMigrationLayer",value:function(e,t){window.echarts=y.default;var r=this._getFeatureProperties(t),n=this._createLinesData(e,r),a=this._createPointsData(n,e,r),i=this._createOptions(e,n,a),o=new m.default(this.map);o.chart.setOption(i),this.echartslayer.push(o)}},{key:"_createOptions",value:function(e,t,r){var n,a=this._createLineSeries(e,t);if(r&&r.length){var i=this._createPointSeries(e,r);n=a.concat(i)}else n=a.slice();return{GLMap:{roam:!0},// geo: {
- // map: 'GLMap',
- // label: {
- // emphasis: {
- // show: false
- // }
- // },
- // roam: true,
- // itemStyle: {
- // normal: {
- // areaColor: '#323c48',
- // borderColor: '#404a59'
- // },
- // emphasis: {
- // areaColor: '#2a333d'
- // }
- // }
- // },
- series:n}}},{key:"_createPointSeries",value:function(e,t){var r=e.lineSetting,n=e.animationSetting,a=e.labelSetting,i=[{name:"point-series",coordinateSystem:"GLMap",zlevel:2,label:{normal:{show:a.show,position:"right",formatter:"{b}",color:a.color,fontFamily:a.fontFamily}},itemStyle:{normal:{color:r.color||a.color}},data:t}];return n.show?(// 开启动画
- // @ts-ignore
- i[0].type="effectScatter",// @ts-ignore
- i[0].rippleEffect={brushType:"stroke"}):// 关闭动画
- // @ts-ignore
- i[0].type="scatter",i}},{key:"_createLineSeries",value:function(e,t){var r=e.lineSetting,n=e.animationSetting,a=[// 轨迹线样式
- {name:"line-series",coordinateSystem:"GLMap",type:"lines",zlevel:1,effect:{show:n.show,constantSpeed:n.constantSpeed,trailLength:0,symbol:n.symbol,symbolSize:n.symbolSize},lineStyle:{normal:{color:r.color,type:r.type,width:r.width,opacity:r.opacity,curveness:r.curveness}},data:t}];return t.length>=1e3&&(// @ts-ignore
- a[0].large=!0,// @ts-ignore
- a[0].largeThreshold=100,// @ts-ignore
- a[0].blendMode="lighter"),a}},{key:"_createLinesData",value:function(e,t){var r=[];if(t&&t.length){// 重新获取数据
- var n,a,i=e.from,o=e.to;if("XY_FIELD"===i.type&&i.xField&&i.yField&&o.xField&&o.yField)t.forEach((function(e){var t=e[i.xField],s=e[i.yField],u=e[o.xField],l=e[o.yField];t&&s&&u&&l&&(n=[e[i.xField],e[i.yField]],a=[e[o.xField],e[o.yField]],r.push({coords:[n,a]}))}));else if("PLACE_FIELD"===i.type&&i.field&&o.field){var s=v.default.concat(g.default);t.forEach((function(e){var t=e[i.field],u=e[o.field];n=s.find((function(e){return l.default.supermap.Util.isMatchAdministrativeName(e.name,t)})),a=s.find((function(e){return l.default.supermap.Util.isMatchAdministrativeName(e.name,u)})),n&&a&&r.push({coords:[n.coord,a.coord]})}))}}return r}},{key:"_createPointsData",value:function(e,t,r){var n=[],a=t.labelSetting;// 标签隐藏则直接返回
- if(!a.show||!e.length)return n;var i=[],o=[];return e.forEach((function(e,t){var n=e.coords,s=n[0],u=n[1],l=r[t][a.from],c=r[t][a.to];// 起始字段去重
- !i.find((function(e){return e.value[0]===s[0]&&e.value[1]===s[1]}))&&i.push({name:l,value:s}),!o.find((function(e){return e.value[0]===u[0]&&e.value[1]===u[1]}))&&o.push({name:c,value:u})})),n=i.concat(o)}},{key:"_createRankSymbolLayer",value:function(e,t){var r=e.themeSetting.themeField,n=e.style,a=e.featureType,i=this._createRankStyleSource(e,t,e.featureType).styleGroups;t=this._getFiterFeatures(e.filterCondition,t);// 获取 expression
- var o=["match",["get","index"]];if(t.forEach((function(e){var t=parseFloat(e.properties[r]);if(i)for(var a=0;a<i.length;a++)if(i[a].start<=t&&t<i[a].end){var s="SYMBOL_POINT"===n.type||"IMAGE_POINT"===n.type?"SYMBOL_POINT"===n.type?2*i[a].radius:2*Number.parseFloat((i[a].radius/n.imageInfo.size.h).toFixed(2)):i[a].radius;o.push(e.properties.index,s)}// @ts-ignore
- !t&&o.push(e.properties.index,1)}),this),// @ts-ignore
- o.push(1),"SYMBOL_POINT"===n.type)this._createSymbolLayer(e,t,o);else if("IMAGE_POINT"===n.type)this._createGraphicLayer(e,t,o);else{var s={type:"geojson",data:{type:"FeatureCollection",features:t}},u={layout:{visibility:e.visible}};// 获取样式
- u.style=this._transformStyleToMapBoxGl(n,a,o,"circle-radius");var l=e.layerID;this._addOverlayToMap(a,s,l,u)}}},{key:"_createRankStyleSource",value:function(e,t,r){var n=e.themeSetting.themeField,a=this._getRankStyleGroup(n,t,e,r);// @ts-ignore
- return!!a&&{parameters:e,styleGroups:a}}},{key:"_getRankStyleGroup",value:function(e,t,r,n){// 找出所有的单值
- var a=[],i=[],o=r.style,s=r.themeSetting,u=s.segmentMethod,c=s.segmentCount,d=s.customSettings,f=r.themeSetting.minRadius,h=r.themeSetting.maxRadius;t.forEach((function(t){var r=t.properties[e];// 过滤掉空值和非数值
- null!=r&&l.default.supermap.Util.isNumber(r)&&a.push(Number(r))}));try{i=SuperMap.ArrayStatistic.getArraySegments(a,u,c)}catch(M){console.error(M)}// 处理自定义 分段
- for(var p=0;p<c;p++)if(p in d){var y=d[p].segment.start,m=d[p].segment.end;null!=y&&(i[p]=y),null!=m&&(i[p+1]=m)}//生成styleGroup
- var v=[];if(i&&i.length){for(var// 半径增量
- g,b,w=i.length,S=(h-f)/(w-1),L=Number(((h+f)/2).toFixed(2)),E=0;E<w-1;E++)// 这里特殊处理以下分段值相同的情况(即所有字段值相同)
- L=(g=Number(i[E].toFixed(2)))===(b=Number(i[E+1].toFixed(2)))?L:f+Math.round(S*E),// 最后一个分段时将end+0.01,避免取不到最大值
- b=E===w-2?b+.01:b,// 处理自定义 半径
- L=d[E]&&d[E].radius?d[E].radius:L,o.radius=L,v.push({radius:L,start:g,end:b});return v}return!1}
- /**
- * @private
- * @function WebMapViewModel.prototype._addLabelLayer
- * @description 添加标签图层。
- * @param layerInfo 某个图层的图层信息。
- * @param {Array.<GeoJSON>} features - feature。
- */},{key:"_addLabelLayer",value:function(e,t){var r=e.labelStyle;this.map.addLayer({id:e.layerID+"label",type:"symbol",source:{type:"geojson",data:{type:"FeatureCollection",features:t}},paint:{"text-color":r.fill,"text-halo-color":"rgba(255,255,255,0.8)","text-halo-width":parseFloat(r.fontSize)||12},layout:{"text-field":"{".concat(r.labelField,"}"),"text-size":parseFloat(r.fontSize)||12,"text-offset":r.offsetX?[r.offsetX/10||0,r.offsetY/10||0]:[0,-2.5],"text-font":["DIN Offc Pro Italic","Arial Unicode MS Regular"],visibility:e.visible}})}
- /**
- * @private
- * @function WebMapViewModel.prototype._createSymbolLayer
- * @description 添加 symbol 图层。
- * @param layerInfo 某个图层的图层信息。
- * @param {Array.<GeoJSON>} features - feature。
- */},{key:"_createSymbolLayer",value:function(e,t,r,n){document.getElementById("".concat(this.target)).classList.add("supermapol-icons-map");var a=e.style,i=e.style.unicode,o=String.fromCharCode(parseInt(i.replace(/^&#x/,""),16)),s=e.layerID;this.map.addSource(s,{type:"geojson",data:{type:"FeatureCollection",features:[]}}),this.map.addLayer({id:s,type:"symbol",source:s,paint:{"text-color":a.fillColor},layout:{"text-field":o,"text-size":r||a.fontSize&&parseFloat(a.fontSize)||12,"text-font":["DIN Offc Pro Italic","Arial Unicode MS Regular"],"text-rotate":n||0,visibility:e.visible}}),// @ts-ignore
- this.map.getSource(s).setData({type:"FeatureCollection",features:t})}
- /**
- * @private
- * @function WebMapViewModel.prototype._createGraphicLayer
- * @description 创建 Graphic 图层。
- * @param {Object} layerInfo - map 信息。
- * @param {Array} features - 属性 信息。
- */},{key:"_createGraphicLayer",value:function(e,t,r,n){var a=this,i=e.style,o=e.layerID,s={type:"geojson",data:{type:"FeatureCollection",features:t}};if("IMAGE_POINT"===i.type){var u=i.imageInfo;this.map.loadImage(u.url,(function(t,u){t&&console.log(t);var l=2*Number.parseFloat((i.radius/u.height).toFixed(2));a.map.addImage("imageIcon",u),a.map.addLayer({id:o,type:"symbol",source:s,layout:{"icon-image":"imageIcon","icon-size":r||l,visibility:e.visible,"icon-rotate":n||0}})}))}else if("SVG_POINT"===i.type){var l=i.url;this._svgDiv||(this._svgDiv=document.createElement("div"),document.body.appendChild(this._svgDiv)),this._getCanvasFromSVG(l,this._svgDiv,(function(t){var u=t.toDataURL("img/png");u&&a.map.loadImage(u,(function(u,l){u&&console.log(u);var c=Number.parseFloat((i.radius/t.width).toFixed(2));a.map.addImage("imageIcon",l),a.map.addLayer({id:o,type:"symbol",source:s,layout:{"icon-image":"imageIcon","icon-size":r||c,visibility:e.visible,"icon-rotate":n||0}})}))}))}else{var c={style:this._transformStyleToMapBoxGl(i,e.featureType),layout:{visibility:e.visible}};this._addOverlayToMap("POINT",s,o,c)}}
- /**
- * @private
- * @function WebMapViewModel.prototype._createUniqueLayer
- * @description 创建单值图层。
- * @param layerInfo 某个图层的图层信息
- * @param features 图层上的 feature
- */},{key:"_createUniqueLayer",value:function(e,t){var r=this._getUniqueStyleGroup(e,t);t=this._getFiterFeatures(e.filterCondition,t);var n=e.style,a=e.themeSetting.themeField;Object.keys(t[0].properties).forEach((function(e){e.toLocaleUpperCase()===a.toLocaleUpperCase()&&(a=e)}));var i=e.featureType,o=["match",["get","index"]],s=e.layerID;t.forEach((function(e){r.forEach((function(t){t.value===e.properties[a]&&o.push(e.properties.index,t.color)}))})),o.push("#ffffff"),// 图例相关
- this._initLegendConfigInfo(e,r);var u=e.visible,l={style:this._transformStyleToMapBoxGl(n,i,o),layout:{visibility:u}},c={type:"geojson",data:{type:"FeatureCollection",features:t}};this._addOverlayToMap(i,c,s,l),"POLYGON"===i&&n.strokeColor&&this._addStrokeLineForPoly(n,c,s+"-strokeLine",u)}
- /**
- * @private
- * @function WebMapViewModel.prototype._getUniqueStyleGroup
- * @description 获取单值的目标字段与颜色的对应数组。
- * @param layerInfo 某个图层的图层信息
- * @param features 图层上的 feature
- */},{key:"_getUniqueStyleGroup",value:function(e,t){// 找出所有的单值
- var r=e.featureType,n=e.style,a=e.themeSetting,i=a.themeField,o=a.colors;Object.keys(t[0].properties).forEach((function(e){e.toLocaleUpperCase()===i.toLocaleUpperCase()&&(i=e)}));var s=[],u=a.customSettings;for(var l in t){var c=t[l].properties[i],d=!1;for(var f in s)if(s[f]===c){d=!0;break}d||s.push(c)}// 获取一定量的颜色
- var h=o;h=SuperMap.ColorsPickerUtil.getGradientColors(h,s.length);// 生成styleGroup
- var p=[];return s.forEach((function(e,t){var a=h[t];e in u&&(a=u[e]),"LINE"===r?n.strokeColor=a:n.fillColor=a,p.push({color:a,value:e})}),this),p}
- /**
- * @private
- * @function WebMapViewModel.prototype._getWMTSUrl
- * @description 根据传入的配置信息拼接wmts url。
- * @param options 配置对象
- */},{key:"_getWMTSUrl",value:function(e){var t={service:"WMTS",request:"GetTile",version:"1.0.0",style:"default",layer:e.layer,tilematrixSet:e.tileMatrixSet,format:"image/png"},r=e.url;return r+=this._getParamString(t,r)+"&tilematrix={z}&tilerow={y}&tilecol={x}"}
- /**
- * @private
- * @function WebMapViewModel.prototype._createMarkerLayer
- * @description 添加标记图层。
- * @param {Array.<GeoJSON>} features - feature。
- */},{key:"_createMarkerLayer",value:function(e,t){var r=this;t&&t.forEach((function(t){var n=t.geometry.type.toUpperCase(),a=t.dv_v5_markerStyle;"POINT"===n&&a.text&&(// 说明是文字的feature类型
- n="TEXT");var i=r._setFeatureInfo(t);t.properties.useStyle=a,t.properties.featureInfo=i,"POINT"===n&&a.src&&-1===a.src.indexOf("http://")&&-1===a.src.indexOf("https://")&&(// 说明地址不完整
- a.src=r.serverUrl+a.src);var o={type:"geojson",data:t},s=t.properties.index,u=n+"-"+s;// point-line-polygon-marker
- if(// image-marker
- "POINT"===n&&a.src&&a.src.indexOf("svg")<=-1&&r.map.loadImage(a.src,(function(t,n){t&&console.log(t),r.map.addImage(s+"",n),r.map.addLayer({id:u,type:"symbol",source:o,layout:{"icon-image":a.src,"icon-size":a.scale,visibility:e.visible}})})),// svg-marker
- "POINT"===n&&a.src&&a.src.indexOf("svg")>-1&&(r._svgDiv||(r._svgDiv=document.createElement("div"),document.body.appendChild(r._svgDiv)),r._getCanvasFromSVG(a.src,r._svgDiv,(function(t){var n=t.toDataURL("img/png");n&&r.map.loadImage(n,(function(t,n){t&&console.log(t),r.map.addImage(s+"",n),r.map.addLayer({id:u,type:"symbol",source:o,layout:{"icon-image":s+"","icon-size":a.scale,visibility:e.visible}}),console.log(r.map.getStyle())}))}))),!a.src){var l={layout:{}};"LINESTRING"===n&&a.lineCap&&(n="LINE",l.layout={"line-cap":a.lineCap});var c=e.visible;l.layout.visibility=c,// get style
- l.style=r._transformStyleToMapBoxGl(a,n),r._addOverlayToMap(n,o,u,l),// 若面有边框
- "POLYGON"===n&&a.strokeColor&&r._addStrokeLineForPoly(a,o,u+"-strokeLine",c)}}),this)}
- /**
- * @private
- * @function WebMapViewModel.prototype._setFeatureInfo
- * @description 设置 feature 信息。
- * @param {Array.<GeoJSON>} features - feature。
- */},{key:"_setFeatureInfo",value:function(e){var t,r=e.dv_v5_markerInfo;if(!r||!r.dataViz_title)// featureInfo = this.getDefaultAttribute();
- return r;// 有featureInfo信息就不需要再添加
- t=r;var n=e.properties;for(var a in t)n[a]&&(t[a]=n[a],delete n[a]);return t}
- /**
- * @private
- * @function WebMapViewModel.prototype._createHeatLayer
- * @description 添加热力图。
- * @param {Array.<GeoJSON>} features - feature。
- */},{key:"_createHeatLayer",value:function(e,t){var r=e.themeSetting,n={gradient:r.colors.slice(),radius:parseInt(r.radius)},a=r.customSettings;for(var i in a)n.gradient[i]=a[i];// 权重字段恢复
- r.weight&&this._changeWeight(t,r.weight);var o=["interpolate",["linear"],["heatmap-density"]],s=n.gradient.length,u=parseFloat((1/s).toFixed(2));n.gradient.forEach((function(e,t){o.push(t*u),0===t&&(e=l.default.supermap.Util.hexToRgba(e,0)),o.push(e)})),// 图例相关
- this._initLegendConfigInfo(e,n.gradient);var c={"heatmap-color":o,"heatmap-radius":r.radius+15,"heatmap-intensity":{base:1,stops:[[0,.8],[22,1]]}};if(t[0].weight&&t.length>=4){var d=[];t.forEach((function(e){d.push(e.weight)}));var f=SuperMap.ArrayStatistic.getMax(d),h=SuperMap.ArrayStatistic.getMin(d);c["heatmap-weight"]=["interpolate",["linear"],["get","weight"],h,0,f,1]}this.map.addLayer({id:e.layerID,type:"heatmap",source:{type:"geojson",data:{type:"FeatureCollection",features:t}},paint:c})}
- /**
- * @private
- * @function WebMapViewModel.prototype._changeWeight
- * @description 改变当前权重字段
- * @param {Array.<GeoJSON>} features - feature。
- * @param {String} weightFeild - 权重字段
- */},{key:"_changeWeight",value:function(e,t){this._fieldMaxValue={},this._getMaxValue(e,t);var r=this._fieldMaxValue[t];e.forEach((function(e){var n=e.properties[t];e.weight=n/r}))}
- /**
- * @private
- * @function WebMapViewModel.prototype._getMaxValue
- * @description 获取当前字段对应的最大值,用于计算权重。
- * @param {Array.<GeoJSON>} features - feature。
- * @param {String} weightFeild - 权重字段
- */},{key:"_getMaxValue",value:function(e,t){var r,n=[],a=t;this._fieldMaxValue[a]||(e.forEach((function(e){// 收集当前权重字段对应的所有值
- (r=e.properties)&&parseFloat(r[a])&&n.push(parseFloat(r[a]))})),this._fieldMaxValue[a]=SuperMap.ArrayStatistic.getArrayStatistic(n,"Maximum"))}
- /**
- * @private
- * @function WebMapViewModel.prototype._createRangeLayer
- * @description 添加分段专题图。
- * @param {Array.<GeoJSON>} features - feature。
- */},{key:"_createRangeLayer",value:function(e,t){var r=e.themeSetting.themeField,n=e.style,a=e.featureType,i=this._getRangeStyleGroup(e,t),o={type:"geojson",data:{type:"FeatureCollection",features:t=this._getFiterFeatures(e.filterCondition,t)}},s=["match",["get","index"]];t.forEach((function(e){var t=parseFloat(e.properties[r]);if(i)for(var n=0;n<i.length;n++)i[n].start<=t&&t<i[n].end&&s.push(e.properties.index,i[n].color);!t&&s.push(e.properties.index,"rgba(0, 0, 0, 0)")}),this),s.push("rgba(0, 0, 0, 0)"),// 图例处理
- this._initLegendConfigInfo(e,i);// 获取样式
- var u={layout:{}};"LINE"===a&&n.lineCap&&(u.layout={"line-cap":n.lineCap});var l=e.visible;u.layout.visibility=l,u.style=this._transformStyleToMapBoxGl(n,a,s);// 添加图层
- var c=e.layerID;this._addOverlayToMap(a,o,c,u),// 如果面有边框
- "POLYGON"===a&&n.strokeColor&&this._addStrokeLineForPoly(n,o,c+"-strokeline",l)}
- /**
- * @private
- * @function WebMapViewModel.prototype._getFiterFeatures
- * @description 通过过滤条件查询满足的 feature。
- * @param {String} filterCondition - 过滤条件。
- * @param {array} allFeatures - 图层上的 feature 集合
- */},{key:"_getFiterFeatures",value:function(e,t){if(!e||!t)return t;for(var r="select * from json where ("+this._replaceFilterCharacter(e)+")",n=[],a=0;a<t.length;a++){var i=t[a],o=void 0;try{o=window.jsonsql.query(r,{properties:i.properties})}catch(s){// 必须把要过滤得内容封装成一个对象,主要是处理jsonsql(line : 62)中由于with语句遍历对象造成的问题
- continue}o&&o.length>0&&// afterFilterFeatureIdx.push(i);
- n.push(i)}return n}
- /**
- * @private
- * @function WebMapViewModel.prototype._replaceFilterCharacter
- * @description 获取过滤字符串。
- * @param {String} filterString - 过滤条件。
- */},{key:"_replaceFilterCharacter",value:function(e){return e=e.replace(/=/g,"==").replace(/AND|and/g,"&&").replace(/or|OR/g,"||").replace(/<==/g,"<=").replace(/>==/g,">=")}
- /**
- * @private
- * @function WebMapViewModel.prototype._getRangeStyleGroup
- * @description 获取分段样式。
- * @param {Array.<GeoJSON>} features - feature。
- */},{key:"_getRangeStyleGroup",value:function(e,t){// 找出分段值
- var r,n=e.featureType,a=e.style,i=[],o=e.themeSetting,s=o.customSettings,u=o.themeField,c=o.segmentCount;t.forEach((function(e){(r=e.properties||e.get("Properties"))?// 过滤掉非数值的数据
- r[u]&&l.default.supermap.Util.isNumber(r[u])&&i.push(parseFloat(r[u])):e.get(u)&&l.default.supermap.Util.isNumber(e.get(u))&&e.get(u)&&i.push(parseFloat(e.get(u)))}),this);var d=SuperMap.ArrayStatistic.getArraySegments(i,o.segmentMethod,c);if(d){var f=c;r&&d[0]===d[r.length-1]&&(f=1,d.length=2);// 保留两位有效数
- for(var h=0;h<d.length;h++){var p=d[h];p=0===h?Math.floor(100*p)/100:Math.ceil(100*p)/100+.1,// 加0.1 解决最大值没有样式问题
- d[h]=Number(p.toFixed(2))}// 获取一定量的颜色
- // curentColors = SuperMap.ColorsPickerUtil.getGradientColors(curentColors, itemNum, 'RANGE');
- for(var y=o.colors,m=0;m<f;m++)m in s&&(s[m].segment.start&&(d[m]=s[m].segment.start),s[m].segment.end&&(d[m+1]=s[m].segment.end));// 生成styleGroup
- for(var v=[],g=0;g<f;g++){var b=y[g];g in s&&s[g].color&&(b=s[g].color),"LINE"===n?a.strokeColor=b:a.fillColor=b;var w=d[g],S=d[g+1],L=JSON.parse(JSON.stringify(a));v.push({style:L,color:b,start:w,end:S})}return v}}
- /**
- * @private
- * @function WebMapViewModel.prototype._formatGeoJSON
- * @description 格式 GeoJSON。
- * @param {GeoJSON} data - GeoJSON 数据。
- */},{key:"_formatGeoJSON",value:function(e){var t=e.features;return t.forEach((function(e,t){e.properties.index=t})),t}
- /**
- * @private
- * @function WebMapViewModel.prototype._excelData2Feature将
- * @description csv 和 xls 文件内容转换成 geojson
- * @param content 文件内容
- * @param layerInfo 图层信息
- * @returns {Array} feature的数组集合
- */},{key:"_excelData2Feature",value:function(e){for(var t=e.colTitles,r=-1,n=-1,a=0,i=t.length// 位置属性处理
- ;a<i;a++)(0,f.isXField)(t[a])&&(r=a),(0,f.isYField)(t[a])&&(n=a);// feature 构建后期支持坐标系 4326/3857
- for(var o=[],s=0,u=e.rows.length;s<u;s++){var l=e.rows[s],c=Number(l[r]),d=Number(l[n]),h={};for(var p in e.colTitles){h[e.colTitles[p]]=e.rows[s][p]}h.index=s+"";// 目前csv 只支持处理点,所以先生成点类型的 geojson
- var y={type:"Feature",geometry:{type:"Point",coordinates:[c,d]},properties:h};o.push(y)}return o}
- /**
- * @private
- * @function WebMapViewModel.prototype._sendMapToUser
- * @description 返回最终的 map 对象给用户,供他们操作使用。
- * @param count
- * @param layersLen
- */},{key:"_sendMapToUser",value:function(e,t){if(e===t){for(var r in
- /**
- * @event WebMapViewModel#addlayerssucceeded
- * @description 添加图层成功。
- * @property {mapboxglTypes.Map} map - MapBoxGL Map 对象。
- * @property {Object} mapparams - 地图信息。
- * @property {string} mapParams.title - 地图标题。
- * @property {string} mapParams.description - 地图描述。
- * @property {Array.<Object>} layers - 地图上所有的图层对象。
- */
- this._sourceListModel=new c.default({map:this.map}),this._legendList)this._sourceListModel.addSourceStyle(r,this._legendList[r]);for(var n=this._layers.length-2;n>-1;n--){var a=this._layers[n].layerID,i=this._layers[n+1].layerID;this.map.moveLayer(a,i)}this.fire("addlayerssucceeded",{map:this.map,mapparams:this.mapParams,layers:this._layers})}}
- /**
- * @function WebMapViewModel.prototype._unproject
- * @private
- * @description 墨卡托转经纬度。
- * @param {} point - 待转换的点。
- */},{key:"_unproject",value:function(e){for(var t=180/Math.PI,r=6378137,n=Math.exp(-e[1]/r),a=Math.PI/2-2*Math.atan(n),i=0,o=.1;i<15&&Math.abs(o)>1e-7;i++)1,a+=o=Math.PI/2-2*Math.atan(1*n)-a;return[e[0]*t/r,a*t]}
- /**
- * @function WebMapViewModel.prototype._getParamString
- * @private
- * @param {Object} obj - 待添加的参数。
- * @param {string} existingUrl - 待添加参数的 url。
- * @param {Boolean} [uppercase] - 参数是否转换为大写。
- */},{key:"_getParamString",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=[];for(var a in e)n.push((r?a.toUpperCase():a)+"="+e[a]);return(t&&-1!==t.indexOf("?")?"&":"?")+n.join("&")}
- /**
- * @private
- * @function WebMapViewModel.prototype._transformStyleToMapBoxGl
- * @description 根据图层类型将 layerInfo 中的 style 属性格式转换为 mapboxglTypes 中的 style 格式。
- * @param {Object} style - layerInfo中的style属性
- * @param {String} type - 图层类型
- * @param {Array} [expression] - 存储颜色值得表达式
- */},{key:"_transformStyleToMapBoxGl",value:function(e,t,r,n){var a={};"POINT"!==e.type&&"BASIC_POINT"!==e.type&&"POINT"!==t||"LINE"===t?["LINE","LINESTRING","MULTILINESTRING"].includes(t)?a={strokeWidth:"line-width",strokeColor:"line-color",strokeOpacity:"line-opacity"}:["REGION","POLYGON","MULTIPOLYGON"].includes(t)&&(a={fillColor:"fill-color",fillOpacity:"fill-opacity",strokeColor:"fill-outline-color"}):a={fillColor:"circle-color",strokeWidth:"circle-stroke-width",fillOpacity:"circle-opacity",radius:"circle-radius",strokeColor:"circle-stroke-color",strokeOpacity:"circle-stroke-opacity"};var i={};for(var o in e)a[o]&&(i[a[o]]=e[o]);return r&&(n?i[n]=r:i["circle-color"]?i["circle-color"]=r:i["line-color"]?i["line-color"]=r:i["fill-color"]=r),e.lineDash&&"solid"!==e.lineDash&&"LINE"===t&&(i["line-dasharray"]=this._dashStyle(e)),i}
- /**
- * @private
- * @function WebMapViewModel.prototype.._dashStyle
- * @description 符号样式。
- * @param {Object} style - 样式参数。
- * @param {number} widthFactor - 宽度系数。
- */},{key:"_dashStyle",value:function(e){if(!e)return[];// var w = style.strokeWidth * widthFactor;
- var t=e.strokeDashstyle||e.lineDash;switch(t){case"solid":return[];case"dot":return[1,4];case"dash":return[4,4];case"dashdot":return[4,4,1,4];case"longdash":return[8,4];case"longdashdot":return[8,4,1,4];default:return t?SuperMap.Util.isArray(t)?t:(t=SuperMap.String.trim(t).replace(/\s+/g,",")).replace(/\[|\]/gi,"").split(","):[]}}
- /**
- * @private
- * @description 将SVG转换成Canvas
- * @param svgUrl
- * @param divDom
- * @param callBack
- */},{key:"_getCanvasFromSVG",value:function(e,t,r){var n=this,a=document.createElement("canvas");// 一个图层对应一个canvas
- a.id="dataviz-canvas-"+l.default.supermap.Util.newGuid(8),a.style.display="none",t.appendChild(a);var i=window.canvg&&window.canvg.default?window.canvg.default:p.default;try{var o=a.getContext("2d");i.from(o,e,{ignoreMouse:!0,ignoreAnimation:!0,forceRedraw:function(){return!1}}).then((function(e){e.start(),n.canvgsV.push(e),a.width>300||a.height>300||r(a)}))}catch(s){console.log(s)}}},{key:"_stopCanvg",value:function(){this.canvgsV.forEach((function(e){return e.stop()})),this.canvgsV=[]}
- /**
- * @private
- * @function WebMapViewModel.prototype._addOverlayToMap
- * @description 添加基础矢量图层到 MAP
- * @param {Object} style - mabgl style
- * @param {String} type - 图层类型
- */},{key:"_addOverlayToMap",value:function(e,t,r,n){var a={POINT:"circle",LINE:"line",POLYGON:"fill"}[e];"circle"!==a&&"line"!==a&&"fill"!==a||this.map.addLayer({id:r,type:a,source:t,paint:n.style,layout:n.layout||{}})}},{key:"_addBaselayer",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:22,a={type:"raster",tiles:e,tileSize:256};this.map.addLayer({id:t,type:"raster",source:a,minzoom:r,maxzoom:n})}
- /**
- * @private
- * @function WebMapViewModel.prototype._addStrokeLineForPoly
- * @description 添加面的边框。
- * @param {Object} style - mabgl style
- */},{key:"_addStrokeLineForPoly",value:function(e,t,r,n){var a={style:this._transformStyleToMapBoxGl(e,"LINE"),layout:{visibility:n}};this._addOverlayToMap("LINE",t,r,a)}
- /**
- * @private
- * @function WebMapViewModel.prototype._parseGeoJsonData2Feature
- * @description 将从restData地址上获取的json转换成feature(从iserver中获取的json转换成feature)
- * @param {object} metaData - json内容
- */},{key:"_parseGeoJsonData2Feature",value:function(e){for(var t=e.allDatas.features,r=[],n=0,a=t.length;n<a;n++){var i=t[n],o=i.geometry.coordinates;"Point"===t[n].geometry.type&&t[n].properties&&(t[n].properties.lon=o[0],t[n].properties.lat=o[1]),i.properties.index=n+"",r.push(i)}return r}
- /**
- * @private
- * @function WebMapViewModel.prototype._getFeatureBySQL
- * @description 通过 sql 方式查询数据。
- */},{key:"_getFeatureBySQL",value:function(e,t,r,n){var a,i;a=new SuperMap.FilterParameter({name:t.join().replace(":","@"),attributeFilter:"SMID > 0"}),i=new SuperMap.GetFeaturesBySQLParameters({queryParameter:a,datasetNames:t,fromIndex:0,toIndex:-1,maxFeatures:-1,returnContent:!0});var o={eventListeners:{processCompleted:function(e){r&&r(e)},processFailed:function(e){n&&n(e)}}};new SuperMap.GetFeaturesBySQLService(e,o).processAsync(i)}
- /**
- * @private
- * @function WebMapViewModel.prototype._queryFeatureBySQL
- * @description 通过 sql 方式查询数据。
- */},{key:"_queryFeatureBySQL",value:function(e,t,r,n,a,i,o,s,u,c){var d=new SuperMap.FilterParameter({name:t,attributeFilter:a});i&&(d.fields=i);var f={queryParams:[d]};c&&(f.queryOption=SuperMap.QueryOption.ATTRIBUTE),s&&(f.startRecord=s),u&&(f.expectCount=u),o&&(f.prjCoordSys={epsgCode:o});var h=new SuperMap.QueryBySQLParameters(f);new l.default.supermap.QueryService(e).queryBySQL(h,(function(e){"processCompleted"===e.type?r(e):n(e)}))}},{key:"_initLegendConfigInfo",value:function(e,t){this._legendList[e.layerID]||(this._legendList[e.layerID]={layerType:e.layerType,featureType:e.featureType,layerId:e.layerID,themeField:"HEAT"===e.layerType?e.themeSetting.weight:e.themeSetting.themeField,styleGroup:t})}},{key:"_getFeatureProperties",value:function(e){var t=[];return e&&e.length&&e.forEach((function(e){var r=e.properties;r&&t.push(r)})),t}},{key:"_addVectorLayer",value:function(e,t,r){var n=this._getDataVectorTileStyle(r),a=this._transformStyleToMapBoxGl(n,r),i=e.url+"/tileFeature.mvt",o=l.default.CRS.get(this.baseProjection).getOrigin();i+="?&returnAttributes=true&width=512&height=512&x={x}&y={y}&scale={scale}&origin={x:".concat(o[0],",y:").concat(o[1],"}"),this.map.addLayer({id:(0,b.default)(t.name+"-"),// @ts-ignore
- type:n.mbglType,source:{type:"vector",tiles:[i]},"source-layer":"".concat(e.datasetName,"@").concat(e.datasourceName),paint:a,layout:{visibility:t.visible?"visible":"none"}})}},{key:"_isMvt",value:function(e,t){var r=this;return this._getDatasetsInfo(e,t).then((function(e){//判断是否和底图坐标系一直
- return e.epsgCode==r.baseProjection.split("EPSG:")[1]?SuperMap.FetchRequest.get("".concat(e.url,"/tilefeature.mvt")).then((function(e){return e.json()})).then((function(t){return e.isMvt=t.error&&400===t.error.code,e})).catch((function(){return e})):e}))}},{key:"_getDatasetsInfo",value:function(e,t){return this._getDatasources(e).then((function(r){//判断mvt服务是否可用
- var n="".concat(e,"/data/datasources/").concat(r,"/datasets/").concat(t);return SuperMap.FetchRequest.get(n).then((function(e){return e.json()})).then((function(e){return{epsgCode:e.datasetInfo.prjCoordSys.epsgCode,bounds:e.datasetInfo.bounds,datasourceName:r,datasetName:t,url:n}}))}))}},{key:"_getDataVectorTileStyle",value:function(e){var t={radius:8,//圆点半径
- fillColor:"#EE4D5A",//填充色
- fillOpacity:.9,strokeColor:"#ffffff",//边框颜色
- strokeWidth:1,strokeOpacity:1,lineDash:"solid",type:"BASIC_POINT",mbglType:"circle"};return["LINE","LINESTRING","MULTILINESTRING"].includes(e)?(t.strokeColor="#4CC8A3",t.strokeWidth=2,t.mbglType="line"):["REGION","POLYGON","MULTIPOLYGON"].includes(e)&&(t.fillColor="#826DBA",t.mbglType="fill"),t}},{key:"_transformFeatures",value:function(e){var t=this;e&&e.forEach((function(r,n){var a=r.geometry.type,i=r.geometry.coordinates;"LineString"===a?i.forEach((function(e,r){e=t._unproject(e),i[r]=e}),t):"Point"===a?(i=t._unproject(i),r.geometry.coordinates=i):"MultiPolygon"!==a&&"Polygon"!==a||i.forEach((function(e,r){var n="MultiPolygon"===a?e[0]:e;n.forEach((function(e,r){e=t._unproject(e),n[r]=e})),i[r]=e})),e[n]=r}),this)}}]),r}(l.default.Evented);t.default=M},
- /***/4831:
- /***/function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MAP_EVENT_NAMES=void 0;t.MAP_EVENT_NAMES=["onResize","onWebglcontextlost","onWebglcontextrestored","onRemove","onMovestart","onContextmenu","onDblclick","onClick","onTouchcancel","onTouchmove","onTouchend","onTouchstart","onDataloading","onMousemove","onMouseup","onMousedown","onSourcedataloading","onError","onData","onStyledata","onSourcedata","onMouseout","onStyledataloading","onMoveend","onMove","onRender","onZoom","onZoomstart","onZoomend","onBoxzoomstart","onBoxzoomcancel","onBoxzoomend","onRotate","onRotatestart","onRotateend","onDragend","onDrag","onDragstart","onPitch","onIdle"]},
- /***/5558:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i=n(r(5671)),o=n(r(3144)),s=n(r(9340)),u=n(r(8557)),l=n(r(8808)),c=n(r(3899)),d=n(r(9635)),f=n(r(7006)),h=(0,l.default)(d.default,f.default)(a=function(e){(0,s.default)(r,e);var t=(0,u.default)(r);function r(){return(0,i.default)(this,r),t.apply(this,arguments)}return(0,o.default)(r,[{key:"loaded",value:function(e){var t=this.props,r=t.type,n=t.source,a=t.layerId,i=t.minzoom,o=t.maxzoom,s=t.filter,u=t.layout,l=t.paint,c=t.metadata;if(e.getLayer(a))console.error('There is already a layer with the id "'.concat(a,'"'));else if("string"!==typeof n||e.getSource(n))if("background"===r||n){var d={id:a,type:r};n&&(d.source=n),void 0!==i&&(d.minzoom=i),void 0!==o&&(d.maxzoom=o),s&&(d.filter=s),u&&(d.layout=u),l&&(d.paint=l),c&&(d.metadata=c),this.props["source-layer"]&&(d["source-layer"]=this.props["source-layer"]),e.addLayer(d)}else console.error("Source is required unless type is background");else console.error('Source "'.concat(n,'" is not loaded'))}},{key:"removed",value:function(){}},{key:"render",value:function(){return null}}]),r}(c.default.Component))||a;t.default=h},
- /***/1193:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i,o=n(r(5671)),s=n(r(3144)),u=n(r(9340)),l=n(r(8557)),c=r(3899),d=n(r(2307)),f=n(r(9635)),h=n(r(3843)),p=n(r(7278)),y=n(r(2017)),m=n(r(6130)),v=n(r(970)),g=n(r(9041)),b=n(r(6889)),w=(0,f.default)((i=function(e){(0,u.default)(r,e);var t=(0,l.default)(r);function r(){return(0,o.default)(this,r),t.apply(this,arguments)}return(0,s.default)(r,[{key:"componentDidMount",value:function(){this._markersElement=[]}},{key:"componentDidUpdate",value:function(e){this.viewModel&&!(0,d.default)(e.features,this.props.features)&&(this._markersElement=[],this._getMarkerElement(),this.props.features&&this.viewModel.setFeatures(this.props.features,this._markersElement)),this.viewModel&&!(0,d.default)(e.type,this.props.type)&&(this._markersElement=[],this._getMarkerElement(),this.viewModel.setType(this._markersElement)),this.viewModel&&this.props.width&&e.width!==this.props.width&&this.marker&&this.marker.setMarkersWidth(this.props.width),this.viewModel&&this.props.height&&e.height!==this.props.height&&this.marker&&this.marker.setMarkersHeight&&this.marker.setMarkersHeight(this.props.height),this.viewModel&&this.props.textColor&&e.textColor!==this.props.textColor&&this.marker&&this.marker.setMarkersTextColor(this.props.textColor),this.viewModel&&this.props.textFontSize&&e.textFontSize!==this.props.textFontSize&&this.marker&&this.marker.setMarkersTextFontSize(this.props.textFontSize),this.viewModel&&this.props.colors&&this.props.colors.length&&this.props.colors.length>0&&!(0,d.default)(e.colors,this.props.colors)&&this.marker&&this.marker.setMarkersColors(this.props.colors),this.viewModel&&this.props.textField&&e.textField!==this.props.textField&&this.marker&&this.marker.setMarkersTextField(this.props.textField)}},{key:"componentWillUnmount",value:function(){this.viewModel&&this.viewModel.clearMarkerLayer()}},{key:"loaded",value:function(e){this.props.features&&this._getMarkerElement(),this.viewModel=new h.default(e,this.props.features,this._markersElement,this.props.fitBounds)}},{key:"_getMarkerElement",value:function(){this.setState({marker:null});var e=this.props,t=e.features,r=e.width,n=e.height,a=e.colors,i=e.textFontSize,o=e.textColor,s=e.textField,u=e.type;if(t&&"{}"!==JSON.stringify(t)&&t.features){switch(u){case"rotatingAperture":this.marker=new v.default(t,{width:r,colors:a,textField:s,textColor:o,textFontSize:i});break;case"haloRing":this.marker=new m.default(t,{width:r,colors:a,textField:s,textColor:o,textFontSize:i});break;case"breathingAperture":this.marker=new p.default(t,{width:r,colors:a,textField:s,textColor:o,textFontSize:i});break;case"diffusedAperture":this.marker=new y.default(t,{width:r,colors:a,textField:s,textColor:o,textFontSize:i});break;case"rotatingTextBorder":this.marker=new g.default(t,{width:r,height:n,colors:a,textField:s,textColor:o,textFontSize:i});break;case"fluorescence":this.marker=new b.default(t,{width:r,colors:a,textField:s,textColor:o,textFontSize:i})}this.marker&&(this._markersElement=this.marker.getMarkersElement())}else this.viewModel&&this.viewModel.clearMarkerLayer()}},{key:"render",value:function(){return null}}]),r}(c.Component),i.defaultProps={type:"breathingAperture",textFontSize:14},a=i))||a;t.default=w},
- /***/3843:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=n(r(375)),l=n(r(3880)),c=n(r(9705)),d=n(r(5748)),f=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n,i){var o,s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if((0,a.default)(this,r),o=t.call(this),!e)throw new Error("map is requierd");return o.map=e,o.features=n,o.markers=[],o.markersElement=i,o.fitBounds=s,o.features&&o._initalizeMarkerLayer(),o}return(0,i.default)(r,[{key:"setType",value:function(e){this.markersElement=e,this._initalizeMarkerLayer()}},{key:"setFeatures",value:function(e,t){this.markersElement=t,this.features=e,this._initalizeMarkerLayer()}},{key:"_initalizeMarkerLayer",value:function(){this.features&&"{}"!==JSON.stringify(this.features)&&(this.clearMarkerLayer(),this._createMarker())}},{key:"_createMarker",value:function(){var e=this;if(this.features.features.forEach((function(t,r){var n=new u.default.Marker(e.markersElement[r]||e.markersElement[0]).setLngLat(t.geometry.coordinates).addTo(e.map);e.markers.push(n)}),this),this.fitBounds){// @ts-ignore
- var t=(0,c.default)((0,d.default)((0,l.default)(this.features),1.7));this.fitBounds&&this.map.fitBounds([[t[0],t[1]],[t[2],t[3]]],{maxZoom:17})}}},{key:"clearMarkerLayer",value:function(){this.markers.length>0&&this.markers.forEach((function(e){e&&e.remove()})),this.markers=[]}}]),r}(u.default.Evented);t.default=f},
- /***/7278:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e){var n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.default)(this,r),(n=t.call(this,e,i)).features&&n._createMarker(),n}return(0,i.default)(r,[{key:"setMarkersWidth",value:function(e){this.options.width=e;for(var t=document.getElementsByClassName("sm-component-animate-marker__pulse"),r=0;r<t.length;r++)// @ts-ignore
- this._setBreathingApertureWidth(t[r].style)}},{key:"setMarkersColors",value:function(e){if(this.options.colors=e,e&&e.length&&e.length>0){for(var t=document.getElementsByClassName("sm-component-animate-marker__dot-point"),r=0;r<t.length;r++)// @ts-ignore
- t[r].style.background=this.options.colors[0];for(var n=document.getElementsByClassName("sm-component-animate-marker__pulse"),a=0;a<n.length;a++){// @ts-ignore
- var i=n[a].style;i.borderColor=this.options.colors[0],i.boxShadow="0 0 12px ".concat(this.options.colors[1],", 0 0 20px ").concat(this.options.colors[1]," inset")}}}},{key:"_createMarker",value:function(){var e=this;this.features.features.forEach((function(t){var r=document.createElement("div");r.className="sm-component-animate-marker--breathing-aperture";var n,a=document.createElement("span");a.className="sm-component-animate-marker__dot-point",e.options.colors&&e.options.colors.length&&e.options.colors.length>0&&(n=e.options.colors),n&&(a.style.background=n[0]),r.appendChild(a),e._createMakerElement(3,"span",["sm-component-animate-marker__delay","sm-component-animate-marker__pulse"]).forEach((function(t){n&&(t.style.borderColor=n[0],t.style.boxShadow="0 0 12px ".concat(n[1],", 0 0 20px ").concat(n[1]," inset")),e._setBreathingApertureWidth(t.style),r.appendChild(t)}));var i=e._getTextContainer(t,"breathing-aperture-name");r.appendChild(i),e.markersElement.push(r)}),this)}},{key:"_setBreathingApertureWidth",value:function(e){var t=this.options.width;t&&(e.width=t+"px",e.height=t+"px",e.top=-t/2+"px",e.left=-t/2+"px",e.borderRadius=t/2+"px")}},{key:"_createMakerElement",value:function(e,t,r){for(var n=[],a=1;a<e+1;a++){var i=document.createElement(t);i.className="".concat(r[0],"-0").concat(a," ").concat(r[1]),n.push(i)}return n}}]),r}(n(r(9853)).default);t.default=u},
- /***/2017:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e){var n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.default)(this,r),(n=t.call(this,e,i)).features&&n._createMarker(),n}return(0,i.default)(r,[{key:"setMarkersWidth",value:function(e){this.options.width=e;for(var t=document.getElementsByClassName("sm-component-animate-marker--diffused-aperture"),r=0;r<t.length;r++){t[r].style.setProperty("--container-width",e+"px")}}},{key:"setMarkersColors",value:function(e){if(this.options.colors=e,e&&e.length&&e.length>0)for(var t=document.getElementsByClassName("sm-component-animate-marker--diffused-aperture"),r=0;r<t.length;r++){// @ts-ignore
- var n=t[r].style;n.setProperty("--background-color",this.options.colors[0]),n.setProperty("--box-shadow-color",this.options.colors[1]||this.options.colors[0])}}},{key:"_createMarker",value:function(){var e=this;this.features.features.forEach((function(t){var r=document.createElement("div");r.className="sm-component-animate-marker--diffused-aperture";var n=document.createElement("div");n.className="sm-component-animate-marker__diffused-aperture-wrapper";var a=document.createElement("div");a.className="sm-component-animate-marker__bg",n.appendChild(a);var i=document.createElement("div");i.className="sm-component-animate-marker__circle",n.appendChild(i),r.appendChild(n);var o=e._getTextContainer(t,"diffused-aperture-name");r.appendChild(o),e.options.width&&r.style.setProperty("--container-width",e.options.width+"px"),e.options.colors&&e.options.colors.length&&e.options.colors.length>0&&(r.style.setProperty("--background-color",e.options.colors[0]),r.style.setProperty("--box-shadow-color",e.options.colors[1]||e.options.colors[0])),e.markersElement.push(r)}),this)}}]),r}(n(r(9853)).default);t.default=u},
- /***/6889:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e){var n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.default)(this,r),(n=t.call(this,e,i)).features&&n._createMarker(),n}return(0,i.default)(r,[{key:"setMarkersWidth",value:function(e){this.options.width=e;for(var t=document.getElementsByClassName("sm-component-animate-marker--fluorescence"),r=0;r<t.length;r++)// @ts-ignore
- this._setFluorescenceWidth(t[r].style)}},{key:"setMarkersColors",value:function(e){if(this.options.colors=e,e&&e.length&&e.length>0)for(var t=document.getElementsByClassName("sm-component-animate-marker--fluorescence"),r=0;r<t.length;r++)// @ts-ignore
- this._setFluorescenceColor(t[r].style)}},{key:"_createMarker",value:function(){var e=this;this.features.features.forEach((function(t){var r=document.createElement("div");r.className="sm-component-animate-marker--fluorescence";var n=document.createElement("div");n.className="sm-component-animate-marker__fluorescence",r.appendChild(n);var a=e._getTextContainer(t,"fluorescence-name");r.appendChild(a),e._setFluorescenceWidth(r.style),e._setFluorescenceColor(r.style),e.markersElement.push(r)}))}},{key:"_setFluorescenceWidth",value:function(e){this.options.width&&(e.setProperty("--container-width",this.options.width/3+"px"),e.setProperty("--box-shadow-width",this.options.width+"px"))}},{key:"_setFluorescenceColor",value:function(e){this.options.colors&&this.options.colors.length>0&&(e.setProperty("--box-shadow-color",this.options.colors[0]),e.setProperty("--light-color",this.options.colors[1]))}}]),r}(n(r(9853)).default);t.default=u},
- /***/6130:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=n(r(9458)),l=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e){var n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.default)(this,r),(n=t.call(this,e,i)).features&&n._createMarker(),n}return(0,i.default)(r,[{key:"setMarkersWidth",value:function(e){this.options.width=e;for(var t=document.getElementsByClassName("sm-component-animate-marker--halo-ring"),r=0;r<t.length;r++){// @ts-ignore
- var n=t[r].style;n.setProperty("--halo-width",this.options.width+"px"),n.setProperty("--halo-left",-this.options.width/2+"px"),n.setProperty("--box-shadow-width-1",this.options.width/10+"px"),n.setProperty("--box-shadow-width-2",this.options.width/4+"px")}}},{key:"setMarkersColors",value:function(e){if(this.options.colors=e,e&&e.length&&e.length>0)for(var t=document.getElementsByClassName("sm-component-animate-marker--halo-ring"),r=0;r<t.length;r++){// @ts-ignore
- var n=t[r].style;n.setProperty("--color-1",this._getColorWithOpacity(this.options.colors[0],.3)),n.setProperty("--color-1-transparent",this._getColorWithOpacity(this.options.colors[0],.1)),n.setProperty("--color-2",this._getColorWithOpacity(this.options.colors[1],.3)),n.setProperty("--color-2-transparent",this._getColorWithOpacity(this.options.colors[1],.1))}}},{key:"_createMarker",value:function(){var e=this;this.features.features.forEach((function(t){var r=document.createElement("div");r.className="sm-component-animate-marker--halo-ring",e._createMakerElement(8,"div",["sm-component-animate-marker__ring","sm-component-animate-marker__halo"]).forEach((function(e){r.appendChild(e)}));var n=e._getTextContainer(t,"halo-ring-name");r.appendChild(n),e.options.width&&(r.style.setProperty("--halo-width",e.options.width+"px"),r.style.setProperty("--halo-left",-e.options.width/2+"px"),r.style.setProperty("--box-shadow-width-1",e.options.width/10+"px"),r.style.setProperty("--box-shadow-width-2",e.options.width/4+"px")),e.options.colors&&e.options.colors.length&&e.options.colors.length>0&&(r.style.setProperty("--color-1",e._getColorWithOpacity((0,u.default)(e.options.colors[0],"rgba",!0),.3)),r.style.setProperty("--color-1-transparent",e._getColorWithOpacity((0,u.default)(e.options.colors[0],"rgba",!0),.1)),r.style.setProperty("--color-2",e._getColorWithOpacity((0,u.default)(e.options.colors[1],"rgba",!0),.3)),r.style.setProperty("--color-2-transparent",e._getColorWithOpacity((0,u.default)(e.options.colors[1],"rgba",!0),.1))),e.markersElement.push(r)}),this)}},{key:"_createMakerElement",value:function(e,t,r){for(var n=[],a=1;a<e+1;a++){var i=document.createElement(t);i.className="".concat(r[0],"-0").concat(a," ").concat(r[1]),n.push(i)}return n}}]),r}(n(r(9853)).default);t.default=l},
- /***/9853:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=r(9752),s=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,a.default)(this,e),this.markersElement=[],this.features=t,this.options=r}return(0,i.default)(e,[{key:"setFeatures",value:function(e){this.markersElement=[],this.features=e,this.features&&this._createMarker()}},{key:"getMarkersElement",value:function(){return this.markersElement}},{key:"setMarkersTextField",value:function(e){if(this.features&&"{}"!==JSON.stringify(this.features)){this.options.textField=e;for(var t=document.getElementsByClassName("sm-component-animate-marker__name"),r=0;r<t.length;r++){var n=this.features.features[r]&&this.features.features[r].properties;n&&n[e]?t[r].innerHTML=n[e]:t[r].innerHTML=""}}}},{key:"setMarkersTextFontSize",value:function(e){this.options.textFontSize=e;for(var t=document.getElementsByClassName("sm-component-animate-marker__name-container"),r=0;r<t.length;r++)// @ts-ignore
- t[r].style.fontSize=e+"px"}},{key:"setMarkersTextColor",value:function(e){this.options.textColor=e;for(var t=document.getElementsByClassName("sm-component-animate-marker__name-container"),r=0;r<t.length;r++)// @ts-ignore
- t[r].style.color=e}},{key:"_getColorWithOpacity",value:function(e,t){return(0,o.getColorWithOpacity)(e,t)}},{key:"_getTextContainer",value:function(e,t){var r;e.properties&&0!==Object.keys(e.properties).length&&this.options.textField&&(r=e.properties[this.options.textField]);var n=document.createElement("div");n.className="sm-component-animate-marker__name-container sm-component-animate-marker__name-container--".concat(t),this.options.textColor&&(n.style.color=this.options.textColor),this.options.textFontSize&&(n.style.fontSize=this.options.textFontSize+"px");var a=document.createElement("span");return a.className="sm-component-animate-marker__".concat(t," sm-component-animate-marker__name"),a.innerHTML=r||"",n.appendChild(a),n}}]),e}();t.default=s},
- /***/970:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e){var n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.default)(this,r),(n=t.call(this,e,i)).features&&n._createMarker(),n}return(0,i.default)(r,[{key:"setMarkersWidth",value:function(e){// TODO 待抛出 width 不能小于 40
- if(this.options.width=e,this.options.width&&!(this.options.width<40))for(var t=document.getElementsByClassName("sm-component-animate-marker--rotating-aperture"),r=0;r<t.length;r++){// @ts-ignore
- t[r].style.setProperty("--container-width","".concat(this.options.width,"px"));var n=t[r].children[0],a=t[r].children[1],i=t[r].children[2];n.setAttribute("style",this._getDotsStyleObj(this.options.width-32)),a.setAttribute("style",this._getDotsStyleObj(this.options.width-16)),i.setAttribute("style",this._getDotsStyleObj(this.options.width))}}},{key:"setMarkersColors",value:function(e){if(this.options.colors=e,e&&e.length&&e.length>0)for(var t=document.getElementsByClassName("sm-component-animate-marker--rotating-aperture"),r=0;r<t.length;r++){// @ts-ignore
- var n=t[r].style;n.setProperty("--light-color",this.options.colors[1]),n.setProperty("--color",this.options.colors[0]),n.setProperty("--line-color",this._getColorWithOpacity(this.options.colors[0],.2))}}},{key:"_createMarker",value:function(){var e=this;this.features.features.forEach((function(t){var r=e.options.width&&e.options.width>=40?e.options.width:50,n=document.createElement("div");n.className="sm-component-animate-marker--rotating-aperture",e._createMakerElement(3,"div",["sm-component-animate-marker__dots","sm-component-animate-marker__dots"]).forEach((function(t,a){var i;0===a&&(i=r-32),1===a&&(i=r-16),2===a&&(i=r),t.setAttribute("style",e._getDotsStyleObj(i)),n.appendChild(t)}));var a=e._getTextContainer(t,"rotating-aperture-name");n.appendChild(a),e.options.colors&&e.options.colors.length&&e.options.colors.length>0&&e.options.colors[0].indexOf("rgb")>-1&&(n.style.setProperty("--color",e.options.colors[0]),n.style.setProperty("--line-color",e._getColorWithOpacity(e.options.colors[0],.2)),n.style.setProperty("--light-color",e.options.colors[1])),n.style.setProperty("--container-width",r+"px"),e.markersElement.push(n)}),this)}},{key:"_createMakerElement",value:function(e,t,r){for(var n=[],a=1;a<e+1;a++){var i=document.createElement(t);i.className="".concat(r[0],"-0").concat(a," ").concat(r[1]),n.push(i)}return n}},{key:"_getDotsStyleObj",value:function(e){return"--dots-width: ".concat(e,"px;\n --dots-height: ").concat(e,"px;\n --dots-box-shadow-x: ").concat(e/2+6,"px;\n --dots-box-shadow-x-negative: -").concat(e/2+6,"px;\n --dots-box-shadow-radius1: ").concat(e/2-2,"px;\n --dots-box-shadow-radius1-negative: -").concat(e/2-2,"px;\n --dots-box-shadow-radius2: ").concat(e/2-3,"px;\n --dots-box-shadow-radius2-negative: -").concat(e/2-3,"px;")}}]),r}(n(r(9853)).default);t.default=u},
- /***/9041:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e){var n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.default)(this,r),(n=t.call(this,e)).options=i,n.features&&n._createMarker(),n}return(0,i.default)(r,[{key:"setMarkersWidth",value:function(e){this.options.width=e,this._setMarkerContainerProperty({"--clip-width-1":e+e/10+"px","--clip-width-2":e+e/10-2+"px","--boder-width":e+"px","--text-left-position":-e/2+"px"})}},{key:"setMarkersHeight",value:function(e){this.options.height=e,this._setMarkerContainerProperty({"--clip-height-1":e+e/10+"px","--clip-height-2":e+e/10-2+"px","--boder-height":e+"px"})}},{key:"setMarkersTextField",value:function(e){if(this.features&&"{}"!==JSON.stringify(this.features)){this.options.textField=e;for(var t=document.getElementsByClassName("sm-component-animate-marker__text"),r=0;r<t.length;r++){var n=this.features.features[r]&&this.features.features[r].properties;n&&n[e]?t[r].innerHTML=n[e]:t[r].innerHTML=""}}}},{key:"setMarkersTextColor",value:function(e){this.options.textColor=e,this._setMarkerContainerProperty({"--text-color":e})}},{key:"setMarkersTextFontSize",value:function(e){this.options.textFontSize=e,this._setMarkerContainerProperty({"--text-font-size":e+"px"})}},{key:"setMarkersColors",value:function(e){this.options.colors=e,e&&e.length&&e.length>0&&this._setMarkerContainerProperty({"--border-color":e[0],"--box-shadow-color":e[1]})}},{key:"_createMarker",value:function(){var e=this;this.features.features.forEach((function(t){var r=document.createElement("div");r.className="sm-component-animate-marker--text-boder";var n=document.createElement("div");n.className="sm-component-animate-marker__boder";var a,i=Object.keys(t.properties);(t.properties||0!==Object.keys(t.properties).length)&&(a=t.properties[e.options.textField]||t.properties[i[0]]);var o=document.createElement("span");o.className="sm-component-animate-marker__text",o.innerHTML=a||"",n.appendChild(o),e.options.colors&&e.options.colors.length&&e.options.colors.length>0&&(r.style.setProperty("--border-color",e.options.colors[0]),r.style.setProperty("--box-shadow-color",e.options.colors[1])),e.options.textColor&&r.style.setProperty("--text-color",e.options.textColor),e.options.textFontSize&&r.style.setProperty("--text-font-size",e.options.textFontSize+"px"),e.options.width&&(r.style.setProperty("--clip-width-1",e.options.width+e.options.width/10+"px"),r.style.setProperty("--clip-width-2",e.options.width+e.options.width/10-2+"px"),r.style.setProperty("--boder-width",e.options.width+"px"),r.style.setProperty("--text-left-position",-e.options.width/2+"px")),e.options.height&&(r.style.setProperty("--clip-height-1",e.options.height+e.options.width/10+"px"),r.style.setProperty("--clip-height-2",e.options.height+e.options.width/10-2+"px"),r.style.setProperty("--boder-height",e.options.height+"px")),(e.options.width||100)>(e.options.width||200)?r.style.setProperty("--animation-name","clipMe2"):r.style.setProperty("--animation-name","clipMe1"),r.appendChild(n),e.markersElement.push(r)}),this)}},{key:"_setMarkerContainerProperty",value:function(e){for(var t=this,r=document.getElementsByClassName("sm-component-animate-marker--text-boder"),n=function(){// @ts-ignore
- var n=r[a].style;Object.keys(e).forEach((function(t){n.setProperty(t,e[t])})),(t.options.height||100)>(t.options.width||200)?n.setProperty("--animation-name","clipMe2"):n.setProperty("--animation-name","clipMe1")},a=0;a<r.length;a++)n()}}]),r}(n(r(9853)).default);t.default=u},
- /***/9407:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i,o=n(r(8683)),s=n(r(5671)),u=n(r(3144)),l=n(r(9340)),c=n(r(8557)),d=n(r(8808)),f=r(3899),h=n(r(7727)),p=n(r(1558)),y=n(r(2307)),m=n(r(9635)),v=n(r(7006)),g=(0,d.default)(m.default,v.default)((i=function(e){(0,l.default)(r,e);var t=(0,c.default)(r);function r(){return(0,s.default)(this,r),t.apply(this,arguments)}return(0,u.default)(r,[{key:"componentDidUpdate",value:function(e){var t=this.props,r=t.data,n=t.clusteredPointStyle,a=t.unclusteredPointStyle,i=t.clusteredPointTextLayout;(0,y.default)(r,e.data)||this.viewModel&&this.viewModel.setData(r),e.clusteredPointStyle!==n&&this.viewModel&&this.viewModel.setClusteredPointStyle(n),e.unclusteredPointStyle!==a&&this.viewModel&&this.viewModel.setUnclusteredPointStyle(a),e.clusteredPointTextLayout!==i&&this.viewModel&&this.viewModel.setClusteredPointTextLayout(i)}},{key:"loaded",value:function(e){var t=JSON.parse(JSON.stringify(this.props));delete t.data,this.viewModel=new h.default(e,this.props.data,(0,o.default)({},t))}},{key:"render",value:function(){return null}}]),r}(f.Component),i.defaultProps={radius:50,maxZoom:14,clusteredPointStyle:new p.default({"circle-color":["step",["get","point_count"],"#51bbd6",100,"#f1f075",750,"#f28cb1"],"circle-radius":["step",["get","point_count"],20,100,30,750,40]}),unclusteredPointStyle:new p.default({"circle-color":"#11b4da","circle-radius":4,"circle-stroke-width":1,"circle-stroke-color":"#fff"})},a=i))||a,b=g;t.default=b},
- /***/7727:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n){var i,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if((0,a.default)(this,r),(i=t.call(this)).options=o,!e)throw new Error("map is requierd");return i.map=e,i.data=n,i.layerId=o.layerId||"clusterLayer"+(new Date).getTime(),i.data&&i._initializeClusterLayer(),i}return(0,i.default)(r,[{key:"setData",value:function(e){e&&(this.data=e,this.layerId&&!this.map.getSource(this.layerId)?this._initializeClusterLayer():this.map.getSource(this.layerId).setData(e))}},{key:"setClusteredPointStyle",value:function(e){!e||this.layerId&&!this.map.getSource(this.layerId)||(this.options.clusteredPointStyle=e,this._setPaintProperty(e.paint,this.layerId),this._setLayoutProperty(e.layout,this.layerId))}},{key:"setUnclusteredPointStyle",value:function(e){var t="unclustered_point"+this.layerId;e&&this.map.getSource(t)&&(this.options.unclusteredPointStyle=e,this._setPaintProperty(e.paint,t),this._setLayoutProperty(e.layout,t))}},{key:"setClusteredPointTextLayout",value:function(e){var t="count_"+this.layerId;e&&this.map.getSource(t)&&(this.options.clusteredPointTextLayout=e,this._setLayoutProperty(e,t))}},{key:"_setPaintProperty",value:function(e,t){var r=this;Object.keys(e).forEach((function(n){r.map.setPaintProperty(t,n,e[n])}))}},{key:"_setLayoutProperty",value:function(e,t){var r=this;Object.keys(e).forEach((function(n){r.map.setLayoutProperty(t,n,e[n])}))}},{key:"_initializeClusterLayer",value:function(){var e=this;this.map.addSource(this.layerId,{type:"geojson",data:this.data,cluster:!0,clusterMaxZoom:this.options.maxZoom||14,clusterRadius:this.options.radius||50}),this.map.addLayer({id:this.layerId,type:"circle",source:this.layerId,filter:["has","point_count"],paint:this.options.clusteredPointStyle&&this.options.clusteredPointStyle.paint||{"circle-color":["step",["get","point_count"],"#51bbd6",100,"#f1f075",750,"#f28cb1"],"circle-radius":["step",["get","point_count"],20,100,30,750,40]}}),// 聚合点文本 layer
- this.map.addLayer({id:"count_"+this.layerId,type:"symbol",source:this.layerId,filter:["has","point_count"],layout:this.options.clusteredPointTextLayout||{"text-field":"{point_count_abbreviated}","text-font":["DIN Offc Pro Medium","Arial Unicode MS Bold"],"text-size":12}}),// 未聚合点 layer
- this.map.addLayer({id:"unclustered_point"+this.layerId,type:"circle",source:this.layerId,filter:["!",["has","point_count"]],paint:this.options.unclusteredPointStyle&&this.options.unclusteredPointStyle.paint||{"circle-color":"#11b4da","circle-radius":4,"circle-stroke-width":1,"circle-stroke-color":"#fff"}}),
- /**
- * @event addcusterlayersucceeded
- * @description 添加点聚合图层成功后触发。
- * @property {Object} map - mapboxgl map 对象。
- */
- this.fire("addcusterlayersucceeded",{map:this.map}),this.map.on("click",this.layerId,(function(t){var r=e.map.queryRenderedFeatures(t.point,{layers:[e.layerId]}),n=r[0].properties.cluster_id;e.map.getSource(e.layerId).getClusterExpansionZoom(n,(function(t,n){t||e.map.easeTo({center:r[0].geometry.coordinates,zoom:n})}))})),this.map.on("mouseenter",this.layerId,(function(){e.map.getCanvas().style.cursor="pointer"})),this.map.on("mouseleave",this.layerId,(function(){e.map.getCanvas().style.cursor=""}))}}]),r}(n(r(375)).default.Evented);t.default=u},
- /***/2313:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i,o=n(r(8683)),s=n(r(5671)),u=n(r(3144)),l=n(r(9340)),c=n(r(8557)),d=n(r(8808)),f=n(r(3899)),h=n(r(9635)),p=n(r(7006)),y=n(r(9162)),m=r(2009),v=r(9752),g=(0,d.default)(h.default,p.default)((i=function(e){(0,l.default)(r,e);var t=(0,c.default)(r);function r(){return(0,s.default)(this,r),t.apply(this,arguments)}return(0,u.default)(r,[{key:"loaded",value:function(e){var t=JSON.parse(JSON.stringify(this.props));delete t.serviceUrl,this.viewModel=new y.default(e,this.props.serviceUrl,(0,o.default)({},t)),this.registerEvents()}},{key:"registerEvents",value:function(){var e=this;// @ts-ignore
- this.viewModel.on("subscribefailed",(function(t){// this.$message.error(this.$t('dataFlow.dataSubscriptionFailed'));
- /**
- * @event subscribeFailed
- * @desc 数据订阅失败后触发。
- * @property {Object} e - 事件对象。
- */
- (0,v.isFunction)(e.props.onSubscribeFailed)&&e.props.onSubscribeFailed(t)})),// @ts-ignore
- this.viewModel.on("subscribesucceeded",(function(t){
- /**
- * @event subscribeSucceeded
- * @desc 数据订阅失败后触发。
- * @property {Object} e - 事件对象。
- */
- (0,v.isFunction)(e.props.onSubscribeSucceeded)&&e.props.onSubscribeSucceeded(t)})),// @ts-ignore
- this.viewModel.on("dataupdated",(function(t){
- /**
- * @event dataUpdated
- * @desc 数据更新成功后触发。
- * @property {GeoJSONObject} data - 更新的数据。
- * @property {mapboxgl.Map} map - MapBoxGL Map 对象。
- */
- (0,v.isFunction)(e.props.onDataUpdated)&&e.props.onDataUpdated(t)}))}},{key:"render",value:function(){return null}}]),r}(f.default.Component),i.defaultProps={layerStyle:{line:new m.LineStyle,circle:new m.CircleStyle,fill:new m.FillStyle}},a=i))||a;t.default=g},
- /***/9162:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=n(r(3465)),l=n(r(375));r(2395);
- /**
- * @class DataFlowLayerViewModel
- * @category ViewModel
- * @classdesc 数据流图层组件功能类。
- * @param {mapboxgl.Map} map - mapboxgl map 对象。
- * @param {String} serviceUrl - 数据流服务地址。
- * @param {Object} [options] - 可选参数。
- * @param {String} [options.layerId] - 图层 ID。
- * @param {Object} [options.layerStyle] - 指定图层样式。
- * @param {GeoJSONObject} [options.geometry] - 指定几何范围,该范围内的要素才能被订阅。
- * @param {String} [options.excludeField] - 排除字段。
- * @param {Object} [options.styleOptions] - style OPtion
- * @fires DataFlowLayerViewModel#subscribesucceeded
- * @fires DataFlowLayerViewModel#subscribefailed
- * @fires DataFlowLayerViewModel#dataUpdated
- */
- var c=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n,i){var o;if((0,a.default)(this,r),o=t.call(this),!n)throw new Error("serviceUrl is requierd");if(!e)throw new Error("map is requierd");return o.options=i||{},o.map=e,o.serviceUrl=n,o.sourceID=i.layerId||"dataFlow"+(new Date).getTime(),o.layerStyle=i.layerStyle||{},o.options.registerToken&&SuperMap.SecurityManager.registerToken(o.serviceUrl,o.options.registerToken),o._initializeDataFlow(),o}return(0,i.default)(r,[{key:"setLayerStyle",value:function(e){this.layerStyle=e}
- /**
- * @function DataFlowLayerViewModel.prototype.setExcludeField
- * @description 设置唯一字段。
- * @param {string} excludeField - 唯一字段。
- */},{key:"setExcludeField",value:function(e){return this.dataService.setExcludeField(e),this.options.excludeField=e,this}
- /**
- * @function DataFlowLayerViewModel.prototype.setGeometry
- * @description 设置集合要素。
- * @param {GeoJSONObject} geometry - 待设置的 GeoJSON 几何要素对象。
- */},{key:"setGeometry",value:function(e){return this.dataService.setGeometry(e),this.options.geometry=e,this}},{key:"_initializeDataFlow",value:function(){var e=this,t=new l.default.supermap.DataFlowService(this.serviceUrl,{geometry:this.options.geometry,excludeField:this.options.excludeField}).initSubscribe();t.on("subscribeSocketConnected",(function(t){
- /**
- * @event DataFlowLayerViewModel#subscribesucceeded
- * @description 数据订阅成功后触发。
- * @property {Object} e - 事件对象。
- */
- e.fire("subscribesucceeded",t)})),t.on("subscribeSocketError",(function(t){
- /**
- * @event DataFlowLayerViewModel#subscribefailed
- * @description 数据订阅失败后触发。
- * @property {Object} e - 事件对象。
- */
- e.fire("subscribefailed",t)})),t.on("messageSucceeded",(function(t){e._addLayer(t)})),this.dataService=t}},{key:"_addLayer",value:function(e){if(e.featureResult){var t=e.featureResult,r=t.geometry.type,n=this.layerStyle;if(this.map.getSource(this.sourceID)){// update layer
- var a=(0,u.default)(this.map.getSource(this.sourceID)._data.features),i=!1;a.forEach((function(e,r){e.properties.id===t.properties.id&&(i=!0,a[r]=t)})),i||a.push(t),this.map.getSource(this.sourceID).setData({type:"FeatureCollection",features:a}),
- /**
- * @event DataFlowLayerViewModel#dataUpdated
- * @description 数据更新成功后触发。
- * @property {GeoJSONObject} data - 更新的数据。
- * @property {mapboxgl.Map} map - MapBoxGL Map 对象。
- */
- this.fire("dataupdated",{data:t,map:this.map})}else if(this.map.addSource(this.sourceID,{type:"geojson",data:{type:"FeatureCollection",features:[t]}}),"Point"===r){var o="circle",s={"circle-radius":6,"circle-color":"red"};n.symbol&&(o="symbol",s={}),this.map.addLayer({id:this.sourceID,type:o,source:this.sourceID,paint:n[o]&&n[o].paint||s,layout:n[o]&&n[o].layout||{}})}else"MultiPolygon"===r||"Polygon"===r?this.map.addLayer({id:this.sourceID,type:"fill",paint:n.fill&&n.fill.paint||{"fill-color":"red","fill-opacity":1},layout:n.fill&&n.fill.layout||{},source:this.sourceID}):"LineString"!==r&&"Line"!==r&&"MultiLineString"!==r||this.map.addLayer({id:this.sourceID,type:"line",paint:n.line&&n.line.paint||{"line-width":5,"line-color":"red","line-opacity":1},layout:n.line&&n.line.layout||{},source:this.sourceID})}}}]),r}(l.default.Evented);t.default=c},
- /***/9183:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i=n(r(5671)),o=n(r(3144)),s=n(r(9340)),u=n(r(8557)),l=n(r(8808)),c=r(3899),d=n(r(9635)),f=n(r(7006)),h=n(r(5703)),p=["scatter-plot","path-layer","polygon-layer","arc-layer","hexagon-layer","screen-grid-layer"],y=(0,l.default)(d.default,f.default)(a=function(e){(0,s.default)(r,e);var t=(0,u.default)(r);function r(){return(0,i.default)(this,r),t.apply(this,arguments)}return(0,o.default)(r,[{key:"loaded",value:function(e){var t=this;p.findIndex((function(e){return e===t.props.layerType}))>-1&&(this.viewModel=new h.default(e,this.props))}},{key:"render",value:function(){return null}}]),r}(c.Component))||a;t.default=y},
- /***/5703:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=n(r(375));r(2395),r(2371);var l=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n){var i;(0,a.default)(this,r),(i=t.call(this)).map=e;var o=n.layerType,s=n.options,u=n.layerId;return i.layerType=o,s.data=s.data||[],s.layerId=s.layerId||u,i.options=s,i._init(),i}return(0,i.default)(r,[{key:"_init",value:function(){this.layerType&&this.options&&this._addDeckglLayer()}},{key:"_addDeckglLayer",value:function(){var e=new u.default.supermap.DeckglLayer(this.layerType,this.options);this.map.addLayer(e)}}]),r}(u.default.Evented);t.default=l},
- /***/1762:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i=n(r(5671)),o=n(r(3144)),s=n(r(9340)),u=n(r(8557)),l=n(r(8808)),c=n(r(3899)),d=n(r(9635)),f=n(r(7006)),h=n(r(3395)),p=(0,l.default)(d.default,f.default)(a=function(e){(0,s.default)(r,e);var t=(0,u.default)(r);function r(){return(0,i.default)(this,r),t.apply(this,arguments)}return(0,o.default)(r,[{key:"loaded",value:function(e){this.viewModel=new h.default(e,this.props.options)}},{key:"render",value:function(){return null}}]),r}(c.default.Component))||a;t.default=p},
- /***/3395:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=n(r(550)),l=n(r(375)),c=n(r(3094)),d=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n){var i;if((0,a.default)(this,r),i=t.call(this),!n)throw new Error("echarts options is requierd");if(!e)throw new Error("map is requierd");return i.map=e,i.options=n,i._initializeEchartsLayer(),i}return(0,i.default)(r,[{key:"_initializeEchartsLayer",value:function(){window.echarts=u.default;var e=new c.default(this.map);e.chart.setOption(this.options),
- /**
- * @event echartslayeraddsucceeded
- * @property {Object} layer - Echarts Layer.
- */
- this.fire("echartslayeraddsucceeded",{layer:e}),this.echartslayer=e}}]),r}(l.default.Evented);t.default=d},
- /***/4799:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i,o=n(r(5671)),s=n(r(3144)),u=n(r(9340)),l=n(r(8557)),c=n(r(8808)),d=n(r(3899)),f=n(r(2307)),h=n(r(9635)),p=n(r(7006)),y=n(r(5382)),m=(0,c.default)(h.default,p.default)((i=function(e){(0,u.default)(r,e);var t=(0,l.default)(r);function r(){return(0,o.default)(this,r),t.apply(this,arguments)}return(0,s.default)(r,[{key:"componentDidUpdate",value:function(e){var t=this.props,r=t.features,n=t.modelScale;this.viewModel&&((0,f.default)(e.features,r)||this.viewModel.setFeatures(r),e.modelScale!==n&&this.viewModel.setModelScale(n))}},{key:"loaded",value:function(e){this.viewModel=new y.default(e,this.props.features,this.props.modelScale,this.props.layerId)}},{key:"render",value:function(){return null}}]),r}(d.default.Component),i.defaultProps={modelScale:541843220338983e-20},a=i))||a;t.default=m},
- /***/5382:
- /***/function(e,t,r){"use strict";var n=r(5263).default,a=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=a(r(2982)),o=a(r(5671)),s=a(r(3144)),u=a(r(9340)),l=a(r(8557)),c=n(r(2069)),d=a(r(375)),f=a(r(2769)),h=function(e){(0,u.default)(r,e);var t=(0,l.default)(r);function r(e,n){var a,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:541843220338983e-20,s=arguments.length>3?arguments[3]:void 0;if((0,o.default)(this,r),a=t.call(this),!e)throw new Error("map is requierd");return a.map=e,a.layerId=s,a.features=n,a.modelScale=i,a.features&&a._addFireLayer(),a}return(0,s.default)(r,[{key:"setFeatures",value:function(e){this.features=e,this._addFireLayer()}},{key:"setModelScale",value:function(e){this.modelScale=e,this._addFireLayer()}},{key:"_addFireLayer",value:function(){var e=this;if("Point"!==this.features.features[0].geometry.type)throw new Error("Feature's type must be point");if(this.features.features.length>50)throw new Error("The maximum number of features is 50");this.features.features.forEach((function(t,r){var n=t.geometry;"Point"===n.type&&e._initializeFireLayer(n.coordinates,r)}))}},{key:"_initializeFireLayer",value:function(e,t){var r=this,n=this._getModelTransform(e),a=this.layerId&&this.layerId+"-"+t||"threeLayerFire-".concat(new Date);this.map.getLayer(a)&&this.map.removeLayer(a);var i={id:a,type:"custom",renderingMode:"3d",onAdd:function(e,t){r.camera=new c.PerspectiveCamera(45,e.getCanvas().width/e.getCanvas().height,.1,2e3),r.scene=new c.Scene,r.renderer=new c.WebGLRenderer({canvas:e.getCanvas(),context:t,antialias:!0}),r.renderer.autoClear=!1;var n=new c.Group;n.add(r.camera),r.scene.add(n),r._fire(),r.scene.add(r._object);var a=new c.PointLight(16777215,1,100);a.position.set(10,10,20),r.scene.add(a),r.map=e},render:function(e,t){var a=(new c.Matrix4).makeRotationAxis(new c.Vector3(1,0,0),n.rotateX),i=(new c.Matrix4).makeRotationAxis(new c.Vector3(0,1,0),n.rotateY),o=(new c.Matrix4).makeRotationAxis(new c.Vector3(0,0,1),n.rotateZ),s=(new c.Matrix4).fromArray(t),u=(new c.Matrix4).makeTranslation(n.translateX,n.translateY,n.translateZ).scale(new c.Vector3(n.scale,-n.scale,n.scale)).multiply(a).multiply(i).multiply(o);r.camera.projectionMatrix.elements=t,r.camera.projectionMatrix=s.multiply(u),r.renderer.state.reset(),r._update(),r.renderer.render(r.scene,r.camera),// @ts-ignore
- r.map.triggerRepaint()}};// @ts-ignore TODO mapbox-gl types 未更新
- this.map.addLayer(i)}},{key:"_getModelTransform",value:function(e){var t=e,r=[Math.PI/2,0,0];return{translateX:d.default.MercatorCoordinate.fromLngLat(t,0).x,translateY:d.default.MercatorCoordinate.fromLngLat(t,0).y,translateZ:d.default.MercatorCoordinate.fromLngLat(t,0).z,rotateX:r[0],rotateY:r[1],rotateZ:r[2],scale:this.modelScale}}},{key:"_fire",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:150,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.2;this._object=new c.Group,this._fireballs=[],this._height=r,this._radius=n;var a=(new c.TextureLoader).load(f.default,(function(){console.log("loaded")}),void 0,(function(e){console.log("error",e)}));// @ts-ignore
- a.crossOrigin="",// "anonymous";
- this._fireMaterial=new c.ShaderMaterial({uniforms:{time:{value:1},blend:{value:1},blendPattern:{type:"t",value:a}},vertexShader:"precision mediump float;\n precision mediump int;\n attribute vec4 color;\n varying vec2 vUv;\n varying float vFade;\n void main()\t{\n vUv = uv;\n vec4 localPosition = vec4( position, 1);\n vFade = clamp((localPosition.y + 3.0) / 6.0, 0.0, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * localPosition;\n }",fragmentShader:"precision mediump float;\n precision mediump int;\n uniform float time;\n uniform float blend;\n uniform sampler2D blendPattern;\n varying float vFade;\n varying vec2 vUv;\n\n\n void main()\t{\n\n vec4 startColor = vec4(1., 0.5, 0.1, 1.0);\n vec4 endColor = vec4(0.2, 0.2, 0.2, 1.0);\n\n float dissolve = texture2D(blendPattern, vUv).r * 0.5;\n\n float spread = 0.4;\n\n float fadeAmount = smoothstep(\n max(0.0, vFade - spread),\n min(1.0, vFade + spread),\n blend + dissolve\n );\n\n vec4 color = mix(\n startColor, endColor,\n smoothstep(0.1,1., fadeAmount)\n );\n\n gl_FragColor = vec4(color.rgb, 1.-fadeAmount);\n }",transparent:!0,side:c.DoubleSide,blending:c.AdditiveBlending}),this._light=new c.PointLight(16733440,1,100),this._light.position.set(0,.4,0),this._lightIntensity=5*Math.random(),this._object.add(this._light);// this._fireMaterial = new THREE.MeshStandardMaterial(0x661100);
- for(var o=0;o<t;o++){var s=new c.SphereGeometry(1,32,32),u=this._fireMaterial.clone();u.uniforms.blendPattern.value=a,u.needsUpdate=!0;var l=new c.Mesh(s,u);l.position.y=Math.random()*r,l.position.x=(.5-Math.random())*this._radius,l.position.z=(.5-Math.random())*this._radius,l.rotateX(5*Math.random()),l.rotateZ(5*Math.random()),l.rotateY(5*Math.random()),// @ts-ignore
- l.dirX=.006*(.5-Math.random()),// @ts-ignore
- l.dirY=.006,// @ts-ignore
- l.dirZ=.006*(.5-Math.random()),this._fireballs.push(l)}(e=this._object).add.apply(e,(0,i.default)(this._fireballs))}},{key:"_update",value:function(){var e=this;this._fireballs.forEach((function(t){t.position.y+=t.dirY,t.position.x+=Math.sin(t.position.y)*t.dirX,t.position.z+=Math.cos(t.position.y)*t.dirZ,t.position.y>e._height&&(t.position.y=.1*Math.random(),t.position.x=(.5-Math.random())*e._radius,t.position.z=(.5-Math.random())*e._radius);var r=.1+t.position.y/e._height;t.rotateX(.01*(1.2-r)),t.rotateZ(.01*(1.2-r)),t.rotateY(.01*(1.2-r)),t.scale.set(r,r,r),/// ball.opacity = p;
- t.material.uniforms.blend.value=r})),this._light.intensity+=.006*(this._lightIntensity-this._light.intensity),Math.random()>.8&&(this._lightIntensity=5*Math.random())}}]),r}(d.default.Evented);t.default=h},
- /***/9704:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i=n(r(5671)),o=n(r(3144)),s=n(r(9340)),u=n(r(8557)),l=n(r(8808)),c=r(3899),d=n(r(8428)),f=n(r(2307)),h=n(r(9635)),p=n(r(7006)),y=(0,l.default)(h.default,p.default)(a=function(e){(0,s.default)(r,e);var t=(0,u.default)(r);function r(){return(0,i.default)(this,r),t.apply(this,arguments)}return(0,o.default)(r,[{key:"componentDidUpdate",value:function(e){!(0,f.default)(this.props.layerStyle,e.layerStyle)&&this.viewModel&&this.viewModel.setLayerStyle(this.props.layerStyle),!(0,f.default)(this.props.data,e.data)&&this.viewModel&&this.viewModel.setData(this.props.data)}},{key:"loaded",value:function(e){this.viewModel=new d.default(e,this.props)}},{key:"render",value:function(){return null}}]),r}(c.Component))||a;t.default=y},
- /***/8428:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n){var i;if((0,a.default)(this,r),i=t.call(this),!e)throw new Error("map is requierd");i.map=e;var o=n.layerStyle,s=n.data,u=n.layerId;return i.data=s,i.layerStyle=o,i.layerId=u,i.data&&i._addLayer(),i}return(0,i.default)(r,[{key:"setData",value:function(e){e&&this.map.getSource(this.layerId)&&(this.data=e,this.layerId&&!this.map.getSource(this.layerId)?this._addLayer():this.map.getSource(this.layerId).setData(e))}},{key:"setLayerStyle",value:function(e){if(e&&this.map.getSource(this.layerId)){for(var t=e.paint,r=e.layout,n=0,a=Object.keys(t);n<a.length;n++){var i=a[n];this.map.setPaintProperty(this.layerId,i,t[i])}for(var o=0,s=Object.keys(r);o<s.length;o++){var u=s[o];this.map.setLayoutProperty(this.layerId,u,r[u])}this.layerStyle=e}}},{key:"_addLayer",value:function(){if(!(this.layerStyle instanceof Object))throw new Error("layerStyle must be object");var e=this.layerStyle,t=e.paint,r=e.layout;this.map.addLayer({id:this.layerId,type:this._getLayerType(t),source:{type:"geojson",data:this.data},layout:r||{},paint:t||{}})}},{key:"_getLayerType",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.keys(e).join(" ").match(/circle-|line-|fill-extrusion-|fill-+/i),r=t?t[0]:"";return r.substr(0,r.length-1)}}]),r}(n(r(375)).default.Evented);t.default=u},
- /***/910:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i,o=n(r(5671)),s=n(r(3144)),u=n(r(9340)),l=n(r(8557)),c=n(r(8808)),d=n(r(3899)),f=n(r(2307)),h=n(r(9635)),p=n(r(7006)),y=r(9752),m=n(r(1043)),v=(0,c.default)(h.default,p.default)((i=function(e){(0,u.default)(r,e);var t=(0,l.default)(r);function r(){return(0,o.default)(this,r),t.apply(this,arguments)}return(0,s.default)(r,[{key:"componentDidUpdate",value:function(e){var t=this.props.data;!(0,f.default)(e.data,t)&&this.viewModel&&this.viewModel.setData(t)}},{key:"loaded",value:function(e){var t=this.props.onLoad;this.viewModel=new m.default(e,this.props),(0,y.isFunction)(t)&&t(this.viewModel.themeLayer,e)}},{key:"render",value:function(){return null}}]),r}(d.default.Component),i.defaultProps={options:{},chartsType:"Bar"},a=i))||a;t.default=v},
- /***/1043:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=n(r(375));r(2395);var l=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n){var i;(0,a.default)(this,r),(i=t.call(this)).map=e;var o=n.layerName,s=n.options,u=n.chartsType,l=n.layerId,c=n.data;return i.layerName=o||l,i.chartsType=u||"Bar",s.id=s.id||l,i.options=s,i.data=c||{},i._init(),i}return(0,i.default)(r,[{key:"_init",value:function(){this.themeLayer=new u.default.supermap.GraphThemeLayer(this.layerName,this.chartsType,this.options),this.map.addLayer(this.themeLayer),"{}"!==JSON.stringify(this.data)&&this.setData(this.data)}},{key:"setData",value:function(e){this.themeLayer.addFeatures(e)}}]),r}(u.default.Evented);t.default=l},
- /***/6073:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i,o=n(r(5671)),s=n(r(3144)),u=n(r(9340)),l=n(r(8557)),c=n(r(8808)),d=n(r(3899)),f=n(r(2307)),h=n(r(9635)),p=n(r(7006)),y=n(r(9354)),m=n(r(9623)),v=(0,c.default)(h.default,p.default)((i=function(e){(0,u.default)(r,e);var t=(0,l.default)(r);function r(){return(0,o.default)(this,r),t.apply(this,arguments)}return(0,s.default)(r,[{key:"componentDidUpdate",value:function(e){e.layerStyle!==this.props.layerStyle&&this.viewModel&&this.viewModel.setLayerStyle(this.props.layerStyle),!(0,f.default)(this.props.data,e.data)&&this.viewModel&&this.viewModel.setData(this.props.data)}},{key:"loaded",value:function(e){var t=this.props,r=t.data,n=t.layerId,a=t.layerStyle;this.viewModel=new y.default(e,r,{layerId:n,layerStyle:a})}},{key:"render",value:function(){return null}}]),r}(d.default.Component),i.defaultProps={layerStyle:new m.default},a=i))||a;t.default=v},
- /***/9354:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n,i){var o;if((0,a.default)(this,r),o=t.call(this),!e)throw new Error("map is requierd");i=i||{},o.map=e,o.data=n,o.layerId=i.layerId||"heatmap"+(new Date).getTime();var s=i.layerStyle;return o.paint=s&&s.paint,o.layout=s&&s.layout,o._initializeHeatMapLayer(),o}return(0,i.default)(r,[{key:"setData",value:function(e){e&&this.map.getSource(this.layerId)&&(this.data=e,this.layerId&&!this.map.getSource(this.layerId)?this._initializeHeatMapLayer():this.map.getSource(this.layerId).setData(e))}},{key:"setLayerStyle",value:function(e){if(e&&this.map.getSource(this.layerId)){for(var t=e.paint,r=e.layout,n=0,a=Object.keys(t);n<a.length;n++){var i=a[n];this.map.setPaintProperty(this.layerId,i,t[i])}for(var o=0,s=Object.keys(r);o<s.length;o++){var u=s[o];this.map.setLayoutProperty(this.layerId,u,r[u])}this.layerStyle=e}}},{key:"_initializeHeatMapLayer",value:function(){this.map.addSource(this.layerId,{type:"geojson",data:this.data}),this.map.addLayer({id:this.layerId,type:"heatmap",source:this.layerId,paint:this.paint||{"heatmap-intensity":["interpolate",["linear"],["zoom"],0,1,9,3],"heatmap-color":["interpolate",["linear"],["heatmap-density"],0,"rgba(33,102,172,0)",.2,"rgb(103,169,207)",.4,"rgb(209,229,240)",.6,"rgb(253,219,199)",.8,"rgb(239,138,98)",1,"rgb(178,24,43)"],"heatmap-radius":["interpolate",["linear"],["zoom"],0,2,9,20]},layout:this.layout||{}}),this.fire("heatmaplayeraddsucceeded",{map:this.map})}}]),r}(n(r(375)).default.Evented);t.default=u},
- /***/2174:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i,o=n(r(5671)),s=n(r(3144)),u=n(r(9340)),l=n(r(8557)),c=n(r(8808)),d=r(3899),f=n(r(9635)),h=n(r(7006)),p=r(9752),y=n(r(8499)),m=(0,c.default)(f.default,h.default)((i=function(e){(0,u.default)(r,e);var t=(0,l.default)(r);function r(){return(0,o.default)(this,r),t.apply(this,arguments)}return(0,s.default)(r,[{key:"loaded",value:function(e){var t=this.props.onLoad;this.viewModel=new y.default(e,this.props),(0,p.isFunction)(t)&&t(this.viewModel.themeLayer,e)}},{key:"render",value:function(){return null}}]),r}(d.Component),i.defaultProps={options:{}},a=i))||a;t.default=m},
- /***/8499:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=n(r(375));r(2395);var l=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n){var i;(0,a.default)(this,r),i=t.call(this);var o=n.layerName,s=n.options,u=n.layerId,l=n.data;return i.map=e,i.layerName=o||u,s.id=s.id||u,i.options=s,i.data=l||[],i._init(),i}return(0,i.default)(r,[{key:"_init",value:function(){this.themeLayer=new u.default.supermap.LabelThemeLayer(this.layerName,this.options),this.map.addLayer(this.themeLayer),this.themeLayer.addFeatures(this.data)}}]),r}(u.default.Evented);t.default=l},
- /***/7:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i,o=n(r(5671)),s=n(r(3144)),u=n(r(9340)),l=n(r(8557)),c=n(r(8808)),d=n(r(3899)),f=n(r(9635)),h=n(r(7006)),p=n(r(8862)),y=(0,c.default)(f.default,h.default)((i=function(e){(0,u.default)(r,e);var t=(0,l.default)(r);function r(){return(0,o.default)(this,r),t.apply(this,arguments)}return(0,s.default)(r,[{key:"loaded",value:function(e){this.viewModel=new p.default(e,this.props)}},{key:"render",value:function(){return null}}]),r}(d.default.Component),i.defaultProps={options:{},data:{}},a=i))||a;t.default=y},
- /***/8862:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(8683)),i=n(r(5671)),o=n(r(3144)),s=n(r(9340)),u=n(r(8557)),l=n(r(375));r(2395);var c=function(e){(0,s.default)(r,e);var t=(0,u.default)(r);function r(e,n){var o;(0,i.default)(this,r),(o=t.call(this)).map=e;var s=n.data,u=n.options,l=n.layerId;return o.data=s,o.options=u.layerId?u:(0,a.default)((0,a.default)({},u),{},{layerId:l}),o._init(),o}return(0,o.default)(r,[{key:"_init",value:function(){this.data&&this.options&&this._addMapvLayer()}},{key:"_addMapvLayer",value:function(){var e=new l.default.supermap.MapvLayer("",this.data,this.options);this.map.addLayer(e)}}]),r}(l.default.Evented);t.default=c},
- /***/5890:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i,o=n(r(5671)),s=n(r(3144)),u=n(r(9340)),l=n(r(8557)),c=n(r(8808)),d=n(r(3899)),f=n(r(2307)),h=n(r(9635)),p=n(r(7006)),y=r(9752),m=n(r(5040)),v=(0,c.default)(h.default,p.default)((i=function(e){(0,u.default)(r,e);var t=(0,l.default)(r);function r(){return(0,o.default)(this,r),t.apply(this,arguments)}return(0,s.default)(r,[{key:"componentDidUpdate",value:function(e){var t=this.props.data;!(0,f.default)(e.data,t)&&this.viewModel&&this.viewModel.setData(t)}},{key:"loaded",value:function(e){var t=this.props.onLoad;this.viewModel=new m.default(e,this.props),(0,y.isFunction)(t)&&t(this.viewModel.themeLayer,e)}},{key:"render",value:function(){return null}}]),r}(d.default.Component),i.defaultProps={options:{}},a=i))||a;t.default=v},
- /***/5040:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=n(r(375));r(2395);var l=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n){var i;(0,a.default)(this,r),i=t.call(this);var o=n.layerName,s=n.options,u=n.layerId,l=n.data;return i.map=e,i.layerName=o||u,s.id=s.id||u,i.options=s,i.data=l||[],i._init(),i}return(0,i.default)(r,[{key:"_init",value:function(){this.themeLayer=new u.default.supermap.RangeThemeLayer(this.layerName,this.options),this.map.addLayer(this.themeLayer),this.data&&this.data.length&&this.setData(this.data)}},{key:"setData",value:function(e){this.themeLayer.addFeatures(e)}}]),r}(u.default.Evented);t.default=l},
- /***/3930:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i=n(r(5671)),o=n(r(3144)),s=n(r(9340)),u=n(r(8557)),l=n(r(8808)),c=r(3899),d=n(r(9635)),f=n(r(7006)),h=r(9752),p=n(r(8510)),y=(0,l.default)(d.default,f.default)(a=function(e){(0,s.default)(r,e);var t=(0,u.default)(r);function r(){return(0,i.default)(this,r),t.apply(this,arguments)}return(0,o.default)(r,[{key:"loaded",value:function(e){var t=this.props.onLoad;this.viewModel=new p.default(e,this.props),(0,h.isFunction)(t)&&t(this.viewModel.themeLayer,e)}},{key:"render",value:function(){return null}}]),r}(c.Component))||a;t.default=y},
- /***/8510:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=n(r(375));r(2395);var l=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n){var i;(0,a.default)(this,r),(i=t.call(this)).map=e;var o=n.layerName,s=n.options,u=n.symbolType,l=n.layerId,c=n.data;return i.layerName=o||l,i.symbolType=u||"Circle",s.id=s.id||l,i.options=s,i.data=c||[],i._init(),i}return(0,i.default)(r,[{key:"_init",value:function(){this.themeLayer=new u.default.supermap.RankSymbolThemeLayer(this.layerName,this.symbolType,this.options),this.map.addLayer(this.themeLayer),this.themeLayer.addFeatures(this.data)}}]),r}(u.default.Evented);t.default=l},
- /***/1771:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i,o=n(r(5671)),s=n(r(3144)),u=n(r(9340)),l=n(r(8557)),c=n(r(8808)),d=n(r(3899)),f=n(r(9635)),h=n(r(7006)),p=n(r(339)),y=(0,c.default)(f.default,h.default)((i=function(e){(0,u.default)(r,e);var t=(0,l.default)(r);function r(){return(0,o.default)(this,r),t.apply(this,arguments)}return(0,s.default)(r,[{key:"loaded",value:function(e){this.viewModel=new p.default(e,this.props)}},{key:"removed",value:function(){this.viewModel=null}},{key:"render",value:function(){return null}}]),r}(d.default.Component),i.defaultProps={scheme:"xyz",visible:!0,opacity:1},a=i))||a;t.default=y},
- /***/339:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=n(r(375));r(2395);var l=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n){var i;(0,a.default)(this,r),(i=t.call(this)).map=e;var o=n.layerId,s=n.tileSize,u=n.mapUrl,l=n.tiles,c=n.bounds,d=n.minZoom,f=void 0===d?0:d,h=n.maxZoom,p=void 0===h?22:h,y=n.attribution,m=n.scheme,v=void 0===m?"xyz":m,g=n.visible,b=void 0===g||g,w=n.opacity,S=void 0===w?1:w,L=n.before;return i.layerId=o,i.tileSize=s,i.mapUrl=u,i.tiles=l,i.bounds=c,i.minZoom=f,i.maxZoom=p,i.attribution=y,i.scheme=v,i.opacity=S,i.visibility=b?"visible":"none",i.before=L,// enhance扩展,传iserver标识是iserver rest map
- i.rasterSource="",i._init(),i}return(0,i.default)(r,[{key:"_init",value:function(){this.mapUrl?this._addRestMapLayer():this._addLayer()}},{key:"_addRestMapLayer",value:function(){var e=this;new u.default.supermap.MapService(this.mapUrl).getMapInfo((function(t){e.layerId||(e.layerId=t.name),!e.tileSize&&t.viewer&&(e.tileSize=t.viewer.width);var r=t.bounds;!e.bounds&&r&&(e.bounds=[r.left,r.bottom,r.right,r.top]),e.rasterSource="iserver",e.tiles=[e.mapUrl],e._addLayer(t)}))}},{key:"_addLayer",value:function(){this.map.addLayer({id:this.layerId||"raster-layer-".concat((new Date).getTime()),type:"raster",layout:{visibility:this.visibility},paint:{"raster-opacity":this.opacity},source:{bounds:this.bounds||[-180,-85.051129,180,85.051129],type:"raster",tileSize:this.tileSize||256,tiles:this.tiles,rasterSource:this.rasterSource,minzoom:this.minZoom,maxzoom:this.maxZoom,scheme:this.scheme}},this.before)}}]),r}(u.default.Evented);t.default=l},
- /***/4204:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i,o=n(r(5671)),s=n(r(3144)),u=n(r(9340)),l=n(r(8557)),c=n(r(8808)),d=n(r(3899)),f=n(r(2307)),h=n(r(9635)),p=n(r(7006)),y=r(9752),m=n(r(2658)),v=(0,c.default)(h.default,p.default)((i=function(e){(0,u.default)(r,e);var t=(0,l.default)(r);function r(){return(0,o.default)(this,r),t.apply(this,arguments)}return(0,s.default)(r,[{key:"componentDidUpdate",value:function(e){var t=this.props.data;!(0,f.default)(e.data,t)&&this.viewModel&&this.viewModel.setData(t)}},{key:"loaded",value:function(e){var t=this.props.onLoad;this.viewModel=new m.default(e,this.props),(0,y.isFunction)(t)&&t(this.viewModel.themeLayer,e)}},{key:"render",value:function(){return null}}]),r}(d.default.Component),i.defaultProps={options:{}},a=i))||a;t.default=v},
- /***/2658:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=n(r(5671)),i=n(r(3144)),o=n(r(9340)),s=n(r(8557)),u=n(r(375));r(2395);var l=function(e){(0,o.default)(r,e);var t=(0,s.default)(r);function r(e,n){var i;(0,a.default)(this,r),(i=t.call(this)).map=e;var o=n.options,s=n.layerId,u=n.data,l=n.layerName;return i.layerName=l||s,o.id=o.id||s,i.options=o,i.data=u||[],i._init(),i}return(0,i.default)(r,[{key:"_init",value:function(){this.themeLayer=new u.default.supermap.UniqueThemeLayer(this.layerName,this.options),this.map.addLayer(this.themeLayer),this.data&&this.data.length&&this.setData(this.data)}},{key:"setData",value:function(e){this.themeLayer.addFeatures(e)}}]),r}(u.default.Evented);t.default=l},
- /***/2125:
- /***/function(e,t,r){"use strict";var n=r(4836).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,i=n(r(5671)),o=n(r(3144)),s=n(r(9340)),u=n(r(8557)),l=n(r(8808)),c=n(r(3899)),d=n(r(9635)),f=n(r(7006)),h=(0,l.default)(d.default,f.default)(a=function(e){(0,s.default)(r,e);var t=(0,u.default)(r);function r(){return(0,i.default)(this,r),t.apply(this,arguments)}return(0,o.default)(r,[{key:"loaded",value:function(e){e&&e.addStyle&&e.addStyle(this.props.styleOptions,this.props.before)}},{key:"render",value:function(){return null}}]),r}(c.default.Component))||a;t.default=h},
- /***/8874:
- /***/function(e){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},
- /***/7187:
- /***/function(e){"use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- var t,r="object"===typeof Reflect?Reflect:null,n=r&&"function"===typeof r.apply?r.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&"function"===typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var a=Number.isNaN||function(e){return e!==e};function i(){i.init.call(this)}e.exports=i,e.exports.once=function(e,t){return new Promise((function(r,n){function a(r){e.removeListener(t,i),n(r)}function i(){"function"===typeof e.removeListener&&e.removeListener("error",a),r([].slice.call(arguments))}y(e,t,i,{once:!0}),"error"!==t&&function(e,t,r){"function"===typeof e.on&&y(e,"error",t,r)}(e,a,{once:!0})}))},
- // Backwards-compat with node 0.10.x
- i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;
- // By default EventEmitters will print a warning if more than 10 listeners are
- // added to it. This is a useful default which helps finding memory leaks.
- var o=10;function s(e){if("function"!==typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function u(e){return void 0===e._maxListeners?i.defaultMaxListeners:e._maxListeners}function l(e,t,r,n){var a,i,o,l;if(s(r),void 0===(i=e._events)?(i=e._events=Object.create(null),e._eventsCount=0):(
- // To avoid recursion in the case that type === "newListener"! Before
- // adding it to the listeners, first emit "newListener".
- void 0!==i.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),
- // Re-assign `events` because a newListener handler could have caused the
- // this._events to be assigned to a new object
- i=e._events),o=i[t]),void 0===o)
- // Optimize the case of one listener. Don't need the extra array object.
- o=i[t]=r,++e._eventsCount;else if("function"===typeof o?
- // Adding the second element, need to change to array.
- o=i[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),(
- // Check for listener leak
- a=u(e))>0&&o.length>a&&!o.warned){o.warned=!0;
- // No error code for this since it is a Warning
- // eslint-disable-next-line no-restricted-syntax
- var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,l=c,console&&console.warn&&console.warn(l)}return e}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},a=c.bind(n);return a.listener=r,n.wrapFn=a,a}function f(e,t,r){var n=e._events;if(void 0===n)return[];var a=n[t];return void 0===a?[]:"function"===typeof a?r?[a.listener||a]:[a]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(a):p(a,a.length)}function h(e){var t=this._events;if(void 0!==t){var r=t[e];if("function"===typeof r)return 1;if(void 0!==r)return r.length}return 0}function p(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function y(e,t,r,n){if("function"===typeof e.on)n.once?e.once(t,r):e.on(t,r);else{if("function"!==typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);
- // EventTarget does not have `error` event semantics like Node
- // EventEmitters, we do not listen for `error` events here.
- e.addEventListener(t,(function a(i){
- // IE does not have builtin `{ once: true }` support so we
- // have to do it manually.
- n.once&&e.removeEventListener(t,a),r(i)}))}}
- /***/Object.defineProperty(i,"defaultMaxListeners",{enumerable:!0,get:function(){return o},set:function(e){if("number"!==typeof e||e<0||a(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");o=e}}),i.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},
- // Obviously not all Emitters should be limited to 10. This function allows
- // that to be increased. Set to zero for unlimited.
- i.prototype.setMaxListeners=function(e){if("number"!==typeof e||e<0||a(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},i.prototype.getMaxListeners=function(){return u(this)},i.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var a="error"===e,i=this._events;if(void 0!==i)a=a&&void 0===i.error;else if(!a)return!1;
- // If there is no 'error' event listener then throw.
- if(a){var o;if(t.length>0&&(o=t[0]),o instanceof Error)
- // Note: The comments on the `throw` lines are intentional, they show
- // up in Node's output if this results in an unhandled exception.
- throw o;// Unhandled 'error' event
- // At least give some kind of context to the user
- var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s;// Unhandled 'error' event
- }var u=i[e];if(void 0===u)return!1;if("function"===typeof u)n(u,this,t);else{var l=u.length,c=p(u,l);for(r=0;r<l;++r)n(c[r],this,t)}return!0},i.prototype.addListener=function(e,t){return l(this,e,t,!1)},i.prototype.on=i.prototype.addListener,i.prototype.prependListener=function(e,t){return l(this,e,t,!0)},i.prototype.once=function(e,t){return s(t),this.on(e,d(this,e,t)),this},i.prototype.prependOnceListener=function(e,t){return s(t),this.prependListener(e,d(this,e,t)),this},
- // Emits a 'removeListener' event if and only if the listener was removed.
- i.prototype.removeListener=function(e,t){var r,n,a,i,o;if(s(t),void 0===(n=this._events))return this;if(void 0===(r=n[e]))return this;if(r===t||r.listener===t)0===--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!==typeof r){for(a=-1,i=r.length-1;i>=0;i--)if(r[i]===t||r[i].listener===t){o=r[i].listener,a=i;break}if(a<0)return this;0===a?r.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,a),1===r.length&&(n[e]=r[0]),void 0!==n.removeListener&&this.emit("removeListener",e,o||t)}return this},i.prototype.off=i.prototype.removeListener,i.prototype.removeAllListeners=function(e){var t,r,n;if(void 0===(r=this._events))return this;
- // not listening for removeListener, no need to emit
- if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0===--this._eventsCount?this._events=Object.create(null):delete r[e]),this;
- // emit removeListener for all listeners on all events
- if(0===arguments.length){var a,i=Object.keys(r);for(n=0;n<i.length;++n)"removeListener"!==(a=i[n])&&this.removeAllListeners(a);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"===typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)
- // LIFO order
- for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},i.prototype.listeners=function(e){return f(this,e,!0)},i.prototype.rawListeners=function(e){return f(this,e,!1)},i.listenerCount=function(e,t){return"function"===typeof e.listenerCount?e.listenerCount(t):h.call(e,t)},i.prototype.listenerCount=h,i.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},
- /***/8679:
- /***/function(e,t,r){"use strict";var n=r(7109),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};
- /**
- * Copyright 2015, Yahoo! Inc.
- * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
- */function u(e){
- // React v16.11 and below
- return n.isMemo(e)?o:s[e.$$typeof]||a;// React v16.12 and above
- }s[n.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[n.Memo]=o;var l=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,h=Object.getPrototypeOf,p=Object.prototype;e.exports=function e(t,r,n){if("string"!==typeof r){
- // don't hoist over string (html) components
- if(p){var a=h(r);a&&a!==p&&e(t,a,n)}var o=c(r);d&&(o=o.concat(d(r)));for(var s=u(t),y=u(r),m=0;m<o.length;++m){var v=o[m];if(!i[v]&&(!n||!n[v])&&(!y||!y[v])&&(!s||!s[v])){var g=f(r,v);try{
- // Avoid failures from read-only properties
- l(t,v,g)}catch(b){}}}}return t}},
- /***/6103:
- /***/function(e,t){"use strict";
- /** @license React v16.13.1
- * react-is.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */var r="function"===typeof Symbol&&Symbol.for,n=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,i=r?Symbol.for("react.fragment"):60107,o=r?Symbol.for("react.strict_mode"):60108,s=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,l=r?Symbol.for("react.context"):60110,c=r?Symbol.for("react.async_mode"):60111,d=r?Symbol.for("react.concurrent_mode"):60111,f=r?Symbol.for("react.forward_ref"):60112,h=r?Symbol.for("react.suspense"):60113,p=r?Symbol.for("react.suspense_list"):60120,y=r?Symbol.for("react.memo"):60115,m=r?Symbol.for("react.lazy"):60116,v=r?Symbol.for("react.block"):60121,g=r?Symbol.for("react.fundamental"):60117,b=r?Symbol.for("react.responder"):60118,w=r?Symbol.for("react.scope"):60119;function S(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case c:case d:case i:case s:case o:case h:return e;default:switch(e=e&&e.$$typeof){case l:case f:case m:case y:case u:return e;default:return t}}case a:return t}}}function L(e){return S(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=l,t.ContextProvider=u,t.Element=n,t.ForwardRef=f,t.Fragment=i,t.Lazy=m,t.Memo=y,t.Portal=a,t.Profiler=s,t.StrictMode=o,t.Suspense=h,t.isAsyncMode=function(e){return L(e)||S(e)===c},t.isConcurrentMode=L,t.isContextConsumer=function(e){return S(e)===l},t.isContextProvider=function(e){return S(e)===u},t.isElement=function(e){return"object"===typeof e&&null!==e&&e.$$typeof===n},t.isForwardRef=function(e){return S(e)===f},t.isFragment=function(e){return S(e)===i},t.isLazy=function(e){return S(e)===m},t.isMemo=function(e){return S(e)===y},t.isPortal=function(e){return S(e)===a},t.isProfiler=function(e){return S(e)===s},t.isStrictMode=function(e){return S(e)===o},t.isSuspense=function(e){return S(e)===h},t.isValidElementType=function(e){return"string"===typeof e||"function"===typeof e||e===i||e===d||e===s||e===o||e===h||e===p||"object"===typeof e&&null!==e&&(e.$$typeof===m||e.$$typeof===y||e.$$typeof===u||e.$$typeof===l||e.$$typeof===f||e.$$typeof===g||e.$$typeof===b||e.$$typeof===w||e.$$typeof===v)},t.typeOf=S},
- /***/7109:
- /***/function(e,t,r){"use strict";e.exports=r(6103)},
- /***/5717:
- /***/function(e){"function"===typeof Object.create?
- // implementation from standard node.js 'util' module
- e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:
- // old school shim for old browsers
- e.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}
- /***/},
- /***/1633:
- /***/function(e,t,r){
- /**
- * lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
- /** Used as references for various `Number` constants. */
- var n=1/0,a="[object Symbol]",i="\\ud800-\\udfff",o="\\u0300-\\u036f\\ufe20-\\ufe23",s="\\u20d0-\\u20f0",u="\\ufe0e\\ufe0f",l="["+i+"]",c="["+o+s+"]",d="\\ud83c[\\udffb-\\udfff]",f="[^"+i+"]",h="(?:\\ud83c[\\udde6-\\uddff]){2}",p="[\\ud800-\\udbff][\\udc00-\\udfff]",y="\\u200d",m="(?:"+c+"|"+d+")"+"?",v="["+u+"]?",g=v+m+("(?:"+y+"(?:"+[f,h,p].join("|")+")"+v+m+")*"),b="(?:"+[f+c+"?",c,h,p,l].join("|")+")",w=RegExp(d+"(?="+d+")|"+b+g,"g"),S=RegExp("["+y+i+o+s+u+"]"),L="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,E="object"==typeof self&&self&&self.Object===Object&&self,M=L||E||Function("return this")();
- /** `Object#toString` result references. */
- /**
- * Checks if `string` contains Unicode symbols.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {boolean} Returns `true` if a symbol is found, else `false`.
- */
- function k(e){return S.test(e)}
- /**
- * Converts `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */function x(e){return k(e)?
- /**
- * Converts a Unicode `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
- function(e){return e.match(w)||[]}
- /** Used for built-in method references. */(e):
- /**
- * Converts an ASCII `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
- function(e){return e.split("")}(e)}var T=Object.prototype.toString,F=M.Symbol,P=F?F.prototype:void 0,C=P?P.toString:void 0;
- /**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
- /**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */
- function N(e){
- // Exit early for strings to avoid a performance hit in some environments.
- if("string"==typeof e)return e;if(
- /**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
- function(e){return"symbol"==typeof e||
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
- function(e){return!!e&&"object"==typeof e}(e)&&T.call(e)==a}
- /**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */(e))return C?C.call(e):"";var t=e+"";return"0"==t&&1/e==-n?"-0":t}
- /**
- * Casts `array` to a slice if it's needed.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {number} start The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the cast slice.
- */function W(e,t,r){var n=e.length;return r=void 0===r?n:r,!t&&r>=n?e:
- /**
- * The base implementation of `_.slice` without an iteratee call guard.
- *
- * @private
- * @param {Array} array The array to slice.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the slice of `array`.
- */
- function(e,t,r){var n=-1,a=e.length;t<0&&(t=-t>a?0:a+t),(r=r>a?a:r)<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(a);++n<a;)i[n]=e[n+t];return i}(e,t,r)}
- /**
- * Creates a function like `_.lowerFirst`.
- *
- * @private
- * @param {string} methodName The name of the `String` case method to use.
- * @returns {Function} Returns the new case function.
- */function j(e){return null==e?"":N(e)}
- /**
- * Converts the first character of `string` to upper case and the remaining
- * to lower case.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to capitalize.
- * @returns {string} Returns the capitalized string.
- * @example
- *
- * _.capitalize('FRED');
- * // => 'Fred'
- */
- /**
- * Converts the first character of `string` to upper case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.upperFirst('fred');
- * // => 'Fred'
- *
- * _.upperFirst('FRED');
- * // => 'FRED'
- */
- var I,O=(I="toUpperCase",function(e){var t=k(e=j(e))?x(e):void 0,r=t?t[0]:e.charAt(0),n=t?W(t,1).join(""):e.slice(1);return r[I]()+n});e.exports=function(e){return O(j(e).toLowerCase())}},
- /***/3465:
- /***/function(e,t,r){
- /* module decorator */e=r.nmd(e);
- /**
- * lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
- /** Used as the size to enable large array optimizations. */
- var n="__lodash_hash_undefined__",a=9007199254740991,i="[object Arguments]",o="[object Boolean]",s="[object Date]",u="[object Function]",l="[object GeneratorFunction]",c="[object Map]",d="[object Number]",f="[object Object]",h="[object Promise]",p="[object RegExp]",y="[object Set]",m="[object String]",v="[object Symbol]",g="[object WeakMap]",b="[object ArrayBuffer]",w="[object DataView]",S="[object Float32Array]",L="[object Float64Array]",E="[object Int8Array]",M="[object Int16Array]",k="[object Int32Array]",x="[object Uint8Array]",T="[object Uint8ClampedArray]",F="[object Uint16Array]",P="[object Uint32Array]",C=/\w*$/,N=/^\[object .+?Constructor\]$/,W=/^(?:0|[1-9]\d*)$/,j={};
- /** Used to stand-in for `undefined` hash values. */j[i]=j["[object Array]"]=j[b]=j[w]=j[o]=j[s]=j[S]=j[L]=j[E]=j[M]=j[k]=j[c]=j[d]=j[f]=j[p]=j[y]=j[m]=j[v]=j[x]=j[T]=j[F]=j[P]=!0,j["[object Error]"]=j[u]=j[g]=!1;
- /** Detect free variable `global` from Node.js. */
- var I="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,O="object"==typeof self&&self&&self.Object===Object&&self,D=I||O||Function("return this")(),R=t&&!t.nodeType&&t,V=R&&e&&!e.nodeType&&e,U=V&&V.exports===R;
- /** Detect free variable `self`. */
- /**
- * Adds the key-value `pair` to `map`.
- *
- * @private
- * @param {Object} map The map to modify.
- * @param {Array} pair The key-value pair to add.
- * @returns {Object} Returns `map`.
- */
- function A(e,t){
- // Don't return `map.set` because it's not chainable in IE 11.
- return e.set(t[0],t[1]),e}
- /**
- * Adds `value` to `set`.
- *
- * @private
- * @param {Object} set The set to modify.
- * @param {*} value The value to add.
- * @returns {Object} Returns `set`.
- */function q(e,t){
- // Don't return `set.add` because it's not chainable in IE 11.
- return e.add(t),e}
- /**
- * A specialized version of `_.forEach` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns `array`.
- */
- /**
- * A specialized version of `_.reduce` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @param {boolean} [initAccum] Specify using the first element of `array` as
- * the initial value.
- * @returns {*} Returns the accumulated value.
- */
- function K(e,t,r,n){var a=-1,i=e?e.length:0;for(n&&i&&(r=e[++a]);++a<i;)r=t(r,e[a],a,e);return r}
- /**
- * The base implementation of `_.times` without support for iteratee shorthands
- * or max array length checks.
- *
- * @private
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- */
- /**
- * Checks if `value` is a host object in IE < 9.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
- */
- function X(e){
- // Many host objects are `Object` objects that can coerce to strings
- // despite having improperly defined `toString` methods.
- var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(r){}return t}
- /**
- * Converts `map` to its key-value pairs.
- *
- * @private
- * @param {Object} map The map to convert.
- * @returns {Array} Returns the key-value pairs.
- */function Z(e){var t=-1,r=Array(e.size);return e.forEach((function(e,n){r[++t]=[n,e]})),r}
- /**
- * Creates a unary function that invokes `func` with its argument transformed.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} transform The argument transform.
- * @returns {Function} Returns the new function.
- */function z(e,t){return function(r){return e(t(r))}}
- /**
- * Converts `set` to an array of its values.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
- */function Y(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}
- /** Used for built-in method references. */var B=Array.prototype,G=Function.prototype,J=Object.prototype,H=D["__core-js_shared__"],Q=function(){var e=/[^.]+$/.exec(H&&H.keys&&H.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),_=G.toString,$=J.hasOwnProperty,ee=J.toString,te=RegExp("^"+_.call($).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),re=U?D.Buffer:void 0,ne=D.Symbol,ae=D.Uint8Array,ie=z(Object.getPrototypeOf,Object),oe=Object.create,se=J.propertyIsEnumerable,ue=B.splice,le=Object.getOwnPropertySymbols,ce=re?re.isBuffer:void 0,de=z(Object.keys,Object),fe=Re(D,"DataView"),he=Re(D,"Map"),pe=Re(D,"Promise"),ye=Re(D,"Set"),me=Re(D,"WeakMap"),ve=Re(Object,"create"),ge=Ke(fe),be=Ke(he),we=Ke(pe),Se=Ke(ye),Le=Ke(me),Ee=ne?ne.prototype:void 0,Me=Ee?Ee.valueOf:void 0;
- /** Used to detect overreaching core-js shims. */
- /**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function ke(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}
- /**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
- /**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function xe(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}
- /**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
- /**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function Te(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}
- /**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
- /**
- * Creates a stack cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function Fe(e){this.__data__=new xe(e)}
- /**
- * Removes all key-value entries from the stack.
- *
- * @private
- * @name clear
- * @memberOf Stack
- */
- /**
- * Creates an array of the enumerable property names of the array-like `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @param {boolean} inherited Specify returning inherited property names.
- * @returns {Array} Returns the array of property names.
- */
- function Pe(e,t){
- // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
- // Safari 9 makes `arguments.length` enumerable in strict mode.
- var r=Ze(e)||
- /**
- * Checks if `value` is likely an `arguments` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- * else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
- function(e){
- // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
- /**
- * This method is like `_.isArrayLike` except that it also checks if `value`
- * is an object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array-like object,
- * else `false`.
- * @example
- *
- * _.isArrayLikeObject([1, 2, 3]);
- * // => true
- *
- * _.isArrayLikeObject(document.body.children);
- * // => true
- *
- * _.isArrayLikeObject('abc');
- * // => false
- *
- * _.isArrayLikeObject(_.noop);
- * // => false
- */
- return function(e){
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
- return function(e){return!!e&&"object"==typeof e}
- /**
- * Creates an array of the own enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * for more details.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keys(new Foo);
- * // => ['a', 'b'] (iteration order is not guaranteed)
- *
- * _.keys('hi');
- * // => ['0', '1']
- */(e)&&ze(e)}
- /**
- * Checks if `value` is a buffer.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
- * @example
- *
- * _.isBuffer(new Buffer(2));
- * // => true
- *
- * _.isBuffer(new Uint8Array(2));
- * // => false
- */(e)&&$.call(e,"callee")&&(!se.call(e,"callee")||ee.call(e)==i)}
- /**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */(e)?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}
- /**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */(e.length,String):[],n=r.length,a=!!n;for(var o in e)!t&&!$.call(e,o)||a&&("length"==o||Ae(o,n))||r.push(o);return r}
- /**
- * Assigns `value` to `key` of `object` if the existing value is not equivalent
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */function Ce(e,t,r){var n=e[t];$.call(e,t)&&Xe(n,r)&&(void 0!==r||t in e)||(e[t]=r)}
- /**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */function Ne(e,t){for(var r=e.length;r--;)if(Xe(e[r][0],t))return r;return-1}
- /**
- * The base implementation of `_.assign` without support for multiple sources
- * or `customizer` functions.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @returns {Object} Returns `object`.
- */
- /**
- * The base implementation of `_.clone` and `_.cloneDeep` which tracks
- * traversed objects.
- *
- * @private
- * @param {*} value The value to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @param {boolean} [isFull] Specify a clone including symbols.
- * @param {Function} [customizer] The function to customize cloning.
- * @param {string} [key] The key of `value`.
- * @param {Object} [object] The parent object of `value`.
- * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
- * @returns {*} Returns the cloned value.
- */
- function We(e,t,r,n,a,h,g){var N;if(n&&(N=h?n(e,a,h,g):n(e)),void 0!==N)return N;if(!Ge(e))return e;var W=Ze(e);if(W){if(N=
- /**
- * Initializes an array clone.
- *
- * @private
- * @param {Array} array The array to clone.
- * @returns {Array} Returns the initialized clone.
- */
- function(e){var t=e.length,r=e.constructor(t);
- // Add properties assigned by `RegExp#exec`.
- t&&"string"==typeof e[0]&&$.call(e,"index")&&(r.index=e.index,r.input=e.input);return r}
- /**
- * Initializes an object clone.
- *
- * @private
- * @param {Object} object The object to clone.
- * @returns {Object} Returns the initialized clone.
- */(e),!t)
- /**
- * Copies the values of `source` to `array`.
- *
- * @private
- * @param {Array} source The array to copy values from.
- * @param {Array} [array=[]] The array to copy values to.
- * @returns {Array} Returns `array`.
- */
- return function(e,t){var r=-1,n=e.length;t||(t=Array(n));for(;++r<n;)t[r]=e[r];return t}
- /**
- * Copies properties of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy properties from.
- * @param {Array} props The property identifiers to copy.
- * @param {Object} [object={}] The object to copy properties to.
- * @param {Function} [customizer] The function to customize copied values.
- * @returns {Object} Returns `object`.
- */(e,N)}else{var I=Ue(e),O=I==u||I==l;if(Ye(e))
- /**
- * Creates a clone of `buffer`.
- *
- * @private
- * @param {Buffer} buffer The buffer to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Buffer} Returns the cloned buffer.
- */
- return function(e,t){if(t)return e.slice();var r=new e.constructor(e.length);return e.copy(r),r}
- /**
- * Creates a clone of `arrayBuffer`.
- *
- * @private
- * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
- * @returns {ArrayBuffer} Returns the cloned array buffer.
- */(e,t);if(I==f||I==i||O&&!h){if(X(e))return h?e:{};if(N=function(e){return"function"!=typeof e.constructor||qe(e)?{}:(t=ie(e),Ge(t)?oe(t):{});
- /**
- * The base implementation of `_.create` without support for assigning
- * properties to the created object.
- *
- * @private
- * @param {Object} prototype The object to inherit from.
- * @returns {Object} Returns the new object.
- */
- var t;
- /**
- * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
- * `keysFunc` and `symbolsFunc` to get the enumerable property names and
- * symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @param {Function} symbolsFunc The function to get the symbols of `object`.
- * @returns {Array} Returns the array of property names and symbols.
- */}
- /**
- * Initializes an object clone based on its `toStringTag`.
- *
- * **Note:** This function only supports cloning values with tags of
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
- *
- * @private
- * @param {Object} object The object to clone.
- * @param {string} tag The `toStringTag` of the object to clone.
- * @param {Function} cloneFunc The function to clone values.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the initialized clone.
- */(O?{}:e),!t)
- /**
- * Copies own symbol properties of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy symbols from.
- * @param {Object} [object={}] The object to copy symbols to.
- * @returns {Object} Returns `object`.
- */
- return function(e,t){return Oe(e,Ve(e),t)}
- /**
- * Creates an array of own enumerable property names and symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names and symbols.
- */(e,function(e,t){return e&&Oe(t,Je(t),e)}(N,e))}else{if(!j[I])return h?e:{};N=function(e,t,r,n){var a=e.constructor;switch(t){case b:return Ie(e);case o:case s:return new a(+e);case w:
- /**
- * Creates a clone of `dataView`.
- *
- * @private
- * @param {Object} dataView The data view to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the cloned data view.
- */
- return function(e,t){var r=t?Ie(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}
- /**
- * Creates a clone of `map`.
- *
- * @private
- * @param {Object} map The map to clone.
- * @param {Function} cloneFunc The function to clone values.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the cloned map.
- */(e,n);case S:case L:case E:case M:case k:case x:case T:case F:case P:
- /**
- * Creates a clone of `typedArray`.
- *
- * @private
- * @param {Object} typedArray The typed array to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the cloned typed array.
- */
- return function(e,t){var r=t?Ie(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}(e,n);case c:return function(e,t,r){var n=t?r(Z(e),!0):Z(e);return K(n,A,new e.constructor)}
- /**
- * Creates a clone of `regexp`.
- *
- * @private
- * @param {Object} regexp The regexp to clone.
- * @returns {Object} Returns the cloned regexp.
- */(e,n,r);case d:case m:return new a(e);case p:return function(e){var t=new e.constructor(e.source,C.exec(e));return t.lastIndex=e.lastIndex,t}
- /**
- * Creates a clone of `set`.
- *
- * @private
- * @param {Object} set The set to clone.
- * @param {Function} cloneFunc The function to clone values.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the cloned set.
- */(e);case y:return function(e,t,r){var n=t?r(Y(e),!0):Y(e);return K(n,q,new e.constructor)}
- /**
- * Creates a clone of the `symbol` object.
- *
- * @private
- * @param {Object} symbol The symbol object to clone.
- * @returns {Object} Returns the cloned symbol object.
- */(e,n,r);case v:return i=e,Me?Object(Me.call(i)):{}}var i}
- /**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */(e,I,We,t)}}
- // Check for circular references and return its corresponding clone.
- g||(g=new Fe);var D=g.get(e);if(D)return D;if(g.set(e,N),!W)var R=r?function(e){return function(e,t,r){var n=t(e);return Ze(e)?n:
- /**
- * Appends the elements of `values` to `array`.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to append.
- * @returns {Array} Returns `array`.
- */
- function(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}(n,r(e))}
- /**
- * The base implementation of `getTag`.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */(e,Je,Ve)}
- /**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */(e):Je(e);return function(e,t){for(var r=-1,n=e?e.length:0;++r<n&&!1!==t(e[r],r,e););}(R||e,(function(a,i){R&&(a=e[i=a]),
- // Recursively populate clone (susceptible to call stack limits).
- Ce(N,i,We(a,t,r,n,i,e,g))})),N}
- /**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */
- function je(e){return!(!Ge(e)||(t=e,Q&&Q in t))&&(Be(e)||X(e)?te:N).test(Ke(e));
- /**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
- var t;
- /**
- * Checks if `value` is likely a prototype object.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
- */}
- /**
- * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */function Ie(e){var t=new e.constructor(e.byteLength);return new ae(t).set(new ae(e)),t}function Oe(e,t,r,n){r||(r={});for(var a=-1,i=t.length;++a<i;){var o=t[a],s=n?n(r[o],e[o],o,r,e):void 0;Ce(r,o,void 0===s?e[o]:s)}return r}function De(e,t){var r=e.__data__;
- /**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
- return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?r["string"==typeof t?"string":"hash"]:r.map}
- /**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */function Re(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return je(r)?r:void 0}
- /**
- * Creates an array of the own enumerable symbol properties of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of symbols.
- */
- // Add methods to `Hash`.
- ke.prototype.clear=function(){this.__data__=ve?ve(null):{}}
- /**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */,ke.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]}
- /**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */,ke.prototype.get=function(e){var t=this.__data__;if(ve){var r=t[e];return r===n?void 0:r}return $.call(t,e)?t[e]:void 0}
- /**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */,ke.prototype.has=function(e){var t=this.__data__;return ve?void 0!==t[e]:$.call(t,e)}
- /**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */,ke.prototype.set=function(e,t){return this.__data__[e]=ve&&void 0===t?n:t,this},
- // Add methods to `ListCache`.
- xe.prototype.clear=function(){this.__data__=[]}
- /**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */,xe.prototype.delete=function(e){var t=this.__data__,r=Ne(t,e);return!(r<0)&&(r==t.length-1?t.pop():ue.call(t,r,1),!0)}
- /**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */,xe.prototype.get=function(e){var t=this.__data__,r=Ne(t,e);return r<0?void 0:t[r][1]}
- /**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */,xe.prototype.has=function(e){return Ne(this.__data__,e)>-1}
- /**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */,xe.prototype.set=function(e,t){var r=this.__data__,n=Ne(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},
- // Add methods to `MapCache`.
- Te.prototype.clear=function(){this.__data__={hash:new ke,map:new(he||xe),string:new ke}}
- /**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */,Te.prototype.delete=function(e){return De(this,e).delete(e)}
- /**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */,Te.prototype.get=function(e){return De(this,e).get(e)}
- /**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */,Te.prototype.has=function(e){return De(this,e).has(e)}
- /**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */,Te.prototype.set=function(e,t){return De(this,e).set(e,t),this},
- // Add methods to `Stack`.
- Fe.prototype.clear=function(){this.__data__=new xe}
- /**
- * Removes `key` and its value from the stack.
- *
- * @private
- * @name delete
- * @memberOf Stack
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */,Fe.prototype.delete=function(e){return this.__data__.delete(e)}
- /**
- * Gets the stack value for `key`.
- *
- * @private
- * @name get
- * @memberOf Stack
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */,Fe.prototype.get=function(e){return this.__data__.get(e)}
- /**
- * Checks if a stack value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Stack
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */,Fe.prototype.has=function(e){return this.__data__.has(e)}
- /**
- * Sets the stack `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Stack
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the stack cache instance.
- */,Fe.prototype.set=function(e,t){var r=this.__data__;if(r instanceof xe){var n=r.__data__;if(!he||n.length<199)return n.push([e,t]),this;r=this.__data__=new Te(n)}return r.set(e,t),this};var Ve=le?z(le,Object):
- /**
- * This method returns a new empty array.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {Array} Returns the new empty array.
- * @example
- *
- * var arrays = _.times(2, _.stubArray);
- *
- * console.log(arrays);
- * // => [[], []]
- *
- * console.log(arrays[0] === arrays[1]);
- * // => false
- */
- function(){return[]}
- /**
- * This method returns `false`.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {boolean} Returns `false`.
- * @example
- *
- * _.times(2, _.stubFalse);
- * // => [false, false]
- */,Ue=function(e){return ee.call(e)};
- /**
- * Gets the `toStringTag` of `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */function Ae(e,t){return!!(t=null==t?a:t)&&("number"==typeof e||W.test(e))&&e>-1&&e%1==0&&e<t}function qe(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||J)}
- /**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to process.
- * @returns {string} Returns the source code.
- */function Ke(e){if(null!=e){try{return _.call(e)}catch(t){}try{return e+""}catch(t){}}return""}
- /**
- * This method is like `_.clone` except that it recursively clones `value`.
- *
- * @static
- * @memberOf _
- * @since 1.0.0
- * @category Lang
- * @param {*} value The value to recursively clone.
- * @returns {*} Returns the deep cloned value.
- * @see _.clone
- * @example
- *
- * var objects = [{ 'a': 1 }, { 'b': 2 }];
- *
- * var deep = _.cloneDeep(objects);
- * console.log(deep[0] === objects[0]);
- * // => false
- */
- /**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
- function Xe(e,t){return e===t||e!==e&&t!==t}
- // Fallback for data views, maps, sets, and weak maps in IE 11,
- // for data views in Edge < 14, and promises in Node.js.
- (fe&&Ue(new fe(new ArrayBuffer(1)))!=w||he&&Ue(new he)!=c||pe&&Ue(pe.resolve())!=h||ye&&Ue(new ye)!=y||me&&Ue(new me)!=g)&&(Ue=function(e){var t=ee.call(e),r=t==f?e.constructor:void 0,n=r?Ke(r):void 0;if(n)switch(n){case ge:return w;case be:return c;case we:return h;case Se:return y;case Le:return g}return t});var Ze=Array.isArray;
- /**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
- *
- * _.isArrayLike(_.noop);
- * // => false
- */function ze(e){return null!=e&&
- /**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */
- function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=a}
- /**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */(e.length)&&!Be(e)}var Ye=ce||function(){return!1};
- /**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */function Be(e){
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8-9 which returns 'object' for typed array and other constructors.
- var t=Ge(e)?ee.call(e):"";return t==u||t==l}function Ge(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Je(e){return ze(e)?Pe(e):function(e){if(!qe(e))return de(e);var t=[];for(var r in Object(e))$.call(e,r)&&"constructor"!=r&&t.push(r);return t}(e)}e.exports=function(e){return We(e,!0,!0)}},
- /***/1296:
- /***/function(e,t,r){
- /**
- * lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
- /** Used as the `TypeError` message for "Functions" methods. */
- var n=NaN,a="[object Symbol]",i=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,u=/^0o[0-7]+$/i,l=parseInt,c="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,d="object"==typeof self&&self&&self.Object===Object&&self,f=c||d||Function("return this")(),h=Object.prototype.toString,p=Math.max,y=Math.min,m=function(){return f.Date.now()};
- /** Used as references for various `Number` constants. */
- /**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
- function v(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
- /**
- * Converts `value` to a number.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- * @example
- *
- * _.toNumber(3.2);
- * // => 3.2
- *
- * _.toNumber(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toNumber(Infinity);
- * // => Infinity
- *
- * _.toNumber('3.2');
- * // => 3.2
- */
- function g(e){if("number"==typeof e)return e;if(
- /**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
- function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&h.call(e)==a}(e))return n;if(v(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=v(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(i,"");var r=s.test(e);return r||u.test(e)?l(e.slice(2),r?2:8):o.test(e)?n:+e}e.exports=
- /**
- * Creates a debounced function that delays invoking `func` until after `wait`
- * milliseconds have elapsed since the last time the debounced function was
- * invoked. The debounced function comes with a `cancel` method to cancel
- * delayed `func` invocations and a `flush` method to immediately invoke them.
- * Provide `options` to indicate whether `func` should be invoked on the
- * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
- * with the last arguments provided to the debounced function. Subsequent
- * calls to the debounced function return the result of the last `func`
- * invocation.
- *
- * **Note:** If `leading` and `trailing` options are `true`, `func` is
- * invoked on the trailing edge of the timeout only if the debounced function
- * is invoked more than once during the `wait` timeout.
- *
- * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
- * until to the next tick, similar to `setTimeout` with a timeout of `0`.
- *
- * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
- * for details over the differences between `_.debounce` and `_.throttle`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to debounce.
- * @param {number} [wait=0] The number of milliseconds to delay.
- * @param {Object} [options={}] The options object.
- * @param {boolean} [options.leading=false]
- * Specify invoking on the leading edge of the timeout.
- * @param {number} [options.maxWait]
- * The maximum time `func` is allowed to be delayed before it's invoked.
- * @param {boolean} [options.trailing=true]
- * Specify invoking on the trailing edge of the timeout.
- * @returns {Function} Returns the new debounced function.
- * @example
- *
- * // Avoid costly calculations while the window size is in flux.
- * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
- *
- * // Invoke `sendMail` when clicked, debouncing subsequent calls.
- * jQuery(element).on('click', _.debounce(sendMail, 300, {
- * 'leading': true,
- * 'trailing': false
- * }));
- *
- * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
- * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
- * var source = new EventSource('/stream');
- * jQuery(source).on('message', debounced);
- *
- * // Cancel the trailing debounced invocation.
- * jQuery(window).on('popstate', debounced.cancel);
- */
- function(e,t,r){var n,a,i,o,s,u,l=0,c=!1,d=!1,f=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function h(t){var r=n,i=a;return n=a=void 0,l=t,o=e.apply(i,r)}function b(e){var r=e-u;
- // Either this is the first call, activity has stopped and we're at the
- // trailing edge, the system time has gone backwards and we're treating
- // it as the trailing edge, or we've hit the `maxWait` limit.
- return void 0===u||r>=t||r<0||d&&e-l>=i}function w(){var e=m();if(b(e))return S(e);
- // Restart the timer.
- s=setTimeout(w,function(e){var r=t-(e-u);return d?y(r,i-(e-l)):r}(e))}function S(e){
- // Only invoke if we have `lastArgs` which means `func` has been
- // debounced at least once.
- return s=void 0,f&&n?h(e):(n=a=void 0,o)}function L(){var e=m(),r=b(e);if(n=arguments,a=this,u=e,r){if(void 0===s)return function(e){
- // Invoke the leading edge.
- // Reset any `maxWait` timer.
- return l=e,
- // Start the timer for the trailing edge.
- s=setTimeout(w,t),c?h(e):o}(u);if(d)
- // Handle invocations in a tight loop.
- return s=setTimeout(w,t),h(u)}return void 0===s&&(s=setTimeout(w,t)),o}return t=g(t)||0,v(r)&&(c=!!r.leading,i=(d="maxWait"in r)?p(g(r.maxWait)||0,t):i,f="trailing"in r?!!r.trailing:f),L.cancel=function(){void 0!==s&&clearTimeout(s),l=0,n=u=a=s=void 0},L.flush=function(){return void 0===s?o:S(m())},L}},
- /***/9208:
- /***/function(e,t,r){
- /**
- * lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
- /** Used as the `TypeError` message for "Functions" methods. */
- var n="__lodash_hash_undefined__",a=1/0,i="[object Function]",o="[object GeneratorFunction]",s="[object Symbol]",u=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,l=/^\w*$/,c=/^\./,d=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,f=/\\(\\)?/g,h=/^\[object .+?Constructor\]$/,p="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,y="object"==typeof self&&self&&self.Object===Object&&self,m=p||y||Function("return this")();
- /** Used to stand-in for `undefined` hash values. */
- /** Used for built-in method references. */
- var v=Array.prototype,g=Function.prototype,b=Object.prototype,w=m["__core-js_shared__"],S=function(){var e=/[^.]+$/.exec(w&&w.keys&&w.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),L=g.toString,E=b.hasOwnProperty,M=b.toString,k=RegExp("^"+L.call(E).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),x=m.Symbol,T=v.splice,F=U(m,"Map"),P=U(Object,"create"),C=x?x.prototype:void 0,N=C?C.toString:void 0;
- /** Used to detect overreaching core-js shims. */
- /**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function W(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}
- /**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
- /**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function j(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}
- /**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
- /**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function I(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}
- /**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
- /**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
- function O(e,t){for(var r,n,a=e.length;a--;)if((r=e[a][0])===(n=t)||r!==r&&n!==n)return a;return-1}
- /**
- * The base implementation of `_.get` without support for default values.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @returns {*} Returns the resolved value.
- */function D(e,t){
- /**
- * Casts `value` to a path array if it's not one.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {Array} Returns the cast property path array.
- */
- var r;
- /**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */t=
- /**
- * Checks if `value` is a property name and not a property path.
- *
- * @private
- * @param {*} value The value to check.
- * @param {Object} [object] The object to query keys on.
- * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
- */
- function(e,t){if(X(e))return!1;var r=typeof e;if("number"==r||"symbol"==r||"boolean"==r||null==e||z(e))return!0;return l.test(e)||!u.test(e)||null!=t&&e in Object(t)}
- /**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */(t,e)?[t]:X(r=t)?r:A(r);for(var n=0,a=t.length;null!=e&&n<a;)e=e[q(t[n++])];return n&&n==a?e:void 0}
- /**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */function R(e){if(!Z(e)||(t=e,S&&S in t))return!1;
- /**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
- var t,r=
- /**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
- function(e){
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8-9 which returns 'object' for typed array and other constructors.
- var t=Z(e)?M.call(e):"";return t==i||t==o}
- /**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */(e)||
- /**
- * Checks if `value` is a host object in IE < 9.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
- */
- function(e){
- // Many host objects are `Object` objects that can coerce to strings
- // despite having improperly defined `toString` methods.
- var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(r){}return t}(e)?k:h;
- /**
- * Converts `string` to a property path array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the property path array.
- */return r.test(
- /**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to process.
- * @returns {string} Returns the source code.
- */
- function(e){if(null!=e){try{return L.call(e)}catch(t){}try{return e+""}catch(t){}}return""}
- /**
- * Creates a function that memoizes the result of `func`. If `resolver` is
- * provided, it determines the cache key for storing the result based on the
- * arguments provided to the memoized function. By default, the first argument
- * provided to the memoized function is used as the map cache key. The `func`
- * is invoked with the `this` binding of the memoized function.
- *
- * **Note:** The cache is exposed as the `cache` property on the memoized
- * function. Its creation may be customized by replacing the `_.memoize.Cache`
- * constructor with one whose instances implement the
- * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
- * method interface of `delete`, `get`, `has`, and `set`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to have its output memoized.
- * @param {Function} [resolver] The function to resolve the cache key.
- * @returns {Function} Returns the new memoized function.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- * var other = { 'c': 3, 'd': 4 };
- *
- * var values = _.memoize(_.values);
- * values(object);
- * // => [1, 2]
- *
- * values(other);
- * // => [3, 4]
- *
- * object.a = 2;
- * values(object);
- * // => [1, 2]
- *
- * // Modify the result cache.
- * values.cache.set(object, ['a', 'b']);
- * values(object);
- * // => ['a', 'b']
- *
- * // Replace `_.memoize.Cache`.
- * _.memoize.Cache = WeakMap;
- */(e))}
- /**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */function V(e,t){var r=e.__data__;return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?r["string"==typeof t?"string":"hash"]:r.map}
- /**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */function U(e,t){var r=
- /**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
- function(e,t){return null==e?void 0:e[t]}(e,t);return R(r)?r:void 0}
- // Add methods to `Hash`.
- W.prototype.clear=function(){this.__data__=P?P(null):{}}
- /**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */,W.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]}
- /**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */,W.prototype.get=function(e){var t=this.__data__;if(P){var r=t[e];return r===n?void 0:r}return E.call(t,e)?t[e]:void 0}
- /**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */,W.prototype.has=function(e){var t=this.__data__;return P?void 0!==t[e]:E.call(t,e)}
- /**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */,W.prototype.set=function(e,t){return this.__data__[e]=P&&void 0===t?n:t,this},
- // Add methods to `ListCache`.
- j.prototype.clear=function(){this.__data__=[]}
- /**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */,j.prototype.delete=function(e){var t=this.__data__,r=O(t,e);return!(r<0)&&(r==t.length-1?t.pop():T.call(t,r,1),!0)}
- /**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */,j.prototype.get=function(e){var t=this.__data__,r=O(t,e);return r<0?void 0:t[r][1]}
- /**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */,j.prototype.has=function(e){return O(this.__data__,e)>-1}
- /**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */,j.prototype.set=function(e,t){var r=this.__data__,n=O(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},
- // Add methods to `MapCache`.
- I.prototype.clear=function(){this.__data__={hash:new W,map:new(F||j),string:new W}}
- /**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */,I.prototype.delete=function(e){return V(this,e).delete(e)}
- /**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */,I.prototype.get=function(e){return V(this,e).get(e)}
- /**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */,I.prototype.has=function(e){return V(this,e).has(e)}
- /**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */,I.prototype.set=function(e,t){return V(this,e).set(e,t),this};var A=K((function(e){
- /**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */
- var t;
- /**
- * Gets the value at `path` of `object`. If the resolved value is
- * `undefined`, the `defaultValue` is returned in its place.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.get(object, 'a[0].b.c');
- * // => 3
- *
- * _.get(object, ['a', '0', 'b', 'c']);
- * // => 3
- *
- * _.get(object, 'a.b.c', 'default');
- * // => 'default'
- */e=null==(t=e)?"":function(e){
- // Exit early for strings to avoid a performance hit in some environments.
- if("string"==typeof e)return e;if(z(e))return N?N.call(e):"";var t=e+"";return"0"==t&&1/e==-a?"-0":t}(t);var r=[];return c.test(e)&&r.push(""),e.replace(d,(function(e,t,n,a){r.push(n?a.replace(f,"$1"):t||e)})),r}));
- /**
- * Converts `value` to a string key if it's not a string or symbol.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {string|symbol} Returns the key.
- */function q(e){if("string"==typeof e||z(e))return e;var t=e+"";return"0"==t&&1/e==-a?"-0":t}function K(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],i=r.cache;if(i.has(a))return i.get(a);var o=e.apply(this,n);return r.cache=i.set(a,o),o};return r.cache=new(K.Cache||I),r}
- // Assign cache to `_.memoize`.
- K.Cache=I;
- /**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
- var X=Array.isArray;function Z(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
- /**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
- function z(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&M.call(e)==s}e.exports=function(e,t,r){var n=null==e?void 0:D(e,t);return void 0===n?r:n}},
- /***/2307:
- /***/function(e,t,r){
- /* module decorator */e=r.nmd(e);
- /**
- * Lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright JS Foundation and other contributors <https://js.foundation/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
- /** Used as the size to enable large array optimizations. */
- var n="__lodash_hash_undefined__",a=1,i=2,o=9007199254740991,s="[object Arguments]",u="[object Array]",l="[object AsyncFunction]",c="[object Boolean]",d="[object Date]",f="[object Error]",h="[object Function]",p="[object GeneratorFunction]",y="[object Map]",m="[object Number]",v="[object Null]",g="[object Object]",b="[object Promise]",w="[object Proxy]",S="[object RegExp]",L="[object Set]",E="[object String]",M="[object Symbol]",k="[object Undefined]",x="[object WeakMap]",T="[object ArrayBuffer]",F="[object DataView]",P=/^\[object .+?Constructor\]$/,C=/^(?:0|[1-9]\d*)$/,N={};
- /** Used to stand-in for `undefined` hash values. */N["[object Float32Array]"]=N["[object Float64Array]"]=N["[object Int8Array]"]=N["[object Int16Array]"]=N["[object Int32Array]"]=N["[object Uint8Array]"]=N["[object Uint8ClampedArray]"]=N["[object Uint16Array]"]=N["[object Uint32Array]"]=!0,N[s]=N[u]=N[T]=N[c]=N[F]=N[d]=N[f]=N[h]=N[y]=N[m]=N[g]=N[S]=N[L]=N[E]=N[x]=!1;
- /** Detect free variable `global` from Node.js. */
- var W="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,j="object"==typeof self&&self&&self.Object===Object&&self,I=W||j||Function("return this")(),O=t&&!t.nodeType&&t,D=O&&e&&!e.nodeType&&e,R=D&&D.exports===O,V=R&&W.process,U=function(){try{return V&&V.binding&&V.binding("util")}catch(e){}}(),A=U&&U.isTypedArray;
- /** Detect free variable `self`. */
- /**
- * A specialized version of `_.some` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- */
- function q(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}
- /**
- * The base implementation of `_.times` without support for iteratee shorthands
- * or max array length checks.
- *
- * @private
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- */
- /**
- * Converts `map` to its key-value pairs.
- *
- * @private
- * @param {Object} map The map to convert.
- * @returns {Array} Returns the key-value pairs.
- */
- function K(e){var t=-1,r=Array(e.size);return e.forEach((function(e,n){r[++t]=[n,e]})),r}
- /**
- * Creates a unary function that invokes `func` with its argument transformed.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} transform The argument transform.
- * @returns {Function} Returns the new function.
- */
- /**
- * Converts `set` to an array of its values.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
- */
- function X(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}
- /** Used for built-in method references. */var Z,z,Y=Array.prototype,B=Function.prototype,G=Object.prototype,J=I["__core-js_shared__"],H=B.toString,Q=G.hasOwnProperty,_=function(){var e=/[^.]+$/.exec(J&&J.keys&&J.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),$=G.toString,ee=RegExp("^"+H.call(Q).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),te=R?I.Buffer:void 0,re=I.Symbol,ne=I.Uint8Array,ae=G.propertyIsEnumerable,ie=Y.splice,oe=re?re.toStringTag:void 0,se=Object.getOwnPropertySymbols,ue=te?te.isBuffer:void 0,le=(Z=Object.keys,z=Object,function(e){return Z(z(e))}),ce=Ve(I,"DataView"),de=Ve(I,"Map"),fe=Ve(I,"Promise"),he=Ve(I,"Set"),pe=Ve(I,"WeakMap"),ye=Ve(Object,"create"),me=Ke(ce),ve=Ke(de),ge=Ke(fe),be=Ke(he),we=Ke(pe),Se=re?re.prototype:void 0,Le=Se?Se.valueOf:void 0;
- /** Used to detect overreaching core-js shims. */
- /**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function Ee(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}
- /**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
- /**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function Me(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}
- /**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
- /**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function ke(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}
- /**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
- /**
- *
- * Creates an array cache object to store unique values.
- *
- * @private
- * @constructor
- * @param {Array} [values] The values to cache.
- */
- function xe(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new ke;++t<r;)this.add(e[t])}
- /**
- * Adds `value` to the array cache.
- *
- * @private
- * @name add
- * @memberOf SetCache
- * @alias push
- * @param {*} value The value to cache.
- * @returns {Object} Returns the cache instance.
- */
- /**
- * Creates a stack cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function Te(e){var t=this.__data__=new Me(e);this.size=t.size}
- /**
- * Removes all key-value entries from the stack.
- *
- * @private
- * @name clear
- * @memberOf Stack
- */
- /**
- * Creates an array of the enumerable property names of the array-like `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @param {boolean} inherited Specify returning inherited property names.
- * @returns {Array} Returns the array of property names.
- */
- function Fe(e,t){var r=ze(e),n=!r&&Ze(e),a=!r&&!n&&Ye(e),i=!r&&!n&&!a&&Qe(e),o=r||n||a||i,s=o?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}
- /**
- * The base implementation of `_.unary` without support for storing metadata.
- *
- * @private
- * @param {Function} func The function to cap arguments for.
- * @returns {Function} Returns the new capped function.
- */(e.length,String):[],u=s.length;for(var l in e)!t&&!Q.call(e,l)||o&&(
- // Safari 9 has enumerable `arguments.length` in strict mode.
- "length"==l||
- // Node.js 0.10 has enumerable non-index properties on buffers.
- a&&("offset"==l||"parent"==l)||
- // PhantomJS 2 has enumerable non-index properties on typed arrays.
- i&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||
- // Skip index properties.
- qe(l,u))||s.push(l);return s}
- /**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */function Pe(e,t){for(var r=e.length;r--;)if(Xe(e[r][0],t))return r;return-1}
- /**
- * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
- * `keysFunc` and `symbolsFunc` to get the enumerable property names and
- * symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @param {Function} symbolsFunc The function to get the symbols of `object`.
- * @returns {Array} Returns the array of property names and symbols.
- */
- /**
- * The base implementation of `getTag` without fallbacks for buggy environments.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
- function Ce(e){return null==e?void 0===e?k:v:oe&&oe in Object(e)?
- /**
- * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the raw `toStringTag`.
- */
- function(e){var t=Q.call(e,oe),r=e[oe];try{e[oe]=void 0;var n=!0}catch(i){}var a=$.call(e);n&&(t?e[oe]=r:delete e[oe]);return a}
- /**
- * Creates an array of the own enumerable symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of symbols.
- */(e):
- /**
- * Converts `value` to a string using `Object.prototype.toString`.
- *
- * @private
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- */
- function(e){return $.call(e)}
- /**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to convert.
- * @returns {string} Returns the source code.
- */(e)}
- /**
- * The base implementation of `_.isArguments`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- */function Ne(e){return He(e)&&Ce(e)==s}
- /**
- * The base implementation of `_.isEqual` which supports partial comparisons
- * and tracks traversed objects.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @param {boolean} bitmask The bitmask flags.
- * 1 - Unordered comparison
- * 2 - Partial comparison
- * @param {Function} [customizer] The function to customize comparisons.
- * @param {Object} [stack] Tracks traversed `value` and `other` objects.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- */function We(e,t,r,n,o){return e===t||(null==e||null==t||!He(e)&&!He(t)?e!==e&&t!==t:
- /**
- * A specialized version of `baseIsEqual` for arrays and objects which performs
- * deep comparisons and tracks traversed objects enabling objects with circular
- * references to be compared.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} [stack] Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function(e,t,r,n,o,l){var h=ze(e),p=ze(t),v=h?u:Ae(e),b=p?u:Ae(t),w=(v=v==s?g:v)==g,k=(b=b==s?g:b)==g,x=v==b;if(x&&Ye(e)){if(!Ye(t))return!1;h=!0,w=!1}if(x&&!w)return l||(l=new Te),h||Qe(e)?Oe(e,t,r,n,o,l):
- /**
- * A specialized version of `baseIsEqualDeep` for comparing objects of
- * the same `toStringTag`.
- *
- * **Note:** This function only supports comparing values with tags of
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {string} tag The `toStringTag` of the objects to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function(e,t,r,n,o,s,u){switch(r){case F:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case T:return!(e.byteLength!=t.byteLength||!s(new ne(e),new ne(t)));case c:case d:case m:
- // Coerce booleans to `1` or `0` and dates to milliseconds.
- // Invalid dates are coerced to `NaN`.
- return Xe(+e,+t);case f:return e.name==t.name&&e.message==t.message;case S:case E:
- // Coerce regexes to strings and treat strings, primitives and objects,
- // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
- // for more details.
- return e==t+"";case y:var l=K;case L:var h=n&a;if(l||(l=X),e.size!=t.size&&!h)return!1;
- // Assume cyclic values are equal.
- var p=u.get(e);if(p)return p==t;n|=i,
- // Recursively compare objects (susceptible to call stack limits).
- u.set(e,t);var v=Oe(l(e),l(t),n,o,s,u);return u.delete(e),v;case M:if(Le)return Le.call(e)==Le.call(t)}return!1}
- /**
- * A specialized version of `baseIsEqualDeep` for objects with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */(e,t,v,r,n,o,l);if(!(r&a)){var P=w&&Q.call(e,"__wrapped__"),C=k&&Q.call(t,"__wrapped__");if(P||C){var N=P?e.value():e,W=C?t.value():t;return l||(l=new Te),o(N,W,r,n,l)}}if(!x)return!1;return l||(l=new Te),function(e,t,r,n,i,o){var s=r&a,u=De(e),l=u.length,c=De(t),d=c.length;if(l!=d&&!s)return!1;var f=l;for(;f--;){var h=u[f];if(!(s?h in t:Q.call(t,h)))return!1}
- // Assume cyclic values are equal.
- var p=o.get(e);if(p&&o.get(t))return p==t;var y=!0;o.set(e,t),o.set(t,e);var m=s;for(;++f<l;){var v=e[h=u[f]],g=t[h];if(n)var b=s?n(g,v,h,t,e,o):n(v,g,h,e,t,o);
- // Recursively compare objects (susceptible to call stack limits).
- if(!(void 0===b?v===g||i(v,g,r,n,o):b)){y=!1;break}m||(m="constructor"==h)}if(y&&!m){var w=e.constructor,S=t.constructor;
- // Non `Object` object instances with different constructors are not equal.
- w==S||!("constructor"in e)||!("constructor"in t)||"function"==typeof w&&w instanceof w&&"function"==typeof S&&S instanceof S||(y=!1)}return o.delete(e),o.delete(t),y}
- /**
- * Creates an array of own enumerable property names and symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names and symbols.
- */(e,t,r,n,o,l)}
- /**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */(e,t,r,n,We,o))}function je(e){return!(!Je(e)||
- /**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
- function(e){return!!_&&_ in e}
- /**
- * Checks if `value` is likely a prototype object.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
- */(e))&&(Be(e)?ee:P).test(Ke(e))}
- /**
- * The base implementation of `_.isTypedArray` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
- */
- /**
- * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
- function Ie(e){if(!function(e){var t=e&&e.constructor,r="function"==typeof t&&t.prototype||G;return e===r}(e))return le(e);var t=[];for(var r in Object(e))Q.call(e,r)&&"constructor"!=r&&t.push(r);return t}
- /**
- * A specialized version of `baseIsEqualDeep` for arrays with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Array} array The array to compare.
- * @param {Array} other The other array to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `array` and `other` objects.
- * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
- */function Oe(e,t,r,n,o,s){var u=r&a,l=e.length,c=t.length;if(l!=c&&!(u&&c>l))return!1;
- // Assume cyclic values are equal.
- var d=s.get(e);if(d&&s.get(t))return d==t;var f=-1,h=!0,p=r&i?new xe:void 0;
- // Ignore non-index properties.
- for(s.set(e,t),s.set(t,e);++f<l;){var y=e[f],m=t[f];if(n)var v=u?n(m,y,f,t,e,s):n(y,m,f,e,t,s);if(void 0!==v){if(v)continue;h=!1;break}
- // Recursively compare arrays (susceptible to call stack limits).
- if(p){if(!q(t,(function(e,t){if(a=t,!p.has(a)&&(y===e||o(y,e,r,n,s)))return p.push(t);
- /**
- * Checks if a `cache` value for `key` exists.
- *
- * @private
- * @param {Object} cache The cache to query.
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- var a;
- /**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */}))){h=!1;break}}else if(y!==m&&!o(y,m,r,n,s)){h=!1;break}}return s.delete(e),s.delete(t),h}function De(e){return function(e,t,r){var n=t(e);return ze(e)?n:
- /**
- * Appends the elements of `values` to `array`.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to append.
- * @returns {Array} Returns `array`.
- */
- function(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}(n,r(e))}(e,_e,Ue)}
- /**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */function Re(e,t){var r=e.__data__;
- /**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
- return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?r["string"==typeof t?"string":"hash"]:r.map}
- /**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */function Ve(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return je(r)?r:void 0}
- // Add methods to `Hash`.
- Ee.prototype.clear=function(){this.__data__=ye?ye(null):{},this.size=0}
- /**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */,Ee.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}
- /**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */,Ee.prototype.get=function(e){var t=this.__data__;if(ye){var r=t[e];return r===n?void 0:r}return Q.call(t,e)?t[e]:void 0}
- /**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */,Ee.prototype.has=function(e){var t=this.__data__;return ye?void 0!==t[e]:Q.call(t,e)}
- /**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */,Ee.prototype.set=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=ye&&void 0===t?n:t,this},
- // Add methods to `ListCache`.
- Me.prototype.clear=function(){this.__data__=[],this.size=0}
- /**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */,Me.prototype.delete=function(e){var t=this.__data__,r=Pe(t,e);return!(r<0)&&(r==t.length-1?t.pop():ie.call(t,r,1),--this.size,!0)}
- /**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */,Me.prototype.get=function(e){var t=this.__data__,r=Pe(t,e);return r<0?void 0:t[r][1]}
- /**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */,Me.prototype.has=function(e){return Pe(this.__data__,e)>-1}
- /**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */,Me.prototype.set=function(e,t){var r=this.__data__,n=Pe(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this},
- // Add methods to `MapCache`.
- ke.prototype.clear=function(){this.size=0,this.__data__={hash:new Ee,map:new(de||Me),string:new Ee}}
- /**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */,ke.prototype.delete=function(e){var t=Re(this,e).delete(e);return this.size-=t?1:0,t}
- /**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */,ke.prototype.get=function(e){return Re(this,e).get(e)}
- /**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */,ke.prototype.has=function(e){return Re(this,e).has(e)}
- /**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */,ke.prototype.set=function(e,t){var r=Re(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this},
- // Add methods to `SetCache`.
- xe.prototype.add=xe.prototype.push=function(e){return this.__data__.set(e,n),this}
- /**
- * Checks if `value` is in the array cache.
- *
- * @private
- * @name has
- * @memberOf SetCache
- * @param {*} value The value to search for.
- * @returns {number} Returns `true` if `value` is found, else `false`.
- */,xe.prototype.has=function(e){return this.__data__.has(e)},
- // Add methods to `Stack`.
- Te.prototype.clear=function(){this.__data__=new Me,this.size=0}
- /**
- * Removes `key` and its value from the stack.
- *
- * @private
- * @name delete
- * @memberOf Stack
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */,Te.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}
- /**
- * Gets the stack value for `key`.
- *
- * @private
- * @name get
- * @memberOf Stack
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */,Te.prototype.get=function(e){return this.__data__.get(e)}
- /**
- * Checks if a stack value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Stack
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */,Te.prototype.has=function(e){return this.__data__.has(e)}
- /**
- * Sets the stack `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Stack
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the stack cache instance.
- */,Te.prototype.set=function(e,t){var r=this.__data__;if(r instanceof Me){var n=r.__data__;if(!de||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new ke(n)}return r.set(e,t),this.size=r.size,this};var Ue=se?function(e){return null==e?[]:(e=Object(e),
- /**
- * A specialized version of `_.filter` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- */
- function(e,t){for(var r=-1,n=null==e?0:e.length,a=0,i=[];++r<n;){var o=e[r];t(o,r,e)&&(i[a++]=o)}return i}(se(e),(function(t){return ae.call(e,t)})))}:
- /**
- * This method returns a new empty array.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {Array} Returns the new empty array.
- * @example
- *
- * var arrays = _.times(2, _.stubArray);
- *
- * console.log(arrays);
- * // => [[], []]
- *
- * console.log(arrays[0] === arrays[1]);
- * // => false
- */
- function(){return[]}
- /**
- * This method returns `false`.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {boolean} Returns `false`.
- * @example
- *
- * _.times(2, _.stubFalse);
- * // => [false, false]
- */,Ae=Ce;
- /**
- * Gets the `toStringTag` of `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
- /**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
- function qe(e,t){return!!(t=null==t?o:t)&&("number"==typeof e||C.test(e))&&e>-1&&e%1==0&&e<t}function Ke(e){if(null!=e){try{return H.call(e)}catch(t){}try{return e+""}catch(t){}}return""}
- /**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */function Xe(e,t){return e===t||e!==e&&t!==t}
- /**
- * Checks if `value` is likely an `arguments` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- * else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
- // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
- (ce&&Ae(new ce(new ArrayBuffer(1)))!=F||de&&Ae(new de)!=y||fe&&Ae(fe.resolve())!=b||he&&Ae(new he)!=L||pe&&Ae(new pe)!=x)&&(Ae=function(e){var t=Ce(e),r=t==g?e.constructor:void 0,n=r?Ke(r):"";if(n)switch(n){case me:return F;case ve:return y;case ge:return b;case be:return L;case we:return x}return t});var Ze=Ne(function(){return arguments}())?Ne:function(e){return He(e)&&Q.call(e,"callee")&&!ae.call(e,"callee")},ze=Array.isArray;
- /**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
- /**
- * Checks if `value` is a buffer.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
- * @example
- *
- * _.isBuffer(new Buffer(2));
- * // => true
- *
- * _.isBuffer(new Uint8Array(2));
- * // => false
- */
- var Ye=ue||function(){return!1};
- /**
- * Performs a deep comparison between two values to determine if they are
- * equivalent.
- *
- * **Note:** This method supports comparing arrays, array buffers, booleans,
- * date objects, error objects, maps, numbers, `Object` objects, regexes,
- * sets, strings, symbols, and typed arrays. `Object` objects are compared
- * by their own, not inherited, enumerable properties. Functions and DOM
- * nodes are compared by strict equality, i.e. `===`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.isEqual(object, other);
- * // => true
- *
- * object === other;
- * // => false
- */
- /**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
- function Be(e){if(!Je(e))return!1;
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 9 which returns 'object' for typed arrays and other constructors.
- var t=Ce(e);return t==h||t==p||t==l||t==w}
- /**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */function Ge(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=o}
- /**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */function Je(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */function He(e){return null!=e&&"object"==typeof e}
- /**
- * Checks if `value` is classified as a typed array.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
- * @example
- *
- * _.isTypedArray(new Uint8Array);
- * // => true
- *
- * _.isTypedArray([]);
- * // => false
- */var Qe=A?function(e){return function(t){return e(t)}}(A):function(e){return He(e)&&Ge(e.length)&&!!N[Ce(e)]};
- /**
- * Creates an array of the own enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * for more details.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keys(new Foo);
- * // => ['a', 'b'] (iteration order is not guaranteed)
- *
- * _.keys('hi');
- * // => ['0', '1']
- */function _e(e){return null!=(t=e)&&Ge(t.length)&&!Be(t)?Fe(e):Ie(e);
- /**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
- *
- * _.isArrayLike(_.noop);
- * // => false
- */
- var t}e.exports=function(e,t){return We(e,t)}},
- /***/4461:
- /***/function(e,t,r){
- /**
- * lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
- /** Used as references for various `Number` constants. */
- var n=1/0,a="[object Symbol]",i="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,o="object"==typeof self&&self&&self.Object===Object&&self,s=i||o||Function("return this")(),u=Object.prototype,l=0,c=u.toString,d=s.Symbol,f=d?d.prototype:void 0,h=f?f.toString:void 0;
- /** `Object#toString` result references. */
- /**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */
- function p(e){
- // Exit early for strings to avoid a performance hit in some environments.
- if("string"==typeof e)return e;if(
- /**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
- function(e){return"symbol"==typeof e||
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
- function(e){return!!e&&"object"==typeof e}(e)&&c.call(e)==a}
- /**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */(e))return h?h.call(e):"";var t=e+"";return"0"==t&&1/e==-n?"-0":t}e.exports=
- /**
- * Generates a unique ID. If `prefix` is given, the ID is appended to it.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {string} [prefix=''] The value to prefix the ID with.
- * @returns {string} Returns the unique ID.
- * @example
- *
- * _.uniqueId('contact_');
- * // => 'contact_104'
- *
- * _.uniqueId();
- * // => '105'
- */
- function(e){var t,r=++l;return(null==(t=e)?"":p(t))+r}},
- /***/39:
- /***/function(e,t,r){
- /**
- * lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
- /** Used as references for various `Number` constants. */
- var n=1/0,a="[object Symbol]",i="\\ud800-\\udfff",o="\\u0300-\\u036f\\ufe20-\\ufe23",s="\\u20d0-\\u20f0",u="\\ufe0e\\ufe0f",l="["+i+"]",c="["+o+s+"]",d="\\ud83c[\\udffb-\\udfff]",f="[^"+i+"]",h="(?:\\ud83c[\\udde6-\\uddff]){2}",p="[\\ud800-\\udbff][\\udc00-\\udfff]",y="\\u200d",m="(?:"+c+"|"+d+")"+"?",v="["+u+"]?",g=v+m+("(?:"+y+"(?:"+[f,h,p].join("|")+")"+v+m+")*"),b="(?:"+[f+c+"?",c,h,p,l].join("|")+")",w=RegExp(d+"(?="+d+")|"+b+g,"g"),S=RegExp("["+y+i+o+s+u+"]"),L="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,E="object"==typeof self&&self&&self.Object===Object&&self,M=L||E||Function("return this")();
- /** `Object#toString` result references. */
- /**
- * Checks if `string` contains Unicode symbols.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {boolean} Returns `true` if a symbol is found, else `false`.
- */
- function k(e){return S.test(e)}
- /**
- * Converts `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */function x(e){return k(e)?
- /**
- * Converts a Unicode `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
- function(e){return e.match(w)||[]}
- /** Used for built-in method references. */(e):
- /**
- * Converts an ASCII `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
- function(e){return e.split("")}(e)}var T=Object.prototype.toString,F=M.Symbol,P=F?F.prototype:void 0,C=P?P.toString:void 0;
- /**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
- /**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */
- function N(e){
- // Exit early for strings to avoid a performance hit in some environments.
- if("string"==typeof e)return e;if(
- /**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
- function(e){return"symbol"==typeof e||
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
- function(e){return!!e&&"object"==typeof e}(e)&&T.call(e)==a}
- /**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */(e))return C?C.call(e):"";var t=e+"";return"0"==t&&1/e==-n?"-0":t}
- /**
- * Casts `array` to a slice if it's needed.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {number} start The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the cast slice.
- */function W(e,t,r){var n=e.length;return r=void 0===r?n:r,!t&&r>=n?e:
- /**
- * The base implementation of `_.slice` without an iteratee call guard.
- *
- * @private
- * @param {Array} array The array to slice.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the slice of `array`.
- */
- function(e,t,r){var n=-1,a=e.length;t<0&&(t=-t>a?0:a+t),(r=r>a?a:r)<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(a);++n<a;)i[n]=e[n+t];return i}(e,t,r)}
- /**
- * Creates a function like `_.lowerFirst`.
- *
- * @private
- * @param {string} methodName The name of the `String` case method to use.
- * @returns {Function} Returns the new case function.
- */
- /**
- * Converts the first character of `string` to upper case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.upperFirst('fred');
- * // => 'Fred'
- *
- * _.upperFirst('FRED');
- * // => 'FRED'
- */
- var j,I=(j="toUpperCase",function(e){var t,r=k(e=null==(t=e)?"":N(t))?x(e):void 0,n=r?r[0]:e.charAt(0),a=r?W(r,1).join(""):e.slice(1);return n[j]()+a});e.exports=I},
- /***/9626:
- /***/function(e,t,r){"use strict";r.r(t),
- // extracted by mini-css-extract-plugin
- /* harmony default export */t.default={}},
- /***/2547:
- /***/function(e,t,r){"use strict";r.r(t),
- // extracted by mini-css-extract-plugin
- /* harmony default export */t.default={}},
- /***/5251:
- /***/function(e,t,r){"use strict";
- /** @license React v16.14.0
- * react-jsx-runtime.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */var n=r(3899),a=60103;if(t.Fragment=60107,"function"===typeof Symbol&&Symbol.for){var i=Symbol.for;a=i("react.element"),t.Fragment=i("react.fragment")}var o=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s=Object.prototype.hasOwnProperty,u={key:!0,ref:!0,__self:!0,__source:!0};function l(e,t,r){var n,i={},l=null,c=null;for(n in void 0!==r&&(l=""+r),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(c=t.ref),t)s.call(t,n)&&!u.hasOwnProperty(n)&&(i[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===i[n]&&(i[n]=t[n]);return{$$typeof:a,type:e,key:l,ref:c,props:i,_owner:o.current}}t.jsx=l,t.jsxs=l},
- /***/5893:
- /***/function(e,t,r){"use strict";e.exports=r(5251)},
- /***/8808:
- /***/function(e,t){"use strict";t.__esModule=!0,t.default=void 0;var r=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.reduce((function(e,t){return function(){return e(t.apply(void 0,arguments))}}),(function(e){return e}))};t.default=r},
- /***/1566:
- /***/function(e,t){"use strict";t.__esModule=!0,t.default=void 0;var r=function(e){return"string"===typeof e?e:e?e.displayName||e.name||"Component":void 0};t.default=r},
- /***/6626:
- /***/function(e,t,r){"use strict";var n=r(4836);t.__esModule=!0,t.default=void 0;var a=n(r(1566)),i=function(e,t){return t+"("+(0,a.default)(e)+")"};t.default=i},
- /***/6099:
- /***/function(e,t,r){!function(e){// wrapper for non-node envs
- e.parser=function(e,t){return new a(e,t)},e.SAXParser=a,e.SAXStream=o,e.createStream=function(e,t){return new o(e,t)},
- // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.
- // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),
- // since that's the earliest that a buffer overrun could occur. This way, checks are
- // as rare as required, but as often as necessary to ensure never crossing this bound.
- // Furthermore, buffers are only tested at most once per write(), so passing a very
- // large string into write() might have undesirable effects, but this is manageable by
- // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme
- // edge case, result in creating at most one complete copy of the string passed in.
- // Set to Infinity to have unlimited buffers.
- e.MAX_BUFFER_LENGTH=65536;var t,n=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];function a(t,r){if(!(this instanceof a))return new a(t,r);var i=this;!function(e){for(var t=0,r=n.length;t<r;t++)e[n[t]]=""}(i),i.q=i.c="",i.bufferCheckPosition=e.MAX_BUFFER_LENGTH,i.opt=r||{},i.opt.lowercase=i.opt.lowercase||i.opt.lowercasetags,i.looseCase=i.opt.lowercase?"toLowerCase":"toUpperCase",i.tags=[],i.closed=i.closedRoot=i.sawRoot=!1,i.tag=i.error=null,i.strict=!!t,i.noscript=!(!t&&!i.opt.noscript),i.state=S.BEGIN,i.strictEntities=i.opt.strictEntities,i.ENTITIES=i.strictEntities?Object.create(e.XML_ENTITIES):Object.create(e.ENTITIES),i.attribList=[],
- // namespaces form a prototype chain.
- // it always points at the current tag,
- // which protos to its parent tag.
- i.opt.xmlns&&(i.ns=Object.create(d)),
- // mostly just for error reporting
- i.trackPosition=!1!==i.opt.position,i.trackPosition&&(i.position=i.line=i.column=0),E(i,"onready")}e.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","opentagstart","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"],Object.create||(Object.create=function(e){function t(){}return t.prototype=e,new t}),Object.keys||(Object.keys=function(e){var t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(r);return t}),a.prototype={end:function(){F(this)},write:function(t){var r=this;if(this.error)throw this.error;if(r.closed)return T(r,"Cannot write after close. Assign an onready handler.");if(null===t)return F(r);"object"===typeof t&&(t=t.toString());var a=0,i="";for(;i=R(t,a++),r.c=i,i;)switch(r.trackPosition&&(r.position++,"\n"===i?(r.line++,r.column=0):r.column++),r.state){case S.BEGIN:if(r.state=S.BEGIN_WHITESPACE,"\ufeff"===i)continue;D(r,i);continue;case S.BEGIN_WHITESPACE:D(r,i);continue;case S.TEXT:if(r.sawRoot&&!r.closedRoot){for(var o=a-1;i&&"<"!==i&&"&"!==i;)(i=R(t,a++))&&r.trackPosition&&(r.position++,"\n"===i?(r.line++,r.column=0):r.column++);r.textNode+=t.substring(o,a-1)}"<"!==i||r.sawRoot&&r.closedRoot&&!r.strict?(m(i)||r.sawRoot&&!r.closedRoot||P(r,"Text data outside of root node."),"&"===i?r.state=S.TEXT_ENTITY:r.textNode+=i):(r.state=S.OPEN_WAKA,r.startTagPosition=r.position);continue;case S.SCRIPT:
- // only non-strict
- "<"===i?r.state=S.SCRIPT_ENDING:r.script+=i;continue;case S.SCRIPT_ENDING:"/"===i?r.state=S.CLOSE_TAG:(r.script+="<"+i,r.state=S.SCRIPT);continue;case S.OPEN_WAKA:
- // either a /, ?, !, or text is coming next.
- if("!"===i)r.state=S.SGML_DECL,r.sgmlDecl="";else if(m(i));else if(b(f,i))r.state=S.OPEN_TAG,r.tagName=i;else if("/"===i)r.state=S.CLOSE_TAG,r.tagName="";else if("?"===i)r.state=S.PROC_INST,r.procInstName=r.procInstBody="";else{
- // if there was some whitespace, then add that in.
- if(P(r,"Unencoded <"),r.startTagPosition+1<r.position){var l=r.position-r.startTagPosition;i=new Array(l).join(" ")+i}r.textNode+="<"+i,r.state=S.TEXT}continue;case S.SGML_DECL:(r.sgmlDecl+i).toUpperCase()===s?(M(r,"onopencdata"),r.state=S.CDATA,r.sgmlDecl="",r.cdata=""):r.sgmlDecl+i==="--"?(r.state=S.COMMENT,r.comment="",r.sgmlDecl=""):(r.sgmlDecl+i).toUpperCase()===u?(r.state=S.DOCTYPE,(r.doctype||r.sawRoot)&&P(r,"Inappropriately located doctype declaration"),r.doctype="",r.sgmlDecl=""):">"===i?(M(r,"onsgmldeclaration",r.sgmlDecl),r.sgmlDecl="",r.state=S.TEXT):v(i)?(r.state=S.SGML_DECL_QUOTED,r.sgmlDecl+=i):r.sgmlDecl+=i;continue;case S.SGML_DECL_QUOTED:i===r.q&&(r.state=S.SGML_DECL,r.q=""),r.sgmlDecl+=i;continue;case S.DOCTYPE:">"===i?(r.state=S.TEXT,M(r,"ondoctype",r.doctype),r.doctype=!0):(r.doctype+=i,"["===i?r.state=S.DOCTYPE_DTD:v(i)&&(r.state=S.DOCTYPE_QUOTED,r.q=i));continue;case S.DOCTYPE_QUOTED:r.doctype+=i,i===r.q&&(r.q="",r.state=S.DOCTYPE);continue;case S.DOCTYPE_DTD:r.doctype+=i,"]"===i?r.state=S.DOCTYPE:v(i)&&(r.state=S.DOCTYPE_DTD_QUOTED,r.q=i);continue;case S.DOCTYPE_DTD_QUOTED:r.doctype+=i,i===r.q&&(r.state=S.DOCTYPE_DTD,r.q="");continue;case S.COMMENT:"-"===i?r.state=S.COMMENT_ENDING:r.comment+=i;continue;case S.COMMENT_ENDING:"-"===i?(r.state=S.COMMENT_ENDED,r.comment=x(r.opt,r.comment),r.comment&&M(r,"oncomment",r.comment),r.comment=""):(r.comment+="-"+i,r.state=S.COMMENT);continue;case S.COMMENT_ENDED:">"!==i?(P(r,"Malformed comment"),
- // allow <!-- blah -- bloo --> in non-strict mode,
- // which is a comment of " blah -- bloo "
- r.comment+="--"+i,r.state=S.COMMENT):r.state=S.TEXT;continue;case S.CDATA:"]"===i?r.state=S.CDATA_ENDING:r.cdata+=i;continue;case S.CDATA_ENDING:"]"===i?r.state=S.CDATA_ENDING_2:(r.cdata+="]"+i,r.state=S.CDATA);continue;case S.CDATA_ENDING_2:">"===i?(r.cdata&&M(r,"oncdata",r.cdata),M(r,"onclosecdata"),r.cdata="",r.state=S.TEXT):"]"===i?r.cdata+="]":(r.cdata+="]]"+i,r.state=S.CDATA);continue;case S.PROC_INST:"?"===i?r.state=S.PROC_INST_ENDING:m(i)?r.state=S.PROC_INST_BODY:r.procInstName+=i;continue;case S.PROC_INST_BODY:if(!r.procInstBody&&m(i))continue;"?"===i?r.state=S.PROC_INST_ENDING:r.procInstBody+=i;continue;case S.PROC_INST_ENDING:">"===i?(M(r,"onprocessinginstruction",{name:r.procInstName,body:r.procInstBody}),r.procInstName=r.procInstBody="",r.state=S.TEXT):(r.procInstBody+="?"+i,r.state=S.PROC_INST_BODY);continue;case S.OPEN_TAG:b(h,i)?r.tagName+=i:(C(r),">"===i?j(r):"/"===i?r.state=S.OPEN_TAG_SLASH:(m(i)||P(r,"Invalid character in tag name"),r.state=S.ATTRIB));continue;case S.OPEN_TAG_SLASH:">"===i?(j(r,!0),I(r)):(P(r,"Forward-slash in opening tag not followed by >"),r.state=S.ATTRIB);continue;case S.ATTRIB:
- // haven't read the attribute name yet.
- if(m(i))continue;">"===i?j(r):"/"===i?r.state=S.OPEN_TAG_SLASH:b(f,i)?(r.attribName=i,r.attribValue="",r.state=S.ATTRIB_NAME):P(r,"Invalid attribute name");continue;case S.ATTRIB_NAME:"="===i?r.state=S.ATTRIB_VALUE:">"===i?(P(r,"Attribute without value"),r.attribValue=r.attribName,W(r),j(r)):m(i)?r.state=S.ATTRIB_NAME_SAW_WHITE:b(h,i)?r.attribName+=i:P(r,"Invalid attribute name");continue;case S.ATTRIB_NAME_SAW_WHITE:if("="===i)r.state=S.ATTRIB_VALUE;else{if(m(i))continue;P(r,"Attribute without value"),r.tag.attributes[r.attribName]="",r.attribValue="",M(r,"onattribute",{name:r.attribName,value:""}),r.attribName="",">"===i?j(r):b(f,i)?(r.attribName=i,r.state=S.ATTRIB_NAME):(P(r,"Invalid attribute name"),r.state=S.ATTRIB)}continue;case S.ATTRIB_VALUE:if(m(i))continue;v(i)?(r.q=i,r.state=S.ATTRIB_VALUE_QUOTED):(P(r,"Unquoted attribute value"),r.state=S.ATTRIB_VALUE_UNQUOTED,r.attribValue=i);continue;case S.ATTRIB_VALUE_QUOTED:if(i!==r.q){"&"===i?r.state=S.ATTRIB_VALUE_ENTITY_Q:r.attribValue+=i;continue}W(r),r.q="",r.state=S.ATTRIB_VALUE_CLOSED;continue;case S.ATTRIB_VALUE_CLOSED:m(i)?r.state=S.ATTRIB:">"===i?j(r):"/"===i?r.state=S.OPEN_TAG_SLASH:b(f,i)?(P(r,"No whitespace between attributes"),r.attribName=i,r.attribValue="",r.state=S.ATTRIB_NAME):P(r,"Invalid attribute name");continue;case S.ATTRIB_VALUE_UNQUOTED:if(!g(i)){"&"===i?r.state=S.ATTRIB_VALUE_ENTITY_U:r.attribValue+=i;continue}W(r),">"===i?j(r):r.state=S.ATTRIB;continue;case S.CLOSE_TAG:if(r.tagName)">"===i?I(r):b(h,i)?r.tagName+=i:r.script?(r.script+="</"+r.tagName,r.tagName="",r.state=S.SCRIPT):(m(i)||P(r,"Invalid tagname in closing tag"),r.state=S.CLOSE_TAG_SAW_WHITE);else{if(m(i))continue;w(f,i)?r.script?(r.script+="</"+i,r.state=S.SCRIPT):P(r,"Invalid tagname in closing tag."):r.tagName=i}continue;case S.CLOSE_TAG_SAW_WHITE:if(m(i))continue;">"===i?I(r):P(r,"Invalid characters in closing tag");continue;case S.TEXT_ENTITY:case S.ATTRIB_VALUE_ENTITY_Q:case S.ATTRIB_VALUE_ENTITY_U:var c,d;switch(r.state){case S.TEXT_ENTITY:c=S.TEXT,d="textNode";break;case S.ATTRIB_VALUE_ENTITY_Q:c=S.ATTRIB_VALUE_QUOTED,d="attribValue";break;case S.ATTRIB_VALUE_ENTITY_U:c=S.ATTRIB_VALUE_UNQUOTED,d="attribValue"}";"===i?(r[d]+=O(r),r.entity="",r.state=c):b(r.entity.length?y:p,i)?r.entity+=i:(P(r,"Invalid character in entity name"),r[d]+="&"+r.entity+i,r.entity="",r.state=c);continue;default:throw new Error(r,"Unknown state: "+r.state)}// while
- r.position>=r.bufferCheckPosition&&function(t){for(var r=Math.max(e.MAX_BUFFER_LENGTH,10),a=0,i=0,o=n.length;i<o;i++){var s=t[n[i]].length;if(s>r)
- // Text/cdata nodes can get big, and since they're buffered,
- // we can get here under normal conditions.
- // Avoid issues by emitting the text node now,
- // so at least it won't get any bigger.
- switch(n[i]){case"textNode":k(t);break;case"cdata":M(t,"oncdata",t.cdata),t.cdata="";break;case"script":M(t,"onscript",t.script),t.script="";break;default:T(t,"Max buffer length exceeded: "+n[i])}a=Math.max(a,s)}
- // schedule the next check for the earliest possible buffer overrun.
- var u=e.MAX_BUFFER_LENGTH-a;t.bufferCheckPosition=u+t.position}(r);return r}
- /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */
- /* istanbul ignore next */,resume:function(){return this.error=null,this},close:function(){return this.write(null)},flush:function(){var e;k(e=this),""!==e.cdata&&(M(e,"oncdata",e.cdata),e.cdata=""),""!==e.script&&(M(e,"onscript",e.script),e.script="")}};try{t=r(2830).Stream}catch(V){t=function(){}}var i=e.EVENTS.filter((function(e){return"error"!==e&&"end"!==e}));function o(e,r){if(!(this instanceof o))return new o(e,r);t.apply(this),this._parser=new a(e,r),this.writable=!0,this.readable=!0;var n=this;this._parser.onend=function(){n.emit("end")},this._parser.onerror=function(e){n.emit("error",e),
- // if didn't throw, then means error was handled.
- // go ahead and clear error, so we can write again.
- n._parser.error=null},this._decoder=null,i.forEach((function(e){Object.defineProperty(n,"on"+e,{get:function(){return n._parser["on"+e]},set:function(t){if(!t)return n.removeAllListeners(e),n._parser["on"+e]=t,t;n.on(e,t)},enumerable:!0,configurable:!1})}))}o.prototype=Object.create(t.prototype,{constructor:{value:o}}),o.prototype.write=function(e){if("function"===typeof Buffer&&"function"===typeof Buffer.isBuffer&&Buffer.isBuffer(e)){if(!this._decoder){var t=r(2553)/* .StringDecoder */.s;this._decoder=new t("utf8")}e=this._decoder.write(e)}return this._parser.write(e.toString()),this.emit("data",e),!0},o.prototype.end=function(e){return e&&e.length&&this.write(e),this._parser.end(),!0},o.prototype.on=function(e,r){var n=this;return n._parser["on"+e]||-1===i.indexOf(e)||(n._parser["on"+e]=function(){var t=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);t.splice(0,0,e),n.emit.apply(n,t)}),t.prototype.on.call(n,e,r)}
- // this really needs to be replaced with character classes.
- // XML allows all manner of ridiculous numbers and digits.;
- var s="[CDATA[",u="DOCTYPE",l="http://www.w3.org/XML/1998/namespace",c="http://www.w3.org/2000/xmlns/",d={xml:l,xmlns:c},f=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,h=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/,p=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,y=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/;function m(e){return" "===e||"\n"===e||"\r"===e||"\t"===e}function v(e){return'"'===e||"'"===e}function g(e){return">"===e||m(e)}function b(e,t){return e.test(t)}function w(e,t){return!b(e,t)}var S=0;for(var L in e.STATE={BEGIN:S++,// leading byte order mark or whitespace
- BEGIN_WHITESPACE:S++,// leading whitespace
- TEXT:S++,// general stuff
- TEXT_ENTITY:S++,// & and such.
- OPEN_WAKA:S++,// <
- SGML_DECL:S++,// <!BLARG
- SGML_DECL_QUOTED:S++,// <!BLARG foo "bar
- DOCTYPE:S++,// <!DOCTYPE
- DOCTYPE_QUOTED:S++,// <!DOCTYPE "//blah
- DOCTYPE_DTD:S++,// <!DOCTYPE "//blah" [ ...
- DOCTYPE_DTD_QUOTED:S++,// <!DOCTYPE "//blah" [ "foo
- COMMENT_STARTING:S++,// <!-
- COMMENT:S++,// <!--
- COMMENT_ENDING:S++,// <!-- blah -
- COMMENT_ENDED:S++,// <!-- blah --
- CDATA:S++,// <![CDATA[ something
- CDATA_ENDING:S++,// ]
- CDATA_ENDING_2:S++,// ]]
- PROC_INST:S++,// <?hi
- PROC_INST_BODY:S++,// <?hi there
- PROC_INST_ENDING:S++,// <?hi "there" ?
- OPEN_TAG:S++,// <strong
- OPEN_TAG_SLASH:S++,// <strong /
- ATTRIB:S++,// <a
- ATTRIB_NAME:S++,// <a foo
- ATTRIB_NAME_SAW_WHITE:S++,// <a foo _
- ATTRIB_VALUE:S++,// <a foo=
- ATTRIB_VALUE_QUOTED:S++,// <a foo="bar
- ATTRIB_VALUE_CLOSED:S++,// <a foo="bar"
- ATTRIB_VALUE_UNQUOTED:S++,// <a foo=bar
- ATTRIB_VALUE_ENTITY_Q:S++,// <foo bar="""
- ATTRIB_VALUE_ENTITY_U:S++,// <foo bar="
- CLOSE_TAG:S++,// </a
- CLOSE_TAG_SAW_WHITE:S++,// </a >
- SCRIPT:S++,// <script> ...
- SCRIPT_ENDING:S++},e.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},e.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(e.ENTITIES).forEach((function(t){var r=e.ENTITIES[t],n="number"===typeof r?String.fromCharCode(r):r;e.ENTITIES[t]=n})),e.STATE)e.STATE[e.STATE[L]]=L;
- // shorthand
- function E(e,t,r){e[t]&&e[t](r)}function M(e,t,r){e.textNode&&k(e),E(e,t,r)}function k(e){e.textNode=x(e.opt,e.textNode),e.textNode&&E(e,"ontext",e.textNode),e.textNode=""}function x(e,t){return e.trim&&(t=t.trim()),e.normalize&&(t=t.replace(/\s+/g," ")),t}function T(e,t){return k(e),e.trackPosition&&(t+="\nLine: "+e.line+"\nColumn: "+e.column+"\nChar: "+e.c),t=new Error(t),e.error=t,E(e,"onerror",t),e}function F(e){return e.sawRoot&&!e.closedRoot&&P(e,"Unclosed root tag"),e.state!==S.BEGIN&&e.state!==S.BEGIN_WHITESPACE&&e.state!==S.TEXT&&T(e,"Unexpected end"),k(e),e.c="",e.closed=!0,E(e,"onend"),a.call(e,e.strict,e.opt),e}function P(e,t){if("object"!==typeof e||!(e instanceof a))throw new Error("bad call to strictFail");e.strict&&T(e,t)}function C(e){e.strict||(e.tagName=e.tagName[e.looseCase]());var t=e.tags[e.tags.length-1]||e,r=e.tag={name:e.tagName,attributes:{}};
- // will be overridden if tag contails an xmlns="foo" or xmlns:foo="bar"
- e.opt.xmlns&&(r.ns=t.ns),e.attribList.length=0,M(e,"onopentagstart",r)}function N(e,t){var r=e.indexOf(":")<0?["",e]:e.split(":"),n=r[0],a=r[1];
- // <x "xmlns"="http://foo">
- return t&&"xmlns"===e&&(n="xmlns",a=""),{prefix:n,local:a}}function W(e){if(e.strict||(e.attribName=e.attribName[e.looseCase]()),-1!==e.attribList.indexOf(e.attribName)||e.tag.attributes.hasOwnProperty(e.attribName))e.attribName=e.attribValue="";else{if(e.opt.xmlns){var t=N(e.attribName,!0),r=t.prefix,n=t.local;if("xmlns"===r)
- // namespace binding attribute. push the binding into scope
- if("xml"===n&&e.attribValue!==l)P(e,"xml: prefix must be bound to "+l+"\nActual: "+e.attribValue);else if("xmlns"===n&&e.attribValue!==c)P(e,"xmlns: prefix must be bound to "+c+"\nActual: "+e.attribValue);else{var a=e.tag,i=e.tags[e.tags.length-1]||e;a.ns===i.ns&&(a.ns=Object.create(i.ns)),a.ns[n]=e.attribValue}
- // defer onattribute events until all attributes have been seen
- // so any new bindings can take effect. preserve attribute order
- // so deferred events can be emitted in document order
- e.attribList.push([e.attribName,e.attribValue])}else
- // in non-xmlns mode, we can emit the event right away
- e.tag.attributes[e.attribName]=e.attribValue,M(e,"onattribute",{name:e.attribName,value:e.attribValue});e.attribName=e.attribValue=""}}function j(e,t){if(e.opt.xmlns){
- // emit namespace binding events
- var r=e.tag,n=N(e.tagName);
- // add namespace info to tag
- r.prefix=n.prefix,r.local=n.local,r.uri=r.ns[n.prefix]||"",r.prefix&&!r.uri&&(P(e,"Unbound namespace prefix: "+JSON.stringify(e.tagName)),r.uri=n.prefix);var a=e.tags[e.tags.length-1]||e;r.ns&&a.ns!==r.ns&&Object.keys(r.ns).forEach((function(t){M(e,"onopennamespace",{prefix:t,uri:r.ns[t]})}));
- // handle deferred onattribute events
- // Note: do not apply default ns to attributes:
- // http://www.w3.org/TR/REC-xml-names/#defaulting
- for(var i=0,o=e.attribList.length;i<o;i++){var s=e.attribList[i],u=s[0],l=s[1],c=N(u,!0),d=c.prefix,f=c.local,h=""===d?"":r.ns[d]||"",p={name:u,value:l,prefix:d,local:f,uri:h};
- // if there's any attributes with an undefined namespace,
- // then fail on them now.
- d&&"xmlns"!==d&&!h&&(P(e,"Unbound namespace prefix: "+JSON.stringify(d)),p.uri=d),e.tag.attributes[u]=p,M(e,"onattribute",p)}e.attribList.length=0}e.tag.isSelfClosing=!!t,
- // process the tag
- e.sawRoot=!0,e.tags.push(e.tag),M(e,"onopentag",e.tag),t||(
- // special case for <script> in non-strict mode.
- e.noscript||"script"!==e.tagName.toLowerCase()?e.state=S.TEXT:e.state=S.SCRIPT,e.tag=null,e.tagName=""),e.attribName=e.attribValue="",e.attribList.length=0}function I(e){if(!e.tagName)return P(e,"Weird empty close tag."),e.textNode+="</>",void(e.state=S.TEXT);if(e.script){if("script"!==e.tagName)return e.script+="</"+e.tagName+">",e.tagName="",void(e.state=S.SCRIPT);M(e,"onscript",e.script),e.script=""}
- // first make sure that the closing tag actually exists.
- // <a><b></c></b></a> will close everything, otherwise.
- var t=e.tags.length,r=e.tagName;e.strict||(r=r[e.looseCase]());for(var n=r;t--;){if(e.tags[t].name===n)break;
- // fail the first time in strict mode
- P(e,"Unexpected close tag")}
- // didn't find it. we already failed for strict, so just abort.
- if(t<0)return P(e,"Unmatched closing tag: "+e.tagName),e.textNode+="</"+e.tagName+">",void(e.state=S.TEXT);e.tagName=r;for(var a=e.tags.length;a-- >t;){var i=e.tag=e.tags.pop();e.tagName=e.tag.name,M(e,"onclosetag",e.tagName);var o={};for(var s in i.ns)o[s]=i.ns[s];var u=e.tags[e.tags.length-1]||e;e.opt.xmlns&&i.ns!==u.ns&&
- // remove namespace bindings introduced by tag
- Object.keys(i.ns).forEach((function(t){var r=i.ns[t];M(e,"onclosenamespace",{prefix:t,uri:r})}))}0===t&&(e.closedRoot=!0),e.tagName=e.attribValue=e.attribName="",e.attribList.length=0,e.state=S.TEXT}function O(e){var t,r=e.entity,n=r.toLowerCase(),a="";return e.ENTITIES[r]?e.ENTITIES[r]:e.ENTITIES[n]?e.ENTITIES[n]:("#"===(r=n).charAt(0)&&("x"===r.charAt(1)?(r=r.slice(2),a=(t=parseInt(r,16)).toString(16)):(r=r.slice(1),a=(t=parseInt(r,10)).toString(10))),r=r.replace(/^0+/,""),isNaN(t)||a.toLowerCase()!==r?(P(e,"Invalid character entity"),"&"+e.entity+";"):String.fromCodePoint(t))}function D(e,t){"<"===t?(e.state=S.OPEN_WAKA,e.startTagPosition=e.position):m(t)||(
- // have to process this as a text node.
- // weird, but happens.
- P(e,"Non-whitespace before first tag."),e.textNode=t,e.state=S.TEXT)}function R(e,t){var r="";return t<e.length&&(r=e.charAt(t)),r}S=e.STATE,String.fromCodePoint||function(){var e=String.fromCharCode,t=Math.floor,r=function(){var r,n,a=[],i=-1,o=arguments.length;if(!o)return"";for(var s="";++i<o;){var u=Number(arguments[i]);if(!isFinite(u)||// `NaN`, `+Infinity`, or `-Infinity`
- u<0||// not a valid Unicode code point
- u>1114111||// not a valid Unicode code point
- t(u)!==u)throw RangeError("Invalid code point: "+u);u<=65535?// BMP code point
- a.push(u):(// Astral code point; split in surrogate halves
- // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
- r=55296+((u-=65536)>>10),n=u%1024+56320,a.push(r,n)),(i+1===o||a.length>16384)&&(s+=e.apply(null,a),a.length=0)}return s}
- /* istanbul ignore next */;Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:r,configurable:!0,writable:!0}):String.fromCodePoint=r}()}(t)
- /***/},
- /***/2830:
- /***/function(e,t,r){
- // Copyright Joyent, Inc. and other Node contributors.
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- e.exports=a;var n=r(7187).EventEmitter;
- // old-style streams. Note that the pipe method (the only relevant
- // part of this class) is overridden in the Readable class.
- function a(){n.call(this)}r(5717)(a,n),a.Readable=r(6577),a.Writable=r(323),a.Duplex=r(8656),a.Transform=r(4473),a.PassThrough=r(2366),a.finished=r(1086),a.pipeline=r(6472),
- // Backwards-compat with node 0.4.x
- a.Stream=a,a.prototype.pipe=function(e,t){var r=this;function a(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function i(){r.readable&&r.resume&&r.resume()}r.on("data",a),e.on("drain",i),
- // If the 'end' option is not supplied, dest.end() will be called when
- // source gets the 'end' or 'close' events. Only dest.end() once.
- e._isStdio||t&&!1===t.end||(r.on("end",s),r.on("close",u));var o=!1;function s(){o||(o=!0,e.end())}function u(){o||(o=!0,"function"===typeof e.destroy&&e.destroy())}
- // don't leave dangling pipes when there are errors.
- function l(e){if(c(),0===n.listenerCount(this,"error"))throw e;// Unhandled stream error in pipe.
- }
- // remove all the event listeners that were added.
- function c(){r.removeListener("data",a),e.removeListener("drain",i),r.removeListener("end",s),r.removeListener("close",u),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",c),r.removeListener("close",c),e.removeListener("close",c)}
- // Allow for unix-like usage: A.pipe(B).pipe(C)
- return r.on("error",l),e.on("error",l),r.on("end",c),r.on("close",c),e.on("close",c),e.emit("pipe",r),e}},
- /***/8106:
- /***/function(e){"use strict";var t={};function r(e,r,n){n||(n=Error);var a=
- function(e){var t,n;function a(t,n,a){return e.call(this,function(e,t,n){return"string"===typeof r?r:r(e,t,n)}(t,n,a))||this}return n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,a}(n);a.prototype.name=n.name,a.prototype.code=e,t[e]=a}// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js
- function n(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map((function(e){return String(e)})),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
- r("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(e,t,r){
- // determiner: 'must be' or 'must not be'
- var a,i,o,s;if("string"===typeof t&&(i="not ",t.substr(!o||o<0?0:+o,i.length)===i)?(a="must not be",t=t.replace(/^not /,"")):a="must be",// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
- function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
- (e," argument"))
- // For cases like 'first argument'
- s="The ".concat(e," ").concat(a," ").concat(n(t,"type"));else{var u=function(e,t,r){return"number"!==typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,".")?"property":"argument";s='The "'.concat(e,'" ').concat(u," ").concat(a," ").concat(n(t,"type"))}return s+=". Received type ".concat(typeof r)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),e.exports.q=t},
- /***/8656:
- /***/function(e,t,r){"use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- // a duplex stream is just a stream that is both readable and writable.
- // Since JS doesn't have multiple prototypal inheritance, this class
- // prototypally inherits from Readable, and then parasitically from
- // Writable.
- /*<replacement>*/var n=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};
- /*</replacement>*/e.exports=l;var a=r(6577),i=r(323);r(5717)(l,a);for(
- // Allow the keys array to be GC'ed.
- var o=n(i.prototype),s=0;s<o.length;s++){var u=o[s];l.prototype[u]||(l.prototype[u]=i.prototype[u])}function l(e){if(!(this instanceof l))return new l(e);a.call(this,e),i.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",c)))}
- // the no-half-open enforcer
- function c(){
- // If the writable side ended, then we're ok.
- this._writableState.ended||
- // no more data can be written.
- // But allow more writes to happen in this tick.
- process.nextTick(d,this)}function d(e){e.end()}Object.defineProperty(l.prototype,"writableHighWaterMark",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"writableBuffer",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,"writableLength",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(l.prototype,"destroyed",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){
- // we ignore the value if the stream
- // has not been initialized yet
- void 0!==this._readableState&&void 0!==this._writableState&&(
- // backward compatibility, the user is explicitly
- // managing destroyed
- this._readableState.destroyed=e,this._writableState.destroyed=e)}})},
- /***/2366:
- /***/function(e,t,r){"use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- // a passthrough stream.
- // basically just the most minimal sort of Transform stream.
- // Every written chunk gets output as-is.
- e.exports=a;var n=r(4473);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e)}r(5717)(a,n),a.prototype._transform=function(e,t,r){r(null,e)}},
- /***/6577:
- /***/function(e,t,r){"use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- /*<replacement>*/
- var n;
- /*</replacement>*/e.exports=M,M.ReadableState=E;
- /*<replacement>*/
- r(7187).EventEmitter;var a=function(e,t){return e.listeners(t).length},i=r(3194),o=r(2860).Buffer,s=("undefined"!==typeof r.g?r.g:"undefined"!==typeof window?window:"undefined"!==typeof self?self:{}).Uint8Array||function(){};
- /*<replacement>*/
- var u,l=r(964);u=l&&l.debuglog?l.debuglog("stream"):function(){}
- /*</replacement>*/;var c,d,f,h=r(9686),p=r(1029),y=r(94).getHighWaterMark,m=r(8106)/* .codes */.q,v=m.ERR_INVALID_ARG_TYPE,g=m.ERR_STREAM_PUSH_AFTER_EOF,b=m.ERR_METHOD_NOT_IMPLEMENTED,w=m.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(5717)(M,i);var S=p.errorOrDestroy,L=["error","close","destroy","pause","resume"];function E(e,t,a){n=n||r(8656),e=e||{},
- // Duplex streams are both readable and writable, but share
- // the same options object.
- // However, some cases require setting options to different
- // values for the readable and the writable sides of the duplex stream.
- // These options can be provided separately as readableXXX and writableXXX.
- "boolean"!==typeof a&&(a=t instanceof n),
- // object stream flag. Used to make read(n) ignore n and to
- // make all the buffer merging and length checks go away
- this.objectMode=!!e.objectMode,a&&(this.objectMode=this.objectMode||!!e.readableObjectMode),
- // the point at which it stops calling _read() to fill the buffer
- // Note: 0 is a valid value, means "don't call _read preemptively ever"
- this.highWaterMark=y(this,e,"readableHighWaterMark",a),
- // A linked list is used to store data chunks instead of an array because the
- // linked list can remove elements from the beginning faster than
- // array.shift()
- this.buffer=new h,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,
- // a flag to be able to tell if the event 'readable'/'data' is emitted
- // immediately, or on a later tick. We set this to true at first, because
- // any actions that shouldn't happen until "later" should generally also
- // not happen before the first read call.
- this.sync=!0,
- // whenever we return null, then we set a flag to say
- // that we're awaiting a 'readable' event emission.
- this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,
- // Should close be emitted on destroy. Defaults to true.
- this.emitClose=!1!==e.emitClose,
- // Should .destroy() be called after 'end' (and potentially 'finish')
- this.autoDestroy=!!e.autoDestroy,
- // has it been destroyed
- this.destroyed=!1,
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding=e.defaultEncoding||"utf8",
- // the number of writers that are awaiting a drain event in .pipe()s
- this.awaitDrain=0,
- // if true, a maybeReadMore has been scheduled
- this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(c||(c=r(2553)/* .StringDecoder */.s),this.decoder=new c(e.encoding),this.encoding=e.encoding)}function M(e){if(n=n||r(8656),!(this instanceof M))return new M(e);
- // Checking for a Stream.Duplex instance is faster here instead of inside
- // the ReadableState constructor, at least with V8 6.5
- var t=this instanceof n;this._readableState=new E(e,this,t),
- // legacy
- this.readable=!0,e&&("function"===typeof e.read&&(this._read=e.read),"function"===typeof e.destroy&&(this._destroy=e.destroy)),i.call(this)}function k(e,t,r,n,a){u("readableAddChunk",t);var i,l=e._readableState;if(null===t)l.reading=!1,function(e,t){if(u("onEofChunk"),t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?
- // if we are sync, wait until next tick to emit the data.
- // Otherwise we risk emitting data in the flow()
- // the readable code triggers during a read() call
- P(e):(
- // emit 'readable' now to make sure it gets picked up.
- t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,C(e)))}
- // Don't emit readable right away in sync mode, because this can trigger
- // another read() call => stack overflow. This way, it might trigger
- // a nextTick recursion warning, but that's not so bad.
- (e,l);else if(a||(i=function(e,t){var r;n=t,o.isBuffer(n)||n instanceof s||"string"===typeof t||void 0===t||e.objectMode||(r=new v("chunk",["string","Buffer","Uint8Array"],t));var n;return r}(l,t)),i)S(e,i);else if(l.objectMode||t&&t.length>0)if("string"===typeof t||l.objectMode||Object.getPrototypeOf(t)===o.prototype||(t=function(e){return o.from(e)}(t)),n)l.endEmitted?S(e,new w):x(e,l,t,!0);else if(l.ended)S(e,new g);else{if(l.destroyed)return!1;l.reading=!1,l.decoder&&!r?(t=l.decoder.write(t),l.objectMode||0!==t.length?x(e,l,t,!1):N(e,l)):x(e,l,t,!1)}else n||(l.reading=!1,N(e,l));
- // We can push more data if we are below the highWaterMark.
- // Also, if we have no data yet, we can stand some more bytes.
- // This is to work around cases where hwm=0, such as the repl.
- return!l.ended&&(l.length<l.highWaterMark||0===l.length)}function x(e,t,r,n){t.flowing&&0===t.length&&!t.sync?(t.awaitDrain=0,e.emit("data",r)):(
- // update the buffer info.
- t.length+=t.objectMode?1:r.length,n?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&P(e)),N(e,t)}Object.defineProperty(M.prototype,"destroyed",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){
- // we ignore the value if the stream
- // has not been initialized yet
- this._readableState&&(
- // backward compatibility, the user is explicitly
- // managing destroyed
- this._readableState.destroyed=e)}}),M.prototype.destroy=p.destroy,M.prototype._undestroy=p.undestroy,M.prototype._destroy=function(e,t){t(e)},
- // Manually shove something into the read() buffer.
- // This returns true if the highWaterMark has not been hit yet,
- // similar to how Writable.write() returns true if you should
- // write() some more.
- M.prototype.push=function(e,t){var r,n=this._readableState;return n.objectMode?r=!0:"string"===typeof e&&((t=t||n.defaultEncoding)!==n.encoding&&(e=o.from(e,t),t=""),r=!0),k(this,e,t,!1,r)},
- // Unshift should *always* be something directly out of read()
- M.prototype.unshift=function(e){return k(this,e,null,!0,!1)},M.prototype.isPaused=function(){return!1===this._readableState.flowing},
- // backwards compatibility.
- M.prototype.setEncoding=function(e){c||(c=r(2553)/* .StringDecoder */.s);var t=new c(e);this._readableState.decoder=t,
- // If setEncoding(null), decoder.encoding equals utf8
- this._readableState.encoding=this._readableState.decoder.encoding;for(
- // Iterate over current buffer to convert already stored Buffers:
- var n=this._readableState.buffer.head,a="";null!==n;)a+=t.write(n.data),n=n.next;return this._readableState.buffer.clear(),""!==a&&this._readableState.buffer.push(a),this._readableState.length=a.length,this};
- // Don't raise the hwm > 1GB
- var T=1073741824;
- // This function is designed to be inlinable, so please take care when making
- // changes to the function body.
- function F(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!==e?
- // Only flow one buffer at a time
- t.flowing&&t.length?t.buffer.head.data.length:t.length:(
- // If we're asking for more than the current hwm, then raise the hwm.
- e>t.highWaterMark&&(t.highWaterMark=function(e){return e>=T?
- // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.
- e=T:(
- // Get the next highest power of 2 to prevent increasing hwm excessively in
- // tiny amounts
- e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:
- // Don't have enough
- t.ended?t.length:(t.needReadable=!0,0))}
- // you can override either this method, or the async _read(n) below.
- function P(e){var t=e._readableState;u("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(u("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(C,e))}function C(e){var t=e._readableState;u("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),
- // The stream needs another readable event if
- // 1. It is not flowing, as the flow mechanism will take
- // care of it.
- // 2. It is not ended.
- // 3. It is below the highWaterMark, so we can schedule
- // another readable later.
- t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,D(e)}
- // at this point, the user has presumably seen the 'readable' event,
- // and called read() to consume some data. that may have triggered
- // in turn another _read(n) call, in which case reading = true if
- // it's in progress.
- // However, if we're not ended, or reading, and the length < hwm,
- // then go ahead and try to read some more preemptively.
- function N(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(W,e,t))}function W(e,t){
- // Attempt to read more data if we should.
- // The conditions for reading more data are (one of):
- // - Not enough data buffered (state.length < state.highWaterMark). The loop
- // is responsible for filling the buffer with enough data if such data
- // is available. If highWaterMark is 0 and we are not in the flowing mode
- // we should _not_ attempt to buffer any extra data. We'll get more data
- // when the stream consumer calls read() instead.
- // - No data in the buffer, and the stream is in flowing mode. In this mode
- // the loop below is responsible for ensuring read() is called. Failing to
- // call read here would abort the flow and there's no other mechanism for
- // continuing the flow if the stream consumer has just subscribed to the
- // 'data' event.
- // In addition to the above conditions to keep reading data, the following
- // conditions prevent the data from being read:
- // - The stream has ended (state.ended).
- // - There is already a pending 'read' operation (state.reading). This is a
- // case where the the stream has called the implementation defined _read()
- // method, but they are processing the call asynchronously and have _not_
- // called push() with new data. In this case we skip performing more
- // read()s. The execution ends in this method again after the _read() ends
- // up calling push() with more data.
- for(;!t.reading&&!t.ended&&(t.length<t.highWaterMark||t.flowing&&0===t.length);){var r=t.length;if(u("maybeReadMore read 0"),e.read(0),r===t.length)
- // didn't get any data, stop spinning.
- break}t.readingMore=!1}
- // abstract method. to be overridden in specific implementation classes.
- // call cb(er, data) where data is <= n in length.
- // for virtual (non-string, non-buffer) streams, "length" is somewhat
- // arbitrary, and perhaps not very meaningful.
- function j(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?
- // flowing needs to be set to true now, otherwise
- // the upcoming resume will not flow.
- t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function I(e){u("readable nexttick read 0"),e.read(0)}
- // pause() and resume() are remnants of the legacy readable stream API
- // If the user uses them, then switch into old mode.
- function O(e,t){u("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),D(e),t.flowing&&!t.reading&&e.read(0)}function D(e){var t=e._readableState;for(u("flow",t.flowing);t.flowing&&null!==e.read(););}
- // wrap an old-style stream as the async data source.
- // This is *not* part of the readable stream interface.
- // It is an ugly unfortunate mess of history.
- // Pluck off n bytes from an array of buffers.
- // Length is the combined lengths of all the buffers in the list.
- // This function is designed to be inlinable, so please take care when making
- // changes to the function body.
- function R(e,t){
- // nothing buffered
- return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(
- // read it all, truncate the list
- r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):
- // read part of list
- r=t.buffer.consume(e,t.decoder),r);var r}function V(e){var t=e._readableState;u("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(U,t,e))}function U(e,t){
- // Check that we didn't get one last unshift.
- if(u("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){
- // In case of duplex streams we need a way to detect
- // if the writable side is ready for autoDestroy as well
- var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function A(e,t){for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}
- /***/M.prototype.read=function(e){u("read",e),e=parseInt(e,10);var t=this._readableState,r=e;
- // if we're doing read(0) to trigger a readable event, but we
- // already have a bunch of data in the buffer, then just trigger
- // the 'readable' event and move on.
- if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&((0!==t.highWaterMark?t.length>=t.highWaterMark:t.length>0)||t.ended))return u("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?V(this):P(this),null;
- // if we've ended, and we're now clear, then finish it up.
- if(0===(e=F(e,t))&&t.ended)return 0===t.length&&V(this),null;
- // All the actual chunk generation logic needs to be
- // *below* the call to _read. The reason is that in certain
- // synthetic stream cases, such as passthrough streams, _read
- // may be a completely synchronous operation which may change
- // the state of the read buffer, providing enough data when
- // before there was *not* enough.
- // So, the steps are:
- // 1. Figure out what the state of things will be after we do
- // a read from the buffer.
- // 2. If that resulting state will trigger a _read, then call _read.
- // Note that this may be asynchronous, or synchronous. Yes, it is
- // deeply ugly to write APIs this way, but that still doesn't mean
- // that the Readable class should behave improperly, as streams are
- // designed to be sync/async agnostic.
- // Take note if the _read call is sync or async (ie, if the read call
- // has returned yet), so that we know whether or not it's safe to emit
- // 'readable' etc.
- // 3. Actually pull the requested chunks out of the buffer and return.
- // if we need a readable event, then we need to do some reading.
- var n,a=t.needReadable;return u("need readable",a),
- // if we currently have less than the highWaterMark, then also read some
- (0===t.length||t.length-e<t.highWaterMark)&&u("length less than watermark",a=!0),
- // however, if we've ended, then there's no point, and if we're already
- // reading, then it's unnecessary.
- t.ended||t.reading?u("reading or ended",a=!1):a&&(u("do read"),t.reading=!0,t.sync=!0,
- // if the length is currently zero, then we *need* a readable event.
- 0===t.length&&(t.needReadable=!0),
- // call internal read method
- this._read(t.highWaterMark),t.sync=!1,
- // If _read pushed data synchronously, then `reading` will be false,
- // and we need to re-evaluate how much data we can return to the user.
- t.reading||(e=F(r,t))),null===(n=e>0?R(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(
- // If we have nothing in the buffer, then we want to know
- // as soon as we *do* get something into the buffer.
- t.ended||(t.needReadable=!0),
- // If we tried to read() past the EOF, then emit end on the next tick.
- r!==e&&t.ended&&V(this)),null!==n&&this.emit("data",n),n},M.prototype._read=function(e){S(this,new b("_read()"))},M.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,u("pipe count=%d opts=%j",n.pipesCount,t);var i=(!t||!1!==t.end)&&e!==process.stdout&&e!==process.stderr?s:y;function o(t,a){u("onunpipe"),t===r&&a&&!1===a.hasUnpiped&&(a.hasUnpiped=!0,u("cleanup"),
- // cleanup event handlers once the pipe is broken
- e.removeListener("close",h),e.removeListener("finish",p),e.removeListener("drain",l),e.removeListener("error",f),e.removeListener("unpipe",o),r.removeListener("end",s),r.removeListener("end",y),r.removeListener("data",d),c=!0,
- // if the reader is waiting for a drain event from this
- // specific writer, then it would cause it to never start
- // flowing again.
- // So, if this is awaiting a drain, then we just call it now.
- // If we don't know, then assume that we are waiting for one.
- !n.awaitDrain||e._writableState&&!e._writableState.needDrain||l())}function s(){u("onend"),e.end()}
- // when the dest drains, it reduces the awaitDrain counter
- // on the source. This would be more elegant with a .once()
- // handler in flow(), but adding and removing repeatedly is
- // too slow.
- n.endEmitted?process.nextTick(i):r.once("end",i),e.on("unpipe",o);var l=function(e){return function(){var t=e._readableState;u("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&a(e,"data")&&(t.flowing=!0,D(e))}}(r);e.on("drain",l);var c=!1;function d(t){u("ondata");var a=e.write(t);u("dest.write",a),!1===a&&(
- // If the user unpiped during `dest.write()`, it is possible
- // to get stuck in a permanently paused state if that write
- // also returned false.
- // => Check whether `dest` is still a piping destination.
- (1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==A(n.pipes,e))&&!c&&(u("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}
- // if the dest has an error, then stop piping into it.
- // however, don't suppress the throwing behavior for this.
- function f(t){u("onerror",t),y(),e.removeListener("error",f),0===a(e,"error")&&S(e,t)}
- // Make sure our error handler is attached before userland ones.
- // Both close and finish should trigger unpipe, but only once.
- function h(){e.removeListener("finish",p),y()}function p(){u("onfinish"),e.removeListener("close",h),y()}function y(){u("unpipe"),r.unpipe(e)}
- // tell the dest that it's being piped to
- return r.on("data",d),function(e,t,r){
- // Sadly this is not cacheable as some libraries bundle their own
- // event emitter implementation with them.
- if("function"===typeof e.prependListener)return e.prependListener(t,r);
- // This is a hack to make sure that our error handler is attached before any
- // userland ones. NEVER DO THIS. This is here only because this code needs
- // to continue to work with older versions of Node.js that do not include
- // the prependListener() method. The goal is to eventually remove this hack.
- e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",f),e.once("close",h),e.once("finish",p),e.emit("pipe",r),
- // start the flow if it hasn't been started already.
- n.flowing||(u("pipe resume"),r.resume()),e},M.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};
- // if we're not piping anywhere, then do nothing.
- if(0===t.pipesCount)return this;
- // just one destination. most common case.
- if(1===t.pipesCount)
- // passed in one, but it's not the right one.
- return e&&e!==t.pipes||(e||(e=t.pipes),
- // got a match.
- t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;
- // slow case. multiple pipe destinations.
- if(!e){
- // remove all.
- var n=t.pipes,a=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i<a;i++)n[i].emit("unpipe",this,{hasUnpiped:!1});return this}
- // try to find the right one.
- var o=A(t.pipes,e);return-1===o||(t.pipes.splice(o,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,r)),this},
- // set up data events if they are asked for
- // Ensure readable listeners eventually get something
- M.prototype.on=function(e,t){var r=i.prototype.on.call(this,e,t),n=this._readableState;return"data"===e?(
- // update readableListening so that resume() may be a no-op
- // a few lines down. This is needed to support once('readable').
- n.readableListening=this.listenerCount("readable")>0,
- // Try start flowing on next tick if stream isn't explicitly paused
- !1!==n.flowing&&this.resume()):"readable"===e&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,u("on readable",n.length,n.reading),n.length?P(this):n.reading||process.nextTick(I,this))),r},M.prototype.addListener=M.prototype.on,M.prototype.removeListener=function(e,t){var r=i.prototype.removeListener.call(this,e,t);return"readable"===e&&
- // We need to check if there is someone still listening to
- // readable and reset the state. However this needs to happen
- // after readable has been emitted but before I/O (nextTick) to
- // support once('readable', fn) cycles. This means that calling
- // resume within the same tick will have no
- // effect.
- process.nextTick(j,this),r},M.prototype.removeAllListeners=function(e){var t=i.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||
- // We need to check if there is someone still listening to
- // readable and reset the state. However this needs to happen
- // after readable has been emitted but before I/O (nextTick) to
- // support once('readable', fn) cycles. This means that calling
- // resume within the same tick will have no
- // effect.
- process.nextTick(j,this),t},M.prototype.resume=function(){var e=this._readableState;return e.flowing||(u("resume"),
- // we flow only if there is no one listening
- // for readable, but we still have to call
- // resume()
- e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(O,e,t))}(this,e)),e.paused=!1,this},M.prototype.pause=function(){return u("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(u("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},M.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;
- // proxy all the other methods.
- // important when wrapping filters and duplexes.
- for(var a in e.on("end",(function(){if(u("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(a){
- // don't skip over falsy values in objectMode
- (u("wrapped data"),r.decoder&&(a=r.decoder.write(a)),!r.objectMode||null!==a&&void 0!==a)&&((r.objectMode||a&&a.length)&&(t.push(a)||(n=!0,e.pause())))})),e)void 0===this[a]&&"function"===typeof e[a]&&(this[a]=function(t){return function(){return e[t].apply(e,arguments)}}(a));
- // proxy certain important events.
- for(var i=0;i<L.length;i++)e.on(L[i],this.emit.bind(this,L[i]));
- // when we try to consume some more bytes, simply unpause the
- // underlying stream.
- return this._read=function(t){u("wrapped _read",t),n&&(n=!1,e.resume())},this},"function"===typeof Symbol&&(M.prototype[Symbol.asyncIterator]=function(){return void 0===d&&(d=r(828)),d(this)}),Object.defineProperty(M.prototype,"readableHighWaterMark",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(M.prototype,"readableBuffer",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(M.prototype,"readableFlowing",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}}),
- // exposed for testing purposes only.
- M._fromList=R,Object.defineProperty(M.prototype,"readableLength",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return this._readableState.length}}),"function"===typeof Symbol&&(M.from=function(e,t){return void 0===f&&(f=r(1265)),f(M,e,t)})},
- /***/4473:
- /***/function(e,t,r){"use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- // a transform stream is a readable/writable stream where you do
- // something with the data. Sometimes it's called a "filter",
- // but that's not a great name for it, since that implies a thing where
- // some bits pass through, and others are simply ignored. (That would
- // be a valid example of a transform, of course.)
- // While the output is causally related to the input, it's not a
- // necessarily symmetric or synchronous transformation. For example,
- // a zlib stream might take multiple plain-text writes(), and then
- // emit a single compressed chunk some time in the future.
- // Here's how this works:
- // The Transform stream has all the aspects of the readable and writable
- // stream classes. When you write(chunk), that calls _write(chunk,cb)
- // internally, and returns false if there's a lot of pending writes
- // buffered up. When you call read(), that calls _read(n) until
- // there's enough pending readable data buffered up.
- // In a transform stream, the written data is placed in a buffer. When
- // _read(n) is called, it transforms the queued up data, calling the
- // buffered _write cb's as it consumes chunks. If consuming a single
- // written chunk would result in multiple output chunks, then the first
- // outputted bit calls the readcb, and subsequent chunks just go into
- // the read buffer, and will cause it to emit 'readable' if necessary.
- // This way, back-pressure is actually determined by the reading side,
- // since _read has to be called to start processing a new chunk. However,
- // a pathological inflate type of transform can cause excessive buffering
- // here. For example, imagine a stream where every byte of input is
- // interpreted as an integer from 0-255, and then results in that many
- // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
- // 1kb of data being output. In this case, you could write a very small
- // amount of input, and end up with a very large amount of output. In
- // such a pathological inflating mechanism, there'd be no way to tell
- // the system to stop doing the transform. A single 4MB write could
- // cause the system to run out of memory.
- // However, even in such a pathological case, only a single written chunk
- // would be consumed, and then the rest would wait (un-transformed) until
- // the results of the previous transformed chunk were consumed.
- e.exports=c;var n=r(8106)/* .codes */.q,a=n.ERR_METHOD_NOT_IMPLEMENTED,i=n.ERR_MULTIPLE_CALLBACK,o=n.ERR_TRANSFORM_ALREADY_TRANSFORMING,s=n.ERR_TRANSFORM_WITH_LENGTH_0,u=r(8656);function l(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(null===n)return this.emit("error",new i);r.writechunk=null,r.writecb=null,null!=t&&
- // single equals check for both `null` and `undefined`
- this.push(t),n(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function c(e){if(!(this instanceof c))return new c(e);u.call(this,e),this._transformState={afterTransform:l.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},
- // start out asking for a readable event once data is transformed.
- this._readableState.needReadable=!0,
- // we have implemented the _read method, and done the other things
- // that Readable wants before the first _read call, so unset the
- // sync guard flag.
- this._readableState.sync=!1,e&&("function"===typeof e.transform&&(this._transform=e.transform),"function"===typeof e.flush&&(this._flush=e.flush)),
- // When the writable side finishes, then flush out anything remaining.
- this.on("prefinish",d)}function d(){var e=this;"function"!==typeof this._flush||this._readableState.destroyed?f(this,null,null):this._flush((function(t,r){f(e,t,r)}))}function f(e,t,r){if(t)return e.emit("error",t);
- // TODO(BridgeAR): Write a test for these two error cases
- // if there's nothing in the write buffer, then that means
- // that nothing more will ever be provided
- if(null!=r&&
- // single equals check for both `null` and `undefined`
- e.push(r),e._writableState.length)throw new s;if(e._transformState.transforming)throw new o;return e.push(null)}
- /***/r(5717)(c,u),c.prototype.push=function(e,t){return this._transformState.needTransform=!1,u.prototype.push.call(this,e,t)},
- // This is the part where you do stuff!
- // override this function in implementation classes.
- // 'chunk' is an input chunk.
- // Call `push(newChunk)` to pass along transformed output
- // to the readable side. You may call 'push' zero or more times.
- // Call `cb(err)` when you are done with this chunk. If you pass
- // an error, then that'll put the hurt on the whole operation. If you
- // never call cb(), then you'll never get another chunk.
- c.prototype._transform=function(e,t,r){r(new a("_transform()"))},c.prototype._write=function(e,t,r){var n=this._transformState;if(n.writecb=r,n.writechunk=e,n.writeencoding=t,!n.transforming){var a=this._readableState;(n.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}},
- // Doesn't matter what the args are here.
- // _transform does all the work.
- // That we got here means that the readable side wants more data.
- c.prototype._read=function(e){var t=this._transformState;null===t.writechunk||t.transforming?
- // mark that we need a transform, so that any data that comes in
- // will get processed, now that we've asked for it.
- t.needTransform=!0:(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform))},c.prototype._destroy=function(e,t){u.prototype._destroy.call(this,e,(function(e){t(e)}))}},
- /***/323:
- /***/function(e,t,r){"use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- // A bit simpler than readable streams.
- // Implement an async ._write(chunk, encoding, cb), and it'll handle all
- // the drain event emission and buffering.
- // It seems a linked list but it is not
- // there will be only 2 of these for each stream
- function n(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var a=n.callback;t.pendingcb--,a(r),n=n.next}
- // reuse the free corkReq.
- t.corkedRequestsFree.next=e}(t,e)}}
- /* </replacement> */
- /*<replacement>*/var a;
- /*</replacement>*/e.exports=M,M.WritableState=E;
- /*<replacement>*/
- var i={deprecate:r(4927)},o=r(3194),s=r(2860).Buffer,u=("undefined"!==typeof r.g?r.g:"undefined"!==typeof window?window:"undefined"!==typeof self?self:{}).Uint8Array||function(){};
- /*</replacement>*/
- /*<replacement>*/var l,c=r(1029),d=r(94).getHighWaterMark,f=r(8106)/* .codes */.q,h=f.ERR_INVALID_ARG_TYPE,p=f.ERR_METHOD_NOT_IMPLEMENTED,y=f.ERR_MULTIPLE_CALLBACK,m=f.ERR_STREAM_CANNOT_PIPE,v=f.ERR_STREAM_DESTROYED,g=f.ERR_STREAM_NULL_VALUES,b=f.ERR_STREAM_WRITE_AFTER_END,w=f.ERR_UNKNOWN_ENCODING,S=c.errorOrDestroy;function L(){}function E(e,t,i){a=a||r(8656),e=e||{},
- // Duplex streams are both readable and writable, but share
- // the same options object.
- // However, some cases require setting options to different
- // values for the readable and the writable sides of the duplex stream,
- // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.
- "boolean"!==typeof i&&(i=t instanceof a),
- // object stream flag to indicate whether or not this stream
- // contains buffers or objects.
- this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.writableObjectMode),
- // the point at which write() starts returning false
- // Note: 0 is a valid value, means that we always return false if
- // the entire buffer is not flushed immediately on write()
- this.highWaterMark=d(this,e,"writableHighWaterMark",i),
- // if _final has been called
- this.finalCalled=!1,
- // drain event flag.
- this.needDrain=!1,
- // at the start of calling end()
- this.ending=!1,
- // when end() has been called, and returned
- this.ended=!1,
- // when 'finish' is emitted
- this.finished=!1,
- // has it been destroyed
- this.destroyed=!1;
- // should we decode strings into buffers before passing to _write?
- // this is here so that some node-core streams can optimize string
- // handling at a lower level.
- var o=!1===e.decodeStrings;this.decodeStrings=!o,
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding=e.defaultEncoding||"utf8",
- // not an actual buffer we keep track of, but a measurement
- // of how much we're waiting to get pushed to some underlying
- // socket or file.
- this.length=0,
- // a flag to see when we're in the middle of a write.
- this.writing=!1,
- // when true all writes will be buffered until .uncork() call
- this.corked=0,
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, because any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync=!0,
- // a flag to know if we're processing previously buffered items, which
- // may call the _write() callback in the same tick, so that we don't
- // end up in an overlapped onwrite situation.
- this.bufferProcessing=!1,
- // the callback that's passed to _write(chunk,cb)
- this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,a=r.writecb;if("function"!==typeof a)throw new y;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,a){--t.pendingcb,r?(
- // defer the callback if we are being called synchronously
- // to avoid piling up things on the stack
- process.nextTick(a,n),
- // this can emit finish, and it will always happen
- // after error
- process.nextTick(C,e,t),e._writableState.errorEmitted=!0,S(e,n)):(
- // the caller expect this to happen before if
- // it is async
- a(n),e._writableState.errorEmitted=!0,S(e,n),
- // this can emit finish, but finish must
- // always follow error
- C(e,t))}(e,r,n,t,a);else{
- // Check if we're actually ready to finish, but don't emit yet
- var i=F(r)||e.destroyed;i||r.corked||r.bufferProcessing||!r.bufferedRequest||T(e,r),n?process.nextTick(x,e,r,i,a):x(e,r,i,a)}}(t,e)},
- // the callback that the user supplies to write(chunk,encoding,cb)
- this.writecb=null,
- // the amount that is being written when _write is called.
- this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,
- // number of pending user-supplied write callbacks
- // this must be 0 before 'finish' can be emitted
- this.pendingcb=0,
- // emit prefinish if the only thing we're waiting for is _write cbs
- // This is relevant for synchronous Transform streams
- this.prefinished=!1,
- // True if the error was already emitted and should not be thrown again
- this.errorEmitted=!1,
- // Should close be emitted on destroy. Defaults to true.
- this.emitClose=!1!==e.emitClose,
- // Should .destroy() be called after 'finish' (and potentially 'end')
- this.autoDestroy=!!e.autoDestroy,
- // count buffered requests
- this.bufferedRequestCount=0,
- // allocate the first CorkedRequest, there is always
- // one allocated and free to use, and we maintain at most two
- this.corkedRequestsFree=new n(this)}function M(e){
- // Writable ctor is applied to Duplexes, too.
- // `realHasInstance` is necessary because using plain `instanceof`
- // would return false, as no `_writableState` property is attached.
- // Trying to use the custom `instanceof` for Writable here will also break the
- // Node.js LazyTransform implementation, which has a non-trivial getter for
- // `_writableState` that would lead to infinite recursion.
- // Checking for a Stream.Duplex instance is faster here instead of inside
- // the WritableState constructor, at least with V8 6.5
- var t=this instanceof(a=a||r(8656));if(!t&&!l.call(M,this))return new M(e);this._writableState=new E(e,this,t),
- // legacy.
- this.writable=!0,e&&("function"===typeof e.write&&(this._write=e.write),"function"===typeof e.writev&&(this._writev=e.writev),"function"===typeof e.destroy&&(this._destroy=e.destroy),"function"===typeof e.final&&(this._final=e.final)),o.call(this)}
- // Otherwise people can pipe Writable streams, which is just wrong.
- function k(e,t,r,n,a,i,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new v("write")):r?e._writev(a,t.onwrite):e._write(a,i,t.onwrite),t.sync=!1}function x(e,t,r,n){r||
- // Must force callback to be called on nextTick, so that we don't
- // emit 'drain' before the write() consumer gets the 'false' return
- // value, and has a chance to attach a 'drain' listener.
- function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}
- // if there's something in the buffer waiting, then process it
- (e,t),t.pendingcb--,n(),C(e,t)}function T(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){
- // Fast case, write everything using _writev()
- var a=t.bufferedRequestCount,i=new Array(a),o=t.corkedRequestsFree;o.entry=r;for(var s=0,u=!0;r;)i[s]=r,r.isBuf||(u=!1),r=r.next,s+=1;i.allBuffers=u,k(e,t,!0,t.length,i,"",o.finish),
- // doWrite is almost always async, defer these to save a bit of time
- // as the hot path ends with doWrite
- t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new n(t),t.bufferedRequestCount=0}else{
- // Slow case, write chunks one-by-one
- for(;r;){var l=r.chunk,c=r.encoding,d=r.callback;
- // if we didn't call the onwrite immediately, then
- // it means that we need to wait until it does.
- // also, that means that the chunk and cb are currently
- // being processed, so move the buffer counter past them.
- if(k(e,t,!1,t.objectMode?1:l.length,l,c,d),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function F(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function P(e,t){e._final((function(r){t.pendingcb--,r&&S(e,r),t.prefinished=!0,e.emit("prefinish"),C(e,t)}))}function C(e,t){var r=F(t);if(r&&(function(e,t){t.prefinished||t.finalCalled||("function"!==typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,process.nextTick(P,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){
- // In case of duplex streams we need a way to detect
- // if the readable side is ready for autoDestroy as well
- var n=e._readableState;(!n||n.autoDestroy&&n.endEmitted)&&e.destroy()}return r}r(5717)(M,o),E.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(E.prototype,"buffer",{get:i.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"===typeof Symbol&&Symbol.hasInstance&&"function"===typeof Function.prototype[Symbol.hasInstance]?(l=Function.prototype[Symbol.hasInstance],Object.defineProperty(M,Symbol.hasInstance,{value:function(e){return!!l.call(this,e)||this===M&&(e&&e._writableState instanceof E)}})):l=function(e){return e instanceof this},M.prototype.pipe=function(){S(this,new m)},M.prototype.write=function(e,t,r){var n,a=this._writableState,i=!1,o=!a.objectMode&&(n=e,s.isBuffer(n)||n instanceof u);return o&&!s.isBuffer(e)&&(e=function(e){return s.from(e)}(e)),"function"===typeof t&&(r=t,t=null),o?t="buffer":t||(t=a.defaultEncoding),"function"!==typeof r&&(r=L),a.ending?function(e,t){var r=new b;
- // TODO: defer error events consistently everywhere, not just the cb
- S(e,r),process.nextTick(t,r)}
- // Checks that a user-supplied chunk is valid, especially for the particular
- // mode the stream is in. Currently this means that `null` is never accepted
- // and undefined/non-string values are only allowed in object mode.
- (this,r):(o||function(e,t,r,n){var a;return null===r?a=new g:"string"===typeof r||t.objectMode||(a=new h("chunk",["string","Buffer"],r)),!a||(S(e,a),process.nextTick(n,a),!1)}(this,a,e,r))&&(a.pendingcb++,i=
- // if we're already writing something, then just put this
- // in the queue, and wait our turn. Otherwise, call _write
- // If we return false, then we need a drain event, so set that flag.
- function(e,t,r,n,a,i){if(!r){var o=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!==typeof t||(t=s.from(t,r));return t}(t,n,a);n!==o&&(r=!0,a="buffer",n=o)}var u=t.objectMode?1:n.length;t.length+=u;var l=t.length<t.highWaterMark;
- // we must ensure that previous needDrain will not be reset to false.
- l||(t.needDrain=!0);if(t.writing||t.corked){var c=t.lastBufferedRequest;t.lastBufferedRequest={chunk:n,encoding:a,isBuf:r,callback:i,next:null},c?c.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else k(e,t,!1,u,n,a,i);return l}(this,a,o,e,t,r)),i},M.prototype.cork=function(){this._writableState.corked++},M.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.bufferProcessing||!e.bufferedRequest||T(this,e))},M.prototype.setDefaultEncoding=function(e){if(
- // node::ParseEncoding() requires lower case.
- "string"===typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new w(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(M.prototype,"writableBuffer",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(M.prototype,"writableHighWaterMark",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return this._writableState.highWaterMark}}),M.prototype._write=function(e,t,r){r(new p("_write()"))},M.prototype._writev=null,M.prototype.end=function(e,t,r){var n=this._writableState;return"function"===typeof e?(r=e,e=null,t=null):"function"===typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),
- // .end() fully uncorks
- n.corked&&(n.corked=1,this.uncork()),
- // ignore unnecessary end() calls.
- n.ending||function(e,t,r){t.ending=!0,C(e,t),r&&(t.finished?process.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r),this},Object.defineProperty(M.prototype,"writableLength",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(M.prototype,"destroyed",{
- // making it explicit this property is not enumerable
- // because otherwise some prototype manipulation in
- // userland will fail
- enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){
- // we ignore the value if the stream
- // has not been initialized yet
- this._writableState&&(
- // backward compatibility, the user is explicitly
- // managing destroyed
- this._writableState.destroyed=e)}}),M.prototype.destroy=c.destroy,M.prototype._undestroy=c.undestroy,M.prototype._destroy=function(e,t){t(e)}},
- /***/828:
- /***/function(e,t,r){"use strict";var n;function a(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var i=r(1086),o=Symbol("lastResolve"),s=Symbol("lastReject"),u=Symbol("error"),l=Symbol("ended"),c=Symbol("lastPromise"),d=Symbol("handlePromise"),f=Symbol("stream");function h(e,t){return{value:e,done:t}}function p(e){var t=e[o];if(null!==t){var r=e[f].read();
- // we defer if data is null
- // we can be expecting either 'end' or
- // 'error'
- null!==r&&(e[c]=null,e[o]=null,e[s]=null,t(h(r,!1)))}}function y(e){
- // we wait for the next tick, because it might
- // emit an error with process.nextTick
- process.nextTick(p,e)}var m=Object.getPrototypeOf((function(){})),v=Object.setPrototypeOf((a(n={get stream(){return this[f]},next:function(){var e=this,t=this[u];
- // if we have detected an error in the meanwhile
- // reject straight away
- if(null!==t)return Promise.reject(t);if(this[l])return Promise.resolve(h(void 0,!0));if(this[f].destroyed)
- // We need to defer via nextTick because if .destroy(err) is
- // called, the error will be emitted via nextTick, and
- // we cannot guarantee that there is no error lingering around
- // waiting to be emitted.
- return new Promise((function(t,r){process.nextTick((function(){e[u]?r(e[u]):t(h(void 0,!0))}))}));
- // if we have multiple next() calls
- // we will wait for the previous Promise to finish
- // this logic is optimized to support for await loops,
- // where next() is only called once at a time
- var r,n=this[c];if(n)r=new Promise(function(e,t){return function(r,n){e.then((function(){t[l]?r(h(void 0,!0)):t[d](r,n)}),n)}}(n,this));else{
- // fast path needed to support multiple this.push()
- // without triggering the next() queue
- var a=this[f].read();if(null!==a)return Promise.resolve(h(a,!1));r=new Promise(this[d])}return this[c]=r,r}},Symbol.asyncIterator,(function(){return this})),a(n,"return",(function(){var e=this;
- // destroy(err, cb) is a private API
- // we can guarantee we have that here, because we control the
- // Readable class this is attached to
- return new Promise((function(t,r){e[f].destroy(null,(function(e){e?r(e):t(h(void 0,!0))}))}))})),n),m);e.exports=function(e){var t,r=Object.create(v,(a(t={},f,{value:e,writable:!0}),a(t,o,{value:null,writable:!0}),a(t,s,{value:null,writable:!0}),a(t,u,{value:null,writable:!0}),a(t,l,{value:e._readableState.endEmitted,writable:!0}),a(t,d,{value:function(e,t){var n=r[f].read();n?(r[c]=null,r[o]=null,r[s]=null,e(h(n,!1))):(r[o]=e,r[s]=t)},writable:!0}),t));return r[c]=null,i(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=r[s];
- // reject if we are waiting for data in the Promise
- // returned by next() and store the error
- return null!==t&&(r[c]=null,r[o]=null,r[s]=null,t(e)),void(r[u]=e)}var n=r[o];null!==n&&(r[c]=null,r[o]=null,r[s]=null,n(h(void 0,!0))),r[l]=!0})),e.on("readable",y.bind(null,r)),r}},
- /***/9686:
- /***/function(e,t,r){"use strict";function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t,r){return(t=s(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,s(n.key),n)}}function s(e){var t=function(e,t){if("object"!==typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===typeof t?t:String(t)}var u=r(2961).Buffer,l=r(9862).inspect,c=l&&l.custom||"inspect";e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}var t,r,n;return t=e,(r=[{key:"push",value:function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return u.alloc(0);for(var t,r,n,a=u.allocUnsafe(e>>>0),i=this.head,o=0;i;)t=i.data,r=a,n=o,u.prototype.copy.call(t,r,n),o+=i.data.length,i=i.next;return a}
- // Consumes a specified amount of bytes or characters from the buffered data.
- },{key:"consume",value:function(e,t){var r;return e<this.head.data.length?(
- // `slice` is the same for buffers and strings.
- r=this.head.data.slice(0,e),this.head.data=this.head.data.slice(e)):
- // First chunk is a perfect match.
- r=e===this.head.data.length?this.shift():t?this._getString(e):this._getBuffer(e),r}},{key:"first",value:function(){return this.head.data}
- // Consumes a specified amount of characters from the buffered data.
- },{key:"_getString",value:function(e){var t=this.head,r=1,n=t.data;for(e-=n.length;t=t.next;){var a=t.data,i=e>a.length?a.length:e;if(i===a.length?n+=a:n+=a.slice(0,e),0===(e-=i)){i===a.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=a.slice(i));break}++r}return this.length-=r,n}
- // Consumes a specified amount of bytes from the buffered data.
- },{key:"_getBuffer",value:function(e){var t=u.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var a=r.data,i=e>a.length?a.length:e;if(a.copy(t,t.length-e,0,i),0===(e-=i)){i===a.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=a.slice(i));break}++n}return this.length-=n,t}
- // Make sure the linked list only shows the minimal necessary information.
- },{key:c,value:function(e,t){return l(this,a(a({},t),{},{
- // Only inspect one level.
- depth:0,
- // It should not recurse.
- customInspect:!1}))}}])&&o(t.prototype,r),n&&o(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}()},
- /***/1029:
- /***/function(e){"use strict";
- // undocumented cb() API, needed for core, not for public API
- function t(e,t){n(e,t),r(e)}function r(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function n(e,t){e.emit("error",t)}e.exports={destroy:function(e,a){var i=this,o=this._readableState&&this._readableState.destroyed,s=this._writableState&&this._writableState.destroyed;return o||s?(a?a(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(n,this,e)):process.nextTick(n,this,e)),this):(
- // we set destroyed to true before firing error callbacks in order
- // to make it re-entrance safe in case destroy() is called within callbacks
- this._readableState&&(this._readableState.destroyed=!0),
- // if this is a duplex stream mark the writable part as destroyed as well
- this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!a&&e?i._writableState?i._writableState.errorEmitted?process.nextTick(r,i):(i._writableState.errorEmitted=!0,process.nextTick(t,i,e)):process.nextTick(t,i,e):a?(process.nextTick(r,i),a(e)):process.nextTick(r,i)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){
- // We have tests that rely on errors being emitted
- // in the same tick, so changing this is semver major.
- // For now when you opt-in to autoDestroy we allow
- // the error to be emitted nextTick. In a future
- // semver major update we should change the default to this.
- var r=e._readableState,n=e._writableState;r&&r.autoDestroy||n&&n.autoDestroy?e.destroy(t):e.emit("error",t)}}},
- /***/1086:
- /***/function(e,t,r){"use strict";
- // Ported from https://github.com/mafintosh/end-of-stream with
- // permission from the author, Mathias Buus (@mafintosh).
- var n=r(8106)/* .codes.ERR_STREAM_PREMATURE_CLOSE */.q.ERR_STREAM_PREMATURE_CLOSE;function a(){}e.exports=function e(t,r,i){if("function"===typeof r)return e(t,null,r);r||(r={}),i=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),a=0;a<r;a++)n[a]=arguments[a];e.apply(this,n)}}}(i||a);var o=r.readable||!1!==r.readable&&t.readable,s=r.writable||!1!==r.writable&&t.writable,u=function(){t.writable||c()},l=t._writableState&&t._writableState.finished,c=function(){s=!1,l=!0,o||i.call(t)},d=t._readableState&&t._readableState.endEmitted,f=function(){o=!1,d=!0,s||i.call(t)},h=function(e){i.call(t,e)},p=function(){var e;return o&&!d?(t._readableState&&t._readableState.ended||(e=new n),i.call(t,e)):s&&!l?(t._writableState&&t._writableState.ended||(e=new n),i.call(t,e)):void 0},y=function(){t.req.on("finish",c)};return!function(e){return e.setHeader&&"function"===typeof e.abort}(t)?s&&!t._writableState&&(
- // legacy streams
- t.on("end",u),t.on("close",u)):(t.on("complete",c),t.on("abort",p),t.req?y():t.on("request",y)),t.on("end",f),t.on("finish",c),!1!==r.error&&t.on("error",h),t.on("close",p),function(){t.removeListener("complete",c),t.removeListener("abort",p),t.removeListener("request",y),t.req&&t.req.removeListener("finish",c),t.removeListener("end",u),t.removeListener("close",u),t.removeListener("finish",c),t.removeListener("end",f),t.removeListener("error",h),t.removeListener("close",p)}}},
- /***/1265:
- /***/function(e){e.exports=function(){throw new Error("Readable.from is not available in the browser")};
- /***/},
- /***/6472:
- /***/function(e,t,r){"use strict";
- // Ported from https://github.com/mafintosh/pump with
- // permission from the author, Mathias Buus (@mafintosh).
- var n;var a=r(8106)/* .codes */.q,i=a.ERR_MISSING_ARGS,o=a.ERR_STREAM_DESTROYED;function s(e){
- // Rethrow the error if it exists to avoid swallowing it
- if(e)throw e}function u(e){e()}function l(e,t){return e.pipe(t)}e.exports=function(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];var c,d=function(e){return e.length?"function"!==typeof e[e.length-1]?s:e.pop():s}(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new i("streams");var f=t.map((function(e,a){var i=a<t.length-1;return function(e,t,a,i){i=function(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}(i);var s=!1;e.on("close",(function(){s=!0})),void 0===n&&(n=r(1086)),n(e,{readable:t,writable:a},(function(e){if(e)return i(e);s=!0,i()}));var u=!1;return function(t){if(!s&&!u)
- // request.destroy just do .end - .abort is what we want
- return u=!0,function(e){return e.setHeader&&"function"===typeof e.abort}(e)?e.abort():"function"===typeof e.destroy?e.destroy():void i(t||new o("pipe"))}}(e,i,a>0,(function(e){c||(c=e),e&&f.forEach(u),i||(f.forEach(u),d(c))}))}));return t.reduce(l)}},
- /***/94:
- /***/function(e,t,r){"use strict";var n=r(8106)/* .codes.ERR_INVALID_OPT_VALUE */.q.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(e,t,r,a){var i=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,a,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(a?r:"highWaterMark",i);return Math.floor(i)}
- // Default value
- return e.objectMode?16:16384}}},
- /***/3194:
- /***/function(e,t,r){e.exports=r(7187).EventEmitter;
- /***/},
- /***/2553:
- /***/function(e,t,r){"use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- /*<replacement>*/var n=r(396).Buffer,a=n.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};
- /*</replacement>*/function i(e){var t;switch(this.encoding=
- // Do not cache `Buffer.isEncoding` when checking encoding names as some
- // modules monkey-patch it to support additional encodings
- function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;// undefined
- e=(""+e).toLowerCase(),t=!0}}(e);if("string"!==typeof t&&(n.isEncoding===a||!a(e)))throw new Error("Unknown encoding: "+e);return t||e}
- // StringDecoder provides an interface for efficiently splitting a series of
- // buffers into a series of JS strings without breaking apart multi-byte
- // characters.
- (e),this.encoding){case"utf16le":this.text=u,this.end=l,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=c,this.end=d,t=3;break;default:return this.write=f,void(this.end=h)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}
- // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
- // continuation byte. If an invalid byte is detected, -2 is returned.
- function o(e){return e<=127?0:e>>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}
- // Checks at most 3 bytes at the end of a Buffer in order to detect an
- // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
- // needed to complete the UTF-8 character (if applicable) are returned.
- // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
- function s(e){var t=this.lastTotal-this.lastNeed,r=
- // Validates as many continuation bytes for a multi-byte UTF-8 character as
- // needed or are available. If we see a non-continuation byte where we expect
- // one, we "replace" the validated continuation bytes we've seen so far with
- // a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding
- // behavior. The continuation byte check is included three times in the case
- // where all of the continuation bytes for a character exist in the same buffer.
- // It is also done this way as a slight performance increase instead of using a
- // loop.
- function(e,t,r){if(128!==(192&t[0]))return e.lastNeed=0,"\ufffd";if(e.lastNeed>1&&t.length>1){if(128!==(192&t[1]))return e.lastNeed=1,"\ufffd";if(e.lastNeed>2&&t.length>2&&128!==(192&t[2]))return e.lastNeed=2,"\ufffd"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}
- // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
- // partial character, the character's bytes are buffered until the required
- // number of bytes are available.
- // UTF-16LE typically needs two bytes per character, but even if we have an even
- // number of bytes available, we need to check if we end on a leading/high
- // surrogate. In that case, we need to wait for the next two bytes in order to
- // decode the last character properly.
- function u(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}
- // For UTF-16LE we do not explicitly append special replacement characters if we
- // end on a partial character, we simply let v8 handle that.
- function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function c(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function d(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}
- // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
- function f(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}
- /***/t.s=i,i.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||""},i.prototype.end=
- // For UTF-8, a replacement character is added when ending on a partial
- // character.
- function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\ufffd":t},
- // Returns only complete characters in a Buffer
- i.prototype.text=function(e,t){var r=function(e,t,r){var n=t.length-1;if(n<r)return 0;var a=o(t[n]);if(a>=0)return a>0&&(e.lastNeed=a-1),a;if(--n<r||-2===a)return 0;if(a=o(t[n]),a>=0)return a>0&&(e.lastNeed=a-2),a;if(--n<r||-2===a)return 0;if(a=o(t[n]),a>=0)return a>0&&(2===a?a=0:e.lastNeed=a-3),a;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},
- // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
- i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},
- /***/396:
- /***/function(e,t,r){
- /* eslint-disable node/no-deprecated-api */
- var n=r(2783),a=n.Buffer;
- // alternative to using Object.keys for old browsers
- function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return a(e,t,r)}
- // Copy static methods from Buffer
- a.from&&a.alloc&&a.allocUnsafe&&a.allocUnsafeSlow?e.exports=n:(
- // Copy properties from require('buffer')
- i(n,t),t.Buffer=o),i(a,o),o.from=function(e,t,r){if("number"===typeof e)throw new TypeError("Argument must not be a number");return a(e,t,r)},o.alloc=function(e,t,r){if("number"!==typeof e)throw new TypeError("Argument must be a number");var n=a(e);return void 0!==t?"string"===typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},o.allocUnsafe=function(e){if("number"!==typeof e)throw new TypeError("Argument must be a number");return a(e)},o.allocUnsafeSlow=function(e){if("number"!==typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}
- /***/},
- /***/4927:
- /***/function(e,t,r){
- /**
- * Checks `localStorage` for boolean values for the given `name`.
- *
- * @param {String} name
- * @returns {Boolean}
- * @api private
- */
- function n(e){
- // accessing global.localStorage can trigger a DOMException in sandboxed iframes
- try{if(!r.g.localStorage)return!1}catch(n){return!1}var t=r.g.localStorage[e];return null!=t&&"true"===String(t).toLowerCase()}
- /***/
- /**
- * Module exports.
- */
- e.exports=
- /**
- * Mark that a method should not be used.
- * Returns a modified function which warns once by default.
- *
- * If `localStorage.noDeprecation = true` is set, then it is a no-op.
- *
- * If `localStorage.throwDeprecation = true` is set, then deprecated functions
- * will throw an Error when invoked.
- *
- * If `localStorage.traceDeprecation = true` is set, then deprecated functions
- * will invoke `console.trace()` instead of `console.error()`.
- *
- * @param {Function} fn - the function to deprecate
- * @param {String} msg - the string to print to the console when `fn` is invoked
- * @returns {Function} a new "deprecated" version of `fn`
- * @api public
- */
- function(e,t){if(n("noDeprecation"))return e;var r=!1;return function(){if(!r){if(n("throwDeprecation"))throw new Error(t);n("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}}},
- /***/9881:
- /***/function(e){e.exports={isArray:function(e){return Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e);
- // fallback for older browsers like IE 8
- }};
- /***/},
- /***/7888:
- /***/function(e,t,r){
- /*jslint node:true */
- var n=r(1229),a=r(1388),i=r(6501),o=r(4673);e.exports={xml2js:n,xml2json:a,js2xml:i,json2xml:o}},
- /***/6501:
- /***/function(e,t,r){var n,a,i=r(4740),o=r(9881).isArray;function s(e,t,r){return(!r&&e.spaces?"\n":"")+Array(t+1).join(e.spaces)}function u(e,t,r){if(t.ignoreAttributes)return"";"attributesFn"in t&&(e=t.attributesFn(e,a,n));var i,o,u,l,c=[];for(i in e)e.hasOwnProperty(i)&&null!==e[i]&&void 0!==e[i]&&(l=t.noQuotesForNativeAttributes&&"string"!==typeof e[i]?"":'"',// ensure number and boolean are converted to String
- o=(o=""+e[i]).replace(/"/g,"""),u="attributeNameFn"in t?t.attributeNameFn(i,o,a,n):i,c.push(t.spaces&&t.indentAttributes?s(t,r+1,!1):" "),c.push(u+"="+l+("attributeValueFn"in t?t.attributeValueFn(o,i,a,n):o)+l));return e&&Object.keys(e).length&&t.spaces&&t.indentAttributes&&c.push(s(t,r,!1)),c.join("")}function l(e,t,r){return n=e,a="xml",t.ignoreDeclaration?"":"<?xml"+u(e[t.attributesKey],t,r)+"?>"}function c(e,t,r){if(t.ignoreInstruction)return"";var i;for(i in e)if(e.hasOwnProperty(i))break;var o="instructionNameFn"in t?t.instructionNameFn(i,e[i],a,n):i;if("object"===typeof e[i])return n=e,a=o,"<?"+o+u(e[i][t.attributesKey],t,r)+"?>";var s=e[i]?e[i]:"";return"instructionFn"in t&&(s=t.instructionFn(s,i,a,n)),"<?"+o+(s?" "+s:"")+"?>"}function d(e,t){return t.ignoreComment?"":"\x3c!--"+("commentFn"in t?t.commentFn(e,a,n):e)+"--\x3e"}function f(e,t){return t.ignoreCdata?"":"<![CDATA["+("cdataFn"in t?t.cdataFn(e,a,n):e.replace("]]>","]]]]><![CDATA[>"))+"]]>"}function h(e,t){return t.ignoreDoctype?"":"<!DOCTYPE "+("doctypeFn"in t?t.doctypeFn(e,a,n):e)+">"}function p(e,t){return t.ignoreText?"":(// desanitize to avoid double sanitization
- e=(// ensure Number and Boolean are converted to String
- e=(e=""+e).replace(/&/g,"&")).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),"textFn"in t?t.textFn(e,a,n):e)}function y(e,t,r,i){return e.reduce((function(e,o){var l=s(t,r,i&&!e);switch(o.type){case"element":return e+l+function(e,t,r){n=e,a=e.name;var i=[],o="elementNameFn"in t?t.elementNameFn(e.name,e):e.name;i.push("<"+o),e[t.attributesKey]&&i.push(u(e[t.attributesKey],t,r));var s=e[t.elementsKey]&&e[t.elementsKey].length||e[t.attributesKey]&&"preserve"===e[t.attributesKey]["xml:space"];return s||(s="fullTagEmptyElementFn"in t?t.fullTagEmptyElementFn(e.name,e):t.fullTagEmptyElement),s?(i.push(">"),e[t.elementsKey]&&e[t.elementsKey].length&&(i.push(y(e[t.elementsKey],t,r+1)),n=e,a=e.name),i.push(t.spaces&&function(e,t){var r;if(e.elements&&e.elements.length)for(r=0;r<e.elements.length;++r)switch(e.elements[r][t.typeKey]){case"text":if(t.indentText)return!0;break;// skip to next key
- case"cdata":if(t.indentCdata)return!0;break;// skip to next key
- case"instruction":if(t.indentInstruction)return!0;break;// skip to next key
- default:return!0}return!1}(e,t)?"\n"+Array(r+1).join(t.spaces):""),i.push("</"+o+">")):i.push("/>"),i.join("")}(o,t,r);case"comment":return e+l+d(o[t.commentKey],t);case"doctype":return e+l+h(o[t.doctypeKey],t);case"cdata":return e+(t.indentCdata?l:"")+f(o[t.cdataKey],t);case"text":return e+(t.indentText?l:"")+p(o[t.textKey],t);case"instruction":var m={};return m[o[t.nameKey]]=o[t.attributesKey]?o:o[t.instructionKey],e+(t.indentInstruction?l:"")+c(m,t,r)}}),"")}function m(e,t,r){var n;for(n in e)if(e.hasOwnProperty(n))switch(n){case t.parentKey:case t.attributesKey:break;// skip to next key
- case t.textKey:if(t.indentText||r)return!0;break;// skip to next key
- case t.cdataKey:if(t.indentCdata||r)return!0;break;// skip to next key
- case t.instructionKey:if(t.indentInstruction||r)return!0;break;// skip to next key
- case t.doctypeKey:case t.commentKey:default:return!0}return!1}function v(e,t,r,i,o){n=e,a=t;var l="elementNameFn"in r?r.elementNameFn(t,e):t;if("undefined"===typeof e||null===e||""===e)return"fullTagEmptyElementFn"in r&&r.fullTagEmptyElementFn(t,e)||r.fullTagEmptyElement?"<"+l+"></"+l+">":"<"+l+"/>";var c=[];if(t){if(c.push("<"+l),"object"!==typeof e)return c.push(">"+p(e,r)+"</"+l+">"),c.join("");e[r.attributesKey]&&c.push(u(e[r.attributesKey],r,i));var d=m(e,r,!0)||e[r.attributesKey]&&"preserve"===e[r.attributesKey]["xml:space"];if(d||(d="fullTagEmptyElementFn"in r?r.fullTagEmptyElementFn(t,e):r.fullTagEmptyElement),!d)return c.push("/>"),c.join("");c.push(">")}return c.push(g(e,r,i+1,!1)),n=e,a=t,t&&c.push((o?s(r,i,!1):"")+"</"+l+">"),c.join("")}function g(e,t,r,n){var a,i,u,y=[];for(i in e)if(e.hasOwnProperty(i))for(u=o(e[i])?e[i]:[e[i]],a=0;a<u.length;++a){switch(i){case t.declarationKey:y.push(l(u[a],t,r));break;case t.instructionKey:y.push((t.indentInstruction?s(t,r,n):"")+c(u[a],t,r));break;case t.attributesKey:case t.parentKey:break;// skip
- case t.textKey:y.push((t.indentText?s(t,r,n):"")+p(u[a],t));break;case t.cdataKey:y.push((t.indentCdata?s(t,r,n):"")+f(u[a],t));break;case t.doctypeKey:y.push(s(t,r,n)+h(u[a],t));break;case t.commentKey:y.push(s(t,r,n)+d(u[a],t));break;default:y.push(s(t,r,n)+v(u[a],i,t,r,m(u[a],t)))}n=n&&!y.length}return y.join("")}e.exports=function(e,t){t=function(e){var t=i.copyOptions(e);return i.ensureFlagExists("ignoreDeclaration",t),i.ensureFlagExists("ignoreInstruction",t),i.ensureFlagExists("ignoreAttributes",t),i.ensureFlagExists("ignoreText",t),i.ensureFlagExists("ignoreComment",t),i.ensureFlagExists("ignoreCdata",t),i.ensureFlagExists("ignoreDoctype",t),i.ensureFlagExists("compact",t),i.ensureFlagExists("indentText",t),i.ensureFlagExists("indentCdata",t),i.ensureFlagExists("indentAttributes",t),i.ensureFlagExists("indentInstruction",t),i.ensureFlagExists("fullTagEmptyElement",t),i.ensureFlagExists("noQuotesForNativeAttributes",t),i.ensureSpacesExists(t),"number"===typeof t.spaces&&(t.spaces=Array(t.spaces+1).join(" ")),i.ensureKeyExists("declaration",t),i.ensureKeyExists("instruction",t),i.ensureKeyExists("attributes",t),i.ensureKeyExists("text",t),i.ensureKeyExists("comment",t),i.ensureKeyExists("cdata",t),i.ensureKeyExists("doctype",t),i.ensureKeyExists("type",t),i.ensureKeyExists("name",t),i.ensureKeyExists("elements",t),i.checkFnExists("doctype",t),i.checkFnExists("instruction",t),i.checkFnExists("cdata",t),i.checkFnExists("comment",t),i.checkFnExists("text",t),i.checkFnExists("instructionName",t),i.checkFnExists("elementName",t),i.checkFnExists("attributeName",t),i.checkFnExists("attributeValue",t),i.checkFnExists("attributes",t),i.checkFnExists("fullTagEmptyElement",t),t}(t);var r=[];return n=e,a="_root_",t.compact?r.push(g(e,t,0,!0)):(e[t.declarationKey]&&r.push(l(e[t.declarationKey],t,0)),e[t.elementsKey]&&e[t.elementsKey].length&&r.push(y(e[t.elementsKey],t,0,!r.length))),r.join("")}},
- /***/4673:
- /***/function(e,t,r){var n=r(6501);e.exports=function(e,t){e instanceof Buffer&&(e=e.toString());var r=null;if("string"===typeof e)try{r=JSON.parse(e)}catch(a){throw new Error("The JSON structure is invalid")}else r=e;return n(r,t)}},
- /***/4740:
- /***/function(e,t,r){var n=r(9881).isArray;e.exports={copyOptions:function(e){var t,r={};for(t in e)e.hasOwnProperty(t)&&(r[t]=e[t]);return r},ensureFlagExists:function(e,t){e in t&&"boolean"===typeof t[e]||(t[e]=!1)},ensureSpacesExists:function(e){(!("spaces"in e)||"number"!==typeof e.spaces&&"string"!==typeof e.spaces)&&(e.spaces=0)},ensureAlwaysArrayExists:function(e){"alwaysArray"in e&&("boolean"===typeof e.alwaysArray||n(e.alwaysArray))||(e.alwaysArray=!1)},ensureKeyExists:function(e,t){e+"Key"in t&&"string"===typeof t[e+"Key"]||(t[e+"Key"]=t.compact?"_"+e:e)},checkFnExists:function(e,t){return e+"Fn"in t}}},
- /***/1229:
- /***/function(e,t,r){var n,a,i=r(6099),o=r(4740),s=r(9881).isArray;function u(e){var t=Number(e);if(!isNaN(t))return t;var r=e.toLowerCase();return"true"===r||"false"!==r&&e}function l(e,t){var r;if(n.compact){if(!a[n[e+"Key"]]&&(s(n.alwaysArray)?-1!==n.alwaysArray.indexOf(n[e+"Key"]):n.alwaysArray)&&(a[n[e+"Key"]]=[]),a[n[e+"Key"]]&&!s(a[n[e+"Key"]])&&(a[n[e+"Key"]]=[a[n[e+"Key"]]]),e+"Fn"in n&&"string"===typeof t&&(t=n[e+"Fn"](t,a)),"instruction"===e&&("instructionFn"in n||"instructionNameFn"in n))for(r in t)if(t.hasOwnProperty(r))if("instructionFn"in n)t[r]=n.instructionFn(t[r],r,a);else{var i=t[r];delete t[r],t[n.instructionNameFn(r,i,a)]=i}s(a[n[e+"Key"]])?a[n[e+"Key"]].push(t):a[n[e+"Key"]]=t}else{a[n.elementsKey]||(a[n.elementsKey]=[]);var o={};if(o[n.typeKey]=e,"instruction"===e){for(r in t)if(t.hasOwnProperty(r))break;o[n.nameKey]="instructionNameFn"in n?n.instructionNameFn(r,t,a):r,n.instructionHasAttributes?(o[n.attributesKey]=t[r][n.attributesKey],"instructionFn"in n&&(o[n.attributesKey]=n.instructionFn(o[n.attributesKey],r,a))):("instructionFn"in n&&(t[r]=n.instructionFn(t[r],r,a)),o[n.instructionKey]=t[r])}else e+"Fn"in n&&(t=n[e+"Fn"](t,a)),o[n[e+"Key"]]=t;n.addParent&&(o[n.parentKey]=a),a[n.elementsKey].push(o)}}function c(e){var t;if("attributesFn"in n&&e&&(e=n.attributesFn(e,a)),(n.trim||"attributeValueFn"in n||"attributeNameFn"in n||n.nativeTypeAttributes)&&e)for(t in e)if(e.hasOwnProperty(t)&&(n.trim&&(e[t]=e[t].trim()),n.nativeTypeAttributes&&(e[t]=u(e[t])),"attributeValueFn"in n&&(e[t]=n.attributeValueFn(e[t],t,a)),"attributeNameFn"in n)){var r=e[t];delete e[t],e[n.attributeNameFn(t,e[t],a)]=r}return e}function d(e){var t={};if(e.body&&("xml"===e.name.toLowerCase()||n.instructionHasAttributes)){for(var r,i=/([\w:-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|(\w+))\s*/g;null!==(r=i.exec(e.body));)t[r[1]]=r[2]||r[3]||r[4];t=c(t)}if("xml"===e.name.toLowerCase()){if(n.ignoreDeclaration)return;a[n.declarationKey]={},Object.keys(t).length&&(a[n.declarationKey][n.attributesKey]=t),n.addParent&&(a[n.declarationKey][n.parentKey]=a)}else{if(n.ignoreInstruction)return;n.trim&&(e.body=e.body.trim());var o={};n.instructionHasAttributes&&Object.keys(t).length?(o[e.name]={},o[e.name][n.attributesKey]=t):o[e.name]=e.body,l("instruction",o)}}function f(e,t){var r;if("object"===typeof e&&(t=e.attributes,e=e.name),t=c(t),"elementNameFn"in n&&(e=n.elementNameFn(e,a)),n.compact){var i;if(r={},!n.ignoreAttributes&&t&&Object.keys(t).length)for(i in r[n.attributesKey]={},t)t.hasOwnProperty(i)&&(r[n.attributesKey][i]=t[i]);!(e in a)&&(s(n.alwaysArray)?-1!==n.alwaysArray.indexOf(e):n.alwaysArray)&&(a[e]=[]),a[e]&&!s(a[e])&&(a[e]=[a[e]]),s(a[e])?a[e].push(r):a[e]=r}else a[n.elementsKey]||(a[n.elementsKey]=[]),(r={})[n.typeKey]="element",r[n.nameKey]=e,!n.ignoreAttributes&&t&&Object.keys(t).length&&(r[n.attributesKey]=t),n.alwaysChildren&&(r[n.elementsKey]=[]),a[n.elementsKey].push(r);r[n.parentKey]=a,// will be deleted in onEndElement() if !options.addParent
- a=r}function h(e){n.ignoreText||(e.trim()||n.captureSpacesBetweenElements)&&(n.trim&&(e=e.trim()),n.nativeType&&(e=u(e)),n.sanitize&&(e=e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")),l("text",e))}function p(e){n.ignoreComment||(n.trim&&(e=e.trim()),l("comment",e))}function y(e){var t=a[n.parentKey];n.addParent||delete a[n.parentKey],a=t}function m(e){n.ignoreCdata||(n.trim&&(e=e.trim()),l("cdata",e))}function v(e){n.ignoreDoctype||(e=e.replace(/^ /,""),n.trim&&(e=e.trim()),l("doctype",e))}function g(e){e.note=e;//console.error(error);
- }e.exports=function(e,t){var r=i.parser(!0,{}),s={};if(a=s,n=function(e){return n=o.copyOptions(e),o.ensureFlagExists("ignoreDeclaration",n),o.ensureFlagExists("ignoreInstruction",n),o.ensureFlagExists("ignoreAttributes",n),o.ensureFlagExists("ignoreText",n),o.ensureFlagExists("ignoreComment",n),o.ensureFlagExists("ignoreCdata",n),o.ensureFlagExists("ignoreDoctype",n),o.ensureFlagExists("compact",n),o.ensureFlagExists("alwaysChildren",n),o.ensureFlagExists("addParent",n),o.ensureFlagExists("trim",n),o.ensureFlagExists("nativeType",n),o.ensureFlagExists("nativeTypeAttributes",n),o.ensureFlagExists("sanitize",n),o.ensureFlagExists("instructionHasAttributes",n),o.ensureFlagExists("captureSpacesBetweenElements",n),o.ensureAlwaysArrayExists(n),o.ensureKeyExists("declaration",n),o.ensureKeyExists("instruction",n),o.ensureKeyExists("attributes",n),o.ensureKeyExists("text",n),o.ensureKeyExists("comment",n),o.ensureKeyExists("cdata",n),o.ensureKeyExists("doctype",n),o.ensureKeyExists("type",n),o.ensureKeyExists("name",n),o.ensureKeyExists("elements",n),o.ensureKeyExists("parent",n),o.checkFnExists("doctype",n),o.checkFnExists("instruction",n),o.checkFnExists("cdata",n),o.checkFnExists("comment",n),o.checkFnExists("text",n),o.checkFnExists("instructionName",n),o.checkFnExists("elementName",n),o.checkFnExists("attributeName",n),o.checkFnExists("attributeValue",n),o.checkFnExists("attributes",n),n}(t),r.opt={strictEntities:!0},r.onopentag=f,r.ontext=h,r.oncomment=p,r.onclosetag=y,r.onerror=g,r.oncdata=m,r.ondoctype=v,r.onprocessinginstruction=d,r.write(e).close(),s[n.elementsKey]){var u=s[n.elementsKey];delete s[n.elementsKey],s[n.elementsKey]=u,delete s.text}return s}},
- /***/1388:
- /***/function(e,t,r){var n=r(4740),a=r(1229);e.exports=function(e,t){var r,i,o;return r=function(e){var t=n.copyOptions(e);return n.ensureSpacesExists(t),t}(t),i=a(e,r),o="compact"in r&&r.compact?"_parent":"parent",(
- // parentKey = ptions.compact ? '_parent' : 'parent'; // consider this
- "addParent"in r&&r.addParent?JSON.stringify(i,(function(e,t){return e===o?"_":t}),r.spaces):JSON.stringify(i,null,r.spaces)).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}},
- /***/8399:
- /***/function(e){
- /**
- * geostats() is a tiny and standalone javascript library for classification
- * Project page - https://github.com/simogeo/geostats
- * Copyright (c) 2011 Simon Georget, http://www.empreinte-urbaine.eu
- * Licensed under the MIT license
- */
- e.exports=function(){var e=function(e){return"number"===typeof e&&parseFloat(e)==parseInt(e,10)&&!isNaN(e)}// 6 characters
- ,r=function(e){return e},n=function(e){return!isNaN(parseFloat(e))&&isFinite(e)}
- //indexOf polyfill
- // from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf;
- Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){if(void 0===this||null===this)throw new TypeError('"this" is null or not defined');var r=this.length>>>0;// Hack to convert object.length to a UInt32
- for(t=+t||0,Math.abs(t)===1/0&&(t=0),t<0&&(t+=r)<0&&(t=0);t<r;t++)if(this[t]===e)return t;return-1});var a=function(a){this.objectID="",this.separator=" - ",this.legendSeparator=this.separator,this.method="",this.precision=0,this.precisionflag="auto",this.roundlength=2,// Number of decimals, round values
- this.is_uniqueValues=!1,this.debug=!1,this.silent=!1,this.bounds=Array(),this.ranges=Array(),this.inner_ranges=null,this.colors=Array(),this.counter=Array(),
- // statistics information
- this.stat_sorted=null,this.stat_mean=null,this.stat_median=null,this.stat_sum=null,this.stat_max=null,this.stat_min=null,this.stat_pop=null,this.stat_variance=null,this.stat_stddev=null,this.stat_cov=null,
- /**
- * logging method
- */
- this.log=function(e,t){1!=this.debug&&null==t||console.log(this.objectID+"(object id) :: "+e)},
- /**
- * Set bounds
- */
- this.setBounds=function(e){this.log("Setting bounds ("+e.length+") : "+e.join()),this.bounds=Array(),// init empty array to prevent bug when calling classification after another with less items (sample getQuantile(6) and getQuantile(4))
- this.bounds=e},
- /**
- * Set a new serie
- */
- this.setSerie=function(e){this.log("Setting serie ("+e.length+") : "+e.join()),this.serie=Array(),// init empty array to prevent bug when calling classification after another with less items (sample getQuantile(6) and getQuantile(4))
- this.serie=e,
- //reset statistics after changing serie
- this.resetStatistics(),this.setPrecision()},
- /**
- * Set colors
- */
- this.setColors=function(e){this.log("Setting color ramp ("+e.length+") : "+e.join()),this.colors=e},
- /**
- * Get feature count
- * With bounds array(0, 0.75, 1.5, 2.25, 3);
- * should populate this.counter with 5 keys
- * and increment counters for each key
- */
- this.doCount=function(){if(!this._nodata()){var e=this.sorted();
- // we init counter with 0 value
- for(this.counter=new Array,i=0;i<this.bounds.length-1;i++)this.counter[i]=0;for(j=0;j<e.length;j++){
- // get current class for value to increment the counter
- var t=this.getClass(e[j]);this.counter[t]++}}},
- /**
- * Set decimal precision according to user input
- * or automatcally determined according
- * to the given serie.
- */
- this.setPrecision=function(e){
- // we calculate the maximal decimal length on given serie
- if(
- // only when called from user
- "undefined"!==typeof e&&(this.precisionflag="manual",this.precision=e),"auto"==this.precisionflag)for(var t=0;t<this.serie.length;t++){
- // check if the given value is a number and a float
- if(isNaN(this.serie[t]+"")||-1==(this.serie[t]+"").toString().indexOf("."))r=0;else var r=(this.serie[t]+"").split(".")[1].length;r>this.precision&&(this.precision=r)}this.precision>20&&(
- // prevent "Uncaught RangeError: toFixed() digits argument must be between 0 and 20" bug. See https://github.com/simogeo/geostats/issues/34
- this.log("this.precision value ("+this.precision+') is greater than max value. Automatic set-up to 20 to prevent "Uncaught RangeError: toFixed()" when calling decimalFormat() method.'),this.precision=20),this.log("Calling setPrecision(). Mode : "+this.precisionflag+" - Decimals : "+this.precision),this.serie=this.decimalFormat(this.serie)},
- /**
- * Format array numbers regarding to precision
- */
- this.decimalFormat=function(e){for(var t=new Array,r=0;r<e.length;r++)
- // check if the given value is a number
- n(e[r])?t[r]=parseFloat(parseFloat(e[r]).toFixed(this.precision)):t[r]=e[r];return t}
- /**
- * Transform a bounds array to a range array the following array : array(0,
- * 0.75, 1.5, 2.25, 3); becomes : array('0-0.75', '0.75-1.5', '1.5-2.25',
- * '2.25-3');
- */,this.setRanges=function(){// init empty array to prevent bug when calling classification after another with less items (sample getQuantile(6) and getQuantile(4))
- for(this.ranges=Array(),i=0;i<this.bounds.length-1;i++)this.ranges[i]=this.bounds[i]+this.separator+this.bounds[i+1]},
- /** return min value */
- this.min=function(){if(!this._nodata()){for(this.stat_min=this.serie[0],i=0;i<this.pop();i++)this.serie[i]<this.stat_min&&(this.stat_min=this.serie[i]);return this.stat_min}},
- /** return max value */
- this.max=function(){if(!this._nodata()){for(this.stat_max=this.serie[0],i=0;i<this.pop();i++)this.serie[i]>this.stat_max&&(this.stat_max=this.serie[i]);return this.stat_max}},
- /** return sum value */
- this.sum=function(){if(!this._nodata()){if(null==this.stat_sum)for(this.stat_sum=0,i=0;i<this.pop();i++)this.stat_sum+=parseFloat(this.serie[i]);return this.stat_sum}},
- /** return population number */
- this.pop=function(){if(!this._nodata())return null==this.stat_pop&&(this.stat_pop=this.serie.length),this.stat_pop},
- /** return mean value */
- this.mean=function(){if(!this._nodata())return null==this.stat_mean&&(this.stat_mean=parseFloat(this.sum()/this.pop())),this.stat_mean},
- /** return median value */
- this.median=function(){if(!this._nodata()){if(null==this.stat_median){this.stat_median=0;var e=this.sorted();
- // serie pop is odd
- e.length%2?this.stat_median=parseFloat(e[Math.ceil(e.length/2)-1]):this.stat_median=(parseFloat(e[e.length/2-1])+parseFloat(e[e.length/2]))/2}return this.stat_median}},
- /** return variance value */
- this.variance=function(){if(round="undefined"===typeof round,!this._nodata()){if(null==this.stat_variance){for(var e=0,t=this.mean(),r=0;r<this.pop();r++)e+=Math.pow(this.serie[r]-t,2);this.stat_variance=e/this.pop(),1==round&&(this.stat_variance=Math.round(this.stat_variance*Math.pow(10,this.roundlength))/Math.pow(10,this.roundlength))}return this.stat_variance}},
- /** return standard deviation value */
- this.stddev=function(e){if(e="undefined"===typeof e,!this._nodata())return null==this.stat_stddev&&(this.stat_stddev=Math.sqrt(this.variance()),1==e&&(this.stat_stddev=Math.round(this.stat_stddev*Math.pow(10,this.roundlength))/Math.pow(10,this.roundlength))),this.stat_stddev},
- /** coefficient of variation - measure of dispersion */
- this.cov=function(e){if(e="undefined"===typeof e,!this._nodata())return null==this.stat_cov&&(this.stat_cov=this.stddev()/this.mean(),1==e&&(this.stat_cov=Math.round(this.stat_cov*Math.pow(10,this.roundlength))/Math.pow(10,this.roundlength))),this.stat_cov},
- /** reset all attributes after setting a new serie */
- this.resetStatistics=function(){this.stat_sorted=null,this.stat_mean=null,this.stat_median=null,this.stat_sum=null,this.stat_max=null,this.stat_min=null,this.stat_pop=null,this.stat_variance=null,this.stat_stddev=null,this.stat_cov=null}
- /** data test */,this._nodata=function(){if(0==this.serie.length){if(!this.silent)throw new TypeError("Error. You should first enter a serie!");return this.log("[silent mode] Error. You should first enter a serie!",!0),1}return 0},
- /** check if the serie contains negative value */
- this._hasNegativeValue=function(){for(i=0;i<this.serie.length;i++)if(this.serie[i]<0)return!0;return!1},
- /** check if the serie contains zero value */
- this._hasZeroValue=function(){for(i=0;i<this.serie.length;i++)if(0===parseFloat(this.serie[i]))return!0;return!1},
- /** return sorted values (as array) */
- this.sorted=function(){return null==this.stat_sorted&&(0==this.is_uniqueValues?this.stat_sorted=this.serie.sort((function(e,t){return e-t})):this.stat_sorted=this.serie.sort((function(e,t){var r=e.toString().toLowerCase(),n=t.toString().toLowerCase();return r<n?-1:r>n?1:0}))),this.stat_sorted},
- /** return all info */
- this.info=function(){if(!this._nodata()){var e="";return e+=r("Population")+" : "+this.pop()+" - ["+r("Min")+" : "+this.min()+" | "+r("Max")+" : "+this.max()+"]\n",e+=r("Mean")+" : "+this.mean()+" - "+r("Median")+" : "+this.median()+"\n",e+=r("Variance")+" : "+this.variance()+" - "+r("Standard deviation")+" : "+this.stddev()+" - "+r("Coefficient of variation")+" : "+this.cov()+"\n"}},
- /**
- * Set Manual classification Return an array with bounds : ie array(0,
- * 0.75, 1.5, 2.25, 3);
- * Set ranges and prepare data for displaying legend
- *
- */
- this.setClassManually=function(e){if(!this._nodata()){if(e[0]===this.min()&&e[e.length-1]===this.max())return this.setBounds(e),this.setRanges(),
- // we specify the classification method
- this.method=r("manual classification")+" ("+(e.length-1)+" "+r("classes")+")",this.bounds;if(!this.silent)throw new TypeError(r("Given bounds may not be correct! please check your input.\nMin value : "+this.min()+" / Max value : "+this.max()));this.log("[silent mode] "+t("Given bounds may not be correct! please check your input.\nMin value : "+this.min()+" / Max value : "+this.max()),!0)}},
- /**
- * Equal intervals classification Return an array with bounds : ie array(0,
- * 0.75, 1.5, 2.25, 3);
- */
- this.getClassEqInterval=function(e,t,n){if(!this._nodata()){var a="undefined"===typeof t?this.min():t,o="undefined"===typeof n?this.max():n,s=Array(),u=a,l=(o-a)/e;for(i=0;i<=e;i++)s[i]=u,u+=l;
- //-> Fix last bound to Max of values
- return s[e]=o,this.setBounds(s),this.setRanges(),
- // we specify the classification method
- this.method=r("eq. intervals")+" ("+e+" "+r("classes")+")",this.bounds}},this.getQuantiles=function(e){for(var t=this.sorted(),r=[],n=this.pop()/e,a=1;a<e;a++){var i=Math.round(a*n+.49);r.push(t[i-1])}return r},
- /**
- * Quantile classification Return an array with bounds : ie array(0, 0.75,
- * 1.5, 2.25, 3);
- */
- this.getClassQuantile=function(e){if(!this._nodata()){var t=this.sorted(),n=this.getQuantiles(e);return n.unshift(t[0]),n[t.length-1]!==t[t.length-1]&&n.push(t[t.length-1]),this.setBounds(n),this.setRanges(),
- // we specify the classification method
- this.method=r("quantile")+" ("+e+" "+r("classes")+")",this.bounds}},
- /**
- * Standard Deviation classification
- * Return an array with bounds : ie array(0,
- * 0.75, 1.5, 2.25, 3);
- */
- this.getClassStdDeviation=function(e,t){if(!this._nodata()){this.max(),this.min();var n=Array();
- // number of classes is odd
- if(e%2==1){
- // Euclidean division to get the inferior bound
- var a=Math.floor(e/2),o=a+1;
- // Values < to infBound, except first one
- for(
- // we set the central bounds
- n[a]=this.mean()-this.stddev()/2,n[o]=this.mean()+this.stddev()/2,i=a-1;i>0;i--){var s=n[i+1]-this.stddev();n[i]=s}
- // Values > to supBound, except last one
- for(i=o+1;i<e;i++)s=n[i-1]+this.stddev(),n[i]=s;
- // number of classes is even
- }else{var u=e/2;
- // we get the mean value
- // Values < to the mean, except first one
- for(n[u]=this.mean(),i=u-1;i>0;i--)s=n[i+1]-this.stddev(),n[i]=s;
- // Values > to the mean, except last one
- for(i=u+1;i<e;i++)s=n[i-1]+this.stddev(),n[i]=s}
- // we finally set the first value
- // do we excatly match min value or not ?
- return n[0]="undefined"===typeof t?n[1]-this.stddev():this.min(),
- // we finally set the last value
- // do we excatly match max value or not ?
- n[e]="undefined"===typeof t?n[e-1]+this.stddev():this.max(),this.setBounds(n),this.setRanges(),
- // we specify the classification method
- this.method=r("std deviation")+" ("+e+" "+r("classes")+")",this.bounds}},
- /**
- * Geometric Progression classification
- * http://en.wikipedia.org/wiki/Geometric_progression
- * Return an array with bounds : ie array(0,
- * 0.75, 1.5, 2.25, 3);
- */
- this.getClassGeometricProgression=function(e){if(!this._nodata()){if(!this._hasNegativeValue()&&!this._hasZeroValue()){var t=Array(),n=this.min(),a=this.max(),o=Math.log(a)/Math.LN10,s=Math.log(n)/Math.LN10,u=(o-s)/e;
- // we compute log bounds
- for(i=0;i<e;i++)0==i?t[i]=s:t[i]=t[i-1]+u;
- // we compute antilog
- // and we finally add max value
- return(t=t.map((function(e){return Math.pow(10,e)}))).push(this.max()),this.setBounds(t),this.setRanges(),
- // we specify the classification method
- this.method=r("geometric progression")+" ("+e+" "+r("classes")+")",this.bounds}if(!this.silent)throw new TypeError(r("geometric progression can't be applied with a serie containing negative or zero values."));this.log("[silent mode] "+r("geometric progression can't be applied with a serie containing negative or zero values."),!0)}},
- /**
- * Arithmetic Progression classification
- * http://en.wikipedia.org/wiki/Arithmetic_progression
- * Return an array with bounds : ie array(0,
- * 0.75, 1.5, 2.25, 3);
- */
- this.getClassArithmeticProgression=function(e){if(!this._nodata()){var t=0;
- // we compute the (french) "Raison"
- for(i=1;i<=e;i++)t+=i;var n=Array(),a=this.min(),o=(this.max()-a)/t;for(i=0;i<=e;i++)0==i?n[i]=a:n[i]=n[i-1]+i*o;return this.setBounds(n),this.setRanges(),
- // we specify the classification method
- this.method=r("arithmetic progression")+" ("+e+" "+r("classes")+")",this.bounds}},
- /**
- * Credits : Doug Curl (javascript) and Daniel J Lewis (python implementation)
- * http://www.arcgis.com/home/item.html?id=0b633ff2f40d412995b8be377211c47b
- * http://danieljlewis.org/2010/06/07/jenks-natural-breaks-algorithm-in-python/
- */
- this.getClassJenks=function(e){if(!this._nodata()){dataList=this.sorted();for(
- // now iterate through the datalist:
- // determine mat1 and mat2
- // really not sure how these 2 different arrays are set - the code for
- // each seems the same!
- // but the effect are 2 different arrays: mat1 and mat2
- var t=[],n=0,a=dataList.length+1;n<a;n++){for(var i=[],o=0,s=e+1;o<s;o++)i.push(0);t.push(i)}for(var u=[],l=0,c=dataList.length+1;l<c;l++){for(var d=[],f=0,h=e+1;f<h;f++)d.push(0);u.push(d)}
- // absolutely no idea what this does - best I can tell, it sets the 1st
- // group in the
- // mat1 and mat2 arrays to 1 and 0 respectively
- for(var p=1,y=e+1;p<y;p++){t[0][p]=1,u[0][p]=0;for(var m=1,v=dataList.length+1;m<v;m++)u[m][p]=1/0;var g=0}
- // and this part - I'm a little clueless on - but it works
- // pretty sure it iterates across the entire dataset and compares each
- // value to
- // one another to and adjust the indices until you meet the rules:
- // minimum deviation
- // within a class and maximum separation between classes
- for(var b=2,w=dataList.length+1;b<w;b++){for(var S=0,L=0,E=0,M=1,k=b+1;M<k;M++){var x=b-M+1,T=parseFloat(dataList[x-1]);g=(L+=T*T)-(S+=T)*S/(E+=1);var F=x-1;if(0!=F)for(var P=2,C=e+1;P<C;P++)u[b][P]>=g+u[F][P-1]&&(t[b][P]=x,u[b][P]=g+u[F][P-1])}t[b][1]=1,u[b][1]=g}var N=dataList.length,W=[];
- // fill the kclass (classification) array with zeros:
- for(l=0;l<=e;l++)W.push(0);
- // this is the last number in the array:
- W[e]=parseFloat(dataList[dataList.length-1]),
- // this is the first number - can set to zero, but want to set to lowest
- // to use for legend:
- W[0]=parseFloat(dataList[0]);for(var j=e;j>=2;){var I=parseInt(t[N][j]-2);W[j-1]=dataList[I],N=parseInt(t[N][j]-1),
- // spits out the rank and value of the break values:
- // console.log("id="+id,"rank = " + String(mat1[k][countNum]),"val =
- // " + String(dataList[id]))
- // count down:
- j-=1}
- // check to see if the 0 and 1 in the array are the same - if so, set 0
- // to 0:
- return W[0]==W[1]&&(W[0]=0),this.setBounds(W),this.setRanges(),this.method=r("Jenks")+" ("+e+" "+r("classes")+")",this.bounds;//array of breaks
- }}
- /**
- * Quantile classification Return an array with bounds : ie array(0, 0.75,
- * 1.5, 2.25, 3);
- */,this.getClassUniqueValues=function(){if(!this._nodata()){this.is_uniqueValues=!0;var e=this.sorted(),t=Array();// display in alphabetical order
- for(i=0;i<this.pop();i++)-1===t.indexOf(e[i])&&t.push(e[i]);return this.bounds=t,
- // we specify the classification method
- this.method=r("unique values"),t}},
- /**
- * Return the class of a given value.
- * For example value : 6
- * and bounds array = (0, 4, 8, 12);
- * Return 2
- */
- this.getClass=function(e){for(i=0;i<this.bounds.length;i++)if(1==this.is_uniqueValues){if(e==this.bounds[i])return i}else
- // parseFloat() is necessary
- if(parseFloat(e)<=this.bounds[i+1])return i;return r("Unable to get value's class.")},
- /**
- * Return the ranges array : array('0-0.75', '0.75-1.5', '1.5-2.25',
- * '2.25-3');
- */
- this.getRanges=function(){return this.ranges},
- /**
- * Returns the number/index of this.ranges that value falls into
- */
- this.getRangeNum=function(e){var t,r;for(r=0;r<this.ranges.length;r++)if(t=this.ranges[r].split(/ - /),e<=parseFloat(t[1]))return r}
- /*
- * Compute inner ranges based on serie.
- * Produce discontinous ranges used for legend - return an array similar to :
- * array('0.00-0.74', '0.98-1.52', '1.78-2.25', '2.99-3.14');
- * If inner ranges already computed, return array values.
- */,this.getInnerRanges=function(){
- // if already computed, we return the result
- if(null!=this.inner_ranges)return this.inner_ranges;var e=new Array,t=this.sorted(),r=1;// bounds array counter
- for(i=0;i<t.length;i++){if(0==i)var n=t[i];// we init first range value
- // we reach the last range, we finally complete manually
- // and return the array
- if(parseFloat(t[i])>parseFloat(this.bounds[r])&&(e[r-1]=""+n+this.separator+t[i-1],n=t[i],r++),r==this.bounds.length-1)
- // we set the last value
- return e[r-1]=""+n+this.separator+t[t.length-1],this.inner_ranges=e,this.inner_ranges}},this.getSortedlist=function(){return this.sorted().join(", ")},
- /**
- * Return an html legend
- * colors : specify an array of color (hexadecimal values)
- * legend : specify a text input for the legend. By default, just displays 'legend'
- * counter : if not null, display counter value
- * callback : if not null, callback function applied on legend boundaries
- * mode : null, 'default', 'distinct', 'discontinuous' :
- * - if mode is null, will display legend as 'default mode'
- * - 'default' : displays ranges like in ranges array (continuous values), sample : 29.26 - 378.80 / 378.80 - 2762.25 / 2762.25 - 6884.84
- * - 'distinct' : Add + 1 according to decimal precision to distinguish classes (discrete values), sample : 29.26 - 378.80 / 378.81 - 2762.25 / 2762.26 - 6884.84
- * - 'discontinuous' : indicates the range of data actually falling in each class , sample : 29.26 - 225.43 / 852.12 - 2762.20 / 3001.25 - 6884.84 / not implemented yet
- * order : null, 'ASC', 'DESC'
- */
- this.getHtmlLegend=function(t,n,a,o,s,u){var l="",c=new Array;if(this.doCount(),// we do count, even if not displayed
- ccolors=null!=t?t:this.colors,lg=null!=n?n:"Legend",getcounter=null!=a,fn=null!=o?o:function(e){return e},null==s&&(s="default"),"discontinuous"!=s||(this.getInnerRanges(),-1===this.counter.indexOf(0))){if("DESC"!==u&&(u="ASC"),!(ccolors.length<this.ranges.length)){if(0==this.is_uniqueValues)for(i=0;i<this.ranges.length;i++){!0===getcounter&&(l=' <span class="geostats-legend-counter">('+this.counter[i]+")</span>");
- //console.log("Ranges : " + this.ranges[i]);
- // default mode
- var d=this.ranges[i].split(this.separator),f=parseFloat(d[0]).toFixed(this.precision),h=parseFloat(d[1]).toFixed(this.precision);
- // if mode == 'distinct' and we are not working on the first value
- "distinct"==s&&0!=i&&(e(f)?(f=parseInt(f)+1,
- // format to float if necessary
- "manual"==this.precisionflag&&0!=this.precision&&(f=parseFloat(f).toFixed(this.precision))):(f=parseFloat(f)+1/Math.pow(10,this.precision),
- // strangely the formula above return sometimes long decimal values,
- // the following instruction fix it
- f=parseFloat(f).toFixed(this.precision))),
- // if mode == 'discontinuous'
- "discontinuous"==s&&(d=this.inner_ranges[i].split(this.separator),f=parseFloat(d[0]).toFixed(this.precision),h=parseFloat(d[1]).toFixed(this.precision));
- // we apply callback function
- var p=fn(f)+this.legendSeparator+fn(h),y='<div><div class="geostats-legend-block" style="background-color:'+ccolors[i]+'"></div> '+p+l+"</div>";c.push(y)}else
- // only if classification is done on unique values
- for(i=0;i<this.bounds.length;i++)!0===getcounter&&(l=' <span class="geostats-legend-counter">('+this.counter[i]+")</span>"),p=fn(this.bounds[i]),y='<div><div class="geostats-legend-block" style="background-color:'+ccolors[i]+'"></div> '+p+l+"</div>",c.push(y);
- // do we reverse the return legend ?
- "DESC"===u&&c.reverse();
- // finally we create HTML and return it
- var m='<div class="geostats-legend"><div class="geostats-legend-title">'+r(lg)+"</div>";for(i=0;i<c.length;i++)m+=c[i];return m+="</div>"}if(!this.silent)throw new TypeError(r("The number of colors should fit the number of ranges. Exit!"));this.log("[silent mode] "+r("The number of colors should fit the number of ranges. Exit!"),!0)}else{if(!this.silent)throw new TypeError(r("Geostats cannot apply 'discontinuous' mode to the getHtmlLegend() method because some classes are not populated.\nPlease switch to 'default' or 'distinct' modes. Exit!"));this.log("[silent mode] "+r("Geostats cannot apply 'discontinuous' mode to the getHtmlLegend() method because some classes are not populated.\nPlease switch to 'default' or 'distinct' modes. Exit!"),!0)}},
- // object constructor
- // At the end of script. If not setPrecision() method is not known
- // we create an object identifier for debugging
- this.objectID=(new Date).getUTCMilliseconds(),this.log("Creating new geostats object"),"undefined"!==typeof a&&a.length>0?(this.serie=a,this.setPrecision(),this.log("Setting serie ("+a.length+") : "+a.join())):this.serie=Array(),
- // creating aliases on classification function for backward compatibility
- this.getJenks=this.getClassJenks,this.getGeometricProgression=this.getClassGeometricProgression,this.getEqInterval=this.getClassEqInterval,this.getQuantile=this.getClassQuantile,this.getStdDeviation=this.getClassStdDeviation,this.getUniqueValues=this.getClassUniqueValues,this.getArithmeticProgression=this.getClassArithmeticProgression};return window.geostats=a,a}();
- /***/},
- /***/8553:
- /***/function(){
- /*
- * JsonSQL
- * By: Trent Richardson [http://trentrichardson.com]
- * Version 0.1
- * Last Modified: 1/1/2008
- *
- * Copyright 2008 Trent Richardson
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- window.jsonsql={query:function(e,t){var r=e.match(/^(select)\s+([a-z0-9_\,\.\s\*]+)\s+from\s+([a-z0-9_\.]+)(?: where\s+\((.+)\))?\s*(?:order\sby\s+([a-z0-9_\,]+))?\s*(asc|desc|ascnum|descnum)?\s*(?:limit\s+([0-9_\,]+))?/i),n={fields:r[2].replace(" ","").split(","),from:r[3].replace(" ",""),where:void 0==r[4]?"true":r[4],orderby:void 0==r[5]?[]:r[5].replace(" ","").split(","),order:void 0==r[6]?"asc":r[6],limit:void 0==r[7]?[]:r[7].replace(" ","").split(",")};return this.parse(t,n)},parse:function(e,t){var r={fields:["*"],from:"json",where:"",orderby:[],order:"asc",limit:[]};for(i in t)r[i]=t[i];var n=[];return n=this.returnFilter(e,r),n=this.returnOrderBy(n,r.orderby,r.order),n=this.returnLimit(n,r.limit)},returnFilter:function(json,jsonsql_o){var jsonsql_scope=eval(jsonsql_o.from),jsonsql_result=[],jsonsql_rc=0;for(var jsonsql_i in""==jsonsql_o.where&&(jsonsql_o.where="true"),jsonsql_scope)with(jsonsql_scope[jsonsql_i])eval(jsonsql_o.where)&&(jsonsql_result[jsonsql_rc++]=this.returnFields(jsonsql_scope[jsonsql_i],jsonsql_o.fields));return jsonsql_result},returnFields:function(e,t){if(0==t.length&&(t=["*"]),"*"==t[0])return e;var r={};for(var n in t)r[t[n]]=e[t[n]];return r},returnOrderBy:function(result,orderby,order){return 0==orderby.length||result.sort((function(a,b){switch(order.toLowerCase()){case"desc":return eval("a."+orderby[0]+" < b."+orderby[0])?1:-1;case"asc":return eval("a."+orderby[0]+" > b."+orderby[0])?1:-1;case"descnum":return eval("a."+orderby[0]+" - b."+orderby[0]);case"ascnum":return eval("b."+orderby[0]+" - a."+orderby[0])}})),result},returnLimit:function(e,t){switch(t.length){case 0:return e;case 1:return e.splice(0,t[0]);case 2:return e.splice(t[0]-1,t[1])}}};
- /***/},
- /***/2769:
- /***/function(e){"use strict";e.exports="data:image/png;base64,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"},
- /***/2721:
- /***/function(e){"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__2721__},
- /***/5973:
- /***/function(e){"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__5973__},
- /***/550:
- /***/function(e){"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__550__},
- /***/2371:
- /***/function(e){"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__2371__},
- /***/3094:
- /***/function(e){"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__3094__},
- /***/3899:
- /***/function(e){"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__3899__},
- /***/2395:
- /***/function(e){"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__2395__},
- /***/2069:
- /***/function(e){"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__2069__},
- /***/375:
- /***/function(e){"use strict";e.exports=__WEBPACK_EXTERNAL_MODULE__375__},
- /***/2961:
- /***/function(){
- /* (ignored) */
- /***/},
- /***/9862:
- /***/function(){
- /* (ignored) */
- /***/},
- /***/2860:
- /***/function(){
- /* (ignored) */
- /***/},
- /***/964:
- /***/function(){
- /* (ignored) */
- /***/},
- /***/2783:
- /***/function(){
- /* (ignored) */
- /***/},
- /***/4836:
- /***/function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},
- /***/5263:
- /***/function(e,t,r){var n=r(8698).default;function a(e){if("function"!==typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}e.exports=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!==typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var i={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var u=o?Object.getOwnPropertyDescriptor(e,s):null;u&&(u.get||u.set)?Object.defineProperty(i,s,u):i[s]=e[s]}return i.default=e,r&&r.set(e,i),i},e.exports.__esModule=!0,e.exports.default=e.exports},
- /***/8698:
- /***/function(e){function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},
- /***/907:
- /***/function(e,t,r){"use strict";
- /* harmony export */function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}
- /***/r.d(t,{
- /* harmony export */Z:function(){/* binding */return n}
- /* harmony export */})},
- /***/7326:
- /***/function(e,t,r){"use strict";function n(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}
- /***/r.r(t),
- /* harmony export */r.d(t,{
- /* harmony export */default:function(){/* binding */return n}
- /* harmony export */})},
- /***/5671:
- /***/function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}
- /***/r.r(t),
- /* harmony export */r.d(t,{
- /* harmony export */default:function(){/* binding */return n}
- /* harmony export */})},
- /***/3144:
- /***/function(e,t,r){"use strict";r.r(t),
- /* harmony export */r.d(t,{
- /* harmony export */default:function(){/* binding */return i}
- /* harmony export */});
- /* harmony import */var n=r(9142);function a(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,(0,n/* ["default"] */.Z)(a.key),a)}}function i(e,t,r){return t&&a(e.prototype,t),r&&a(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}
- /***/},
- /***/8557:
- /***/function(e,t,r){"use strict";
- // ESM COMPAT FLAG
- // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
- function n(e){return n=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},n(e)}r.r(t),
- // EXPORTS
- r.d(t,{default:function(){/* binding */return o}});
- // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js
- var a=r(1002),i=r(7326);
- // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
- // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/createSuper.js
- function o(e){var t=// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js
- function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,o=n(e);if(t){var s=n(this).constructor;r=Reflect.construct(o,arguments,s)}else r=o.apply(this,arguments);// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
- return function(e,t){if(t&&("object"===(0,a/* default */.Z)(t)||"function"===typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return(0,i.default)(e)}(this,r)}}
- /***/},
- /***/9340:
- /***/function(e,t,r){"use strict";
- // ESM COMPAT FLAG
- // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
- function n(e,t){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},n(e,t)}// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js
- function a(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&n(e,t)}
- /***/r.r(t),
- // EXPORTS
- r.d(t,{default:function(){/* binding */return a}})},
- /***/8683:
- /***/function(e,t,r){"use strict";
- // ESM COMPAT FLAG
- r.r(t),
- // EXPORTS
- r.d(t,{default:function(){/* binding */return o}});
- // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js + 1 modules
- var n=r(9142);// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js
- function a(e,t,r){return(t=(0,n/* default */.Z)(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js
- function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}
- /***/},
- /***/4925:
- /***/function(e,t,r){"use strict";
- // ESM COMPAT FLAG
- // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
- function n(e,t){if(null==e)return{};var r,n,a=// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
- function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}
- /***/r.r(t),
- // EXPORTS
- r.d(t,{default:function(){/* binding */return n}})},
- /***/885:
- /***/function(e,t,r){"use strict";
- // ESM COMPAT FLAG
- r.r(t),
- // EXPORTS
- r.d(t,{default:function(){/* binding */return a}});
- // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
- var n=r(181);// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js
- function a(e,t){// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
- return function(e){if(Array.isArray(e))return e}(e)||// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
- function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,o,s=[],u=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);u=!0);}catch(c){l=!0,a=c}finally{try{if(!u&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw a}}return s}}(e,t)||(0,n/* default */.Z)(e,t)||// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
- function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}
- /***/},
- /***/2982:
- /***/function(e,t,r){"use strict";
- // ESM COMPAT FLAG
- r.r(t),
- // EXPORTS
- r.d(t,{default:function(){/* binding */return i}});
- // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
- var n=r(907);
- // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
- var a=r(181);// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
- function i(e){// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
- return function(e){if(Array.isArray(e))return(0,n/* default */.Z)(e)}(e)||// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js
- function(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||(0,a/* default */.Z)(e)||// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
- function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}
- /***/},
- /***/9142:
- /***/function(e,t,r){"use strict";
- // EXPORTS
- r.d(t,{Z:function(){/* binding */return a}});
- // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js
- var n=r(1002);// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
- function a(e){var t=// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPrimitive.js
- function(e,t){if("object"!==(0,n/* default */.Z)(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var a=r.call(e,t||"default");if("object"!==(0,n/* default */.Z)(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===(0,n/* default */.Z)(t)?t:String(t)}
- /***/},
- /***/1002:
- /***/function(e,t,r){"use strict";
- /* harmony export */function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)
- /***/}r.d(t,{
- /* harmony export */Z:function(){/* binding */return n}
- /* harmony export */})},
- /***/181:
- /***/function(e,t,r){"use strict";
- /* harmony export */r.d(t,{
- /* harmony export */Z:function(){/* binding */return a}
- /* harmony export */});
- /* harmony import */var n=r(907);function a(e,t){if(e){if("string"===typeof e)return(0,n/* ["default"] */.Z)(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?(0,n/* ["default"] */.Z)(e,t):void 0}}
- /***/},
- /***/5618:
- /***/function(e){"use strict";e.exports=JSON.parse('[{"title":"\u7ecf\u5178\u6df1\u8272","label":"dark","textColor":"#fff","background":"rgba(0,0,0,0.6)","colorGroup":["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53"]},{"title":"\u7ecf\u5178\u6d45\u8272","label":"light","textColor":"#333","background":"rgba(255, 255, 255,0.6)","colorGroup":["#3fb1e3","#6be6c1","#626c91","#a0a7e6","#c4ebad"]},{"title":"\u7eff\u8272\u6e10\u53d8","label":"green-g","textColor":"#fff","background":"rgba(0,0,0,0.6)","colorGroup":["#064049","#165A65","#1F717F","#3097AB","#9AEAF4"]},{"title":"\u84dd\u8272\u6e10\u53d8","label":"blue-g","textColor":"#fff","background":"rgba(0,0,0,0.6)","colorGroup":["#243BCC","#1C55FF","#0C75FF","#338FFF","#00CDF1"]},{"title":"\u6a59\u7ea2\u6e10\u53d8","label":"red-g","textColor":"#fff","background":"rgba(0,0,0,0.6)","colorGroup":["#770000","#882241","#BE3144","#F05940","#FF8417"]},{"title":"\u7d2b\u8272\u6e10\u53d8","label":"purple-g","textColor":"#fff","background":"rgba(0,0,0,0.6)","colorGroup":["#2F2AA4","#5432D3","#8B3B86","#9740B1","#7B6CF5"]},{"title":"\u6df1\u84dd\u9ed1\u8272","label":"bluedark-dark","textColor":"#fff","background":"rgba(0,0,0,0.6)","colorGroup":["#15D1F2","#499BFF","#2C61FF","#243BCC","#67A9FF"]},{"title":"\u58a8\u7eff\u9ed1\u8272","label":"green-dark","textColor":"#fff","background":"rgba(0,0,0,0.6)","colorGroup":["#2D808D","#53A8B6","#7AC2D0","#BCE4E9","#F1FDFF"]},{"title":"\u6d45\u84dd\u9ed1\u8272","label":"blue-dark","textColor":"#fff","background":"rgba(0,0,0,0.6)","colorGroup":["#00E9FF","#BBE7FF","#6AE5C1","#46ABFF","#363EFF"]},{"title":"\u6d45\u7070\u9ed1\u8272","label":"grey-dark","textColor":"#fff","background":"rgba(0,0,0,0.6)","colorGroup":["#52606D","#8894A0","#BACBDB","#D3DDE8","#F2F5F8"]},{"title":"\u6df1\u7d2b\u9ed1\u8272","label":"purple-dark","textColor":"#fff","background":"rgba(0,0,0,0.6)","colorGroup":["#7B6CF6","#5432D3","#241F92","#8B3B86","#E6A5FF"]},{"title":"\u6df1\u84dd\u767d\u8272","label":"blue-light","textColor":"#000","background":"rgba(255,255,255,0.6)","colorGroup":["#243BCC","#2C61FF","#499BFF","#15D1F2","#67A9FF"]},{"title":"\u6df1\u7ea2\u767d\u8272","label":"red-light","textColor":"#000","background":"rgba(255,255,255,0.6)","colorGroup":["#F05940","#BE3144","#882241","#770000","#FF8418"]}]')},
- /***/2158:
- /***/function(e){"use strict";e.exports=JSON.parse('[{"name":"\u514b\u62c9\u739b\u4f9d\u5e02","coord":[85.01486759299489,45.406422237230046]},{"name":"\u660c\u5409\u56de\u65cf\u81ea\u6cbb\u5dde","coord":[88.7154624754753,44.26991024636568]},{"name":"\u77f3\u6cb3\u5b50\u5e02","coord":[86.0208600035924,44.239045558096805]},{"name":"\u970d\u6797\u90ed\u52d2\u5e02","coord":[114.73479243733115,44.16058374713977]},{"name":"\u672c\u6eaa\u5e02","coord":[124.64357865201586,41.177197783134275]},{"name":"\u5609\u5cea\u5173\u5e02","coord":[98.16891560537093,39.76279786284264]},{"name":"\u83b1\u829c\u5e02","coord":[117.65723565456207,36.27916499211527]},{"name":"\u795e\u519c\u67b6\u6797\u533a","coord":[110.48296222218153,31.581260143666697]},{"name":"\u5929\u95e8\u5e02","coord":[113.00615321481195,30.64105781887143]},{"name":"\u9102\u5dde\u5e02","coord":[114.94764081970385,30.325634953844585]},{"name":"\u6f5c\u6c5f\u5e02","coord":[112.70703817700621,30.349210666019893]},{"name":"\u4ed9\u6843\u5e02","coord":[113.34688900729822,30.315951161935402]},{"name":"\u840d\u4e61\u5e02","coord":[113.88072263074415,27.47193090553213]},{"name":"\u53f0\u6e7e\u7701","coord":[120.14338943402045,23.596002465926095]},{"name":"\u4e1c\u839e\u5e02","coord":[113.89443658529342,22.897826158636448]},{"name":"\u4e2d\u5c71\u5e02","coord":[113.37118387764659,22.501478858616522]},{"name":"\u73e0\u6d77\u5e02","coord":[113.21799258934986,22.23782602992192]},{"name":"\u5317\u6d77\u5e02","coord":[109.18248083043899,21.695773689750148]},{"name":"\u9999\u6e2f","coord":[114.20689279508653,22.36016760139811]},{"name":"\u821f\u5c71\u5e02","coord":[122.22514712841459,30.338633120695956]},{"name":"\u514b\u5b5c\u52d2\u82cf\u67ef\u5c14\u514b\u5b5c","coord":[74.62910472637343,39.59886016069875]},{"name":"\u5580\u4ec0\u5730\u533a","coord":[77.19899922143753,37.85462871211595]},{"name":"\u963f\u514b\u82cf\u5730\u533a","coord":[81.43930290016381,41.067304799230456]},{"name":"\u548c\u7530\u5730\u533a","coord":[80.69780509160952,36.95287032287055]},{"name":"\u963f\u91cc\u5730\u533a","coord":[82.536487505389,32.69566569631762]},{"name":"\u65e5\u5580\u5219\u5730\u533a","coord":[86.5996831353606,29.54861754814263]},{"name":"\u90a3\u66f2\u5730\u533a","coord":[88.32523292667608,33.20600450932715]},{"name":"\u7389\u6811\u85cf\u65cf\u81ea\u6cbb\u5dde","coord":[95.2107128446203,33.90320387919257]},{"name":"\u8fea\u5e86\u85cf\u65cf\u81ea\u6cbb\u5dde","coord":[99.42465312188943,28.052797714348895]},{"name":"\u6012\u6c5f\u5088\u5088\u65cf\u81ea\u6cbb\u5dde","coord":[98.85737910439825,26.98345757528851]},{"name":"\u5927\u7406\u767d\u65cf\u81ea\u6cbb\u5dde","coord":[99.93934374816013,25.684737357453045]},{"name":"\u5fb7\u5b8f\u50a3\u65cf\u666f\u9887\u65cf\u81ea","coord":[98.13830877778075,24.593421919561205]},{"name":"\u4fdd\u5c71\u5e02","coord":[99.19031013453166,24.979380341662]},{"name":"\u4e34\u6ca7\u5e02","coord":[99.62483778975081,24.058807858948214]},{"name":"\u666e\u6d31\u5e02","coord":[100.94440267992684,23.44121660743221]},{"name":"\u897f\u53cc\u7248\u7eb3\u50a3\u65cf\u81ea\u6cbb","coord":[100.86105801845994,21.882475641324206]},{"name":"\u62c9\u8428\u5e02","coord":[91.3684790613129,30.14176592960237]},{"name":"\u5c71\u5357\u5730\u533a","coord":[92.11665242621062,28.33000201578789]},{"name":"\u6797\u829d\u5730\u533a","coord":[94.9307847458166,29.125110156601963]},{"name":"\u660c\u90fd\u5730\u533a","coord":[97.33912235873476,30.48520825551814]},{"name":"\u4e3d\u6c5f\u5e02","coord":[100.65713436205135,26.96190318191959]},{"name":"\u6500\u679d\u82b1\u5e02","coord":[101.73355913301131,26.714486678752795]},{"name":"\u51c9\u5c71\u5f5d\u65cf\u81ea\u6cbb\u5dde","coord":[102.08678551422615,27.683020519860396]},{"name":"\u695a\u96c4\u5f5d\u65cf\u81ea\u6cbb\u5dde","coord":[101.68264761198458,25.369603845264024]},{"name":"\u7ea2\u6cb3\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea","coord":[102.95101719613119,23.624860095239875]},{"name":"\u6587\u5c71\u58ee\u65cf\u82d7\u65cf\u81ea\u6cbb","coord":[104.8708359910614,23.579587266862504]},{"name":"\u767e\u8272\u5e02","coord":[106.69546907589859,23.98220841166522]},{"name":"\u5d07\u5de6\u5e02","coord":[107.3277087317123,22.49769755349952]},{"name":"\u9632\u57ce\u6e2f\u5e02","coord":[107.88939931155171,21.94550204069006]},{"name":"\u5357\u5b81\u5e02","coord":[108.67078983716917,23.12207641861882]},{"name":"\u94a6\u5dde\u5e02","coord":[108.8532307305186,22.157690108421384]},{"name":"\u7389\u6797\u5e02","coord":[110.26918466489103,22.391823643610415]},{"name":"\u6e5b\u6c5f\u5e02","coord":[109.93033457863683,21.086751055633457]},{"name":"\u8302\u540d\u5e02","coord":[110.80336192333934,22.069184739040775]},{"name":"\u9633\u6c5f\u5e02","coord":[111.70471342186183,22.108751366417575]},{"name":"\u6c5f\u95e8\u5e02","coord":[112.53715618649149,22.297368082806777]},{"name":"\u5e7f\u5dde\u5e02","coord":[113.4949302208309,23.28359314707863]},{"name":"\u6e05\u8fdc\u5e02","coord":[113.10957368131268,24.334444053233856]},{"name":"\u8087\u5e86\u5e02","coord":[112.11117530204233,23.60241158796112]},{"name":"\u68a7\u5dde\u5e02","coord":[111.01709510772797,23.518132876753846]},{"name":"\u8d3a\u5dde\u5e02","coord":[111.50423061842756,24.4095096817199]},{"name":"\u6842\u6797\u5e02","coord":[110.44046163393094,25.353966673735407]},{"name":"\u67f3\u5dde\u5e02","coord":[109.34854449214147,24.972408051485047]},{"name":"\u6cb3\u6c60\u5e02","coord":[107.81191841865586,24.649291651298164]},{"name":"\u9ed4\u4e1c\u5357\u82d7\u65cf\u4f97\u65cf\u81ea","coord":[108.39952601614591,26.429286420465576]},{"name":"\u8d35\u9633\u5e02","coord":[106.59784062851153,26.797907456479816]},{"name":"\u5b89\u987a\u5e02","coord":[105.76161265300635,25.988644902171018]},{"name":"\u9ed4\u897f\u5357\u5e03\u4f9d\u65cf\u82d7\u65cf","coord":[105.5954078788574,25.404850939549405]},{"name":"\u66f2\u9756\u5e02","coord":[103.9164335632742,25.697243690315265]},{"name":"\u516d\u76d8\u6c34\u5e02","coord":[104.77723228072432,26.15402255629164]},{"name":"\u6bd5\u8282\u5730\u533a","coord":[105.03867422931839,27.077913968069666]},{"name":"\u662d\u901a\u5e02","coord":[104.29730513046874,27.62418247971078]},{"name":"\u5b9c\u5bbe\u5e02","coord":[104.76748901448207,28.553501804266475]},{"name":"\u4e50\u5c71\u5e02","coord":[103.56027669102787,29.160754519210577]},{"name":"\u81ea\u8d21\u5e02","coord":[104.63272827056402,29.273152614922402]},{"name":"\u5185\u6c5f\u5e02","coord":[104.82644562304716,29.61272653799929]},{"name":"\u9075\u4e49\u5e02","coord":[106.82413636302059,28.191847588570702]},{"name":"\u8fbe\u5dde\u5e02","coord":[107.59704170009518,31.32138258839703]},{"name":"\u9042\u5b81\u5e02","coord":[105.48979445433736,30.677687821242678]},{"name":"\u5e7f\u5b89\u5e02","coord":[106.56708164098042,30.43500706741521]},{"name":"\u6cf8\u5dde\u5e02","coord":[105.42591761727707,28.50277238478137]},{"name":"\u8d44\u9633\u5e02","coord":[104.97995126874034,30.154251886139654]},{"name":"\u96c5\u5b89\u5e02","coord":[102.69931299964517,29.892630706195035]},{"name":"\u7709\u5c71\u5e02","coord":[104.07052881858888,29.894202166560405]},{"name":"\u7518\u5b5c\u85cf\u65cf\u81ea\u6cbb\u5dde","coord":[100.50721042614238,30.975216556269658]},{"name":"\u679c\u6d1b\u85cf\u65cf\u81ea\u6cbb\u5dde","coord":[99.30775565051923,34.03539865224808]},{"name":"\u6d77\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","coord":[100.39969108016373,35.90048272566899]},{"name":"\u9ec4\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","coord":[101.5360706381689,35.10286360841902]},{"name":"\u8d63\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","coord":[102.97083885806067,34.326752803339026]},{"name":"\u9647\u5357\u5e02","coord":[105.24780098912132,33.57031117443431]},{"name":"\u5929\u6c34\u5e02","coord":[105.53503634660417,34.62320421368087]},{"name":"\u5b9a\u897f\u5e02","coord":[104.58787768541339,35.08900966621695]},{"name":"\u4e34\u590f\u56de\u65cf\u81ea\u6cbb\u5dde","coord":[103.2612870434902,35.591577124455235]},{"name":"\u897f\u5b81\u5e02","coord":[101.57680657999033,36.84800271717157]},{"name":"\u6d77\u4e1c\u5730\u533a","coord":[102.30909850729282,36.287400615025646]},{"name":"\u6d77\u5317\u85cf\u65cf\u81ea\u6cbb\u5dde","coord":[100.27122484450717,37.892557516083826]},{"name":"\u91d1\u660c\u5e02","coord":[102.02244049169511,38.497330414886164]},{"name":"\u9152\u6cc9\u5e02","coord":[95.94486678270127,40.56891536586272]},{"name":"\u6d77\u897f\u8499\u53e4\u65cf\u85cf\u65cf\u81ea","coord":[94.67143298050689,36.022725148503724]},{"name":"\u5df4\u97f3\u90ed\u695e\u8499\u53e4\u81ea\u6cbb","coord":[88.18116214759745,39.556478810319916]},{"name":"\u54c8\u5bc6\u5730\u533a","coord":[93.84302392518026,42.95015211178875]},{"name":"\u53f6\u9c81\u756a\u5730\u533a","coord":[89.82035217277885,42.399368632283505]},{"name":"\u4e4c\u9c81\u6728\u9f50\u5e02","coord":[88.00048109561487,43.549986370786]},{"name":"\u963f\u52d2\u6cf0\u5730\u533a","coord":[88.11213933257655,47.05593413019629]},{"name":"\u535a\u5c14\u5854\u62c9\u8499\u53e4\u81ea\u6cbb","coord":[82.26402238163408,44.671135542630864]},{"name":"\u4f0a\u7281\u54c8\u8428\u514b\u81ea\u6cbb\u5dde","coord":[82.80778717477179,43.53783381365267]},{"name":"\u963f\u62c9\u5584\u76df","coord":[103.29923966842289,40.10955801781495]},{"name":"\u6b66\u5a01\u5e02","coord":[102.73362058791429,37.94211141321436]},{"name":"\u5170\u5dde\u5e02","coord":[103.73793563506032,36.27379827886003]},{"name":"\u4e2d\u536b\u5e02","coord":[105.6943786030716,37.20654236148948]},{"name":"\u94f6\u5ddd\u5e02","coord":[106.20022174140034,38.52103167597483]},{"name":"\u77f3\u5634\u5c71\u5e02","coord":[106.41544011793628,38.84054137571417]},{"name":"\u4e4c\u6d77\u5e02","coord":[106.8984175998405,39.54616572239788]},{"name":"\u9102\u5c14\u591a\u65af\u5e02","coord":[108.43285571424619,39.24036799350715]},{"name":"\u5df4\u5f66\u6dd6\u5c14\u5e02","coord":[107.45840392808307,41.30159860424196]},{"name":"\u5305\u5934\u5e02","coord":[110.46472193224272,41.48017783644221]},{"name":"\u547c\u548c\u6d69\u7279\u5e02","coord":[111.48365173603975,40.498363056149884]},{"name":"\u4e4c\u5170\u5bdf\u5e03\u5e02","coord":[112.61568977597707,41.75789561273154]},{"name":"\u5927\u540c\u5e02","coord":[113.7107192749083,39.898956799744184]},{"name":"\u6714\u5dde\u5e02","coord":[112.65428748167508,39.681772914701924]},{"name":"\u5ffb\u5dde\u5e02","coord":[112.36127575589583,38.88990233614568]},{"name":"\u6986\u6797\u5e02","coord":[109.68473112169593,38.19921027134876]},{"name":"\u5ef6\u5b89\u5e02","coord":[109.52425222161318,36.406522726136814]},{"name":"\u5e86\u9633\u5e02","coord":[107.73052193155061,36.183821532624464]},{"name":"\u56fa\u539f\u5e02","coord":[106.20191575442442,36.11634909496382]},{"name":"\u767d\u94f6\u5e02","coord":[104.68634478137065,36.51582865625868]},{"name":"\u5b9d\u9e21\u5e02","coord":[107.33534779230747,34.3387216485855]},{"name":"\u6c49\u4e2d\u5e02","coord":[107.03534754266246,33.00142998064871]},{"name":"\u5e7f\u5143\u5e02","coord":[105.92928137563939,32.21872447205537]},{"name":"\u5df4\u4e2d\u5e02","coord":[107.03422410306194,31.99874720836291]},{"name":"\u5357\u5145\u5e02","coord":[106.32964805032347,31.156657700184095]},{"name":"\u7ef5\u9633\u5e02","coord":[104.58949560201106,31.88628780630976]},{"name":"\u5fb7\u9633\u5e02","coord":[104.41542984932845,31.110558133718676]},{"name":"\u6210\u90fd\u5e02","coord":[103.8852290010473,30.777258040348634]},{"name":"\u963f\u575d\u85cf\u65cf\u7f8c\u65cf\u81ea\u6cbb","coord":[102.26209319552814,32.45725845387284]},{"name":"\u5b89\u5eb7\u5e02","coord":[109.14236501848015,32.77467694678074]},{"name":"\u5341\u5830\u5e02","coord":[110.39934083416314,32.376209039347906]},{"name":"\u8944\u9633\u5e02","coord":[111.97539147094662,31.93399822417465]},{"name":"\u5b9c\u660c\u5e02","coord":[111.22204852395754,30.772457669035354]},{"name":"\u6069\u65bd\u5e02","coord":[109.42158366502872,30.260366574390105]},{"name":"\u5f20\u5bb6\u754c\u5e02","coord":[110.59760006538717,29.330107409240718]},{"name":"\u5409\u9996\u5e02","coord":[109.72176899848378,28.681903937242495]},{"name":"\u94dc\u4ec1\u5730\u533a","coord":[108.54247523485463,28.11736237519646]},{"name":"\u91cd\u5e86\u5e02","coord":[107.86007108564992,30.186253395053196]},{"name":"\u6000\u5316\u5e02","coord":[109.94325166787243,27.43919084801186]},{"name":"\u76ca\u9633\u5e02","coord":[112.43060358108062,28.75127294553697]},{"name":"\u5a04\u5e95\u5e02","coord":[111.41891416951897,27.696312460064604]},{"name":"\u5e38\u5fb7\u5e02","coord":[111.72571610131646,29.27189463838195]},{"name":"\u8346\u5dde\u5e02","coord":[112.65896596965268,30.05161542755362]},{"name":"\u8346\u95e8\u5e02","coord":[112.6586855902184,31.01267124474617]},{"name":"\u5cb3\u9633\u5e02","coord":[113.2595036144316,29.106247116930163]},{"name":"\u957f\u6c99\u5e02","coord":[113.15415586456598,28.222934680488425]},{"name":"\u6e58\u6f6d\u5e02","coord":[112.51092596317824,27.69881544105668]},{"name":"\u682a\u5dde\u5e02","coord":[113.49665538546823,27.03993794610501]},{"name":"\u8861\u9633\u5e02","coord":[112.48849636578527,26.783613569970782]},{"name":"\u90b5\u9633\u5e02","coord":[110.6723832117475,26.81652287086792]},{"name":"\u6c38\u5dde\u5e02","coord":[111.8565364154186,25.768488267811968]},{"name":"\u97f6\u5173\u5e02","coord":[113.53420325850979,24.69848878771937]},{"name":"\u60e0\u5dde\u5e02","coord":[114.32029589634925,23.25504544231892]},{"name":"\u4f5b\u5c71\u5e02","coord":[112.95925897403649,23.10116677189257]},{"name":"\u4e91\u6d6e\u5e02","coord":[111.78042514904234,22.840400494105687]},{"name":"\u6df1\u5733\u5e02","coord":[114.13138648919008,22.649563063468342]},{"name":"\u6c55\u5c3e\u5e02","coord":[115.57412892884373,23.06989642104901]},{"name":"\u6cb3\u6e90\u5e02","coord":[114.89746229844398,23.97971937124767]},{"name":"\u63ed\u9633\u5e02","coord":[116.04290004239446,23.304802704715357]},{"name":"\u6c55\u5934\u5e02","coord":[116.7008461897183,23.35898625947344]},{"name":"\u6f6e\u5dde\u5e02","coord":[116.75405548481658,23.854381508863064]},{"name":"\u6885\u5dde\u5e02","coord":[116.13719397345734,24.15633544812716]},{"name":"\u6f33\u5dde\u5e02","coord":[117.38279760543345,24.41111215459575]},{"name":"\u53a6\u95e8\u5e02","coord":[118.04275971554665,24.675908246507944]},{"name":"\u9f99\u5ca9\u5e02","coord":[116.69341144552507,25.20284542644492]},{"name":"\u6cc9\u5dde\u5e02","coord":[118.12035864630246,25.22984144365049]},{"name":"\u8386\u7530\u5e02","coord":[118.82439690138142,25.439653480972687]},{"name":"\u798f\u5dde\u5e02","coord":[119.1608285845262,25.99117532466728]},{"name":"\u4e09\u660e\u5e02","coord":[117.51188176216434,26.318292906961602]},{"name":"\u5357\u5e73\u5e02","coord":[118.16153136678187,27.306303151805437]},{"name":"\u629a\u5dde\u5e02","coord":[116.3455359885574,27.487043655935366]},{"name":"\u9e70\u6f6d\u5e02","coord":[117.01082360702333,28.241253742969946]},{"name":"\u5409\u5b89\u5e02","coord":[114.91377151807418,26.957486660664525]},{"name":"\u8d63\u5dde\u5e02","coord":[115.046455717572,25.81565075681663]},{"name":"\u90f4\u5dde\u5e02","coord":[113.1544526703492,25.871927095452524]},{"name":"\u65b0\u4f59\u5e02","coord":[114.94161795877827,27.79044654578371]},{"name":"\u5b9c\u6625\u5e02","coord":[115.04574494880995,28.306428044943356]},{"name":"\u5357\u660c\u5e02","coord":[115.9963824234495,28.664803351584705]},{"name":"\u4e5d\u6c5f\u5e02","coord":[115.53225905704193,29.362905920276297]},{"name":"\u4e0a\u9976\u5e02","coord":[117.8595355766598,28.765755150094634]},{"name":"\u666f\u5fb7\u9547\u5e02","coord":[117.25387030721845,29.33426823662448]},{"name":"\u9ec4\u5c71\u5e02","coord":[117.85476357809696,29.969632034273722]},{"name":"\u6c60\u5dde\u5e02","coord":[117.34517113140791,30.208089337922335]},{"name":"\u94dc\u9675\u5e02","coord":[117.93160431300694,30.926442655001676]},{"name":"\u5b89\u5e86\u5e02","coord":[116.54307680610799,30.524265461641296]},{"name":"\u9ec4\u77f3\u5e02","coord":[115.02354597728443,29.924060229331015]},{"name":"\u54b8\u5b81\u5e02","coord":[114.26967602231792,29.652174021136048]},{"name":"\u9ec4\u5188\u5e02","coord":[115.2859016705373,30.65856897065683]},{"name":"\u6b66\u6c49\u5e02","coord":[114.34552076948799,30.68836237966767]},{"name":"\u968f\u5dde\u5e02","coord":[113.3850627838818,31.87891659924412]},{"name":"\u4fe1\u9633\u5e02","coord":[114.81374730587638,32.0309685135914]},{"name":"\u9a7b\u9a6c\u5e97\u5e02","coord":[114.07756451509235,32.896720987266114]},{"name":"\u5546\u6d1b\u5e02","coord":[109.82044421310393,33.77403373563189]},{"name":"\u897f\u5b89\u5e02","coord":[109.11839808451401,34.225257215515896]},{"name":"\u6e2d\u5357\u5e02","coord":[109.75732444226935,35.025913644359306]},{"name":"\u94dc\u5ddd\u5e02","coord":[108.98695328111377,35.19235092947735]},{"name":"\u54b8\u9633\u5e02","coord":[108.36398776446165,34.84311348287181]},{"name":"\u4e09\u95e8\u5ce1\u5e02","coord":[110.80049688104964,34.31818709571671]},{"name":"\u8fd0\u57ce\u5e02","coord":[111.1736679525165,35.19010372283576]},{"name":"\u6d1b\u9633\u5e02","coord":[111.87577573098216,34.33379926109848]},{"name":"\u5e73\u9876\u5c71\u5e02","coord":[112.80931281928427,33.759895800153096]},{"name":"\u6f2f\u6cb3\u5e02","coord":[113.83505724178012,33.70034266174508]},{"name":"\u8bb8\u660c\u5e02","coord":[113.78762484088509,34.051835688452435]},{"name":"\u90d1\u5dde\u5e02","coord":[113.49619951867594,34.61181797865449]},{"name":"\u7126\u4f5c\u5e02","coord":[113.13404280173008,35.134167097471625]},{"name":"\u664b\u57ce\u5e02","coord":[112.7495732073233,35.63186423091449]},{"name":"\u957f\u6cbb\u5e02","coord":[112.85900842873183,36.45872910742828]},{"name":"\u4e34\u6c7e\u5e02","coord":[111.49379787924448,36.22810800777857]},{"name":"\u592a\u539f\u5e02","coord":[112.15628804033796,37.91704444063036]},{"name":"\u5415\u6881\u5e02","coord":[111.31901105774872,37.712740463356496]},{"name":"\u664b\u4e2d\u5e02","coord":[113.08199599739676,37.36532613794343]},{"name":"\u90af\u90f8\u5e02","coord":[114.41824047234618,36.530119932543315]},{"name":"\u5b89\u9633\u5e02","coord":[113.88883283163116,35.7797611183252]},{"name":"\u9e64\u58c1\u5e02","coord":[114.3654094911545,35.75770487428472]},{"name":"\u65b0\u4e61\u5e02","coord":[113.9184107718167,35.348471214026716]},{"name":"\u5f00\u5c01\u5e02","coord":[114.52801677500626,34.61371216679872]},{"name":"\u5468\u53e3\u5e02","coord":[114.88509782391864,33.69999759722657]},{"name":"\u961c\u9633\u5e02","coord":[115.44595951398213,32.98060371610532]},{"name":"\u6dee\u5357\u5e02","coord":[116.68941991880993,32.79972275772595]},{"name":"\u868c\u57e0\u5e02","coord":[117.38594715783302,33.106729536033896]},{"name":"\u6dee\u5317\u5e02","coord":[116.69651711889378,33.69527529383458]},{"name":"\u5bbf\u5dde\u5e02","coord":[117.30175405886838,33.943330421260015]},{"name":"\u4eb3\u5dde\u5e02","coord":[116.12410804185097,33.46769392946132]},{"name":"\u5546\u4e18\u5e02","coord":[115.59575176872548,34.28339840831147]},{"name":"\u83cf\u6cfd\u5e02","coord":[115.53631974831816,35.197319393220624]},{"name":"\u6fee\u9633\u5e02","coord":[115.3070485514902,35.775883510964334]},{"name":"\u804a\u57ce\u5e02","coord":[115.8870069012884,36.40529594548765]},{"name":"\u90a2\u53f0\u5e02","coord":[114.74259008644859,37.251396750084155]},{"name":"\u77f3\u5bb6\u5e84\u5e02","coord":[114.56923838363613,38.13141710980106]},{"name":"\u9633\u6cc9\u5e02","coord":[113.39216149668508,38.09075470547468]},{"name":"\u4fdd\u5b9a\u5e02","coord":[115.261524468934,39.09118520781398]},{"name":"\u8861\u6c34\u5e02","coord":[115.8182936677897,37.715661598187154]},{"name":"\u5fb7\u5dde\u5e02","coord":[116.4582273790399,37.19372347888644]},{"name":"\u6ca7\u5dde\u5e02","coord":[116.76192710911863,38.20240042039232]},{"name":"\u5eca\u574a\u5e02","coord":[116.50410772133856,39.27896741763884]},{"name":"\u5929\u6d25\u5e02","coord":[117.31988934444873,39.37154482470619]},{"name":"\u5317\u4eac\u5e02","coord":[116.59734730757869,40.237112944270976]},{"name":"\u5f20\u5bb6\u53e3\u5e02","coord":[115.1823606483226,40.83732566607167]},{"name":"\u5510\u5c71\u5e02","coord":[117.8693184261954,39.71862889477249]},{"name":"\u79e6\u7687\u5c9b\u5e02","coord":[119.30467355367742,39.990574652162564]},{"name":"\u627f\u5fb7\u5e02","coord":[117.16275671911026,41.36623845548547]},{"name":"\u846b\u82a6\u5c9b\u5e02","coord":[119.9342336210531,40.5628822626519]},{"name":"\u671d\u9633\u5e02","coord":[120.11853493535794,41.471852354885755]},{"name":"\u8d64\u5cf0\u5e02","coord":[118.50943546234379,43.25452976059767]},{"name":"\u9526\u5dde\u5e02","coord":[121.5167549323861,41.45933087433065]},{"name":"\u8425\u53e3\u5e02","coord":[122.58571915054674,40.42093503997384]},{"name":"\u4e39\u4e1c\u5e02","coord":[124.33549382902183,40.46369290272115]},{"name":"\u8fbd\u9633\u5e02","coord":[123.34064798039414,41.152331397771356]},{"name":"\u76d8\u9526\u5e02","coord":[122.06718005354679,41.05573599862555]},{"name":"\u961c\u65b0\u5e02","coord":[121.93889757908204,42.27641773244204]},{"name":"\u978d\u5c71\u5e02","coord":[122.78904432242356,40.77781183142038]},{"name":"\u6c88\u9633\u5e02","coord":[122.99508899709724,42.1162195010079]},{"name":"\u94c1\u5cad\u5e02","coord":[124.23100515588399,42.72666083611828]},{"name":"\u6276\u987a\u5e02","coord":[124.46027188217573,41.82955407638859]},{"name":"\u901a\u8fbd\u5e02","coord":[122.0729370657937,43.90889130864869]},{"name":"\u5174\u5b89\u76df","coord":[120.79456431092532,45.92003249442161]},{"name":"\u767d\u57ce\u5e02","coord":[123.10619907715235,45.25475749267784]},{"name":"\u9f50\u9f50\u54c8\u5c14\u5e02","coord":[124.5462214659102,47.55395009317394]},{"name":"\u5927\u5174\u5b89\u5cad\u5730\u533a","coord":[124.50992855161529,52.18438447846694]},{"name":"\u9ed1\u6cb3\u5e02","coord":[127.14721400335922,49.25080134026901]},{"name":"\u5927\u5e86\u5e02","coord":[124.40329830095243,46.401048760966745]},{"name":"\u7ee5\u5316\u5e02","coord":[126.5214484055605,46.76992452194825]},{"name":"\u677e\u539f\u5e02","coord":[124.21244334807682,44.75779381338502]},{"name":"\u56db\u5e73\u5e02","coord":[124.27839350328821,43.52139065090318]},{"name":"\u901a\u5316\u5e02","coord":[125.67392830706305,41.91771808663852]},{"name":"\u8fbd\u6e90\u5e02","coord":[125.33529527643432,42.758340204944986]},{"name":"\u5409\u6797\u5e02","coord":[126.83350281902375,43.60730120049175]},{"name":"\u957f\u6625\u5e02","coord":[125.53597875970374,44.24624314701737]},{"name":"\u767d\u5c71\u5e02","coord":[127.16780160322108,42.093893880305075]},{"name":"\u54c8\u5c14\u6ee8\u5e02","coord":[127.39125008786029,45.36200668820575]},{"name":"\u9e64\u5c97\u5e02","coord":[130.4703811258197,47.66520688940109]},{"name":"\u4f0a\u6625\u5e02","coord":[128.91240831703635,47.93833794565277]},{"name":"\u4e03\u53f0\u6cb3\u5e02","coord":[131.2677920224311,45.945099776108584]},{"name":"\u9e21\u897f\u5e02","coord":[132.38059153660274,45.722934218318535]},{"name":"\u53cc\u9e2d\u5c71\u5e02","coord":[132.3184817002743,46.65813679030265]},{"name":"\u4f73\u6728\u65af\u5e02","coord":[132.26174446608726,47.17569713691394]},{"name":"\u547c\u4f26\u8d1d\u5c14\u5e02","coord":[122.3210739998419,50.18176996070858]},{"name":"\u5b5d\u611f\u5e02","coord":[113.83749892135485,31.11757234692128]},{"name":"\u8d35\u6e2f\u5e02","coord":[110.07354588052804,23.380735604767374]},{"name":"\u9ed4\u5357\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea","coord":[107.30931767543106,26.2976919432269]},{"name":"\u5b81\u5fb7\u5e02","coord":[119.52482556634342,27.013151692716413]},{"name":"\u6e29\u5dde\u5e02","coord":[120.30037042732202,27.8699145504001]},{"name":"\u53f0\u5dde\u5e02","coord":[120.88886782713843,28.670799172772313]},{"name":"\u4e3d\u6c34\u5e02","coord":[119.56796851966463,28.170268394477755]},{"name":"\u8862\u5dde\u5e02","coord":[118.79479802644406,28.865874397158763]},{"name":"\u91d1\u534e\u5e02","coord":[119.99381920686633,29.093455548185744]},{"name":"\u7ecd\u5174\u5e02","coord":[120.46546691682343,29.69382513836818]},{"name":"\u5b81\u6ce2\u5e02","coord":[121.42142987830871,29.70001162878972]},{"name":"\u676d\u5dde\u5e02","coord":[119.4405685790891,29.87218307296989]},{"name":"\u5ba3\u57ce\u5e02","coord":[118.68748382914703,30.628143499626418]},{"name":"\u6e56\u5dde\u5e02","coord":[119.98261306633574,30.7945175862809]},{"name":"\u5609\u5174\u5e02","coord":[120.83889215988998,30.67538495499343]},{"name":"\u4e0a\u6d77\u5e02","coord":[121.37534147322967,31.25628247908459]},{"name":"\u82cf\u5dde\u5e02","coord":[120.6906182622391,31.381280695137775]},{"name":"\u65e0\u9521\u5e02","coord":[120.32182300914366,31.54113306724517]},{"name":"\u5e38\u5dde\u5e02","coord":[119.61953292830165,31.611878565375576]},{"name":"\u5357\u4eac\u5e02","coord":[118.71890548838064,31.910863187910323]},{"name":"\u9547\u6c5f\u5e02","coord":[119.42349332902813,31.97942313430778]},{"name":"\u5408\u80a5\u5e02","coord":[117.30651975617157,31.79407863049138]},{"name":"\u516d\u5b89\u5e02","coord":[116.24668220575353,31.820846193819513]},{"name":"\u6ec1\u5dde\u5e02","coord":[117.88422385307969,32.51792621904418]},{"name":"\u6cf0\u5dde\u5e02","coord":[120.03124303305091,32.56503102346783]},{"name":"\u5357\u901a\u5e02","coord":[120.85599446760912,32.18496706099728]},{"name":"\u76d0\u57ce\u5e02","coord":[120.01812490612667,33.54219948734023]},{"name":"\u6dee\u5b89\u5e02","coord":[119.0749424205415,33.39203631772854]},{"name":"\u5bbf\u8fc1\u5e02","coord":[118.45404943216346,33.666258719120265]},{"name":"\u5f90\u5dde\u5e02","coord":[117.77482249295966,34.30847766157078]},{"name":"\u6d4e\u5b81\u5e02","coord":[116.74147276546373,35.27488504351119]},{"name":"\u67a3\u5e84\u5e02","coord":[117.43359942491492,34.884162021736]},{"name":"\u8fde\u4e91\u6e2f\u5e02","coord":[119.01553213785074,34.54316517587849]},{"name":"\u4e34\u6c82\u5e02","coord":[118.31478835349617,35.28173079028279]},{"name":"\u65e5\u7167\u5e02","coord":[119.14265350444272,35.54479073199592]},{"name":"\u9752\u5c9b\u5e02","coord":[120.27779044405756,36.3464117375903]},{"name":"\u5a01\u6d77\u5e02","coord":[122.12963327195605,37.13879077904251]},{"name":"\u70df\u53f0\u5e02","coord":[120.7689567423966,37.19772002195597]},{"name":"\u6f4d\u574a\u5e02","coord":[119.02178548592039,36.49292234053931]},{"name":"\u6dc4\u535a\u5e02","coord":[117.92936024367185,36.60871347163638]},{"name":"\u6cf0\u5b89\u5e02","coord":[116.93810893944303,36.0423330118612]},{"name":"\u6d4e\u5357\u5e02","coord":[117.34560282551296,36.769574973846304]},{"name":"\u4e1c\u8425\u5e02","coord":[118.4915054457184,37.52194690335787]},{"name":"\u6ee8\u5dde\u5e02","coord":[117.67610299757533,37.4439597758601]},{"name":"\u6606\u660e\u5e02","coord":[102.93100245594789,25.481300763922075]},{"name":"\u7389\u6eaa\u5e02","coord":[102.23080854291823,24.156168324611663]},{"name":"\u5854\u57ce\u5730\u533a","coord":[83.60908162840168,45.3721852373893]},{"name":"\u5f20\u6396\u5e02","coord":[100.47710030600572,38.704239320458385]},{"name":"\u5357\u9633\u5e02","coord":[112.1400670951149,33.03033276715801]},{"name":"\u626c\u5dde\u5e02","coord":[119.48949608990988,32.80956776339646]},{"name":"\u5ef6\u8fb9\u671d\u9c9c\u65cf\u81ea\u6cbb\u5dde","coord":[129.3577692895626,43.24968794080283]},{"name":"\u7261\u4e39\u6c5f\u5e02","coord":[129.87240796405672,44.7073040108322]},{"name":"\u6fb3\u95e8","coord":[113.56289691515346,22.14602596262204]},{"name":"\u5434\u5fe0\u5e02","coord":[106.76894508116403,37.72566765880316]},{"name":"\u6765\u5bbe\u5e02","coord":[109.25592217010114,23.86346274681084]},{"name":"\u5e73\u51c9\u5e02","coord":[107.0708132782897,35.30329631658711]},{"name":"\u9a6c\u978d\u5c71\u5e02","coord":[118.27245878467022,31.657727937739004]},{"name":"\u829c\u6e56\u5e02","coord":[118.32992684415504,31.081688223101658]},{"name":"\u6f84\u8fc8\u53bf","coord":[110.04198076060266,19.694955078668105]},{"name":"\u4fdd\u4ead\u9ece\u65cf\u82d7\u65cf\u81ea\u6cbb","coord":[109.6055304964257,18.6101488675304]},{"name":"\u4e50\u4e1c\u9ece\u65cf\u81ea\u6cbb\u53bf","coord":[109.04051999525574,18.643137437909203]},{"name":"\u510b\u5dde\u5e02","coord":[109.3431358337404,19.550974957403195]},{"name":"\u5b9a\u5b89\u53bf","coord":[110.38744429685676,19.47557074114284]},{"name":"\u5c6f\u660c\u53bf","coord":[110.00574767630334,19.367175093044388]},{"name":"\u767d\u6c99\u9ece\u65cf\u81ea\u6cbb\u53bf","coord":[109.36860737761768,19.214416393082217]},{"name":"\u743c\u4e2d\u9ece\u65cf\u82d7\u65cf\u81ea\u6cbb","coord":[109.86691465937548,19.073671135862682]},{"name":"\u4e1c\u65b9\u5e02","coord":[108.86903802405428,19.017352815445214]},{"name":"\u660c\u6c5f\u9ece\u65cf\u81ea\u6cbb\u53bf","coord":[108.9686431884767,19.182594167127824]},{"name":"\u6d77\u53e3\u5e02","coord":[110.420654296875,19.806565564640795]},{"name":"\u6d4e\u6e90\u5e02","coord":[112.38051465474433,35.07958362422394]},{"name":"\u4e94\u6307\u5c71\u5e02","coord":[109.53595187364496,18.832908264613966]},{"name":"\u5927\u8fde\u5e02","coord":[121.96662235866603,39.444150542439914]},{"name":"\u6587\u660c\u5e02\u4e09\u6c99\u5e02","coord":[110.81828537536748,19.756501444162936]},{"name":"\u4e09\u4e9a\u5e02","coord":[109.38424600793707,18.39186315877128]},{"name":"\u4e07\u5b81\u5e02","coord":[110.28485046979574,18.860240588635115]},{"name":"\u9675\u6c34\u9ece\u65cf\u81ea\u6cbb\u53bf","coord":[109.95577603229562,18.594712684620465]},{"name":"\u4e34\u9ad8\u53bf","coord":[109.71915395436967,19.79420403032508]},{"name":"\u743c\u6d77\u5e02","coord":[110.41650700703043,19.22315873149372]}]')},
- /***/5385:
- /***/function(e){"use strict";e.exports=JSON.parse('[{"name":"\u9ed1\u9f99\u6c5f\u7701","coord":[127.64559817675396,48.48668098449708]},{"name":"\u5185\u8499\u53e4\u81ea\u6cbb\u533a","coord":[118.34519572208615,45.370218276977525]},{"name":"\u65b0\u7586\u7ef4\u543e\u5c14\u81ea\u6cbb\u533a","coord":[87.13479065593184,41.75497055053711]},{"name":"\u5409\u6797\u7701","coord":[126.12985278813787,43.57983207702637]},{"name":"\u8fbd\u5b81\u7701","coord":[124.02494773936439,41.105743408203125]},{"name":"\u7518\u8083\u7701","coord":[102.87785725633012,37.69582366943361]},{"name":"\u6cb3\u5317\u7701","coord":[115.66327227481898,39.33383178710938]},{"name":"\u5317\u4eac\u5e02","coord":[116.62199343603638,40.25053787231445]},{"name":"\u5c71\u897f\u7701","coord":[112.45180235808988,37.666561126708984]},{"name":"\u5929\u6d25\u5e02","coord":[117.35711842642581,39.406789779663086]},{"name":"\u9655\u897f\u7701","coord":[109.56294003056632,35.64754199981689]},{"name":"\u5b81\u590f\u56de\u65cf\u81ea\u6cbb\u533a","coord":[105.96110877640074,37.3081169128418]},{"name":"\u9752\u6d77\u7701","coord":[96.07301048277901,35.44417190551758]},{"name":"\u5c71\u4e1c\u7701","coord":[118.03833752951093,36.29800605773925]},{"name":"\u897f\u85cf\u81ea\u6cbb\u533a","coord":[87.47361520439412,31.6703872680664]},{"name":"\u6cb3\u5357\u7701","coord":[113.07832397097275,33.87751102447509]},{"name":"\u6c5f\u82cf\u7701","coord":[119.93926538201052,32.945452690124505]},{"name":"\u5b89\u5fbd\u7701","coord":[117.15146765881019,32.024482727050774]},{"name":"\u56db\u5ddd\u7701","coord":[102.28998890142759,30.182161331176758]},{"name":"\u6e56\u5317\u7701","coord":[112.87798261431585,31.157071113586426]},{"name":"\u91cd\u5e86\u5e02","coord":[107.870126637831,30.188085556030266]},{"name":"\u4e0a\u6d77\u5e02","coord":[121.42561166015514,31.276043891906745]},{"name":"\u6d59\u6c5f\u7701","coord":[119.75337092707514,29.175934791564945]},{"name":"\u6e56\u5357\u7701","coord":[111.52770282777405,27.38110256195069]},{"name":"\u6c5f\u897f\u7701","coord":[115.51091280655628,27.283511161804206]},{"name":"\u4e91\u5357\u7701","coord":[101.27053825991308,25.19783210754396]},{"name":"\u8d35\u5dde\u7701","coord":[106.49672346773299,26.92267990112305]},{"name":"\u798f\u5efa\u7701","coord":[117.9976766946587,25.939599990844727]},{"name":"\u5e7f\u897f\u58ee\u65cf\u81ea\u6cbb\u533a","coord":[108.98706831086302,23.891559600830078]},{"name":"\u53f0\u6e7e\u7701","coord":[120.82468432537434,23.602651596069336]},{"name":"\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a","coord":[114.21036850371561,22.374858856201172]},{"name":"\u6d77\u5357\u7701","coord":[109.62792940960824,19.163116455078125]},{"name":"\u5e7f\u4e1c\u7701","coord":[113.32127888266032,22.873867034912106]},{"name":"\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a","coord":[113.56819996291901,22.160347992976]}]')}
- /******/},__webpack_module_cache__={};
- /************************************************************************/
- /******/ // The module cache
- /******/
- /******/
- /******/ // The require function
- /******/function __webpack_require__(e){
- /******/ // Check if module is in cache
- /******/var t=__webpack_module_cache__[e];
- /******/if(void 0!==t)
- /******/return t.exports;
- /******/
- /******/ // Create a new module (and put it into the cache)
- /******/var r=__webpack_module_cache__[e]={
- /******/id:e,
- /******/loaded:!1,
- /******/exports:{}
- /******/};
- /******/
- /******/ // Execute the module function
- /******/
- /******/
- /******/ // Return the exports of the module
- /******/return __webpack_modules__[e](r,r.exports,__webpack_require__),
- /******/
- /******/ // Flag the module as loaded
- /******/r.loaded=!0,r.exports;
- /******/}
- /******/
- /************************************************************************/
- /******/ /* webpack/runtime/define property getters */
- /******/
- /******/ // define getter functions for harmony exports
- /******/__webpack_require__.d=function(e,t){
- /******/for(var r in t)
- /******/__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&
- /******/Object.defineProperty(e,r,{enumerable:!0,get:t[r]})
- /******/;
- /******/},
- /******/__webpack_require__.g=function(){
- /******/if("object"===typeof globalThis)return globalThis;
- /******/try{
- /******/return this||new Function("return this")();
- /******/}catch(e){
- /******/if("object"===typeof window)return window;
- /******/}
- /******/}(),
- /******/__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
- /******/,
- /******/ // define __esModule on exports
- /******/__webpack_require__.r=function(e){
- /******/"undefined"!==typeof Symbol&&Symbol.toStringTag&&
- /******/Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})
- /******/,Object.defineProperty(e,"__esModule",{value:!0})},
- /******/__webpack_require__.nmd=function(e){
- /******/
- /******/return e.paths=[],
- /******/e.children||(e.children=[]),e;
- /******/};
- /******/
- /************************************************************************/
- /******/
- /******/ // startup
- /******/ // Load entry module and return exports
- /******/ // This entry module is referenced by other modules so it can't be inlined
- /******/var __webpack_exports__=__webpack_require__(4483);
- /******/
- /******/
- /******/return __webpack_exports__=__webpack_exports__.default,__webpack_exports__;
- /******/}()}));
|