iclient-mapboxgl-vue.js 3.2 MB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649256502565125652256532565425655256562565725658256592566025661256622566325664256652566625667256682566925670256712567225673256742567525676256772567825679256802568125682256832568425685256862568725688256892569025691256922569325694256952569625697256982569925700257012570225703257042570525706257072570825709257102571125712257132571425715257162571725718257192572025721257222572325724257252572625727257282572925730257312573225733257342573525736257372573825739257402574125742257432574425745257462574725748257492575025751257522575325754257552575625757257582575925760257612576225763257642576525766257672576825769257702577125772257732577425775257762577725778257792578025781257822578325784257852578625787257882578925790257912579225793257942579525796257972579825799258002580125802258032580425805258062580725808258092581025811258122581325814258152581625817258182581925820258212582225823258242582525826258272582825829258302583125832258332583425835258362583725838258392584025841258422584325844258452584625847258482584925850258512585225853258542585525856258572585825859258602586125862258632586425865258662586725868258692587025871258722587325874258752587625877258782587925880258812588225883258842588525886258872588825889258902589125892258932589425895258962589725898258992590025901259022590325904259052590625907259082590925910259112591225913259142591525916259172591825919259202592125922259232592425925259262592725928259292593025931259322593325934259352593625937259382593925940259412594225943259442594525946259472594825949259502595125952259532595425955259562595725958259592596025961259622596325964259652596625967259682596925970259712597225973259742597525976259772597825979259802598125982259832598425985259862598725988259892599025991259922599325994259952599625997259982599926000260012600226003260042600526006260072600826009260102601126012260132601426015260162601726018260192602026021260222602326024260252602626027260282602926030260312603226033260342603526036260372603826039260402604126042260432604426045260462604726048260492605026051260522605326054260552605626057260582605926060260612606226063260642606526066260672606826069260702607126072260732607426075260762607726078260792608026081260822608326084260852608626087260882608926090260912609226093260942609526096260972609826099261002610126102261032610426105261062610726108261092611026111261122611326114261152611626117261182611926120261212612226123261242612526126261272612826129261302613126132261332613426135261362613726138261392614026141261422614326144261452614626147261482614926150261512615226153261542615526156261572615826159261602616126162261632616426165261662616726168261692617026171261722617326174261752617626177261782617926180261812618226183261842618526186261872618826189261902619126192261932619426195261962619726198261992620026201262022620326204262052620626207262082620926210262112621226213262142621526216262172621826219262202622126222262232622426225262262622726228262292623026231262322623326234262352623626237262382623926240262412624226243262442624526246262472624826249262502625126252262532625426255262562625726258262592626026261262622626326264262652626626267262682626926270262712627226273262742627526276262772627826279262802628126282262832628426285262862628726288262892629026291262922629326294262952629626297262982629926300263012630226303263042630526306263072630826309263102631126312263132631426315263162631726318263192632026321263222632326324263252632626327263282632926330263312633226333263342633526336263372633826339263402634126342263432634426345263462634726348263492635026351263522635326354263552635626357263582635926360263612636226363263642636526366263672636826369263702637126372263732637426375263762637726378263792638026381263822638326384263852638626387263882638926390263912639226393263942639526396263972639826399264002640126402264032640426405264062640726408264092641026411264122641326414264152641626417264182641926420264212642226423264242642526426264272642826429264302643126432264332643426435264362643726438264392644026441264422644326444264452644626447264482644926450264512645226453264542645526456264572645826459264602646126462264632646426465264662646726468264692647026471264722647326474264752647626477264782647926480264812648226483264842648526486264872648826489264902649126492264932649426495264962649726498264992650026501265022650326504265052650626507265082650926510265112651226513265142651526516265172651826519265202652126522265232652426525265262652726528265292653026531265322653326534265352653626537265382653926540265412654226543265442654526546265472654826549265502655126552265532655426555265562655726558265592656026561265622656326564265652656626567265682656926570265712657226573265742657526576265772657826579265802658126582265832658426585265862658726588265892659026591265922659326594265952659626597265982659926600266012660226603266042660526606266072660826609266102661126612266132661426615266162661726618266192662026621266222662326624266252662626627266282662926630266312663226633266342663526636266372663826639266402664126642266432664426645266462664726648266492665026651266522665326654266552665626657266582665926660266612666226663266642666526666266672666826669266702667126672266732667426675266762667726678266792668026681266822668326684266852668626687266882668926690266912669226693266942669526696266972669826699267002670126702267032670426705267062670726708267092671026711267122671326714267152671626717267182671926720267212672226723267242672526726267272672826729267302673126732267332673426735267362673726738267392674026741267422674326744267452674626747267482674926750267512675226753267542675526756267572675826759267602676126762267632676426765267662676726768267692677026771267722677326774267752677626777267782677926780267812678226783267842678526786267872678826789267902679126792267932679426795267962679726798267992680026801268022680326804268052680626807268082680926810268112681226813268142681526816268172681826819268202682126822268232682426825268262682726828268292683026831268322683326834268352683626837268382683926840268412684226843268442684526846268472684826849268502685126852268532685426855268562685726858268592686026861268622686326864268652686626867268682686926870268712687226873268742687526876268772687826879268802688126882268832688426885268862688726888268892689026891268922689326894268952689626897268982689926900269012690226903269042690526906269072690826909269102691126912269132691426915269162691726918269192692026921269222692326924269252692626927269282692926930269312693226933269342693526936269372693826939269402694126942269432694426945269462694726948269492695026951269522695326954269552695626957269582695926960269612696226963269642696526966269672696826969269702697126972269732697426975269762697726978269792698026981269822698326984269852698626987269882698926990269912699226993269942699526996269972699826999270002700127002270032700427005270062700727008270092701027011270122701327014270152701627017270182701927020270212702227023270242702527026270272702827029270302703127032270332703427035270362703727038270392704027041270422704327044270452704627047270482704927050270512705227053270542705527056270572705827059270602706127062270632706427065270662706727068270692707027071270722707327074270752707627077270782707927080270812708227083270842708527086270872708827089270902709127092270932709427095270962709727098270992710027101271022710327104271052710627107271082710927110271112711227113271142711527116271172711827119271202712127122271232712427125271262712727128271292713027131271322713327134271352713627137271382713927140271412714227143271442714527146271472714827149271502715127152271532715427155271562715727158271592716027161271622716327164271652716627167271682716927170271712717227173271742717527176271772717827179271802718127182271832718427185271862718727188271892719027191271922719327194271952719627197271982719927200272012720227203272042720527206272072720827209272102721127212272132721427215272162721727218272192722027221272222722327224272252722627227272282722927230272312723227233272342723527236272372723827239272402724127242272432724427245272462724727248272492725027251272522725327254272552725627257272582725927260272612726227263272642726527266272672726827269272702727127272272732727427275272762727727278272792728027281272822728327284272852728627287272882728927290272912729227293272942729527296272972729827299273002730127302273032730427305273062730727308273092731027311273122731327314273152731627317273182731927320273212732227323273242732527326273272732827329273302733127332273332733427335273362733727338273392734027341273422734327344273452734627347273482734927350273512735227353273542735527356273572735827359273602736127362273632736427365273662736727368273692737027371273722737327374273752737627377273782737927380273812738227383273842738527386273872738827389273902739127392273932739427395273962739727398273992740027401274022740327404274052740627407274082740927410274112741227413274142741527416274172741827419274202742127422274232742427425274262742727428274292743027431274322743327434274352743627437274382743927440274412744227443274442744527446274472744827449274502745127452274532745427455274562745727458274592746027461274622746327464274652746627467274682746927470274712747227473274742747527476274772747827479274802748127482274832748427485274862748727488274892749027491274922749327494274952749627497274982749927500275012750227503275042750527506275072750827509275102751127512275132751427515275162751727518275192752027521275222752327524275252752627527275282752927530275312753227533275342753527536275372753827539275402754127542275432754427545275462754727548275492755027551275522755327554275552755627557275582755927560275612756227563275642756527566275672756827569275702757127572275732757427575275762757727578275792758027581275822758327584275852758627587275882758927590275912759227593275942759527596275972759827599276002760127602276032760427605276062760727608276092761027611276122761327614276152761627617276182761927620276212762227623276242762527626276272762827629276302763127632276332763427635276362763727638276392764027641276422764327644276452764627647276482764927650276512765227653276542765527656276572765827659276602766127662276632766427665276662766727668276692767027671276722767327674276752767627677276782767927680276812768227683276842768527686276872768827689276902769127692276932769427695276962769727698276992770027701277022770327704277052770627707277082770927710277112771227713277142771527716277172771827719277202772127722277232772427725277262772727728277292773027731277322773327734277352773627737277382773927740277412774227743277442774527746277472774827749277502775127752277532775427755277562775727758277592776027761277622776327764277652776627767277682776927770277712777227773277742777527776277772777827779277802778127782277832778427785277862778727788277892779027791277922779327794277952779627797277982779927800278012780227803278042780527806278072780827809278102781127812278132781427815278162781727818278192782027821278222782327824278252782627827278282782927830278312783227833278342783527836278372783827839278402784127842278432784427845278462784727848278492785027851278522785327854278552785627857278582785927860278612786227863278642786527866278672786827869278702787127872278732787427875278762787727878278792788027881278822788327884278852788627887278882788927890278912789227893278942789527896278972789827899279002790127902279032790427905279062790727908279092791027911279122791327914279152791627917279182791927920279212792227923279242792527926279272792827929279302793127932279332793427935279362793727938279392794027941279422794327944279452794627947279482794927950279512795227953279542795527956279572795827959279602796127962279632796427965279662796727968279692797027971279722797327974279752797627977279782797927980279812798227983279842798527986279872798827989279902799127992279932799427995279962799727998279992800028001280022800328004280052800628007280082800928010280112801228013280142801528016280172801828019280202802128022280232802428025280262802728028280292803028031280322803328034280352803628037280382803928040280412804228043280442804528046280472804828049280502805128052280532805428055280562805728058280592806028061280622806328064280652806628067280682806928070280712807228073280742807528076280772807828079280802808128082280832808428085280862808728088280892809028091280922809328094280952809628097280982809928100281012810228103281042810528106281072810828109281102811128112281132811428115281162811728118281192812028121281222812328124281252812628127281282812928130281312813228133281342813528136281372813828139281402814128142281432814428145281462814728148281492815028151281522815328154281552815628157281582815928160281612816228163281642816528166281672816828169281702817128172281732817428175281762817728178281792818028181281822818328184281852818628187281882818928190281912819228193281942819528196281972819828199282002820128202282032820428205282062820728208282092821028211282122821328214282152821628217282182821928220282212822228223282242822528226282272822828229282302823128232282332823428235282362823728238282392824028241282422824328244282452824628247282482824928250282512825228253282542825528256282572825828259282602826128262282632826428265282662826728268282692827028271282722827328274282752827628277282782827928280282812828228283282842828528286282872828828289282902829128292282932829428295282962829728298282992830028301283022830328304283052830628307283082830928310283112831228313283142831528316283172831828319283202832128322283232832428325283262832728328283292833028331283322833328334283352833628337283382833928340283412834228343283442834528346283472834828349283502835128352283532835428355283562835728358283592836028361283622836328364283652836628367283682836928370283712837228373283742837528376283772837828379283802838128382283832838428385283862838728388283892839028391283922839328394283952839628397283982839928400284012840228403284042840528406284072840828409284102841128412284132841428415284162841728418284192842028421284222842328424284252842628427284282842928430284312843228433284342843528436284372843828439284402844128442284432844428445284462844728448284492845028451284522845328454284552845628457284582845928460284612846228463284642846528466284672846828469284702847128472284732847428475284762847728478284792848028481284822848328484284852848628487284882848928490284912849228493284942849528496284972849828499285002850128502285032850428505285062850728508285092851028511285122851328514285152851628517285182851928520285212852228523285242852528526285272852828529285302853128532285332853428535285362853728538285392854028541285422854328544285452854628547285482854928550285512855228553285542855528556285572855828559285602856128562285632856428565285662856728568285692857028571285722857328574285752857628577285782857928580285812858228583285842858528586285872858828589285902859128592285932859428595285962859728598285992860028601286022860328604286052860628607286082860928610286112861228613286142861528616286172861828619286202862128622286232862428625286262862728628286292863028631286322863328634286352863628637286382863928640286412864228643286442864528646286472864828649286502865128652286532865428655286562865728658286592866028661286622866328664286652866628667286682866928670286712867228673286742867528676286772867828679286802868128682286832868428685286862868728688286892869028691286922869328694286952869628697286982869928700287012870228703287042870528706287072870828709287102871128712287132871428715287162871728718287192872028721287222872328724287252872628727287282872928730287312873228733287342873528736287372873828739287402874128742287432874428745287462874728748287492875028751287522875328754287552875628757287582875928760287612876228763287642876528766287672876828769287702877128772287732877428775287762877728778287792878028781287822878328784287852878628787287882878928790287912879228793287942879528796287972879828799288002880128802288032880428805288062880728808288092881028811288122881328814288152881628817288182881928820288212882228823288242882528826288272882828829288302883128832288332883428835288362883728838288392884028841288422884328844288452884628847288482884928850288512885228853288542885528856288572885828859288602886128862288632886428865288662886728868288692887028871288722887328874288752887628877288782887928880288812888228883288842888528886288872888828889288902889128892288932889428895288962889728898288992890028901289022890328904289052890628907289082890928910289112891228913289142891528916289172891828919289202892128922289232892428925289262892728928289292893028931289322893328934289352893628937289382893928940289412894228943289442894528946289472894828949289502895128952289532895428955289562895728958289592896028961289622896328964289652896628967289682896928970289712897228973289742897528976289772897828979289802898128982289832898428985289862898728988289892899028991289922899328994289952899628997289982899929000290012900229003290042900529006290072900829009290102901129012290132901429015290162901729018290192902029021290222902329024290252902629027290282902929030290312903229033290342903529036290372903829039290402904129042290432904429045290462904729048290492905029051290522905329054290552905629057290582905929060290612906229063290642906529066290672906829069290702907129072290732907429075290762907729078290792908029081290822908329084290852908629087290882908929090290912909229093290942909529096290972909829099291002910129102291032910429105291062910729108291092911029111291122911329114291152911629117291182911929120291212912229123291242912529126291272912829129291302913129132291332913429135291362913729138291392914029141291422914329144291452914629147291482914929150291512915229153291542915529156291572915829159291602916129162291632916429165291662916729168291692917029171291722917329174291752917629177291782917929180291812918229183291842918529186291872918829189291902919129192291932919429195291962919729198291992920029201292022920329204292052920629207292082920929210292112921229213292142921529216292172921829219292202922129222292232922429225292262922729228292292923029231292322923329234292352923629237292382923929240292412924229243292442924529246292472924829249292502925129252292532925429255292562925729258292592926029261292622926329264292652926629267292682926929270292712927229273292742927529276292772927829279292802928129282292832928429285292862928729288292892929029291292922929329294292952929629297292982929929300293012930229303293042930529306293072930829309293102931129312293132931429315293162931729318293192932029321293222932329324293252932629327293282932929330293312933229333293342933529336293372933829339293402934129342293432934429345293462934729348293492935029351293522935329354293552935629357293582935929360293612936229363293642936529366293672936829369293702937129372293732937429375293762937729378293792938029381293822938329384293852938629387293882938929390293912939229393293942939529396293972939829399294002940129402294032940429405294062940729408294092941029411294122941329414294152941629417294182941929420294212942229423294242942529426294272942829429294302943129432294332943429435294362943729438294392944029441294422944329444294452944629447294482944929450294512945229453294542945529456294572945829459294602946129462294632946429465294662946729468294692947029471294722947329474294752947629477294782947929480294812948229483294842948529486294872948829489294902949129492294932949429495294962949729498294992950029501295022950329504295052950629507295082950929510295112951229513295142951529516295172951829519295202952129522295232952429525295262952729528295292953029531295322953329534295352953629537295382953929540295412954229543295442954529546295472954829549295502955129552295532955429555295562955729558295592956029561295622956329564295652956629567295682956929570295712957229573295742957529576295772957829579295802958129582295832958429585295862958729588295892959029591295922959329594295952959629597295982959929600296012960229603296042960529606296072960829609296102961129612296132961429615296162961729618296192962029621296222962329624296252962629627296282962929630296312963229633296342963529636296372963829639296402964129642296432964429645296462964729648296492965029651296522965329654296552965629657296582965929660296612966229663296642966529666296672966829669296702967129672296732967429675296762967729678296792968029681296822968329684296852968629687296882968929690296912969229693296942969529696296972969829699297002970129702297032970429705297062970729708297092971029711297122971329714297152971629717297182971929720297212972229723297242972529726297272972829729297302973129732297332973429735297362973729738297392974029741297422974329744297452974629747297482974929750297512975229753297542975529756297572975829759297602976129762297632976429765297662976729768297692977029771297722977329774297752977629777297782977929780297812978229783297842978529786297872978829789297902979129792297932979429795297962979729798297992980029801298022980329804298052980629807298082980929810298112981229813298142981529816298172981829819298202982129822298232982429825298262982729828298292983029831298322983329834298352983629837298382983929840298412984229843298442984529846298472984829849298502985129852298532985429855298562985729858298592986029861298622986329864298652986629867298682986929870298712987229873298742987529876298772987829879298802988129882298832988429885298862988729888298892989029891298922989329894298952989629897298982989929900299012990229903299042990529906299072990829909299102991129912299132991429915299162991729918299192992029921299222992329924299252992629927299282992929930299312993229933299342993529936299372993829939299402994129942299432994429945299462994729948299492995029951299522995329954299552995629957299582995929960299612996229963299642996529966299672996829969299702997129972299732997429975299762997729978299792998029981299822998329984299852998629987299882998929990299912999229993299942999529996299972999829999300003000130002300033000430005300063000730008300093001030011300123001330014300153001630017300183001930020300213002230023300243002530026300273002830029300303003130032300333003430035300363003730038300393004030041300423004330044300453004630047300483004930050300513005230053300543005530056300573005830059300603006130062300633006430065300663006730068300693007030071300723007330074300753007630077300783007930080300813008230083300843008530086300873008830089300903009130092300933009430095300963009730098300993010030101301023010330104301053010630107301083010930110301113011230113301143011530116301173011830119301203012130122301233012430125301263012730128301293013030131301323013330134301353013630137301383013930140301413014230143301443014530146301473014830149301503015130152301533015430155301563015730158301593016030161301623016330164301653016630167301683016930170301713017230173301743017530176301773017830179301803018130182301833018430185301863018730188301893019030191301923019330194301953019630197301983019930200302013020230203302043020530206302073020830209302103021130212302133021430215302163021730218302193022030221302223022330224302253022630227302283022930230302313023230233302343023530236302373023830239302403024130242302433024430245302463024730248302493025030251302523025330254302553025630257302583025930260302613026230263302643026530266302673026830269302703027130272302733027430275302763027730278302793028030281302823028330284302853028630287302883028930290302913029230293302943029530296302973029830299303003030130302303033030430305303063030730308303093031030311303123031330314303153031630317303183031930320303213032230323303243032530326303273032830329303303033130332303333033430335303363033730338303393034030341303423034330344303453034630347303483034930350303513035230353303543035530356303573035830359303603036130362303633036430365303663036730368303693037030371303723037330374303753037630377303783037930380303813038230383303843038530386303873038830389303903039130392303933039430395303963039730398303993040030401304023040330404304053040630407304083040930410304113041230413304143041530416304173041830419304203042130422304233042430425304263042730428304293043030431304323043330434304353043630437304383043930440304413044230443304443044530446304473044830449304503045130452304533045430455304563045730458304593046030461304623046330464304653046630467304683046930470304713047230473304743047530476304773047830479304803048130482304833048430485304863048730488304893049030491304923049330494304953049630497304983049930500305013050230503305043050530506305073050830509305103051130512305133051430515305163051730518305193052030521305223052330524305253052630527305283052930530305313053230533305343053530536305373053830539305403054130542305433054430545305463054730548305493055030551305523055330554305553055630557305583055930560305613056230563305643056530566305673056830569305703057130572305733057430575305763057730578305793058030581305823058330584305853058630587305883058930590305913059230593305943059530596305973059830599306003060130602306033060430605306063060730608306093061030611306123061330614306153061630617306183061930620306213062230623306243062530626306273062830629306303063130632306333063430635306363063730638306393064030641306423064330644306453064630647306483064930650306513065230653306543065530656306573065830659306603066130662306633066430665306663066730668306693067030671306723067330674306753067630677306783067930680306813068230683306843068530686306873068830689306903069130692306933069430695306963069730698306993070030701307023070330704307053070630707307083070930710307113071230713307143071530716307173071830719307203072130722307233072430725307263072730728307293073030731307323073330734307353073630737307383073930740307413074230743307443074530746307473074830749307503075130752307533075430755307563075730758307593076030761307623076330764307653076630767307683076930770307713077230773307743077530776307773077830779307803078130782307833078430785307863078730788307893079030791307923079330794307953079630797307983079930800308013080230803308043080530806308073080830809308103081130812308133081430815308163081730818308193082030821308223082330824308253082630827308283082930830308313083230833308343083530836308373083830839308403084130842308433084430845308463084730848308493085030851308523085330854308553085630857308583085930860308613086230863308643086530866308673086830869308703087130872308733087430875308763087730878308793088030881308823088330884308853088630887308883088930890308913089230893308943089530896308973089830899309003090130902309033090430905309063090730908309093091030911309123091330914309153091630917309183091930920309213092230923309243092530926309273092830929309303093130932309333093430935309363093730938309393094030941309423094330944309453094630947309483094930950309513095230953309543095530956309573095830959309603096130962309633096430965309663096730968309693097030971309723097330974309753097630977309783097930980309813098230983309843098530986309873098830989309903099130992309933099430995309963099730998309993100031001310023100331004310053100631007310083100931010310113101231013310143101531016310173101831019310203102131022310233102431025310263102731028310293103031031310323103331034310353103631037310383103931040310413104231043310443104531046310473104831049310503105131052310533105431055310563105731058310593106031061310623106331064310653106631067310683106931070310713107231073310743107531076310773107831079310803108131082310833108431085310863108731088310893109031091310923109331094310953109631097310983109931100311013110231103311043110531106311073110831109311103111131112311133111431115311163111731118311193112031121311223112331124311253112631127311283112931130311313113231133311343113531136311373113831139311403114131142311433114431145311463114731148311493115031151311523115331154311553115631157311583115931160311613116231163311643116531166311673116831169311703117131172311733117431175311763117731178311793118031181311823118331184311853118631187311883118931190311913119231193311943119531196311973119831199312003120131202312033120431205312063120731208312093121031211312123121331214312153121631217312183121931220312213122231223312243122531226312273122831229312303123131232312333123431235312363123731238312393124031241312423124331244312453124631247312483124931250312513125231253312543125531256312573125831259312603126131262312633126431265312663126731268312693127031271312723127331274312753127631277312783127931280312813128231283312843128531286312873128831289312903129131292312933129431295312963129731298312993130031301313023130331304313053130631307313083130931310313113131231313313143131531316313173131831319313203132131322313233132431325313263132731328313293133031331313323133331334313353133631337313383133931340313413134231343313443134531346313473134831349313503135131352313533135431355313563135731358313593136031361313623136331364313653136631367313683136931370313713137231373313743137531376313773137831379313803138131382313833138431385313863138731388313893139031391313923139331394313953139631397313983139931400314013140231403314043140531406314073140831409314103141131412314133141431415314163141731418314193142031421314223142331424314253142631427314283142931430314313143231433314343143531436314373143831439314403144131442314433144431445314463144731448314493145031451314523145331454314553145631457314583145931460314613146231463314643146531466314673146831469314703147131472314733147431475314763147731478314793148031481314823148331484314853148631487314883148931490314913149231493314943149531496314973149831499315003150131502315033150431505315063150731508315093151031511315123151331514315153151631517315183151931520315213152231523315243152531526315273152831529315303153131532315333153431535315363153731538315393154031541315423154331544315453154631547315483154931550315513155231553315543155531556315573155831559315603156131562315633156431565315663156731568315693157031571315723157331574315753157631577315783157931580315813158231583315843158531586315873158831589315903159131592315933159431595315963159731598315993160031601316023160331604316053160631607316083160931610316113161231613316143161531616316173161831619316203162131622316233162431625316263162731628316293163031631316323163331634316353163631637316383163931640316413164231643316443164531646316473164831649316503165131652316533165431655316563165731658316593166031661316623166331664316653166631667316683166931670316713167231673316743167531676316773167831679316803168131682316833168431685316863168731688316893169031691316923169331694316953169631697316983169931700317013170231703317043170531706317073170831709317103171131712317133171431715317163171731718317193172031721317223172331724317253172631727317283172931730317313173231733317343173531736317373173831739317403174131742317433174431745317463174731748317493175031751317523175331754317553175631757317583175931760317613176231763317643176531766317673176831769317703177131772317733177431775317763177731778317793178031781317823178331784317853178631787317883178931790317913179231793317943179531796317973179831799318003180131802318033180431805318063180731808318093181031811318123181331814318153181631817318183181931820318213182231823318243182531826318273182831829318303183131832318333183431835318363183731838318393184031841318423184331844318453184631847318483184931850318513185231853318543185531856318573185831859318603186131862318633186431865318663186731868318693187031871318723187331874318753187631877318783187931880318813188231883318843188531886318873188831889318903189131892318933189431895318963189731898318993190031901319023190331904319053190631907319083190931910319113191231913319143191531916319173191831919319203192131922319233192431925319263192731928319293193031931319323193331934319353193631937319383193931940319413194231943319443194531946319473194831949319503195131952319533195431955319563195731958319593196031961319623196331964319653196631967319683196931970319713197231973319743197531976319773197831979319803198131982319833198431985319863198731988319893199031991319923199331994319953199631997319983199932000320013200232003320043200532006320073200832009320103201132012320133201432015320163201732018320193202032021320223202332024320253202632027320283202932030320313203232033320343203532036320373203832039320403204132042320433204432045320463204732048320493205032051320523205332054320553205632057320583205932060320613206232063320643206532066320673206832069320703207132072320733207432075320763207732078320793208032081320823208332084320853208632087320883208932090320913209232093320943209532096320973209832099321003210132102321033210432105321063210732108321093211032111321123211332114321153211632117321183211932120321213212232123321243212532126321273212832129321303213132132321333213432135321363213732138321393214032141321423214332144321453214632147321483214932150321513215232153321543215532156321573215832159321603216132162321633216432165321663216732168321693217032171321723217332174321753217632177321783217932180321813218232183321843218532186321873218832189321903219132192321933219432195321963219732198321993220032201322023220332204322053220632207322083220932210322113221232213322143221532216322173221832219322203222132222322233222432225322263222732228322293223032231322323223332234322353223632237322383223932240322413224232243322443224532246322473224832249322503225132252322533225432255322563225732258322593226032261322623226332264322653226632267322683226932270322713227232273322743227532276322773227832279322803228132282322833228432285322863228732288322893229032291322923229332294322953229632297322983229932300323013230232303323043230532306323073230832309323103231132312323133231432315323163231732318323193232032321323223232332324323253232632327323283232932330323313233232333323343233532336323373233832339323403234132342323433234432345323463234732348323493235032351323523235332354323553235632357323583235932360323613236232363323643236532366323673236832369323703237132372323733237432375323763237732378323793238032381323823238332384323853238632387323883238932390323913239232393323943239532396323973239832399324003240132402324033240432405324063240732408324093241032411324123241332414324153241632417324183241932420324213242232423324243242532426324273242832429324303243132432324333243432435324363243732438324393244032441324423244332444324453244632447324483244932450324513245232453324543245532456324573245832459324603246132462324633246432465324663246732468324693247032471324723247332474324753247632477324783247932480324813248232483324843248532486324873248832489324903249132492324933249432495324963249732498324993250032501325023250332504325053250632507325083250932510325113251232513325143251532516325173251832519325203252132522325233252432525325263252732528325293253032531325323253332534325353253632537325383253932540325413254232543325443254532546325473254832549325503255132552325533255432555325563255732558325593256032561325623256332564325653256632567325683256932570325713257232573325743257532576325773257832579325803258132582325833258432585325863258732588325893259032591325923259332594325953259632597325983259932600326013260232603326043260532606326073260832609326103261132612326133261432615326163261732618326193262032621326223262332624326253262632627326283262932630326313263232633326343263532636326373263832639326403264132642326433264432645326463264732648326493265032651326523265332654326553265632657326583265932660326613266232663326643266532666326673266832669326703267132672326733267432675326763267732678326793268032681326823268332684326853268632687326883268932690326913269232693326943269532696326973269832699327003270132702327033270432705327063270732708327093271032711327123271332714327153271632717327183271932720327213272232723327243272532726327273272832729327303273132732327333273432735327363273732738327393274032741327423274332744327453274632747327483274932750327513275232753327543275532756327573275832759327603276132762327633276432765327663276732768327693277032771327723277332774327753277632777327783277932780327813278232783327843278532786327873278832789327903279132792327933279432795327963279732798327993280032801328023280332804328053280632807328083280932810328113281232813328143281532816328173281832819328203282132822328233282432825328263282732828328293283032831328323283332834328353283632837328383283932840328413284232843328443284532846328473284832849328503285132852328533285432855328563285732858328593286032861328623286332864328653286632867328683286932870328713287232873328743287532876328773287832879328803288132882328833288432885328863288732888328893289032891328923289332894328953289632897328983289932900329013290232903329043290532906329073290832909329103291132912329133291432915329163291732918329193292032921329223292332924329253292632927329283292932930329313293232933329343293532936329373293832939329403294132942329433294432945329463294732948329493295032951329523295332954329553295632957329583295932960329613296232963329643296532966329673296832969329703297132972329733297432975329763297732978329793298032981329823298332984329853298632987329883298932990329913299232993329943299532996329973299832999330003300133002330033300433005330063300733008330093301033011330123301333014330153301633017330183301933020330213302233023330243302533026330273302833029330303303133032330333303433035330363303733038330393304033041330423304333044330453304633047330483304933050330513305233053330543305533056330573305833059330603306133062330633306433065330663306733068330693307033071330723307333074330753307633077330783307933080330813308233083330843308533086330873308833089330903309133092330933309433095330963309733098330993310033101331023310333104331053310633107331083310933110331113311233113331143311533116331173311833119331203312133122331233312433125331263312733128331293313033131331323313333134331353313633137331383313933140331413314233143331443314533146331473314833149331503315133152331533315433155331563315733158331593316033161331623316333164331653316633167331683316933170331713317233173331743317533176331773317833179331803318133182331833318433185331863318733188331893319033191331923319333194331953319633197331983319933200332013320233203332043320533206332073320833209332103321133212332133321433215332163321733218332193322033221332223322333224332253322633227332283322933230332313323233233332343323533236332373323833239332403324133242332433324433245332463324733248332493325033251332523325333254332553325633257332583325933260332613326233263332643326533266332673326833269332703327133272332733327433275332763327733278332793328033281332823328333284332853328633287332883328933290332913329233293332943329533296332973329833299333003330133302333033330433305333063330733308333093331033311333123331333314333153331633317333183331933320333213332233323333243332533326333273332833329333303333133332333333333433335333363333733338333393334033341333423334333344333453334633347333483334933350333513335233353333543335533356333573335833359333603336133362333633336433365333663336733368333693337033371333723337333374333753337633377333783337933380333813338233383333843338533386333873338833389333903339133392333933339433395333963339733398333993340033401334023340333404334053340633407334083340933410334113341233413334143341533416334173341833419334203342133422334233342433425334263342733428334293343033431334323343333434334353343633437334383343933440334413344233443334443344533446334473344833449334503345133452334533345433455334563345733458334593346033461334623346333464334653346633467334683346933470334713347233473334743347533476334773347833479334803348133482334833348433485334863348733488334893349033491334923349333494334953349633497334983349933500335013350233503335043350533506335073350833509335103351133512335133351433515335163351733518335193352033521335223352333524335253352633527335283352933530335313353233533335343353533536335373353833539335403354133542335433354433545335463354733548335493355033551335523355333554335553355633557335583355933560335613356233563335643356533566335673356833569335703357133572335733357433575335763357733578335793358033581335823358333584335853358633587335883358933590335913359233593335943359533596335973359833599336003360133602336033360433605336063360733608336093361033611336123361333614336153361633617336183361933620336213362233623336243362533626336273362833629336303363133632336333363433635336363363733638336393364033641336423364333644336453364633647336483364933650336513365233653336543365533656336573365833659336603366133662336633366433665336663366733668336693367033671336723367333674336753367633677336783367933680336813368233683336843368533686336873368833689336903369133692336933369433695336963369733698336993370033701337023370333704337053370633707337083370933710337113371233713337143371533716337173371833719337203372133722337233372433725337263372733728337293373033731337323373333734337353373633737337383373933740337413374233743337443374533746337473374833749337503375133752337533375433755337563375733758337593376033761337623376333764337653376633767337683376933770337713377233773337743377533776337773377833779337803378133782337833378433785337863378733788337893379033791337923379333794337953379633797337983379933800338013380233803338043380533806338073380833809338103381133812338133381433815338163381733818338193382033821338223382333824338253382633827338283382933830338313383233833338343383533836338373383833839338403384133842338433384433845338463384733848338493385033851338523385333854338553385633857338583385933860338613386233863338643386533866338673386833869338703387133872338733387433875338763387733878338793388033881338823388333884338853388633887338883388933890338913389233893338943389533896338973389833899339003390133902339033390433905339063390733908339093391033911339123391333914339153391633917339183391933920339213392233923339243392533926339273392833929339303393133932339333393433935339363393733938339393394033941339423394333944339453394633947339483394933950339513395233953339543395533956339573395833959339603396133962339633396433965339663396733968339693397033971339723397333974339753397633977339783397933980339813398233983339843398533986339873398833989339903399133992339933399433995339963399733998339993400034001340023400334004340053400634007340083400934010340113401234013340143401534016340173401834019340203402134022340233402434025340263402734028340293403034031340323403334034340353403634037340383403934040340413404234043340443404534046340473404834049340503405134052340533405434055340563405734058340593406034061340623406334064340653406634067340683406934070340713407234073340743407534076340773407834079340803408134082340833408434085340863408734088340893409034091340923409334094340953409634097340983409934100341013410234103341043410534106341073410834109341103411134112341133411434115341163411734118341193412034121341223412334124341253412634127341283412934130341313413234133341343413534136341373413834139341403414134142341433414434145341463414734148341493415034151341523415334154341553415634157341583415934160341613416234163341643416534166341673416834169341703417134172341733417434175341763417734178341793418034181341823418334184341853418634187341883418934190341913419234193341943419534196341973419834199342003420134202342033420434205342063420734208342093421034211342123421334214342153421634217342183421934220342213422234223342243422534226342273422834229342303423134232342333423434235342363423734238342393424034241342423424334244342453424634247342483424934250342513425234253342543425534256342573425834259342603426134262342633426434265342663426734268342693427034271342723427334274342753427634277342783427934280342813428234283342843428534286342873428834289342903429134292342933429434295342963429734298342993430034301343023430334304343053430634307343083430934310343113431234313343143431534316343173431834319343203432134322343233432434325343263432734328343293433034331343323433334334343353433634337343383433934340343413434234343343443434534346343473434834349343503435134352343533435434355343563435734358343593436034361343623436334364343653436634367343683436934370343713437234373343743437534376343773437834379343803438134382343833438434385343863438734388343893439034391343923439334394343953439634397343983439934400344013440234403344043440534406344073440834409344103441134412344133441434415344163441734418344193442034421344223442334424344253442634427344283442934430344313443234433344343443534436344373443834439344403444134442344433444434445344463444734448344493445034451344523445334454344553445634457344583445934460344613446234463344643446534466344673446834469344703447134472344733447434475344763447734478344793448034481344823448334484344853448634487344883448934490344913449234493344943449534496344973449834499345003450134502345033450434505345063450734508345093451034511345123451334514345153451634517345183451934520345213452234523345243452534526345273452834529345303453134532345333453434535345363453734538345393454034541345423454334544345453454634547345483454934550345513455234553345543455534556345573455834559345603456134562345633456434565345663456734568345693457034571345723457334574345753457634577345783457934580345813458234583345843458534586345873458834589345903459134592345933459434595345963459734598345993460034601346023460334604346053460634607346083460934610346113461234613346143461534616346173461834619346203462134622346233462434625346263462734628346293463034631346323463334634346353463634637346383463934640346413464234643346443464534646346473464834649346503465134652346533465434655346563465734658346593466034661346623466334664346653466634667346683466934670346713467234673346743467534676346773467834679346803468134682346833468434685346863468734688346893469034691346923469334694346953469634697346983469934700347013470234703347043470534706347073470834709347103471134712347133471434715347163471734718347193472034721347223472334724347253472634727347283472934730347313473234733347343473534736347373473834739347403474134742347433474434745347463474734748347493475034751347523475334754347553475634757347583475934760347613476234763347643476534766347673476834769347703477134772347733477434775347763477734778347793478034781347823478334784347853478634787347883478934790347913479234793347943479534796347973479834799348003480134802348033480434805348063480734808348093481034811348123481334814348153481634817348183481934820348213482234823348243482534826348273482834829348303483134832348333483434835348363483734838348393484034841348423484334844348453484634847348483484934850348513485234853348543485534856348573485834859348603486134862348633486434865348663486734868348693487034871348723487334874348753487634877348783487934880348813488234883348843488534886348873488834889348903489134892348933489434895348963489734898348993490034901349023490334904349053490634907349083490934910349113491234913349143491534916349173491834919349203492134922349233492434925349263492734928349293493034931349323493334934349353493634937349383493934940349413494234943349443494534946349473494834949349503495134952349533495434955349563495734958349593496034961349623496334964349653496634967349683496934970349713497234973349743497534976349773497834979349803498134982349833498434985349863498734988349893499034991349923499334994349953499634997349983499935000350013500235003350043500535006350073500835009350103501135012350133501435015350163501735018350193502035021350223502335024350253502635027350283502935030350313503235033350343503535036350373503835039350403504135042350433504435045350463504735048350493505035051350523505335054350553505635057350583505935060350613506235063350643506535066350673506835069350703507135072350733507435075350763507735078350793508035081350823508335084350853508635087350883508935090350913509235093350943509535096350973509835099351003510135102351033510435105351063510735108351093511035111351123511335114351153511635117351183511935120351213512235123351243512535126351273512835129351303513135132351333513435135351363513735138351393514035141351423514335144351453514635147351483514935150351513515235153351543515535156351573515835159351603516135162351633516435165351663516735168351693517035171351723517335174351753517635177351783517935180351813518235183351843518535186351873518835189351903519135192351933519435195351963519735198351993520035201352023520335204352053520635207352083520935210352113521235213352143521535216352173521835219352203522135222352233522435225352263522735228352293523035231352323523335234352353523635237352383523935240352413524235243352443524535246352473524835249352503525135252352533525435255352563525735258352593526035261352623526335264352653526635267352683526935270352713527235273352743527535276352773527835279352803528135282352833528435285352863528735288352893529035291352923529335294352953529635297352983529935300353013530235303353043530535306353073530835309353103531135312353133531435315353163531735318353193532035321353223532335324353253532635327353283532935330353313533235333353343533535336353373533835339353403534135342353433534435345353463534735348353493535035351353523535335354353553535635357353583535935360353613536235363353643536535366353673536835369353703537135372353733537435375353763537735378353793538035381353823538335384353853538635387353883538935390353913539235393353943539535396353973539835399354003540135402354033540435405354063540735408354093541035411354123541335414354153541635417354183541935420354213542235423354243542535426354273542835429354303543135432354333543435435354363543735438354393544035441354423544335444354453544635447354483544935450354513545235453354543545535456354573545835459354603546135462354633546435465354663546735468354693547035471354723547335474354753547635477354783547935480354813548235483354843548535486354873548835489354903549135492354933549435495354963549735498354993550035501355023550335504355053550635507355083550935510355113551235513355143551535516355173551835519355203552135522355233552435525355263552735528355293553035531355323553335534355353553635537355383553935540355413554235543355443554535546355473554835549355503555135552355533555435555355563555735558355593556035561355623556335564355653556635567355683556935570355713557235573355743557535576355773557835579355803558135582355833558435585355863558735588355893559035591355923559335594355953559635597355983559935600356013560235603356043560535606356073560835609356103561135612356133561435615356163561735618356193562035621356223562335624356253562635627356283562935630356313563235633356343563535636356373563835639356403564135642356433564435645356463564735648356493565035651356523565335654356553565635657356583565935660356613566235663356643566535666356673566835669356703567135672356733567435675356763567735678356793568035681356823568335684356853568635687356883568935690356913569235693356943569535696356973569835699357003570135702357033570435705357063570735708357093571035711357123571335714357153571635717357183571935720357213572235723357243572535726357273572835729357303573135732357333573435735357363573735738357393574035741357423574335744357453574635747357483574935750357513575235753357543575535756357573575835759357603576135762357633576435765357663576735768357693577035771357723577335774357753577635777357783577935780357813578235783357843578535786357873578835789357903579135792357933579435795357963579735798357993580035801358023580335804358053580635807358083580935810358113581235813358143581535816358173581835819358203582135822358233582435825358263582735828358293583035831358323583335834358353583635837358383583935840358413584235843358443584535846358473584835849358503585135852358533585435855358563585735858358593586035861358623586335864358653586635867358683586935870358713587235873358743587535876358773587835879358803588135882358833588435885358863588735888358893589035891358923589335894358953589635897358983589935900359013590235903359043590535906359073590835909359103591135912359133591435915359163591735918359193592035921359223592335924359253592635927359283592935930359313593235933359343593535936359373593835939359403594135942359433594435945359463594735948359493595035951359523595335954359553595635957359583595935960359613596235963359643596535966359673596835969359703597135972359733597435975359763597735978359793598035981359823598335984359853598635987359883598935990359913599235993359943599535996359973599835999360003600136002360033600436005360063600736008360093601036011360123601336014360153601636017360183601936020360213602236023360243602536026360273602836029360303603136032360333603436035360363603736038360393604036041360423604336044360453604636047360483604936050360513605236053360543605536056360573605836059360603606136062360633606436065360663606736068360693607036071360723607336074360753607636077360783607936080360813608236083360843608536086360873608836089360903609136092360933609436095360963609736098360993610036101361023610336104361053610636107361083610936110361113611236113361143611536116361173611836119361203612136122361233612436125361263612736128361293613036131361323613336134361353613636137361383613936140361413614236143361443614536146361473614836149361503615136152361533615436155361563615736158361593616036161361623616336164361653616636167361683616936170361713617236173361743617536176361773617836179361803618136182361833618436185361863618736188361893619036191361923619336194361953619636197361983619936200362013620236203362043620536206362073620836209362103621136212362133621436215362163621736218362193622036221362223622336224362253622636227362283622936230362313623236233362343623536236362373623836239362403624136242362433624436245362463624736248362493625036251362523625336254362553625636257362583625936260362613626236263362643626536266362673626836269362703627136272362733627436275362763627736278362793628036281362823628336284362853628636287362883628936290362913629236293362943629536296362973629836299363003630136302363033630436305363063630736308363093631036311363123631336314363153631636317363183631936320363213632236323363243632536326363273632836329363303633136332363333633436335363363633736338363393634036341363423634336344363453634636347363483634936350363513635236353363543635536356363573635836359363603636136362363633636436365363663636736368363693637036371363723637336374363753637636377363783637936380363813638236383363843638536386363873638836389363903639136392363933639436395363963639736398363993640036401364023640336404364053640636407364083640936410364113641236413364143641536416364173641836419364203642136422364233642436425364263642736428364293643036431364323643336434364353643636437364383643936440364413644236443364443644536446364473644836449364503645136452364533645436455364563645736458364593646036461364623646336464364653646636467364683646936470364713647236473364743647536476364773647836479364803648136482364833648436485364863648736488364893649036491364923649336494364953649636497364983649936500365013650236503365043650536506365073650836509365103651136512365133651436515365163651736518365193652036521365223652336524365253652636527365283652936530365313653236533365343653536536365373653836539365403654136542365433654436545365463654736548365493655036551365523655336554365553655636557365583655936560365613656236563365643656536566365673656836569365703657136572365733657436575365763657736578365793658036581365823658336584365853658636587365883658936590365913659236593365943659536596365973659836599366003660136602366033660436605366063660736608366093661036611366123661336614366153661636617366183661936620366213662236623366243662536626366273662836629366303663136632366333663436635366363663736638366393664036641366423664336644366453664636647366483664936650366513665236653366543665536656366573665836659366603666136662366633666436665366663666736668366693667036671366723667336674366753667636677366783667936680366813668236683366843668536686366873668836689366903669136692366933669436695366963669736698366993670036701367023670336704367053670636707367083670936710367113671236713367143671536716367173671836719367203672136722367233672436725367263672736728367293673036731367323673336734367353673636737367383673936740367413674236743367443674536746367473674836749367503675136752367533675436755367563675736758367593676036761367623676336764367653676636767367683676936770367713677236773367743677536776367773677836779367803678136782367833678436785367863678736788367893679036791367923679336794367953679636797367983679936800368013680236803368043680536806368073680836809368103681136812368133681436815368163681736818368193682036821368223682336824368253682636827368283682936830368313683236833368343683536836368373683836839368403684136842368433684436845368463684736848368493685036851368523685336854368553685636857368583685936860368613686236863368643686536866368673686836869368703687136872368733687436875368763687736878368793688036881368823688336884368853688636887368883688936890368913689236893368943689536896368973689836899369003690136902369033690436905369063690736908369093691036911369123691336914369153691636917369183691936920369213692236923369243692536926369273692836929369303693136932369333693436935369363693736938369393694036941369423694336944369453694636947369483694936950369513695236953369543695536956369573695836959369603696136962369633696436965369663696736968369693697036971369723697336974369753697636977369783697936980369813698236983369843698536986369873698836989369903699136992369933699436995369963699736998369993700037001370023700337004370053700637007370083700937010370113701237013370143701537016370173701837019370203702137022370233702437025370263702737028370293703037031370323703337034370353703637037370383703937040370413704237043370443704537046370473704837049370503705137052370533705437055370563705737058370593706037061370623706337064370653706637067370683706937070370713707237073370743707537076370773707837079370803708137082370833708437085370863708737088370893709037091370923709337094370953709637097370983709937100371013710237103371043710537106371073710837109371103711137112371133711437115371163711737118371193712037121371223712337124371253712637127371283712937130371313713237133371343713537136371373713837139371403714137142371433714437145371463714737148371493715037151371523715337154371553715637157371583715937160371613716237163371643716537166371673716837169371703717137172371733717437175371763717737178371793718037181371823718337184371853718637187371883718937190371913719237193371943719537196371973719837199372003720137202372033720437205372063720737208372093721037211372123721337214372153721637217372183721937220372213722237223372243722537226372273722837229372303723137232372333723437235372363723737238372393724037241372423724337244372453724637247372483724937250372513725237253372543725537256372573725837259372603726137262372633726437265372663726737268372693727037271372723727337274372753727637277372783727937280372813728237283372843728537286372873728837289372903729137292372933729437295372963729737298372993730037301373023730337304373053730637307373083730937310373113731237313373143731537316373173731837319373203732137322373233732437325373263732737328373293733037331373323733337334373353733637337373383733937340373413734237343373443734537346373473734837349373503735137352373533735437355373563735737358373593736037361373623736337364373653736637367373683736937370373713737237373373743737537376373773737837379373803738137382373833738437385373863738737388373893739037391373923739337394373953739637397373983739937400374013740237403374043740537406374073740837409374103741137412374133741437415374163741737418374193742037421374223742337424374253742637427374283742937430374313743237433374343743537436374373743837439374403744137442374433744437445374463744737448374493745037451374523745337454374553745637457374583745937460374613746237463374643746537466374673746837469374703747137472374733747437475374763747737478374793748037481374823748337484374853748637487374883748937490374913749237493374943749537496374973749837499375003750137502375033750437505375063750737508375093751037511375123751337514375153751637517375183751937520375213752237523375243752537526375273752837529375303753137532375333753437535375363753737538375393754037541375423754337544375453754637547375483754937550375513755237553375543755537556375573755837559375603756137562375633756437565375663756737568375693757037571375723757337574375753757637577375783757937580375813758237583375843758537586375873758837589375903759137592375933759437595375963759737598375993760037601376023760337604376053760637607376083760937610376113761237613376143761537616376173761837619376203762137622376233762437625376263762737628376293763037631376323763337634376353763637637376383763937640376413764237643376443764537646376473764837649376503765137652376533765437655376563765737658376593766037661376623766337664376653766637667376683766937670376713767237673376743767537676376773767837679376803768137682376833768437685376863768737688376893769037691376923769337694376953769637697376983769937700377013770237703377043770537706377073770837709377103771137712377133771437715377163771737718377193772037721377223772337724377253772637727377283772937730377313773237733377343773537736377373773837739377403774137742377433774437745377463774737748377493775037751377523775337754377553775637757377583775937760377613776237763377643776537766377673776837769377703777137772377733777437775377763777737778377793778037781377823778337784377853778637787377883778937790377913779237793377943779537796377973779837799378003780137802378033780437805378063780737808378093781037811378123781337814378153781637817378183781937820378213782237823378243782537826378273782837829378303783137832378333783437835378363783737838378393784037841378423784337844378453784637847378483784937850378513785237853378543785537856378573785837859378603786137862378633786437865378663786737868378693787037871378723787337874378753787637877378783787937880378813788237883378843788537886378873788837889378903789137892378933789437895378963789737898378993790037901379023790337904379053790637907379083790937910379113791237913379143791537916379173791837919379203792137922379233792437925379263792737928379293793037931379323793337934379353793637937379383793937940379413794237943379443794537946379473794837949379503795137952379533795437955379563795737958379593796037961379623796337964379653796637967379683796937970379713797237973379743797537976379773797837979379803798137982379833798437985379863798737988379893799037991379923799337994379953799637997379983799938000380013800238003380043800538006380073800838009380103801138012380133801438015380163801738018380193802038021380223802338024380253802638027380283802938030380313803238033380343803538036380373803838039380403804138042380433804438045380463804738048380493805038051380523805338054380553805638057380583805938060380613806238063380643806538066380673806838069380703807138072380733807438075380763807738078380793808038081380823808338084380853808638087380883808938090380913809238093380943809538096380973809838099381003810138102381033810438105381063810738108381093811038111381123811338114381153811638117381183811938120381213812238123381243812538126381273812838129381303813138132381333813438135381363813738138381393814038141381423814338144381453814638147381483814938150381513815238153381543815538156381573815838159381603816138162381633816438165381663816738168381693817038171381723817338174381753817638177381783817938180381813818238183381843818538186381873818838189381903819138192381933819438195381963819738198381993820038201382023820338204382053820638207382083820938210382113821238213382143821538216382173821838219382203822138222382233822438225382263822738228382293823038231382323823338234382353823638237382383823938240382413824238243382443824538246382473824838249382503825138252382533825438255382563825738258382593826038261382623826338264382653826638267382683826938270382713827238273382743827538276382773827838279382803828138282382833828438285382863828738288382893829038291382923829338294382953829638297382983829938300383013830238303383043830538306383073830838309383103831138312383133831438315383163831738318383193832038321383223832338324383253832638327383283832938330383313833238333383343833538336383373833838339383403834138342383433834438345383463834738348383493835038351383523835338354383553835638357383583835938360383613836238363383643836538366383673836838369383703837138372383733837438375383763837738378383793838038381383823838338384383853838638387383883838938390383913839238393383943839538396383973839838399384003840138402384033840438405384063840738408384093841038411384123841338414384153841638417384183841938420384213842238423384243842538426384273842838429384303843138432384333843438435384363843738438384393844038441384423844338444384453844638447384483844938450384513845238453384543845538456384573845838459384603846138462384633846438465384663846738468384693847038471384723847338474384753847638477384783847938480384813848238483384843848538486384873848838489384903849138492384933849438495384963849738498384993850038501385023850338504385053850638507385083850938510385113851238513385143851538516385173851838519385203852138522385233852438525385263852738528385293853038531385323853338534385353853638537385383853938540385413854238543385443854538546385473854838549385503855138552385533855438555385563855738558385593856038561385623856338564385653856638567385683856938570385713857238573385743857538576385773857838579385803858138582385833858438585385863858738588385893859038591385923859338594385953859638597385983859938600386013860238603386043860538606386073860838609386103861138612386133861438615386163861738618386193862038621386223862338624386253862638627386283862938630386313863238633386343863538636386373863838639386403864138642386433864438645386463864738648386493865038651386523865338654386553865638657386583865938660386613866238663386643866538666386673866838669386703867138672386733867438675386763867738678386793868038681386823868338684386853868638687386883868938690386913869238693386943869538696386973869838699387003870138702387033870438705387063870738708387093871038711387123871338714387153871638717387183871938720387213872238723387243872538726387273872838729387303873138732387333873438735387363873738738387393874038741387423874338744387453874638747387483874938750387513875238753387543875538756387573875838759387603876138762387633876438765387663876738768387693877038771387723877338774387753877638777387783877938780387813878238783387843878538786387873878838789387903879138792387933879438795387963879738798387993880038801388023880338804388053880638807388083880938810388113881238813388143881538816388173881838819388203882138822388233882438825388263882738828388293883038831388323883338834388353883638837388383883938840388413884238843388443884538846388473884838849388503885138852388533885438855388563885738858388593886038861388623886338864388653886638867388683886938870388713887238873388743887538876388773887838879388803888138882388833888438885388863888738888388893889038891388923889338894388953889638897388983889938900389013890238903389043890538906389073890838909389103891138912389133891438915389163891738918389193892038921389223892338924389253892638927389283892938930389313893238933389343893538936389373893838939389403894138942389433894438945389463894738948389493895038951389523895338954389553895638957389583895938960389613896238963389643896538966389673896838969389703897138972389733897438975389763897738978389793898038981389823898338984389853898638987389883898938990389913899238993389943899538996389973899838999390003900139002390033900439005390063900739008390093901039011390123901339014390153901639017390183901939020390213902239023390243902539026390273902839029390303903139032390333903439035390363903739038390393904039041390423904339044390453904639047390483904939050390513905239053390543905539056390573905839059390603906139062390633906439065390663906739068390693907039071390723907339074390753907639077390783907939080390813908239083390843908539086390873908839089390903909139092390933909439095390963909739098390993910039101391023910339104391053910639107391083910939110391113911239113391143911539116391173911839119391203912139122391233912439125391263912739128391293913039131391323913339134391353913639137391383913939140391413914239143391443914539146391473914839149391503915139152391533915439155391563915739158391593916039161391623916339164391653916639167391683916939170391713917239173391743917539176391773917839179391803918139182391833918439185391863918739188391893919039191391923919339194391953919639197391983919939200392013920239203392043920539206392073920839209392103921139212392133921439215392163921739218392193922039221392223922339224392253922639227392283922939230392313923239233392343923539236392373923839239392403924139242392433924439245392463924739248392493925039251392523925339254392553925639257392583925939260392613926239263392643926539266392673926839269392703927139272392733927439275392763927739278392793928039281392823928339284392853928639287392883928939290392913929239293392943929539296392973929839299393003930139302393033930439305393063930739308393093931039311393123931339314393153931639317393183931939320393213932239323393243932539326393273932839329393303933139332393333933439335393363933739338393393934039341393423934339344393453934639347393483934939350393513935239353393543935539356393573935839359393603936139362393633936439365393663936739368393693937039371393723937339374393753937639377393783937939380393813938239383393843938539386393873938839389393903939139392393933939439395393963939739398393993940039401394023940339404394053940639407394083940939410394113941239413394143941539416394173941839419394203942139422394233942439425394263942739428394293943039431394323943339434394353943639437394383943939440394413944239443394443944539446394473944839449394503945139452394533945439455394563945739458394593946039461394623946339464394653946639467394683946939470394713947239473394743947539476394773947839479394803948139482394833948439485394863948739488394893949039491394923949339494394953949639497394983949939500395013950239503395043950539506395073950839509395103951139512395133951439515395163951739518395193952039521395223952339524395253952639527395283952939530395313953239533395343953539536395373953839539395403954139542395433954439545395463954739548395493955039551395523955339554395553955639557395583955939560395613956239563395643956539566395673956839569395703957139572395733957439575395763957739578395793958039581395823958339584395853958639587395883958939590395913959239593395943959539596395973959839599396003960139602396033960439605396063960739608396093961039611396123961339614396153961639617396183961939620396213962239623396243962539626396273962839629396303963139632396333963439635396363963739638396393964039641396423964339644396453964639647396483964939650396513965239653396543965539656396573965839659396603966139662396633966439665396663966739668396693967039671396723967339674396753967639677396783967939680396813968239683396843968539686396873968839689396903969139692396933969439695396963969739698396993970039701397023970339704397053970639707397083970939710397113971239713397143971539716397173971839719397203972139722397233972439725397263972739728397293973039731397323973339734397353973639737397383973939740397413974239743397443974539746397473974839749397503975139752397533975439755397563975739758397593976039761397623976339764397653976639767397683976939770397713977239773397743977539776397773977839779397803978139782397833978439785397863978739788397893979039791397923979339794397953979639797397983979939800398013980239803398043980539806398073980839809398103981139812398133981439815398163981739818398193982039821398223982339824398253982639827398283982939830398313983239833398343983539836398373983839839398403984139842398433984439845398463984739848398493985039851398523985339854398553985639857398583985939860398613986239863398643986539866398673986839869398703987139872398733987439875398763987739878398793988039881398823988339884398853988639887398883988939890398913989239893398943989539896398973989839899399003990139902399033990439905399063990739908399093991039911399123991339914399153991639917399183991939920399213992239923399243992539926399273992839929399303993139932399333993439935399363993739938399393994039941399423994339944399453994639947399483994939950399513995239953399543995539956399573995839959399603996139962399633996439965399663996739968399693997039971399723997339974399753997639977399783997939980399813998239983399843998539986399873998839989399903999139992399933999439995399963999739998399994000040001400024000340004400054000640007400084000940010400114001240013400144001540016400174001840019400204002140022400234002440025400264002740028400294003040031400324003340034400354003640037400384003940040400414004240043400444004540046400474004840049400504005140052400534005440055400564005740058400594006040061400624006340064400654006640067400684006940070400714007240073400744007540076400774007840079400804008140082400834008440085400864008740088400894009040091400924009340094400954009640097400984009940100401014010240103401044010540106401074010840109401104011140112401134011440115401164011740118401194012040121401224012340124401254012640127401284012940130401314013240133401344013540136401374013840139401404014140142401434014440145401464014740148401494015040151401524015340154401554015640157401584015940160401614016240163401644016540166401674016840169401704017140172401734017440175401764017740178401794018040181401824018340184401854018640187401884018940190401914019240193401944019540196401974019840199402004020140202402034020440205402064020740208402094021040211402124021340214402154021640217402184021940220402214022240223402244022540226402274022840229402304023140232402334023440235402364023740238402394024040241402424024340244402454024640247402484024940250402514025240253402544025540256402574025840259402604026140262402634026440265402664026740268402694027040271402724027340274402754027640277402784027940280402814028240283402844028540286402874028840289402904029140292402934029440295402964029740298402994030040301403024030340304403054030640307403084030940310403114031240313403144031540316403174031840319403204032140322403234032440325403264032740328403294033040331403324033340334403354033640337403384033940340403414034240343403444034540346403474034840349403504035140352403534035440355403564035740358403594036040361403624036340364403654036640367403684036940370403714037240373403744037540376403774037840379403804038140382403834038440385403864038740388403894039040391403924039340394403954039640397403984039940400404014040240403404044040540406404074040840409404104041140412404134041440415404164041740418404194042040421404224042340424404254042640427404284042940430404314043240433404344043540436404374043840439404404044140442404434044440445404464044740448404494045040451404524045340454404554045640457404584045940460404614046240463404644046540466404674046840469404704047140472404734047440475404764047740478404794048040481404824048340484404854048640487404884048940490404914049240493404944049540496404974049840499405004050140502405034050440505405064050740508405094051040511405124051340514405154051640517405184051940520405214052240523405244052540526405274052840529405304053140532405334053440535405364053740538405394054040541405424054340544405454054640547405484054940550405514055240553405544055540556405574055840559405604056140562405634056440565405664056740568405694057040571405724057340574405754057640577405784057940580405814058240583405844058540586405874058840589405904059140592405934059440595405964059740598405994060040601406024060340604406054060640607406084060940610406114061240613406144061540616406174061840619406204062140622406234062440625406264062740628406294063040631406324063340634406354063640637406384063940640406414064240643406444064540646406474064840649406504065140652406534065440655406564065740658406594066040661406624066340664406654066640667406684066940670406714067240673406744067540676406774067840679406804068140682406834068440685406864068740688406894069040691406924069340694406954069640697406984069940700407014070240703407044070540706407074070840709407104071140712407134071440715407164071740718407194072040721407224072340724407254072640727407284072940730407314073240733407344073540736407374073840739407404074140742407434074440745407464074740748407494075040751407524075340754407554075640757407584075940760407614076240763407644076540766407674076840769407704077140772407734077440775407764077740778407794078040781407824078340784407854078640787407884078940790407914079240793407944079540796407974079840799408004080140802408034080440805408064080740808408094081040811408124081340814408154081640817408184081940820408214082240823408244082540826408274082840829408304083140832408334083440835408364083740838408394084040841408424084340844408454084640847408484084940850408514085240853408544085540856408574085840859408604086140862408634086440865408664086740868408694087040871408724087340874408754087640877408784087940880408814088240883408844088540886408874088840889408904089140892408934089440895408964089740898408994090040901409024090340904409054090640907409084090940910409114091240913409144091540916409174091840919409204092140922409234092440925409264092740928409294093040931409324093340934409354093640937409384093940940409414094240943409444094540946409474094840949409504095140952409534095440955409564095740958409594096040961409624096340964409654096640967409684096940970409714097240973409744097540976409774097840979409804098140982409834098440985409864098740988409894099040991409924099340994409954099640997409984099941000410014100241003410044100541006410074100841009410104101141012410134101441015410164101741018410194102041021410224102341024410254102641027410284102941030410314103241033410344103541036410374103841039410404104141042410434104441045410464104741048410494105041051410524105341054410554105641057410584105941060410614106241063410644106541066410674106841069410704107141072410734107441075410764107741078410794108041081410824108341084410854108641087410884108941090410914109241093410944109541096410974109841099411004110141102411034110441105411064110741108411094111041111411124111341114411154111641117411184111941120411214112241123411244112541126411274112841129411304113141132411334113441135411364113741138411394114041141411424114341144411454114641147411484114941150411514115241153411544115541156411574115841159411604116141162411634116441165411664116741168411694117041171411724117341174411754117641177411784117941180411814118241183411844118541186411874118841189411904119141192411934119441195411964119741198411994120041201412024120341204412054120641207412084120941210412114121241213412144121541216412174121841219412204122141222412234122441225412264122741228412294123041231412324123341234412354123641237412384123941240412414124241243412444124541246412474124841249412504125141252412534125441255412564125741258412594126041261412624126341264412654126641267412684126941270412714127241273412744127541276412774127841279412804128141282412834128441285412864128741288412894129041291412924129341294412954129641297412984129941300413014130241303413044130541306413074130841309413104131141312413134131441315413164131741318413194132041321413224132341324413254132641327413284132941330413314133241333413344133541336413374133841339413404134141342413434134441345413464134741348413494135041351413524135341354413554135641357413584135941360413614136241363413644136541366413674136841369413704137141372413734137441375413764137741378413794138041381413824138341384413854138641387413884138941390413914139241393413944139541396413974139841399414004140141402414034140441405414064140741408414094141041411414124141341414414154141641417414184141941420414214142241423414244142541426414274142841429414304143141432414334143441435414364143741438414394144041441414424144341444414454144641447414484144941450414514145241453414544145541456414574145841459414604146141462414634146441465414664146741468414694147041471414724147341474414754147641477414784147941480414814148241483414844148541486414874148841489414904149141492414934149441495414964149741498414994150041501415024150341504415054150641507415084150941510415114151241513415144151541516415174151841519415204152141522415234152441525415264152741528415294153041531415324153341534415354153641537415384153941540415414154241543415444154541546415474154841549415504155141552415534155441555415564155741558415594156041561415624156341564415654156641567415684156941570415714157241573415744157541576415774157841579415804158141582415834158441585415864158741588415894159041591415924159341594415954159641597415984159941600416014160241603416044160541606416074160841609416104161141612416134161441615416164161741618416194162041621416224162341624416254162641627416284162941630416314163241633416344163541636416374163841639416404164141642416434164441645416464164741648416494165041651416524165341654416554165641657416584165941660416614166241663416644166541666416674166841669416704167141672416734167441675416764167741678416794168041681416824168341684416854168641687416884168941690416914169241693416944169541696416974169841699417004170141702417034170441705417064170741708417094171041711417124171341714417154171641717417184171941720417214172241723417244172541726417274172841729417304173141732417334173441735417364173741738417394174041741417424174341744417454174641747417484174941750417514175241753417544175541756417574175841759417604176141762417634176441765417664176741768417694177041771417724177341774417754177641777417784177941780417814178241783417844178541786417874178841789417904179141792417934179441795417964179741798417994180041801418024180341804418054180641807418084180941810418114181241813418144181541816418174181841819418204182141822418234182441825418264182741828418294183041831418324183341834418354183641837418384183941840418414184241843418444184541846418474184841849418504185141852418534185441855418564185741858418594186041861418624186341864418654186641867418684186941870418714187241873418744187541876418774187841879418804188141882418834188441885418864188741888418894189041891418924189341894418954189641897418984189941900419014190241903419044190541906419074190841909419104191141912419134191441915419164191741918419194192041921419224192341924419254192641927419284192941930419314193241933419344193541936419374193841939419404194141942419434194441945419464194741948419494195041951419524195341954419554195641957419584195941960419614196241963419644196541966419674196841969419704197141972419734197441975419764197741978419794198041981419824198341984419854198641987419884198941990419914199241993419944199541996419974199841999420004200142002420034200442005420064200742008420094201042011420124201342014420154201642017420184201942020420214202242023420244202542026420274202842029420304203142032420334203442035420364203742038420394204042041420424204342044420454204642047420484204942050420514205242053420544205542056420574205842059420604206142062420634206442065420664206742068420694207042071420724207342074420754207642077420784207942080420814208242083420844208542086420874208842089420904209142092420934209442095420964209742098420994210042101421024210342104421054210642107421084210942110421114211242113421144211542116421174211842119421204212142122421234212442125421264212742128421294213042131421324213342134421354213642137421384213942140421414214242143421444214542146421474214842149421504215142152421534215442155421564215742158421594216042161421624216342164421654216642167421684216942170421714217242173421744217542176421774217842179421804218142182421834218442185421864218742188421894219042191421924219342194421954219642197421984219942200422014220242203422044220542206422074220842209422104221142212422134221442215422164221742218422194222042221422224222342224422254222642227422284222942230422314223242233422344223542236422374223842239422404224142242422434224442245422464224742248422494225042251422524225342254422554225642257422584225942260422614226242263422644226542266422674226842269422704227142272422734227442275422764227742278422794228042281422824228342284422854228642287422884228942290422914229242293422944229542296422974229842299423004230142302423034230442305423064230742308423094231042311423124231342314423154231642317423184231942320423214232242323423244232542326423274232842329423304233142332423334233442335423364233742338423394234042341423424234342344423454234642347423484234942350423514235242353423544235542356423574235842359423604236142362423634236442365423664236742368423694237042371423724237342374423754237642377423784237942380423814238242383423844238542386423874238842389423904239142392423934239442395423964239742398423994240042401424024240342404424054240642407424084240942410424114241242413424144241542416424174241842419424204242142422424234242442425424264242742428424294243042431424324243342434424354243642437424384243942440424414244242443424444244542446424474244842449424504245142452424534245442455424564245742458424594246042461424624246342464424654246642467424684246942470424714247242473424744247542476424774247842479424804248142482424834248442485424864248742488424894249042491424924249342494424954249642497424984249942500425014250242503425044250542506425074250842509425104251142512425134251442515425164251742518425194252042521425224252342524425254252642527425284252942530425314253242533425344253542536425374253842539425404254142542425434254442545425464254742548425494255042551425524255342554425554255642557425584255942560425614256242563425644256542566425674256842569425704257142572425734257442575425764257742578425794258042581425824258342584425854258642587425884258942590425914259242593425944259542596425974259842599426004260142602426034260442605426064260742608426094261042611426124261342614426154261642617426184261942620426214262242623426244262542626426274262842629426304263142632426334263442635426364263742638426394264042641426424264342644426454264642647426484264942650426514265242653426544265542656426574265842659426604266142662426634266442665426664266742668426694267042671426724267342674426754267642677426784267942680426814268242683426844268542686426874268842689426904269142692426934269442695426964269742698426994270042701427024270342704427054270642707427084270942710427114271242713427144271542716427174271842719427204272142722427234272442725427264272742728427294273042731427324273342734427354273642737427384273942740427414274242743427444274542746427474274842749427504275142752427534275442755427564275742758427594276042761427624276342764427654276642767427684276942770427714277242773427744277542776427774277842779427804278142782427834278442785427864278742788427894279042791427924279342794427954279642797427984279942800428014280242803428044280542806428074280842809428104281142812428134281442815428164281742818428194282042821428224282342824428254282642827428284282942830428314283242833428344283542836428374283842839428404284142842428434284442845428464284742848428494285042851428524285342854428554285642857428584285942860428614286242863428644286542866428674286842869428704287142872428734287442875428764287742878428794288042881428824288342884428854288642887428884288942890428914289242893428944289542896428974289842899429004290142902429034290442905429064290742908429094291042911429124291342914429154291642917429184291942920429214292242923429244292542926429274292842929429304293142932429334293442935429364293742938429394294042941429424294342944429454294642947429484294942950429514295242953429544295542956429574295842959429604296142962429634296442965429664296742968429694297042971429724297342974429754297642977429784297942980429814298242983429844298542986429874298842989429904299142992429934299442995429964299742998429994300043001430024300343004430054300643007430084300943010430114301243013430144301543016430174301843019430204302143022430234302443025430264302743028430294303043031430324303343034430354303643037430384303943040430414304243043430444304543046430474304843049430504305143052430534305443055430564305743058430594306043061430624306343064430654306643067430684306943070430714307243073430744307543076430774307843079430804308143082430834308443085430864308743088430894309043091430924309343094430954309643097430984309943100431014310243103431044310543106431074310843109431104311143112431134311443115431164311743118431194312043121431224312343124431254312643127431284312943130431314313243133431344313543136431374313843139431404314143142431434314443145431464314743148431494315043151431524315343154431554315643157431584315943160431614316243163431644316543166431674316843169431704317143172431734317443175431764317743178431794318043181431824318343184431854318643187431884318943190431914319243193431944319543196431974319843199432004320143202432034320443205432064320743208432094321043211432124321343214432154321643217432184321943220432214322243223432244322543226432274322843229432304323143232432334323443235432364323743238432394324043241432424324343244432454324643247432484324943250432514325243253432544325543256432574325843259432604326143262432634326443265432664326743268432694327043271432724327343274432754327643277432784327943280432814328243283432844328543286432874328843289432904329143292432934329443295432964329743298432994330043301433024330343304433054330643307433084330943310433114331243313433144331543316433174331843319433204332143322433234332443325433264332743328433294333043331433324333343334433354333643337433384333943340433414334243343433444334543346433474334843349433504335143352433534335443355433564335743358433594336043361433624336343364433654336643367433684336943370433714337243373433744337543376433774337843379433804338143382433834338443385433864338743388433894339043391433924339343394433954339643397433984339943400434014340243403434044340543406434074340843409434104341143412434134341443415434164341743418434194342043421434224342343424434254342643427434284342943430434314343243433434344343543436434374343843439434404344143442434434344443445434464344743448434494345043451434524345343454434554345643457434584345943460434614346243463434644346543466434674346843469434704347143472434734347443475434764347743478434794348043481434824348343484434854348643487434884348943490434914349243493434944349543496434974349843499435004350143502435034350443505435064350743508435094351043511435124351343514435154351643517435184351943520435214352243523435244352543526435274352843529435304353143532435334353443535435364353743538435394354043541435424354343544435454354643547435484354943550435514355243553435544355543556435574355843559435604356143562435634356443565435664356743568435694357043571435724357343574435754357643577435784357943580435814358243583435844358543586435874358843589435904359143592435934359443595435964359743598435994360043601436024360343604436054360643607436084360943610436114361243613436144361543616436174361843619436204362143622436234362443625436264362743628436294363043631436324363343634436354363643637436384363943640436414364243643436444364543646436474364843649436504365143652436534365443655436564365743658436594366043661436624366343664436654366643667436684366943670436714367243673436744367543676436774367843679436804368143682436834368443685436864368743688436894369043691436924369343694436954369643697436984369943700437014370243703437044370543706437074370843709437104371143712437134371443715437164371743718437194372043721437224372343724437254372643727437284372943730437314373243733437344373543736437374373843739437404374143742437434374443745437464374743748437494375043751437524375343754437554375643757437584375943760437614376243763437644376543766437674376843769437704377143772437734377443775437764377743778437794378043781437824378343784437854378643787437884378943790437914379243793437944379543796437974379843799438004380143802438034380443805438064380743808438094381043811438124381343814438154381643817438184381943820438214382243823438244382543826438274382843829438304383143832438334383443835438364383743838438394384043841438424384343844438454384643847438484384943850438514385243853438544385543856438574385843859438604386143862438634386443865438664386743868438694387043871438724387343874438754387643877438784387943880438814388243883438844388543886438874388843889438904389143892438934389443895438964389743898438994390043901439024390343904439054390643907439084390943910439114391243913439144391543916439174391843919439204392143922439234392443925439264392743928439294393043931439324393343934439354393643937439384393943940439414394243943439444394543946439474394843949439504395143952439534395443955439564395743958439594396043961439624396343964439654396643967439684396943970439714397243973439744397543976439774397843979439804398143982439834398443985439864398743988439894399043991439924399343994439954399643997439984399944000440014400244003440044400544006440074400844009440104401144012440134401444015440164401744018440194402044021440224402344024440254402644027440284402944030440314403244033440344403544036440374403844039440404404144042440434404444045440464404744048440494405044051440524405344054440554405644057440584405944060440614406244063440644406544066440674406844069440704407144072440734407444075440764407744078440794408044081440824408344084440854408644087440884408944090440914409244093440944409544096440974409844099441004410144102441034410444105441064410744108441094411044111441124411344114441154411644117441184411944120441214412244123441244412544126441274412844129441304413144132441334413444135441364413744138441394414044141441424414344144441454414644147441484414944150441514415244153441544415544156441574415844159441604416144162441634416444165441664416744168441694417044171441724417344174441754417644177441784417944180441814418244183441844418544186441874418844189441904419144192441934419444195441964419744198441994420044201442024420344204442054420644207442084420944210442114421244213442144421544216442174421844219442204422144222442234422444225442264422744228442294423044231442324423344234442354423644237442384423944240442414424244243442444424544246442474424844249442504425144252442534425444255442564425744258442594426044261442624426344264442654426644267442684426944270442714427244273442744427544276442774427844279442804428144282442834428444285442864428744288442894429044291442924429344294442954429644297442984429944300443014430244303443044430544306443074430844309443104431144312443134431444315443164431744318443194432044321443224432344324443254432644327443284432944330443314433244333443344433544336443374433844339443404434144342443434434444345443464434744348443494435044351443524435344354443554435644357443584435944360443614436244363443644436544366443674436844369443704437144372443734437444375443764437744378443794438044381443824438344384443854438644387443884438944390443914439244393443944439544396443974439844399444004440144402444034440444405444064440744408444094441044411444124441344414444154441644417444184441944420444214442244423444244442544426444274442844429444304443144432444334443444435444364443744438444394444044441444424444344444444454444644447444484444944450444514445244453444544445544456444574445844459444604446144462444634446444465444664446744468444694447044471444724447344474444754447644477444784447944480444814448244483444844448544486444874448844489444904449144492444934449444495444964449744498444994450044501445024450344504445054450644507445084450944510445114451244513445144451544516445174451844519445204452144522445234452444525445264452744528445294453044531445324453344534445354453644537445384453944540445414454244543445444454544546445474454844549445504455144552445534455444555445564455744558445594456044561445624456344564445654456644567445684456944570445714457244573445744457544576445774457844579445804458144582445834458444585445864458744588445894459044591445924459344594445954459644597445984459944600446014460244603446044460544606446074460844609446104461144612446134461444615446164461744618446194462044621446224462344624446254462644627446284462944630446314463244633446344463544636446374463844639446404464144642446434464444645446464464744648446494465044651446524465344654446554465644657446584465944660446614466244663446644466544666446674466844669446704467144672446734467444675446764467744678446794468044681446824468344684446854468644687446884468944690446914469244693446944469544696446974469844699447004470144702447034470444705447064470744708447094471044711447124471344714447154471644717447184471944720447214472244723447244472544726447274472844729447304473144732447334473444735447364473744738447394474044741447424474344744447454474644747447484474944750447514475244753447544475544756447574475844759447604476144762447634476444765447664476744768447694477044771447724477344774447754477644777447784477944780447814478244783447844478544786447874478844789447904479144792447934479444795447964479744798447994480044801448024480344804448054480644807448084480944810448114481244813448144481544816448174481844819448204482144822448234482444825448264482744828448294483044831448324483344834448354483644837448384483944840448414484244843448444484544846448474484844849448504485144852448534485444855448564485744858448594486044861448624486344864448654486644867448684486944870448714487244873448744487544876448774487844879448804488144882448834488444885448864488744888448894489044891448924489344894448954489644897448984489944900449014490244903449044490544906449074490844909449104491144912449134491444915449164491744918449194492044921449224492344924449254492644927449284492944930449314493244933449344493544936449374493844939449404494144942449434494444945449464494744948449494495044951449524495344954449554495644957449584495944960449614496244963449644496544966449674496844969449704497144972449734497444975449764497744978449794498044981449824498344984449854498644987449884498944990449914499244993449944499544996449974499844999450004500145002450034500445005450064500745008450094501045011450124501345014450154501645017450184501945020450214502245023450244502545026450274502845029450304503145032450334503445035450364503745038450394504045041450424504345044450454504645047450484504945050450514505245053450544505545056450574505845059450604506145062450634506445065450664506745068450694507045071450724507345074450754507645077450784507945080450814508245083450844508545086450874508845089450904509145092450934509445095450964509745098450994510045101451024510345104451054510645107451084510945110451114511245113451144511545116451174511845119451204512145122451234512445125451264512745128451294513045131451324513345134451354513645137451384513945140451414514245143451444514545146451474514845149451504515145152451534515445155451564515745158451594516045161451624516345164451654516645167451684516945170451714517245173451744517545176451774517845179451804518145182451834518445185451864518745188451894519045191451924519345194451954519645197451984519945200452014520245203452044520545206452074520845209452104521145212452134521445215452164521745218452194522045221452224522345224452254522645227452284522945230452314523245233452344523545236452374523845239452404524145242452434524445245452464524745248452494525045251452524525345254452554525645257452584525945260452614526245263452644526545266452674526845269452704527145272452734527445275452764527745278452794528045281452824528345284452854528645287452884528945290452914529245293452944529545296452974529845299453004530145302453034530445305453064530745308453094531045311453124531345314453154531645317453184531945320453214532245323453244532545326453274532845329453304533145332453334533445335453364533745338453394534045341453424534345344453454534645347453484534945350453514535245353453544535545356453574535845359453604536145362453634536445365453664536745368453694537045371453724537345374453754537645377453784537945380453814538245383453844538545386453874538845389453904539145392453934539445395453964539745398453994540045401454024540345404454054540645407454084540945410454114541245413454144541545416454174541845419454204542145422454234542445425454264542745428454294543045431454324543345434454354543645437454384543945440454414544245443454444544545446454474544845449454504545145452454534545445455454564545745458454594546045461454624546345464454654546645467454684546945470454714547245473454744547545476454774547845479454804548145482454834548445485454864548745488454894549045491454924549345494454954549645497454984549945500455014550245503455044550545506455074550845509455104551145512455134551445515455164551745518455194552045521455224552345524455254552645527455284552945530455314553245533455344553545536455374553845539455404554145542455434554445545455464554745548455494555045551455524555345554455554555645557455584555945560455614556245563455644556545566455674556845569455704557145572455734557445575455764557745578455794558045581455824558345584455854558645587455884558945590455914559245593455944559545596455974559845599456004560145602456034560445605456064560745608456094561045611456124561345614456154561645617456184561945620456214562245623456244562545626456274562845629456304563145632456334563445635456364563745638456394564045641456424564345644456454564645647456484564945650456514565245653456544565545656456574565845659456604566145662456634566445665456664566745668456694567045671456724567345674456754567645677456784567945680456814568245683456844568545686456874568845689456904569145692456934569445695456964569745698456994570045701457024570345704457054570645707457084570945710457114571245713457144571545716457174571845719457204572145722457234572445725457264572745728457294573045731457324573345734457354573645737457384573945740457414574245743457444574545746457474574845749457504575145752457534575445755457564575745758457594576045761457624576345764457654576645767457684576945770457714577245773457744577545776457774577845779457804578145782457834578445785457864578745788457894579045791457924579345794457954579645797457984579945800458014580245803458044580545806458074580845809458104581145812458134581445815458164581745818458194582045821458224582345824458254582645827458284582945830458314583245833458344583545836458374583845839458404584145842458434584445845458464584745848458494585045851458524585345854458554585645857458584585945860458614586245863458644586545866458674586845869458704587145872458734587445875458764587745878458794588045881458824588345884458854588645887458884588945890458914589245893458944589545896458974589845899459004590145902459034590445905459064590745908459094591045911459124591345914459154591645917459184591945920459214592245923459244592545926459274592845929459304593145932459334593445935459364593745938459394594045941459424594345944459454594645947459484594945950459514595245953459544595545956459574595845959459604596145962459634596445965459664596745968459694597045971459724597345974459754597645977459784597945980459814598245983459844598545986459874598845989459904599145992459934599445995459964599745998459994600046001460024600346004460054600646007460084600946010460114601246013460144601546016460174601846019460204602146022460234602446025460264602746028460294603046031460324603346034460354603646037460384603946040460414604246043460444604546046460474604846049460504605146052460534605446055460564605746058460594606046061460624606346064460654606646067460684606946070460714607246073460744607546076460774607846079460804608146082460834608446085460864608746088460894609046091460924609346094460954609646097460984609946100461014610246103461044610546106461074610846109461104611146112461134611446115461164611746118461194612046121461224612346124461254612646127461284612946130461314613246133461344613546136461374613846139461404614146142461434614446145461464614746148461494615046151461524615346154461554615646157461584615946160461614616246163461644616546166461674616846169461704617146172461734617446175461764617746178461794618046181461824618346184461854618646187461884618946190461914619246193461944619546196461974619846199462004620146202462034620446205462064620746208462094621046211462124621346214462154621646217462184621946220462214622246223462244622546226462274622846229462304623146232462334623446235462364623746238462394624046241462424624346244462454624646247462484624946250462514625246253462544625546256462574625846259462604626146262462634626446265462664626746268462694627046271462724627346274462754627646277462784627946280462814628246283462844628546286462874628846289462904629146292462934629446295462964629746298462994630046301463024630346304463054630646307463084630946310463114631246313463144631546316463174631846319463204632146322463234632446325463264632746328463294633046331463324633346334463354633646337463384633946340463414634246343463444634546346463474634846349463504635146352463534635446355463564635746358463594636046361463624636346364463654636646367463684636946370463714637246373463744637546376463774637846379463804638146382463834638446385463864638746388463894639046391463924639346394463954639646397463984639946400464014640246403464044640546406464074640846409464104641146412464134641446415464164641746418464194642046421464224642346424464254642646427464284642946430464314643246433464344643546436464374643846439464404644146442464434644446445464464644746448464494645046451464524645346454464554645646457464584645946460464614646246463464644646546466464674646846469464704647146472464734647446475464764647746478464794648046481464824648346484464854648646487464884648946490464914649246493464944649546496464974649846499465004650146502465034650446505465064650746508465094651046511465124651346514465154651646517465184651946520465214652246523465244652546526465274652846529465304653146532465334653446535465364653746538465394654046541465424654346544465454654646547465484654946550465514655246553465544655546556465574655846559465604656146562465634656446565465664656746568465694657046571465724657346574465754657646577465784657946580465814658246583465844658546586465874658846589465904659146592465934659446595465964659746598465994660046601466024660346604466054660646607466084660946610466114661246613466144661546616466174661846619466204662146622466234662446625466264662746628466294663046631466324663346634466354663646637466384663946640466414664246643466444664546646466474664846649466504665146652466534665446655466564665746658466594666046661466624666346664466654666646667466684666946670466714667246673466744667546676466774667846679466804668146682466834668446685466864668746688466894669046691466924669346694466954669646697466984669946700467014670246703467044670546706467074670846709467104671146712467134671446715467164671746718467194672046721467224672346724467254672646727467284672946730467314673246733467344673546736467374673846739467404674146742467434674446745467464674746748467494675046751467524675346754467554675646757467584675946760467614676246763467644676546766467674676846769467704677146772467734677446775467764677746778467794678046781467824678346784467854678646787467884678946790467914679246793467944679546796467974679846799468004680146802468034680446805468064680746808468094681046811468124681346814468154681646817468184681946820468214682246823468244682546826468274682846829468304683146832468334683446835468364683746838468394684046841468424684346844468454684646847468484684946850468514685246853468544685546856468574685846859468604686146862468634686446865468664686746868468694687046871468724687346874468754687646877468784687946880468814688246883468844688546886468874688846889468904689146892468934689446895468964689746898468994690046901469024690346904469054690646907469084690946910469114691246913469144691546916469174691846919469204692146922469234692446925469264692746928469294693046931469324693346934469354693646937469384693946940469414694246943469444694546946469474694846949469504695146952469534695446955469564695746958469594696046961469624696346964469654696646967469684696946970469714697246973469744697546976469774697846979469804698146982469834698446985469864698746988469894699046991469924699346994469954699646997469984699947000470014700247003470044700547006470074700847009470104701147012470134701447015470164701747018470194702047021470224702347024470254702647027470284702947030470314703247033470344703547036470374703847039470404704147042470434704447045470464704747048470494705047051470524705347054470554705647057470584705947060470614706247063470644706547066470674706847069470704707147072470734707447075470764707747078470794708047081470824708347084470854708647087470884708947090470914709247093470944709547096470974709847099471004710147102471034710447105471064710747108471094711047111471124711347114471154711647117471184711947120471214712247123471244712547126471274712847129471304713147132471334713447135471364713747138471394714047141471424714347144471454714647147471484714947150471514715247153471544715547156471574715847159471604716147162471634716447165471664716747168471694717047171471724717347174471754717647177471784717947180471814718247183471844718547186471874718847189471904719147192471934719447195471964719747198471994720047201472024720347204472054720647207472084720947210472114721247213472144721547216472174721847219472204722147222472234722447225472264722747228472294723047231472324723347234472354723647237472384723947240472414724247243472444724547246472474724847249472504725147252472534725447255472564725747258472594726047261472624726347264472654726647267472684726947270472714727247273472744727547276472774727847279472804728147282472834728447285472864728747288472894729047291472924729347294472954729647297472984729947300473014730247303473044730547306473074730847309473104731147312473134731447315473164731747318473194732047321473224732347324473254732647327473284732947330473314733247333473344733547336473374733847339473404734147342473434734447345473464734747348473494735047351473524735347354473554735647357473584735947360473614736247363473644736547366473674736847369473704737147372473734737447375473764737747378473794738047381473824738347384473854738647387473884738947390473914739247393473944739547396473974739847399474004740147402474034740447405474064740747408474094741047411474124741347414474154741647417474184741947420474214742247423474244742547426474274742847429474304743147432474334743447435474364743747438474394744047441474424744347444474454744647447474484744947450474514745247453474544745547456474574745847459474604746147462474634746447465474664746747468474694747047471474724747347474474754747647477474784747947480474814748247483474844748547486474874748847489474904749147492474934749447495474964749747498474994750047501475024750347504475054750647507475084750947510475114751247513475144751547516475174751847519475204752147522475234752447525475264752747528475294753047531475324753347534475354753647537475384753947540475414754247543475444754547546475474754847549475504755147552475534755447555475564755747558475594756047561475624756347564475654756647567475684756947570475714757247573475744757547576475774757847579475804758147582475834758447585475864758747588475894759047591475924759347594475954759647597475984759947600476014760247603476044760547606476074760847609476104761147612476134761447615476164761747618476194762047621476224762347624476254762647627476284762947630476314763247633476344763547636476374763847639476404764147642476434764447645476464764747648476494765047651476524765347654476554765647657476584765947660476614766247663476644766547666476674766847669476704767147672476734767447675476764767747678476794768047681476824768347684476854768647687476884768947690476914769247693476944769547696476974769847699477004770147702477034770447705477064770747708477094771047711477124771347714477154771647717477184771947720477214772247723477244772547726477274772847729477304773147732477334773447735477364773747738477394774047741477424774347744477454774647747477484774947750477514775247753477544775547756477574775847759477604776147762477634776447765477664776747768477694777047771477724777347774477754777647777477784777947780477814778247783477844778547786477874778847789477904779147792477934779447795477964779747798477994780047801478024780347804478054780647807478084780947810478114781247813478144781547816478174781847819478204782147822478234782447825478264782747828478294783047831478324783347834478354783647837478384783947840478414784247843478444784547846478474784847849478504785147852478534785447855478564785747858478594786047861478624786347864478654786647867478684786947870478714787247873478744787547876478774787847879478804788147882478834788447885478864788747888478894789047891478924789347894478954789647897478984789947900479014790247903479044790547906479074790847909479104791147912479134791447915479164791747918479194792047921479224792347924479254792647927479284792947930479314793247933479344793547936479374793847939479404794147942479434794447945479464794747948479494795047951479524795347954479554795647957479584795947960479614796247963479644796547966479674796847969479704797147972479734797447975479764797747978479794798047981479824798347984479854798647987479884798947990479914799247993479944799547996479974799847999480004800148002480034800448005480064800748008480094801048011480124801348014480154801648017480184801948020480214802248023480244802548026480274802848029480304803148032480334803448035480364803748038480394804048041480424804348044480454804648047480484804948050480514805248053480544805548056480574805848059480604806148062480634806448065480664806748068480694807048071480724807348074480754807648077480784807948080480814808248083480844808548086480874808848089480904809148092480934809448095480964809748098480994810048101481024810348104481054810648107481084810948110481114811248113481144811548116481174811848119481204812148122481234812448125481264812748128481294813048131481324813348134481354813648137481384813948140481414814248143481444814548146481474814848149481504815148152481534815448155481564815748158481594816048161481624816348164481654816648167481684816948170481714817248173481744817548176481774817848179481804818148182481834818448185481864818748188481894819048191481924819348194481954819648197481984819948200482014820248203482044820548206482074820848209482104821148212482134821448215482164821748218482194822048221482224822348224482254822648227482284822948230482314823248233482344823548236482374823848239482404824148242482434824448245482464824748248482494825048251482524825348254482554825648257482584825948260482614826248263482644826548266482674826848269482704827148272482734827448275482764827748278482794828048281482824828348284482854828648287482884828948290482914829248293482944829548296482974829848299483004830148302483034830448305483064830748308483094831048311483124831348314483154831648317483184831948320483214832248323483244832548326483274832848329483304833148332483334833448335483364833748338483394834048341483424834348344483454834648347483484834948350483514835248353483544835548356483574835848359483604836148362483634836448365483664836748368483694837048371483724837348374483754837648377483784837948380483814838248383483844838548386483874838848389483904839148392483934839448395483964839748398483994840048401484024840348404484054840648407484084840948410484114841248413484144841548416484174841848419484204842148422484234842448425484264842748428484294843048431484324843348434484354843648437484384843948440484414844248443484444844548446484474844848449484504845148452484534845448455484564845748458484594846048461484624846348464484654846648467484684846948470484714847248473484744847548476484774847848479484804848148482484834848448485484864848748488484894849048491484924849348494484954849648497484984849948500485014850248503485044850548506485074850848509485104851148512485134851448515485164851748518485194852048521485224852348524485254852648527485284852948530485314853248533485344853548536485374853848539485404854148542485434854448545485464854748548485494855048551485524855348554485554855648557485584855948560485614856248563485644856548566485674856848569485704857148572485734857448575485764857748578485794858048581485824858348584485854858648587485884858948590485914859248593485944859548596485974859848599486004860148602486034860448605486064860748608486094861048611486124861348614486154861648617486184861948620486214862248623486244862548626486274862848629486304863148632486334863448635486364863748638486394864048641486424864348644486454864648647486484864948650486514865248653486544865548656486574865848659486604866148662486634866448665486664866748668486694867048671486724867348674486754867648677486784867948680486814868248683486844868548686486874868848689486904869148692486934869448695486964869748698486994870048701487024870348704487054870648707487084870948710487114871248713487144871548716487174871848719487204872148722487234872448725487264872748728487294873048731487324873348734487354873648737487384873948740487414874248743487444874548746487474874848749487504875148752487534875448755487564875748758487594876048761487624876348764487654876648767487684876948770487714877248773487744877548776487774877848779487804878148782487834878448785487864878748788487894879048791487924879348794487954879648797487984879948800488014880248803488044880548806488074880848809488104881148812488134881448815488164881748818488194882048821488224882348824488254882648827488284882948830488314883248833488344883548836488374883848839488404884148842488434884448845488464884748848488494885048851488524885348854488554885648857488584885948860488614886248863488644886548866488674886848869488704887148872488734887448875488764887748878488794888048881488824888348884488854888648887488884888948890488914889248893488944889548896488974889848899489004890148902489034890448905489064890748908489094891048911489124891348914489154891648917489184891948920489214892248923489244892548926489274892848929489304893148932489334893448935489364893748938489394894048941489424894348944489454894648947489484894948950489514895248953489544895548956489574895848959489604896148962489634896448965489664896748968489694897048971489724897348974489754897648977489784897948980489814898248983489844898548986489874898848989489904899148992489934899448995489964899748998489994900049001490024900349004490054900649007490084900949010490114901249013490144901549016490174901849019490204902149022490234902449025490264902749028490294903049031490324903349034490354903649037490384903949040490414904249043490444904549046490474904849049490504905149052490534905449055490564905749058490594906049061490624906349064490654906649067490684906949070490714907249073490744907549076490774907849079490804908149082490834908449085490864908749088490894909049091490924909349094490954909649097490984909949100491014910249103491044910549106491074910849109491104911149112491134911449115491164911749118491194912049121491224912349124491254912649127491284912949130491314913249133491344913549136491374913849139491404914149142491434914449145491464914749148491494915049151491524915349154491554915649157491584915949160491614916249163491644916549166491674916849169491704917149172491734917449175491764917749178491794918049181491824918349184491854918649187491884918949190491914919249193491944919549196491974919849199492004920149202492034920449205492064920749208492094921049211492124921349214492154921649217492184921949220492214922249223492244922549226492274922849229492304923149232492334923449235492364923749238492394924049241492424924349244492454924649247492484924949250492514925249253492544925549256492574925849259492604926149262492634926449265492664926749268492694927049271492724927349274492754927649277492784927949280492814928249283492844928549286492874928849289492904929149292492934929449295492964929749298492994930049301493024930349304493054930649307493084930949310493114931249313493144931549316493174931849319493204932149322493234932449325493264932749328493294933049331493324933349334493354933649337493384933949340493414934249343493444934549346493474934849349493504935149352493534935449355493564935749358493594936049361493624936349364493654936649367493684936949370493714937249373493744937549376493774937849379493804938149382493834938449385493864938749388493894939049391493924939349394493954939649397493984939949400494014940249403494044940549406494074940849409494104941149412494134941449415494164941749418494194942049421494224942349424494254942649427494284942949430494314943249433494344943549436494374943849439494404944149442494434944449445494464944749448494494945049451494524945349454494554945649457494584945949460494614946249463494644946549466494674946849469494704947149472494734947449475494764947749478494794948049481494824948349484494854948649487494884948949490494914949249493494944949549496494974949849499495004950149502495034950449505495064950749508495094951049511495124951349514495154951649517495184951949520495214952249523495244952549526495274952849529495304953149532495334953449535495364953749538495394954049541495424954349544495454954649547495484954949550495514955249553495544955549556495574955849559495604956149562495634956449565495664956749568495694957049571495724957349574495754957649577495784957949580495814958249583495844958549586495874958849589495904959149592495934959449595495964959749598495994960049601496024960349604496054960649607496084960949610496114961249613496144961549616496174961849619496204962149622496234962449625496264962749628496294963049631496324963349634496354963649637496384963949640496414964249643496444964549646496474964849649496504965149652496534965449655496564965749658496594966049661496624966349664496654966649667496684966949670496714967249673496744967549676496774967849679496804968149682496834968449685496864968749688496894969049691496924969349694496954969649697496984969949700497014970249703497044970549706497074970849709497104971149712497134971449715497164971749718497194972049721497224972349724497254972649727497284972949730497314973249733497344973549736497374973849739497404974149742497434974449745497464974749748497494975049751497524975349754497554975649757497584975949760497614976249763497644976549766497674976849769497704977149772497734977449775497764977749778497794978049781497824978349784497854978649787497884978949790497914979249793497944979549796497974979849799498004980149802498034980449805498064980749808498094981049811498124981349814498154981649817498184981949820498214982249823498244982549826498274982849829498304983149832498334983449835498364983749838498394984049841498424984349844498454984649847498484984949850498514985249853498544985549856498574985849859498604986149862498634986449865498664986749868498694987049871498724987349874498754987649877498784987949880498814988249883498844988549886498874988849889498904989149892498934989449895498964989749898498994990049901499024990349904499054990649907499084990949910499114991249913499144991549916499174991849919499204992149922499234992449925499264992749928499294993049931499324993349934499354993649937499384993949940499414994249943499444994549946499474994849949499504995149952499534995449955499564995749958499594996049961499624996349964499654996649967499684996949970499714997249973499744997549976499774997849979499804998149982499834998449985499864998749988499894999049991499924999349994499954999649997499984999950000500015000250003500045000550006500075000850009500105001150012500135001450015500165001750018500195002050021500225002350024500255002650027500285002950030500315003250033500345003550036500375003850039500405004150042500435004450045500465004750048500495005050051500525005350054500555005650057500585005950060500615006250063500645006550066500675006850069500705007150072500735007450075500765007750078500795008050081500825008350084500855008650087500885008950090500915009250093500945009550096500975009850099501005010150102501035010450105501065010750108501095011050111501125011350114501155011650117501185011950120501215012250123501245012550126501275012850129501305013150132501335013450135501365013750138501395014050141501425014350144501455014650147501485014950150501515015250153501545015550156501575015850159501605016150162501635016450165501665016750168501695017050171501725017350174501755017650177501785017950180501815018250183501845018550186501875018850189501905019150192501935019450195501965019750198501995020050201502025020350204502055020650207502085020950210502115021250213502145021550216502175021850219502205022150222502235022450225502265022750228502295023050231502325023350234502355023650237502385023950240502415024250243502445024550246502475024850249502505025150252502535025450255502565025750258502595026050261502625026350264502655026650267502685026950270502715027250273502745027550276502775027850279502805028150282502835028450285502865028750288502895029050291502925029350294502955029650297502985029950300503015030250303503045030550306503075030850309503105031150312503135031450315503165031750318503195032050321503225032350324503255032650327503285032950330503315033250333503345033550336503375033850339503405034150342503435034450345503465034750348503495035050351503525035350354503555035650357503585035950360503615036250363503645036550366503675036850369503705037150372503735037450375503765037750378503795038050381503825038350384503855038650387503885038950390503915039250393503945039550396503975039850399504005040150402504035040450405504065040750408504095041050411504125041350414504155041650417504185041950420504215042250423504245042550426504275042850429504305043150432504335043450435504365043750438504395044050441504425044350444504455044650447504485044950450504515045250453504545045550456504575045850459504605046150462504635046450465504665046750468504695047050471504725047350474504755047650477504785047950480504815048250483504845048550486504875048850489504905049150492504935049450495504965049750498504995050050501505025050350504505055050650507505085050950510505115051250513505145051550516505175051850519505205052150522505235052450525505265052750528505295053050531505325053350534505355053650537505385053950540505415054250543505445054550546505475054850549505505055150552505535055450555505565055750558505595056050561505625056350564505655056650567505685056950570505715057250573505745057550576505775057850579505805058150582505835058450585505865058750588505895059050591505925059350594505955059650597505985059950600506015060250603506045060550606506075060850609506105061150612506135061450615506165061750618506195062050621506225062350624506255062650627506285062950630506315063250633506345063550636506375063850639506405064150642506435064450645506465064750648506495065050651506525065350654506555065650657506585065950660506615066250663506645066550666506675066850669506705067150672506735067450675506765067750678506795068050681506825068350684506855068650687506885068950690506915069250693506945069550696506975069850699507005070150702507035070450705507065070750708507095071050711507125071350714507155071650717507185071950720507215072250723507245072550726507275072850729507305073150732507335073450735507365073750738507395074050741507425074350744507455074650747507485074950750507515075250753507545075550756507575075850759507605076150762507635076450765507665076750768507695077050771507725077350774507755077650777507785077950780507815078250783507845078550786507875078850789507905079150792507935079450795507965079750798507995080050801508025080350804508055080650807508085080950810508115081250813508145081550816508175081850819508205082150822508235082450825508265082750828508295083050831508325083350834508355083650837508385083950840508415084250843508445084550846508475084850849508505085150852508535085450855508565085750858508595086050861508625086350864508655086650867508685086950870508715087250873508745087550876508775087850879508805088150882508835088450885508865088750888508895089050891508925089350894508955089650897508985089950900509015090250903509045090550906509075090850909509105091150912509135091450915509165091750918509195092050921509225092350924509255092650927509285092950930509315093250933509345093550936509375093850939509405094150942509435094450945509465094750948509495095050951509525095350954509555095650957509585095950960509615096250963509645096550966509675096850969509705097150972509735097450975509765097750978509795098050981509825098350984509855098650987509885098950990509915099250993509945099550996509975099850999510005100151002510035100451005510065100751008510095101051011510125101351014510155101651017510185101951020510215102251023510245102551026510275102851029510305103151032510335103451035510365103751038510395104051041510425104351044510455104651047510485104951050510515105251053510545105551056510575105851059510605106151062510635106451065510665106751068510695107051071510725107351074510755107651077510785107951080510815108251083510845108551086510875108851089510905109151092510935109451095510965109751098510995110051101511025110351104511055110651107511085110951110511115111251113511145111551116511175111851119511205112151122511235112451125511265112751128511295113051131511325113351134511355113651137511385113951140511415114251143511445114551146511475114851149511505115151152511535115451155511565115751158511595116051161511625116351164511655116651167511685116951170511715117251173511745117551176511775117851179511805118151182511835118451185511865118751188511895119051191511925119351194511955119651197511985119951200512015120251203512045120551206512075120851209512105121151212512135121451215512165121751218512195122051221512225122351224512255122651227512285122951230512315123251233512345123551236512375123851239512405124151242512435124451245512465124751248512495125051251512525125351254512555125651257512585125951260512615126251263512645126551266512675126851269512705127151272512735127451275512765127751278512795128051281512825128351284512855128651287512885128951290512915129251293512945129551296512975129851299513005130151302513035130451305513065130751308513095131051311513125131351314513155131651317513185131951320513215132251323513245132551326513275132851329513305133151332513335133451335513365133751338513395134051341513425134351344513455134651347513485134951350513515135251353513545135551356513575135851359513605136151362513635136451365513665136751368513695137051371513725137351374513755137651377513785137951380513815138251383513845138551386513875138851389513905139151392513935139451395513965139751398513995140051401514025140351404514055140651407514085140951410514115141251413514145141551416514175141851419514205142151422514235142451425514265142751428514295143051431514325143351434514355143651437514385143951440514415144251443514445144551446514475144851449514505145151452514535145451455514565145751458514595146051461514625146351464514655146651467514685146951470514715147251473514745147551476514775147851479514805148151482514835148451485514865148751488514895149051491514925149351494514955149651497514985149951500515015150251503515045150551506515075150851509515105151151512515135151451515515165151751518515195152051521515225152351524515255152651527515285152951530515315153251533515345153551536515375153851539515405154151542515435154451545515465154751548515495155051551515525155351554515555155651557515585155951560515615156251563515645156551566515675156851569515705157151572515735157451575515765157751578515795158051581515825158351584515855158651587515885158951590515915159251593515945159551596515975159851599516005160151602516035160451605516065160751608516095161051611516125161351614516155161651617516185161951620516215162251623516245162551626516275162851629516305163151632516335163451635516365163751638516395164051641516425164351644516455164651647516485164951650516515165251653516545165551656516575165851659516605166151662516635166451665516665166751668516695167051671516725167351674516755167651677516785167951680516815168251683516845168551686516875168851689516905169151692516935169451695516965169751698516995170051701517025170351704517055170651707517085170951710517115171251713517145171551716517175171851719517205172151722517235172451725517265172751728517295173051731517325173351734517355173651737517385173951740517415174251743517445174551746517475174851749517505175151752517535175451755517565175751758517595176051761517625176351764517655176651767517685176951770517715177251773517745177551776517775177851779517805178151782517835178451785517865178751788517895179051791517925179351794517955179651797517985179951800518015180251803518045180551806518075180851809518105181151812518135181451815518165181751818518195182051821518225182351824518255182651827518285182951830518315183251833518345183551836518375183851839518405184151842518435184451845518465184751848518495185051851518525185351854518555185651857518585185951860518615186251863518645186551866518675186851869518705187151872518735187451875518765187751878518795188051881518825188351884518855188651887518885188951890518915189251893518945189551896518975189851899519005190151902519035190451905519065190751908519095191051911519125191351914519155191651917519185191951920519215192251923519245192551926519275192851929519305193151932519335193451935519365193751938519395194051941519425194351944519455194651947519485194951950519515195251953519545195551956519575195851959519605196151962519635196451965519665196751968519695197051971519725197351974519755197651977519785197951980519815198251983519845198551986519875198851989519905199151992519935199451995519965199751998519995200052001520025200352004520055200652007520085200952010520115201252013520145201552016520175201852019520205202152022520235202452025520265202752028520295203052031520325203352034520355203652037520385203952040520415204252043520445204552046520475204852049520505205152052520535205452055520565205752058520595206052061520625206352064520655206652067520685206952070520715207252073520745207552076520775207852079520805208152082520835208452085520865208752088520895209052091520925209352094520955209652097520985209952100521015210252103521045210552106521075210852109521105211152112521135211452115521165211752118521195212052121521225212352124521255212652127521285212952130521315213252133521345213552136521375213852139521405214152142521435214452145521465214752148521495215052151521525215352154521555215652157521585215952160521615216252163521645216552166521675216852169521705217152172521735217452175521765217752178521795218052181521825218352184521855218652187521885218952190521915219252193521945219552196521975219852199522005220152202522035220452205522065220752208522095221052211522125221352214522155221652217522185221952220522215222252223522245222552226522275222852229522305223152232522335223452235522365223752238522395224052241522425224352244522455224652247522485224952250522515225252253522545225552256522575225852259522605226152262522635226452265522665226752268522695227052271522725227352274522755227652277522785227952280522815228252283522845228552286522875228852289522905229152292522935229452295522965229752298522995230052301523025230352304523055230652307523085230952310523115231252313523145231552316523175231852319523205232152322523235232452325523265232752328523295233052331523325233352334523355233652337523385233952340523415234252343523445234552346523475234852349523505235152352523535235452355523565235752358523595236052361523625236352364523655236652367523685236952370523715237252373523745237552376523775237852379523805238152382523835238452385523865238752388523895239052391523925239352394523955239652397523985239952400524015240252403524045240552406524075240852409524105241152412524135241452415524165241752418524195242052421524225242352424524255242652427524285242952430524315243252433524345243552436524375243852439524405244152442524435244452445524465244752448524495245052451524525245352454524555245652457524585245952460524615246252463524645246552466524675246852469524705247152472524735247452475524765247752478524795248052481524825248352484524855248652487524885248952490524915249252493524945249552496524975249852499525005250152502525035250452505525065250752508525095251052511525125251352514525155251652517525185251952520525215252252523525245252552526525275252852529525305253152532525335253452535525365253752538525395254052541525425254352544525455254652547525485254952550525515255252553525545255552556525575255852559525605256152562525635256452565525665256752568525695257052571525725257352574525755257652577525785257952580525815258252583525845258552586525875258852589525905259152592525935259452595525965259752598525995260052601526025260352604526055260652607526085260952610526115261252613526145261552616526175261852619526205262152622526235262452625526265262752628526295263052631526325263352634526355263652637526385263952640526415264252643526445264552646526475264852649526505265152652526535265452655526565265752658526595266052661526625266352664526655266652667526685266952670526715267252673526745267552676526775267852679526805268152682526835268452685526865268752688526895269052691526925269352694526955269652697526985269952700527015270252703527045270552706527075270852709527105271152712527135271452715527165271752718527195272052721527225272352724527255272652727527285272952730527315273252733527345273552736527375273852739527405274152742527435274452745527465274752748527495275052751527525275352754527555275652757527585275952760527615276252763527645276552766527675276852769527705277152772527735277452775527765277752778527795278052781527825278352784527855278652787527885278952790527915279252793527945279552796527975279852799528005280152802528035280452805528065280752808528095281052811528125281352814528155281652817528185281952820528215282252823528245282552826528275282852829528305283152832528335283452835528365283752838528395284052841528425284352844528455284652847528485284952850528515285252853528545285552856528575285852859528605286152862528635286452865528665286752868528695287052871528725287352874528755287652877528785287952880528815288252883528845288552886528875288852889528905289152892528935289452895528965289752898528995290052901529025290352904529055290652907529085290952910529115291252913529145291552916529175291852919529205292152922529235292452925529265292752928529295293052931529325293352934529355293652937529385293952940529415294252943529445294552946529475294852949529505295152952529535295452955529565295752958529595296052961529625296352964529655296652967529685296952970529715297252973529745297552976529775297852979529805298152982529835298452985529865298752988529895299052991529925299352994529955299652997529985299953000530015300253003530045300553006530075300853009530105301153012530135301453015530165301753018530195302053021530225302353024530255302653027530285302953030530315303253033530345303553036530375303853039530405304153042530435304453045530465304753048530495305053051530525305353054530555305653057530585305953060530615306253063530645306553066530675306853069530705307153072530735307453075530765307753078530795308053081530825308353084530855308653087530885308953090530915309253093530945309553096530975309853099531005310153102531035310453105531065310753108531095311053111531125311353114531155311653117531185311953120531215312253123531245312553126531275312853129531305313153132531335313453135531365313753138531395314053141531425314353144531455314653147531485314953150531515315253153531545315553156531575315853159531605316153162531635316453165531665316753168531695317053171531725317353174531755317653177531785317953180531815318253183531845318553186531875318853189531905319153192531935319453195531965319753198531995320053201532025320353204532055320653207532085320953210532115321253213532145321553216532175321853219532205322153222532235322453225532265322753228532295323053231532325323353234532355323653237532385323953240532415324253243532445324553246532475324853249532505325153252532535325453255532565325753258532595326053261532625326353264532655326653267532685326953270532715327253273532745327553276532775327853279532805328153282532835328453285532865328753288532895329053291532925329353294532955329653297532985329953300533015330253303533045330553306533075330853309533105331153312533135331453315533165331753318533195332053321533225332353324533255332653327533285332953330533315333253333533345333553336533375333853339533405334153342533435334453345533465334753348533495335053351533525335353354533555335653357533585335953360533615336253363533645336553366533675336853369533705337153372533735337453375533765337753378533795338053381533825338353384533855338653387533885338953390533915339253393533945339553396533975339853399534005340153402534035340453405534065340753408534095341053411534125341353414534155341653417534185341953420534215342253423534245342553426534275342853429534305343153432534335343453435534365343753438534395344053441534425344353444534455344653447534485344953450534515345253453534545345553456534575345853459534605346153462534635346453465534665346753468534695347053471534725347353474534755347653477534785347953480534815348253483534845348553486534875348853489534905349153492534935349453495534965349753498534995350053501535025350353504535055350653507535085350953510535115351253513535145351553516535175351853519535205352153522535235352453525535265352753528535295353053531535325353353534535355353653537535385353953540535415354253543535445354553546535475354853549535505355153552535535355453555535565355753558535595356053561535625356353564535655356653567535685356953570535715357253573535745357553576535775357853579535805358153582535835358453585535865358753588535895359053591535925359353594535955359653597535985359953600536015360253603536045360553606536075360853609536105361153612536135361453615536165361753618536195362053621536225362353624536255362653627536285362953630536315363253633536345363553636536375363853639536405364153642536435364453645536465364753648536495365053651536525365353654536555365653657536585365953660536615366253663536645366553666536675366853669536705367153672536735367453675536765367753678536795368053681536825368353684536855368653687536885368953690536915369253693536945369553696536975369853699537005370153702537035370453705537065370753708537095371053711537125371353714537155371653717537185371953720537215372253723537245372553726537275372853729537305373153732537335373453735537365373753738537395374053741537425374353744537455374653747537485374953750537515375253753537545375553756537575375853759537605376153762537635376453765537665376753768537695377053771537725377353774537755377653777537785377953780537815378253783537845378553786537875378853789537905379153792537935379453795537965379753798537995380053801538025380353804538055380653807538085380953810538115381253813538145381553816538175381853819538205382153822538235382453825538265382753828538295383053831538325383353834538355383653837538385383953840538415384253843538445384553846538475384853849538505385153852538535385453855538565385753858538595386053861538625386353864538655386653867538685386953870538715387253873538745387553876538775387853879538805388153882538835388453885538865388753888538895389053891538925389353894538955389653897538985389953900539015390253903539045390553906539075390853909539105391153912539135391453915539165391753918539195392053921539225392353924539255392653927539285392953930539315393253933539345393553936539375393853939539405394153942539435394453945539465394753948539495395053951539525395353954539555395653957539585395953960539615396253963539645396553966539675396853969539705397153972539735397453975539765397753978539795398053981539825398353984539855398653987539885398953990539915399253993539945399553996539975399853999540005400154002540035400454005540065400754008540095401054011540125401354014540155401654017540185401954020540215402254023540245402554026540275402854029540305403154032540335403454035540365403754038540395404054041540425404354044540455404654047540485404954050540515405254053540545405554056540575405854059540605406154062540635406454065540665406754068540695407054071540725407354074540755407654077540785407954080540815408254083540845408554086540875408854089540905409154092540935409454095540965409754098540995410054101541025410354104541055410654107541085410954110541115411254113541145411554116541175411854119541205412154122541235412454125541265412754128541295413054131541325413354134541355413654137541385413954140541415414254143541445414554146541475414854149541505415154152541535415454155541565415754158541595416054161541625416354164541655416654167541685416954170541715417254173541745417554176541775417854179541805418154182541835418454185541865418754188541895419054191541925419354194541955419654197541985419954200542015420254203542045420554206542075420854209542105421154212542135421454215542165421754218542195422054221542225422354224542255422654227542285422954230542315423254233542345423554236542375423854239542405424154242542435424454245542465424754248542495425054251542525425354254542555425654257542585425954260542615426254263542645426554266542675426854269542705427154272542735427454275542765427754278542795428054281542825428354284542855428654287542885428954290542915429254293542945429554296542975429854299543005430154302543035430454305543065430754308543095431054311543125431354314543155431654317543185431954320543215432254323543245432554326543275432854329543305433154332543335433454335543365433754338543395434054341543425434354344543455434654347543485434954350543515435254353543545435554356543575435854359543605436154362543635436454365543665436754368543695437054371543725437354374543755437654377543785437954380543815438254383543845438554386543875438854389543905439154392543935439454395543965439754398543995440054401544025440354404544055440654407544085440954410544115441254413544145441554416544175441854419544205442154422544235442454425544265442754428544295443054431544325443354434544355443654437544385443954440544415444254443544445444554446544475444854449544505445154452544535445454455544565445754458544595446054461544625446354464544655446654467544685446954470544715447254473544745447554476544775447854479544805448154482544835448454485544865448754488544895449054491544925449354494544955449654497544985449954500545015450254503545045450554506545075450854509545105451154512545135451454515545165451754518545195452054521545225452354524545255452654527545285452954530545315453254533545345453554536545375453854539545405454154542545435454454545545465454754548545495455054551545525455354554545555455654557545585455954560545615456254563545645456554566545675456854569545705457154572545735457454575545765457754578545795458054581545825458354584545855458654587545885458954590545915459254593545945459554596545975459854599546005460154602546035460454605546065460754608546095461054611546125461354614546155461654617546185461954620546215462254623546245462554626546275462854629546305463154632546335463454635546365463754638546395464054641546425464354644546455464654647546485464954650546515465254653546545465554656546575465854659546605466154662546635466454665546665466754668546695467054671546725467354674546755467654677546785467954680546815468254683546845468554686546875468854689546905469154692546935469454695546965469754698546995470054701547025470354704547055470654707547085470954710547115471254713547145471554716547175471854719547205472154722547235472454725547265472754728547295473054731547325473354734547355473654737547385473954740547415474254743547445474554746547475474854749547505475154752547535475454755547565475754758547595476054761547625476354764547655476654767547685476954770547715477254773547745477554776547775477854779547805478154782547835478454785547865478754788547895479054791547925479354794547955479654797547985479954800548015480254803548045480554806548075480854809548105481154812548135481454815548165481754818548195482054821548225482354824548255482654827548285482954830548315483254833548345483554836548375483854839548405484154842548435484454845548465484754848548495485054851548525485354854548555485654857548585485954860548615486254863548645486554866548675486854869548705487154872548735487454875548765487754878548795488054881548825488354884548855488654887548885488954890548915489254893548945489554896548975489854899549005490154902549035490454905549065490754908549095491054911549125491354914549155491654917549185491954920549215492254923549245492554926549275492854929549305493154932549335493454935549365493754938549395494054941549425494354944549455494654947549485494954950549515495254953549545495554956549575495854959549605496154962549635496454965549665496754968549695497054971549725497354974549755497654977549785497954980549815498254983549845498554986549875498854989549905499154992549935499454995549965499754998549995500055001550025500355004550055500655007550085500955010550115501255013550145501555016550175501855019550205502155022550235502455025550265502755028550295503055031550325503355034550355503655037550385503955040550415504255043550445504555046550475504855049550505505155052550535505455055550565505755058550595506055061550625506355064550655506655067550685506955070550715507255073550745507555076550775507855079550805508155082550835508455085550865508755088550895509055091550925509355094550955509655097550985509955100551015510255103551045510555106551075510855109551105511155112551135511455115551165511755118551195512055121551225512355124551255512655127551285512955130551315513255133551345513555136551375513855139551405514155142551435514455145551465514755148551495515055151551525515355154551555515655157551585515955160551615516255163551645516555166551675516855169551705517155172551735517455175551765517755178551795518055181551825518355184551855518655187551885518955190551915519255193551945519555196551975519855199552005520155202552035520455205552065520755208552095521055211552125521355214552155521655217552185521955220552215522255223552245522555226552275522855229552305523155232552335523455235552365523755238552395524055241552425524355244552455524655247552485524955250552515525255253552545525555256552575525855259552605526155262552635526455265552665526755268552695527055271552725527355274552755527655277552785527955280552815528255283552845528555286552875528855289552905529155292552935529455295552965529755298552995530055301553025530355304553055530655307553085530955310553115531255313553145531555316553175531855319553205532155322553235532455325553265532755328553295533055331553325533355334553355533655337553385533955340553415534255343553445534555346553475534855349553505535155352553535535455355553565535755358553595536055361553625536355364553655536655367553685536955370553715537255373553745537555376553775537855379553805538155382553835538455385553865538755388553895539055391553925539355394553955539655397553985539955400554015540255403554045540555406554075540855409554105541155412554135541455415554165541755418554195542055421554225542355424554255542655427554285542955430554315543255433554345543555436554375543855439554405544155442554435544455445554465544755448554495545055451554525545355454554555545655457554585545955460554615546255463554645546555466554675546855469554705547155472554735547455475554765547755478554795548055481554825548355484554855548655487554885548955490554915549255493554945549555496554975549855499555005550155502555035550455505555065550755508555095551055511555125551355514555155551655517555185551955520555215552255523555245552555526555275552855529555305553155532555335553455535555365553755538555395554055541555425554355544555455554655547555485554955550555515555255553555545555555556555575555855559555605556155562555635556455565555665556755568555695557055571555725557355574555755557655577555785557955580555815558255583555845558555586555875558855589555905559155592555935559455595555965559755598555995560055601556025560355604556055560655607556085560955610556115561255613556145561555616556175561855619556205562155622556235562455625556265562755628556295563055631556325563355634556355563655637556385563955640556415564255643556445564555646556475564855649556505565155652556535565455655556565565755658556595566055661556625566355664556655566655667556685566955670556715567255673556745567555676556775567855679556805568155682556835568455685556865568755688556895569055691556925569355694556955569655697556985569955700557015570255703557045570555706557075570855709557105571155712557135571455715557165571755718557195572055721557225572355724557255572655727557285572955730557315573255733557345573555736557375573855739557405574155742557435574455745557465574755748557495575055751557525575355754557555575655757557585575955760557615576255763557645576555766557675576855769557705577155772557735577455775557765577755778557795578055781557825578355784557855578655787557885578955790557915579255793557945579555796557975579855799558005580155802558035580455805558065580755808558095581055811558125581355814558155581655817558185581955820558215582255823558245582555826558275582855829558305583155832558335583455835558365583755838558395584055841558425584355844558455584655847558485584955850558515585255853558545585555856558575585855859558605586155862558635586455865558665586755868558695587055871558725587355874558755587655877558785587955880558815588255883558845588555886558875588855889558905589155892558935589455895558965589755898558995590055901559025590355904559055590655907559085590955910559115591255913559145591555916559175591855919559205592155922559235592455925559265592755928559295593055931559325593355934559355593655937559385593955940559415594255943559445594555946559475594855949559505595155952559535595455955559565595755958559595596055961559625596355964559655596655967559685596955970559715597255973559745597555976559775597855979559805598155982559835598455985559865598755988559895599055991559925599355994559955599655997559985599956000560015600256003560045600556006560075600856009560105601156012560135601456015560165601756018560195602056021560225602356024560255602656027560285602956030560315603256033560345603556036560375603856039560405604156042560435604456045560465604756048560495605056051560525605356054560555605656057560585605956060560615606256063560645606556066560675606856069560705607156072560735607456075560765607756078560795608056081560825608356084560855608656087560885608956090560915609256093560945609556096560975609856099561005610156102561035610456105561065610756108561095611056111561125611356114561155611656117561185611956120561215612256123561245612556126561275612856129561305613156132561335613456135561365613756138561395614056141561425614356144561455614656147561485614956150561515615256153561545615556156561575615856159561605616156162561635616456165561665616756168561695617056171561725617356174561755617656177561785617956180561815618256183561845618556186561875618856189561905619156192561935619456195561965619756198561995620056201562025620356204562055620656207562085620956210562115621256213562145621556216562175621856219562205622156222562235622456225562265622756228562295623056231562325623356234562355623656237562385623956240562415624256243562445624556246562475624856249562505625156252562535625456255562565625756258562595626056261562625626356264562655626656267562685626956270562715627256273562745627556276562775627856279562805628156282562835628456285562865628756288562895629056291562925629356294562955629656297562985629956300563015630256303563045630556306563075630856309563105631156312563135631456315563165631756318563195632056321563225632356324563255632656327563285632956330563315633256333563345633556336563375633856339563405634156342563435634456345563465634756348563495635056351563525635356354563555635656357563585635956360563615636256363563645636556366563675636856369563705637156372563735637456375563765637756378563795638056381563825638356384563855638656387563885638956390563915639256393563945639556396563975639856399564005640156402564035640456405564065640756408564095641056411564125641356414564155641656417564185641956420564215642256423564245642556426564275642856429564305643156432564335643456435564365643756438564395644056441564425644356444564455644656447564485644956450564515645256453564545645556456564575645856459564605646156462564635646456465564665646756468564695647056471564725647356474564755647656477564785647956480564815648256483564845648556486564875648856489564905649156492564935649456495564965649756498564995650056501565025650356504565055650656507565085650956510565115651256513565145651556516565175651856519565205652156522565235652456525565265652756528565295653056531565325653356534565355653656537565385653956540565415654256543565445654556546565475654856549565505655156552565535655456555565565655756558565595656056561565625656356564565655656656567565685656956570565715657256573565745657556576565775657856579565805658156582565835658456585565865658756588565895659056591565925659356594565955659656597565985659956600566015660256603566045660556606566075660856609566105661156612566135661456615566165661756618566195662056621566225662356624566255662656627566285662956630566315663256633566345663556636566375663856639566405664156642566435664456645566465664756648566495665056651566525665356654566555665656657566585665956660566615666256663566645666556666566675666856669566705667156672566735667456675566765667756678566795668056681566825668356684566855668656687566885668956690566915669256693566945669556696566975669856699567005670156702567035670456705567065670756708567095671056711567125671356714567155671656717567185671956720567215672256723567245672556726567275672856729567305673156732567335673456735567365673756738567395674056741567425674356744567455674656747567485674956750567515675256753567545675556756567575675856759567605676156762567635676456765567665676756768567695677056771567725677356774567755677656777567785677956780567815678256783567845678556786567875678856789567905679156792567935679456795567965679756798567995680056801568025680356804568055680656807568085680956810568115681256813568145681556816568175681856819568205682156822568235682456825568265682756828568295683056831568325683356834568355683656837568385683956840568415684256843568445684556846568475684856849568505685156852568535685456855568565685756858568595686056861568625686356864568655686656867568685686956870568715687256873568745687556876568775687856879568805688156882568835688456885568865688756888568895689056891568925689356894568955689656897568985689956900569015690256903569045690556906569075690856909569105691156912569135691456915569165691756918569195692056921569225692356924569255692656927569285692956930569315693256933569345693556936569375693856939569405694156942569435694456945569465694756948569495695056951569525695356954569555695656957569585695956960569615696256963569645696556966569675696856969569705697156972569735697456975569765697756978569795698056981569825698356984569855698656987569885698956990569915699256993569945699556996569975699856999570005700157002570035700457005570065700757008570095701057011570125701357014570155701657017570185701957020570215702257023570245702557026570275702857029570305703157032570335703457035570365703757038570395704057041570425704357044570455704657047570485704957050570515705257053570545705557056570575705857059570605706157062570635706457065570665706757068570695707057071570725707357074570755707657077570785707957080570815708257083570845708557086570875708857089570905709157092570935709457095570965709757098570995710057101571025710357104571055710657107571085710957110571115711257113571145711557116571175711857119571205712157122571235712457125571265712757128571295713057131571325713357134571355713657137571385713957140571415714257143571445714557146571475714857149571505715157152571535715457155571565715757158571595716057161571625716357164571655716657167571685716957170571715717257173571745717557176571775717857179571805718157182571835718457185571865718757188571895719057191571925719357194571955719657197571985719957200572015720257203572045720557206572075720857209572105721157212572135721457215572165721757218572195722057221572225722357224572255722657227572285722957230572315723257233572345723557236572375723857239572405724157242572435724457245572465724757248572495725057251572525725357254572555725657257572585725957260572615726257263572645726557266572675726857269572705727157272572735727457275572765727757278572795728057281572825728357284572855728657287572885728957290572915729257293572945729557296572975729857299573005730157302573035730457305573065730757308573095731057311573125731357314573155731657317573185731957320573215732257323573245732557326573275732857329573305733157332573335733457335573365733757338573395734057341573425734357344573455734657347573485734957350573515735257353573545735557356573575735857359573605736157362573635736457365573665736757368573695737057371573725737357374573755737657377573785737957380573815738257383573845738557386573875738857389573905739157392573935739457395573965739757398573995740057401574025740357404574055740657407574085740957410574115741257413574145741557416574175741857419574205742157422574235742457425574265742757428574295743057431574325743357434574355743657437574385743957440574415744257443574445744557446574475744857449574505745157452574535745457455574565745757458574595746057461574625746357464574655746657467574685746957470574715747257473574745747557476574775747857479574805748157482574835748457485574865748757488574895749057491574925749357494574955749657497574985749957500575015750257503575045750557506575075750857509575105751157512575135751457515575165751757518575195752057521575225752357524575255752657527575285752957530575315753257533575345753557536575375753857539575405754157542575435754457545575465754757548575495755057551575525755357554575555755657557575585755957560575615756257563575645756557566575675756857569575705757157572575735757457575575765757757578575795758057581575825758357584575855758657587575885758957590575915759257593575945759557596575975759857599576005760157602576035760457605576065760757608576095761057611576125761357614576155761657617576185761957620576215762257623576245762557626576275762857629576305763157632576335763457635576365763757638576395764057641576425764357644576455764657647576485764957650576515765257653576545765557656576575765857659576605766157662576635766457665576665766757668576695767057671576725767357674576755767657677576785767957680576815768257683576845768557686576875768857689576905769157692576935769457695576965769757698576995770057701577025770357704577055770657707577085770957710577115771257713577145771557716577175771857719577205772157722577235772457725577265772757728577295773057731577325773357734577355773657737577385773957740577415774257743577445774557746577475774857749577505775157752577535775457755577565775757758577595776057761577625776357764577655776657767577685776957770577715777257773577745777557776577775777857779577805778157782577835778457785577865778757788577895779057791577925779357794577955779657797577985779957800578015780257803578045780557806578075780857809578105781157812578135781457815578165781757818578195782057821578225782357824578255782657827578285782957830578315783257833578345783557836578375783857839578405784157842578435784457845578465784757848578495785057851578525785357854578555785657857578585785957860578615786257863578645786557866578675786857869578705787157872578735787457875578765787757878578795788057881578825788357884578855788657887578885788957890578915789257893578945789557896578975789857899579005790157902579035790457905579065790757908579095791057911579125791357914579155791657917579185791957920579215792257923579245792557926579275792857929579305793157932579335793457935579365793757938579395794057941579425794357944579455794657947579485794957950579515795257953579545795557956579575795857959579605796157962579635796457965579665796757968579695797057971579725797357974579755797657977579785797957980579815798257983579845798557986579875798857989579905799157992579935799457995579965799757998579995800058001580025800358004580055800658007580085800958010580115801258013580145801558016580175801858019580205802158022580235802458025580265802758028580295803058031580325803358034580355803658037580385803958040580415804258043580445804558046580475804858049580505805158052580535805458055580565805758058580595806058061580625806358064580655806658067580685806958070580715807258073580745807558076580775807858079580805808158082580835808458085580865808758088580895809058091580925809358094580955809658097580985809958100581015810258103581045810558106581075810858109581105811158112581135811458115581165811758118581195812058121581225812358124581255812658127581285812958130581315813258133581345813558136581375813858139581405814158142581435814458145581465814758148581495815058151581525815358154581555815658157581585815958160581615816258163581645816558166581675816858169581705817158172581735817458175581765817758178581795818058181581825818358184581855818658187581885818958190581915819258193581945819558196581975819858199582005820158202582035820458205582065820758208582095821058211582125821358214582155821658217582185821958220582215822258223582245822558226582275822858229582305823158232582335823458235582365823758238582395824058241582425824358244582455824658247582485824958250582515825258253582545825558256582575825858259582605826158262582635826458265582665826758268582695827058271582725827358274582755827658277582785827958280582815828258283582845828558286582875828858289582905829158292582935829458295582965829758298582995830058301583025830358304583055830658307583085830958310583115831258313583145831558316583175831858319583205832158322583235832458325583265832758328583295833058331583325833358334583355833658337583385833958340583415834258343583445834558346583475834858349583505835158352583535835458355583565835758358583595836058361583625836358364583655836658367583685836958370583715837258373583745837558376583775837858379583805838158382583835838458385583865838758388583895839058391583925839358394583955839658397583985839958400584015840258403584045840558406584075840858409584105841158412584135841458415584165841758418584195842058421584225842358424584255842658427584285842958430584315843258433584345843558436584375843858439584405844158442584435844458445584465844758448584495845058451584525845358454584555845658457584585845958460584615846258463584645846558466584675846858469584705847158472584735847458475584765847758478584795848058481584825848358484584855848658487584885848958490584915849258493584945849558496584975849858499585005850158502585035850458505585065850758508585095851058511585125851358514585155851658517585185851958520585215852258523585245852558526585275852858529585305853158532585335853458535585365853758538585395854058541585425854358544585455854658547585485854958550585515855258553585545855558556585575855858559585605856158562585635856458565585665856758568585695857058571585725857358574585755857658577585785857958580585815858258583585845858558586585875858858589585905859158592585935859458595585965859758598585995860058601586025860358604586055860658607586085860958610586115861258613586145861558616586175861858619586205862158622586235862458625586265862758628586295863058631586325863358634586355863658637586385863958640586415864258643586445864558646586475864858649586505865158652586535865458655586565865758658586595866058661586625866358664586655866658667586685866958670586715867258673586745867558676586775867858679586805868158682586835868458685586865868758688586895869058691586925869358694586955869658697586985869958700587015870258703587045870558706587075870858709587105871158712587135871458715587165871758718587195872058721587225872358724587255872658727587285872958730587315873258733587345873558736587375873858739587405874158742587435874458745587465874758748587495875058751587525875358754587555875658757587585875958760587615876258763587645876558766587675876858769587705877158772587735877458775587765877758778587795878058781587825878358784587855878658787587885878958790587915879258793587945879558796587975879858799588005880158802588035880458805588065880758808588095881058811588125881358814588155881658817588185881958820588215882258823588245882558826588275882858829588305883158832588335883458835588365883758838588395884058841588425884358844588455884658847588485884958850588515885258853588545885558856588575885858859588605886158862588635886458865588665886758868588695887058871588725887358874588755887658877588785887958880588815888258883588845888558886588875888858889588905889158892588935889458895588965889758898588995890058901589025890358904589055890658907589085890958910589115891258913589145891558916589175891858919589205892158922589235892458925589265892758928589295893058931589325893358934589355893658937589385893958940589415894258943589445894558946589475894858949589505895158952589535895458955589565895758958589595896058961589625896358964589655896658967589685896958970589715897258973589745897558976589775897858979589805898158982589835898458985589865898758988589895899058991589925899358994589955899658997589985899959000590015900259003590045900559006590075900859009590105901159012590135901459015590165901759018590195902059021590225902359024590255902659027590285902959030590315903259033590345903559036590375903859039590405904159042590435904459045590465904759048590495905059051590525905359054590555905659057590585905959060590615906259063590645906559066590675906859069590705907159072590735907459075590765907759078590795908059081590825908359084590855908659087590885908959090590915909259093590945909559096590975909859099591005910159102591035910459105591065910759108591095911059111591125911359114591155911659117591185911959120591215912259123591245912559126591275912859129591305913159132591335913459135591365913759138591395914059141591425914359144591455914659147591485914959150591515915259153591545915559156591575915859159591605916159162591635916459165591665916759168591695917059171591725917359174591755917659177591785917959180591815918259183591845918559186591875918859189591905919159192591935919459195591965919759198591995920059201592025920359204592055920659207592085920959210592115921259213592145921559216592175921859219592205922159222592235922459225592265922759228592295923059231592325923359234592355923659237592385923959240592415924259243592445924559246592475924859249592505925159252592535925459255592565925759258592595926059261592625926359264592655926659267592685926959270592715927259273592745927559276592775927859279592805928159282592835928459285592865928759288592895929059291592925929359294592955929659297592985929959300593015930259303593045930559306593075930859309593105931159312593135931459315593165931759318593195932059321593225932359324593255932659327593285932959330593315933259333593345933559336593375933859339593405934159342593435934459345593465934759348593495935059351593525935359354593555935659357593585935959360593615936259363593645936559366593675936859369593705937159372593735937459375593765937759378593795938059381593825938359384593855938659387593885938959390593915939259393593945939559396593975939859399594005940159402594035940459405594065940759408594095941059411594125941359414594155941659417594185941959420594215942259423594245942559426594275942859429594305943159432594335943459435594365943759438594395944059441594425944359444594455944659447594485944959450594515945259453594545945559456594575945859459594605946159462594635946459465594665946759468594695947059471594725947359474594755947659477594785947959480594815948259483594845948559486594875948859489594905949159492594935949459495594965949759498594995950059501595025950359504595055950659507595085950959510595115951259513595145951559516595175951859519595205952159522595235952459525595265952759528595295953059531595325953359534595355953659537595385953959540595415954259543595445954559546595475954859549595505955159552595535955459555595565955759558595595956059561595625956359564595655956659567595685956959570595715957259573595745957559576595775957859579595805958159582595835958459585595865958759588595895959059591595925959359594595955959659597595985959959600596015960259603596045960559606596075960859609596105961159612596135961459615596165961759618596195962059621596225962359624596255962659627596285962959630596315963259633596345963559636596375963859639596405964159642596435964459645596465964759648596495965059651596525965359654596555965659657596585965959660596615966259663596645966559666596675966859669596705967159672596735967459675596765967759678596795968059681596825968359684596855968659687596885968959690596915969259693596945969559696596975969859699597005970159702597035970459705597065970759708597095971059711597125971359714597155971659717597185971959720597215972259723597245972559726597275972859729597305973159732597335973459735597365973759738597395974059741597425974359744597455974659747597485974959750597515975259753597545975559756597575975859759597605976159762597635976459765597665976759768597695977059771597725977359774597755977659777597785977959780597815978259783597845978559786597875978859789597905979159792597935979459795597965979759798597995980059801598025980359804598055980659807598085980959810598115981259813598145981559816598175981859819598205982159822598235982459825598265982759828598295983059831598325983359834598355983659837598385983959840598415984259843598445984559846598475984859849598505985159852598535985459855598565985759858598595986059861598625986359864598655986659867598685986959870598715987259873598745987559876598775987859879598805988159882598835988459885598865988759888598895989059891598925989359894598955989659897598985989959900599015990259903599045990559906599075990859909599105991159912599135991459915599165991759918599195992059921599225992359924599255992659927599285992959930599315993259933599345993559936599375993859939599405994159942599435994459945599465994759948599495995059951599525995359954599555995659957599585995959960599615996259963599645996559966599675996859969599705997159972599735997459975599765997759978599795998059981599825998359984599855998659987599885998959990599915999259993599945999559996599975999859999600006000160002600036000460005600066000760008600096001060011600126001360014600156001660017600186001960020600216002260023600246002560026600276002860029600306003160032600336003460035600366003760038600396004060041600426004360044600456004660047600486004960050600516005260053600546005560056600576005860059600606006160062600636006460065600666006760068600696007060071600726007360074600756007660077600786007960080600816008260083600846008560086600876008860089600906009160092600936009460095600966009760098600996010060101601026010360104601056010660107601086010960110601116011260113601146011560116601176011860119601206012160122601236012460125601266012760128601296013060131601326013360134601356013660137601386013960140601416014260143601446014560146601476014860149601506015160152601536015460155601566015760158601596016060161601626016360164601656016660167601686016960170601716017260173601746017560176601776017860179601806018160182601836018460185601866018760188601896019060191601926019360194601956019660197601986019960200602016020260203602046020560206602076020860209602106021160212602136021460215602166021760218602196022060221602226022360224602256022660227602286022960230602316023260233602346023560236602376023860239602406024160242602436024460245602466024760248602496025060251602526025360254602556025660257602586025960260602616026260263602646026560266602676026860269602706027160272602736027460275602766027760278602796028060281602826028360284602856028660287602886028960290602916029260293602946029560296602976029860299603006030160302603036030460305603066030760308603096031060311603126031360314603156031660317603186031960320603216032260323603246032560326603276032860329603306033160332603336033460335603366033760338603396034060341603426034360344603456034660347603486034960350603516035260353603546035560356603576035860359603606036160362603636036460365603666036760368603696037060371603726037360374603756037660377603786037960380603816038260383603846038560386603876038860389603906039160392603936039460395603966039760398603996040060401604026040360404604056040660407604086040960410604116041260413604146041560416604176041860419604206042160422604236042460425604266042760428604296043060431604326043360434604356043660437604386043960440604416044260443604446044560446604476044860449604506045160452604536045460455604566045760458604596046060461604626046360464604656046660467604686046960470604716047260473604746047560476604776047860479604806048160482604836048460485604866048760488604896049060491604926049360494604956049660497604986049960500605016050260503605046050560506605076050860509605106051160512605136051460515605166051760518605196052060521605226052360524605256052660527605286052960530605316053260533605346053560536605376053860539605406054160542605436054460545605466054760548605496055060551605526055360554605556055660557605586055960560605616056260563605646056560566605676056860569605706057160572605736057460575605766057760578605796058060581605826058360584605856058660587605886058960590605916059260593605946059560596605976059860599606006060160602606036060460605606066060760608606096061060611606126061360614606156061660617606186061960620606216062260623606246062560626606276062860629606306063160632606336063460635606366063760638606396064060641606426064360644606456064660647606486064960650606516065260653606546065560656606576065860659606606066160662606636066460665606666066760668606696067060671606726067360674606756067660677606786067960680606816068260683606846068560686606876068860689606906069160692606936069460695606966069760698606996070060701607026070360704607056070660707607086070960710607116071260713607146071560716607176071860719607206072160722607236072460725607266072760728607296073060731607326073360734607356073660737607386073960740607416074260743607446074560746607476074860749607506075160752607536075460755607566075760758607596076060761607626076360764607656076660767607686076960770607716077260773607746077560776607776077860779607806078160782607836078460785607866078760788607896079060791607926079360794607956079660797607986079960800608016080260803608046080560806608076080860809608106081160812608136081460815608166081760818608196082060821608226082360824608256082660827608286082960830608316083260833608346083560836608376083860839608406084160842608436084460845608466084760848608496085060851608526085360854608556085660857608586085960860608616086260863608646086560866608676086860869608706087160872608736087460875608766087760878608796088060881608826088360884608856088660887608886088960890608916089260893608946089560896608976089860899609006090160902609036090460905609066090760908609096091060911609126091360914609156091660917609186091960920609216092260923609246092560926609276092860929609306093160932609336093460935609366093760938609396094060941609426094360944609456094660947609486094960950609516095260953609546095560956609576095860959609606096160962609636096460965609666096760968609696097060971609726097360974609756097660977609786097960980609816098260983609846098560986609876098860989609906099160992609936099460995609966099760998609996100061001610026100361004610056100661007610086100961010610116101261013610146101561016610176101861019610206102161022610236102461025610266102761028610296103061031610326103361034610356103661037610386103961040610416104261043610446104561046610476104861049610506105161052610536105461055610566105761058610596106061061610626106361064610656106661067610686106961070610716107261073610746107561076610776107861079610806108161082610836108461085610866108761088610896109061091610926109361094610956109661097610986109961100611016110261103611046110561106611076110861109611106111161112611136111461115611166111761118611196112061121611226112361124611256112661127611286112961130611316113261133611346113561136611376113861139611406114161142611436114461145611466114761148611496115061151611526115361154611556115661157611586115961160611616116261163611646116561166611676116861169611706117161172611736117461175611766117761178611796118061181611826118361184611856118661187611886118961190611916119261193611946119561196611976119861199612006120161202612036120461205612066120761208612096121061211612126121361214612156121661217612186121961220612216122261223612246122561226612276122861229612306123161232612336123461235612366123761238612396124061241612426124361244612456124661247612486124961250612516125261253612546125561256612576125861259612606126161262612636126461265612666126761268612696127061271612726127361274612756127661277612786127961280612816128261283612846128561286612876128861289612906129161292612936129461295612966129761298612996130061301613026130361304613056130661307613086130961310613116131261313613146131561316613176131861319613206132161322613236132461325613266132761328613296133061331613326133361334613356133661337613386133961340613416134261343613446134561346613476134861349613506135161352613536135461355613566135761358613596136061361613626136361364613656136661367613686136961370613716137261373613746137561376613776137861379613806138161382613836138461385613866138761388613896139061391613926139361394613956139661397613986139961400614016140261403614046140561406614076140861409614106141161412614136141461415614166141761418614196142061421614226142361424614256142661427614286142961430614316143261433614346143561436614376143861439614406144161442614436144461445614466144761448614496145061451614526145361454614556145661457614586145961460614616146261463614646146561466614676146861469614706147161472614736147461475614766147761478614796148061481614826148361484614856148661487614886148961490614916149261493614946149561496614976149861499615006150161502615036150461505615066150761508615096151061511615126151361514615156151661517615186151961520615216152261523615246152561526615276152861529615306153161532615336153461535615366153761538615396154061541615426154361544615456154661547615486154961550615516155261553615546155561556615576155861559615606156161562615636156461565615666156761568615696157061571615726157361574615756157661577615786157961580615816158261583615846158561586615876158861589615906159161592615936159461595615966159761598615996160061601616026160361604616056160661607616086160961610616116161261613616146161561616616176161861619616206162161622616236162461625616266162761628616296163061631616326163361634616356163661637616386163961640616416164261643616446164561646616476164861649616506165161652616536165461655616566165761658616596166061661616626166361664616656166661667616686166961670616716167261673616746167561676616776167861679616806168161682616836168461685616866168761688616896169061691616926169361694616956169661697616986169961700617016170261703617046170561706617076170861709617106171161712617136171461715617166171761718617196172061721617226172361724617256172661727617286172961730617316173261733617346173561736617376173861739617406174161742617436174461745617466174761748617496175061751617526175361754617556175661757617586175961760617616176261763617646176561766617676176861769617706177161772617736177461775617766177761778617796178061781617826178361784617856178661787617886178961790617916179261793617946179561796617976179861799618006180161802618036180461805618066180761808618096181061811618126181361814618156181661817618186181961820618216182261823618246182561826618276182861829618306183161832618336183461835618366183761838618396184061841618426184361844618456184661847618486184961850618516185261853618546185561856618576185861859618606186161862618636186461865618666186761868618696187061871618726187361874618756187661877618786187961880618816188261883618846188561886618876188861889618906189161892618936189461895618966189761898618996190061901619026190361904619056190661907619086190961910619116191261913619146191561916619176191861919619206192161922619236192461925619266192761928619296193061931619326193361934619356193661937619386193961940619416194261943619446194561946619476194861949619506195161952619536195461955619566195761958619596196061961619626196361964619656196661967619686196961970619716197261973619746197561976619776197861979619806198161982619836198461985619866198761988619896199061991619926199361994619956199661997619986199962000620016200262003620046200562006620076200862009620106201162012620136201462015620166201762018620196202062021620226202362024620256202662027620286202962030620316203262033620346203562036620376203862039620406204162042620436204462045620466204762048620496205062051620526205362054620556205662057620586205962060620616206262063620646206562066620676206862069620706207162072620736207462075620766207762078620796208062081620826208362084620856208662087620886208962090620916209262093620946209562096620976209862099621006210162102621036210462105621066210762108621096211062111621126211362114621156211662117621186211962120621216212262123621246212562126621276212862129621306213162132621336213462135621366213762138621396214062141621426214362144621456214662147621486214962150621516215262153621546215562156621576215862159621606216162162621636216462165621666216762168621696217062171621726217362174621756217662177621786217962180621816218262183621846218562186621876218862189621906219162192621936219462195621966219762198621996220062201622026220362204622056220662207622086220962210622116221262213622146221562216622176221862219622206222162222622236222462225622266222762228622296223062231622326223362234622356223662237622386223962240622416224262243622446224562246622476224862249622506225162252622536225462255622566225762258622596226062261622626226362264622656226662267622686226962270622716227262273622746227562276622776227862279622806228162282622836228462285622866228762288622896229062291622926229362294622956229662297622986229962300623016230262303623046230562306623076230862309623106231162312623136231462315623166231762318623196232062321623226232362324623256232662327623286232962330623316233262333623346233562336623376233862339623406234162342623436234462345623466234762348623496235062351623526235362354623556235662357623586235962360623616236262363623646236562366623676236862369623706237162372623736237462375623766237762378623796238062381623826238362384623856238662387623886238962390623916239262393623946239562396623976239862399624006240162402624036240462405624066240762408624096241062411624126241362414624156241662417624186241962420624216242262423624246242562426624276242862429624306243162432624336243462435624366243762438624396244062441624426244362444624456244662447624486244962450624516245262453624546245562456624576245862459624606246162462624636246462465624666246762468624696247062471624726247362474624756247662477624786247962480624816248262483624846248562486624876248862489624906249162492624936249462495624966249762498624996250062501625026250362504625056250662507625086250962510625116251262513625146251562516625176251862519625206252162522625236252462525625266252762528625296253062531625326253362534625356253662537625386253962540625416254262543625446254562546625476254862549625506255162552625536255462555625566255762558625596256062561625626256362564625656256662567625686256962570625716257262573625746257562576625776257862579625806258162582625836258462585625866258762588625896259062591625926259362594625956259662597625986259962600626016260262603626046260562606626076260862609626106261162612626136261462615626166261762618626196262062621626226262362624626256262662627626286262962630626316263262633626346263562636626376263862639626406264162642626436264462645626466264762648626496265062651626526265362654626556265662657626586265962660626616266262663626646266562666626676266862669626706267162672626736267462675626766267762678626796268062681626826268362684626856268662687626886268962690626916269262693626946269562696626976269862699627006270162702627036270462705627066270762708627096271062711627126271362714627156271662717627186271962720627216272262723627246272562726627276272862729627306273162732627336273462735627366273762738627396274062741627426274362744627456274662747627486274962750627516275262753627546275562756627576275862759627606276162762627636276462765627666276762768627696277062771627726277362774627756277662777627786277962780627816278262783627846278562786627876278862789627906279162792627936279462795627966279762798627996280062801628026280362804628056280662807628086280962810628116281262813628146281562816628176281862819628206282162822628236282462825628266282762828628296283062831628326283362834628356283662837628386283962840628416284262843628446284562846628476284862849628506285162852628536285462855628566285762858628596286062861628626286362864628656286662867628686286962870628716287262873628746287562876628776287862879628806288162882628836288462885628866288762888628896289062891628926289362894628956289662897628986289962900629016290262903629046290562906629076290862909629106291162912629136291462915629166291762918629196292062921629226292362924629256292662927629286292962930629316293262933629346293562936629376293862939629406294162942629436294462945629466294762948629496295062951629526295362954629556295662957629586295962960629616296262963629646296562966629676296862969629706297162972629736297462975629766297762978629796298062981629826298362984629856298662987629886298962990629916299262993629946299562996629976299862999630006300163002630036300463005630066300763008630096301063011630126301363014630156301663017630186301963020630216302263023630246302563026630276302863029630306303163032630336303463035630366303763038630396304063041630426304363044630456304663047630486304963050630516305263053630546305563056630576305863059630606306163062630636306463065630666306763068630696307063071630726307363074630756307663077630786307963080630816308263083630846308563086630876308863089630906309163092630936309463095630966309763098630996310063101631026310363104631056310663107631086310963110631116311263113631146311563116631176311863119631206312163122631236312463125631266312763128631296313063131631326313363134631356313663137631386313963140631416314263143631446314563146631476314863149631506315163152631536315463155631566315763158631596316063161631626316363164631656316663167631686316963170631716317263173631746317563176631776317863179631806318163182631836318463185631866318763188631896319063191631926319363194631956319663197631986319963200632016320263203632046320563206632076320863209632106321163212632136321463215632166321763218632196322063221632226322363224632256322663227632286322963230632316323263233632346323563236632376323863239632406324163242632436324463245632466324763248632496325063251632526325363254632556325663257632586325963260632616326263263632646326563266632676326863269632706327163272632736327463275632766327763278632796328063281632826328363284632856328663287632886328963290632916329263293632946329563296632976329863299633006330163302633036330463305633066330763308633096331063311633126331363314633156331663317633186331963320633216332263323633246332563326633276332863329633306333163332633336333463335633366333763338633396334063341633426334363344633456334663347633486334963350633516335263353633546335563356633576335863359633606336163362633636336463365633666336763368633696337063371633726337363374633756337663377633786337963380633816338263383633846338563386633876338863389633906339163392633936339463395633966339763398633996340063401634026340363404634056340663407634086340963410634116341263413634146341563416634176341863419634206342163422634236342463425634266342763428634296343063431634326343363434634356343663437634386343963440634416344263443634446344563446634476344863449634506345163452634536345463455634566345763458634596346063461634626346363464634656346663467634686346963470634716347263473634746347563476634776347863479634806348163482634836348463485634866348763488634896349063491634926349363494634956349663497634986349963500635016350263503635046350563506635076350863509635106351163512635136351463515635166351763518635196352063521635226352363524635256352663527635286352963530635316353263533635346353563536635376353863539635406354163542635436354463545635466354763548635496355063551635526355363554635556355663557635586355963560635616356263563635646356563566635676356863569635706357163572635736357463575635766357763578635796358063581635826358363584635856358663587635886358963590635916359263593635946359563596635976359863599636006360163602636036360463605636066360763608636096361063611636126361363614636156361663617636186361963620636216362263623636246362563626636276362863629636306363163632636336363463635636366363763638636396364063641636426364363644636456364663647636486364963650636516365263653636546365563656636576365863659636606366163662636636366463665636666366763668636696367063671636726367363674636756367663677636786367963680636816368263683636846368563686636876368863689636906369163692636936369463695636966369763698636996370063701637026370363704637056370663707637086370963710637116371263713637146371563716637176371863719637206372163722637236372463725637266372763728637296373063731637326373363734637356373663737637386373963740637416374263743637446374563746637476374863749637506375163752637536375463755637566375763758637596376063761637626376363764637656376663767637686376963770637716377263773637746377563776637776377863779637806378163782637836378463785637866378763788637896379063791637926379363794637956379663797637986379963800638016380263803638046380563806638076380863809638106381163812638136381463815638166381763818638196382063821638226382363824638256382663827638286382963830638316383263833638346383563836638376383863839638406384163842638436384463845638466384763848638496385063851638526385363854638556385663857638586385963860638616386263863638646386563866638676386863869638706387163872638736387463875638766387763878638796388063881638826388363884638856388663887638886388963890638916389263893638946389563896638976389863899639006390163902639036390463905639066390763908639096391063911639126391363914639156391663917639186391963920639216392263923639246392563926639276392863929639306393163932639336393463935639366393763938639396394063941639426394363944639456394663947639486394963950639516395263953639546395563956639576395863959639606396163962639636396463965639666396763968639696397063971639726397363974639756397663977639786397963980639816398263983639846398563986639876398863989639906399163992639936399463995639966399763998639996400064001640026400364004640056400664007640086400964010640116401264013640146401564016640176401864019640206402164022640236402464025640266402764028640296403064031640326403364034640356403664037640386403964040640416404264043640446404564046640476404864049640506405164052640536405464055640566405764058640596406064061640626406364064640656406664067640686406964070640716407264073640746407564076640776407864079640806408164082640836408464085640866408764088640896409064091640926409364094640956409664097640986409964100641016410264103641046410564106641076410864109641106411164112641136411464115641166411764118641196412064121641226412364124641256412664127641286412964130641316413264133641346413564136641376413864139641406414164142641436414464145641466414764148641496415064151641526415364154641556415664157641586415964160641616416264163641646416564166641676416864169641706417164172641736417464175641766417764178641796418064181641826418364184641856418664187641886418964190641916419264193641946419564196641976419864199642006420164202642036420464205642066420764208642096421064211642126421364214642156421664217642186421964220642216422264223642246422564226642276422864229642306423164232642336423464235642366423764238642396424064241642426424364244642456424664247642486424964250642516425264253642546425564256642576425864259642606426164262642636426464265642666426764268642696427064271642726427364274642756427664277642786427964280642816428264283642846428564286642876428864289642906429164292642936429464295642966429764298642996430064301643026430364304643056430664307643086430964310643116431264313643146431564316643176431864319643206432164322643236432464325643266432764328643296433064331643326433364334643356433664337643386433964340643416434264343643446434564346643476434864349643506435164352643536435464355643566435764358643596436064361643626436364364643656436664367643686436964370643716437264373643746437564376643776437864379643806438164382643836438464385643866438764388643896439064391643926439364394643956439664397643986439964400644016440264403644046440564406644076440864409644106441164412644136441464415644166441764418644196442064421644226442364424644256442664427644286442964430644316443264433644346443564436644376443864439644406444164442644436444464445644466444764448644496445064451644526445364454644556445664457644586445964460644616446264463644646446564466644676446864469644706447164472644736447464475644766447764478644796448064481644826448364484644856448664487644886448964490644916449264493644946449564496644976449864499645006450164502645036450464505645066450764508645096451064511645126451364514645156451664517645186451964520645216452264523645246452564526645276452864529645306453164532645336453464535645366453764538645396454064541645426454364544645456454664547645486454964550645516455264553645546455564556645576455864559645606456164562645636456464565645666456764568645696457064571645726457364574645756457664577645786457964580645816458264583645846458564586645876458864589645906459164592645936459464595645966459764598645996460064601646026460364604646056460664607646086460964610646116461264613646146461564616646176461864619646206462164622646236462464625646266462764628646296463064631646326463364634646356463664637646386463964640646416464264643646446464564646646476464864649646506465164652646536465464655646566465764658646596466064661646626466364664646656466664667646686466964670646716467264673646746467564676646776467864679646806468164682646836468464685646866468764688646896469064691646926469364694646956469664697646986469964700647016470264703647046470564706647076470864709647106471164712647136471464715647166471764718647196472064721647226472364724647256472664727647286472964730647316473264733647346473564736647376473864739647406474164742647436474464745647466474764748647496475064751647526475364754647556475664757647586475964760647616476264763647646476564766647676476864769647706477164772647736477464775647766477764778647796478064781647826478364784647856478664787647886478964790647916479264793647946479564796647976479864799648006480164802648036480464805648066480764808648096481064811648126481364814648156481664817648186481964820648216482264823648246482564826648276482864829648306483164832648336483464835648366483764838648396484064841648426484364844648456484664847648486484964850648516485264853648546485564856648576485864859648606486164862648636486464865648666486764868648696487064871648726487364874648756487664877648786487964880648816488264883648846488564886648876488864889648906489164892648936489464895648966489764898648996490064901649026490364904649056490664907649086490964910649116491264913649146491564916649176491864919649206492164922649236492464925649266492764928649296493064931649326493364934649356493664937649386493964940649416494264943649446494564946649476494864949649506495164952649536495464955649566495764958649596496064961649626496364964649656496664967649686496964970649716497264973649746497564976649776497864979649806498164982649836498464985649866498764988649896499064991649926499364994649956499664997649986499965000650016500265003650046500565006650076500865009650106501165012650136501465015650166501765018650196502065021650226502365024650256502665027650286502965030650316503265033650346503565036650376503865039650406504165042650436504465045650466504765048650496505065051650526505365054650556505665057650586505965060650616506265063650646506565066650676506865069650706507165072650736507465075650766507765078650796508065081650826508365084650856508665087650886508965090650916509265093650946509565096650976509865099651006510165102651036510465105651066510765108651096511065111651126511365114651156511665117651186511965120651216512265123651246512565126651276512865129651306513165132651336513465135651366513765138651396514065141651426514365144651456514665147651486514965150651516515265153651546515565156651576515865159651606516165162651636516465165651666516765168651696517065171651726517365174651756517665177651786517965180651816518265183651846518565186651876518865189651906519165192651936519465195651966519765198651996520065201652026520365204652056520665207652086520965210652116521265213652146521565216652176521865219652206522165222652236522465225652266522765228652296523065231652326523365234652356523665237652386523965240652416524265243652446524565246652476524865249652506525165252652536525465255652566525765258652596526065261652626526365264652656526665267652686526965270652716527265273652746527565276652776527865279652806528165282652836528465285652866528765288652896529065291652926529365294652956529665297652986529965300653016530265303653046530565306653076530865309653106531165312653136531465315653166531765318653196532065321653226532365324653256532665327653286532965330653316533265333653346533565336653376533865339653406534165342653436534465345653466534765348653496535065351653526535365354653556535665357653586535965360653616536265363653646536565366653676536865369653706537165372653736537465375653766537765378653796538065381653826538365384653856538665387653886538965390653916539265393653946539565396653976539865399654006540165402654036540465405654066540765408654096541065411654126541365414654156541665417654186541965420654216542265423654246542565426654276542865429654306543165432654336543465435654366543765438654396544065441654426544365444654456544665447654486544965450654516545265453654546545565456654576545865459654606546165462654636546465465654666546765468654696547065471654726547365474654756547665477654786547965480654816548265483654846548565486654876548865489654906549165492654936549465495654966549765498654996550065501655026550365504655056550665507655086550965510655116551265513655146551565516655176551865519655206552165522655236552465525655266552765528655296553065531655326553365534655356553665537655386553965540655416554265543655446554565546655476554865549655506555165552655536555465555655566555765558655596556065561655626556365564655656556665567655686556965570655716557265573655746557565576655776557865579655806558165582655836558465585655866558765588655896559065591655926559365594655956559665597655986559965600656016560265603656046560565606656076560865609656106561165612656136561465615656166561765618656196562065621656226562365624656256562665627656286562965630656316563265633656346563565636656376563865639656406564165642656436564465645656466564765648656496565065651656526565365654656556565665657656586565965660656616566265663656646566565666656676566865669656706567165672656736567465675656766567765678656796568065681656826568365684656856568665687656886568965690656916569265693656946569565696656976569865699657006570165702657036570465705657066570765708657096571065711657126571365714657156571665717657186571965720657216572265723657246572565726657276572865729657306573165732657336573465735657366573765738657396574065741657426574365744657456574665747657486574965750657516575265753657546575565756657576575865759657606576165762657636576465765657666576765768657696577065771657726577365774657756577665777657786577965780657816578265783657846578565786657876578865789657906579165792657936579465795657966579765798657996580065801658026580365804658056580665807658086580965810658116581265813658146581565816658176581865819658206582165822658236582465825658266582765828658296583065831658326583365834658356583665837658386583965840658416584265843658446584565846658476584865849658506585165852658536585465855658566585765858658596586065861658626586365864658656586665867658686586965870658716587265873658746587565876658776587865879658806588165882658836588465885658866588765888658896589065891658926589365894658956589665897658986589965900659016590265903659046590565906659076590865909659106591165912659136591465915659166591765918659196592065921659226592365924659256592665927659286592965930659316593265933659346593565936659376593865939659406594165942659436594465945659466594765948659496595065951659526595365954659556595665957659586595965960659616596265963659646596565966659676596865969659706597165972659736597465975659766597765978659796598065981659826598365984659856598665987659886598965990659916599265993659946599565996659976599865999660006600166002660036600466005660066600766008660096601066011660126601366014660156601666017660186601966020660216602266023660246602566026660276602866029660306603166032660336603466035660366603766038660396604066041660426604366044660456604666047660486604966050660516605266053660546605566056660576605866059660606606166062660636606466065660666606766068660696607066071660726607366074660756607666077660786607966080660816608266083660846608566086660876608866089660906609166092660936609466095660966609766098660996610066101661026610366104661056610666107661086610966110661116611266113661146611566116661176611866119661206612166122661236612466125661266612766128661296613066131661326613366134661356613666137661386613966140661416614266143661446614566146661476614866149661506615166152661536615466155661566615766158661596616066161661626616366164661656616666167661686616966170661716617266173661746617566176661776617866179661806618166182661836618466185661866618766188661896619066191661926619366194661956619666197661986619966200662016620266203662046620566206662076620866209662106621166212662136621466215662166621766218662196622066221662226622366224662256622666227662286622966230662316623266233662346623566236662376623866239662406624166242662436624466245662466624766248662496625066251662526625366254662556625666257662586625966260662616626266263662646626566266662676626866269662706627166272662736627466275662766627766278662796628066281662826628366284662856628666287662886628966290662916629266293662946629566296662976629866299663006630166302663036630466305663066630766308663096631066311663126631366314663156631666317663186631966320663216632266323663246632566326663276632866329663306633166332663336633466335663366633766338663396634066341663426634366344663456634666347663486634966350663516635266353663546635566356663576635866359663606636166362663636636466365663666636766368663696637066371663726637366374663756637666377663786637966380663816638266383663846638566386663876638866389663906639166392663936639466395663966639766398663996640066401664026640366404664056640666407664086640966410664116641266413664146641566416664176641866419664206642166422664236642466425664266642766428664296643066431664326643366434664356643666437664386643966440664416644266443664446644566446664476644866449664506645166452664536645466455664566645766458664596646066461664626646366464664656646666467664686646966470664716647266473664746647566476664776647866479664806648166482664836648466485664866648766488664896649066491664926649366494664956649666497664986649966500665016650266503665046650566506665076650866509665106651166512665136651466515665166651766518665196652066521665226652366524665256652666527665286652966530665316653266533665346653566536665376653866539665406654166542665436654466545665466654766548665496655066551665526655366554665556655666557665586655966560665616656266563665646656566566665676656866569665706657166572665736657466575665766657766578665796658066581665826658366584665856658666587665886658966590665916659266593665946659566596665976659866599666006660166602666036660466605666066660766608666096661066611666126661366614666156661666617666186661966620666216662266623666246662566626666276662866629666306663166632666336663466635666366663766638666396664066641666426664366644666456664666647666486664966650666516665266653666546665566656666576665866659666606666166662666636666466665666666666766668666696667066671666726667366674666756667666677666786667966680666816668266683666846668566686666876668866689666906669166692666936669466695666966669766698666996670066701667026670366704667056670666707667086670966710667116671266713667146671566716667176671866719667206672166722667236672466725667266672766728667296673066731667326673366734667356673666737667386673966740667416674266743667446674566746667476674866749667506675166752667536675466755667566675766758667596676066761667626676366764667656676666767667686676966770667716677266773667746677566776667776677866779667806678166782667836678466785667866678766788667896679066791667926679366794667956679666797667986679966800668016680266803668046680566806668076680866809668106681166812668136681466815668166681766818668196682066821668226682366824668256682666827668286682966830668316683266833668346683566836668376683866839668406684166842668436684466845668466684766848668496685066851668526685366854668556685666857668586685966860668616686266863668646686566866668676686866869668706687166872668736687466875668766687766878668796688066881668826688366884668856688666887668886688966890668916689266893668946689566896668976689866899669006690166902669036690466905669066690766908669096691066911669126691366914669156691666917669186691966920669216692266923669246692566926669276692866929669306693166932669336693466935669366693766938669396694066941669426694366944669456694666947669486694966950669516695266953669546695566956669576695866959669606696166962669636696466965669666696766968669696697066971669726697366974669756697666977669786697966980669816698266983669846698566986669876698866989669906699166992669936699466995669966699766998669996700067001670026700367004670056700667007670086700967010670116701267013670146701567016670176701867019670206702167022670236702467025670266702767028670296703067031670326703367034670356703667037670386703967040670416704267043670446704567046670476704867049670506705167052670536705467055670566705767058670596706067061670626706367064670656706667067670686706967070670716707267073670746707567076670776707867079670806708167082670836708467085670866708767088670896709067091670926709367094670956709667097670986709967100671016710267103671046710567106671076710867109671106711167112671136711467115671166711767118671196712067121671226712367124671256712667127671286712967130671316713267133671346713567136671376713867139671406714167142671436714467145671466714767148671496715067151671526715367154671556715667157671586715967160671616716267163671646716567166671676716867169671706717167172671736717467175671766717767178671796718067181671826718367184671856718667187671886718967190671916719267193671946719567196671976719867199672006720167202672036720467205672066720767208672096721067211672126721367214672156721667217672186721967220672216722267223672246722567226672276722867229672306723167232672336723467235672366723767238672396724067241672426724367244672456724667247672486724967250672516725267253672546725567256672576725867259672606726167262672636726467265672666726767268672696727067271672726727367274672756727667277672786727967280672816728267283672846728567286672876728867289672906729167292672936729467295672966729767298672996730067301673026730367304673056730667307673086730967310673116731267313673146731567316673176731867319673206732167322673236732467325673266732767328673296733067331673326733367334673356733667337673386733967340673416734267343673446734567346673476734867349673506735167352673536735467355673566735767358673596736067361673626736367364673656736667367673686736967370673716737267373673746737567376673776737867379673806738167382673836738467385673866738767388673896739067391673926739367394673956739667397673986739967400674016740267403674046740567406674076740867409674106741167412674136741467415674166741767418674196742067421674226742367424674256742667427674286742967430674316743267433674346743567436674376743867439674406744167442674436744467445674466744767448674496745067451674526745367454674556745667457674586745967460674616746267463674646746567466674676746867469674706747167472674736747467475674766747767478674796748067481674826748367484674856748667487674886748967490674916749267493674946749567496674976749867499675006750167502675036750467505675066750767508675096751067511675126751367514675156751667517675186751967520675216752267523675246752567526675276752867529675306753167532675336753467535675366753767538675396754067541675426754367544675456754667547675486754967550675516755267553675546755567556675576755867559675606756167562675636756467565675666756767568675696757067571675726757367574675756757667577675786757967580675816758267583675846758567586675876758867589675906759167592675936759467595675966759767598675996760067601676026760367604676056760667607676086760967610676116761267613676146761567616676176761867619676206762167622676236762467625676266762767628676296763067631676326763367634676356763667637676386763967640676416764267643676446764567646676476764867649676506765167652676536765467655676566765767658676596766067661676626766367664676656766667667676686766967670676716767267673676746767567676676776767867679676806768167682676836768467685676866768767688676896769067691676926769367694676956769667697676986769967700677016770267703677046770567706677076770867709677106771167712677136771467715677166771767718677196772067721677226772367724677256772667727677286772967730677316773267733677346773567736677376773867739677406774167742677436774467745677466774767748677496775067751677526775367754677556775667757677586775967760677616776267763677646776567766677676776867769677706777167772677736777467775677766777767778677796778067781677826778367784677856778667787677886778967790677916779267793677946779567796677976779867799678006780167802678036780467805678066780767808678096781067811678126781367814678156781667817678186781967820678216782267823678246782567826678276782867829678306783167832678336783467835678366783767838678396784067841678426784367844678456784667847678486784967850678516785267853678546785567856678576785867859678606786167862678636786467865678666786767868678696787067871678726787367874678756787667877678786787967880678816788267883678846788567886678876788867889678906789167892678936789467895678966789767898678996790067901679026790367904679056790667907679086790967910679116791267913679146791567916679176791867919679206792167922679236792467925679266792767928679296793067931679326793367934679356793667937679386793967940679416794267943679446794567946679476794867949679506795167952679536795467955679566795767958679596796067961679626796367964679656796667967679686796967970679716797267973679746797567976679776797867979679806798167982679836798467985679866798767988679896799067991679926799367994679956799667997679986799968000680016800268003680046800568006680076800868009680106801168012680136801468015680166801768018680196802068021680226802368024680256802668027680286802968030680316803268033680346803568036680376803868039680406804168042680436804468045680466804768048680496805068051680526805368054680556805668057680586805968060680616806268063680646806568066680676806868069680706807168072680736807468075680766807768078680796808068081680826808368084680856808668087680886808968090680916809268093680946809568096680976809868099681006810168102681036810468105681066810768108681096811068111681126811368114681156811668117681186811968120681216812268123681246812568126681276812868129681306813168132681336813468135681366813768138681396814068141681426814368144681456814668147681486814968150681516815268153681546815568156681576815868159681606816168162681636816468165681666816768168681696817068171681726817368174681756817668177681786817968180681816818268183681846818568186681876818868189681906819168192681936819468195681966819768198681996820068201682026820368204682056820668207682086820968210682116821268213682146821568216682176821868219682206822168222682236822468225682266822768228682296823068231682326823368234682356823668237682386823968240682416824268243682446824568246682476824868249682506825168252682536825468255682566825768258682596826068261682626826368264682656826668267682686826968270682716827268273682746827568276682776827868279682806828168282682836828468285682866828768288682896829068291682926829368294682956829668297682986829968300683016830268303683046830568306683076830868309683106831168312683136831468315683166831768318683196832068321683226832368324683256832668327683286832968330683316833268333683346833568336683376833868339683406834168342683436834468345683466834768348683496835068351683526835368354683556835668357683586835968360683616836268363683646836568366683676836868369683706837168372683736837468375683766837768378683796838068381683826838368384683856838668387683886838968390683916839268393683946839568396683976839868399684006840168402684036840468405684066840768408684096841068411684126841368414684156841668417684186841968420684216842268423684246842568426684276842868429684306843168432684336843468435684366843768438684396844068441684426844368444684456844668447684486844968450684516845268453684546845568456684576845868459684606846168462684636846468465684666846768468684696847068471684726847368474684756847668477684786847968480684816848268483684846848568486684876848868489684906849168492684936849468495684966849768498684996850068501685026850368504685056850668507685086850968510685116851268513685146851568516685176851868519685206852168522685236852468525685266852768528685296853068531685326853368534685356853668537685386853968540685416854268543685446854568546685476854868549685506855168552685536855468555685566855768558685596856068561685626856368564685656856668567685686856968570685716857268573685746857568576685776857868579685806858168582685836858468585685866858768588685896859068591685926859368594685956859668597685986859968600686016860268603686046860568606686076860868609686106861168612686136861468615686166861768618686196862068621686226862368624686256862668627686286862968630686316863268633686346863568636686376863868639686406864168642686436864468645686466864768648686496865068651686526865368654686556865668657686586865968660686616866268663686646866568666686676866868669686706867168672686736867468675686766867768678686796868068681686826868368684686856868668687686886868968690686916869268693686946869568696686976869868699687006870168702687036870468705687066870768708687096871068711687126871368714687156871668717687186871968720687216872268723687246872568726687276872868729687306873168732687336873468735687366873768738687396874068741687426874368744687456874668747687486874968750687516875268753687546875568756687576875868759687606876168762687636876468765687666876768768687696877068771687726877368774687756877668777687786877968780687816878268783687846878568786687876878868789687906879168792687936879468795687966879768798687996880068801688026880368804688056880668807688086880968810688116881268813688146881568816688176881868819688206882168822688236882468825688266882768828688296883068831688326883368834688356883668837688386883968840688416884268843688446884568846688476884868849688506885168852688536885468855688566885768858688596886068861688626886368864688656886668867688686886968870688716887268873688746887568876688776887868879688806888168882688836888468885688866888768888688896889068891688926889368894688956889668897688986889968900689016890268903689046890568906689076890868909689106891168912689136891468915689166891768918689196892068921689226892368924689256892668927689286892968930689316893268933689346893568936689376893868939689406894168942689436894468945689466894768948689496895068951689526895368954689556895668957689586895968960689616896268963689646896568966689676896868969689706897168972689736897468975689766897768978689796898068981689826898368984689856898668987689886898968990689916899268993689946899568996689976899868999690006900169002690036900469005690066900769008690096901069011690126901369014690156901669017690186901969020690216902269023690246902569026690276902869029690306903169032690336903469035690366903769038690396904069041690426904369044690456904669047690486904969050690516905269053690546905569056690576905869059690606906169062690636906469065690666906769068690696907069071690726907369074690756907669077690786907969080690816908269083690846908569086690876908869089690906909169092690936909469095690966909769098690996910069101691026910369104691056910669107691086910969110691116911269113691146911569116691176911869119691206912169122691236912469125691266912769128691296913069131691326913369134691356913669137691386913969140691416914269143691446914569146691476914869149691506915169152691536915469155691566915769158691596916069161691626916369164691656916669167691686916969170691716917269173691746917569176691776917869179691806918169182691836918469185691866918769188691896919069191691926919369194691956919669197691986919969200692016920269203692046920569206692076920869209692106921169212692136921469215692166921769218692196922069221692226922369224692256922669227692286922969230692316923269233692346923569236692376923869239692406924169242692436924469245692466924769248692496925069251692526925369254692556925669257692586925969260692616926269263692646926569266692676926869269692706927169272692736927469275692766927769278692796928069281692826928369284692856928669287692886928969290692916929269293692946929569296692976929869299693006930169302693036930469305693066930769308693096931069311693126931369314693156931669317693186931969320693216932269323693246932569326693276932869329693306933169332693336933469335693366933769338693396934069341693426934369344693456934669347693486934969350693516935269353693546935569356693576935869359693606936169362693636936469365693666936769368693696937069371693726937369374693756937669377693786937969380693816938269383693846938569386693876938869389693906939169392693936939469395693966939769398693996940069401694026940369404694056940669407694086940969410694116941269413694146941569416694176941869419694206942169422694236942469425694266942769428694296943069431694326943369434694356943669437694386943969440694416944269443694446944569446694476944869449694506945169452694536945469455694566945769458694596946069461694626946369464694656946669467694686946969470694716947269473694746947569476694776947869479694806948169482694836948469485694866948769488694896949069491694926949369494694956949669497694986949969500695016950269503695046950569506695076950869509695106951169512695136951469515695166951769518695196952069521695226952369524695256952669527695286952969530695316953269533695346953569536695376953869539695406954169542695436954469545695466954769548695496955069551695526955369554695556955669557695586955969560695616956269563695646956569566695676956869569695706957169572695736957469575695766957769578695796958069581695826958369584695856958669587695886958969590695916959269593695946959569596695976959869599696006960169602696036960469605696066960769608696096961069611696126961369614696156961669617696186961969620696216962269623696246962569626696276962869629696306963169632696336963469635696366963769638696396964069641696426964369644696456964669647696486964969650696516965269653696546965569656696576965869659696606966169662696636966469665696666966769668696696967069671696726967369674696756967669677696786967969680696816968269683696846968569686696876968869689696906969169692696936969469695696966969769698696996970069701697026970369704697056970669707697086970969710697116971269713697146971569716697176971869719697206972169722697236972469725697266972769728697296973069731697326973369734697356973669737697386973969740697416974269743697446974569746697476974869749697506975169752697536975469755697566975769758697596976069761697626976369764697656976669767697686976969770697716977269773697746977569776697776977869779697806978169782697836978469785697866978769788697896979069791697926979369794697956979669797697986979969800698016980269803698046980569806698076980869809698106981169812698136981469815698166981769818698196982069821698226982369824698256982669827698286982969830698316983269833698346983569836698376983869839698406984169842698436984469845698466984769848698496985069851698526985369854698556985669857698586985969860698616986269863698646986569866698676986869869698706987169872698736987469875698766987769878698796988069881698826988369884698856988669887698886988969890698916989269893698946989569896698976989869899699006990169902699036990469905699066990769908699096991069911699126991369914699156991669917699186991969920699216992269923699246992569926699276992869929699306993169932699336993469935699366993769938699396994069941699426994369944699456994669947699486994969950699516995269953699546995569956699576995869959699606996169962699636996469965699666996769968699696997069971699726997369974699756997669977699786997969980699816998269983699846998569986699876998869989699906999169992699936999469995699966999769998699997000070001700027000370004700057000670007700087000970010700117001270013700147001570016700177001870019700207002170022700237002470025700267002770028700297003070031700327003370034700357003670037700387003970040700417004270043700447004570046700477004870049700507005170052700537005470055700567005770058700597006070061700627006370064700657006670067700687006970070700717007270073700747007570076700777007870079700807008170082700837008470085700867008770088700897009070091700927009370094700957009670097700987009970100701017010270103701047010570106701077010870109701107011170112701137011470115701167011770118701197012070121701227012370124701257012670127701287012970130701317013270133701347013570136701377013870139701407014170142701437014470145701467014770148701497015070151701527015370154701557015670157701587015970160701617016270163701647016570166701677016870169701707017170172701737017470175701767017770178701797018070181701827018370184701857018670187701887018970190701917019270193701947019570196701977019870199702007020170202702037020470205702067020770208702097021070211702127021370214702157021670217702187021970220702217022270223702247022570226702277022870229702307023170232702337023470235702367023770238702397024070241702427024370244702457024670247702487024970250702517025270253702547025570256702577025870259702607026170262702637026470265702667026770268702697027070271702727027370274702757027670277702787027970280702817028270283702847028570286702877028870289702907029170292702937029470295702967029770298702997030070301703027030370304703057030670307703087030970310703117031270313703147031570316703177031870319703207032170322703237032470325703267032770328703297033070331703327033370334703357033670337703387033970340703417034270343703447034570346703477034870349703507035170352703537035470355703567035770358703597036070361703627036370364703657036670367703687036970370703717037270373703747037570376703777037870379703807038170382703837038470385703867038770388703897039070391703927039370394703957039670397703987039970400704017040270403704047040570406704077040870409704107041170412704137041470415704167041770418704197042070421704227042370424704257042670427704287042970430704317043270433704347043570436704377043870439704407044170442704437044470445704467044770448704497045070451704527045370454704557045670457704587045970460704617046270463704647046570466704677046870469704707047170472704737047470475704767047770478704797048070481704827048370484704857048670487704887048970490704917049270493704947049570496704977049870499705007050170502705037050470505705067050770508705097051070511705127051370514705157051670517705187051970520705217052270523705247052570526705277052870529705307053170532705337053470535705367053770538705397054070541705427054370544705457054670547705487054970550705517055270553705547055570556705577055870559705607056170562705637056470565705667056770568705697057070571705727057370574705757057670577705787057970580705817058270583705847058570586705877058870589705907059170592705937059470595705967059770598705997060070601706027060370604706057060670607706087060970610706117061270613706147061570616706177061870619706207062170622706237062470625706267062770628706297063070631706327063370634706357063670637706387063970640706417064270643706447064570646706477064870649706507065170652706537065470655706567065770658706597066070661706627066370664706657066670667706687066970670706717067270673706747067570676706777067870679706807068170682706837068470685706867068770688706897069070691706927069370694706957069670697706987069970700707017070270703707047070570706707077070870709707107071170712707137071470715707167071770718707197072070721707227072370724707257072670727707287072970730707317073270733707347073570736707377073870739707407074170742707437074470745707467074770748707497075070751707527075370754707557075670757707587075970760707617076270763707647076570766707677076870769707707077170772707737077470775707767077770778707797078070781707827078370784707857078670787707887078970790707917079270793707947079570796707977079870799708007080170802708037080470805708067080770808708097081070811708127081370814708157081670817708187081970820708217082270823708247082570826708277082870829708307083170832708337083470835708367083770838708397084070841708427084370844708457084670847708487084970850708517085270853708547085570856708577085870859708607086170862708637086470865708667086770868708697087070871708727087370874708757087670877708787087970880708817088270883708847088570886708877088870889708907089170892708937089470895708967089770898708997090070901709027090370904709057090670907709087090970910709117091270913709147091570916709177091870919709207092170922709237092470925709267092770928709297093070931709327093370934709357093670937709387093970940709417094270943709447094570946709477094870949709507095170952709537095470955709567095770958709597096070961709627096370964709657096670967709687096970970709717097270973709747097570976709777097870979709807098170982709837098470985709867098770988709897099070991709927099370994709957099670997709987099971000710017100271003710047100571006710077100871009710107101171012710137101471015710167101771018710197102071021710227102371024710257102671027710287102971030710317103271033710347103571036710377103871039710407104171042710437104471045710467104771048710497105071051710527105371054710557105671057710587105971060710617106271063710647106571066710677106871069710707107171072710737107471075710767107771078710797108071081710827108371084710857108671087710887108971090710917109271093710947109571096710977109871099711007110171102711037110471105711067110771108711097111071111711127111371114711157111671117711187111971120711217112271123711247112571126711277112871129711307113171132711337113471135711367113771138711397114071141711427114371144711457114671147711487114971150711517115271153711547115571156711577115871159711607116171162711637116471165711667116771168711697117071171711727117371174711757117671177711787117971180711817118271183711847118571186711877118871189711907119171192711937119471195711967119771198711997120071201712027120371204712057120671207712087120971210712117121271213712147121571216712177121871219712207122171222712237122471225712267122771228712297123071231712327123371234712357123671237712387123971240712417124271243712447124571246712477124871249712507125171252712537125471255712567125771258712597126071261712627126371264712657126671267712687126971270712717127271273712747127571276712777127871279712807128171282712837128471285712867128771288712897129071291712927129371294712957129671297712987129971300713017130271303713047130571306713077130871309713107131171312713137131471315713167131771318713197132071321713227132371324713257132671327713287132971330713317133271333713347133571336713377133871339713407134171342713437134471345713467134771348713497135071351713527135371354713557135671357713587135971360713617136271363713647136571366713677136871369713707137171372713737137471375713767137771378713797138071381713827138371384713857138671387713887138971390713917139271393713947139571396713977139871399714007140171402714037140471405714067140771408714097141071411714127141371414714157141671417714187141971420714217142271423714247142571426714277142871429714307143171432714337143471435714367143771438714397144071441714427144371444714457144671447714487144971450714517145271453714547145571456714577145871459714607146171462714637146471465714667146771468714697147071471714727147371474714757147671477714787147971480714817148271483714847148571486714877148871489714907149171492714937149471495714967149771498714997150071501715027150371504715057150671507715087150971510715117151271513715147151571516715177151871519715207152171522715237152471525715267152771528715297153071531715327153371534715357153671537715387153971540715417154271543715447154571546715477154871549715507155171552715537155471555715567155771558715597156071561715627156371564715657156671567715687156971570715717157271573715747157571576715777157871579715807158171582715837158471585715867158771588715897159071591715927159371594715957159671597715987159971600716017160271603716047160571606716077160871609716107161171612716137161471615716167161771618716197162071621716227162371624716257162671627716287162971630716317163271633716347163571636716377163871639716407164171642716437164471645716467164771648716497165071651716527165371654716557165671657716587165971660716617166271663716647166571666716677166871669716707167171672716737167471675716767167771678716797168071681716827168371684716857168671687716887168971690716917169271693716947169571696716977169871699717007170171702717037170471705717067170771708717097171071711717127171371714717157171671717717187171971720717217172271723717247172571726717277172871729717307173171732717337173471735717367173771738717397174071741717427174371744717457174671747717487174971750717517175271753717547175571756717577175871759717607176171762717637176471765717667176771768717697177071771717727177371774717757177671777717787177971780717817178271783717847178571786717877178871789717907179171792717937179471795717967179771798717997180071801718027180371804718057180671807718087180971810718117181271813718147181571816718177181871819718207182171822718237182471825718267182771828718297183071831718327183371834718357183671837718387183971840718417184271843718447184571846718477184871849718507185171852718537185471855718567185771858718597186071861718627186371864718657186671867718687186971870718717187271873718747187571876718777187871879718807188171882718837188471885718867188771888718897189071891718927189371894718957189671897718987189971900719017190271903719047190571906719077190871909719107191171912719137191471915719167191771918719197192071921719227192371924719257192671927719287192971930719317193271933719347193571936719377193871939719407194171942719437194471945719467194771948719497195071951719527195371954719557195671957719587195971960719617196271963719647196571966719677196871969719707197171972719737197471975719767197771978719797198071981719827198371984719857198671987719887198971990719917199271993719947199571996719977199871999720007200172002720037200472005720067200772008720097201072011720127201372014720157201672017720187201972020720217202272023720247202572026720277202872029720307203172032720337203472035720367203772038720397204072041720427204372044720457204672047720487204972050720517205272053720547205572056720577205872059720607206172062720637206472065720667206772068720697207072071720727207372074720757207672077720787207972080720817208272083720847208572086720877208872089720907209172092720937209472095720967209772098720997210072101721027210372104721057210672107721087210972110721117211272113721147211572116721177211872119721207212172122721237212472125721267212772128721297213072131721327213372134721357213672137721387213972140721417214272143721447214572146721477214872149721507215172152721537215472155721567215772158721597216072161721627216372164721657216672167721687216972170721717217272173721747217572176721777217872179721807218172182721837218472185721867218772188721897219072191721927219372194721957219672197721987219972200722017220272203722047220572206722077220872209722107221172212722137221472215722167221772218722197222072221722227222372224722257222672227722287222972230722317223272233722347223572236722377223872239722407224172242722437224472245722467224772248722497225072251722527225372254722557225672257722587225972260722617226272263722647226572266722677226872269722707227172272722737227472275722767227772278722797228072281722827228372284722857228672287722887228972290722917229272293722947229572296722977229872299723007230172302723037230472305723067230772308723097231072311723127231372314723157231672317723187231972320723217232272323723247232572326723277232872329723307233172332723337233472335723367233772338723397234072341723427234372344723457234672347723487234972350723517235272353723547235572356723577235872359723607236172362723637236472365723667236772368723697237072371723727237372374723757237672377723787237972380723817238272383723847238572386723877238872389723907239172392723937239472395723967239772398723997240072401724027240372404724057240672407724087240972410724117241272413724147241572416724177241872419724207242172422724237242472425724267242772428724297243072431724327243372434724357243672437724387243972440724417244272443724447244572446724477244872449724507245172452724537245472455724567245772458724597246072461724627246372464724657246672467724687246972470724717247272473724747247572476724777247872479724807248172482724837248472485724867248772488724897249072491724927249372494724957249672497724987249972500725017250272503725047250572506725077250872509725107251172512725137251472515725167251772518725197252072521725227252372524725257252672527725287252972530725317253272533725347253572536725377253872539725407254172542725437254472545725467254772548725497255072551725527255372554725557255672557725587255972560725617256272563725647256572566725677256872569725707257172572725737257472575725767257772578725797258072581725827258372584725857258672587725887258972590725917259272593725947259572596725977259872599726007260172602726037260472605726067260772608726097261072611726127261372614726157261672617726187261972620726217262272623726247262572626726277262872629726307263172632726337263472635726367263772638726397264072641726427264372644726457264672647726487264972650726517265272653726547265572656726577265872659726607266172662726637266472665726667266772668726697267072671726727267372674726757267672677726787267972680726817268272683726847268572686726877268872689726907269172692726937269472695726967269772698726997270072701727027270372704727057270672707727087270972710727117271272713727147271572716727177271872719727207272172722727237272472725727267272772728727297273072731727327273372734727357273672737727387273972740727417274272743727447274572746727477274872749727507275172752727537275472755727567275772758727597276072761727627276372764727657276672767727687276972770727717277272773727747277572776727777277872779727807278172782727837278472785727867278772788727897279072791727927279372794727957279672797727987279972800728017280272803728047280572806728077280872809728107281172812728137281472815728167281772818728197282072821728227282372824728257282672827728287282972830728317283272833728347283572836728377283872839728407284172842728437284472845728467284772848728497285072851728527285372854728557285672857728587285972860728617286272863728647286572866728677286872869728707287172872728737287472875728767287772878728797288072881728827288372884728857288672887728887288972890728917289272893728947289572896728977289872899729007290172902729037290472905729067290772908729097291072911729127291372914729157291672917729187291972920729217292272923729247292572926729277292872929729307293172932729337293472935729367293772938729397294072941729427294372944729457294672947729487294972950729517295272953729547295572956729577295872959729607296172962729637296472965729667296772968729697297072971729727297372974729757297672977729787297972980729817298272983729847298572986729877298872989729907299172992729937299472995729967299772998729997300073001730027300373004730057300673007730087300973010730117301273013730147301573016730177301873019730207302173022730237302473025730267302773028730297303073031730327303373034730357303673037730387303973040730417304273043730447304573046730477304873049730507305173052730537305473055730567305773058730597306073061730627306373064730657306673067730687306973070730717307273073730747307573076730777307873079730807308173082730837308473085730867308773088730897309073091730927309373094730957309673097730987309973100731017310273103731047310573106731077310873109731107311173112731137311473115731167311773118731197312073121731227312373124731257312673127731287312973130731317313273133731347313573136731377313873139731407314173142731437314473145731467314773148731497315073151731527315373154731557315673157731587315973160731617316273163731647316573166731677316873169731707317173172731737317473175731767317773178731797318073181731827318373184731857318673187731887318973190731917319273193731947319573196731977319873199732007320173202732037320473205732067320773208732097321073211732127321373214732157321673217732187321973220732217322273223732247322573226732277322873229732307323173232732337323473235732367323773238732397324073241732427324373244732457324673247732487324973250732517325273253732547325573256732577325873259732607326173262732637326473265732667326773268732697327073271732727327373274732757327673277732787327973280732817328273283732847328573286732877328873289732907329173292732937329473295732967329773298732997330073301733027330373304733057330673307733087330973310733117331273313733147331573316733177331873319733207332173322733237332473325733267332773328733297333073331733327333373334733357333673337733387333973340733417334273343733447334573346733477334873349733507335173352733537335473355733567335773358733597336073361733627336373364733657336673367733687336973370733717337273373733747337573376733777337873379733807338173382733837338473385733867338773388733897339073391733927339373394733957339673397733987339973400734017340273403734047340573406734077340873409734107341173412734137341473415734167341773418734197342073421734227342373424734257342673427734287342973430734317343273433734347343573436734377343873439734407344173442734437344473445734467344773448734497345073451734527345373454734557345673457734587345973460734617346273463734647346573466734677346873469734707347173472734737347473475734767347773478734797348073481734827348373484734857348673487734887348973490734917349273493734947349573496734977349873499735007350173502735037350473505735067350773508735097351073511735127351373514735157351673517735187351973520735217352273523735247352573526735277352873529735307353173532735337353473535735367353773538735397354073541735427354373544735457354673547735487354973550735517355273553735547355573556735577355873559735607356173562735637356473565735667356773568735697357073571735727357373574735757357673577735787357973580735817358273583735847358573586735877358873589735907359173592735937359473595735967359773598735997360073601736027360373604736057360673607736087360973610736117361273613736147361573616736177361873619736207362173622736237362473625736267362773628736297363073631736327363373634736357363673637736387363973640736417364273643736447364573646736477364873649736507365173652736537365473655736567365773658736597366073661736627366373664736657366673667736687366973670736717367273673736747367573676736777367873679736807368173682736837368473685736867368773688736897369073691736927369373694736957369673697736987369973700737017370273703737047370573706737077370873709737107371173712737137371473715737167371773718737197372073721737227372373724737257372673727737287372973730737317373273733737347373573736737377373873739737407374173742737437374473745737467374773748737497375073751737527375373754737557375673757737587375973760737617376273763737647376573766737677376873769737707377173772737737377473775737767377773778737797378073781737827378373784737857378673787737887378973790737917379273793737947379573796737977379873799738007380173802738037380473805738067380773808738097381073811738127381373814738157381673817738187381973820738217382273823738247382573826738277382873829738307383173832738337383473835738367383773838738397384073841738427384373844738457384673847738487384973850738517385273853738547385573856738577385873859738607386173862738637386473865738667386773868738697387073871738727387373874738757387673877738787387973880738817388273883738847388573886738877388873889738907389173892738937389473895738967389773898738997390073901739027390373904739057390673907739087390973910739117391273913739147391573916739177391873919739207392173922739237392473925739267392773928739297393073931739327393373934739357393673937739387393973940739417394273943739447394573946739477394873949739507395173952739537395473955739567395773958739597396073961739627396373964739657396673967739687396973970739717397273973739747397573976739777397873979739807398173982739837398473985739867398773988739897399073991739927399373994739957399673997739987399974000740017400274003740047400574006740077400874009740107401174012740137401474015740167401774018740197402074021740227402374024740257402674027740287402974030740317403274033740347403574036740377403874039740407404174042740437404474045740467404774048740497405074051740527405374054740557405674057740587405974060740617406274063740647406574066740677406874069740707407174072740737407474075740767407774078740797408074081740827408374084740857408674087740887408974090740917409274093740947409574096740977409874099741007410174102741037410474105741067410774108741097411074111741127411374114741157411674117741187411974120741217412274123741247412574126741277412874129741307413174132741337413474135741367413774138741397414074141741427414374144741457414674147741487414974150741517415274153741547415574156741577415874159741607416174162741637416474165741667416774168741697417074171741727417374174741757417674177741787417974180741817418274183741847418574186741877418874189741907419174192741937419474195741967419774198741997420074201742027420374204742057420674207742087420974210742117421274213742147421574216742177421874219742207422174222742237422474225742267422774228742297423074231742327423374234742357423674237742387423974240742417424274243742447424574246742477424874249742507425174252742537425474255742567425774258742597426074261742627426374264742657426674267742687426974270742717427274273742747427574276742777427874279742807428174282742837428474285742867428774288742897429074291742927429374294742957429674297742987429974300743017430274303743047430574306743077430874309743107431174312743137431474315743167431774318743197432074321743227432374324743257432674327743287432974330743317433274333743347433574336743377433874339743407434174342743437434474345743467434774348743497435074351743527435374354743557435674357743587435974360743617436274363743647436574366743677436874369743707437174372743737437474375743767437774378743797438074381743827438374384743857438674387743887438974390743917439274393743947439574396743977439874399744007440174402744037440474405744067440774408744097441074411744127441374414744157441674417744187441974420744217442274423744247442574426744277442874429744307443174432744337443474435744367443774438744397444074441744427444374444744457444674447744487444974450744517445274453744547445574456744577445874459744607446174462744637446474465744667446774468744697447074471744727447374474744757447674477744787447974480744817448274483744847448574486744877448874489744907449174492744937449474495744967449774498744997450074501745027450374504745057450674507745087450974510745117451274513745147451574516745177451874519745207452174522745237452474525745267452774528745297453074531745327453374534745357453674537745387453974540745417454274543745447454574546745477454874549745507455174552745537455474555745567455774558745597456074561745627456374564745657456674567745687456974570745717457274573745747457574576745777457874579745807458174582745837458474585745867458774588745897459074591745927459374594745957459674597745987459974600746017460274603746047460574606746077460874609746107461174612746137461474615746167461774618746197462074621746227462374624746257462674627746287462974630746317463274633746347463574636746377463874639746407464174642746437464474645746467464774648746497465074651746527465374654746557465674657746587465974660746617466274663746647466574666746677466874669746707467174672746737467474675746767467774678746797468074681746827468374684746857468674687746887468974690746917469274693746947469574696746977469874699747007470174702747037470474705747067470774708747097471074711747127471374714747157471674717747187471974720747217472274723747247472574726747277472874729747307473174732747337473474735747367473774738747397474074741747427474374744747457474674747747487474974750747517475274753747547475574756747577475874759747607476174762747637476474765747667476774768747697477074771747727477374774747757477674777747787477974780747817478274783747847478574786747877478874789747907479174792747937479474795747967479774798747997480074801748027480374804748057480674807748087480974810748117481274813748147481574816748177481874819748207482174822748237482474825748267482774828748297483074831748327483374834748357483674837748387483974840748417484274843748447484574846748477484874849748507485174852748537485474855748567485774858748597486074861748627486374864748657486674867748687486974870748717487274873748747487574876748777487874879748807488174882748837488474885748867488774888748897489074891748927489374894748957489674897748987489974900749017490274903749047490574906749077490874909749107491174912749137491474915749167491774918749197492074921749227492374924749257492674927749287492974930749317493274933749347493574936749377493874939749407494174942749437494474945749467494774948749497495074951749527495374954749557495674957749587495974960749617496274963749647496574966749677496874969749707497174972749737497474975749767497774978749797498074981749827498374984749857498674987749887498974990749917499274993749947499574996749977499874999750007500175002750037500475005750067500775008750097501075011750127501375014750157501675017750187501975020750217502275023750247502575026750277502875029750307503175032750337503475035750367503775038750397504075041750427504375044750457504675047750487504975050750517505275053750547505575056750577505875059750607506175062750637506475065750667506775068750697507075071750727507375074750757507675077750787507975080750817508275083750847508575086750877508875089750907509175092750937509475095750967509775098750997510075101751027510375104751057510675107751087510975110751117511275113751147511575116751177511875119751207512175122751237512475125751267512775128751297513075131751327513375134751357513675137751387513975140751417514275143751447514575146751477514875149751507515175152751537515475155751567515775158751597516075161751627516375164751657516675167751687516975170751717517275173751747517575176751777517875179751807518175182751837518475185751867518775188751897519075191751927519375194751957519675197751987519975200752017520275203752047520575206752077520875209752107521175212752137521475215752167521775218752197522075221752227522375224752257522675227752287522975230752317523275233752347523575236752377523875239752407524175242752437524475245752467524775248752497525075251752527525375254752557525675257752587525975260752617526275263752647526575266752677526875269752707527175272752737527475275752767527775278752797528075281752827528375284752857528675287752887528975290752917529275293752947529575296752977529875299753007530175302753037530475305753067530775308753097531075311753127531375314753157531675317753187531975320753217532275323753247532575326753277532875329753307533175332753337533475335753367533775338753397534075341753427534375344753457534675347753487534975350753517535275353753547535575356753577535875359753607536175362753637536475365753667536775368753697537075371753727537375374753757537675377753787537975380753817538275383753847538575386753877538875389753907539175392753937539475395753967539775398753997540075401754027540375404754057540675407754087540975410754117541275413754147541575416754177541875419754207542175422754237542475425754267542775428754297543075431754327543375434754357543675437754387543975440754417544275443754447544575446754477544875449754507545175452754537545475455754567545775458754597546075461754627546375464754657546675467754687546975470754717547275473754747547575476754777547875479754807548175482754837548475485754867548775488754897549075491754927549375494754957549675497754987549975500755017550275503755047550575506755077550875509755107551175512755137551475515755167551775518755197552075521755227552375524755257552675527755287552975530755317553275533755347553575536755377553875539755407554175542755437554475545755467554775548755497555075551755527555375554755557555675557755587555975560755617556275563755647556575566755677556875569755707557175572755737557475575755767557775578755797558075581755827558375584755857558675587755887558975590755917559275593755947559575596755977559875599756007560175602756037560475605756067560775608756097561075611756127561375614756157561675617756187561975620756217562275623756247562575626756277562875629756307563175632756337563475635756367563775638756397564075641756427564375644756457564675647756487564975650756517565275653756547565575656756577565875659756607566175662756637566475665756667566775668756697567075671756727567375674756757567675677756787567975680756817568275683756847568575686756877568875689756907569175692756937569475695756967569775698756997570075701757027570375704757057570675707757087570975710757117571275713757147571575716757177571875719757207572175722757237572475725757267572775728757297573075731757327573375734757357573675737757387573975740757417574275743757447574575746757477574875749757507575175752757537575475755757567575775758757597576075761757627576375764757657576675767757687576975770757717577275773757747577575776757777577875779757807578175782757837578475785757867578775788757897579075791757927579375794757957579675797757987579975800758017580275803758047580575806758077580875809758107581175812758137581475815758167581775818758197582075821758227582375824758257582675827758287582975830758317583275833758347583575836758377583875839758407584175842758437584475845758467584775848758497585075851758527585375854758557585675857758587585975860758617586275863758647586575866758677586875869758707587175872758737587475875758767587775878758797588075881758827588375884758857588675887758887588975890758917589275893758947589575896758977589875899759007590175902759037590475905759067590775908759097591075911759127591375914759157591675917759187591975920759217592275923759247592575926759277592875929759307593175932759337593475935759367593775938759397594075941759427594375944759457594675947759487594975950759517595275953759547595575956759577595875959759607596175962759637596475965759667596775968759697597075971759727597375974759757597675977759787597975980759817598275983759847598575986759877598875989759907599175992759937599475995759967599775998759997600076001760027600376004760057600676007760087600976010760117601276013760147601576016760177601876019760207602176022760237602476025760267602776028760297603076031760327603376034760357603676037760387603976040760417604276043760447604576046760477604876049760507605176052760537605476055760567605776058760597606076061760627606376064760657606676067760687606976070760717607276073760747607576076760777607876079760807608176082760837608476085760867608776088760897609076091760927609376094760957609676097760987609976100761017610276103761047610576106761077610876109761107611176112761137611476115761167611776118761197612076121761227612376124761257612676127761287612976130761317613276133761347613576136761377613876139761407614176142761437614476145761467614776148761497615076151761527615376154761557615676157761587615976160761617616276163761647616576166761677616876169761707617176172761737617476175761767617776178761797618076181761827618376184761857618676187761887618976190761917619276193761947619576196761977619876199762007620176202762037620476205762067620776208762097621076211762127621376214762157621676217762187621976220762217622276223762247622576226762277622876229762307623176232762337623476235762367623776238762397624076241762427624376244762457624676247762487624976250762517625276253762547625576256762577625876259762607626176262762637626476265762667626776268762697627076271762727627376274762757627676277762787627976280762817628276283762847628576286762877628876289762907629176292762937629476295762967629776298762997630076301763027630376304763057630676307763087630976310763117631276313763147631576316763177631876319763207632176322763237632476325763267632776328763297633076331763327633376334763357633676337763387633976340763417634276343763447634576346763477634876349763507635176352763537635476355763567635776358763597636076361763627636376364763657636676367763687636976370763717637276373763747637576376763777637876379763807638176382763837638476385763867638776388763897639076391763927639376394763957639676397763987639976400764017640276403764047640576406764077640876409764107641176412764137641476415764167641776418764197642076421764227642376424764257642676427764287642976430764317643276433764347643576436764377643876439764407644176442764437644476445764467644776448764497645076451764527645376454764557645676457764587645976460764617646276463764647646576466764677646876469764707647176472764737647476475764767647776478764797648076481764827648376484764857648676487764887648976490764917649276493764947649576496764977649876499765007650176502765037650476505765067650776508765097651076511765127651376514765157651676517765187651976520765217652276523765247652576526765277652876529765307653176532765337653476535765367653776538765397654076541765427654376544765457654676547765487654976550765517655276553765547655576556765577655876559765607656176562765637656476565765667656776568765697657076571765727657376574765757657676577765787657976580765817658276583765847658576586765877658876589765907659176592765937659476595765967659776598765997660076601766027660376604766057660676607766087660976610766117661276613766147661576616766177661876619766207662176622766237662476625766267662776628766297663076631766327663376634766357663676637766387663976640766417664276643766447664576646766477664876649766507665176652766537665476655766567665776658766597666076661766627666376664766657666676667766687666976670766717667276673766747667576676766777667876679766807668176682766837668476685766867668776688766897669076691766927669376694766957669676697766987669976700767017670276703767047670576706767077670876709767107671176712767137671476715767167671776718767197672076721767227672376724767257672676727767287672976730767317673276733767347673576736767377673876739767407674176742767437674476745767467674776748767497675076751767527675376754767557675676757767587675976760767617676276763767647676576766767677676876769767707677176772767737677476775767767677776778767797678076781767827678376784767857678676787767887678976790767917679276793767947679576796767977679876799768007680176802768037680476805768067680776808768097681076811768127681376814768157681676817768187681976820768217682276823768247682576826768277682876829768307683176832768337683476835768367683776838768397684076841768427684376844768457684676847768487684976850768517685276853768547685576856768577685876859768607686176862768637686476865768667686776868768697687076871768727687376874768757687676877768787687976880768817688276883768847688576886768877688876889768907689176892768937689476895768967689776898768997690076901769027690376904769057690676907769087690976910769117691276913769147691576916769177691876919769207692176922769237692476925769267692776928769297693076931769327693376934769357693676937769387693976940769417694276943769447694576946769477694876949769507695176952769537695476955769567695776958769597696076961769627696376964769657696676967769687696976970769717697276973769747697576976769777697876979769807698176982769837698476985769867698776988769897699076991769927699376994769957699676997769987699977000770017700277003770047700577006770077700877009770107701177012770137701477015770167701777018770197702077021770227702377024770257702677027770287702977030770317703277033770347703577036770377703877039770407704177042770437704477045770467704777048770497705077051770527705377054770557705677057770587705977060770617706277063770647706577066770677706877069770707707177072770737707477075770767707777078770797708077081770827708377084770857708677087770887708977090770917709277093770947709577096770977709877099771007710177102771037710477105771067710777108771097711077111771127711377114771157711677117771187711977120771217712277123771247712577126771277712877129771307713177132771337713477135771367713777138771397714077141771427714377144771457714677147771487714977150771517715277153771547715577156771577715877159771607716177162771637716477165771667716777168771697717077171771727717377174771757717677177771787717977180771817718277183771847718577186771877718877189771907719177192771937719477195771967719777198771997720077201772027720377204772057720677207772087720977210772117721277213772147721577216772177721877219772207722177222772237722477225772267722777228772297723077231772327723377234772357723677237772387723977240772417724277243772447724577246772477724877249772507725177252772537725477255772567725777258772597726077261772627726377264772657726677267772687726977270772717727277273772747727577276772777727877279772807728177282772837728477285772867728777288772897729077291772927729377294772957729677297772987729977300773017730277303773047730577306773077730877309773107731177312773137731477315773167731777318773197732077321773227732377324773257732677327773287732977330773317733277333773347733577336773377733877339773407734177342773437734477345773467734777348773497735077351773527735377354773557735677357773587735977360773617736277363773647736577366773677736877369773707737177372773737737477375773767737777378773797738077381773827738377384773857738677387773887738977390773917739277393773947739577396773977739877399774007740177402774037740477405774067740777408774097741077411774127741377414774157741677417774187741977420774217742277423774247742577426774277742877429774307743177432774337743477435774367743777438774397744077441774427744377444774457744677447774487744977450774517745277453774547745577456774577745877459774607746177462774637746477465774667746777468774697747077471774727747377474774757747677477774787747977480774817748277483774847748577486774877748877489774907749177492774937749477495774967749777498774997750077501775027750377504775057750677507775087750977510775117751277513775147751577516775177751877519775207752177522775237752477525775267752777528775297753077531775327753377534775357753677537775387753977540775417754277543775447754577546775477754877549775507755177552775537755477555775567755777558775597756077561775627756377564775657756677567775687756977570775717757277573775747757577576775777757877579775807758177582775837758477585775867758777588775897759077591775927759377594775957759677597775987759977600776017760277603776047760577606776077760877609776107761177612776137761477615776167761777618776197762077621776227762377624776257762677627776287762977630776317763277633776347763577636776377763877639776407764177642776437764477645776467764777648776497765077651776527765377654776557765677657776587765977660776617766277663776647766577666776677766877669776707767177672776737767477675776767767777678776797768077681776827768377684776857768677687776887768977690776917769277693776947769577696776977769877699777007770177702777037770477705777067770777708777097771077711777127771377714777157771677717777187771977720777217772277723777247772577726777277772877729777307773177732777337773477735777367773777738777397774077741777427774377744777457774677747777487774977750777517775277753777547775577756777577775877759777607776177762777637776477765777667776777768777697777077771777727777377774777757777677777777787777977780777817778277783777847778577786777877778877789777907779177792777937779477795777967779777798777997780077801778027780377804778057780677807778087780977810778117781277813778147781577816778177781877819778207782177822778237782477825778267782777828778297783077831778327783377834778357783677837778387783977840778417784277843778447784577846778477784877849778507785177852778537785477855778567785777858778597786077861778627786377864778657786677867778687786977870778717787277873778747787577876778777787877879778807788177882778837788477885778867788777888778897789077891778927789377894778957789677897778987789977900779017790277903779047790577906779077790877909779107791177912779137791477915779167791777918779197792077921779227792377924779257792677927779287792977930779317793277933779347793577936779377793877939779407794177942779437794477945779467794777948779497795077951779527795377954779557795677957779587795977960779617796277963779647796577966779677796877969779707797177972779737797477975779767797777978779797798077981779827798377984779857798677987779887798977990779917799277993779947799577996779977799877999780007800178002780037800478005780067800778008780097801078011780127801378014780157801678017780187801978020780217802278023780247802578026780277802878029780307803178032780337803478035780367803778038780397804078041780427804378044780457804678047780487804978050780517805278053780547805578056780577805878059780607806178062780637806478065780667806778068780697807078071780727807378074780757807678077780787807978080780817808278083780847808578086780877808878089780907809178092780937809478095780967809778098780997810078101781027810378104781057810678107781087810978110781117811278113781147811578116781177811878119781207812178122781237812478125781267812778128781297813078131781327813378134781357813678137781387813978140781417814278143781447814578146781477814878149781507815178152781537815478155781567815778158781597816078161781627816378164781657816678167781687816978170781717817278173781747817578176781777817878179781807818178182781837818478185781867818778188781897819078191781927819378194781957819678197781987819978200782017820278203782047820578206782077820878209782107821178212782137821478215782167821778218782197822078221782227822378224782257822678227782287822978230782317823278233782347823578236782377823878239782407824178242782437824478245782467824778248782497825078251782527825378254782557825678257782587825978260782617826278263782647826578266782677826878269782707827178272782737827478275782767827778278782797828078281782827828378284782857828678287782887828978290782917829278293782947829578296782977829878299783007830178302783037830478305783067830778308783097831078311783127831378314783157831678317783187831978320783217832278323783247832578326783277832878329783307833178332783337833478335783367833778338783397834078341783427834378344783457834678347783487834978350783517835278353783547835578356783577835878359783607836178362783637836478365783667836778368783697837078371783727837378374783757837678377783787837978380783817838278383783847838578386783877838878389783907839178392783937839478395783967839778398783997840078401784027840378404784057840678407784087840978410784117841278413784147841578416784177841878419784207842178422784237842478425784267842778428784297843078431784327843378434784357843678437784387843978440784417844278443784447844578446784477844878449784507845178452784537845478455784567845778458784597846078461784627846378464784657846678467784687846978470784717847278473784747847578476784777847878479784807848178482784837848478485784867848778488784897849078491784927849378494784957849678497784987849978500785017850278503785047850578506785077850878509785107851178512785137851478515785167851778518785197852078521785227852378524785257852678527785287852978530785317853278533785347853578536785377853878539785407854178542785437854478545785467854778548785497855078551785527855378554785557855678557785587855978560785617856278563785647856578566785677856878569785707857178572785737857478575785767857778578785797858078581785827858378584785857858678587785887858978590785917859278593785947859578596785977859878599786007860178602786037860478605786067860778608786097861078611786127861378614786157861678617786187861978620786217862278623786247862578626786277862878629786307863178632786337863478635786367863778638786397864078641786427864378644786457864678647786487864978650786517865278653786547865578656786577865878659786607866178662786637866478665786667866778668786697867078671786727867378674786757867678677786787867978680786817868278683786847868578686786877868878689786907869178692786937869478695786967869778698786997870078701787027870378704787057870678707787087870978710787117871278713787147871578716787177871878719787207872178722787237872478725787267872778728787297873078731787327873378734787357873678737787387873978740787417874278743787447874578746787477874878749787507875178752787537875478755787567875778758787597876078761787627876378764787657876678767787687876978770787717877278773787747877578776787777877878779787807878178782787837878478785787867878778788787897879078791787927879378794787957879678797787987879978800788017880278803788047880578806788077880878809788107881178812788137881478815788167881778818788197882078821788227882378824788257882678827788287882978830788317883278833788347883578836788377883878839788407884178842788437884478845788467884778848788497885078851788527885378854788557885678857788587885978860788617886278863788647886578866788677886878869788707887178872788737887478875788767887778878788797888078881788827888378884788857888678887788887888978890788917889278893788947889578896788977889878899789007890178902789037890478905789067890778908789097891078911789127891378914789157891678917789187891978920789217892278923789247892578926789277892878929789307893178932789337893478935789367893778938789397894078941789427894378944789457894678947789487894978950789517895278953789547895578956789577895878959789607896178962789637896478965789667896778968789697897078971789727897378974789757897678977789787897978980789817898278983789847898578986789877898878989789907899178992789937899478995789967899778998789997900079001790027900379004790057900679007790087900979010790117901279013790147901579016790177901879019790207902179022790237902479025790267902779028790297903079031790327903379034790357903679037790387903979040790417904279043790447904579046790477904879049790507905179052790537905479055790567905779058790597906079061790627906379064790657906679067790687906979070790717907279073790747907579076790777907879079790807908179082790837908479085790867908779088790897909079091790927909379094790957909679097790987909979100791017910279103791047910579106791077910879109791107911179112791137911479115791167911779118791197912079121791227912379124791257912679127791287912979130791317913279133791347913579136791377913879139791407914179142791437914479145791467914779148791497915079151791527915379154791557915679157791587915979160791617916279163791647916579166791677916879169791707917179172791737917479175791767917779178791797918079181791827918379184791857918679187791887918979190791917919279193791947919579196791977919879199792007920179202792037920479205792067920779208792097921079211792127921379214792157921679217792187921979220792217922279223792247922579226792277922879229792307923179232792337923479235792367923779238792397924079241792427924379244792457924679247792487924979250792517925279253792547925579256792577925879259792607926179262792637926479265792667926779268792697927079271792727927379274792757927679277792787927979280792817928279283792847928579286792877928879289792907929179292792937929479295792967929779298792997930079301793027930379304793057930679307793087930979310793117931279313793147931579316793177931879319793207932179322793237932479325793267932779328793297933079331793327933379334793357933679337793387933979340793417934279343793447934579346793477934879349793507935179352793537935479355793567935779358793597936079361793627936379364793657936679367793687936979370793717937279373793747937579376793777937879379793807938179382793837938479385793867938779388793897939079391793927939379394793957939679397793987939979400794017940279403794047940579406794077940879409794107941179412794137941479415794167941779418794197942079421794227942379424794257942679427794287942979430794317943279433794347943579436794377943879439794407944179442794437944479445794467944779448794497945079451794527945379454794557945679457794587945979460794617946279463794647946579466794677946879469794707947179472794737947479475794767947779478794797948079481794827948379484794857948679487794887948979490794917949279493794947949579496794977949879499795007950179502795037950479505795067950779508795097951079511795127951379514795157951679517795187951979520795217952279523795247952579526795277952879529795307953179532795337953479535795367953779538795397954079541795427954379544795457954679547795487954979550795517955279553795547955579556795577955879559795607956179562795637956479565795667956779568795697957079571795727957379574795757957679577795787957979580795817958279583795847958579586795877958879589795907959179592795937959479595795967959779598795997960079601796027960379604796057960679607796087960979610796117961279613796147961579616796177961879619796207962179622796237962479625796267962779628796297963079631796327963379634796357963679637796387963979640796417964279643796447964579646796477964879649796507965179652796537965479655796567965779658796597966079661796627966379664796657966679667796687966979670796717967279673796747967579676796777967879679796807968179682796837968479685796867968779688796897969079691796927969379694796957969679697796987969979700797017970279703797047970579706797077970879709797107971179712797137971479715797167971779718797197972079721797227972379724797257972679727797287972979730797317973279733797347973579736797377973879739797407974179742797437974479745797467974779748797497975079751797527975379754797557975679757797587975979760797617976279763797647976579766797677976879769797707977179772797737977479775797767977779778797797978079781797827978379784797857978679787797887978979790797917979279793797947979579796797977979879799798007980179802798037980479805798067980779808798097981079811798127981379814798157981679817798187981979820798217982279823798247982579826798277982879829798307983179832798337983479835798367983779838798397984079841798427984379844798457984679847798487984979850798517985279853798547985579856798577985879859798607986179862798637986479865798667986779868798697987079871798727987379874798757987679877798787987979880798817988279883798847988579886798877988879889798907989179892798937989479895798967989779898798997990079901799027990379904799057990679907799087990979910799117991279913799147991579916799177991879919799207992179922799237992479925799267992779928799297993079931799327993379934799357993679937799387993979940799417994279943799447994579946799477994879949799507995179952799537995479955799567995779958799597996079961799627996379964799657996679967799687996979970799717997279973799747997579976799777997879979799807998179982799837998479985799867998779988799897999079991799927999379994799957999679997799987999980000800018000280003800048000580006800078000880009800108001180012800138001480015800168001780018800198002080021800228002380024800258002680027800288002980030800318003280033800348003580036800378003880039800408004180042800438004480045800468004780048800498005080051800528005380054800558005680057800588005980060800618006280063800648006580066800678006880069800708007180072800738007480075800768007780078800798008080081800828008380084800858008680087800888008980090800918009280093800948009580096800978009880099801008010180102801038010480105801068010780108801098011080111801128011380114801158011680117801188011980120801218012280123801248012580126801278012880129801308013180132801338013480135801368013780138801398014080141801428014380144801458014680147801488014980150801518015280153801548015580156801578015880159801608016180162801638016480165801668016780168801698017080171801728017380174801758017680177801788017980180801818018280183801848018580186801878018880189801908019180192801938019480195801968019780198801998020080201802028020380204802058020680207802088020980210802118021280213802148021580216802178021880219802208022180222802238022480225802268022780228802298023080231802328023380234802358023680237802388023980240802418024280243802448024580246802478024880249802508025180252802538025480255802568025780258802598026080261802628026380264802658026680267802688026980270802718027280273802748027580276802778027880279802808028180282802838028480285802868028780288802898029080291802928029380294802958029680297802988029980300803018030280303803048030580306803078030880309803108031180312803138031480315803168031780318803198032080321803228032380324803258032680327803288032980330803318033280333803348033580336803378033880339803408034180342803438034480345803468034780348803498035080351803528035380354803558035680357803588035980360803618036280363803648036580366803678036880369803708037180372803738037480375803768037780378803798038080381803828038380384803858038680387803888038980390803918039280393803948039580396803978039880399804008040180402804038040480405804068040780408804098041080411804128041380414804158041680417804188041980420804218042280423804248042580426804278042880429804308043180432804338043480435804368043780438804398044080441804428044380444804458044680447804488044980450804518045280453804548045580456804578045880459804608046180462804638046480465804668046780468804698047080471804728047380474804758047680477804788047980480804818048280483804848048580486804878048880489804908049180492804938049480495804968049780498804998050080501805028050380504805058050680507805088050980510805118051280513805148051580516805178051880519805208052180522805238052480525805268052780528805298053080531805328053380534805358053680537805388053980540805418054280543805448054580546805478054880549805508055180552805538055480555805568055780558805598056080561805628056380564805658056680567805688056980570805718057280573805748057580576805778057880579805808058180582805838058480585805868058780588805898059080591805928059380594805958059680597805988059980600806018060280603806048060580606806078060880609806108061180612806138061480615806168061780618806198062080621806228062380624806258062680627806288062980630806318063280633806348063580636806378063880639806408064180642806438064480645806468064780648806498065080651806528065380654806558065680657806588065980660806618066280663806648066580666806678066880669806708067180672806738067480675806768067780678806798068080681806828068380684806858068680687806888068980690806918069280693806948069580696806978069880699807008070180702807038070480705807068070780708807098071080711807128071380714807158071680717807188071980720807218072280723807248072580726807278072880729807308073180732807338073480735807368073780738807398074080741807428074380744807458074680747807488074980750807518075280753807548075580756807578075880759807608076180762807638076480765807668076780768807698077080771807728077380774807758077680777807788077980780807818078280783807848078580786807878078880789807908079180792807938079480795807968079780798807998080080801808028080380804808058080680807808088080980810808118081280813808148081580816808178081880819808208082180822808238082480825808268082780828808298083080831808328083380834808358083680837808388083980840808418084280843808448084580846808478084880849808508085180852808538085480855808568085780858808598086080861808628086380864808658086680867808688086980870808718087280873808748087580876808778087880879808808088180882808838088480885808868088780888808898089080891808928089380894808958089680897808988089980900809018090280903809048090580906809078090880909809108091180912809138091480915809168091780918809198092080921809228092380924809258092680927809288092980930809318093280933809348093580936809378093880939809408094180942809438094480945809468094780948809498095080951809528095380954809558095680957809588095980960809618096280963809648096580966809678096880969809708097180972809738097480975809768097780978809798098080981809828098380984809858098680987809888098980990809918099280993809948099580996809978099880999810008100181002810038100481005810068100781008810098101081011810128101381014810158101681017810188101981020810218102281023810248102581026810278102881029810308103181032810338103481035810368103781038810398104081041810428104381044810458104681047810488104981050810518105281053810548105581056810578105881059810608106181062810638106481065810668106781068810698107081071810728107381074810758107681077810788107981080810818108281083810848108581086810878108881089810908109181092810938109481095810968109781098810998110081101811028110381104811058110681107811088110981110811118111281113811148111581116811178111881119811208112181122811238112481125811268112781128811298113081131811328113381134811358113681137811388113981140811418114281143811448114581146811478114881149811508115181152811538115481155811568115781158811598116081161811628116381164811658116681167811688116981170811718117281173811748117581176811778117881179811808118181182811838118481185811868118781188811898119081191811928119381194811958119681197811988119981200812018120281203812048120581206812078120881209812108121181212812138121481215812168121781218812198122081221812228122381224812258122681227812288122981230812318123281233812348123581236812378123881239812408124181242812438124481245812468124781248812498125081251812528125381254812558125681257812588125981260812618126281263812648126581266812678126881269812708127181272812738127481275812768127781278812798128081281812828128381284812858128681287812888128981290812918129281293812948129581296812978129881299813008130181302813038130481305813068130781308813098131081311813128131381314813158131681317813188131981320813218132281323813248132581326813278132881329813308133181332813338133481335813368133781338813398134081341813428134381344813458134681347813488134981350813518135281353813548135581356813578135881359813608136181362813638136481365813668136781368813698137081371813728137381374813758137681377813788137981380813818138281383813848138581386813878138881389813908139181392813938139481395813968139781398813998140081401814028140381404814058140681407814088140981410814118141281413814148141581416814178141881419814208142181422814238142481425814268142781428814298143081431814328143381434814358143681437814388143981440814418144281443814448144581446814478144881449814508145181452814538145481455814568145781458814598146081461814628146381464814658146681467814688146981470814718147281473814748147581476814778147881479814808148181482814838148481485814868148781488814898149081491814928149381494814958149681497814988149981500815018150281503815048150581506815078150881509815108151181512815138151481515815168151781518815198152081521815228152381524815258152681527815288152981530815318153281533815348153581536815378153881539815408154181542815438154481545815468154781548815498155081551815528155381554815558155681557815588155981560815618156281563815648156581566815678156881569815708157181572815738157481575815768157781578815798158081581815828158381584815858158681587815888158981590815918159281593815948159581596815978159881599816008160181602816038160481605816068160781608816098161081611816128161381614816158161681617816188161981620816218162281623816248162581626816278162881629816308163181632816338163481635816368163781638816398164081641816428164381644816458164681647816488164981650816518165281653816548165581656816578165881659816608166181662816638166481665816668166781668816698167081671816728167381674816758167681677816788167981680816818168281683816848168581686816878168881689816908169181692816938169481695816968169781698816998170081701817028170381704817058170681707817088170981710817118171281713817148171581716817178171881719817208172181722817238172481725817268172781728817298173081731817328173381734817358173681737817388173981740817418174281743817448174581746817478174881749817508175181752817538175481755817568175781758817598176081761817628176381764817658176681767817688176981770817718177281773817748177581776817778177881779817808178181782817838178481785817868178781788817898179081791817928179381794817958179681797817988179981800818018180281803818048180581806818078180881809818108181181812818138181481815818168181781818818198182081821818228182381824818258182681827818288182981830818318183281833818348183581836818378183881839818408184181842818438184481845818468184781848818498185081851818528185381854818558185681857818588185981860818618186281863818648186581866818678186881869818708187181872818738187481875818768187781878818798188081881818828188381884818858188681887818888188981890818918189281893818948189581896818978189881899819008190181902819038190481905819068190781908819098191081911819128191381914819158191681917819188191981920819218192281923819248192581926819278192881929819308193181932819338193481935819368193781938819398194081941819428194381944819458194681947819488194981950819518195281953819548195581956819578195881959819608196181962819638196481965819668196781968819698197081971819728197381974819758197681977819788197981980819818198281983819848198581986819878198881989819908199181992819938199481995819968199781998819998200082001820028200382004820058200682007820088200982010820118201282013820148201582016820178201882019820208202182022820238202482025820268202782028820298203082031820328203382034820358203682037820388203982040820418204282043820448204582046820478204882049820508205182052820538205482055820568205782058820598206082061820628206382064820658206682067820688206982070820718207282073820748207582076820778207882079820808208182082820838208482085820868208782088820898209082091820928209382094820958209682097820988209982100821018210282103821048210582106821078210882109821108211182112821138211482115821168211782118821198212082121821228212382124821258212682127821288212982130821318213282133821348213582136821378213882139821408214182142821438214482145821468214782148821498215082151821528215382154821558215682157821588215982160821618216282163821648216582166821678216882169821708217182172821738217482175821768217782178821798218082181821828218382184821858218682187821888218982190821918219282193821948219582196821978219882199822008220182202822038220482205822068220782208822098221082211822128221382214822158221682217822188221982220822218222282223822248222582226822278222882229822308223182232822338223482235822368223782238822398224082241822428224382244822458224682247822488224982250822518225282253822548225582256822578225882259822608226182262822638226482265822668226782268822698227082271822728227382274822758227682277822788227982280822818228282283822848228582286822878228882289822908229182292822938229482295822968229782298822998230082301823028230382304823058230682307823088230982310823118231282313823148231582316823178231882319823208232182322823238232482325823268232782328823298233082331823328233382334823358233682337823388233982340823418234282343823448234582346823478234882349823508235182352823538235482355823568235782358823598236082361823628236382364823658236682367823688236982370823718237282373823748237582376823778237882379823808238182382823838238482385823868238782388823898239082391823928239382394823958239682397823988239982400824018240282403824048240582406824078240882409824108241182412824138241482415824168241782418824198242082421824228242382424824258242682427824288242982430824318243282433824348243582436824378243882439824408244182442824438244482445824468244782448824498245082451824528245382454824558245682457824588245982460824618246282463824648246582466824678246882469824708247182472824738247482475824768247782478824798248082481824828248382484824858248682487824888248982490824918249282493824948249582496824978249882499825008250182502825038250482505825068250782508825098251082511825128251382514825158251682517825188251982520825218252282523825248252582526825278252882529825308253182532825338253482535825368253782538825398254082541825428254382544825458254682547825488254982550825518255282553825548255582556825578255882559825608256182562825638256482565825668256782568825698257082571825728257382574825758257682577825788257982580825818258282583825848258582586825878258882589825908259182592825938259482595825968259782598825998260082601826028260382604826058260682607826088260982610826118261282613826148261582616826178261882619826208262182622826238262482625826268262782628826298263082631826328263382634826358263682637826388263982640826418264282643826448264582646826478264882649826508265182652826538265482655826568265782658826598266082661826628266382664826658266682667826688266982670826718267282673826748267582676826778267882679826808268182682826838268482685826868268782688826898269082691826928269382694826958269682697826988269982700827018270282703827048270582706827078270882709827108271182712827138271482715827168271782718827198272082721827228272382724827258272682727827288272982730827318273282733827348273582736827378273882739827408274182742827438274482745827468274782748827498275082751827528275382754827558275682757827588275982760827618276282763827648276582766827678276882769827708277182772827738277482775827768277782778827798278082781827828278382784827858278682787827888278982790827918279282793827948279582796827978279882799828008280182802828038280482805828068280782808828098281082811828128281382814828158281682817828188281982820828218282282823828248282582826828278282882829828308283182832828338283482835828368283782838828398284082841828428284382844828458284682847828488284982850828518285282853828548285582856828578285882859828608286182862828638286482865828668286782868828698287082871828728287382874828758287682877828788287982880828818288282883828848288582886828878288882889828908289182892828938289482895828968289782898828998290082901829028290382904829058290682907829088290982910829118291282913829148291582916829178291882919829208292182922829238292482925829268292782928829298293082931829328293382934829358293682937829388293982940829418294282943829448294582946829478294882949829508295182952829538295482955829568295782958829598296082961829628296382964829658296682967829688296982970829718297282973829748297582976829778297882979829808298182982829838298482985829868298782988829898299082991829928299382994829958299682997829988299983000830018300283003830048300583006830078300883009830108301183012830138301483015830168301783018830198302083021830228302383024830258302683027830288302983030830318303283033830348303583036830378303883039830408304183042830438304483045830468304783048830498305083051830528305383054830558305683057830588305983060830618306283063830648306583066830678306883069830708307183072830738307483075830768307783078830798308083081830828308383084830858308683087830888308983090830918309283093830948309583096830978309883099831008310183102831038310483105831068310783108831098311083111831128311383114831158311683117831188311983120831218312283123831248312583126831278312883129831308313183132831338313483135831368313783138831398314083141831428314383144831458314683147831488314983150831518315283153831548315583156831578315883159831608316183162831638316483165831668316783168831698317083171831728317383174831758317683177831788317983180831818318283183831848318583186831878318883189831908319183192831938319483195831968319783198831998320083201832028320383204832058320683207832088320983210832118321283213832148321583216832178321883219832208322183222832238322483225832268322783228832298323083231832328323383234832358323683237832388323983240832418324283243832448324583246832478324883249832508325183252832538325483255832568325783258832598326083261832628326383264832658326683267832688326983270832718327283273832748327583276832778327883279832808328183282832838328483285832868328783288832898329083291832928329383294832958329683297832988329983300833018330283303833048330583306833078330883309833108331183312833138331483315833168331783318833198332083321833228332383324833258332683327833288332983330833318333283333833348333583336833378333883339833408334183342833438334483345833468334783348833498335083351833528335383354833558335683357833588335983360833618336283363833648336583366833678336883369833708337183372833738337483375833768337783378833798338083381833828338383384833858338683387833888338983390833918339283393833948339583396833978339883399834008340183402834038340483405834068340783408834098341083411834128341383414834158341683417834188341983420834218342283423834248342583426834278342883429834308343183432834338343483435834368343783438834398344083441834428344383444834458344683447834488344983450834518345283453834548345583456834578345883459834608346183462834638346483465834668346783468834698347083471834728347383474834758347683477834788347983480834818348283483834848348583486834878348883489834908349183492834938349483495834968349783498834998350083501835028350383504835058350683507835088350983510835118351283513835148351583516835178351883519835208352183522835238352483525835268352783528835298353083531835328353383534835358353683537835388353983540835418354283543835448354583546835478354883549835508355183552835538355483555835568355783558835598356083561835628356383564835658356683567835688356983570835718357283573835748357583576835778357883579835808358183582835838358483585835868358783588835898359083591835928359383594835958359683597835988359983600836018360283603836048360583606836078360883609836108361183612836138361483615836168361783618836198362083621836228362383624836258362683627836288362983630836318363283633836348363583636836378363883639836408364183642836438364483645836468364783648836498365083651836528365383654836558365683657836588365983660836618366283663836648366583666836678366883669836708367183672836738367483675836768367783678836798368083681836828368383684836858368683687836888368983690836918369283693836948369583696836978369883699837008370183702837038370483705837068370783708837098371083711837128371383714837158371683717837188371983720837218372283723837248372583726837278372883729837308373183732837338373483735837368373783738837398374083741837428374383744837458374683747837488374983750837518375283753837548375583756837578375883759837608376183762837638376483765837668376783768837698377083771837728377383774837758377683777837788377983780837818378283783837848378583786837878378883789837908379183792837938379483795837968379783798837998380083801838028380383804838058380683807838088380983810838118381283813838148381583816838178381883819838208382183822838238382483825838268382783828838298383083831838328383383834838358383683837838388383983840838418384283843838448384583846838478384883849838508385183852838538385483855838568385783858838598386083861838628386383864838658386683867838688386983870838718387283873838748387583876838778387883879838808388183882838838388483885838868388783888838898389083891838928389383894838958389683897838988389983900839018390283903839048390583906839078390883909839108391183912839138391483915839168391783918839198392083921839228392383924839258392683927839288392983930839318393283933839348393583936839378393883939839408394183942839438394483945839468394783948839498395083951839528395383954839558395683957839588395983960839618396283963839648396583966839678396883969839708397183972839738397483975839768397783978839798398083981839828398383984839858398683987839888398983990839918399283993839948399583996839978399883999840008400184002840038400484005840068400784008840098401084011840128401384014840158401684017840188401984020840218402284023840248402584026840278402884029840308403184032840338403484035840368403784038840398404084041840428404384044840458404684047840488404984050840518405284053840548405584056840578405884059840608406184062840638406484065840668406784068840698407084071840728407384074840758407684077840788407984080840818408284083840848408584086840878408884089840908409184092840938409484095840968409784098840998410084101841028410384104841058410684107841088410984110841118411284113841148411584116841178411884119841208412184122841238412484125841268412784128841298413084131841328413384134841358413684137841388413984140841418414284143841448414584146841478414884149841508415184152841538415484155841568415784158841598416084161841628416384164841658416684167841688416984170841718417284173841748417584176841778417884179841808418184182841838418484185841868418784188841898419084191841928419384194841958419684197841988419984200842018420284203842048420584206842078420884209842108421184212842138421484215842168421784218842198422084221842228422384224842258422684227842288422984230842318423284233842348423584236842378423884239842408424184242842438424484245842468424784248842498425084251842528425384254842558425684257842588425984260842618426284263842648426584266842678426884269842708427184272842738427484275842768427784278842798428084281842828428384284842858428684287842888428984290842918429284293842948429584296842978429884299843008430184302843038430484305843068430784308843098431084311843128431384314843158431684317843188431984320843218432284323843248432584326843278432884329843308433184332843338433484335843368433784338843398434084341843428434384344843458434684347843488434984350843518435284353843548435584356843578435884359843608436184362843638436484365843668436784368843698437084371843728437384374843758437684377843788437984380843818438284383843848438584386843878438884389843908439184392843938439484395843968439784398843998440084401844028440384404844058440684407844088440984410844118441284413844148441584416844178441884419844208442184422844238442484425844268442784428844298443084431844328443384434844358443684437844388443984440844418444284443844448444584446844478444884449844508445184452844538445484455844568445784458844598446084461844628446384464844658446684467844688446984470844718447284473844748447584476844778447884479844808448184482844838448484485844868448784488844898449084491844928449384494844958449684497844988449984500845018450284503845048450584506845078450884509845108451184512845138451484515845168451784518845198452084521845228452384524845258452684527845288452984530845318453284533845348453584536845378453884539845408454184542845438454484545845468454784548845498455084551845528455384554845558455684557845588455984560845618456284563845648456584566845678456884569845708457184572845738457484575845768457784578845798458084581845828458384584845858458684587845888458984590845918459284593845948459584596845978459884599846008460184602846038460484605846068460784608846098461084611846128461384614846158461684617846188461984620846218462284623846248462584626846278462884629846308463184632846338463484635846368463784638846398464084641846428464384644846458464684647846488464984650846518465284653846548465584656846578465884659846608466184662846638466484665846668466784668846698467084671846728467384674846758467684677846788467984680846818468284683846848468584686846878468884689846908469184692846938469484695846968469784698846998470084701847028470384704847058470684707847088470984710847118471284713847148471584716847178471884719847208472184722847238472484725847268472784728847298473084731847328473384734847358473684737847388473984740847418474284743847448474584746847478474884749847508475184752847538475484755847568475784758847598476084761847628476384764847658476684767847688476984770847718477284773847748477584776847778477884779847808478184782847838478484785847868478784788847898479084791847928479384794847958479684797847988479984800848018480284803848048480584806848078480884809848108481184812848138481484815848168481784818848198482084821848228482384824848258482684827848288482984830848318483284833848348483584836848378483884839848408484184842848438484484845848468484784848848498485084851848528485384854848558485684857848588485984860848618486284863848648486584866848678486884869848708487184872848738487484875848768487784878848798488084881848828488384884848858488684887848888488984890848918489284893848948489584896848978489884899849008490184902849038490484905849068490784908849098491084911849128491384914849158491684917849188491984920849218492284923849248492584926849278492884929849308493184932849338493484935849368493784938849398494084941849428494384944849458494684947849488494984950849518495284953849548495584956849578495884959849608496184962849638496484965849668496784968849698497084971849728497384974849758497684977849788497984980849818498284983849848498584986849878498884989849908499184992849938499484995849968499784998849998500085001850028500385004850058500685007850088500985010850118501285013850148501585016850178501885019850208502185022850238502485025850268502785028850298503085031850328503385034850358503685037850388503985040850418504285043850448504585046850478504885049850508505185052850538505485055850568505785058850598506085061850628506385064850658506685067850688506985070850718507285073850748507585076850778507885079850808508185082850838508485085850868508785088850898509085091850928509385094850958509685097850988509985100851018510285103851048510585106851078510885109851108511185112851138511485115851168511785118851198512085121851228512385124851258512685127851288512985130851318513285133851348513585136851378513885139851408514185142851438514485145851468514785148851498515085151851528515385154851558515685157851588515985160851618516285163851648516585166851678516885169851708517185172851738517485175851768517785178851798518085181851828518385184851858518685187851888518985190851918519285193851948519585196851978519885199852008520185202852038520485205852068520785208852098521085211852128521385214852158521685217852188521985220852218522285223852248522585226852278522885229852308523185232852338523485235852368523785238852398524085241852428524385244852458524685247852488524985250852518525285253852548525585256852578525885259852608526185262852638526485265852668526785268852698527085271852728527385274852758527685277852788527985280852818528285283852848528585286852878528885289852908529185292852938529485295852968529785298852998530085301853028530385304853058530685307853088530985310853118531285313853148531585316853178531885319853208532185322853238532485325853268532785328853298533085331853328533385334853358533685337853388533985340853418534285343853448534585346853478534885349853508535185352853538535485355853568535785358853598536085361853628536385364853658536685367853688536985370853718537285373853748537585376853778537885379853808538185382853838538485385853868538785388853898539085391853928539385394853958539685397853988539985400854018540285403854048540585406854078540885409854108541185412854138541485415854168541785418854198542085421854228542385424854258542685427854288542985430854318543285433854348543585436854378543885439854408544185442854438544485445854468544785448854498545085451854528545385454854558545685457854588545985460854618546285463854648546585466854678546885469854708547185472854738547485475854768547785478854798548085481854828548385484854858548685487854888548985490854918549285493854948549585496854978549885499855008550185502855038550485505855068550785508855098551085511855128551385514855158551685517855188551985520855218552285523855248552585526855278552885529855308553185532855338553485535855368553785538855398554085541855428554385544855458554685547855488554985550855518555285553855548555585556855578555885559855608556185562855638556485565855668556785568855698557085571855728557385574855758557685577855788557985580855818558285583855848558585586855878558885589855908559185592855938559485595855968559785598855998560085601856028560385604856058560685607856088560985610856118561285613856148561585616856178561885619856208562185622856238562485625856268562785628856298563085631856328563385634856358563685637856388563985640856418564285643856448564585646856478564885649856508565185652856538565485655856568565785658856598566085661856628566385664856658566685667856688566985670856718567285673856748567585676856778567885679856808568185682856838568485685856868568785688856898569085691856928569385694856958569685697856988569985700857018570285703857048570585706857078570885709857108571185712857138571485715857168571785718857198572085721857228572385724857258572685727857288572985730857318573285733857348573585736857378573885739857408574185742857438574485745857468574785748857498575085751857528575385754857558575685757857588575985760857618576285763857648576585766857678576885769857708577185772857738577485775857768577785778857798578085781857828578385784857858578685787857888578985790857918579285793857948579585796857978579885799858008580185802858038580485805858068580785808858098581085811858128581385814858158581685817858188581985820858218582285823858248582585826858278582885829858308583185832858338583485835858368583785838858398584085841858428584385844858458584685847858488584985850858518585285853858548585585856858578585885859858608586185862858638586485865858668586785868858698587085871858728587385874858758587685877858788587985880858818588285883858848588585886858878588885889858908589185892858938589485895858968589785898858998590085901859028590385904859058590685907859088590985910859118591285913859148591585916859178591885919859208592185922859238592485925859268592785928859298593085931859328593385934859358593685937859388593985940859418594285943859448594585946859478594885949859508595185952859538595485955859568595785958859598596085961859628596385964859658596685967859688596985970859718597285973859748597585976859778597885979859808598185982859838598485985859868598785988859898599085991859928599385994859958599685997859988599986000860018600286003860048600586006860078600886009860108601186012860138601486015860168601786018860198602086021860228602386024860258602686027860288602986030860318603286033860348603586036860378603886039860408604186042860438604486045860468604786048860498605086051860528605386054860558605686057860588605986060860618606286063860648606586066860678606886069860708607186072860738607486075860768607786078860798608086081860828608386084860858608686087860888608986090860918609286093860948609586096860978609886099861008610186102861038610486105861068610786108861098611086111861128611386114861158611686117861188611986120861218612286123861248612586126861278612886129861308613186132861338613486135861368613786138861398614086141861428614386144861458614686147861488614986150861518615286153861548615586156861578615886159861608616186162861638616486165861668616786168861698617086171861728617386174861758617686177861788617986180861818618286183861848618586186861878618886189861908619186192861938619486195861968619786198861998620086201862028620386204862058620686207862088620986210862118621286213862148621586216862178621886219862208622186222862238622486225862268622786228862298623086231862328623386234862358623686237862388623986240862418624286243862448624586246862478624886249862508625186252862538625486255862568625786258862598626086261862628626386264862658626686267862688626986270862718627286273862748627586276862778627886279862808628186282862838628486285862868628786288862898629086291862928629386294862958629686297862988629986300863018630286303863048630586306863078630886309863108631186312863138631486315863168631786318863198632086321863228632386324863258632686327863288632986330863318633286333863348633586336863378633886339863408634186342863438634486345863468634786348863498635086351863528635386354863558635686357863588635986360863618636286363863648636586366863678636886369863708637186372863738637486375863768637786378863798638086381863828638386384863858638686387863888638986390863918639286393863948639586396863978639886399864008640186402864038640486405864068640786408864098641086411864128641386414864158641686417864188641986420864218642286423864248642586426864278642886429864308643186432864338643486435864368643786438864398644086441864428644386444864458644686447864488644986450864518645286453864548645586456864578645886459864608646186462864638646486465864668646786468864698647086471864728647386474864758647686477864788647986480864818648286483864848648586486864878648886489864908649186492864938649486495864968649786498864998650086501865028650386504865058650686507865088650986510865118651286513865148651586516865178651886519865208652186522865238652486525865268652786528865298653086531865328653386534865358653686537865388653986540865418654286543865448654586546865478654886549865508655186552865538655486555865568655786558865598656086561865628656386564865658656686567865688656986570865718657286573865748657586576865778657886579865808658186582865838658486585865868658786588865898659086591865928659386594865958659686597865988659986600866018660286603866048660586606866078660886609866108661186612866138661486615866168661786618866198662086621866228662386624866258662686627866288662986630866318663286633866348663586636866378663886639866408664186642866438664486645866468664786648866498665086651866528665386654866558665686657866588665986660866618666286663866648666586666866678666886669866708667186672866738667486675866768667786678866798668086681866828668386684866858668686687866888668986690866918669286693866948669586696866978669886699867008670186702867038670486705867068670786708867098671086711867128671386714867158671686717867188671986720867218672286723867248672586726867278672886729867308673186732867338673486735867368673786738867398674086741867428674386744867458674686747867488674986750867518675286753867548675586756867578675886759867608676186762867638676486765867668676786768867698677086771867728677386774867758677686777867788677986780867818678286783867848678586786867878678886789867908679186792867938679486795867968679786798867998680086801868028680386804868058680686807868088680986810868118681286813868148681586816868178681886819868208682186822868238682486825868268682786828868298683086831868328683386834868358683686837868388683986840868418684286843868448684586846868478684886849868508685186852868538685486855868568685786858868598686086861868628686386864868658686686867868688686986870868718687286873868748687586876868778687886879868808688186882868838688486885868868688786888868898689086891868928689386894868958689686897868988689986900869018690286903869048690586906869078690886909869108691186912869138691486915869168691786918869198692086921869228692386924869258692686927869288692986930869318693286933869348693586936869378693886939869408694186942869438694486945869468694786948869498695086951869528695386954869558695686957869588695986960869618696286963869648696586966869678696886969869708697186972869738697486975869768697786978869798698086981869828698386984869858698686987869888698986990869918699286993869948699586996869978699886999870008700187002870038700487005870068700787008870098701087011870128701387014870158701687017870188701987020870218702287023870248702587026870278702887029870308703187032870338703487035870368703787038870398704087041870428704387044870458704687047870488704987050870518705287053870548705587056870578705887059870608706187062870638706487065870668706787068870698707087071870728707387074870758707687077870788707987080870818708287083870848708587086870878708887089870908709187092870938709487095870968709787098870998710087101871028710387104871058710687107871088710987110871118711287113871148711587116871178711887119871208712187122871238712487125871268712787128871298713087131
  1. /*!
  2. *
  3. * @supermap/vue-iclient.(https://iclient.supermap.io)
  4. * Copyright© 2000 - 2020 SuperMap Software Co.Ltd
  5. * license: Apache-2.0
  6. * version: v10.1.0
  7. *
  8. */
  9. (function webpackUniversalModuleDefinition(root, factory) {
  10. if(typeof exports === 'object' && typeof module === 'object')
  11. module.exports = factory(require("xlsx"), require("../static/libs/mapboxgl/mapbox-gl-enhance.js"), require("vue"), require("three/examples/jsm/loaders/GLTFLoader"), require("vue-echarts"), require("three"), require("ant-design-vue"), require("echarts-liquidfill"), require("three/examples/jsm/loaders/OBJLoader2"), require("vue-cesium"), require("video.js"), require("../static/libs/deckgl/deck.gl.min.js"), require("../static/libs/echarts-layer/EchartsLayer.js"), require("../static/libs/iclient-mapboxgl/iclient-mapboxgl.min.js"), require("echarts"), require("../static/libs/mapbox-gl-draw/mapbox-gl-draw.js"), require("shapefile"));
  12. else if(typeof define === 'function' && define.amd)
  13. define(["xlsx", "../static/libs/mapboxgl/mapbox-gl-enhance.js", "vue", "three/examples/jsm/loaders/GLTFLoader", "vue-echarts", "three", "ant-design-vue", "echarts-liquidfill", "three/examples/jsm/loaders/OBJLoader2", "vue-cesium", "video.js", "../static/libs/deckgl/deck.gl.min.js", "../static/libs/echarts-layer/EchartsLayer.js", "../static/libs/iclient-mapboxgl/iclient-mapboxgl.min.js", "echarts", "../static/libs/mapbox-gl-draw/mapbox-gl-draw.js", "shapefile"], factory);
  14. else if(typeof exports === 'object')
  15. exports["Components"] = factory(require("xlsx"), require("../static/libs/mapboxgl/mapbox-gl-enhance.js"), require("vue"), require("three/examples/jsm/loaders/GLTFLoader"), require("vue-echarts"), require("three"), require("ant-design-vue"), require("echarts-liquidfill"), require("three/examples/jsm/loaders/OBJLoader2"), require("vue-cesium"), require("video.js"), require("../static/libs/deckgl/deck.gl.min.js"), require("../static/libs/echarts-layer/EchartsLayer.js"), require("../static/libs/iclient-mapboxgl/iclient-mapboxgl.min.js"), require("echarts"), require("../static/libs/mapbox-gl-draw/mapbox-gl-draw.js"), require("shapefile"));
  16. else
  17. root["SuperMap"] = root["SuperMap"] || {}, root["SuperMap"]["Components"] = factory(root["XLSX"], root["mapboxgl"], root["Vue"], root["THREE.GLTFLoader"], root["VueECharts"], root["THREE"], root["antd"], root["echarts-liquidfill"], root["THREE.OBJLoader2"], root["VueCesium"], root["_videojs"], root["DeckGL"], root["EchartsLayer"], root["SuperMap"], root["echarts"], root["MapboxDraw"], root["shapefile"]);
  18. })(window, function(__WEBPACK_EXTERNAL_MODULE__1c98__, __WEBPACK_EXTERNAL_MODULE__3d57__, __WEBPACK_EXTERNAL_MODULE__5643__, __WEBPACK_EXTERNAL_MODULE__6d09__, __WEBPACK_EXTERNAL_MODULE__8275__, __WEBPACK_EXTERNAL_MODULE__8b5b__, __WEBPACK_EXTERNAL_MODULE_a587__, __WEBPACK_EXTERNAL_MODULE_acbb__, __WEBPACK_EXTERNAL_MODULE_b9f8__, __WEBPACK_EXTERNAL_MODULE_be1f__, __WEBPACK_EXTERNAL_MODULE_be3f__, __WEBPACK_EXTERNAL_MODULE_ca40__, __WEBPACK_EXTERNAL_MODULE_e76e__, __WEBPACK_EXTERNAL_MODULE_f240__, __WEBPACK_EXTERNAL_MODULE_f840__, __WEBPACK_EXTERNAL_MODULE_fc22__, __WEBPACK_EXTERNAL_MODULE_ffd5__) {
  19. return /******/ (function(modules) { // webpackBootstrap
  20. /******/ // The module cache
  21. /******/ var installedModules = {};
  22. /******/
  23. /******/ // The require function
  24. /******/ function __webpack_require__(moduleId) {
  25. /******/
  26. /******/ // Check if module is in cache
  27. /******/ if(installedModules[moduleId]) {
  28. /******/ return installedModules[moduleId].exports;
  29. /******/ }
  30. /******/ // Create a new module (and put it into the cache)
  31. /******/ var module = installedModules[moduleId] = {
  32. /******/ i: moduleId,
  33. /******/ l: false,
  34. /******/ exports: {}
  35. /******/ };
  36. /******/
  37. /******/ // Execute the module function
  38. /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  39. /******/
  40. /******/ // Flag the module as loaded
  41. /******/ module.l = true;
  42. /******/
  43. /******/ // Return the exports of the module
  44. /******/ return module.exports;
  45. /******/ }
  46. /******/
  47. /******/
  48. /******/ // expose the modules object (__webpack_modules__)
  49. /******/ __webpack_require__.m = modules;
  50. /******/
  51. /******/ // expose the module cache
  52. /******/ __webpack_require__.c = installedModules;
  53. /******/
  54. /******/ // define getter function for harmony exports
  55. /******/ __webpack_require__.d = function(exports, name, getter) {
  56. /******/ if(!__webpack_require__.o(exports, name)) {
  57. /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
  58. /******/ }
  59. /******/ };
  60. /******/
  61. /******/ // define __esModule on exports
  62. /******/ __webpack_require__.r = function(exports) {
  63. /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  64. /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  65. /******/ }
  66. /******/ Object.defineProperty(exports, '__esModule', { value: true });
  67. /******/ };
  68. /******/
  69. /******/ // create a fake namespace object
  70. /******/ // mode & 1: value is a module id, require it
  71. /******/ // mode & 2: merge all properties of value into the ns
  72. /******/ // mode & 4: return value when already ns object
  73. /******/ // mode & 8|1: behave like require
  74. /******/ __webpack_require__.t = function(value, mode) {
  75. /******/ if(mode & 1) value = __webpack_require__(value);
  76. /******/ if(mode & 8) return value;
  77. /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
  78. /******/ var ns = Object.create(null);
  79. /******/ __webpack_require__.r(ns);
  80. /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
  81. /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
  82. /******/ return ns;
  83. /******/ };
  84. /******/
  85. /******/ // getDefaultExport function for compatibility with non-harmony modules
  86. /******/ __webpack_require__.n = function(module) {
  87. /******/ var getter = module && module.__esModule ?
  88. /******/ function getDefault() { return module['default']; } :
  89. /******/ function getModuleExports() { return module; };
  90. /******/ __webpack_require__.d(getter, 'a', getter);
  91. /******/ return getter;
  92. /******/ };
  93. /******/
  94. /******/ // Object.prototype.hasOwnProperty.call
  95. /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  96. /******/
  97. /******/ // __webpack_public_path__
  98. /******/ __webpack_require__.p = "/";
  99. /******/
  100. /******/
  101. /******/ // Load entry module and return exports
  102. /******/ return __webpack_require__(__webpack_require__.s = 0);
  103. /******/ })
  104. /************************************************************************/
  105. /******/ ({
  106. /***/ 0:
  107. /***/ (function(module, exports, __webpack_require__) {
  108. module.exports = __webpack_require__("5c15");
  109. /***/ }),
  110. /***/ "022b":
  111. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  112. "use strict";
  113. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/indicator/Indicator.vue?vue&type=template&id=39b17318&
  114. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-indicator",style:(_vm.getBackgroundStyle)},[_c('div',{class:("sm-component-indicator__content sm-component-indicator__content-" + _vm.mode)},[_c('span',{directives:[{name:"show",rawName:"v-show",value:(_vm.showTitleUnit),expression:"showTitleUnit"}],staticClass:"sm-component-indicator__title",style:([_vm.unit_titleStyle, _vm.getTextColorStyle])},[_vm._v(_vm._s(_vm.titleData))]),_vm._v(" "),_c('div',[_c('span',{staticClass:"sm-component-indicator__num",style:(_vm.indicatorStyle)},[(_vm.isNumber(_vm.indicatorNum))?_c('countTo',{attrs:{"decimals":_vm.calDecimals,"startVal":_vm.startData,"endVal":_vm.numData,"duration":Number(_vm.duration) || 1000,"separator":_vm.separator,"numBackground":_vm.numBackground,"numSpacing":_vm.numSpacing,"separatorBackground":_vm.separatorBackground,"fontSize":parseFloat(_vm.fontSize) + _vm.fontUnit}}):_vm._e(),_vm._v("\n "+_vm._s(_vm.isNumber(_vm.indicatorNum) ? '' : _vm.indicatorNum)+"\n ")],1),_vm._v(" "),_c('span',{directives:[{name:"show",rawName:"v-show",value:(_vm.showTitleUnit),expression:"showTitleUnit"}],staticClass:"sm-component-indicator__unit",style:([_vm.unit_titleStyle, _vm.getTextColorStyle])},[_vm._v(_vm._s(_vm.unitData))])])])])}
  115. var staticRenderFns = []
  116. // CONCATENATED MODULE: ./src/common/indicator/Indicator.vue?vue&type=template&id=39b17318&
  117. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  118. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  119. /***/ }),
  120. /***/ "027a":
  121. /***/ (function(module, exports, __webpack_require__) {
  122. "use strict";
  123. var _interopRequireDefault = __webpack_require__("8e6d");
  124. Object.defineProperty(exports, "__esModule", {
  125. value: true
  126. });
  127. exports.request = request;
  128. exports.generatePointsFeatures = exports.clearSearchResultLayer = exports.resetSearchSourceData = exports.addPoints = exports.toBBoxString = exports.tdtSetHighlightIcon = exports.getStatisticsResult = exports.sourceNames = exports.tiandituTransit = exports.tiandituSearch = exports.config = void 0;
  129. var _axios = _interopRequireDefault(__webpack_require__("bd18"));
  130. var _bbox = _interopRequireDefault(__webpack_require__("1164"));
  131. var _transformScale = _interopRequireDefault(__webpack_require__("f052"));
  132. var _envelope = _interopRequireDefault(__webpack_require__("0c08"));
  133. var _helpers = __webpack_require__("38ce");
  134. var _sprite = _interopRequireDefault(__webpack_require__("090e"));
  135. var _sprite2 = _interopRequireDefault(__webpack_require__("074d"));
  136. var CancelToken = _axios.default.CancelToken;
  137. var axiosService = _axios.default.create();
  138. var cancelSourceList = {};
  139. axiosService.interceptors.request.use( // 请求拦截
  140. function (config) {
  141. cancelRequest(config.url);
  142. config.cancelToken = new CancelToken(function executor(c) {
  143. // An executor function receives a cancel function as a parameter
  144. cancelSourceList[config.url] = c;
  145. });
  146. return config;
  147. }, function (error) {
  148. return Promise.reject(error);
  149. });
  150. axiosService.interceptors.response.use(function (response) {
  151. cancelRequest(response.config.url);
  152. return response;
  153. }, function (error) {
  154. var isCancel = _axios.default.isCancel(error);
  155. if (isCancel) {
  156. var cancelError = {
  157. isCancel: isCancel
  158. };
  159. return Promise.reject(cancelError);
  160. } else {
  161. return Promise.reject(error.response && error.response.data); // 返回接口返回的错误信息
  162. }
  163. });
  164. function request(_ref) {
  165. var url = _ref.url,
  166. _ref$params = _ref.params,
  167. params = _ref$params === void 0 ? {} : _ref$params,
  168. _ref$method = _ref.method,
  169. method = _ref$method === void 0 ? 'get' : _ref$method;
  170. var options = {
  171. url: url,
  172. method: method
  173. };
  174. if (method.toLowerCase() === 'get') {
  175. options.params = params;
  176. } else {
  177. options.data = params;
  178. }
  179. return axiosService(options).then(function (res) {
  180. return res.data;
  181. }).catch(function (error) {
  182. return Promise.reject(error);
  183. });
  184. }
  185. function cancelRequest(sourceName) {
  186. var source = cancelSourceList[sourceName];
  187. if (typeof source === 'function') {
  188. source('取消重复请求');
  189. delete cancelSourceList[sourceName];
  190. }
  191. }
  192. var config = {
  193. HOME_URL: 'https://www.tianditu.gov.cn',
  194. feedbackIp: 'https://www.tianditu.gov.cn/feedback',
  195. T_URL: 'https://map.tianditu.gov.cn',
  196. T_SSO_URL: 'https://sso.tianditu.gov.cn',
  197. T_UMS_URL: 'https://uums.tianditu.gov.cn',
  198. SEARCH_URL: 'https://api.tianditu.gov.cn/search',
  199. DRIVE_URL: 'https://api.tianditu.gov.cn/drive',
  200. BUS_URL: 'https://api.tianditu.gov.cn/transit',
  201. GEOCODE_URL: 'https://api.tianditu.gov.cn/geocoder',
  202. API_URL: 'https://lbs.tianditu.gov.cn/'
  203. };
  204. exports.config = config;
  205. var tiandituSearch = function tiandituSearch(url, params) {
  206. return request({
  207. url: url,
  208. params: params
  209. });
  210. };
  211. exports.tiandituSearch = tiandituSearch;
  212. var tiandituTransit = function tiandituTransit(url, params) {
  213. return request({
  214. url: url,
  215. params: params
  216. });
  217. };
  218. exports.tiandituTransit = tiandituTransit;
  219. var sourceNames = {
  220. // tdtSearch-xxxx
  221. searchResultPoints: 'tdt-search-searchResultPoints',
  222. searchResultLine: 'tdt-search-searchResultLine',
  223. searchResultPolygon: 'tdt-search-searchResultPolygon',
  224. searchResultPointsOfLine: 'tdt-search-searchResultPointsOfLine'
  225. }; // search和route共用的方法
  226. exports.sourceNames = sourceNames;
  227. var getStatisticsResult = function getStatisticsResult(data) {
  228. var result = {
  229. priorityCitys: data.priorityCitys,
  230. allAdmins: data.allAdmins.map(function (parent, index) {
  231. var parentKey = "0-".concat(index);
  232. var item = {
  233. key: parentKey,
  234. title: parent.name,
  235. info: parent,
  236. children: [],
  237. scopedSlots: {
  238. title: 'title',
  239. info: 'info'
  240. }
  241. };
  242. parent.childAdmins && parent.childAdmins.forEach(function (child, key) {
  243. var childKey = "".concat(parentKey, "-").concat(key);
  244. var subItem = {
  245. key: childKey,
  246. title: child.name,
  247. info: child,
  248. children: [],
  249. scopedSlots: {
  250. title: 'title',
  251. info: 'info'
  252. }
  253. };
  254. child.childAdmins && child.childAdmins.forEach(function (grandSon, subKey) {
  255. var grandKey = "".concat(childKey, "-").concat(subKey);
  256. var grandItem = {
  257. key: grandKey,
  258. title: grandSon.name,
  259. info: grandSon,
  260. scopedSlots: {
  261. title: 'title',
  262. info: 'info'
  263. }
  264. };
  265. subItem.children.push(grandItem);
  266. });
  267. item.children.push(subItem);
  268. });
  269. return item;
  270. })
  271. };
  272. return result;
  273. }; // 点设置高亮
  274. exports.getStatisticsResult = getStatisticsResult;
  275. var tdtSetHighlightIcon = function tdtSetHighlightIcon(map, sourceName, hotPointID) {
  276. if (map.getLayer("".concat(sourceName, "-highlight"))) {
  277. if (hotPointID) {
  278. map.setFilter("".concat(sourceName, "-highlight"), ['==', 'hotPointID', hotPointID]);
  279. return;
  280. }
  281. map.setFilter("".concat(sourceName, "-highlight"), ['==', 'hotPointID', '']);
  282. }
  283. }; // bounds转换成string
  284. exports.tdtSetHighlightIcon = tdtSetHighlightIcon;
  285. var toBBoxString = function toBBoxString(map) {
  286. var bounds = map.getBounds();
  287. return bounds.getWest().toFixed(5) + ',' + bounds.getSouth().toFixed(5) + ',' + bounds.getEast().toFixed(5) + ',' + bounds.getNorth().toFixed(5);
  288. }; // 添加点图层
  289. exports.toBBoxString = toBBoxString;
  290. var addPoints = function addPoints(map, sourceName, features) {
  291. if (features && map) {
  292. var source = map.getSource(sourceName);
  293. var sourceData = features;
  294. if (source) {
  295. source.setData(sourceData);
  296. } else {
  297. map.addSource(sourceName, {
  298. type: 'geojson',
  299. data: sourceData
  300. });
  301. var image = new Image();
  302. image.src = _sprite2.default;
  303. image.onload = function () {
  304. map.style.addSpriteObject(sourceName, image, _sprite.default);
  305. map.addLayer({
  306. id: sourceName,
  307. type: 'symbol',
  308. source: sourceName,
  309. layout: {
  310. 'icon-image': 'buoy-icon-{serialNum}',
  311. 'icon-allow-overlap': true
  312. }
  313. });
  314. map.addLayer({
  315. id: "".concat(sourceName, "-highlight"),
  316. type: 'symbol',
  317. source: sourceName,
  318. layout: {
  319. 'icon-image': 'buoy-icon-active-{serialNum}',
  320. 'icon-allow-overlap': true
  321. },
  322. filter: ['==', 'hotPointID', '']
  323. });
  324. };
  325. }
  326. var bounds = (0, _bbox.default)((0, _transformScale.default)((0, _envelope.default)(features), 1.7));
  327. map.fitBounds([[bounds[0], bounds[1]], [bounds[2], bounds[3]]], {
  328. maxZoom: 17
  329. });
  330. }
  331. }; // 清空search, route图层
  332. exports.addPoints = addPoints;
  333. var resetSearchSourceData = function resetSearchSourceData(map, searchRoutePoints) {
  334. if (!map) return; // 清除route
  335. if (searchRoutePoints && map.getSource(searchRoutePoints)) {
  336. map.getSource(searchRoutePoints).setData({
  337. type: 'FeatureCollection',
  338. features: []
  339. });
  340. return;
  341. } // 清除search
  342. for (var sourceName in sourceNames) {
  343. if (map.getSource(sourceName)) {
  344. map.getSource(sourceName).setData({
  345. type: 'FeatureCollection',
  346. features: []
  347. });
  348. }
  349. }
  350. }; // 移除search, route图层
  351. exports.resetSearchSourceData = resetSearchSourceData;
  352. var clearSearchResultLayer = function clearSearchResultLayer(map, searchRoutePoints) {
  353. if (!map) return;
  354. for (var sourceName in sourceNames) {
  355. if (searchRoutePoints && map.getSource(searchRoutePoints)) {
  356. map.getLayer(searchRoutePoints) && map.removeLayer(searchRoutePoints);
  357. map.getLayer("".concat(searchRoutePoints, "-highlight")) && map.removeLayer("".concat(searchRoutePoints, "-highlight"));
  358. map.removeSource(searchRoutePoints);
  359. break;
  360. }
  361. if (map.getSource(sourceNames[sourceName])) {
  362. map.getLayer(sourceNames[sourceName]) && map.removeLayer(sourceNames[sourceName]);
  363. switch (sourceNames[sourceName]) {
  364. case 'tdt-search-searchResultPoints':
  365. map.removeLayer("".concat(sourceNames[sourceName], "-highlight"));
  366. break;
  367. case 'tdt-search-searchResultPointsOfLine':
  368. map.removeLayer("".concat(sourceNames[sourceName], "-fill"));
  369. map.removeLayer("".concat(sourceNames[sourceName], "-stroke"));
  370. break;
  371. case 'tdt-search-searchResultPolygon':
  372. map.removeLayer("".concat(sourceNames[sourceName], "-stroke"));
  373. break;
  374. default:
  375. break;
  376. }
  377. map.removeSource(sourceNames[sourceName]);
  378. }
  379. }
  380. }; // 构造点数据
  381. exports.clearSearchResultLayer = clearSearchResultLayer;
  382. var generatePointsFeatures = function generatePointsFeatures(data) {
  383. var splitFlag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ' ';
  384. var result = [];
  385. for (var index = data.length - 1; index >= 0; index--) {
  386. var item = data[index];
  387. var feature = {
  388. type: 'Feature',
  389. geometry: {
  390. type: 'Point'
  391. },
  392. properties: {}
  393. };
  394. var center = (item.lonlat || '').split(splitFlag);
  395. feature.geometry.coordinates = [+center[0], +center[1]];
  396. feature.properties = Object.assign(item, {
  397. serialNum: index + 1
  398. });
  399. result.push(feature);
  400. }
  401. var featureList = (0, _helpers.featureCollection)(result);
  402. return featureList;
  403. };
  404. exports.generatePointsFeatures = generatePointsFeatures;
  405. /***/ }),
  406. /***/ "0284":
  407. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  408. "use strict";
  409. __webpack_require__.r(__webpack_exports__);
  410. /* harmony import */ var _TdtMapSwitcher_vue_vue_type_template_id_7115d558___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("9482");
  411. /* harmony import */ var _TdtMapSwitcher_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("a440");
  412. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _TdtMapSwitcher_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _TdtMapSwitcher_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  413. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  414. /* normalize component */
  415. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  416. _TdtMapSwitcher_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  417. _TdtMapSwitcher_vue_vue_type_template_id_7115d558___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  418. _TdtMapSwitcher_vue_vue_type_template_id_7115d558___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  419. false,
  420. null,
  421. null,
  422. null
  423. )
  424. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  425. /***/ }),
  426. /***/ "0318":
  427. /***/ (function(module, exports, __webpack_require__) {
  428. /* eslint-disable node/no-deprecated-api */
  429. var buffer = __webpack_require__("3be6")
  430. var Buffer = buffer.Buffer
  431. // alternative to using Object.keys for old browsers
  432. function copyProps (src, dst) {
  433. for (var key in src) {
  434. dst[key] = src[key]
  435. }
  436. }
  437. if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
  438. module.exports = buffer
  439. } else {
  440. // Copy properties from require('buffer')
  441. copyProps(buffer, exports)
  442. exports.Buffer = SafeBuffer
  443. }
  444. function SafeBuffer (arg, encodingOrOffset, length) {
  445. return Buffer(arg, encodingOrOffset, length)
  446. }
  447. // Copy static methods from Buffer
  448. copyProps(Buffer, SafeBuffer)
  449. SafeBuffer.from = function (arg, encodingOrOffset, length) {
  450. if (typeof arg === 'number') {
  451. throw new TypeError('Argument must not be a number')
  452. }
  453. return Buffer(arg, encodingOrOffset, length)
  454. }
  455. SafeBuffer.alloc = function (size, fill, encoding) {
  456. if (typeof size !== 'number') {
  457. throw new TypeError('Argument must be a number')
  458. }
  459. var buf = Buffer(size)
  460. if (fill !== undefined) {
  461. if (typeof encoding === 'string') {
  462. buf.fill(fill, encoding)
  463. } else {
  464. buf.fill(fill)
  465. }
  466. } else {
  467. buf.fill(0)
  468. }
  469. return buf
  470. }
  471. SafeBuffer.allocUnsafe = function (size) {
  472. if (typeof size !== 'number') {
  473. throw new TypeError('Argument must be a number')
  474. }
  475. return Buffer(size)
  476. }
  477. SafeBuffer.allocUnsafeSlow = function (size) {
  478. if (typeof size !== 'number') {
  479. throw new TypeError('Argument must be a number')
  480. }
  481. return buffer.SlowBuffer(size)
  482. }
  483. /***/ }),
  484. /***/ "035a":
  485. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  486. "use strict";
  487. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/text-list/TextList.vue?vue&type=template&id=73b23a1f&
  488. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-text-list",style:(_vm.getBackgroundStyle),on:{"mouseleave":function($event){return _vm.handleMouseLeaveFn({}, null, $event)}}},[(_vm.headerStyleData.show)?_c('div',{staticClass:"sm-component-text-list__header",style:([_vm.listStyle.headerHeight, { background: _vm.headerStyleData.background, color: _vm.headerStyleData.color }])},[_c('div',{staticClass:"sm-component-text-list__header-content"},[(_vm.animateContent && _vm.animateContent.length > 0)?[_vm._l(((_vm.getColumns && _vm.getColumns.length > 0 && _vm.getColumns) ||
  489. Object.keys(_vm.animateContent[0])),function(item,index){return [_c('div',{key:index,staticClass:"sm-component-text-list__header-title",style:([_vm.fontSizeStyle, { flex: _vm.getColumnWidth(index) }]),attrs:{"title":item.header}},[_c('div',{on:{"click":function($event){_vm.sortByField(
  490. _vm.getColumns[index].field + '-' + index,
  491. index,
  492. !Number.isNaN(+_vm.listData[0][_vm.getColumns[index].field + '-' + index]) && _vm.getColumns[index].sort
  493. )}}},[_vm._v("\n "+_vm._s(_vm.getColumns[index].header)+"\n "),(!Number.isNaN(+_vm.listData[0][_vm.getColumns[index].field + '-' + index]) && _vm.getColumns[index].sort)?_c('div',{staticClass:"arrow-wrap",style:({ borderColor: _vm.headerStyleData.sortBtnColor })},[_c('i',{class:['up-triangle'],style:([
  494. { borderBottomColor: _vm.headerStyleData.sortBtnColor },
  495. _vm.sortType === 'ascend' &&
  496. _vm.sortIndex === index && { borderBottomColor: _vm.headerStyleData.sortBtnSelectColor }
  497. ])}),_vm._v(" "),_c('i',{class:['down-triangle'],style:([
  498. { borderTopColor: _vm.headerStyleData.sortBtnColor },
  499. _vm.sortType === 'descend' &&
  500. _vm.sortIndex === index && { borderTopColor: _vm.headerStyleData.sortBtnSelectColor }
  501. ])})]):_vm._e()])])]})]:_vm._e()],2)]):_vm._e(),_vm._v(" "),_c('div',{ref:"animate",staticClass:"sm-component-text-list__animate",style:([
  502. _vm.listStyle.contentHeight,
  503. _vm.getTextColorStyle,
  504. _vm.fontSizeStyle,
  505. { 'overflow-y': _vm.autoRolling ? 'hidden' : 'auto' }
  506. ])},[_c('div',{ref:"listContent",class:['sm-component-text-list__body-content', _vm.animate && 'sm-component-text-list__body-content--anim']},[(_vm.animateContent && _vm.animateContent.length > 0)?_vm._l((_vm.animateContent),function(rowData,index){return _c('div',{key:index,staticClass:"sm-component-text-list__list",style:(_vm.getRowStyle(rowData['idx'], index)),attrs:{"data-index":rowData['idx']},on:{"click":function($event){return _vm.handleClick(rowData, rowData['idx'], $event)},"mouseenter":function($event){return _vm.handleMouseEnterFn(rowData, rowData['idx'], $event)},"mouseleave":function($event){return _vm.handleMouseLeaveFn(rowData, rowData['idx'], $event)}}},_vm._l((_vm.filterProperty(rowData, 'idx')),function(items,key,itemIndex){return _c('div',{key:key,style:([_vm.listStyle.rowStyle, { flex: _vm.getColumnWidth(itemIndex) }, _vm.getCellStyle(items, itemIndex)]),attrs:{"title":items}},[(_vm.getColumns[itemIndex])?_c('span',[_vm._v(_vm._s(_vm.getColumns[itemIndex].fixInfo.prefix))]):_vm._e(),_vm._v("\n "+_vm._s(items)+"\n "),(_vm.getColumns[itemIndex])?_c('span',[_vm._v(_vm._s(_vm.getColumns[itemIndex].fixInfo.suffix))]):_vm._e()])}),0)}):_vm._e()],2)]),_vm._v(" "),(_vm.spinning)?_c('a-spin',{attrs:{"size":"large","tip":_vm.$t('info.loading'),"spinning":_vm.spinning}}):_vm._e()],1)}
  507. var staticRenderFns = []
  508. // CONCATENATED MODULE: ./src/mapboxgl/text-list/TextList.vue?vue&type=template&id=73b23a1f&
  509. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  510. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  511. /***/ }),
  512. /***/ "035f":
  513. /***/ (function(module, exports, __webpack_require__) {
  514. "use strict";
  515. var _interopRequireWildcard = __webpack_require__("16ed");
  516. var _interopRequireDefault = __webpack_require__("8e6d");
  517. Object.defineProperty(exports, "__esModule", {
  518. value: true
  519. });
  520. exports.default = void 0;
  521. var _toConsumableArray2 = _interopRequireDefault(__webpack_require__("4066"));
  522. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  523. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  524. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  525. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  526. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  527. var THREE = _interopRequireWildcard(__webpack_require__("8b5b"));
  528. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  529. var _tendrils = _interopRequireDefault(__webpack_require__("dea1"));
  530. var FireLayerViewModel =
  531. /*#__PURE__*/
  532. function (_mapboxgl$Evented) {
  533. (0, _inherits2.default)(FireLayerViewModel, _mapboxgl$Evented);
  534. function FireLayerViewModel(features) {
  535. var _this;
  536. var modelScale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5.41843220338983e-6;
  537. var layerId = arguments.length > 2 ? arguments[2] : undefined;
  538. (0, _classCallCheck2.default)(this, FireLayerViewModel);
  539. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(FireLayerViewModel).call(this));
  540. _this.layerId = layerId;
  541. _this.features = features;
  542. _this.modelScale = modelScale;
  543. return _this;
  544. }
  545. (0, _createClass2.default)(FireLayerViewModel, [{
  546. key: "setMap",
  547. value: function setMap(mapInfo) {
  548. var map = mapInfo.map;
  549. if (!map) {
  550. throw new Error('map is requierd');
  551. }
  552. this.map = map;
  553. this._addFireLayer();
  554. }
  555. }, {
  556. key: "setFeatures",
  557. value: function setFeatures(features) {
  558. this.features = features;
  559. this._addFireLayer();
  560. }
  561. }, {
  562. key: "setModelScale",
  563. value: function setModelScale(modelScale) {
  564. this.modelScale = modelScale;
  565. this._addFireLayer();
  566. }
  567. }, {
  568. key: "_addFireLayer",
  569. value: function _addFireLayer() {
  570. var _this2 = this;
  571. var feature = this.features.features[0];
  572. if (feature.geometry.type !== 'Point') {
  573. throw new Error("Feature's type must be point");
  574. }
  575. if (this.features.features.length > 50) {
  576. throw new Error('The maximum number of features is 50');
  577. }
  578. this.features.features.forEach(function (feature, index) {
  579. var geometry = feature.geometry;
  580. if (geometry.type === 'Point') {
  581. _this2._initializeFireLayer(geometry.coordinates, index);
  582. }
  583. });
  584. }
  585. }, {
  586. key: "_initializeFireLayer",
  587. value: function _initializeFireLayer(originCoordinate, index) {
  588. var _this3 = this;
  589. var modelTransform = this._getModelTransform(originCoordinate);
  590. var layerId = this.layerId && this.layerId + '-' + index || "threeLayerFire-".concat(new Date());
  591. this.map.getLayer(layerId) && this.map.removeLayer(layerId);
  592. var customLayer = {
  593. id: layerId,
  594. type: 'custom',
  595. renderingMode: '3d',
  596. onAdd: function onAdd(map, gl) {
  597. _this3.camera = new THREE.PerspectiveCamera(45, map.getCanvas().width / map.getCanvas().height, 0.1, 2000);
  598. _this3.scene = new THREE.Scene();
  599. _this3.renderer = new THREE.WebGLRenderer({
  600. canvas: map.getCanvas(),
  601. context: gl,
  602. antialias: true
  603. });
  604. _this3.renderer.autoClear = false;
  605. var rig = new THREE.Group();
  606. rig.add(_this3.camera);
  607. _this3.scene.add(rig);
  608. _this3._fire();
  609. _this3.scene.add(_this3._object);
  610. var light = new THREE.PointLight(0xffffff, 1, 100);
  611. light.position.set(10, 10, 20);
  612. _this3.scene.add(light);
  613. _this3.map = map;
  614. },
  615. render: function render(gl, matrix) {
  616. var rotationX = new THREE.Matrix4().makeRotationAxis(new THREE.Vector3(1, 0, 0), modelTransform.rotateX);
  617. var rotationY = new THREE.Matrix4().makeRotationAxis(new THREE.Vector3(0, 1, 0), modelTransform.rotateY);
  618. var rotationZ = new THREE.Matrix4().makeRotationAxis(new THREE.Vector3(0, 0, 1), modelTransform.rotateZ);
  619. var m = new THREE.Matrix4().fromArray(matrix);
  620. var l = new THREE.Matrix4().makeTranslation(modelTransform.translateX, modelTransform.translateY, modelTransform.translateZ).scale(new THREE.Vector3(modelTransform.scale, -modelTransform.scale, modelTransform.scale)).multiply(rotationX).multiply(rotationY).multiply(rotationZ);
  621. _this3.camera.projectionMatrix.elements = matrix;
  622. _this3.camera.projectionMatrix = m.multiply(l);
  623. _this3.renderer.state.reset();
  624. _this3._update();
  625. _this3.renderer.render(_this3.scene, _this3.camera);
  626. _this3.map.triggerRepaint();
  627. }
  628. };
  629. this.map.addLayer(customLayer);
  630. }
  631. }, {
  632. key: "_getModelTransform",
  633. value: function _getModelTransform(originCoordinate) {
  634. var modelOrigin = originCoordinate;
  635. var modelAltitude = 0;
  636. var modelRotate = [Math.PI / 2, 0, 0];
  637. var modelTransform = {
  638. translateX: _mapboxGlEnhance.default.MercatorCoordinate.fromLngLat(modelOrigin, modelAltitude).x,
  639. translateY: _mapboxGlEnhance.default.MercatorCoordinate.fromLngLat(modelOrigin, modelAltitude).y,
  640. translateZ: _mapboxGlEnhance.default.MercatorCoordinate.fromLngLat(modelOrigin, modelAltitude).z,
  641. rotateX: modelRotate[0],
  642. rotateY: modelRotate[1],
  643. rotateZ: modelRotate[2],
  644. scale: this.modelScale
  645. };
  646. return modelTransform;
  647. }
  648. }, {
  649. key: "_fire",
  650. value: function _fire() {
  651. var _this$_object;
  652. var density = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 150;
  653. var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;
  654. var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.2;
  655. this._object = new THREE.Group();
  656. this._fireballs = [];
  657. this._height = height;
  658. this._radius = r;
  659. var texture = new THREE.TextureLoader().load(_tendrils.default, function () {
  660. console.log('loaded');
  661. }, undefined, function (e) {
  662. console.log('error', e);
  663. });
  664. texture.crossOrigin = '';
  665. this._fireMaterial = new THREE.ShaderMaterial({
  666. uniforms: {
  667. time: {
  668. value: 1.0
  669. },
  670. blend: {
  671. value: 1.0
  672. },
  673. blendPattern: {
  674. type: 't',
  675. value: texture
  676. }
  677. },
  678. 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 }",
  679. 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 }",
  680. transparent: true,
  681. side: THREE.DoubleSide,
  682. blending: THREE.AdditiveBlending
  683. });
  684. this._light = new THREE.PointLight(0xff5500, 1, 100);
  685. this._light.position.set(0, 0.4, 0);
  686. this._lightIntensity = Math.random() * 5;
  687. this._object.add(this._light);
  688. for (var i = 0; i < density; i++) {
  689. var geometry = new THREE.SphereGeometry(1, 32, 32);
  690. var mat = this._fireMaterial.clone();
  691. mat.uniforms.blendPattern.value = texture;
  692. mat.needsUpdate = true;
  693. var sphere = new THREE.Mesh(geometry, mat);
  694. sphere.position.y = Math.random() * height;
  695. sphere.position.x = (0.5 - Math.random()) * this._radius;
  696. sphere.position.z = (0.5 - Math.random()) * this._radius;
  697. sphere.rotateX(Math.random() * 5);
  698. sphere.rotateZ(Math.random() * 5);
  699. sphere.rotateY(Math.random() * 5);
  700. sphere.dirX = (0.5 - Math.random()) * 0.006;
  701. sphere.dirY = 0.006;
  702. sphere.dirZ = (0.5 - Math.random()) * 0.006;
  703. this._fireballs.push(sphere);
  704. }
  705. (_this$_object = this._object).add.apply(_this$_object, (0, _toConsumableArray2.default)(this._fireballs));
  706. }
  707. }, {
  708. key: "_update",
  709. value: function _update() {
  710. var _this4 = this;
  711. this._fireballs.forEach(function (ball) {
  712. ball.position.y += ball.dirY;
  713. ball.position.x += Math.sin(ball.position.y) * ball.dirX;
  714. ball.position.z += Math.cos(ball.position.y) * ball.dirZ;
  715. if (ball.position.y > _this4._height) {
  716. ball.position.y = Math.random() * 0.1;
  717. ball.position.x = (0.5 - Math.random()) * _this4._radius;
  718. ball.position.z = (0.5 - Math.random()) * _this4._radius;
  719. }
  720. var p = 0.1 + ball.position.y / _this4._height;
  721. ball.rotateX((1.2 - p) * 0.01);
  722. ball.rotateZ((1.2 - p) * 0.01);
  723. ball.rotateY((1.2 - p) * 0.01);
  724. ball.scale.set(p, p, p);
  725. ball.material.uniforms.blend.value = p;
  726. });
  727. this._light.intensity += (this._lightIntensity - this._light.intensity) * 0.006;
  728. if (Math.random() > 0.8) {
  729. this._lightIntensity = Math.random() * 5;
  730. }
  731. }
  732. }, {
  733. key: "removed",
  734. value: function removed() {
  735. var map = this.map,
  736. layerId = this.layerId,
  737. features = this.features.features;
  738. if (map && layerId && features.length) {
  739. features.forEach(function (feature, index) {
  740. var geometry = feature.geometry;
  741. if (geometry.type === 'Point') {
  742. var featureLayerId = "".concat(layerId, "-").concat(index);
  743. map.getLayer(featureLayerId) && map.removeLayer(featureLayerId);
  744. }
  745. });
  746. }
  747. }
  748. }]);
  749. return FireLayerViewModel;
  750. }(_mapboxGlEnhance.default.Evented);
  751. exports.default = FireLayerViewModel;
  752. /***/ }),
  753. /***/ "03b3":
  754. /***/ (function(module, exports, __webpack_require__) {
  755. "use strict";
  756. var _interopRequireDefault = __webpack_require__("8e6d");
  757. Object.defineProperty(exports, "__esModule", {
  758. value: true
  759. });
  760. exports.default = void 0;
  761. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  762. var HeatMapStyle = function HeatMapStyle() {
  763. var paint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  764. var layout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  765. (0, _classCallCheck2.default)(this, HeatMapStyle);
  766. this.paint = {
  767. 'heatmap-radius': 30,
  768. 'heatmap-weight': 1,
  769. 'heatmap-intensity': 1,
  770. 'heatmap-color': ['interpolate', ['linear'], ['heatmap-density'], 0, 'rgba(0, 0, 255, 0)', 0.1, 'royalblue', 0.3, 'cyan', 0.5, 'lime', 0.7, 'yellow', 1, 'red'],
  771. 'heatmap-opacity': 1
  772. };
  773. this.layout = {
  774. visibility: 'visible'
  775. };
  776. Object.assign(this.paint, paint);
  777. Object.assign(this.layout, layout);
  778. };
  779. exports.default = HeatMapStyle;
  780. /***/ }),
  781. /***/ "03e1":
  782. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  783. "use strict";
  784. __webpack_require__.r(__webpack_exports__);
  785. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Pagination_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("399a");
  786. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Pagination_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Pagination_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  787. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Pagination_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Pagination_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  788. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Pagination_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  789. /***/ }),
  790. /***/ "0467":
  791. /***/ (function(module, exports, __webpack_require__) {
  792. "use strict";
  793. var _interopRequireDefault = __webpack_require__("8e6d");
  794. Object.defineProperty(exports, "__esModule", {
  795. value: true
  796. });
  797. exports.default = void 0;
  798. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  799. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  800. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  801. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  802. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  803. var _colorcolor = _interopRequireDefault(__webpack_require__("4552"));
  804. var _Marker2 = _interopRequireDefault(__webpack_require__("4361"));
  805. var HaloRingMarker =
  806. /*#__PURE__*/
  807. function (_Marker) {
  808. (0, _inherits2.default)(HaloRingMarker, _Marker);
  809. function HaloRingMarker(features) {
  810. var _this;
  811. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  812. (0, _classCallCheck2.default)(this, HaloRingMarker);
  813. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(HaloRingMarker).call(this, features, options));
  814. _this.features && _this._createMarker();
  815. return _this;
  816. }
  817. (0, _createClass2.default)(HaloRingMarker, [{
  818. key: "setMarkersWidth",
  819. value: function setMarkersWidth(width) {
  820. this.options.width = width;
  821. var markerContainer = document.getElementsByClassName('sm-component-animate-marker--halo-ring');
  822. for (var i = 0; i < markerContainer.length; i++) {
  823. var style = markerContainer[i].style;
  824. style.setProperty('--halo-width', this.options.width + 'px');
  825. style.setProperty('--halo-left', -this.options.width / 2 + 'px');
  826. style.setProperty('--box-shadow-width-1', this.options.width / 10 + 'px');
  827. style.setProperty('--box-shadow-width-2', this.options.width / 4 + 'px');
  828. }
  829. }
  830. }, {
  831. key: "setMarkersColors",
  832. value: function setMarkersColors(colors) {
  833. this.options.colors = colors;
  834. if (colors && colors.length && colors.length > 0) {
  835. var markerContainer = document.getElementsByClassName('sm-component-animate-marker--halo-ring');
  836. for (var i = 0; i < markerContainer.length; i++) {
  837. var style = markerContainer[i].style;
  838. style.setProperty('--color-1', this._getColorWithOpacity(this.options.colors[0], 0.3));
  839. style.setProperty('--color-1-transparent', this._getColorWithOpacity(this.options.colors[0], 0.1));
  840. style.setProperty('--color-2', this._getColorWithOpacity(this.options.colors[1], 0.3));
  841. style.setProperty('--color-2-transparent', this._getColorWithOpacity(this.options.colors[1], 0.1));
  842. }
  843. }
  844. }
  845. }, {
  846. key: "_createMarker",
  847. value: function _createMarker() {
  848. var _this2 = this;
  849. this.features.features.forEach(function (point) {
  850. var markerContainer = document.createElement('div');
  851. markerContainer.className = 'sm-component-animate-marker--halo-ring';
  852. var childElements = _this2._createMakerElement(8, 'div', ['sm-component-animate-marker__ring', 'sm-component-animate-marker__halo']);
  853. childElements.forEach(function (element) {
  854. markerContainer.appendChild(element);
  855. });
  856. var nameContainer = _this2._getTextContainer(point, 'halo-ring-name');
  857. markerContainer.appendChild(nameContainer);
  858. if (_this2.options.width) {
  859. markerContainer.style.setProperty('--halo-width', _this2.options.width + 'px');
  860. markerContainer.style.setProperty('--halo-left', -_this2.options.width / 2 + 'px');
  861. markerContainer.style.setProperty('--box-shadow-width-1', _this2.options.width / 10 + 'px');
  862. markerContainer.style.setProperty('--box-shadow-width-2', _this2.options.width / 4 + 'px');
  863. }
  864. if (_this2.options.colors && _this2.options.colors.length && _this2.options.colors.length > 0) {
  865. markerContainer.style.setProperty('--color-1', _this2._getColorWithOpacity((0, _colorcolor.default)(_this2.options.colors[0], 'rgba', true), 0.3));
  866. markerContainer.style.setProperty('--color-1-transparent', _this2._getColorWithOpacity((0, _colorcolor.default)(_this2.options.colors[0], 'rgba', true), 0.1));
  867. markerContainer.style.setProperty('--color-2', _this2._getColorWithOpacity((0, _colorcolor.default)(_this2.options.colors[1], 'rgba', true), 0.3));
  868. markerContainer.style.setProperty('--color-2-transparent', _this2._getColorWithOpacity((0, _colorcolor.default)(_this2.options.colors[1], 'rgba', true), 0.1));
  869. }
  870. _this2.markersElement.push(markerContainer);
  871. }, this);
  872. }
  873. }, {
  874. key: "_createMakerElement",
  875. value: function _createMakerElement(length, type, classNames) {
  876. var markerElements = [];
  877. for (var i = 1; i < length + 1; i++) {
  878. var element = document.createElement(type);
  879. element.className = "".concat(classNames[0], "-0").concat(i, " ").concat(classNames[1]);
  880. markerElements.push(element);
  881. }
  882. return markerElements;
  883. }
  884. }]);
  885. return HaloRingMarker;
  886. }(_Marker2.default);
  887. exports.default = HaloRingMarker;
  888. /***/ }),
  889. /***/ "05d2":
  890. /***/ (function(module, exports) {
  891. module.exports = "data:image/png;base64,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QLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX0Cw6NvpJECAAAECBIqAYFFAlAQIECBAgEBfQLDo2+kkQIAAAQIEioBgUUCUBAgQIECAQF9AsOjb6SRAgAABAgSKgGBRQJQECBAgQIBAX2Azt65Wy2X+ZL1er6b9fG273Sx3u+3y6Wm7fH4+jq8+eVq+/3AY8/qnn+6Xi2+fp+P58fYECBAgQIDA4wlMn+m3l52f9XmYn/2ZATIL3L+jOSvc54e8vvnm7dufbzebvz+dztPj1/GI6UKEi81m/b0neYon3u933zv3/sPzeP9CpifxFwECBAgQIPCQAq8+2S8zVOTnff7kZ//9G8lssLkNQMyZIa9HllhkpngZsciTq1uoyBQy/WTzJkYrtuvFKZ74eDyN86hFDRjZbyNAgAABAgQeW2AOFfku8jM/9zliEVlgygTryAZzTshrc3bI49ymNRbLu2mQ1fo6HZIXN+v1chtPsN/vFy/TIXejFhku5qGSfLyNAAECBAgQeFyB+1Axj1bM0yBTFphGK76bzZgzQ06HZJbId/4yYhGnpjUWmTyiOUYnzjHUMUzTIfejFtn04x+9WkWKGQ+H07S2wuhFqtgIECBAgMDjC0yBIkYqcgpkGqm4G62Yp0HWMfCQWSEzwxQqIkPM73wKFhk08kRcflnAudttVpfLJaY+dqvz+TLGE2SIyBGOIR+bW/7S+4BxPetvAgQIECBA4BEFcupjXlMxh4pPXz2t5tGKzAQ5DZIZId9fhorMDtPxLUtMwSKO44l2y8vleUof2+16dTyuhkwkOWrxtN/Nt6VmqFjFtMgYv3DMNRf5i59215GLfGIbAQIECBAg8JgC+Zmerzz30xKIWFeRoeKT/dMqs0Au2sxskCMVmRXmEYvMELllb9w2+uHtcrH+t3/8p3/+m+fnw3A4ns4xDXKJaY7L8/NzhIfzEAFieI6fw/NxOMXoxfl8HuPa4ni6TFMhcUeJ201T00aAAAECBB5YYL6lNBdqZqDIpRC51jJDxX63XUXgiJ9NjmDkjMU6jtcxwrHZR/D4q7/8i78dF5c/ua6xiIwxrbuIBBILNlfDZhyHYYiwsI8Riud5tGJazHk4HIfzeT3GL8uAMfNNKWUu7AkQIECAAIHHFZgDRa6pyOmPHKm4DxU5WhHX4vxt1CJHKzIJRHK4BotxWK7iWjRloFhthvU4bDJY5PZduFjHmot88vNlGM9xfInRi3xErsHIvY0AAQIECBB4XIEMEvnq85bSvDP0OvVxnf6YRyruQ0Xmipw2yQyxiCyRvbcRi9U0YpG5I+ZJxnE8xCjFNq/ftv2wWh3XOYqRUyMZMJ6i9TIFjCEWeM6PsydAgAABAgQeWWAOE/kecj1FBopcS7Hb7eKrJ64jFbs42MTpXFuR2WG6CWQZ0WG83I1YrIbVMC7HTB/xRDeT7fTFF9kSzzGeTpchplzWufYiH5DB4n5/a7IjQIAAAQIEHlAgMsB1xOK2z7UU+TYyUGQWmKc/MlREVsg7RPKmkFjMOXx/xCJO5S0jq01MjpzjjtL90y5Dw+KwPE63n8a1ZQxWxLqKWH8R+wwZw2UcL9M6jAeU85IJECBAgACB3ysw5YX4wswME5kB5n2uqcgwMY1UZNaIn816nB6eWSKSwXXEIoYdsinGMIY4cQ0X+dtilWfeUppf3RnfaRETIREqhvwT+7yeJ677a53HNgIECBAgQOAxBTJE5CvPIHHdR1zIP3E+s0Cen9ZUxGLN+1CRFzJLZM/L4s3tdrs8nU4v4WJYrpeRH8bbYEUmiuXheIy+dSSSvGvkuzBxf5xPaiNAgAABAgQeT2AOFvnK8zi3PJ6+pyLqPJWBYtrH9EccZKaI77eK77+4Ld6cvsci1nt+HVEhxy3GeIaMDdNxPOi2Xyx+/Zvf/XIKFPFX/pIIGtP+9N0tp3naRoAAAQIECDywQP4rpbllish9hojcfvbTn/zqektp3P0xLdQc4mxMf8RDM1Tk8TBePp+CRTb+X9u7d++++thjPnvz5suPnXeOAAECBAgQeDyB/KfPP/aqX79+/cXHztdz/wOOaWdXmTJgygAAAABJRU5ErkJggg=="
  892. /***/ }),
  893. /***/ "0601":
  894. /***/ (function(module, exports, __webpack_require__) {
  895. "use strict";
  896. var _interopRequireDefault = __webpack_require__("8e6d");
  897. Object.defineProperty(exports, "__esModule", {
  898. value: true
  899. });
  900. exports.default = void 0;
  901. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  902. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  903. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  904. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  905. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  906. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  907. __webpack_require__("f240");
  908. var UniqueThemeLayerViewModel =
  909. /*#__PURE__*/
  910. function (_mapboxgl$Evented) {
  911. (0, _inherits2.default)(UniqueThemeLayerViewModel, _mapboxgl$Evented);
  912. function UniqueThemeLayerViewModel(themeProps) {
  913. var _this;
  914. (0, _classCallCheck2.default)(this, UniqueThemeLayerViewModel);
  915. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(UniqueThemeLayerViewModel).call(this));
  916. var layerName = themeProps.layerName,
  917. options = themeProps.options,
  918. layerId = themeProps.layerId,
  919. data = themeProps.data;
  920. _this.layerName = layerName || layerId;
  921. options.id = options.id || layerId;
  922. _this.options = options;
  923. _this.layerId = layerId;
  924. _this.data = data || [];
  925. return _this;
  926. }
  927. (0, _createClass2.default)(UniqueThemeLayerViewModel, [{
  928. key: "setMap",
  929. value: function setMap(mapInfo) {
  930. var map = mapInfo.map;
  931. this.map = map;
  932. this._init();
  933. }
  934. }, {
  935. key: "_init",
  936. value: function _init() {
  937. this.themeLayer = new _mapboxGlEnhance.default.supermap.UniqueThemeLayer(this.layerName, this.options);
  938. this.map.addLayer(this.themeLayer);
  939. this.themeLayer.addFeatures(this.data);
  940. }
  941. }, {
  942. key: "setOptions",
  943. value: function setOptions(options) {
  944. this.options = options;
  945. this.removed();
  946. this._init();
  947. }
  948. }, {
  949. key: "setData",
  950. value: function setData(data) {
  951. this.data = data;
  952. this.removed();
  953. this._init();
  954. }
  955. }, {
  956. key: "removed",
  957. value: function removed() {
  958. var map = this.map,
  959. options = this.options;
  960. var layerId = options.id;
  961. if (map && layerId && map.getLayer(layerId)) {
  962. map.removeLayer(layerId);
  963. }
  964. }
  965. }]);
  966. return UniqueThemeLayerViewModel;
  967. }(_mapboxGlEnhance.default.Evented);
  968. exports.default = UniqueThemeLayerViewModel;
  969. /***/ }),
  970. /***/ "0625":
  971. /***/ (function(module, exports, __webpack_require__) {
  972. "use strict";
  973. var _interopRequireDefault = __webpack_require__("8e6d");
  974. Object.defineProperty(exports, "__esModule", {
  975. value: true
  976. });
  977. exports.default = void 0;
  978. var _PanViewModel = _interopRequireDefault(__webpack_require__("3850"));
  979. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  980. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  981. //
  982. //
  983. //
  984. //
  985. //
  986. //
  987. //
  988. //
  989. //
  990. //
  991. //
  992. //
  993. //
  994. //
  995. //
  996. //
  997. //
  998. //
  999. //
  1000. //
  1001. //
  1002. //
  1003. //
  1004. //
  1005. //
  1006. //
  1007. //
  1008. //
  1009. //
  1010. var _default = {
  1011. name: 'SmPan',
  1012. mixins: [_mapGetter.default, _control.default],
  1013. props: {
  1014. panLength: {
  1015. type: Number,
  1016. default: 200
  1017. }
  1018. },
  1019. data: function data() {
  1020. return {
  1021. center: null,
  1022. panImgClass: 'sm-component-pan--default',
  1023. mapboxglClass: ''
  1024. };
  1025. },
  1026. created: function created() {
  1027. this.viewModel = new _PanViewModel.default();
  1028. },
  1029. methods: {
  1030. panToCenter: function panToCenter() {
  1031. this.lnglat = this.center;
  1032. this.panTo(this.lnglat);
  1033. },
  1034. panToLeft: function panToLeft() {
  1035. // this.lnglat.lng -= this.panLength;
  1036. // this.panTo(this.lnglat);
  1037. this.panBy([-this.panLength, 0]);
  1038. },
  1039. panToRight: function panToRight() {
  1040. // this.lnglat.lng += this.panLength;
  1041. // this.panTo(this.lnglat);
  1042. this.panBy([this.panLength, 0]);
  1043. },
  1044. panToTop: function panToTop() {
  1045. // this.lnglat.lat -= this.panLength;
  1046. // this.panTo(this.lnglat);
  1047. this.panBy([0, -this.panLength]);
  1048. },
  1049. panToBottom: function panToBottom() {
  1050. // this.lnglat.lat += this.panLength;
  1051. // this.panTo(this.lnglat);
  1052. this.panBy([0, this.panLength]);
  1053. },
  1054. panTo: function panTo(lnglat) {
  1055. var mapNotLoaded = this.mapNotLoadedTip();
  1056. if (mapNotLoaded) {
  1057. return;
  1058. }
  1059. this.viewModel.panTo(lnglat);
  1060. },
  1061. panBy: function panBy(point) {
  1062. var mapNotLoaded = this.mapNotLoadedTip();
  1063. if (mapNotLoaded) {
  1064. return;
  1065. }
  1066. this.viewModel.panBy(point);
  1067. },
  1068. setPanImg: function setPanImg() {
  1069. this.panImgClass = 'sm-component-pan--default';
  1070. },
  1071. setPanWestImg: function setPanWestImg() {
  1072. this.panImgClass = 'sm-component-pan--west';
  1073. },
  1074. setPanEastImg: function setPanEastImg() {
  1075. this.panImgClass = 'sm-component-pan--east';
  1076. },
  1077. setPanNorthImg: function setPanNorthImg() {
  1078. this.panImgClass = 'sm-component-pan--north';
  1079. },
  1080. setPanSouthImg: function setPanSouthImg() {
  1081. this.panImgClass = 'sm-component-pan--south';
  1082. }
  1083. },
  1084. loaded: function loaded() {
  1085. this.parentIsWebMapOrMap && (this.mapboxglClass = 'mapboxgl-ctrl');
  1086. this.center = this.map.getCenter();
  1087. this.lnglat = this.center;
  1088. }
  1089. };
  1090. exports.default = _default;
  1091. /***/ }),
  1092. /***/ "0640":
  1093. /***/ (function(module, exports, __webpack_require__) {
  1094. module.exports = __webpack_require__("bbe9").PassThrough
  1095. /***/ }),
  1096. /***/ "0650":
  1097. /***/ (function(module, exports, __webpack_require__) {
  1098. "use strict";
  1099. Object.defineProperty(exports, "__esModule", { value: true });
  1100. var meta_1 = __webpack_require__("49c0");
  1101. // Note: change RADIUS => earthRadius
  1102. var RADIUS = 6378137;
  1103. /**
  1104. * Takes one or more features and returns their area in square meters.
  1105. *
  1106. * @name area
  1107. * @param {GeoJSON} geojson input GeoJSON feature(s)
  1108. * @returns {number} area in square meters
  1109. * @example
  1110. * var polygon = turf.polygon([[[125, -15], [113, -22], [154, -27], [144, -15], [125, -15]]]);
  1111. *
  1112. * var area = turf.area(polygon);
  1113. *
  1114. * //addToMap
  1115. * var addToMap = [polygon]
  1116. * polygon.properties.area = area
  1117. */
  1118. function area(geojson) {
  1119. return meta_1.geomReduce(geojson, function (value, geom) {
  1120. return value + calculateArea(geom);
  1121. }, 0);
  1122. }
  1123. exports.default = area;
  1124. /**
  1125. * Calculate Area
  1126. *
  1127. * @private
  1128. * @param {Geometry} geom GeoJSON Geometries
  1129. * @returns {number} area
  1130. */
  1131. function calculateArea(geom) {
  1132. var total = 0;
  1133. var i;
  1134. switch (geom.type) {
  1135. case "Polygon":
  1136. return polygonArea(geom.coordinates);
  1137. case "MultiPolygon":
  1138. for (i = 0; i < geom.coordinates.length; i++) {
  1139. total += polygonArea(geom.coordinates[i]);
  1140. }
  1141. return total;
  1142. case "Point":
  1143. case "MultiPoint":
  1144. case "LineString":
  1145. case "MultiLineString":
  1146. return 0;
  1147. }
  1148. return 0;
  1149. }
  1150. function polygonArea(coords) {
  1151. var total = 0;
  1152. if (coords && coords.length > 0) {
  1153. total += Math.abs(ringArea(coords[0]));
  1154. for (var i = 1; i < coords.length; i++) {
  1155. total -= Math.abs(ringArea(coords[i]));
  1156. }
  1157. }
  1158. return total;
  1159. }
  1160. /**
  1161. * @private
  1162. * Calculate the approximate area of the polygon were it projected onto the earth.
  1163. * Note that this area will be positive if ring is oriented clockwise, otherwise it will be negative.
  1164. *
  1165. * Reference:
  1166. * Robert. G. Chamberlain and William H. Duquette, "Some Algorithms for Polygons on a Sphere",
  1167. * JPL Publication 07-03, Jet Propulsion
  1168. * Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409
  1169. *
  1170. * @param {Array<Array<number>>} coords Ring Coordinates
  1171. * @returns {number} The approximate signed geodesic area of the polygon in square meters.
  1172. */
  1173. function ringArea(coords) {
  1174. var p1;
  1175. var p2;
  1176. var p3;
  1177. var lowerIndex;
  1178. var middleIndex;
  1179. var upperIndex;
  1180. var i;
  1181. var total = 0;
  1182. var coordsLength = coords.length;
  1183. if (coordsLength > 2) {
  1184. for (i = 0; i < coordsLength; i++) {
  1185. if (i === coordsLength - 2) {
  1186. lowerIndex = coordsLength - 2;
  1187. middleIndex = coordsLength - 1;
  1188. upperIndex = 0;
  1189. }
  1190. else if (i === coordsLength - 1) {
  1191. lowerIndex = coordsLength - 1;
  1192. middleIndex = 0;
  1193. upperIndex = 1;
  1194. }
  1195. else {
  1196. lowerIndex = i;
  1197. middleIndex = i + 1;
  1198. upperIndex = i + 2;
  1199. }
  1200. p1 = coords[lowerIndex];
  1201. p2 = coords[middleIndex];
  1202. p3 = coords[upperIndex];
  1203. total += (rad(p3[0]) - rad(p1[0])) * Math.sin(rad(p2[1]));
  1204. }
  1205. total = total * RADIUS * RADIUS / 2;
  1206. }
  1207. return total;
  1208. }
  1209. function rad(num) {
  1210. return num * Math.PI / 180;
  1211. }
  1212. /***/ }),
  1213. /***/ "074d":
  1214. /***/ (function(module, exports) {
  1215. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAmYAAAFoCAYAAAD9zjdnAAAACXBIWXMAAAsTAAALEwEAmpwYAAA8Y2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMTEgNzkuMTU4MzI1LCAyMDE1LzA5LzEwLTAxOjEwOjIwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNSAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTgtMDUtMTdUMTQ6MTQ6NTMrMDg6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOC0xMi0wNFQwODo1NTo1MCswODowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTgtMTItMDRUMDg6NTU6NTArMDg6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+CiAgICAgICAgICAgIDxyZGY6QmFnPgogICAgICAgICAgICAgICA8cmRmOmxpPnhtcC5kaWQ6ZmQ3YzFkY2ItN2ZkNC1kZDQ1LTk2MGItN2QyODdhN2MxNTU2PC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOkJhZz4KICAgICAgICAgPC9waG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6YTBkOWQ1NDUtY2QwYS05MzQ5LWFkMDUtMmQ2NDNkYTdhMGNkPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjdiOWViZTg5LWQxNWMtZjM0NS1hNmYxLTMwYmEzZDI2OTY5YjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjdiOWViZTg5LWQxNWMtZjM0NS1hNmYxLTMwYmEzZDI2OTY5YjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo3YjllYmU4OS1kMTVjLWYzNDUtYTZmMS0zMGJhM2QyNjk2OWI8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTgtMDUtMTdUMTQ6MTQ6NTMrMDg6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NzAwOGE1ODAtNzZlMS05YzRlLTk0NjEtN2NkNzNjZDI4YTliPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE4LTEyLTAzVDE3OjI1OjEzKzA4OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNSAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmEwZDlkNTQ1LWNkMGEtOTM0OS1hZDA1LTJkNjQzZGE3YTBjZDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOC0xMi0wNFQwODo1NTo1MCswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj42MTQ8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzYwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4lmR0mAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAOPaSURBVHja7P19UBznmfeP6tT5PXvso9Kv6vyOj72ppNb7PIkdx1lLawG2SSJOZLuySQElU07Zxom85cgWsjbZJauSHKNFYGRZTpjHivwHBtkgifJiB5k3wYAiUIIwEggBYuQjDYzACEmgYWhGHvHmiBld5w/me/uapmeme6YHhHRfVXfBzPT03d0z0/3p7/W2jIiWaVnDzpx7SkpKdhQVFX1eVFRE/vF5SUnJjoadOfcsi9LS018g9Yj2NbPMZ/1ehc/6vQqz11tSUrKpqKhIwfEsKSmxLouh5efnF+Tn5w/7R0Es5rBYLIRh9vrYeFNjuTe1lo103tV5oxtX7nIpCTkKJeQoFL/7WkWsPpfkjD3L49527125y6Ws3OVS4t52703O2LPc7HmwLwk5Cpm9Poy4HaPb1cvF7RjdrrVsrI5nVnbWg0VFRUpxcXHU33F2rqOioiIye/lotiWWc6mPZ3FxcYH63F9cXFyQlZ314ELsW6z2Ny7P9QB+c2b/HsxePtrf5kL89uLyXA/Eve3eG79r3CbOnbvGbXFvu/fG5bkeWIh9W8j9XTDTArPCwsJ1HCA0hlJYWLjudgAzn/V7Fd7D33mDPzdb+91nZmu/+wx/znv4O29EA2v+Y0oLCWV6ACdKYNI1opznzRDLvmkGmMXnjq7jP+pYQtmyZcuWxb3t3jsPcKK4UERy4orkBKYHykLBWSyhDL+raOHsTgczP5CFnLe4uLiguqpyxVIDM0CZGb+5Ox3McHMZbl4zbjolmKkAoqSkxHqgrCypuqpyRXVV5YoDZWVJJSUlVrweDZzdKmDmPfydN76qecirBjE1qH1V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"
  1216. /***/ }),
  1217. /***/ "089f":
  1218. /***/ (function(module, exports) {
  1219. /** Used for built-in method references. */
  1220. var objectProto = Object.prototype;
  1221. /**
  1222. * Used to resolve the
  1223. * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
  1224. * of values.
  1225. */
  1226. var nativeObjectToString = objectProto.toString;
  1227. /**
  1228. * Converts `value` to a string using `Object.prototype.toString`.
  1229. *
  1230. * @private
  1231. * @param {*} value The value to convert.
  1232. * @returns {string} Returns the converted string.
  1233. */
  1234. function objectToString(value) {
  1235. return nativeObjectToString.call(value);
  1236. }
  1237. module.exports = objectToString;
  1238. /***/ }),
  1239. /***/ "08d1":
  1240. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1241. "use strict";
  1242. __webpack_require__.r(__webpack_exports__);
  1243. /* harmony import */ var _Indicator_vue_vue_type_template_id_39b17318___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("022b");
  1244. /* harmony import */ var _Indicator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("13f5");
  1245. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Indicator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Indicator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  1246. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  1247. /* normalize component */
  1248. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  1249. _Indicator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  1250. _Indicator_vue_vue_type_template_id_39b17318___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  1251. _Indicator_vue_vue_type_template_id_39b17318___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  1252. false,
  1253. null,
  1254. null,
  1255. null
  1256. )
  1257. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  1258. /***/ }),
  1259. /***/ "090e":
  1260. /***/ (function(module) {
  1261. module.exports = JSON.parse("{\"buoy-icon-1\":{\"width\":26,\"height\":30,\"x\":318,\"y\":117,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-2\":{\"width\":26,\"height\":30,\"x\":348,\"y\":117,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-3\":{\"width\":26,\"height\":30,\"x\":378,\"y\":117,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-4\":{\"width\":26,\"height\":30,\"x\":408,\"y\":117,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-5\":{\"width\":26,\"height\":30,\"x\":438,\"y\":117,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-6\":{\"width\":26,\"height\":30,\"x\":468,\"y\":117,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-7\":{\"width\":26,\"height\":30,\"x\":498,\"y\":117,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-8\":{\"width\":26,\"height\":30,\"x\":528,\"y\":117,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-9\":{\"width\":26,\"height\":30,\"x\":558,\"y\":117,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-10\":{\"width\":26,\"height\":30,\"x\":588,\"y\":117,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-active-1\":{\"width\":26,\"height\":30,\"x\":316,\"y\":77,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-active-2\":{\"width\":26,\"height\":30,\"x\":346,\"y\":77,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-active-3\":{\"width\":26,\"height\":30,\"x\":376,\"y\":77,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-active-4\":{\"width\":26,\"height\":30,\"x\":406,\"y\":77,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-active-5\":{\"width\":26,\"height\":30,\"x\":436,\"y\":77,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-active-6\":{\"width\":26,\"height\":30,\"x\":466,\"y\":77,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-active-7\":{\"width\":26,\"height\":30,\"x\":496,\"y\":77,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-active-8\":{\"width\":26,\"height\":30,\"x\":526,\"y\":77,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-active-9\":{\"width\":26,\"height\":30,\"x\":556,\"y\":77,\"pixelRatio\":1,\"visible\":true},\"buoy-icon-active-10\":{\"width\":26,\"height\":30,\"x\":586,\"y\":77,\"pixelRatio\":1,\"visible\":true}}");
  1262. /***/ }),
  1263. /***/ "0956":
  1264. /***/ (function(module, exports, __webpack_require__) {
  1265. "use strict";
  1266. // Copyright Joyent, Inc. and other Node contributors.
  1267. //
  1268. // Permission is hereby granted, free of charge, to any person obtaining a
  1269. // copy of this software and associated documentation files (the
  1270. // "Software"), to deal in the Software without restriction, including
  1271. // without limitation the rights to use, copy, modify, merge, publish,
  1272. // distribute, sublicense, and/or sell copies of the Software, and to permit
  1273. // persons to whom the Software is furnished to do so, subject to the
  1274. // following conditions:
  1275. //
  1276. // The above copyright notice and this permission notice shall be included
  1277. // in all copies or substantial portions of the Software.
  1278. //
  1279. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  1280. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  1281. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  1282. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  1283. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  1284. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  1285. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  1286. var R = typeof Reflect === 'object' ? Reflect : null
  1287. var ReflectApply = R && typeof R.apply === 'function'
  1288. ? R.apply
  1289. : function ReflectApply(target, receiver, args) {
  1290. return Function.prototype.apply.call(target, receiver, args);
  1291. }
  1292. var ReflectOwnKeys
  1293. if (R && typeof R.ownKeys === 'function') {
  1294. ReflectOwnKeys = R.ownKeys
  1295. } else if (Object.getOwnPropertySymbols) {
  1296. ReflectOwnKeys = function ReflectOwnKeys(target) {
  1297. return Object.getOwnPropertyNames(target)
  1298. .concat(Object.getOwnPropertySymbols(target));
  1299. };
  1300. } else {
  1301. ReflectOwnKeys = function ReflectOwnKeys(target) {
  1302. return Object.getOwnPropertyNames(target);
  1303. };
  1304. }
  1305. function ProcessEmitWarning(warning) {
  1306. if (console && console.warn) console.warn(warning);
  1307. }
  1308. var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
  1309. return value !== value;
  1310. }
  1311. function EventEmitter() {
  1312. EventEmitter.init.call(this);
  1313. }
  1314. module.exports = EventEmitter;
  1315. // Backwards-compat with node 0.10.x
  1316. EventEmitter.EventEmitter = EventEmitter;
  1317. EventEmitter.prototype._events = undefined;
  1318. EventEmitter.prototype._eventsCount = 0;
  1319. EventEmitter.prototype._maxListeners = undefined;
  1320. // By default EventEmitters will print a warning if more than 10 listeners are
  1321. // added to it. This is a useful default which helps finding memory leaks.
  1322. var defaultMaxListeners = 10;
  1323. Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
  1324. enumerable: true,
  1325. get: function() {
  1326. return defaultMaxListeners;
  1327. },
  1328. set: function(arg) {
  1329. if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
  1330. throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.');
  1331. }
  1332. defaultMaxListeners = arg;
  1333. }
  1334. });
  1335. EventEmitter.init = function() {
  1336. if (this._events === undefined ||
  1337. this._events === Object.getPrototypeOf(this)._events) {
  1338. this._events = Object.create(null);
  1339. this._eventsCount = 0;
  1340. }
  1341. this._maxListeners = this._maxListeners || undefined;
  1342. };
  1343. // Obviously not all Emitters should be limited to 10. This function allows
  1344. // that to be increased. Set to zero for unlimited.
  1345. EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
  1346. if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
  1347. throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.');
  1348. }
  1349. this._maxListeners = n;
  1350. return this;
  1351. };
  1352. function $getMaxListeners(that) {
  1353. if (that._maxListeners === undefined)
  1354. return EventEmitter.defaultMaxListeners;
  1355. return that._maxListeners;
  1356. }
  1357. EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
  1358. return $getMaxListeners(this);
  1359. };
  1360. EventEmitter.prototype.emit = function emit(type) {
  1361. var args = [];
  1362. for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);
  1363. var doError = (type === 'error');
  1364. var events = this._events;
  1365. if (events !== undefined)
  1366. doError = (doError && events.error === undefined);
  1367. else if (!doError)
  1368. return false;
  1369. // If there is no 'error' event listener then throw.
  1370. if (doError) {
  1371. var er;
  1372. if (args.length > 0)
  1373. er = args[0];
  1374. if (er instanceof Error) {
  1375. // Note: The comments on the `throw` lines are intentional, they show
  1376. // up in Node's output if this results in an unhandled exception.
  1377. throw er; // Unhandled 'error' event
  1378. }
  1379. // At least give some kind of context to the user
  1380. var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));
  1381. err.context = er;
  1382. throw err; // Unhandled 'error' event
  1383. }
  1384. var handler = events[type];
  1385. if (handler === undefined)
  1386. return false;
  1387. if (typeof handler === 'function') {
  1388. ReflectApply(handler, this, args);
  1389. } else {
  1390. var len = handler.length;
  1391. var listeners = arrayClone(handler, len);
  1392. for (var i = 0; i < len; ++i)
  1393. ReflectApply(listeners[i], this, args);
  1394. }
  1395. return true;
  1396. };
  1397. function _addListener(target, type, listener, prepend) {
  1398. var m;
  1399. var events;
  1400. var existing;
  1401. if (typeof listener !== 'function') {
  1402. throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
  1403. }
  1404. events = target._events;
  1405. if (events === undefined) {
  1406. events = target._events = Object.create(null);
  1407. target._eventsCount = 0;
  1408. } else {
  1409. // To avoid recursion in the case that type === "newListener"! Before
  1410. // adding it to the listeners, first emit "newListener".
  1411. if (events.newListener !== undefined) {
  1412. target.emit('newListener', type,
  1413. listener.listener ? listener.listener : listener);
  1414. // Re-assign `events` because a newListener handler could have caused the
  1415. // this._events to be assigned to a new object
  1416. events = target._events;
  1417. }
  1418. existing = events[type];
  1419. }
  1420. if (existing === undefined) {
  1421. // Optimize the case of one listener. Don't need the extra array object.
  1422. existing = events[type] = listener;
  1423. ++target._eventsCount;
  1424. } else {
  1425. if (typeof existing === 'function') {
  1426. // Adding the second element, need to change to array.
  1427. existing = events[type] =
  1428. prepend ? [listener, existing] : [existing, listener];
  1429. // If we've already got an array, just append.
  1430. } else if (prepend) {
  1431. existing.unshift(listener);
  1432. } else {
  1433. existing.push(listener);
  1434. }
  1435. // Check for listener leak
  1436. m = $getMaxListeners(target);
  1437. if (m > 0 && existing.length > m && !existing.warned) {
  1438. existing.warned = true;
  1439. // No error code for this since it is a Warning
  1440. // eslint-disable-next-line no-restricted-syntax
  1441. var w = new Error('Possible EventEmitter memory leak detected. ' +
  1442. existing.length + ' ' + String(type) + ' listeners ' +
  1443. 'added. Use emitter.setMaxListeners() to ' +
  1444. 'increase limit');
  1445. w.name = 'MaxListenersExceededWarning';
  1446. w.emitter = target;
  1447. w.type = type;
  1448. w.count = existing.length;
  1449. ProcessEmitWarning(w);
  1450. }
  1451. }
  1452. return target;
  1453. }
  1454. EventEmitter.prototype.addListener = function addListener(type, listener) {
  1455. return _addListener(this, type, listener, false);
  1456. };
  1457. EventEmitter.prototype.on = EventEmitter.prototype.addListener;
  1458. EventEmitter.prototype.prependListener =
  1459. function prependListener(type, listener) {
  1460. return _addListener(this, type, listener, true);
  1461. };
  1462. function onceWrapper() {
  1463. var args = [];
  1464. for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);
  1465. if (!this.fired) {
  1466. this.target.removeListener(this.type, this.wrapFn);
  1467. this.fired = true;
  1468. ReflectApply(this.listener, this.target, args);
  1469. }
  1470. }
  1471. function _onceWrap(target, type, listener) {
  1472. var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };
  1473. var wrapped = onceWrapper.bind(state);
  1474. wrapped.listener = listener;
  1475. state.wrapFn = wrapped;
  1476. return wrapped;
  1477. }
  1478. EventEmitter.prototype.once = function once(type, listener) {
  1479. if (typeof listener !== 'function') {
  1480. throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
  1481. }
  1482. this.on(type, _onceWrap(this, type, listener));
  1483. return this;
  1484. };
  1485. EventEmitter.prototype.prependOnceListener =
  1486. function prependOnceListener(type, listener) {
  1487. if (typeof listener !== 'function') {
  1488. throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
  1489. }
  1490. this.prependListener(type, _onceWrap(this, type, listener));
  1491. return this;
  1492. };
  1493. // Emits a 'removeListener' event if and only if the listener was removed.
  1494. EventEmitter.prototype.removeListener =
  1495. function removeListener(type, listener) {
  1496. var list, events, position, i, originalListener;
  1497. if (typeof listener !== 'function') {
  1498. throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
  1499. }
  1500. events = this._events;
  1501. if (events === undefined)
  1502. return this;
  1503. list = events[type];
  1504. if (list === undefined)
  1505. return this;
  1506. if (list === listener || list.listener === listener) {
  1507. if (--this._eventsCount === 0)
  1508. this._events = Object.create(null);
  1509. else {
  1510. delete events[type];
  1511. if (events.removeListener)
  1512. this.emit('removeListener', type, list.listener || listener);
  1513. }
  1514. } else if (typeof list !== 'function') {
  1515. position = -1;
  1516. for (i = list.length - 1; i >= 0; i--) {
  1517. if (list[i] === listener || list[i].listener === listener) {
  1518. originalListener = list[i].listener;
  1519. position = i;
  1520. break;
  1521. }
  1522. }
  1523. if (position < 0)
  1524. return this;
  1525. if (position === 0)
  1526. list.shift();
  1527. else {
  1528. spliceOne(list, position);
  1529. }
  1530. if (list.length === 1)
  1531. events[type] = list[0];
  1532. if (events.removeListener !== undefined)
  1533. this.emit('removeListener', type, originalListener || listener);
  1534. }
  1535. return this;
  1536. };
  1537. EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
  1538. EventEmitter.prototype.removeAllListeners =
  1539. function removeAllListeners(type) {
  1540. var listeners, events, i;
  1541. events = this._events;
  1542. if (events === undefined)
  1543. return this;
  1544. // not listening for removeListener, no need to emit
  1545. if (events.removeListener === undefined) {
  1546. if (arguments.length === 0) {
  1547. this._events = Object.create(null);
  1548. this._eventsCount = 0;
  1549. } else if (events[type] !== undefined) {
  1550. if (--this._eventsCount === 0)
  1551. this._events = Object.create(null);
  1552. else
  1553. delete events[type];
  1554. }
  1555. return this;
  1556. }
  1557. // emit removeListener for all listeners on all events
  1558. if (arguments.length === 0) {
  1559. var keys = Object.keys(events);
  1560. var key;
  1561. for (i = 0; i < keys.length; ++i) {
  1562. key = keys[i];
  1563. if (key === 'removeListener') continue;
  1564. this.removeAllListeners(key);
  1565. }
  1566. this.removeAllListeners('removeListener');
  1567. this._events = Object.create(null);
  1568. this._eventsCount = 0;
  1569. return this;
  1570. }
  1571. listeners = events[type];
  1572. if (typeof listeners === 'function') {
  1573. this.removeListener(type, listeners);
  1574. } else if (listeners !== undefined) {
  1575. // LIFO order
  1576. for (i = listeners.length - 1; i >= 0; i--) {
  1577. this.removeListener(type, listeners[i]);
  1578. }
  1579. }
  1580. return this;
  1581. };
  1582. function _listeners(target, type, unwrap) {
  1583. var events = target._events;
  1584. if (events === undefined)
  1585. return [];
  1586. var evlistener = events[type];
  1587. if (evlistener === undefined)
  1588. return [];
  1589. if (typeof evlistener === 'function')
  1590. return unwrap ? [evlistener.listener || evlistener] : [evlistener];
  1591. return unwrap ?
  1592. unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
  1593. }
  1594. EventEmitter.prototype.listeners = function listeners(type) {
  1595. return _listeners(this, type, true);
  1596. };
  1597. EventEmitter.prototype.rawListeners = function rawListeners(type) {
  1598. return _listeners(this, type, false);
  1599. };
  1600. EventEmitter.listenerCount = function(emitter, type) {
  1601. if (typeof emitter.listenerCount === 'function') {
  1602. return emitter.listenerCount(type);
  1603. } else {
  1604. return listenerCount.call(emitter, type);
  1605. }
  1606. };
  1607. EventEmitter.prototype.listenerCount = listenerCount;
  1608. function listenerCount(type) {
  1609. var events = this._events;
  1610. if (events !== undefined) {
  1611. var evlistener = events[type];
  1612. if (typeof evlistener === 'function') {
  1613. return 1;
  1614. } else if (evlistener !== undefined) {
  1615. return evlistener.length;
  1616. }
  1617. }
  1618. return 0;
  1619. }
  1620. EventEmitter.prototype.eventNames = function eventNames() {
  1621. return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
  1622. };
  1623. function arrayClone(arr, n) {
  1624. var copy = new Array(n);
  1625. for (var i = 0; i < n; ++i)
  1626. copy[i] = arr[i];
  1627. return copy;
  1628. }
  1629. function spliceOne(list, index) {
  1630. for (; index + 1 < list.length; index++)
  1631. list[index] = list[index + 1];
  1632. list.pop();
  1633. }
  1634. function unwrapListeners(arr) {
  1635. var ret = new Array(arr.length);
  1636. for (var i = 0; i < ret.length; ++i) {
  1637. ret[i] = arr[i].listener || arr[i];
  1638. }
  1639. return ret;
  1640. }
  1641. /***/ }),
  1642. /***/ "0a75":
  1643. /***/ (function(module, exports, __webpack_require__) {
  1644. "use strict";
  1645. Object.defineProperty(exports, "__esModule", { value: true });
  1646. // https://en.wikipedia.org/wiki/Rhumb_line
  1647. var helpers_1 = __webpack_require__("38ce");
  1648. var invariant_1 = __webpack_require__("144a");
  1649. /**
  1650. * Takes two {@link Point|points} and finds the bearing angle between them along a Rhumb line
  1651. * i.e. the angle measured in degrees start the north line (0 degrees)
  1652. *
  1653. * @name rhumbBearing
  1654. * @param {Coord} start starting Point
  1655. * @param {Coord} end ending Point
  1656. * @param {Object} [options] Optional parameters
  1657. * @param {boolean} [options.final=false] calculates the final bearing if true
  1658. * @returns {number} bearing from north in decimal degrees, between -180 and 180 degrees (positive clockwise)
  1659. * @example
  1660. * var point1 = turf.point([-75.343, 39.984], {"marker-color": "#F00"});
  1661. * var point2 = turf.point([-75.534, 39.123], {"marker-color": "#00F"});
  1662. *
  1663. * var bearing = turf.rhumbBearing(point1, point2);
  1664. *
  1665. * //addToMap
  1666. * var addToMap = [point1, point2];
  1667. * point1.properties.bearing = bearing;
  1668. * point2.properties.bearing = bearing;
  1669. */
  1670. function rhumbBearing(start, end, options) {
  1671. if (options === void 0) { options = {}; }
  1672. var bear360;
  1673. if (options.final) {
  1674. bear360 = calculateRhumbBearing(invariant_1.getCoord(end), invariant_1.getCoord(start));
  1675. }
  1676. else {
  1677. bear360 = calculateRhumbBearing(invariant_1.getCoord(start), invariant_1.getCoord(end));
  1678. }
  1679. var bear180 = (bear360 > 180) ? -(360 - bear360) : bear360;
  1680. return bear180;
  1681. }
  1682. /**
  1683. * Returns the bearing from ‘this’ point to destination point along a rhumb line.
  1684. * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js
  1685. *
  1686. * @private
  1687. * @param {Array<number>} from - origin point.
  1688. * @param {Array<number>} to - destination point.
  1689. * @returns {number} Bearing in degrees from north.
  1690. * @example
  1691. * var p1 = new LatLon(51.127, 1.338);
  1692. * var p2 = new LatLon(50.964, 1.853);
  1693. * var d = p1.rhumbBearingTo(p2); // 116.7 m
  1694. */
  1695. function calculateRhumbBearing(from, to) {
  1696. // φ => phi
  1697. // Δλ => deltaLambda
  1698. // Δψ => deltaPsi
  1699. // θ => theta
  1700. var phi1 = helpers_1.degreesToRadians(from[1]);
  1701. var phi2 = helpers_1.degreesToRadians(to[1]);
  1702. var deltaLambda = helpers_1.degreesToRadians((to[0] - from[0]));
  1703. // if deltaLambdaon over 180° take shorter rhumb line across the anti-meridian:
  1704. if (deltaLambda > Math.PI) {
  1705. deltaLambda -= 2 * Math.PI;
  1706. }
  1707. if (deltaLambda < -Math.PI) {
  1708. deltaLambda += 2 * Math.PI;
  1709. }
  1710. var deltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));
  1711. var theta = Math.atan2(deltaLambda, deltaPsi);
  1712. return (helpers_1.radiansToDegrees(theta) + 360) % 360;
  1713. }
  1714. exports.default = rhumbBearing;
  1715. /***/ }),
  1716. /***/ "0b0f":
  1717. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1718. "use strict";
  1719. __webpack_require__.r(__webpack_exports__);
  1720. /* harmony import */ var _TimeText_vue_vue_type_template_id_6da009bc___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("827d");
  1721. /* harmony import */ var _TimeText_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("d5f4");
  1722. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _TimeText_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _TimeText_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  1723. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  1724. /* normalize component */
  1725. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  1726. _TimeText_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  1727. _TimeText_vue_vue_type_template_id_6da009bc___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  1728. _TimeText_vue_vue_type_template_id_6da009bc___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  1729. false,
  1730. null,
  1731. null,
  1732. null
  1733. )
  1734. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  1735. /***/ }),
  1736. /***/ "0b11":
  1737. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1738. "use strict";
  1739. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/chart/ChartMixin.vue?vue&type=template&id=1f1efe10&
  1740. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('sm-card',{directives:[{name:"show",rawName:"v-show",value:(_vm.isShow),expression:"isShow"}],staticClass:"sm-component-chart",attrs:{"icon-class":_vm.iconClass,"icon-position":_vm.position,"header-name":_vm.headerName,"auto-rotate":_vm.autoRotate,"collapsed":_vm.collapsed}},[_c('v-chart',{ref:_vm.chartId,style:(_vm._chartStyle),attrs:{"id":_vm.chartId,"options":_vm._chartOptions,"initOptions":_vm.initOptions,"group":_vm.group,"manual-update":_vm.manualUpdate,"theme":_vm.theme || _vm.chartTheme},on:{"datazoom":_vm.dataZoomHandler}}),_vm._v(" "),_c('TablePopup',_vm._b({directives:[{name:"show",rawName:"v-show",value:(false),expression:"false"}],ref:"chartTablePopup",attrs:{"text-color":_vm.textColor,"background":_vm.background}},'TablePopup',_vm.tablePopupProps,false))],1)}
  1741. var staticRenderFns = []
  1742. // CONCATENATED MODULE: ./src/common/chart/ChartMixin.vue?vue&type=template&id=1f1efe10&
  1743. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  1744. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  1745. /***/ }),
  1746. /***/ "0c08":
  1747. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1748. "use strict";
  1749. __webpack_require__.r(__webpack_exports__);
  1750. // CONCATENATED MODULE: ./node_modules/@turf/envelope/node_modules/@turf/helpers/main.es.js
  1751. /**
  1752. * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.
  1753. */
  1754. var earthRadius = 6371008.8;
  1755. /**
  1756. * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.
  1757. */
  1758. var factors = {
  1759. meters: earthRadius,
  1760. metres: earthRadius,
  1761. millimeters: earthRadius * 1000,
  1762. millimetres: earthRadius * 1000,
  1763. centimeters: earthRadius * 100,
  1764. centimetres: earthRadius * 100,
  1765. kilometers: earthRadius / 1000,
  1766. kilometres: earthRadius / 1000,
  1767. miles: earthRadius / 1609.344,
  1768. nauticalmiles: earthRadius / 1852,
  1769. inches: earthRadius * 39.370,
  1770. yards: earthRadius / 1.0936,
  1771. feet: earthRadius * 3.28084,
  1772. radians: 1,
  1773. degrees: earthRadius / 111325,
  1774. };
  1775. /**
  1776. * Units of measurement factors based on 1 meter.
  1777. */
  1778. var unitsFactors = {
  1779. meters: 1,
  1780. metres: 1,
  1781. millimeters: 1000,
  1782. millimetres: 1000,
  1783. centimeters: 100,
  1784. centimetres: 100,
  1785. kilometers: 1 / 1000,
  1786. kilometres: 1 / 1000,
  1787. miles: 1 / 1609.344,
  1788. nauticalmiles: 1 / 1852,
  1789. inches: 39.370,
  1790. yards: 1 / 1.0936,
  1791. feet: 3.28084,
  1792. radians: 1 / earthRadius,
  1793. degrees: 1 / 111325,
  1794. };
  1795. /**
  1796. * Area of measurement factors based on 1 square meter.
  1797. */
  1798. var areaFactors = {
  1799. meters: 1,
  1800. metres: 1,
  1801. millimeters: 1000000,
  1802. millimetres: 1000000,
  1803. centimeters: 10000,
  1804. centimetres: 10000,
  1805. kilometers: 0.000001,
  1806. kilometres: 0.000001,
  1807. acres: 0.000247105,
  1808. miles: 3.86e-7,
  1809. yards: 1.195990046,
  1810. feet: 10.763910417,
  1811. inches: 1550.003100006
  1812. };
  1813. /**
  1814. * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
  1815. *
  1816. * @name feature
  1817. * @param {Geometry} geometry input geometry
  1818. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  1819. * @param {Object} [options={}] Optional Parameters
  1820. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  1821. * @param {string|number} [options.id] Identifier associated with the Feature
  1822. * @returns {Feature} a GeoJSON Feature
  1823. * @example
  1824. * var geometry = {
  1825. * "type": "Point",
  1826. * "coordinates": [110, 50]
  1827. * };
  1828. *
  1829. * var feature = turf.feature(geometry);
  1830. *
  1831. * //=feature
  1832. */
  1833. function feature(geometry, properties, options) {
  1834. // Optional Parameters
  1835. options = options || {};
  1836. if (!isObject(options)) throw new Error('options is invalid');
  1837. var bbox = options.bbox;
  1838. var id = options.id;
  1839. // Validation
  1840. if (geometry === undefined) throw new Error('geometry is required');
  1841. if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');
  1842. if (bbox) validateBBox(bbox);
  1843. if (id) validateId(id);
  1844. // Main
  1845. var feat = {type: 'Feature'};
  1846. if (id) feat.id = id;
  1847. if (bbox) feat.bbox = bbox;
  1848. feat.properties = properties || {};
  1849. feat.geometry = geometry;
  1850. return feat;
  1851. }
  1852. /**
  1853. * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
  1854. * For GeometryCollection type use `helpers.geometryCollection`
  1855. *
  1856. * @name geometry
  1857. * @param {string} type Geometry Type
  1858. * @param {Array<number>} coordinates Coordinates
  1859. * @param {Object} [options={}] Optional Parameters
  1860. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry
  1861. * @returns {Geometry} a GeoJSON Geometry
  1862. * @example
  1863. * var type = 'Point';
  1864. * var coordinates = [110, 50];
  1865. *
  1866. * var geometry = turf.geometry(type, coordinates);
  1867. *
  1868. * //=geometry
  1869. */
  1870. function main_es_geometry(type, coordinates, options) {
  1871. // Optional Parameters
  1872. options = options || {};
  1873. if (!isObject(options)) throw new Error('options is invalid');
  1874. var bbox = options.bbox;
  1875. // Validation
  1876. if (!type) throw new Error('type is required');
  1877. if (!coordinates) throw new Error('coordinates is required');
  1878. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  1879. if (bbox) validateBBox(bbox);
  1880. // Main
  1881. var geom;
  1882. switch (type) {
  1883. case 'Point': geom = point(coordinates).geometry; break;
  1884. case 'LineString': geom = lineString(coordinates).geometry; break;
  1885. case 'Polygon': geom = polygon(coordinates).geometry; break;
  1886. case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;
  1887. case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;
  1888. case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;
  1889. default: throw new Error(type + ' is invalid');
  1890. }
  1891. if (bbox) geom.bbox = bbox;
  1892. return geom;
  1893. }
  1894. /**
  1895. * Creates a {@link Point} {@link Feature} from a Position.
  1896. *
  1897. * @name point
  1898. * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
  1899. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  1900. * @param {Object} [options={}] Optional Parameters
  1901. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  1902. * @param {string|number} [options.id] Identifier associated with the Feature
  1903. * @returns {Feature<Point>} a Point feature
  1904. * @example
  1905. * var point = turf.point([-75.343, 39.984]);
  1906. *
  1907. * //=point
  1908. */
  1909. function point(coordinates, properties, options) {
  1910. if (!coordinates) throw new Error('coordinates is required');
  1911. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  1912. if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');
  1913. if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');
  1914. return feature({
  1915. type: 'Point',
  1916. coordinates: coordinates
  1917. }, properties, options);
  1918. }
  1919. /**
  1920. * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.
  1921. *
  1922. * @name points
  1923. * @param {Array<Array<number>>} coordinates an array of Points
  1924. * @param {Object} [properties={}] Translate these properties to each Feature
  1925. * @param {Object} [options={}] Optional Parameters
  1926. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
  1927. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  1928. * @returns {FeatureCollection<Point>} Point Feature
  1929. * @example
  1930. * var points = turf.points([
  1931. * [-75, 39],
  1932. * [-80, 45],
  1933. * [-78, 50]
  1934. * ]);
  1935. *
  1936. * //=points
  1937. */
  1938. function points(coordinates, properties, options) {
  1939. if (!coordinates) throw new Error('coordinates is required');
  1940. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  1941. return featureCollection(coordinates.map(function (coords) {
  1942. return point(coords, properties);
  1943. }), options);
  1944. }
  1945. /**
  1946. * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.
  1947. *
  1948. * @name polygon
  1949. * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings
  1950. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  1951. * @param {Object} [options={}] Optional Parameters
  1952. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  1953. * @param {string|number} [options.id] Identifier associated with the Feature
  1954. * @returns {Feature<Polygon>} Polygon Feature
  1955. * @example
  1956. * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });
  1957. *
  1958. * //=polygon
  1959. */
  1960. function polygon(coordinates, properties, options) {
  1961. if (!coordinates) throw new Error('coordinates is required');
  1962. for (var i = 0; i < coordinates.length; i++) {
  1963. var ring = coordinates[i];
  1964. if (ring.length < 4) {
  1965. throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');
  1966. }
  1967. for (var j = 0; j < ring[ring.length - 1].length; j++) {
  1968. // Check if first point of Polygon contains two numbers
  1969. if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');
  1970. if (ring[ring.length - 1][j] !== ring[0][j]) {
  1971. throw new Error('First and last Position are not equivalent.');
  1972. }
  1973. }
  1974. }
  1975. return feature({
  1976. type: 'Polygon',
  1977. coordinates: coordinates
  1978. }, properties, options);
  1979. }
  1980. /**
  1981. * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.
  1982. *
  1983. * @name polygons
  1984. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates
  1985. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  1986. * @param {Object} [options={}] Optional Parameters
  1987. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  1988. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  1989. * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection
  1990. * @example
  1991. * var polygons = turf.polygons([
  1992. * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],
  1993. * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],
  1994. * ]);
  1995. *
  1996. * //=polygons
  1997. */
  1998. function polygons(coordinates, properties, options) {
  1999. if (!coordinates) throw new Error('coordinates is required');
  2000. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  2001. return featureCollection(coordinates.map(function (coords) {
  2002. return polygon(coords, properties);
  2003. }), options);
  2004. }
  2005. /**
  2006. * Creates a {@link LineString} {@link Feature} from an Array of Positions.
  2007. *
  2008. * @name lineString
  2009. * @param {Array<Array<number>>} coordinates an array of Positions
  2010. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  2011. * @param {Object} [options={}] Optional Parameters
  2012. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  2013. * @param {string|number} [options.id] Identifier associated with the Feature
  2014. * @returns {Feature<LineString>} LineString Feature
  2015. * @example
  2016. * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});
  2017. * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});
  2018. *
  2019. * //=linestring1
  2020. * //=linestring2
  2021. */
  2022. function lineString(coordinates, properties, options) {
  2023. if (!coordinates) throw new Error('coordinates is required');
  2024. if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');
  2025. // Check if first point of LineString contains two numbers
  2026. if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');
  2027. return feature({
  2028. type: 'LineString',
  2029. coordinates: coordinates
  2030. }, properties, options);
  2031. }
  2032. /**
  2033. * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.
  2034. *
  2035. * @name lineStrings
  2036. * @param {Array<Array<number>>} coordinates an array of LinearRings
  2037. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  2038. * @param {Object} [options={}] Optional Parameters
  2039. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
  2040. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  2041. * @returns {FeatureCollection<LineString>} LineString FeatureCollection
  2042. * @example
  2043. * var linestrings = turf.lineStrings([
  2044. * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],
  2045. * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]
  2046. * ]);
  2047. *
  2048. * //=linestrings
  2049. */
  2050. function lineStrings(coordinates, properties, options) {
  2051. if (!coordinates) throw new Error('coordinates is required');
  2052. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  2053. return featureCollection(coordinates.map(function (coords) {
  2054. return lineString(coords, properties);
  2055. }), options);
  2056. }
  2057. /**
  2058. * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.
  2059. *
  2060. * @name featureCollection
  2061. * @param {Feature[]} features input features
  2062. * @param {Object} [options={}] Optional Parameters
  2063. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  2064. * @param {string|number} [options.id] Identifier associated with the Feature
  2065. * @returns {FeatureCollection} FeatureCollection of Features
  2066. * @example
  2067. * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});
  2068. * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});
  2069. * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});
  2070. *
  2071. * var collection = turf.featureCollection([
  2072. * locationA,
  2073. * locationB,
  2074. * locationC
  2075. * ]);
  2076. *
  2077. * //=collection
  2078. */
  2079. function featureCollection(features, options) {
  2080. // Optional Parameters
  2081. options = options || {};
  2082. if (!isObject(options)) throw new Error('options is invalid');
  2083. var bbox = options.bbox;
  2084. var id = options.id;
  2085. // Validation
  2086. if (!features) throw new Error('No features passed');
  2087. if (!Array.isArray(features)) throw new Error('features must be an Array');
  2088. if (bbox) validateBBox(bbox);
  2089. if (id) validateId(id);
  2090. // Main
  2091. var fc = {type: 'FeatureCollection'};
  2092. if (id) fc.id = id;
  2093. if (bbox) fc.bbox = bbox;
  2094. fc.features = features;
  2095. return fc;
  2096. }
  2097. /**
  2098. * Creates a {@link Feature<MultiLineString>} based on a
  2099. * coordinate array. Properties can be added optionally.
  2100. *
  2101. * @name multiLineString
  2102. * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings
  2103. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  2104. * @param {Object} [options={}] Optional Parameters
  2105. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  2106. * @param {string|number} [options.id] Identifier associated with the Feature
  2107. * @returns {Feature<MultiLineString>} a MultiLineString feature
  2108. * @throws {Error} if no coordinates are passed
  2109. * @example
  2110. * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);
  2111. *
  2112. * //=multiLine
  2113. */
  2114. function multiLineString(coordinates, properties, options) {
  2115. if (!coordinates) throw new Error('coordinates is required');
  2116. return feature({
  2117. type: 'MultiLineString',
  2118. coordinates: coordinates
  2119. }, properties, options);
  2120. }
  2121. /**
  2122. * Creates a {@link Feature<MultiPoint>} based on a
  2123. * coordinate array. Properties can be added optionally.
  2124. *
  2125. * @name multiPoint
  2126. * @param {Array<Array<number>>} coordinates an array of Positions
  2127. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  2128. * @param {Object} [options={}] Optional Parameters
  2129. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  2130. * @param {string|number} [options.id] Identifier associated with the Feature
  2131. * @returns {Feature<MultiPoint>} a MultiPoint feature
  2132. * @throws {Error} if no coordinates are passed
  2133. * @example
  2134. * var multiPt = turf.multiPoint([[0,0],[10,10]]);
  2135. *
  2136. * //=multiPt
  2137. */
  2138. function multiPoint(coordinates, properties, options) {
  2139. if (!coordinates) throw new Error('coordinates is required');
  2140. return feature({
  2141. type: 'MultiPoint',
  2142. coordinates: coordinates
  2143. }, properties, options);
  2144. }
  2145. /**
  2146. * Creates a {@link Feature<MultiPolygon>} based on a
  2147. * coordinate array. Properties can be added optionally.
  2148. *
  2149. * @name multiPolygon
  2150. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons
  2151. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  2152. * @param {Object} [options={}] Optional Parameters
  2153. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  2154. * @param {string|number} [options.id] Identifier associated with the Feature
  2155. * @returns {Feature<MultiPolygon>} a multipolygon feature
  2156. * @throws {Error} if no coordinates are passed
  2157. * @example
  2158. * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);
  2159. *
  2160. * //=multiPoly
  2161. *
  2162. */
  2163. function multiPolygon(coordinates, properties, options) {
  2164. if (!coordinates) throw new Error('coordinates is required');
  2165. return feature({
  2166. type: 'MultiPolygon',
  2167. coordinates: coordinates
  2168. }, properties, options);
  2169. }
  2170. /**
  2171. * Creates a {@link Feature<GeometryCollection>} based on a
  2172. * coordinate array. Properties can be added optionally.
  2173. *
  2174. * @name geometryCollection
  2175. * @param {Array<Geometry>} geometries an array of GeoJSON Geometries
  2176. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  2177. * @param {Object} [options={}] Optional Parameters
  2178. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  2179. * @param {string|number} [options.id] Identifier associated with the Feature
  2180. * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature
  2181. * @example
  2182. * var pt = {
  2183. * "type": "Point",
  2184. * "coordinates": [100, 0]
  2185. * };
  2186. * var line = {
  2187. * "type": "LineString",
  2188. * "coordinates": [ [101, 0], [102, 1] ]
  2189. * };
  2190. * var collection = turf.geometryCollection([pt, line]);
  2191. *
  2192. * //=collection
  2193. */
  2194. function geometryCollection(geometries, properties, options) {
  2195. if (!geometries) throw new Error('geometries is required');
  2196. if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');
  2197. return feature({
  2198. type: 'GeometryCollection',
  2199. geometries: geometries
  2200. }, properties, options);
  2201. }
  2202. /**
  2203. * Round number to precision
  2204. *
  2205. * @param {number} num Number
  2206. * @param {number} [precision=0] Precision
  2207. * @returns {number} rounded number
  2208. * @example
  2209. * turf.round(120.4321)
  2210. * //=120
  2211. *
  2212. * turf.round(120.4321, 2)
  2213. * //=120.43
  2214. */
  2215. function round(num, precision) {
  2216. if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');
  2217. if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');
  2218. var multiplier = Math.pow(10, precision || 0);
  2219. return Math.round(num * multiplier) / multiplier;
  2220. }
  2221. /**
  2222. * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.
  2223. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  2224. *
  2225. * @name radiansToLength
  2226. * @param {number} radians in radians across the sphere
  2227. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  2228. * @returns {number} distance
  2229. */
  2230. function radiansToLength(radians, units) {
  2231. if (radians === undefined || radians === null) throw new Error('radians is required');
  2232. if (units && typeof units !== 'string') throw new Error('units must be a string');
  2233. var factor = factors[units || 'kilometers'];
  2234. if (!factor) throw new Error(units + ' units is invalid');
  2235. return radians * factor;
  2236. }
  2237. /**
  2238. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians
  2239. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  2240. *
  2241. * @name lengthToRadians
  2242. * @param {number} distance in real units
  2243. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  2244. * @returns {number} radians
  2245. */
  2246. function lengthToRadians(distance, units) {
  2247. if (distance === undefined || distance === null) throw new Error('distance is required');
  2248. if (units && typeof units !== 'string') throw new Error('units must be a string');
  2249. var factor = factors[units || 'kilometers'];
  2250. if (!factor) throw new Error(units + ' units is invalid');
  2251. return distance / factor;
  2252. }
  2253. /**
  2254. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees
  2255. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet
  2256. *
  2257. * @name lengthToDegrees
  2258. * @param {number} distance in real units
  2259. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  2260. * @returns {number} degrees
  2261. */
  2262. function lengthToDegrees(distance, units) {
  2263. return radiansToDegrees(lengthToRadians(distance, units));
  2264. }
  2265. /**
  2266. * Converts any bearing angle from the north line direction (positive clockwise)
  2267. * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line
  2268. *
  2269. * @name bearingToAzimuth
  2270. * @param {number} bearing angle, between -180 and +180 degrees
  2271. * @returns {number} angle between 0 and 360 degrees
  2272. */
  2273. function bearingToAzimuth(bearing) {
  2274. if (bearing === null || bearing === undefined) throw new Error('bearing is required');
  2275. var angle = bearing % 360;
  2276. if (angle < 0) angle += 360;
  2277. return angle;
  2278. }
  2279. /**
  2280. * Converts an angle in radians to degrees
  2281. *
  2282. * @name radiansToDegrees
  2283. * @param {number} radians angle in radians
  2284. * @returns {number} degrees between 0 and 360 degrees
  2285. */
  2286. function radiansToDegrees(radians) {
  2287. if (radians === null || radians === undefined) throw new Error('radians is required');
  2288. var degrees = radians % (2 * Math.PI);
  2289. return degrees * 180 / Math.PI;
  2290. }
  2291. /**
  2292. * Converts an angle in degrees to radians
  2293. *
  2294. * @name degreesToRadians
  2295. * @param {number} degrees angle between 0 and 360 degrees
  2296. * @returns {number} angle in radians
  2297. */
  2298. function degreesToRadians(degrees) {
  2299. if (degrees === null || degrees === undefined) throw new Error('degrees is required');
  2300. var radians = degrees % 360;
  2301. return radians * Math.PI / 180;
  2302. }
  2303. /**
  2304. * Converts a length to the requested unit.
  2305. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  2306. *
  2307. * @param {number} length to be converted
  2308. * @param {string} originalUnit of the length
  2309. * @param {string} [finalUnit='kilometers'] returned unit
  2310. * @returns {number} the converted length
  2311. */
  2312. function convertLength(length, originalUnit, finalUnit) {
  2313. if (length === null || length === undefined) throw new Error('length is required');
  2314. if (!(length >= 0)) throw new Error('length must be a positive number');
  2315. return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');
  2316. }
  2317. /**
  2318. * Converts a area to the requested unit.
  2319. * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches
  2320. * @param {number} area to be converted
  2321. * @param {string} [originalUnit='meters'] of the distance
  2322. * @param {string} [finalUnit='kilometers'] returned unit
  2323. * @returns {number} the converted distance
  2324. */
  2325. function convertArea(area, originalUnit, finalUnit) {
  2326. if (area === null || area === undefined) throw new Error('area is required');
  2327. if (!(area >= 0)) throw new Error('area must be a positive number');
  2328. var startFactor = areaFactors[originalUnit || 'meters'];
  2329. if (!startFactor) throw new Error('invalid original units');
  2330. var finalFactor = areaFactors[finalUnit || 'kilometers'];
  2331. if (!finalFactor) throw new Error('invalid final units');
  2332. return (area / startFactor) * finalFactor;
  2333. }
  2334. /**
  2335. * isNumber
  2336. *
  2337. * @param {*} num Number to validate
  2338. * @returns {boolean} true/false
  2339. * @example
  2340. * turf.isNumber(123)
  2341. * //=true
  2342. * turf.isNumber('foo')
  2343. * //=false
  2344. */
  2345. function isNumber(num) {
  2346. return !isNaN(num) && num !== null && !Array.isArray(num);
  2347. }
  2348. /**
  2349. * isObject
  2350. *
  2351. * @param {*} input variable to validate
  2352. * @returns {boolean} true/false
  2353. * @example
  2354. * turf.isObject({elevation: 10})
  2355. * //=true
  2356. * turf.isObject('foo')
  2357. * //=false
  2358. */
  2359. function isObject(input) {
  2360. return (!!input) && (input.constructor === Object);
  2361. }
  2362. /**
  2363. * Validate BBox
  2364. *
  2365. * @private
  2366. * @param {Array<number>} bbox BBox to validate
  2367. * @returns {void}
  2368. * @throws Error if BBox is not valid
  2369. * @example
  2370. * validateBBox([-180, -40, 110, 50])
  2371. * //=OK
  2372. * validateBBox([-180, -40])
  2373. * //=Error
  2374. * validateBBox('Foo')
  2375. * //=Error
  2376. * validateBBox(5)
  2377. * //=Error
  2378. * validateBBox(null)
  2379. * //=Error
  2380. * validateBBox(undefined)
  2381. * //=Error
  2382. */
  2383. function validateBBox(bbox) {
  2384. if (!bbox) throw new Error('bbox is required');
  2385. if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');
  2386. if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');
  2387. bbox.forEach(function (num) {
  2388. if (!isNumber(num)) throw new Error('bbox must only contain numbers');
  2389. });
  2390. }
  2391. /**
  2392. * Validate Id
  2393. *
  2394. * @private
  2395. * @param {string|number} id Id to validate
  2396. * @returns {void}
  2397. * @throws Error if Id is not valid
  2398. * @example
  2399. * validateId([-180, -40, 110, 50])
  2400. * //=Error
  2401. * validateId([-180, -40])
  2402. * //=Error
  2403. * validateId('Foo')
  2404. * //=OK
  2405. * validateId(5)
  2406. * //=OK
  2407. * validateId(null)
  2408. * //=Error
  2409. * validateId(undefined)
  2410. * //=Error
  2411. */
  2412. function validateId(id) {
  2413. if (!id) throw new Error('id is required');
  2414. if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');
  2415. }
  2416. // Deprecated methods
  2417. function radians2degrees() {
  2418. throw new Error('method has been renamed to `radiansToDegrees`');
  2419. }
  2420. function degrees2radians() {
  2421. throw new Error('method has been renamed to `degreesToRadians`');
  2422. }
  2423. function distanceToDegrees() {
  2424. throw new Error('method has been renamed to `lengthToDegrees`');
  2425. }
  2426. function distanceToRadians() {
  2427. throw new Error('method has been renamed to `lengthToRadians`');
  2428. }
  2429. function radiansToDistance() {
  2430. throw new Error('method has been renamed to `radiansToLength`');
  2431. }
  2432. function bearingToAngle() {
  2433. throw new Error('method has been renamed to `bearingToAzimuth`');
  2434. }
  2435. function convertDistance() {
  2436. throw new Error('method has been renamed to `convertLength`');
  2437. }
  2438. // CONCATENATED MODULE: ./node_modules/@turf/envelope/node_modules/@turf/meta/main.es.js
  2439. /**
  2440. * Callback for coordEach
  2441. *
  2442. * @callback coordEachCallback
  2443. * @param {Array<number>} currentCoord The current coordinate being processed.
  2444. * @param {number} coordIndex The current index of the coordinate being processed.
  2445. * @param {number} featureIndex The current index of the Feature being processed.
  2446. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  2447. * @param {number} geometryIndex The current index of the Geometry being processed.
  2448. */
  2449. /**
  2450. * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()
  2451. *
  2452. * @name coordEach
  2453. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  2454. * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)
  2455. * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
  2456. * @returns {void}
  2457. * @example
  2458. * var features = turf.featureCollection([
  2459. * turf.point([26, 37], {"foo": "bar"}),
  2460. * turf.point([36, 53], {"hello": "world"})
  2461. * ]);
  2462. *
  2463. * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
  2464. * //=currentCoord
  2465. * //=coordIndex
  2466. * //=featureIndex
  2467. * //=multiFeatureIndex
  2468. * //=geometryIndex
  2469. * });
  2470. */
  2471. function coordEach(geojson, callback, excludeWrapCoord) {
  2472. // Handles null Geometry -- Skips this GeoJSON
  2473. if (geojson === null) return;
  2474. var j, k, l, geometry, stopG, coords,
  2475. geometryMaybeCollection,
  2476. wrapShrink = 0,
  2477. coordIndex = 0,
  2478. isGeometryCollection,
  2479. type = geojson.type,
  2480. isFeatureCollection = type === 'FeatureCollection',
  2481. isFeature = type === 'Feature',
  2482. stop = isFeatureCollection ? geojson.features.length : 1;
  2483. // This logic may look a little weird. The reason why it is that way
  2484. // is because it's trying to be fast. GeoJSON supports multiple kinds
  2485. // of objects at its root: FeatureCollection, Features, Geometries.
  2486. // This function has the responsibility of handling all of them, and that
  2487. // means that some of the `for` loops you see below actually just don't apply
  2488. // to certain inputs. For instance, if you give this just a
  2489. // Point geometry, then both loops are short-circuited and all we do
  2490. // is gradually rename the input until it's called 'geometry'.
  2491. //
  2492. // This also aims to allocate as few resources as possible: just a
  2493. // few numbers and booleans, rather than any temporary arrays as would
  2494. // be required with the normalization approach.
  2495. for (var featureIndex = 0; featureIndex < stop; featureIndex++) {
  2496. geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :
  2497. (isFeature ? geojson.geometry : geojson));
  2498. isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;
  2499. stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;
  2500. for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {
  2501. var multiFeatureIndex = 0;
  2502. var geometryIndex = 0;
  2503. geometry = isGeometryCollection ?
  2504. geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;
  2505. // Handles null Geometry -- Skips this geometry
  2506. if (geometry === null) continue;
  2507. coords = geometry.coordinates;
  2508. var geomType = geometry.type;
  2509. wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;
  2510. switch (geomType) {
  2511. case null:
  2512. break;
  2513. case 'Point':
  2514. if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  2515. coordIndex++;
  2516. multiFeatureIndex++;
  2517. break;
  2518. case 'LineString':
  2519. case 'MultiPoint':
  2520. for (j = 0; j < coords.length; j++) {
  2521. if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  2522. coordIndex++;
  2523. if (geomType === 'MultiPoint') multiFeatureIndex++;
  2524. }
  2525. if (geomType === 'LineString') multiFeatureIndex++;
  2526. break;
  2527. case 'Polygon':
  2528. case 'MultiLineString':
  2529. for (j = 0; j < coords.length; j++) {
  2530. for (k = 0; k < coords[j].length - wrapShrink; k++) {
  2531. if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  2532. coordIndex++;
  2533. }
  2534. if (geomType === 'MultiLineString') multiFeatureIndex++;
  2535. if (geomType === 'Polygon') geometryIndex++;
  2536. }
  2537. if (geomType === 'Polygon') multiFeatureIndex++;
  2538. break;
  2539. case 'MultiPolygon':
  2540. for (j = 0; j < coords.length; j++) {
  2541. if (geomType === 'MultiPolygon') geometryIndex = 0;
  2542. for (k = 0; k < coords[j].length; k++) {
  2543. for (l = 0; l < coords[j][k].length - wrapShrink; l++) {
  2544. if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  2545. coordIndex++;
  2546. }
  2547. geometryIndex++;
  2548. }
  2549. multiFeatureIndex++;
  2550. }
  2551. break;
  2552. case 'GeometryCollection':
  2553. for (j = 0; j < geometry.geometries.length; j++)
  2554. if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;
  2555. break;
  2556. default:
  2557. throw new Error('Unknown Geometry Type');
  2558. }
  2559. }
  2560. }
  2561. }
  2562. /**
  2563. * Callback for coordReduce
  2564. *
  2565. * The first time the callback function is called, the values provided as arguments depend
  2566. * on whether the reduce method has an initialValue argument.
  2567. *
  2568. * If an initialValue is provided to the reduce method:
  2569. * - The previousValue argument is initialValue.
  2570. * - The currentValue argument is the value of the first element present in the array.
  2571. *
  2572. * If an initialValue is not provided:
  2573. * - The previousValue argument is the value of the first element present in the array.
  2574. * - The currentValue argument is the value of the second element present in the array.
  2575. *
  2576. * @callback coordReduceCallback
  2577. * @param {*} previousValue The accumulated value previously returned in the last invocation
  2578. * of the callback, or initialValue, if supplied.
  2579. * @param {Array<number>} currentCoord The current coordinate being processed.
  2580. * @param {number} coordIndex The current index of the coordinate being processed.
  2581. * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.
  2582. * @param {number} featureIndex The current index of the Feature being processed.
  2583. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  2584. * @param {number} geometryIndex The current index of the Geometry being processed.
  2585. */
  2586. /**
  2587. * Reduce coordinates in any GeoJSON object, similar to Array.reduce()
  2588. *
  2589. * @name coordReduce
  2590. * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object
  2591. * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)
  2592. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  2593. * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
  2594. * @returns {*} The value that results from the reduction.
  2595. * @example
  2596. * var features = turf.featureCollection([
  2597. * turf.point([26, 37], {"foo": "bar"}),
  2598. * turf.point([36, 53], {"hello": "world"})
  2599. * ]);
  2600. *
  2601. * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
  2602. * //=previousValue
  2603. * //=currentCoord
  2604. * //=coordIndex
  2605. * //=featureIndex
  2606. * //=multiFeatureIndex
  2607. * //=geometryIndex
  2608. * return currentCoord;
  2609. * });
  2610. */
  2611. function coordReduce(geojson, callback, initialValue, excludeWrapCoord) {
  2612. var previousValue = initialValue;
  2613. coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
  2614. if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;
  2615. else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);
  2616. }, excludeWrapCoord);
  2617. return previousValue;
  2618. }
  2619. /**
  2620. * Callback for propEach
  2621. *
  2622. * @callback propEachCallback
  2623. * @param {Object} currentProperties The current Properties being processed.
  2624. * @param {number} featureIndex The current index of the Feature being processed.
  2625. */
  2626. /**
  2627. * Iterate over properties in any GeoJSON object, similar to Array.forEach()
  2628. *
  2629. * @name propEach
  2630. * @param {FeatureCollection|Feature} geojson any GeoJSON object
  2631. * @param {Function} callback a method that takes (currentProperties, featureIndex)
  2632. * @returns {void}
  2633. * @example
  2634. * var features = turf.featureCollection([
  2635. * turf.point([26, 37], {foo: 'bar'}),
  2636. * turf.point([36, 53], {hello: 'world'})
  2637. * ]);
  2638. *
  2639. * turf.propEach(features, function (currentProperties, featureIndex) {
  2640. * //=currentProperties
  2641. * //=featureIndex
  2642. * });
  2643. */
  2644. function propEach(geojson, callback) {
  2645. var i;
  2646. switch (geojson.type) {
  2647. case 'FeatureCollection':
  2648. for (i = 0; i < geojson.features.length; i++) {
  2649. if (callback(geojson.features[i].properties, i) === false) break;
  2650. }
  2651. break;
  2652. case 'Feature':
  2653. callback(geojson.properties, 0);
  2654. break;
  2655. }
  2656. }
  2657. /**
  2658. * Callback for propReduce
  2659. *
  2660. * The first time the callback function is called, the values provided as arguments depend
  2661. * on whether the reduce method has an initialValue argument.
  2662. *
  2663. * If an initialValue is provided to the reduce method:
  2664. * - The previousValue argument is initialValue.
  2665. * - The currentValue argument is the value of the first element present in the array.
  2666. *
  2667. * If an initialValue is not provided:
  2668. * - The previousValue argument is the value of the first element present in the array.
  2669. * - The currentValue argument is the value of the second element present in the array.
  2670. *
  2671. * @callback propReduceCallback
  2672. * @param {*} previousValue The accumulated value previously returned in the last invocation
  2673. * of the callback, or initialValue, if supplied.
  2674. * @param {*} currentProperties The current Properties being processed.
  2675. * @param {number} featureIndex The current index of the Feature being processed.
  2676. */
  2677. /**
  2678. * Reduce properties in any GeoJSON object into a single value,
  2679. * similar to how Array.reduce works. However, in this case we lazily run
  2680. * the reduction, so an array of all properties is unnecessary.
  2681. *
  2682. * @name propReduce
  2683. * @param {FeatureCollection|Feature} geojson any GeoJSON object
  2684. * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)
  2685. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  2686. * @returns {*} The value that results from the reduction.
  2687. * @example
  2688. * var features = turf.featureCollection([
  2689. * turf.point([26, 37], {foo: 'bar'}),
  2690. * turf.point([36, 53], {hello: 'world'})
  2691. * ]);
  2692. *
  2693. * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {
  2694. * //=previousValue
  2695. * //=currentProperties
  2696. * //=featureIndex
  2697. * return currentProperties
  2698. * });
  2699. */
  2700. function propReduce(geojson, callback, initialValue) {
  2701. var previousValue = initialValue;
  2702. propEach(geojson, function (currentProperties, featureIndex) {
  2703. if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;
  2704. else previousValue = callback(previousValue, currentProperties, featureIndex);
  2705. });
  2706. return previousValue;
  2707. }
  2708. /**
  2709. * Callback for featureEach
  2710. *
  2711. * @callback featureEachCallback
  2712. * @param {Feature<any>} currentFeature The current Feature being processed.
  2713. * @param {number} featureIndex The current index of the Feature being processed.
  2714. */
  2715. /**
  2716. * Iterate over features in any GeoJSON object, similar to
  2717. * Array.forEach.
  2718. *
  2719. * @name featureEach
  2720. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  2721. * @param {Function} callback a method that takes (currentFeature, featureIndex)
  2722. * @returns {void}
  2723. * @example
  2724. * var features = turf.featureCollection([
  2725. * turf.point([26, 37], {foo: 'bar'}),
  2726. * turf.point([36, 53], {hello: 'world'})
  2727. * ]);
  2728. *
  2729. * turf.featureEach(features, function (currentFeature, featureIndex) {
  2730. * //=currentFeature
  2731. * //=featureIndex
  2732. * });
  2733. */
  2734. function featureEach(geojson, callback) {
  2735. if (geojson.type === 'Feature') {
  2736. callback(geojson, 0);
  2737. } else if (geojson.type === 'FeatureCollection') {
  2738. for (var i = 0; i < geojson.features.length; i++) {
  2739. if (callback(geojson.features[i], i) === false) break;
  2740. }
  2741. }
  2742. }
  2743. /**
  2744. * Callback for featureReduce
  2745. *
  2746. * The first time the callback function is called, the values provided as arguments depend
  2747. * on whether the reduce method has an initialValue argument.
  2748. *
  2749. * If an initialValue is provided to the reduce method:
  2750. * - The previousValue argument is initialValue.
  2751. * - The currentValue argument is the value of the first element present in the array.
  2752. *
  2753. * If an initialValue is not provided:
  2754. * - The previousValue argument is the value of the first element present in the array.
  2755. * - The currentValue argument is the value of the second element present in the array.
  2756. *
  2757. * @callback featureReduceCallback
  2758. * @param {*} previousValue The accumulated value previously returned in the last invocation
  2759. * of the callback, or initialValue, if supplied.
  2760. * @param {Feature} currentFeature The current Feature being processed.
  2761. * @param {number} featureIndex The current index of the Feature being processed.
  2762. */
  2763. /**
  2764. * Reduce features in any GeoJSON object, similar to Array.reduce().
  2765. *
  2766. * @name featureReduce
  2767. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  2768. * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)
  2769. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  2770. * @returns {*} The value that results from the reduction.
  2771. * @example
  2772. * var features = turf.featureCollection([
  2773. * turf.point([26, 37], {"foo": "bar"}),
  2774. * turf.point([36, 53], {"hello": "world"})
  2775. * ]);
  2776. *
  2777. * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {
  2778. * //=previousValue
  2779. * //=currentFeature
  2780. * //=featureIndex
  2781. * return currentFeature
  2782. * });
  2783. */
  2784. function featureReduce(geojson, callback, initialValue) {
  2785. var previousValue = initialValue;
  2786. featureEach(geojson, function (currentFeature, featureIndex) {
  2787. if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;
  2788. else previousValue = callback(previousValue, currentFeature, featureIndex);
  2789. });
  2790. return previousValue;
  2791. }
  2792. /**
  2793. * Get all coordinates from any GeoJSON object.
  2794. *
  2795. * @name coordAll
  2796. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  2797. * @returns {Array<Array<number>>} coordinate position array
  2798. * @example
  2799. * var features = turf.featureCollection([
  2800. * turf.point([26, 37], {foo: 'bar'}),
  2801. * turf.point([36, 53], {hello: 'world'})
  2802. * ]);
  2803. *
  2804. * var coords = turf.coordAll(features);
  2805. * //= [[26, 37], [36, 53]]
  2806. */
  2807. function coordAll(geojson) {
  2808. var coords = [];
  2809. coordEach(geojson, function (coord) {
  2810. coords.push(coord);
  2811. });
  2812. return coords;
  2813. }
  2814. /**
  2815. * Callback for geomEach
  2816. *
  2817. * @callback geomEachCallback
  2818. * @param {Geometry} currentGeometry The current Geometry being processed.
  2819. * @param {number} featureIndex The current index of the Feature being processed.
  2820. * @param {Object} featureProperties The current Feature Properties being processed.
  2821. * @param {Array<number>} featureBBox The current Feature BBox being processed.
  2822. * @param {number|string} featureId The current Feature Id being processed.
  2823. */
  2824. /**
  2825. * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()
  2826. *
  2827. * @name geomEach
  2828. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  2829. * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)
  2830. * @returns {void}
  2831. * @example
  2832. * var features = turf.featureCollection([
  2833. * turf.point([26, 37], {foo: 'bar'}),
  2834. * turf.point([36, 53], {hello: 'world'})
  2835. * ]);
  2836. *
  2837. * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
  2838. * //=currentGeometry
  2839. * //=featureIndex
  2840. * //=featureProperties
  2841. * //=featureBBox
  2842. * //=featureId
  2843. * });
  2844. */
  2845. function geomEach(geojson, callback) {
  2846. var i, j, g, geometry, stopG,
  2847. geometryMaybeCollection,
  2848. isGeometryCollection,
  2849. featureProperties,
  2850. featureBBox,
  2851. featureId,
  2852. featureIndex = 0,
  2853. isFeatureCollection = geojson.type === 'FeatureCollection',
  2854. isFeature = geojson.type === 'Feature',
  2855. stop = isFeatureCollection ? geojson.features.length : 1;
  2856. // This logic may look a little weird. The reason why it is that way
  2857. // is because it's trying to be fast. GeoJSON supports multiple kinds
  2858. // of objects at its root: FeatureCollection, Features, Geometries.
  2859. // This function has the responsibility of handling all of them, and that
  2860. // means that some of the `for` loops you see below actually just don't apply
  2861. // to certain inputs. For instance, if you give this just a
  2862. // Point geometry, then both loops are short-circuited and all we do
  2863. // is gradually rename the input until it's called 'geometry'.
  2864. //
  2865. // This also aims to allocate as few resources as possible: just a
  2866. // few numbers and booleans, rather than any temporary arrays as would
  2867. // be required with the normalization approach.
  2868. for (i = 0; i < stop; i++) {
  2869. geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :
  2870. (isFeature ? geojson.geometry : geojson));
  2871. featureProperties = (isFeatureCollection ? geojson.features[i].properties :
  2872. (isFeature ? geojson.properties : {}));
  2873. featureBBox = (isFeatureCollection ? geojson.features[i].bbox :
  2874. (isFeature ? geojson.bbox : undefined));
  2875. featureId = (isFeatureCollection ? geojson.features[i].id :
  2876. (isFeature ? geojson.id : undefined));
  2877. isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;
  2878. stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;
  2879. for (g = 0; g < stopG; g++) {
  2880. geometry = isGeometryCollection ?
  2881. geometryMaybeCollection.geometries[g] : geometryMaybeCollection;
  2882. // Handle null Geometry
  2883. if (geometry === null) {
  2884. if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;
  2885. continue;
  2886. }
  2887. switch (geometry.type) {
  2888. case 'Point':
  2889. case 'LineString':
  2890. case 'MultiPoint':
  2891. case 'Polygon':
  2892. case 'MultiLineString':
  2893. case 'MultiPolygon': {
  2894. if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;
  2895. break;
  2896. }
  2897. case 'GeometryCollection': {
  2898. for (j = 0; j < geometry.geometries.length; j++) {
  2899. if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;
  2900. }
  2901. break;
  2902. }
  2903. default:
  2904. throw new Error('Unknown Geometry Type');
  2905. }
  2906. }
  2907. // Only increase `featureIndex` per each feature
  2908. featureIndex++;
  2909. }
  2910. }
  2911. /**
  2912. * Callback for geomReduce
  2913. *
  2914. * The first time the callback function is called, the values provided as arguments depend
  2915. * on whether the reduce method has an initialValue argument.
  2916. *
  2917. * If an initialValue is provided to the reduce method:
  2918. * - The previousValue argument is initialValue.
  2919. * - The currentValue argument is the value of the first element present in the array.
  2920. *
  2921. * If an initialValue is not provided:
  2922. * - The previousValue argument is the value of the first element present in the array.
  2923. * - The currentValue argument is the value of the second element present in the array.
  2924. *
  2925. * @callback geomReduceCallback
  2926. * @param {*} previousValue The accumulated value previously returned in the last invocation
  2927. * of the callback, or initialValue, if supplied.
  2928. * @param {Geometry} currentGeometry The current Geometry being processed.
  2929. * @param {number} featureIndex The current index of the Feature being processed.
  2930. * @param {Object} featureProperties The current Feature Properties being processed.
  2931. * @param {Array<number>} featureBBox The current Feature BBox being processed.
  2932. * @param {number|string} featureId The current Feature Id being processed.
  2933. */
  2934. /**
  2935. * Reduce geometry in any GeoJSON object, similar to Array.reduce().
  2936. *
  2937. * @name geomReduce
  2938. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  2939. * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)
  2940. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  2941. * @returns {*} The value that results from the reduction.
  2942. * @example
  2943. * var features = turf.featureCollection([
  2944. * turf.point([26, 37], {foo: 'bar'}),
  2945. * turf.point([36, 53], {hello: 'world'})
  2946. * ]);
  2947. *
  2948. * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
  2949. * //=previousValue
  2950. * //=currentGeometry
  2951. * //=featureIndex
  2952. * //=featureProperties
  2953. * //=featureBBox
  2954. * //=featureId
  2955. * return currentGeometry
  2956. * });
  2957. */
  2958. function geomReduce(geojson, callback, initialValue) {
  2959. var previousValue = initialValue;
  2960. geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
  2961. if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;
  2962. else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);
  2963. });
  2964. return previousValue;
  2965. }
  2966. /**
  2967. * Callback for flattenEach
  2968. *
  2969. * @callback flattenEachCallback
  2970. * @param {Feature} currentFeature The current flattened feature being processed.
  2971. * @param {number} featureIndex The current index of the Feature being processed.
  2972. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  2973. */
  2974. /**
  2975. * Iterate over flattened features in any GeoJSON object, similar to
  2976. * Array.forEach.
  2977. *
  2978. * @name flattenEach
  2979. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  2980. * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)
  2981. * @example
  2982. * var features = turf.featureCollection([
  2983. * turf.point([26, 37], {foo: 'bar'}),
  2984. * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})
  2985. * ]);
  2986. *
  2987. * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {
  2988. * //=currentFeature
  2989. * //=featureIndex
  2990. * //=multiFeatureIndex
  2991. * });
  2992. */
  2993. function flattenEach(geojson, callback) {
  2994. geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {
  2995. // Callback for single geometry
  2996. var type = (geometry === null) ? null : geometry.type;
  2997. switch (type) {
  2998. case null:
  2999. case 'Point':
  3000. case 'LineString':
  3001. case 'Polygon':
  3002. if (callback(feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;
  3003. return;
  3004. }
  3005. var geomType;
  3006. // Callback for multi-geometry
  3007. switch (type) {
  3008. case 'MultiPoint':
  3009. geomType = 'Point';
  3010. break;
  3011. case 'MultiLineString':
  3012. geomType = 'LineString';
  3013. break;
  3014. case 'MultiPolygon':
  3015. geomType = 'Polygon';
  3016. break;
  3017. }
  3018. for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {
  3019. var coordinate = geometry.coordinates[multiFeatureIndex];
  3020. var geom = {
  3021. type: geomType,
  3022. coordinates: coordinate
  3023. };
  3024. if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;
  3025. }
  3026. });
  3027. }
  3028. /**
  3029. * Callback for flattenReduce
  3030. *
  3031. * The first time the callback function is called, the values provided as arguments depend
  3032. * on whether the reduce method has an initialValue argument.
  3033. *
  3034. * If an initialValue is provided to the reduce method:
  3035. * - The previousValue argument is initialValue.
  3036. * - The currentValue argument is the value of the first element present in the array.
  3037. *
  3038. * If an initialValue is not provided:
  3039. * - The previousValue argument is the value of the first element present in the array.
  3040. * - The currentValue argument is the value of the second element present in the array.
  3041. *
  3042. * @callback flattenReduceCallback
  3043. * @param {*} previousValue The accumulated value previously returned in the last invocation
  3044. * of the callback, or initialValue, if supplied.
  3045. * @param {Feature} currentFeature The current Feature being processed.
  3046. * @param {number} featureIndex The current index of the Feature being processed.
  3047. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  3048. */
  3049. /**
  3050. * Reduce flattened features in any GeoJSON object, similar to Array.reduce().
  3051. *
  3052. * @name flattenReduce
  3053. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  3054. * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)
  3055. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  3056. * @returns {*} The value that results from the reduction.
  3057. * @example
  3058. * var features = turf.featureCollection([
  3059. * turf.point([26, 37], {foo: 'bar'}),
  3060. * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})
  3061. * ]);
  3062. *
  3063. * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {
  3064. * //=previousValue
  3065. * //=currentFeature
  3066. * //=featureIndex
  3067. * //=multiFeatureIndex
  3068. * return currentFeature
  3069. * });
  3070. */
  3071. function flattenReduce(geojson, callback, initialValue) {
  3072. var previousValue = initialValue;
  3073. flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {
  3074. if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;
  3075. else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);
  3076. });
  3077. return previousValue;
  3078. }
  3079. /**
  3080. * Callback for segmentEach
  3081. *
  3082. * @callback segmentEachCallback
  3083. * @param {Feature<LineString>} currentSegment The current Segment being processed.
  3084. * @param {number} featureIndex The current index of the Feature being processed.
  3085. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  3086. * @param {number} geometryIndex The current index of the Geometry being processed.
  3087. * @param {number} segmentIndex The current index of the Segment being processed.
  3088. * @returns {void}
  3089. */
  3090. /**
  3091. * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()
  3092. * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
  3093. *
  3094. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON
  3095. * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)
  3096. * @returns {void}
  3097. * @example
  3098. * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);
  3099. *
  3100. * // Iterate over GeoJSON by 2-vertex segments
  3101. * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
  3102. * //=currentSegment
  3103. * //=featureIndex
  3104. * //=multiFeatureIndex
  3105. * //=geometryIndex
  3106. * //=segmentIndex
  3107. * });
  3108. *
  3109. * // Calculate the total number of segments
  3110. * var total = 0;
  3111. * turf.segmentEach(polygon, function () {
  3112. * total++;
  3113. * });
  3114. */
  3115. function segmentEach(geojson, callback) {
  3116. flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {
  3117. var segmentIndex = 0;
  3118. // Exclude null Geometries
  3119. if (!feature$$1.geometry) return;
  3120. // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
  3121. var type = feature$$1.geometry.type;
  3122. if (type === 'Point' || type === 'MultiPoint') return;
  3123. // Generate 2-vertex line segments
  3124. var previousCoords;
  3125. if (coordEach(feature$$1, function (currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {
  3126. // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`
  3127. if (previousCoords === undefined) {
  3128. previousCoords = currentCoord;
  3129. return;
  3130. }
  3131. var currentSegment = lineString([previousCoords, currentCoord], feature$$1.properties);
  3132. if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;
  3133. segmentIndex++;
  3134. previousCoords = currentCoord;
  3135. }) === false) return false;
  3136. });
  3137. }
  3138. /**
  3139. * Callback for segmentReduce
  3140. *
  3141. * The first time the callback function is called, the values provided as arguments depend
  3142. * on whether the reduce method has an initialValue argument.
  3143. *
  3144. * If an initialValue is provided to the reduce method:
  3145. * - The previousValue argument is initialValue.
  3146. * - The currentValue argument is the value of the first element present in the array.
  3147. *
  3148. * If an initialValue is not provided:
  3149. * - The previousValue argument is the value of the first element present in the array.
  3150. * - The currentValue argument is the value of the second element present in the array.
  3151. *
  3152. * @callback segmentReduceCallback
  3153. * @param {*} previousValue The accumulated value previously returned in the last invocation
  3154. * of the callback, or initialValue, if supplied.
  3155. * @param {Feature<LineString>} currentSegment The current Segment being processed.
  3156. * @param {number} featureIndex The current index of the Feature being processed.
  3157. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  3158. * @param {number} geometryIndex The current index of the Geometry being processed.
  3159. * @param {number} segmentIndex The current index of the Segment being processed.
  3160. */
  3161. /**
  3162. * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()
  3163. * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
  3164. *
  3165. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON
  3166. * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)
  3167. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  3168. * @returns {void}
  3169. * @example
  3170. * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);
  3171. *
  3172. * // Iterate over GeoJSON by 2-vertex segments
  3173. * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
  3174. * //= previousSegment
  3175. * //= currentSegment
  3176. * //= featureIndex
  3177. * //= multiFeatureIndex
  3178. * //= geometryIndex
  3179. * //= segmentInex
  3180. * return currentSegment
  3181. * });
  3182. *
  3183. * // Calculate the total number of segments
  3184. * var initialValue = 0
  3185. * var total = turf.segmentReduce(polygon, function (previousValue) {
  3186. * previousValue++;
  3187. * return previousValue;
  3188. * }, initialValue);
  3189. */
  3190. function segmentReduce(geojson, callback, initialValue) {
  3191. var previousValue = initialValue;
  3192. var started = false;
  3193. segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
  3194. if (started === false && initialValue === undefined) previousValue = currentSegment;
  3195. else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);
  3196. started = true;
  3197. });
  3198. return previousValue;
  3199. }
  3200. /**
  3201. * Callback for lineEach
  3202. *
  3203. * @callback lineEachCallback
  3204. * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed
  3205. * @param {number} featureIndex The current index of the Feature being processed
  3206. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed
  3207. * @param {number} geometryIndex The current index of the Geometry being processed
  3208. */
  3209. /**
  3210. * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,
  3211. * similar to Array.forEach.
  3212. *
  3213. * @name lineEach
  3214. * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object
  3215. * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)
  3216. * @example
  3217. * var multiLine = turf.multiLineString([
  3218. * [[26, 37], [35, 45]],
  3219. * [[36, 53], [38, 50], [41, 55]]
  3220. * ]);
  3221. *
  3222. * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
  3223. * //=currentLine
  3224. * //=featureIndex
  3225. * //=multiFeatureIndex
  3226. * //=geometryIndex
  3227. * });
  3228. */
  3229. function lineEach(geojson, callback) {
  3230. // validation
  3231. if (!geojson) throw new Error('geojson is required');
  3232. flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {
  3233. if (feature$$1.geometry === null) return;
  3234. var type = feature$$1.geometry.type;
  3235. var coords = feature$$1.geometry.coordinates;
  3236. switch (type) {
  3237. case 'LineString':
  3238. if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;
  3239. break;
  3240. case 'Polygon':
  3241. for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {
  3242. if (callback(lineString(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  3243. }
  3244. break;
  3245. }
  3246. });
  3247. }
  3248. /**
  3249. * Callback for lineReduce
  3250. *
  3251. * The first time the callback function is called, the values provided as arguments depend
  3252. * on whether the reduce method has an initialValue argument.
  3253. *
  3254. * If an initialValue is provided to the reduce method:
  3255. * - The previousValue argument is initialValue.
  3256. * - The currentValue argument is the value of the first element present in the array.
  3257. *
  3258. * If an initialValue is not provided:
  3259. * - The previousValue argument is the value of the first element present in the array.
  3260. * - The currentValue argument is the value of the second element present in the array.
  3261. *
  3262. * @callback lineReduceCallback
  3263. * @param {*} previousValue The accumulated value previously returned in the last invocation
  3264. * of the callback, or initialValue, if supplied.
  3265. * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.
  3266. * @param {number} featureIndex The current index of the Feature being processed
  3267. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed
  3268. * @param {number} geometryIndex The current index of the Geometry being processed
  3269. */
  3270. /**
  3271. * Reduce features in any GeoJSON object, similar to Array.reduce().
  3272. *
  3273. * @name lineReduce
  3274. * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object
  3275. * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)
  3276. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  3277. * @returns {*} The value that results from the reduction.
  3278. * @example
  3279. * var multiPoly = turf.multiPolygon([
  3280. * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),
  3281. * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])
  3282. * ]);
  3283. *
  3284. * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
  3285. * //=previousValue
  3286. * //=currentLine
  3287. * //=featureIndex
  3288. * //=multiFeatureIndex
  3289. * //=geometryIndex
  3290. * return currentLine
  3291. * });
  3292. */
  3293. function lineReduce(geojson, callback, initialValue) {
  3294. var previousValue = initialValue;
  3295. lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
  3296. if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;
  3297. else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);
  3298. });
  3299. return previousValue;
  3300. }
  3301. /**
  3302. * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.
  3303. *
  3304. * Negative indexes are permitted.
  3305. * Point & MultiPoint will always return null.
  3306. *
  3307. * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry
  3308. * @param {Object} [options={}] Optional parameters
  3309. * @param {number} [options.featureIndex=0] Feature Index
  3310. * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index
  3311. * @param {number} [options.geometryIndex=0] Geometry Index
  3312. * @param {number} [options.segmentIndex=0] Segment Index
  3313. * @param {Object} [options.properties={}] Translate Properties to output LineString
  3314. * @param {BBox} [options.bbox={}] Translate BBox to output LineString
  3315. * @param {number|string} [options.id={}] Translate Id to output LineString
  3316. * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString
  3317. * @example
  3318. * var multiLine = turf.multiLineString([
  3319. * [[10, 10], [50, 30], [30, 40]],
  3320. * [[-10, -10], [-50, -30], [-30, -40]]
  3321. * ]);
  3322. *
  3323. * // First Segment (defaults are 0)
  3324. * turf.findSegment(multiLine);
  3325. * // => Feature<LineString<[[10, 10], [50, 30]]>>
  3326. *
  3327. * // First Segment of 2nd Multi Feature
  3328. * turf.findSegment(multiLine, {multiFeatureIndex: 1});
  3329. * // => Feature<LineString<[[-10, -10], [-50, -30]]>>
  3330. *
  3331. * // Last Segment of Last Multi Feature
  3332. * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});
  3333. * // => Feature<LineString<[[-50, -30], [-30, -40]]>>
  3334. */
  3335. function findSegment(geojson, options) {
  3336. // Optional Parameters
  3337. options = options || {};
  3338. if (!isObject(options)) throw new Error('options is invalid');
  3339. var featureIndex = options.featureIndex || 0;
  3340. var multiFeatureIndex = options.multiFeatureIndex || 0;
  3341. var geometryIndex = options.geometryIndex || 0;
  3342. var segmentIndex = options.segmentIndex || 0;
  3343. // Find FeatureIndex
  3344. var properties = options.properties;
  3345. var geometry;
  3346. switch (geojson.type) {
  3347. case 'FeatureCollection':
  3348. if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;
  3349. properties = properties || geojson.features[featureIndex].properties;
  3350. geometry = geojson.features[featureIndex].geometry;
  3351. break;
  3352. case 'Feature':
  3353. properties = properties || geojson.properties;
  3354. geometry = geojson.geometry;
  3355. break;
  3356. case 'Point':
  3357. case 'MultiPoint':
  3358. return null;
  3359. case 'LineString':
  3360. case 'Polygon':
  3361. case 'MultiLineString':
  3362. case 'MultiPolygon':
  3363. geometry = geojson;
  3364. break;
  3365. default:
  3366. throw new Error('geojson is invalid');
  3367. }
  3368. // Find SegmentIndex
  3369. if (geometry === null) return null;
  3370. var coords = geometry.coordinates;
  3371. switch (geometry.type) {
  3372. case 'Point':
  3373. case 'MultiPoint':
  3374. return null;
  3375. case 'LineString':
  3376. if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;
  3377. return lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);
  3378. case 'Polygon':
  3379. if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;
  3380. if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;
  3381. return lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);
  3382. case 'MultiLineString':
  3383. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  3384. if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;
  3385. return lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);
  3386. case 'MultiPolygon':
  3387. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  3388. if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;
  3389. if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;
  3390. return lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);
  3391. }
  3392. throw new Error('geojson is invalid');
  3393. }
  3394. /**
  3395. * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.
  3396. *
  3397. * Negative indexes are permitted.
  3398. *
  3399. * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry
  3400. * @param {Object} [options={}] Optional parameters
  3401. * @param {number} [options.featureIndex=0] Feature Index
  3402. * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index
  3403. * @param {number} [options.geometryIndex=0] Geometry Index
  3404. * @param {number} [options.coordIndex=0] Coord Index
  3405. * @param {Object} [options.properties={}] Translate Properties to output Point
  3406. * @param {BBox} [options.bbox={}] Translate BBox to output Point
  3407. * @param {number|string} [options.id={}] Translate Id to output Point
  3408. * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point
  3409. * @example
  3410. * var multiLine = turf.multiLineString([
  3411. * [[10, 10], [50, 30], [30, 40]],
  3412. * [[-10, -10], [-50, -30], [-30, -40]]
  3413. * ]);
  3414. *
  3415. * // First Segment (defaults are 0)
  3416. * turf.findPoint(multiLine);
  3417. * // => Feature<Point<[10, 10]>>
  3418. *
  3419. * // First Segment of the 2nd Multi-Feature
  3420. * turf.findPoint(multiLine, {multiFeatureIndex: 1});
  3421. * // => Feature<Point<[-10, -10]>>
  3422. *
  3423. * // Last Segment of last Multi-Feature
  3424. * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});
  3425. * // => Feature<Point<[-30, -40]>>
  3426. */
  3427. function findPoint(geojson, options) {
  3428. // Optional Parameters
  3429. options = options || {};
  3430. if (!isObject(options)) throw new Error('options is invalid');
  3431. var featureIndex = options.featureIndex || 0;
  3432. var multiFeatureIndex = options.multiFeatureIndex || 0;
  3433. var geometryIndex = options.geometryIndex || 0;
  3434. var coordIndex = options.coordIndex || 0;
  3435. // Find FeatureIndex
  3436. var properties = options.properties;
  3437. var geometry;
  3438. switch (geojson.type) {
  3439. case 'FeatureCollection':
  3440. if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;
  3441. properties = properties || geojson.features[featureIndex].properties;
  3442. geometry = geojson.features[featureIndex].geometry;
  3443. break;
  3444. case 'Feature':
  3445. properties = properties || geojson.properties;
  3446. geometry = geojson.geometry;
  3447. break;
  3448. case 'Point':
  3449. case 'MultiPoint':
  3450. return null;
  3451. case 'LineString':
  3452. case 'Polygon':
  3453. case 'MultiLineString':
  3454. case 'MultiPolygon':
  3455. geometry = geojson;
  3456. break;
  3457. default:
  3458. throw new Error('geojson is invalid');
  3459. }
  3460. // Find Coord Index
  3461. if (geometry === null) return null;
  3462. var coords = geometry.coordinates;
  3463. switch (geometry.type) {
  3464. case 'Point':
  3465. return point(coords, properties, options);
  3466. case 'MultiPoint':
  3467. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  3468. return point(coords[multiFeatureIndex], properties, options);
  3469. case 'LineString':
  3470. if (coordIndex < 0) coordIndex = coords.length + coordIndex;
  3471. return point(coords[coordIndex], properties, options);
  3472. case 'Polygon':
  3473. if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;
  3474. if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;
  3475. return point(coords[geometryIndex][coordIndex], properties, options);
  3476. case 'MultiLineString':
  3477. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  3478. if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;
  3479. return point(coords[multiFeatureIndex][coordIndex], properties, options);
  3480. case 'MultiPolygon':
  3481. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  3482. if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;
  3483. if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;
  3484. return point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);
  3485. }
  3486. throw new Error('geojson is invalid');
  3487. }
  3488. // CONCATENATED MODULE: ./node_modules/@turf/envelope/node_modules/@turf/bbox/main.es.js
  3489. /**
  3490. * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.
  3491. *
  3492. * @name bbox
  3493. * @param {GeoJSON} geojson any GeoJSON object
  3494. * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order
  3495. * @example
  3496. * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);
  3497. * var bbox = turf.bbox(line);
  3498. * var bboxPolygon = turf.bboxPolygon(bbox);
  3499. *
  3500. * //addToMap
  3501. * var addToMap = [line, bboxPolygon]
  3502. */
  3503. function main_es_bbox(geojson) {
  3504. var BBox = [Infinity, Infinity, -Infinity, -Infinity];
  3505. coordEach(geojson, function (coord) {
  3506. if (BBox[0] > coord[0]) BBox[0] = coord[0];
  3507. if (BBox[1] > coord[1]) BBox[1] = coord[1];
  3508. if (BBox[2] < coord[0]) BBox[2] = coord[0];
  3509. if (BBox[3] < coord[1]) BBox[3] = coord[1];
  3510. });
  3511. return BBox;
  3512. }
  3513. /* harmony default export */ var main_es = (main_es_bbox);
  3514. // CONCATENATED MODULE: ./node_modules/@turf/bbox-polygon/node_modules/@turf/helpers/main.es.js
  3515. /**
  3516. * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.
  3517. */
  3518. var main_es_earthRadius = 6371008.8;
  3519. /**
  3520. * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.
  3521. */
  3522. var main_es_factors = {
  3523. meters: main_es_earthRadius,
  3524. metres: main_es_earthRadius,
  3525. millimeters: main_es_earthRadius * 1000,
  3526. millimetres: main_es_earthRadius * 1000,
  3527. centimeters: main_es_earthRadius * 100,
  3528. centimetres: main_es_earthRadius * 100,
  3529. kilometers: main_es_earthRadius / 1000,
  3530. kilometres: main_es_earthRadius / 1000,
  3531. miles: main_es_earthRadius / 1609.344,
  3532. nauticalmiles: main_es_earthRadius / 1852,
  3533. inches: main_es_earthRadius * 39.370,
  3534. yards: main_es_earthRadius / 1.0936,
  3535. feet: main_es_earthRadius * 3.28084,
  3536. radians: 1,
  3537. degrees: main_es_earthRadius / 111325,
  3538. };
  3539. /**
  3540. * Units of measurement factors based on 1 meter.
  3541. */
  3542. var main_es_unitsFactors = {
  3543. meters: 1,
  3544. metres: 1,
  3545. millimeters: 1000,
  3546. millimetres: 1000,
  3547. centimeters: 100,
  3548. centimetres: 100,
  3549. kilometers: 1 / 1000,
  3550. kilometres: 1 / 1000,
  3551. miles: 1 / 1609.344,
  3552. nauticalmiles: 1 / 1852,
  3553. inches: 39.370,
  3554. yards: 1 / 1.0936,
  3555. feet: 3.28084,
  3556. radians: 1 / main_es_earthRadius,
  3557. degrees: 1 / 111325,
  3558. };
  3559. /**
  3560. * Area of measurement factors based on 1 square meter.
  3561. */
  3562. var main_es_areaFactors = {
  3563. meters: 1,
  3564. metres: 1,
  3565. millimeters: 1000000,
  3566. millimetres: 1000000,
  3567. centimeters: 10000,
  3568. centimetres: 10000,
  3569. kilometers: 0.000001,
  3570. kilometres: 0.000001,
  3571. acres: 0.000247105,
  3572. miles: 3.86e-7,
  3573. yards: 1.195990046,
  3574. feet: 10.763910417,
  3575. inches: 1550.003100006
  3576. };
  3577. /**
  3578. * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
  3579. *
  3580. * @name feature
  3581. * @param {Geometry} geometry input geometry
  3582. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  3583. * @param {Object} [options={}] Optional Parameters
  3584. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  3585. * @param {string|number} [options.id] Identifier associated with the Feature
  3586. * @returns {Feature} a GeoJSON Feature
  3587. * @example
  3588. * var geometry = {
  3589. * "type": "Point",
  3590. * "coordinates": [110, 50]
  3591. * };
  3592. *
  3593. * var feature = turf.feature(geometry);
  3594. *
  3595. * //=feature
  3596. */
  3597. function main_es_feature(geometry, properties, options) {
  3598. // Optional Parameters
  3599. options = options || {};
  3600. if (!main_es_isObject(options)) throw new Error('options is invalid');
  3601. var bbox = options.bbox;
  3602. var id = options.id;
  3603. // Validation
  3604. if (geometry === undefined) throw new Error('geometry is required');
  3605. if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');
  3606. if (bbox) main_es_validateBBox(bbox);
  3607. if (id) main_es_validateId(id);
  3608. // Main
  3609. var feat = {type: 'Feature'};
  3610. if (id) feat.id = id;
  3611. if (bbox) feat.bbox = bbox;
  3612. feat.properties = properties || {};
  3613. feat.geometry = geometry;
  3614. return feat;
  3615. }
  3616. /**
  3617. * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
  3618. * For GeometryCollection type use `helpers.geometryCollection`
  3619. *
  3620. * @name geometry
  3621. * @param {string} type Geometry Type
  3622. * @param {Array<number>} coordinates Coordinates
  3623. * @param {Object} [options={}] Optional Parameters
  3624. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry
  3625. * @returns {Geometry} a GeoJSON Geometry
  3626. * @example
  3627. * var type = 'Point';
  3628. * var coordinates = [110, 50];
  3629. *
  3630. * var geometry = turf.geometry(type, coordinates);
  3631. *
  3632. * //=geometry
  3633. */
  3634. function helpers_main_es_geometry(type, coordinates, options) {
  3635. // Optional Parameters
  3636. options = options || {};
  3637. if (!main_es_isObject(options)) throw new Error('options is invalid');
  3638. var bbox = options.bbox;
  3639. // Validation
  3640. if (!type) throw new Error('type is required');
  3641. if (!coordinates) throw new Error('coordinates is required');
  3642. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  3643. if (bbox) main_es_validateBBox(bbox);
  3644. // Main
  3645. var geom;
  3646. switch (type) {
  3647. case 'Point': geom = main_es_point(coordinates).geometry; break;
  3648. case 'LineString': geom = main_es_lineString(coordinates).geometry; break;
  3649. case 'Polygon': geom = main_es_polygon(coordinates).geometry; break;
  3650. case 'MultiPoint': geom = main_es_multiPoint(coordinates).geometry; break;
  3651. case 'MultiLineString': geom = main_es_multiLineString(coordinates).geometry; break;
  3652. case 'MultiPolygon': geom = main_es_multiPolygon(coordinates).geometry; break;
  3653. default: throw new Error(type + ' is invalid');
  3654. }
  3655. if (bbox) geom.bbox = bbox;
  3656. return geom;
  3657. }
  3658. /**
  3659. * Creates a {@link Point} {@link Feature} from a Position.
  3660. *
  3661. * @name point
  3662. * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
  3663. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  3664. * @param {Object} [options={}] Optional Parameters
  3665. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  3666. * @param {string|number} [options.id] Identifier associated with the Feature
  3667. * @returns {Feature<Point>} a Point feature
  3668. * @example
  3669. * var point = turf.point([-75.343, 39.984]);
  3670. *
  3671. * //=point
  3672. */
  3673. function main_es_point(coordinates, properties, options) {
  3674. if (!coordinates) throw new Error('coordinates is required');
  3675. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  3676. if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');
  3677. if (!main_es_isNumber(coordinates[0]) || !main_es_isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');
  3678. return main_es_feature({
  3679. type: 'Point',
  3680. coordinates: coordinates
  3681. }, properties, options);
  3682. }
  3683. /**
  3684. * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.
  3685. *
  3686. * @name points
  3687. * @param {Array<Array<number>>} coordinates an array of Points
  3688. * @param {Object} [properties={}] Translate these properties to each Feature
  3689. * @param {Object} [options={}] Optional Parameters
  3690. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
  3691. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  3692. * @returns {FeatureCollection<Point>} Point Feature
  3693. * @example
  3694. * var points = turf.points([
  3695. * [-75, 39],
  3696. * [-80, 45],
  3697. * [-78, 50]
  3698. * ]);
  3699. *
  3700. * //=points
  3701. */
  3702. function main_es_points(coordinates, properties, options) {
  3703. if (!coordinates) throw new Error('coordinates is required');
  3704. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  3705. return main_es_featureCollection(coordinates.map(function (coords) {
  3706. return main_es_point(coords, properties);
  3707. }), options);
  3708. }
  3709. /**
  3710. * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.
  3711. *
  3712. * @name polygon
  3713. * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings
  3714. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  3715. * @param {Object} [options={}] Optional Parameters
  3716. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  3717. * @param {string|number} [options.id] Identifier associated with the Feature
  3718. * @returns {Feature<Polygon>} Polygon Feature
  3719. * @example
  3720. * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });
  3721. *
  3722. * //=polygon
  3723. */
  3724. function main_es_polygon(coordinates, properties, options) {
  3725. if (!coordinates) throw new Error('coordinates is required');
  3726. for (var i = 0; i < coordinates.length; i++) {
  3727. var ring = coordinates[i];
  3728. if (ring.length < 4) {
  3729. throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');
  3730. }
  3731. for (var j = 0; j < ring[ring.length - 1].length; j++) {
  3732. // Check if first point of Polygon contains two numbers
  3733. if (i === 0 && j === 0 && !main_es_isNumber(ring[0][0]) || !main_es_isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');
  3734. if (ring[ring.length - 1][j] !== ring[0][j]) {
  3735. throw new Error('First and last Position are not equivalent.');
  3736. }
  3737. }
  3738. }
  3739. return main_es_feature({
  3740. type: 'Polygon',
  3741. coordinates: coordinates
  3742. }, properties, options);
  3743. }
  3744. /**
  3745. * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.
  3746. *
  3747. * @name polygons
  3748. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates
  3749. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  3750. * @param {Object} [options={}] Optional Parameters
  3751. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  3752. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  3753. * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection
  3754. * @example
  3755. * var polygons = turf.polygons([
  3756. * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],
  3757. * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],
  3758. * ]);
  3759. *
  3760. * //=polygons
  3761. */
  3762. function main_es_polygons(coordinates, properties, options) {
  3763. if (!coordinates) throw new Error('coordinates is required');
  3764. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  3765. return main_es_featureCollection(coordinates.map(function (coords) {
  3766. return main_es_polygon(coords, properties);
  3767. }), options);
  3768. }
  3769. /**
  3770. * Creates a {@link LineString} {@link Feature} from an Array of Positions.
  3771. *
  3772. * @name lineString
  3773. * @param {Array<Array<number>>} coordinates an array of Positions
  3774. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  3775. * @param {Object} [options={}] Optional Parameters
  3776. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  3777. * @param {string|number} [options.id] Identifier associated with the Feature
  3778. * @returns {Feature<LineString>} LineString Feature
  3779. * @example
  3780. * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});
  3781. * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});
  3782. *
  3783. * //=linestring1
  3784. * //=linestring2
  3785. */
  3786. function main_es_lineString(coordinates, properties, options) {
  3787. if (!coordinates) throw new Error('coordinates is required');
  3788. if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');
  3789. // Check if first point of LineString contains two numbers
  3790. if (!main_es_isNumber(coordinates[0][1]) || !main_es_isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');
  3791. return main_es_feature({
  3792. type: 'LineString',
  3793. coordinates: coordinates
  3794. }, properties, options);
  3795. }
  3796. /**
  3797. * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.
  3798. *
  3799. * @name lineStrings
  3800. * @param {Array<Array<number>>} coordinates an array of LinearRings
  3801. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  3802. * @param {Object} [options={}] Optional Parameters
  3803. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
  3804. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  3805. * @returns {FeatureCollection<LineString>} LineString FeatureCollection
  3806. * @example
  3807. * var linestrings = turf.lineStrings([
  3808. * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],
  3809. * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]
  3810. * ]);
  3811. *
  3812. * //=linestrings
  3813. */
  3814. function main_es_lineStrings(coordinates, properties, options) {
  3815. if (!coordinates) throw new Error('coordinates is required');
  3816. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  3817. return main_es_featureCollection(coordinates.map(function (coords) {
  3818. return main_es_lineString(coords, properties);
  3819. }), options);
  3820. }
  3821. /**
  3822. * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.
  3823. *
  3824. * @name featureCollection
  3825. * @param {Feature[]} features input features
  3826. * @param {Object} [options={}] Optional Parameters
  3827. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  3828. * @param {string|number} [options.id] Identifier associated with the Feature
  3829. * @returns {FeatureCollection} FeatureCollection of Features
  3830. * @example
  3831. * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});
  3832. * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});
  3833. * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});
  3834. *
  3835. * var collection = turf.featureCollection([
  3836. * locationA,
  3837. * locationB,
  3838. * locationC
  3839. * ]);
  3840. *
  3841. * //=collection
  3842. */
  3843. function main_es_featureCollection(features, options) {
  3844. // Optional Parameters
  3845. options = options || {};
  3846. if (!main_es_isObject(options)) throw new Error('options is invalid');
  3847. var bbox = options.bbox;
  3848. var id = options.id;
  3849. // Validation
  3850. if (!features) throw new Error('No features passed');
  3851. if (!Array.isArray(features)) throw new Error('features must be an Array');
  3852. if (bbox) main_es_validateBBox(bbox);
  3853. if (id) main_es_validateId(id);
  3854. // Main
  3855. var fc = {type: 'FeatureCollection'};
  3856. if (id) fc.id = id;
  3857. if (bbox) fc.bbox = bbox;
  3858. fc.features = features;
  3859. return fc;
  3860. }
  3861. /**
  3862. * Creates a {@link Feature<MultiLineString>} based on a
  3863. * coordinate array. Properties can be added optionally.
  3864. *
  3865. * @name multiLineString
  3866. * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings
  3867. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  3868. * @param {Object} [options={}] Optional Parameters
  3869. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  3870. * @param {string|number} [options.id] Identifier associated with the Feature
  3871. * @returns {Feature<MultiLineString>} a MultiLineString feature
  3872. * @throws {Error} if no coordinates are passed
  3873. * @example
  3874. * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);
  3875. *
  3876. * //=multiLine
  3877. */
  3878. function main_es_multiLineString(coordinates, properties, options) {
  3879. if (!coordinates) throw new Error('coordinates is required');
  3880. return main_es_feature({
  3881. type: 'MultiLineString',
  3882. coordinates: coordinates
  3883. }, properties, options);
  3884. }
  3885. /**
  3886. * Creates a {@link Feature<MultiPoint>} based on a
  3887. * coordinate array. Properties can be added optionally.
  3888. *
  3889. * @name multiPoint
  3890. * @param {Array<Array<number>>} coordinates an array of Positions
  3891. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  3892. * @param {Object} [options={}] Optional Parameters
  3893. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  3894. * @param {string|number} [options.id] Identifier associated with the Feature
  3895. * @returns {Feature<MultiPoint>} a MultiPoint feature
  3896. * @throws {Error} if no coordinates are passed
  3897. * @example
  3898. * var multiPt = turf.multiPoint([[0,0],[10,10]]);
  3899. *
  3900. * //=multiPt
  3901. */
  3902. function main_es_multiPoint(coordinates, properties, options) {
  3903. if (!coordinates) throw new Error('coordinates is required');
  3904. return main_es_feature({
  3905. type: 'MultiPoint',
  3906. coordinates: coordinates
  3907. }, properties, options);
  3908. }
  3909. /**
  3910. * Creates a {@link Feature<MultiPolygon>} based on a
  3911. * coordinate array. Properties can be added optionally.
  3912. *
  3913. * @name multiPolygon
  3914. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons
  3915. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  3916. * @param {Object} [options={}] Optional Parameters
  3917. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  3918. * @param {string|number} [options.id] Identifier associated with the Feature
  3919. * @returns {Feature<MultiPolygon>} a multipolygon feature
  3920. * @throws {Error} if no coordinates are passed
  3921. * @example
  3922. * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);
  3923. *
  3924. * //=multiPoly
  3925. *
  3926. */
  3927. function main_es_multiPolygon(coordinates, properties, options) {
  3928. if (!coordinates) throw new Error('coordinates is required');
  3929. return main_es_feature({
  3930. type: 'MultiPolygon',
  3931. coordinates: coordinates
  3932. }, properties, options);
  3933. }
  3934. /**
  3935. * Creates a {@link Feature<GeometryCollection>} based on a
  3936. * coordinate array. Properties can be added optionally.
  3937. *
  3938. * @name geometryCollection
  3939. * @param {Array<Geometry>} geometries an array of GeoJSON Geometries
  3940. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  3941. * @param {Object} [options={}] Optional Parameters
  3942. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  3943. * @param {string|number} [options.id] Identifier associated with the Feature
  3944. * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature
  3945. * @example
  3946. * var pt = {
  3947. * "type": "Point",
  3948. * "coordinates": [100, 0]
  3949. * };
  3950. * var line = {
  3951. * "type": "LineString",
  3952. * "coordinates": [ [101, 0], [102, 1] ]
  3953. * };
  3954. * var collection = turf.geometryCollection([pt, line]);
  3955. *
  3956. * //=collection
  3957. */
  3958. function main_es_geometryCollection(geometries, properties, options) {
  3959. if (!geometries) throw new Error('geometries is required');
  3960. if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');
  3961. return main_es_feature({
  3962. type: 'GeometryCollection',
  3963. geometries: geometries
  3964. }, properties, options);
  3965. }
  3966. /**
  3967. * Round number to precision
  3968. *
  3969. * @param {number} num Number
  3970. * @param {number} [precision=0] Precision
  3971. * @returns {number} rounded number
  3972. * @example
  3973. * turf.round(120.4321)
  3974. * //=120
  3975. *
  3976. * turf.round(120.4321, 2)
  3977. * //=120.43
  3978. */
  3979. function main_es_round(num, precision) {
  3980. if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');
  3981. if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');
  3982. var multiplier = Math.pow(10, precision || 0);
  3983. return Math.round(num * multiplier) / multiplier;
  3984. }
  3985. /**
  3986. * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.
  3987. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  3988. *
  3989. * @name radiansToLength
  3990. * @param {number} radians in radians across the sphere
  3991. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  3992. * @returns {number} distance
  3993. */
  3994. function main_es_radiansToLength(radians, units) {
  3995. if (radians === undefined || radians === null) throw new Error('radians is required');
  3996. if (units && typeof units !== 'string') throw new Error('units must be a string');
  3997. var factor = main_es_factors[units || 'kilometers'];
  3998. if (!factor) throw new Error(units + ' units is invalid');
  3999. return radians * factor;
  4000. }
  4001. /**
  4002. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians
  4003. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  4004. *
  4005. * @name lengthToRadians
  4006. * @param {number} distance in real units
  4007. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  4008. * @returns {number} radians
  4009. */
  4010. function main_es_lengthToRadians(distance, units) {
  4011. if (distance === undefined || distance === null) throw new Error('distance is required');
  4012. if (units && typeof units !== 'string') throw new Error('units must be a string');
  4013. var factor = main_es_factors[units || 'kilometers'];
  4014. if (!factor) throw new Error(units + ' units is invalid');
  4015. return distance / factor;
  4016. }
  4017. /**
  4018. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees
  4019. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet
  4020. *
  4021. * @name lengthToDegrees
  4022. * @param {number} distance in real units
  4023. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  4024. * @returns {number} degrees
  4025. */
  4026. function main_es_lengthToDegrees(distance, units) {
  4027. return main_es_radiansToDegrees(main_es_lengthToRadians(distance, units));
  4028. }
  4029. /**
  4030. * Converts any bearing angle from the north line direction (positive clockwise)
  4031. * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line
  4032. *
  4033. * @name bearingToAzimuth
  4034. * @param {number} bearing angle, between -180 and +180 degrees
  4035. * @returns {number} angle between 0 and 360 degrees
  4036. */
  4037. function main_es_bearingToAzimuth(bearing) {
  4038. if (bearing === null || bearing === undefined) throw new Error('bearing is required');
  4039. var angle = bearing % 360;
  4040. if (angle < 0) angle += 360;
  4041. return angle;
  4042. }
  4043. /**
  4044. * Converts an angle in radians to degrees
  4045. *
  4046. * @name radiansToDegrees
  4047. * @param {number} radians angle in radians
  4048. * @returns {number} degrees between 0 and 360 degrees
  4049. */
  4050. function main_es_radiansToDegrees(radians) {
  4051. if (radians === null || radians === undefined) throw new Error('radians is required');
  4052. var degrees = radians % (2 * Math.PI);
  4053. return degrees * 180 / Math.PI;
  4054. }
  4055. /**
  4056. * Converts an angle in degrees to radians
  4057. *
  4058. * @name degreesToRadians
  4059. * @param {number} degrees angle between 0 and 360 degrees
  4060. * @returns {number} angle in radians
  4061. */
  4062. function main_es_degreesToRadians(degrees) {
  4063. if (degrees === null || degrees === undefined) throw new Error('degrees is required');
  4064. var radians = degrees % 360;
  4065. return radians * Math.PI / 180;
  4066. }
  4067. /**
  4068. * Converts a length to the requested unit.
  4069. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  4070. *
  4071. * @param {number} length to be converted
  4072. * @param {string} originalUnit of the length
  4073. * @param {string} [finalUnit='kilometers'] returned unit
  4074. * @returns {number} the converted length
  4075. */
  4076. function main_es_convertLength(length, originalUnit, finalUnit) {
  4077. if (length === null || length === undefined) throw new Error('length is required');
  4078. if (!(length >= 0)) throw new Error('length must be a positive number');
  4079. return main_es_radiansToLength(main_es_lengthToRadians(length, originalUnit), finalUnit || 'kilometers');
  4080. }
  4081. /**
  4082. * Converts a area to the requested unit.
  4083. * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches
  4084. * @param {number} area to be converted
  4085. * @param {string} [originalUnit='meters'] of the distance
  4086. * @param {string} [finalUnit='kilometers'] returned unit
  4087. * @returns {number} the converted distance
  4088. */
  4089. function main_es_convertArea(area, originalUnit, finalUnit) {
  4090. if (area === null || area === undefined) throw new Error('area is required');
  4091. if (!(area >= 0)) throw new Error('area must be a positive number');
  4092. var startFactor = main_es_areaFactors[originalUnit || 'meters'];
  4093. if (!startFactor) throw new Error('invalid original units');
  4094. var finalFactor = main_es_areaFactors[finalUnit || 'kilometers'];
  4095. if (!finalFactor) throw new Error('invalid final units');
  4096. return (area / startFactor) * finalFactor;
  4097. }
  4098. /**
  4099. * isNumber
  4100. *
  4101. * @param {*} num Number to validate
  4102. * @returns {boolean} true/false
  4103. * @example
  4104. * turf.isNumber(123)
  4105. * //=true
  4106. * turf.isNumber('foo')
  4107. * //=false
  4108. */
  4109. function main_es_isNumber(num) {
  4110. return !isNaN(num) && num !== null && !Array.isArray(num);
  4111. }
  4112. /**
  4113. * isObject
  4114. *
  4115. * @param {*} input variable to validate
  4116. * @returns {boolean} true/false
  4117. * @example
  4118. * turf.isObject({elevation: 10})
  4119. * //=true
  4120. * turf.isObject('foo')
  4121. * //=false
  4122. */
  4123. function main_es_isObject(input) {
  4124. return (!!input) && (input.constructor === Object);
  4125. }
  4126. /**
  4127. * Validate BBox
  4128. *
  4129. * @private
  4130. * @param {Array<number>} bbox BBox to validate
  4131. * @returns {void}
  4132. * @throws Error if BBox is not valid
  4133. * @example
  4134. * validateBBox([-180, -40, 110, 50])
  4135. * //=OK
  4136. * validateBBox([-180, -40])
  4137. * //=Error
  4138. * validateBBox('Foo')
  4139. * //=Error
  4140. * validateBBox(5)
  4141. * //=Error
  4142. * validateBBox(null)
  4143. * //=Error
  4144. * validateBBox(undefined)
  4145. * //=Error
  4146. */
  4147. function main_es_validateBBox(bbox) {
  4148. if (!bbox) throw new Error('bbox is required');
  4149. if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');
  4150. if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');
  4151. bbox.forEach(function (num) {
  4152. if (!main_es_isNumber(num)) throw new Error('bbox must only contain numbers');
  4153. });
  4154. }
  4155. /**
  4156. * Validate Id
  4157. *
  4158. * @private
  4159. * @param {string|number} id Id to validate
  4160. * @returns {void}
  4161. * @throws Error if Id is not valid
  4162. * @example
  4163. * validateId([-180, -40, 110, 50])
  4164. * //=Error
  4165. * validateId([-180, -40])
  4166. * //=Error
  4167. * validateId('Foo')
  4168. * //=OK
  4169. * validateId(5)
  4170. * //=OK
  4171. * validateId(null)
  4172. * //=Error
  4173. * validateId(undefined)
  4174. * //=Error
  4175. */
  4176. function main_es_validateId(id) {
  4177. if (!id) throw new Error('id is required');
  4178. if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');
  4179. }
  4180. // Deprecated methods
  4181. function main_es_radians2degrees() {
  4182. throw new Error('method has been renamed to `radiansToDegrees`');
  4183. }
  4184. function main_es_degrees2radians() {
  4185. throw new Error('method has been renamed to `degreesToRadians`');
  4186. }
  4187. function main_es_distanceToDegrees() {
  4188. throw new Error('method has been renamed to `lengthToDegrees`');
  4189. }
  4190. function main_es_distanceToRadians() {
  4191. throw new Error('method has been renamed to `lengthToRadians`');
  4192. }
  4193. function main_es_radiansToDistance() {
  4194. throw new Error('method has been renamed to `radiansToLength`');
  4195. }
  4196. function main_es_bearingToAngle() {
  4197. throw new Error('method has been renamed to `bearingToAzimuth`');
  4198. }
  4199. function main_es_convertDistance() {
  4200. throw new Error('method has been renamed to `convertLength`');
  4201. }
  4202. // CONCATENATED MODULE: ./node_modules/@turf/bbox-polygon/main.es.js
  4203. /**
  4204. * Takes a bbox and returns an equivalent {@link Polygon|polygon}.
  4205. *
  4206. * @name bboxPolygon
  4207. * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order
  4208. * @returns {Feature<Polygon>} a Polygon representation of the bounding box
  4209. * @example
  4210. * var bbox = [0, 0, 10, 10];
  4211. *
  4212. * var poly = turf.bboxPolygon(bbox);
  4213. *
  4214. * //addToMap
  4215. * var addToMap = [poly]
  4216. */
  4217. function bboxPolygon(bbox) {
  4218. main_es_validateBBox(bbox);
  4219. // Convert BBox positions to Numbers
  4220. // No performance loss for including Number()
  4221. // https://github.com/Turfjs/turf/issues/1119
  4222. var west = Number(bbox[0]);
  4223. var south = Number(bbox[1]);
  4224. var east = Number(bbox[2]);
  4225. var north = Number(bbox[3]);
  4226. if (bbox.length === 6) throw new Error('@turf/bbox-polygon does not support BBox with 6 positions');
  4227. var lowLeft = [west, south];
  4228. var topLeft = [west, north];
  4229. var topRight = [east, north];
  4230. var lowRight = [east, south];
  4231. return main_es_polygon([[
  4232. lowLeft,
  4233. lowRight,
  4234. topRight,
  4235. topLeft,
  4236. lowLeft
  4237. ]]);
  4238. }
  4239. /* harmony default export */ var bbox_polygon_main_es = (bboxPolygon);
  4240. // CONCATENATED MODULE: ./node_modules/@turf/envelope/main.es.js
  4241. /**
  4242. * Takes any number of features and returns a rectangular {@link Polygon} that encompasses all vertices.
  4243. *
  4244. * @name envelope
  4245. * @param {GeoJSON} geojson input features
  4246. * @returns {Feature<Polygon>} a rectangular Polygon feature that encompasses all vertices
  4247. * @example
  4248. * var features = turf.featureCollection([
  4249. * turf.point([-75.343, 39.984], {"name": "Location A"}),
  4250. * turf.point([-75.833, 39.284], {"name": "Location B"}),
  4251. * turf.point([-75.534, 39.123], {"name": "Location C"})
  4252. * ]);
  4253. *
  4254. * var enveloped = turf.envelope(features);
  4255. *
  4256. * //addToMap
  4257. * var addToMap = [features, enveloped];
  4258. */
  4259. function envelope(geojson) {
  4260. return bbox_polygon_main_es(main_es(geojson));
  4261. }
  4262. /* harmony default export */ var envelope_main_es = __webpack_exports__["default"] = (envelope);
  4263. /***/ }),
  4264. /***/ "0c17":
  4265. /***/ (function(module, exports, __webpack_require__) {
  4266. "use strict";
  4267. var utils = __webpack_require__("d691");
  4268. /**
  4269. * Transform the data for a request or a response
  4270. *
  4271. * @param {Object|String} data The data to be transformed
  4272. * @param {Array} headers The headers for the request or response
  4273. * @param {Array|Function} fns A single function or Array of functions
  4274. * @returns {*} The resulting transformed data
  4275. */
  4276. module.exports = function transformData(data, headers, fns) {
  4277. /*eslint no-param-reassign:0*/
  4278. utils.forEach(fns, function transform(fn) {
  4279. data = fn(data, headers);
  4280. });
  4281. return data;
  4282. };
  4283. /***/ }),
  4284. /***/ "0c2c":
  4285. /***/ (function(module, exports, __webpack_require__) {
  4286. "use strict";
  4287. var _interopRequireDefault = __webpack_require__("8e6d");
  4288. Object.defineProperty(exports, "__esModule", {
  4289. value: true
  4290. });
  4291. exports.default = void 0;
  4292. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  4293. //
  4294. //
  4295. //
  4296. //
  4297. //
  4298. //
  4299. //
  4300. //
  4301. //
  4302. //
  4303. //
  4304. //
  4305. //
  4306. //
  4307. //
  4308. //
  4309. //
  4310. //
  4311. //
  4312. //
  4313. //
  4314. //
  4315. //
  4316. //
  4317. //
  4318. //
  4319. //
  4320. //
  4321. //
  4322. //
  4323. //
  4324. //
  4325. //
  4326. //
  4327. //
  4328. //
  4329. //
  4330. //
  4331. //
  4332. //
  4333. //
  4334. //
  4335. //
  4336. //
  4337. //
  4338. //
  4339. //
  4340. //
  4341. //
  4342. //
  4343. //
  4344. //
  4345. //
  4346. //
  4347. //
  4348. //
  4349. //
  4350. //
  4351. var _default2 = {
  4352. name: 'LinedataResult',
  4353. mixins: [_theme.default],
  4354. props: {
  4355. keyWord: {
  4356. type: String
  4357. },
  4358. count: {
  4359. type: Number,
  4360. default: 0
  4361. },
  4362. data: {
  4363. type: Array
  4364. },
  4365. busData: {
  4366. type: Object,
  4367. default: function _default() {
  4368. return {};
  4369. }
  4370. },
  4371. prompt: {
  4372. type: Object
  4373. }
  4374. },
  4375. data: function data() {
  4376. return {
  4377. detailVisibles: [true]
  4378. };
  4379. },
  4380. methods: {
  4381. generatePopup: function generatePopup(pointInfo) {
  4382. var coordinate = pointInfo.lonlat.split(',');
  4383. this.$emit('show-point-popup', {
  4384. coordinates: [+coordinate[0], +coordinate[1]],
  4385. data: pointInfo,
  4386. from: 'LineString'
  4387. });
  4388. },
  4389. searchPointsResult: function searchPointsResult() {
  4390. var params = {
  4391. queryType: '7',
  4392. queryTerminal: 10000,
  4393. specifyAdminCode: this.prompt.adminCode
  4394. };
  4395. this.$emit('search-points-result', this.keyWord, params, true);
  4396. },
  4397. showLineDetail: function showLineDetail(uuid, groupIndex) {
  4398. var detailVisibles = new Array(this.data.length).fill(false);
  4399. detailVisibles[groupIndex] = !this.detailVisibles[groupIndex];
  4400. this.detailVisibles = detailVisibles;
  4401. detailVisibles[groupIndex] ? this.$emit('show-line-detail', uuid) : this.$emit('reset-line-source');
  4402. }
  4403. }
  4404. };
  4405. exports.default = _default2;
  4406. /***/ }),
  4407. /***/ "0f59":
  4408. /***/ (function(module, exports, __webpack_require__) {
  4409. "use strict";
  4410. var _interopRequireDefault = __webpack_require__("8e6d");
  4411. Object.defineProperty(exports, "__esModule", {
  4412. value: true
  4413. });
  4414. exports.default = void 0;
  4415. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  4416. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  4417. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  4418. var _card = _interopRequireDefault(__webpack_require__("333c"));
  4419. var _MeasureViewModel = _interopRequireDefault(__webpack_require__("4c06"));
  4420. var _drawEvent = _interopRequireDefault(__webpack_require__("9104"));
  4421. var _lodash = _interopRequireDefault(__webpack_require__("f344"));
  4422. __webpack_require__("fc22");
  4423. //
  4424. //
  4425. //
  4426. //
  4427. //
  4428. //
  4429. //
  4430. //
  4431. //
  4432. //
  4433. //
  4434. //
  4435. //
  4436. //
  4437. //
  4438. //
  4439. //
  4440. //
  4441. //
  4442. //
  4443. //
  4444. //
  4445. //
  4446. //
  4447. //
  4448. //
  4449. //
  4450. //
  4451. //
  4452. //
  4453. //
  4454. //
  4455. //
  4456. //
  4457. //
  4458. //
  4459. //
  4460. //
  4461. //
  4462. //
  4463. //
  4464. //
  4465. //
  4466. //
  4467. //
  4468. //
  4469. //
  4470. //
  4471. //
  4472. //
  4473. //
  4474. //
  4475. //
  4476. //
  4477. //
  4478. //
  4479. //
  4480. //
  4481. //
  4482. //
  4483. //
  4484. //
  4485. //
  4486. //
  4487. //
  4488. //
  4489. var _default = {
  4490. name: 'SmMeasure',
  4491. mixins: [_mapGetter.default, _control.default, _theme.default, _card.default],
  4492. props: {
  4493. collapsed: {
  4494. type: Boolean,
  4495. // 是否折叠
  4496. default: true
  4497. },
  4498. iconClass: {
  4499. type: String,
  4500. default: 'sm-components-icons-measure'
  4501. },
  4502. headerName: {
  4503. type: String // default: geti18n().t('commontypes.iportalData') // '量算'
  4504. },
  4505. showUnitSelect: {
  4506. // 配置单位选择框是否显示,若不显示,则显示对应的默认单位
  4507. type: Boolean,
  4508. default: true
  4509. },
  4510. distanceDefaultUnit: {
  4511. // 距离默认单位
  4512. type: String,
  4513. default: 'kilometers'
  4514. },
  4515. areaDefaultUnit: {
  4516. // 面积默认单位
  4517. type: String,
  4518. default: 'kilometers'
  4519. },
  4520. continueDraw: {
  4521. // 是否开启多绘制
  4522. type: Boolean,
  4523. default: true
  4524. }
  4525. },
  4526. data: function data() {
  4527. var unitOptions = {
  4528. draw_line_string: {
  4529. kilometers: this.$t('unit.kilometers'),
  4530. miles: this.$t('unit.miles'),
  4531. meters: this.$t('unit.meters'),
  4532. feet: this.$t('unit.feet'),
  4533. yards: this.$t('unit.yards')
  4534. },
  4535. draw_polygon: {
  4536. kilometers: this.$t('unit.squarekilometers'),
  4537. miles: this.$t('unit.squaremiles'),
  4538. meters: this.$t('unit.squaremeters'),
  4539. feet: this.$t('unit.squarefeet'),
  4540. yards: this.$t('unit.squareyards')
  4541. }
  4542. };
  4543. return {
  4544. unitOptions: unitOptions,
  4545. modeGroups: [{
  4546. mode: 'draw_line_string',
  4547. title: this.$t('measure.distance'),
  4548. iconClass: 'sm-components-icons-line-layer'
  4549. }, {
  4550. mode: 'draw_polygon',
  4551. title: this.$t('measure.area'),
  4552. iconClass: 'sm-components-icons-polygon-layer'
  4553. }, {
  4554. mode: 'delete',
  4555. title: this.$t('measure.delete'),
  4556. iconClass: 'sm-components-icons-delete'
  4557. }],
  4558. activeMode: '',
  4559. result: '',
  4560. activeDistanceUnit: this.distanceDefaultUnit,
  4561. activeAreaUnit: this.areaDefaultUnit,
  4562. modeUnitMap: {
  4563. draw_line_string: 'activeDistanceUnit',
  4564. draw_polygon: 'activeAreaUnit'
  4565. },
  4566. layerId: ''
  4567. };
  4568. },
  4569. computed: {
  4570. getUnitOptions: function getUnitOptions() {
  4571. return this.unitOptions[this.activeMode] || [];
  4572. },
  4573. getResult: function getResult() {
  4574. if (this.result && this.measureFinished) {
  4575. var result = "".concat(this.result, " ").concat(this.getUnitLabel);
  4576. this.resetActiveMode();
  4577. return result;
  4578. }
  4579. return '';
  4580. },
  4581. getUnitLabel: function getUnitLabel() {
  4582. var units = this.getUnitOptions;
  4583. var modeUnitKey = this.modeUnitMap[this.activeMode];
  4584. var label = units[this[modeUnitKey]];
  4585. return label;
  4586. },
  4587. getAreaSelect: function getAreaSelect() {
  4588. return this.activeMode === 'draw_polygon' && this.showUnitSelect;
  4589. },
  4590. getDistanceSelect: function getDistanceSelect() {
  4591. return this.activeMode === 'draw_line_string' && this.showUnitSelect;
  4592. }
  4593. },
  4594. watch: {
  4595. distanceDefaultUnit: function distanceDefaultUnit(newVal) {
  4596. this.activeDistanceUnit = newVal;
  4597. this.updateUnit(newVal);
  4598. },
  4599. areaDefaultUnit: function areaDefaultUnit(newVal) {
  4600. this.activeAreaUnit = newVal;
  4601. this.updateUnit(newVal);
  4602. },
  4603. textColorsData: {
  4604. handler: function handler() {
  4605. this.changeSelectInputStyle();
  4606. }
  4607. },
  4608. backgroundData: {
  4609. handler: function handler() {
  4610. this.changeSelectInputStyle();
  4611. }
  4612. }
  4613. },
  4614. created: function created() {
  4615. this.componentName = (0, _lodash.default)(this.$options.name);
  4616. this.viewModel = new _MeasureViewModel.default({
  4617. continueDraw: this.continueDraw,
  4618. componentName: this.componentName
  4619. });
  4620. this.viewModel.on('measure-finished', this.measureFinishedFn);
  4621. this.viewModel.on('measure-start', this.measureStartFn);
  4622. this.viewModel.on('update-unit', this.updateUnitFn);
  4623. },
  4624. mounted: function mounted() {
  4625. this.changeSelectInputStyle();
  4626. _drawEvent.default.$on('draw-reset', this.drawResetFn);
  4627. },
  4628. beforeDestroy: function beforeDestroy() {
  4629. this.viewModel.off('measure-finished', this.measureFinishedFn);
  4630. this.viewModel.off('measure-start', this.measureStartFn);
  4631. this.viewModel.off('update-unit', this.updateUnitFn);
  4632. _drawEvent.default.$off('draw-reset', this.drawResetFn);
  4633. },
  4634. removed: function removed(map, target) {
  4635. _drawEvent.default.$options.deleteDrawingState(target, this.componentName);
  4636. this.resetData(target);
  4637. },
  4638. methods: {
  4639. measureFinishedFn: function measureFinishedFn(e) {
  4640. this.result = e.result;
  4641. this.measureFinished = true;
  4642. },
  4643. measureStartFn: function measureStartFn(e) {
  4644. this.result = '';
  4645. this.measureFinished = false;
  4646. },
  4647. updateUnitFn: function updateUnitFn(e) {
  4648. this.result = e.result;
  4649. },
  4650. drawResetFn: function drawResetFn(_ref) {
  4651. var componentName = _ref.componentName;
  4652. if (componentName !== this.componentName) {
  4653. this.activeMode = null;
  4654. this.result = '';
  4655. }
  4656. },
  4657. changeSelectInputStyle: function changeSelectInputStyle() {
  4658. var selectDoms = this.$el.querySelectorAll('.ant-select-selection');
  4659. var _iteratorNormalCompletion = true;
  4660. var _didIteratorError = false;
  4661. var _iteratorError = undefined;
  4662. try {
  4663. for (var _iterator = selectDoms[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  4664. var selectDom = _step.value;
  4665. if (selectDom) {
  4666. selectDom.style.borderColor = this.getTextColor;
  4667. selectDom.style.color = this.getTextColor;
  4668. selectDom.style.backgroundColor = this.getBackground;
  4669. }
  4670. }
  4671. } catch (err) {
  4672. _didIteratorError = true;
  4673. _iteratorError = err;
  4674. } finally {
  4675. try {
  4676. if (!_iteratorNormalCompletion && _iterator.return != null) {
  4677. _iterator.return();
  4678. }
  4679. } finally {
  4680. if (_didIteratorError) {
  4681. throw _iteratorError;
  4682. }
  4683. }
  4684. }
  4685. },
  4686. changeChosenStyle: function changeChosenStyle(visible) {
  4687. var _this = this;
  4688. setTimeout(function () {
  4689. var optionList = _this.$el.querySelectorAll('.ant-select-dropdown-menu-item');
  4690. var dropdownDoms = _this.$el.querySelectorAll('.ant-select-dropdown');
  4691. var _iteratorNormalCompletion2 = true;
  4692. var _didIteratorError2 = false;
  4693. var _iteratorError2 = undefined;
  4694. try {
  4695. for (var _iterator2 = optionList[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
  4696. var item = _step2.value;
  4697. if (item.classList.contains('ant-select-dropdown-menu-item-selected')) {
  4698. item.style.color = _this.getColorStyle(0).color;
  4699. item.style.backgroundColor = _this.getBackground;
  4700. } else {
  4701. item.style.color = _this.getTextColor;
  4702. item.style.backgroundColor = 'transparent';
  4703. }
  4704. }
  4705. } catch (err) {
  4706. _didIteratorError2 = true;
  4707. _iteratorError2 = err;
  4708. } finally {
  4709. try {
  4710. if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
  4711. _iterator2.return();
  4712. }
  4713. } finally {
  4714. if (_didIteratorError2) {
  4715. throw _iteratorError2;
  4716. }
  4717. }
  4718. }
  4719. var _iteratorNormalCompletion3 = true;
  4720. var _didIteratorError3 = false;
  4721. var _iteratorError3 = undefined;
  4722. try {
  4723. for (var _iterator3 = dropdownDoms[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
  4724. var dropdownDom = _step3.value;
  4725. if (dropdownDom) {
  4726. dropdownDom.style.backgroundColor = _this.getBackground;
  4727. }
  4728. }
  4729. } catch (err) {
  4730. _didIteratorError3 = true;
  4731. _iteratorError3 = err;
  4732. } finally {
  4733. try {
  4734. if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
  4735. _iterator3.return();
  4736. }
  4737. } finally {
  4738. if (_didIteratorError3) {
  4739. throw _iteratorError3;
  4740. }
  4741. }
  4742. }
  4743. }, 0);
  4744. },
  4745. // 切换量算模式
  4746. changeMeasureMode: function changeMeasureMode(mode) {
  4747. var _this2 = this;
  4748. setTimeout(function () {
  4749. var mapNotLoaded = _this2.mapNotLoadedTip();
  4750. if (mapNotLoaded) {
  4751. return;
  4752. }
  4753. if (!_this2.map.loaded()) {
  4754. _this2.$message.destroy();
  4755. _this2.$message.warning(_this2.$t('warning.mapNotLoaded'));
  4756. } else {
  4757. var modeUnitKey = _this2.modeUnitMap[mode];
  4758. var activeUnit = _this2[modeUnitKey];
  4759. if (mode === 'delete') {
  4760. _this2.viewModel.trash();
  4761. _this2.activeMode = null;
  4762. _this2.result = '';
  4763. return;
  4764. }
  4765. if (_this2.activeMode !== mode || !_this2.continueDraw) {
  4766. _this2.viewModel.openDraw(mode, activeUnit);
  4767. _this2.activeMode = mode;
  4768. _this2.continueDraw && _drawEvent.default.$emit('draw-reset', {
  4769. componentName: _this2.componentName
  4770. });
  4771. } else {
  4772. _this2.viewModel.removeDraw(_this2.continueDraw);
  4773. _this2.activeMode = null;
  4774. }
  4775. }
  4776. }, 0);
  4777. },
  4778. updateUnit: function updateUnit(unit) {
  4779. this.viewModel && this.viewModel.updateUnit(unit);
  4780. },
  4781. getPopupContainer: function getPopupContainer() {
  4782. return this.$el.querySelector('.sm-component-measure__panelContent');
  4783. },
  4784. resetActiveMode: function resetActiveMode() {
  4785. !this.activeModeCache && (this.activeModeCache = this.activeMode);
  4786. this.measureFinished && !this.continueDraw && (this.activeMode = null);
  4787. if (!this.measureFinished && this.continueDraw) {
  4788. this.activeMode = this.activeModeCache;
  4789. }
  4790. },
  4791. resetData: function resetData(mapTarget) {
  4792. this.activeMode = null;
  4793. this.result = '';
  4794. this.continueDraw && _drawEvent.default.$emit('draw-reset', {
  4795. componentName: this.componentName
  4796. });
  4797. },
  4798. // 提供对外方法:清空features
  4799. clear: function clear() {
  4800. this.activeMode = null;
  4801. this.result = '';
  4802. this.viewModel && this.viewModel.clearAllFeatures();
  4803. }
  4804. }
  4805. };
  4806. exports.default = _default;
  4807. /***/ }),
  4808. /***/ "0f9e":
  4809. /***/ (function(module, exports, __webpack_require__) {
  4810. "use strict";
  4811. var _interopRequireDefault = __webpack_require__("8e6d");
  4812. Object.defineProperty(exports, "__esModule", {
  4813. value: true
  4814. });
  4815. exports.default = void 0;
  4816. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  4817. var _toConsumableArray2 = _interopRequireDefault(__webpack_require__("4066"));
  4818. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  4819. __webpack_require__("f840");
  4820. var _vueEcharts = _interopRequireDefault(__webpack_require__("8275"));
  4821. var _lodash = _interopRequireDefault(__webpack_require__("f344"));
  4822. var _lodash2 = _interopRequireDefault(__webpack_require__("6e63"));
  4823. var _lodash3 = _interopRequireDefault(__webpack_require__("5f9f"));
  4824. var _debounce = _interopRequireDefault(__webpack_require__("331f"));
  4825. var _lodash4 = _interopRequireDefault(__webpack_require__("25a2"));
  4826. var _card = _interopRequireDefault(__webpack_require__("333c"));
  4827. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  4828. var _timer = _interopRequireDefault(__webpack_require__("8156"));
  4829. var _chart = __webpack_require__("33aa");
  4830. var _EchartsDataService = _interopRequireDefault(__webpack_require__("50c6"));
  4831. var _TablePopup = _interopRequireDefault(__webpack_require__("b397"));
  4832. var _util = __webpack_require__("1448");
  4833. var _resizeDetector = __webpack_require__("e0f2");
  4834. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  4835. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  4836. // 枚举事件类型
  4837. var EVENTS = ['legendselectchanged', 'legendselected', 'legendunselected', 'legendscroll', 'datazoom', 'datarangeselected', 'timelinechanged', 'timelineplaychanged', 'restore', 'dataviewchanged', 'magictypechanged', 'geoselectchanged', 'geoselected', 'geounselected', 'pieselectchanged', 'pieselected', 'pieunselected', 'mapselectchanged', 'mapselected', 'mapunselected', 'axisareaselected', 'focusnodeadjacency', 'unfocusnodeadjacency', 'brush', 'brushselected', 'rendered', 'finished', 'click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];
  4838. var _default2 = {
  4839. components: {
  4840. 'v-chart': _vueEcharts.default,
  4841. TablePopup: _TablePopup.default
  4842. },
  4843. mixins: [_theme.default, _card.default, _timer.default],
  4844. props: {
  4845. iconClass: {
  4846. type: String,
  4847. default: 'sm-components-icons-attribute'
  4848. },
  4849. dataset: {
  4850. type: Object,
  4851. default: function _default() {
  4852. return null;
  4853. }
  4854. },
  4855. datasetOptions: {
  4856. type: Array,
  4857. default: function _default() {
  4858. return null;
  4859. }
  4860. },
  4861. colorGroup: {
  4862. type: Array
  4863. },
  4864. options: {
  4865. type: Object,
  4866. default: function _default() {
  4867. return {};
  4868. }
  4869. },
  4870. autoresize: {
  4871. type: Boolean,
  4872. default: true
  4873. },
  4874. theme: {
  4875. type: [Object, String]
  4876. },
  4877. initOptions: {
  4878. type: Object
  4879. },
  4880. group: {
  4881. type: String
  4882. },
  4883. manualUpdate: {
  4884. type: Boolean,
  4885. default: false
  4886. },
  4887. autoPlay: {
  4888. type: Boolean,
  4889. default: false
  4890. },
  4891. associatedMap: {
  4892. type: Boolean,
  4893. default: false
  4894. },
  4895. highlightOptions: {
  4896. type: Array,
  4897. default: function _default() {
  4898. return [];
  4899. }
  4900. },
  4901. highlightColor: {
  4902. type: String,
  4903. default: '#01ffff'
  4904. }
  4905. },
  4906. data: function data() {
  4907. return {
  4908. chartId: (0, _lodash.default)("".concat(this.$options.name.toLowerCase(), "-")),
  4909. chartTheme: {},
  4910. // 图表的主题
  4911. echartOptions: {},
  4912. // 最后生成的echart数据
  4913. datasetChange: false,
  4914. // dataset是否改变
  4915. dataSeriesCache: {},
  4916. tablePopupProps: {},
  4917. startSpin: null,
  4918. customSeries: [],
  4919. dataZoomHandler: function dataZoomHandler() {}
  4920. };
  4921. },
  4922. computed: {
  4923. width: function width() {
  4924. return this.smChart && this.smChart.width;
  4925. },
  4926. height: function height() {
  4927. return this.smChart && this.smChart.height;
  4928. },
  4929. computedOptions: function computedOptions() {
  4930. return this.smChart && this.smChart.computedOptions;
  4931. },
  4932. _chartStyle: function _chartStyle() {
  4933. return {
  4934. width: '100%',
  4935. height: this.headerName ? 'calc(100% - 30px)' : '100%'
  4936. };
  4937. },
  4938. parseOptions: function parseOptions() {
  4939. var _this2 = this;
  4940. if (!this.options.series) {
  4941. return this.options;
  4942. }
  4943. if (this.options.series.find(function (item) {
  4944. return item.type === '2.5Bar';
  4945. })) {
  4946. return _objectSpread({}, this.options, {
  4947. series: []
  4948. });
  4949. }
  4950. if (this.options.series[0] && this.options.series[0].customType === 'customRingsSeries') {
  4951. return _objectSpread({}, this.options, {
  4952. series: [].concat((0, _toConsumableArray2.default)(this.options.series), (0, _toConsumableArray2.default)(this.customSeries))
  4953. });
  4954. }
  4955. var series = this.options.series.map(function (serie, index) {
  4956. if (serie.label) {
  4957. var cloneSerie = (0, _lodash4.default)(serie);
  4958. cloneSerie.label.normal = _this2._controlLabel(cloneSerie.label.normal, cloneSerie.maxLabels);
  4959. return cloneSerie;
  4960. }
  4961. return serie;
  4962. });
  4963. return _objectSpread({}, this.options, {
  4964. series: series
  4965. });
  4966. },
  4967. _chartOptions: function _chartOptions() {
  4968. return this._isRequestData && this.echartOptions || this.parseOptions;
  4969. },
  4970. // 是否传入dataset和datasetOptions
  4971. _isRequestData: function _isRequestData() {
  4972. return this.dataset && Object.keys(this.dataset).length > 0 && (this.dataset.url || this.dataset.geoJSON) && this.datasetOptions && this.datasetOptions.length > 0;
  4973. },
  4974. xBar: function xBar() {
  4975. return this.options && this.options.yAxis && this.options.yAxis.type === 'category';
  4976. },
  4977. popupBackground: function popupBackground() {
  4978. return this.backgroundData ? (0, _util.getColorWithOpacity)(this.backgroundData, 0.5) : this.backgroundData;
  4979. },
  4980. colorNumber: function colorNumber() {
  4981. var length = this.datasetOptions && this.datasetOptions.length || this.echartOptions.series && this.echartOptions.series.length;
  4982. var colorNumber = this.colorGroupsData.length;
  4983. if (length && length > colorNumber) {
  4984. colorNumber = length;
  4985. }
  4986. return colorNumber;
  4987. }
  4988. },
  4989. watch: {
  4990. theme: function theme() {
  4991. this.chartTheme = null;
  4992. },
  4993. colorGroupsData: function colorGroupsData(newVal, oldVal) {
  4994. if (!(0, _lodash3.default)(newVal, oldVal)) {
  4995. this._setChartTheme();
  4996. }
  4997. },
  4998. textColorsData: function textColorsData(newVal, oldVal) {
  4999. if (!(0, _lodash3.default)(newVal, oldVal)) {
  5000. this._setChartTheme();
  5001. }
  5002. },
  5003. backgroundData: function backgroundData(newVal, oldVal) {
  5004. if (!(0, _lodash3.default)(newVal, oldVal)) {
  5005. this._setChartTheme();
  5006. this.changePopupArrowStyle();
  5007. }
  5008. },
  5009. dataset: {
  5010. handler: function handler(newVal, oldVal) {
  5011. this._isRequestData && this._setEchartOptions(this.dataset, this.datasetOptions, this.options);
  5012. this.datasetChange = true;
  5013. },
  5014. deep: true
  5015. },
  5016. datasetOptions: {
  5017. handler: function handler(newVal, oldVal) {
  5018. if (!(0, _lodash3.default)(newVal, oldVal)) {
  5019. this._setChartTheme();
  5020. this.registerShape();
  5021. }
  5022. !this.echartsDataService && this._isRequestData && this._setEchartOptions(this.dataset, this.datasetOptions, this.options);
  5023. this.echartsDataService && this.echartsDataService.setDatasetOptions(this.datasetOptions);
  5024. this.echartsDataService && this.dataSeriesCache && this._changeChartData(this.echartsDataService, this.datasetOptions, this.options);
  5025. }
  5026. },
  5027. options: {
  5028. handler: function handler(newVal, oldVal) {
  5029. if (this.datasetChange && !this.dataSeriesCache) {
  5030. return;
  5031. }
  5032. if (this.dataSeriesCache && JSON.stringify(this.dataSeriesCache) !== '{}') {
  5033. this.echartOptions = this._optionsHandler(this.options, this.dataSeriesCache);
  5034. } else {
  5035. this.echartOptions = Object.assign({}, this.options);
  5036. }
  5037. },
  5038. deep: true
  5039. },
  5040. autoresize: function autoresize() {
  5041. if (this.autoresize) {
  5042. (0, _resizeDetector.addListener)(this.$el, this.__resizeHandler);
  5043. } else {
  5044. (0, _resizeDetector.removeListener)(this.$el, this.__resizeHandler);
  5045. }
  5046. },
  5047. // 以下为echart的配置参数
  5048. width: function width() {
  5049. return this.smChart && this.smChart.width;
  5050. },
  5051. height: function height() {
  5052. return this.smChart && this.smChart.height;
  5053. },
  5054. computedOptions: function computedOptions() {
  5055. return this.smChart && this.smChart.computedOptions;
  5056. },
  5057. autoPlay: function autoPlay() {
  5058. this._handlePieAutoPlay();
  5059. },
  5060. associatedMap: function associatedMap() {
  5061. if (!this.associatedMap) {
  5062. this.clearPopup && this.clearPopup();
  5063. }
  5064. },
  5065. highlightOptions: {
  5066. handler: function handler(newVal, oldVal) {
  5067. this.setItemStyleColor();
  5068. },
  5069. deep: true
  5070. }
  5071. },
  5072. created: function created() {
  5073. this._setChartTheme(); // // 切换主题
  5074. // this.$on('theme-style-changed', () => {
  5075. // this._setChartTheme();
  5076. // });
  5077. this.registerShape();
  5078. },
  5079. mounted: function mounted() {
  5080. // 设置echarts实例
  5081. this.smChart = this.$refs[this.chartId]; // 派发echart所有事件
  5082. var smChart = this._getEchart();
  5083. var self = this;
  5084. EVENTS.forEach(function (event) {
  5085. smChart.$on(event, function (params) {
  5086. if (event === 'click') {
  5087. self.handleChartClick(params);
  5088. }
  5089. self.$emit(event, params);
  5090. });
  5091. });
  5092. this._initAutoResize();
  5093. this._initDataZoom();
  5094. if (this.options.series && this.options.series[0] && this.options.series[0].customType === 'customRingsSeries') {
  5095. this.startEffect();
  5096. }
  5097. !this._isRequestData && this.autoPlay && this._handlePieAutoPlay(); // 请求数据, 合并echartopiton, 设置echartOptions
  5098. this._isRequestData && this._setEchartOptions(this.dataset, this.datasetOptions, this.options);
  5099. },
  5100. updated: function updated() {
  5101. this._handlePieAutoPlay(); // 更新自动播放
  5102. },
  5103. beforeDestroy: function beforeDestroy() {
  5104. clearInterval(this.pieAutoPlay); // clear 自动播放
  5105. clearInterval(this.startAngle);
  5106. if (this.autoresize) {
  5107. (0, _resizeDetector.removeListener)(this.$el, this.__resizeHandler);
  5108. }
  5109. },
  5110. methods: {
  5111. _initAutoResize: function _initAutoResize() {
  5112. var _this3 = this;
  5113. this.__resizeHandler = (0, _debounce.default)(function () {
  5114. _this3.resize();
  5115. }, 100, {
  5116. leading: true
  5117. });
  5118. if (this.autoresize) {
  5119. // @ts-ignore
  5120. (0, _resizeDetector.addListener)(this.$el, this.__resizeHandler);
  5121. }
  5122. },
  5123. _initDataZoom: function _initDataZoom() {
  5124. var _this4 = this;
  5125. this.dataZoomHandler = (0, _debounce.default)(function () {
  5126. _this4._dataZoomChanged();
  5127. }, 500, {
  5128. leading: true
  5129. });
  5130. },
  5131. getStringColor: function getStringColor(color) {
  5132. if (color instanceof Object) {
  5133. return ((color.colorStops || [])[0] || {}).color;
  5134. }
  5135. return color;
  5136. },
  5137. setGradientColor: function setGradientColor(color, nextColor) {
  5138. if (typeof color === 'string') {
  5139. return new this.$options.graphic.LinearGradient(0, 0, 0, 1, [{
  5140. offset: 0,
  5141. color: color
  5142. }, {
  5143. offset: 1,
  5144. color: nextColor || color
  5145. }]);
  5146. }
  5147. return color;
  5148. },
  5149. _initAxisLabel: function _initAxisLabel(axisLabel, data, visualMap, series) {
  5150. if (!this.xBar) {
  5151. return;
  5152. }
  5153. var sortSeriesIndex = this.datasetOptions.findIndex(function (item) {
  5154. return item.sort !== 'unsort' && item.rankLabel;
  5155. });
  5156. if (sortSeriesIndex > -1 && axisLabel && data) {
  5157. for (var index = 0, len = data.length, rankIndex = len - 1; index < len; index++, rankIndex--) {
  5158. data[index] = rankIndex < 10 ? "0".concat(rankIndex).concat(data[index]) : "".concat(rankIndex).concat(data[index]);
  5159. }
  5160. var firstVisualMap = visualMap && visualMap.find(function (item) {
  5161. return item.seriesIndex === sortSeriesIndex;
  5162. });
  5163. axisLabel.rich = axisLabel.rich || {};
  5164. axisLabel.rich.default = {
  5165. backgroundColor: this.getStringColor(this.colorGroup[sortSeriesIndex]),
  5166. width: 20,
  5167. height: 20,
  5168. align: 'center',
  5169. borderRadius: 2
  5170. };
  5171. firstVisualMap && firstVisualMap.pieces.map(function (item) {
  5172. axisLabel.rich["".concat(parseInt(item.min), "_").concat(parseInt(item.max))] = {
  5173. backgroundColor: item.color,
  5174. width: 20,
  5175. height: 20,
  5176. align: 'center',
  5177. borderRadius: 2
  5178. };
  5179. });
  5180. var serieData = series && series[sortSeriesIndex].data;
  5181. axisLabel.formatter = function (label, index) {
  5182. var orderNum = parseInt(label.slice(0, 2)) + 1;
  5183. var leftLabel = label.slice(2);
  5184. var labelValue = serieData && +serieData[index];
  5185. if (firstVisualMap) {
  5186. var matchItem = firstVisualMap.pieces.find(function (item) {
  5187. return labelValue >= item.min && labelValue <= item.max;
  5188. });
  5189. if (matchItem) {
  5190. return ["{".concat(parseInt(matchItem.min), "_").concat(parseInt(matchItem.max), "|").concat(orderNum, "} ").concat(leftLabel)].join('\n');
  5191. }
  5192. }
  5193. return ["{default|".concat(orderNum, "} ").concat(leftLabel)].join('\n');
  5194. };
  5195. }
  5196. },
  5197. setItemStyleColor: function setItemStyleColor() {
  5198. var _this5 = this;
  5199. var isSet = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
  5200. var series = arguments.length > 1 ? arguments[1] : undefined;
  5201. var highlightOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.highlightOptions;
  5202. var color = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.highlightColor;
  5203. series = series || (0, _lodash4.default)(this.echartOptions && this.echartOptions.series) || [];
  5204. series.forEach(function (serie, seriesIndex) {
  5205. var dataIndexs = highlightOptions.map(function (item) {
  5206. if (item.seriesIndex.includes(seriesIndex)) {
  5207. return item.dataIndex;
  5208. }
  5209. });
  5210. var colors = highlightOptions.map(function (item) {
  5211. if (item.seriesIndex.includes(seriesIndex)) {
  5212. return item.color || color;
  5213. }
  5214. });
  5215. var serieColor = _this5.options.series && _this5.options.series[seriesIndex] && _this5.options.series[seriesIndex].itemStyle && _this5.options.series[seriesIndex].itemStyle.color;
  5216. serie.itemStyle = serie.itemStyle || {
  5217. color: ''
  5218. };
  5219. serie.itemStyle.color = function (_ref) {
  5220. var dataIndex = _ref.dataIndex;
  5221. var index = dataIndexs.indexOf(dataIndex);
  5222. if (index > -1) {
  5223. return colors[index];
  5224. } else if (serie.type === 'pie') {
  5225. var colorGroup = _this5._handlerColorGroup(serie.data.length);
  5226. return colorGroup[dataIndex];
  5227. } else {
  5228. return serieColor;
  5229. }
  5230. };
  5231. });
  5232. isSet && this.$set(this.echartOptions, 'series', series);
  5233. },
  5234. _handlePieAutoPlay: function _handlePieAutoPlay() {
  5235. var seriesType = this._chartOptions.series && this._chartOptions.series[0] && this._chartOptions.series[0].type;
  5236. var echartsNode = this.smChart.chart;
  5237. if (this._chartOptions.legend && this._chartOptions.legend.data && this._chartOptions.legend.data.length && echartsNode && seriesType === 'pie') {
  5238. this.clearPieAutoPlay(echartsNode);
  5239. if (this.autoPlay) {
  5240. this.setPieAutoPlay(echartsNode);
  5241. }
  5242. }
  5243. },
  5244. setPieAutoPlay: function setPieAutoPlay(echartsNode) {
  5245. var _this6 = this;
  5246. var i = -1;
  5247. this.pieAutoPlay = setInterval(function () {
  5248. echartsNode.dispatchAction({
  5249. type: 'downplay',
  5250. seriesIndex: 0,
  5251. dataIndex: i
  5252. });
  5253. i++;
  5254. if (i >= _this6._chartOptions.legend.data.length) {
  5255. i = 0;
  5256. }
  5257. echartsNode.dispatchAction({
  5258. type: 'highlight',
  5259. seriesIndex: 0,
  5260. dataIndex: i
  5261. });
  5262. }, 2000);
  5263. },
  5264. clearPieAutoPlay: function clearPieAutoPlay(echartsNode) {
  5265. clearInterval(this.pieAutoPlay);
  5266. for (var i = 0; i < this._chartOptions.legend.data.length; i++) {
  5267. echartsNode.dispatchAction({
  5268. type: 'downplay',
  5269. seriesIndex: 0,
  5270. dataIndex: i
  5271. });
  5272. }
  5273. },
  5274. timing: function timing() {
  5275. var _this7 = this;
  5276. this.echartsDataService && this.echartsDataService.getDataOption(this.dataset, this.xBar).then(function (options) {
  5277. _this7.hideLoading(); // 缓存dataSeriesCache,请求后格式化成echart的数据
  5278. _this7.dataSeriesCache = Object.assign({}, options);
  5279. _this7.datasetChange = false; // 设置echartOptions
  5280. _this7.echartOptions = _this7._optionsHandler(_this7.options, options);
  5281. });
  5282. },
  5283. // 请求数据,设置echartOptions
  5284. _setEchartOptions: function _setEchartOptions(dataset, datasetOptions, echartOptions) {
  5285. var _this8 = this;
  5286. this.echartsDataService = null;
  5287. this.dataSeriesCache = null;
  5288. if (this.dataset.type !== 'geoJSON') {
  5289. this.showLoading('default', {
  5290. text: this.$t('info.loading'),
  5291. color: this.colorGroupsData[0],
  5292. textColor: this.textColorsData,
  5293. maskColor: 'rgba(0,0,0,0.8)',
  5294. zlevel: 0
  5295. });
  5296. }
  5297. this.echartsDataService = new _EchartsDataService.default(dataset, datasetOptions);
  5298. this.echartsDataService.getDataOption(dataset, this.xBar).then(function (options) {
  5299. _this8.hideLoading(); // 缓存dataSeriesCache,请求后格式化成echart的数据
  5300. _this8.dataSeriesCache = Object.assign({}, options);
  5301. _this8.datasetChange = false; // 设置echartOptions
  5302. _this8.echartOptions = _this8._optionsHandler(echartOptions, options);
  5303. });
  5304. },
  5305. _optionsHandler: function _optionsHandler(options, dataOptions, dataZoomChanged) {
  5306. var _this9 = this;
  5307. dataOptions = dataOptions && (0, _lodash4.default)(dataOptions); // clone 避免引起重复刷新
  5308. options = options && (0, _lodash4.default)(options); // clone 避免引起重复刷新
  5309. var extraSeries = [];
  5310. if (options && options.legend && !options.legend.type) {
  5311. options.legend.type = 'scroll';
  5312. }
  5313. var yAxis = options.yAxis;
  5314. var xAxis = options.xAxis;
  5315. if (xAxis && dataOptions.xAxis) {
  5316. var axis = xAxis;
  5317. var axisData = dataOptions.xAxis[0];
  5318. var type = 'xAxis';
  5319. if (yAxis && yAxis.type === 'category') {
  5320. // 处理条形图
  5321. type = 'yAxis';
  5322. axis = yAxis;
  5323. dataOptions.yAxis = dataOptions.xAxis;
  5324. delete dataOptions.xAxis;
  5325. this._initAxisLabel(yAxis.axisLabel, dataOptions.yAxis[0].data, options.visualMap, dataOptions.series);
  5326. }
  5327. if (dataOptions.series.length === 0) {
  5328. axis = [{}];
  5329. } else if (!Array.isArray(axis)) {
  5330. if (axisData.data && axisData.data.length) {
  5331. axis.data = [];
  5332. }
  5333. axis = [Object.assign({}, axisData, axis)];
  5334. }
  5335. options[type] = axis;
  5336. }
  5337. if (options && options.series && dataOptions.series) {
  5338. if (dataOptions.series.length === 0) {
  5339. options.series = [];
  5340. } else {
  5341. options.series = options.series.map(function (element, index) {
  5342. return Object.assign({}, element, dataOptions.series[index] || {});
  5343. });
  5344. var dataZoom = options.dataZoom && options.dataZoom[0];
  5345. options.series = options.series.map(function (serie, index) {
  5346. var label = serie.label && serie.label.normal;
  5347. if (serie.label) {
  5348. serie.label.normal = _this9._controlLabel(label, serie.maxLabels);
  5349. }
  5350. if (label && label.show && label.smart) {
  5351. label.position = label.position || 'top';
  5352. var data = serie.data;
  5353. var startDataIndex = 0;
  5354. var endDataIndex = data.length - 1;
  5355. if (dataZoom && dataZoom.show !== false) {
  5356. if (dataZoom.start > dataZoom.end) {
  5357. var oldStart = dataZoom.start;
  5358. dataZoom.start = dataZoom.end;
  5359. dataZoom.end = oldStart;
  5360. }
  5361. if (dataZoomChanged) {
  5362. var _ref2 = _this9.smChart.chart.getOption().dataZoom[0] || {},
  5363. startValue = _ref2.startValue,
  5364. endValue = _ref2.endValue;
  5365. startDataIndex = startValue;
  5366. endDataIndex = endValue;
  5367. options.dataZoom = options.dataZoom.map(function (val) {
  5368. if (startValue >= 0 && endValue >= 0) {
  5369. val.startValue = startValue;
  5370. val.endValue = endValue;
  5371. delete val.start;
  5372. delete val.end;
  5373. return val;
  5374. }
  5375. return val;
  5376. });
  5377. } else {
  5378. startDataIndex = Math.floor(dataZoom.start / 100 * data.length);
  5379. endDataIndex = Math.ceil(dataZoom.end / 100 * data.length);
  5380. }
  5381. data = serie.data.slice(startDataIndex, endDataIndex + 1);
  5382. }
  5383. label.formatter = function (_ref3) {
  5384. var dataIndex = _ref3.dataIndex,
  5385. value = _ref3.value;
  5386. var result = '';
  5387. if (dataIndex === startDataIndex || dataIndex === endDataIndex || Math.max.apply(null, data) + '' === value + '') {
  5388. result = value;
  5389. }
  5390. return result;
  5391. };
  5392. } else if (serie && serie.type !== 'pie' && serie.type !== 'radar') {
  5393. var colorGroup = (0, _chart.getMultiColorGroup)(_this9.colorGroupsData, _this9.colorNumber);
  5394. if (serie.type === '2.5Bar') {
  5395. var shape = serie.shape;
  5396. var defaultColor = serie.itemStyle && serie.itemStyle.color;
  5397. if (['square', 'rectangle'].includes(shape)) {
  5398. var cubeType = shape;
  5399. serie.type = 'custom';
  5400. dataOptions.series[index] && (dataOptions.series[index].type = 'custom');
  5401. var _this = _this9;
  5402. serie.renderItem = function (params, api) {
  5403. var location = api.coord([api.value(0), api.value(1)]);
  5404. var fillColor = defaultColor || colorGroup[params.seriesIndex];
  5405. if (_this.highlightOptions) {
  5406. var matchData = _this.highlightOptions.find(function (item) {
  5407. return item.seriesIndex.includes(params.seriesIndex) && item.dataIndex === params.dataIndex;
  5408. });
  5409. if (matchData && (matchData.color || _this.highlightColor)) {
  5410. fillColor = matchData.color || _this.highlightColor;
  5411. }
  5412. }
  5413. var leftColor, rightColor, topColor;
  5414. if ((0, _typeof2.default)(fillColor) === 'object') {
  5415. var copyLeftColor = (0, _lodash4.default)(fillColor);
  5416. var copyRightColor = (0, _lodash4.default)(fillColor);
  5417. var copyTopColor = (0, _lodash4.default)(fillColor);
  5418. copyLeftColor.colorStops[0].color = (0, _util.getColorWithOpacity)(copyLeftColor.colorStops[0].color, 0.4);
  5419. copyLeftColor.colorStops[1].color = (0, _util.getColorWithOpacity)(copyLeftColor.colorStops[1].color, 0.4);
  5420. copyRightColor.colorStops[0].color = (0, _util.getColorWithOpacity)(copyRightColor.colorStops[0].color, 0.7);
  5421. copyRightColor.colorStops[1].color = (0, _util.getColorWithOpacity)(copyRightColor.colorStops[1].color, 0.7);
  5422. copyTopColor.colorStops[0].color = (0, _util.getColorWithOpacity)(copyTopColor.colorStops[0].color, 0.85);
  5423. copyTopColor.colorStops[1].color = (0, _util.getColorWithOpacity)(copyTopColor.colorStops[1].color, 0.85);
  5424. leftColor = copyLeftColor;
  5425. rightColor = copyRightColor;
  5426. topColor = copyTopColor;
  5427. } else {
  5428. leftColor = (0, _util.getColorWithOpacity)(fillColor, 0.4);
  5429. rightColor = (0, _util.getColorWithOpacity)(fillColor, 0.7);
  5430. topColor = (0, _util.getColorWithOpacity)(fillColor, 0.85);
  5431. }
  5432. return {
  5433. type: 'group',
  5434. children: [{
  5435. type: "Cube".concat(cubeType, "Left"),
  5436. shape: {
  5437. api: api,
  5438. xValue: api.value(0),
  5439. yValue: api.value(1),
  5440. x: location[0],
  5441. y: location[1],
  5442. xAxisPoint: api.coord([api.value(0), 0])
  5443. },
  5444. style: {
  5445. fill: leftColor
  5446. }
  5447. }, {
  5448. type: "Cube".concat(cubeType, "Right"),
  5449. shape: {
  5450. api: api,
  5451. xValue: api.value(0),
  5452. yValue: api.value(1),
  5453. x: location[0],
  5454. y: location[1],
  5455. xAxisPoint: api.coord([api.value(0), 0])
  5456. },
  5457. style: {
  5458. fill: rightColor
  5459. }
  5460. }, {
  5461. type: "Cube".concat(cubeType, "Top"),
  5462. shape: {
  5463. api: api,
  5464. xValue: api.value(0),
  5465. yValue: api.value(1),
  5466. x: location[0],
  5467. y: location[1],
  5468. xAxisPoint: api.coord([api.value(0), 0])
  5469. },
  5470. style: {
  5471. fill: topColor
  5472. }
  5473. }]
  5474. };
  5475. };
  5476. } else if (shape === 'cylinder') {
  5477. var baseWidth = '100%';
  5478. var nextSerieDatas = dataOptions.series[index + 1] && dataOptions.series[index + 1].data;
  5479. serie.type = 'bar';
  5480. serie.barGap = '-100%';
  5481. options.tooltip.trigger === 'axis' && (options.tooltip.trigger = 'item');
  5482. dataOptions.series[index] && (dataOptions.series[index].type = 'bar');
  5483. var cirCleColor = defaultColor || colorGroup[index];
  5484. if (typeof cirCleColor === 'string') {
  5485. cirCleColor = _this9.setGradientColor(cirCleColor, '#fff');
  5486. }
  5487. extraSeries.push( // 头部的圆片
  5488. {
  5489. name: '',
  5490. type: 'pictorialBar',
  5491. symbolOffset: [0, -8],
  5492. symbolPosition: 'end',
  5493. z: 12,
  5494. itemStyle: {
  5495. normal: {
  5496. color: cirCleColor
  5497. }
  5498. },
  5499. data: dataOptions.series[index].data.map(function (item, dataIndex) {
  5500. return {
  5501. value: item,
  5502. symbolSize: !nextSerieDatas || nextSerieDatas[dataIndex] && +item >= +nextSerieDatas[dataIndex] ? [baseWidth, 15] : [0, 15]
  5503. };
  5504. })
  5505. }, {
  5506. // 底部的圆片
  5507. name: '',
  5508. type: 'pictorialBar',
  5509. symbolSize: [baseWidth, 10],
  5510. symbolOffset: [0, 5],
  5511. z: 12,
  5512. itemStyle: {
  5513. normal: {
  5514. color: cirCleColor
  5515. }
  5516. },
  5517. data: dataOptions.series[index].data
  5518. });
  5519. }
  5520. delete serie.shape;
  5521. }
  5522. }
  5523. return serie;
  5524. }); // 玫瑰图多个选中
  5525. if (options.series[0].type === 'pie' && options.series[0].roseType) {
  5526. options.series = options.series.map(function (serie) {
  5527. if (!serie.roseType) {
  5528. serie.roseType = options.series[0].roseType;
  5529. }
  5530. return serie;
  5531. });
  5532. } // pie的图例需要一个扇形是一个图例
  5533. if (options.legend && options.series.length > 0 && options.series[0].type === 'pie') {
  5534. options.legend.data = [];
  5535. options.series.forEach(function (element) {
  5536. if (element.data) {
  5537. var _options$legend$data;
  5538. (_options$legend$data = options.legend.data).push.apply(_options$legend$data, (0, _toConsumableArray2.default)(element.data.map(function (item) {
  5539. return item.name;
  5540. })));
  5541. }
  5542. });
  5543. }
  5544. }
  5545. }
  5546. if (options && options.radar && dataOptions.radar) {
  5547. options.radar.indicator = Object.assign({}, dataOptions.radar.indicator || {});
  5548. }
  5549. var series = dataOptions.series;
  5550. if (series && series.length && series[0].type === 'pie') {
  5551. this.setItemStyleColor(false, series);
  5552. }
  5553. if (this.highlightOptions && this.highlightOptions.length > 0) {
  5554. this.setItemStyleColor(true, series);
  5555. }
  5556. dataOptions.series = this._createRingShineSeries(series, options.series);
  5557. var mergeOptions = (0, _lodash2.default)(options, dataOptions);
  5558. if (extraSeries.length > 0) {
  5559. var _mergeOptions$series;
  5560. (_mergeOptions$series = mergeOptions.series).push.apply(_mergeOptions$series, extraSeries);
  5561. }
  5562. return mergeOptions;
  5563. },
  5564. _createRingShineSeries: function _createRingShineSeries(series, optionsSeries) {
  5565. var _this10 = this;
  5566. if (optionsSeries) {
  5567. this.datasetOptions.forEach(function (datasetOption, index) {
  5568. var _ref4 = optionsSeries[index] || {},
  5569. type = _ref4.type,
  5570. outerGap = _ref4.outerGap,
  5571. isShine = _ref4.isShine;
  5572. if (type === 'pie' && outerGap >= 0) {
  5573. var data = series[index].data.map(function (val) {
  5574. return val.value;
  5575. });
  5576. outerGap = outerGap || Math.min.apply(null, data) / 5;
  5577. series[index].data = _this10._createRingShineDataOption(series[index].data, outerGap, isShine);
  5578. delete optionsSeries[index].outerGap;
  5579. delete optionsSeries[index].isShine;
  5580. }
  5581. });
  5582. }
  5583. return series;
  5584. },
  5585. _createRingShineDataOption: function _createRingShineDataOption(data, outerGap, isShine) {
  5586. if (!data) {
  5587. return;
  5588. }
  5589. var colors = this._handlerColorGroup(data.length);
  5590. var gapItem = {
  5591. value: outerGap,
  5592. name: '',
  5593. itemStyle: {
  5594. normal: {
  5595. label: {
  5596. show: false
  5597. },
  5598. labelLine: {
  5599. show: false
  5600. },
  5601. color: 'rgba(0, 0, 0, 0)',
  5602. borderColor: 'rgba(0, 0, 0, 0)',
  5603. borderWidth: 0
  5604. }
  5605. }
  5606. };
  5607. var result = [];
  5608. for (var i = 0; i < data.length; i++) {
  5609. var dataItem = {
  5610. value: data[i].value,
  5611. name: data[i].name
  5612. };
  5613. if (isShine) {
  5614. dataItem.itemStyle = {
  5615. normal: {
  5616. borderWidth: 5,
  5617. shadowBlur: 10,
  5618. color: colors[i],
  5619. borderColor: colors[i],
  5620. shadowColor: colors[i]
  5621. }
  5622. };
  5623. }
  5624. result.push(dataItem);
  5625. if (data.length > 1) {
  5626. result.push(gapItem);
  5627. }
  5628. }
  5629. return result;
  5630. },
  5631. _handlerColorGroup: function _handlerColorGroup(serielDataLength) {
  5632. if ((0, _typeof2.default)(this.colorGroupsData[0]) === 'object') {
  5633. return (0, _chart.handleMultiGradient)(this.colorGroupsData, serielDataLength);
  5634. } else {
  5635. return SuperMap.ColorsPickerUtil.getGradientColors(this.colorGroupsData, serielDataLength, 'RANGE');
  5636. }
  5637. },
  5638. // 控制label显示条数
  5639. _controlLabel: function _controlLabel(normalLabel, maxLabels) {
  5640. if (normalLabel && normalLabel.show && maxLabels) {
  5641. var endNormalLabel = (0, _lodash4.default)(normalLabel);
  5642. var formatMode;
  5643. if (endNormalLabel.formatter && typeof endNormalLabel.formatter === 'string') {
  5644. formatMode = endNormalLabel.formatter;
  5645. }
  5646. endNormalLabel.formatter = function (_ref5) {
  5647. var dataIndex = _ref5.dataIndex,
  5648. value = _ref5.value,
  5649. name = _ref5.name,
  5650. percent = _ref5.percent;
  5651. var FORMATTER_MAP = {
  5652. '{b}: {c}': "".concat(name, ": ").concat(value),
  5653. '{b}': "".concat(name),
  5654. '{c}': "".concat(value),
  5655. '{d}%': "".concat(percent, "%")
  5656. };
  5657. var result = '';
  5658. if (dataIndex < maxLabels) {
  5659. result = FORMATTER_MAP[formatMode || '{c}'];
  5660. }
  5661. return result;
  5662. };
  5663. return endNormalLabel;
  5664. }
  5665. return normalLabel;
  5666. },
  5667. // 当datasetUrl不变,datasetOptions改变时
  5668. _changeChartData: function _changeChartData(echartsDataService, datasetOptions, echartOptions) {
  5669. var options;
  5670. options = echartsDataService.formatChartData(datasetOptions, this.xBar); // 缓存dataSeriesCache,格式化成echart的数据
  5671. this.dataSeriesCache = Object.assign({}, options); // 设置echartOptions
  5672. this.echartOptions = this._optionsHandler(echartOptions, options);
  5673. },
  5674. _setChartTheme: function _setChartTheme() {
  5675. if (!this.theme) {
  5676. var colorNumber = this.colorNumber;
  5677. this.chartTheme = (0, _chart.chartThemeUtil)(this.backgroundData, this.textColorsData, this.colorGroupsData, colorNumber);
  5678. }
  5679. },
  5680. // 获取echart实例
  5681. _getEchart: function _getEchart() {
  5682. return this.smChart;
  5683. },
  5684. // 以下全是同名调用echart的方法
  5685. /**
  5686. * 提供了一个更贴切的名称来描述 setOption 方法的实际行为。
  5687. * @param {Object} options - 图表的配置项和数据
  5688. * @param {Boolean} [notMerge = false] - 可选,是否不跟之前设置的 option 进行合并,默认为 false,即合并
  5689. * @param {Boolean} [lazyUpdate = false] - 可选,阻止调用 setOption 时抛出事件,默认为 false,即抛出事件
  5690. */
  5691. mergeOptions: function mergeOptions(options, notMerge, lazyUpdate) {
  5692. this._delegateMethod('mergeOptions', options, notMerge, lazyUpdate);
  5693. },
  5694. /**
  5695. * 此接口用于,在大数据量(百万以上)的渲染场景,分片加载数据和增量渲染。
  5696. * @param {Object} params - 数据配置
  5697. */
  5698. appendData: function appendData(params) {
  5699. this._delegateMethod('appendData', params);
  5700. },
  5701. /**
  5702. * 此接口用于,改变图表尺寸,在容器大小发生改变时需要手动调用。
  5703. * @param {Object} [options] - options可缺省。有下面几个可选项:width, height, silent
  5704. */
  5705. resize: function resize(options) {
  5706. this._delegateMethod('resize', options);
  5707. },
  5708. /**
  5709. * 此接口用于,触发图表行为。
  5710. * @param {Object} payload - 参数可以通过batch属性同时触发多个行为。
  5711. */
  5712. dispatchAction: function dispatchAction(payload) {
  5713. this._delegateMethod('dispatchAction', payload);
  5714. },
  5715. /**
  5716. * 此接口用于,转换坐标系上的点到像素坐标值。
  5717. * @param {Object} finder - 用于指示『在哪个坐标系或者系列上判断』。
  5718. * @param {Array|string} value - 要被转换的值。
  5719. */
  5720. convertToPixel: function convertToPixel(finder, value) {
  5721. return this._delegateMethod('convertToPixel', finder, value);
  5722. },
  5723. /**
  5724. * 此接口用于,转换像素坐标值到逻辑坐标系上的点。是 convertToPixel 的逆运算。
  5725. * @param {Object} finder - 用于指示『在哪个坐标系或者系列上判断』。
  5726. * @param {Array|string} value - 要被转换的值。
  5727. */
  5728. convertFromPixel: function convertFromPixel(finder, value) {
  5729. return this._delegateMethod('convertFromPixel', finder, value);
  5730. },
  5731. /**
  5732. * 此接口用于,判断给定的点是否在指定的坐标系或者系列上。
  5733. * @param {Object} finder - 用于指示『在哪个坐标系或者系列上判断』。
  5734. * @param {Array} value - 要被判断的点。
  5735. */
  5736. containPixel: function containPixel(finder, value) {
  5737. return this._delegateMethod('containPixel', finder, value);
  5738. },
  5739. /**
  5740. * 此接口用于,显示加载动画效果。可以在加载数据前手动调用该接口显示加载动画,在数据加载完成后调用 hideLoading 隐藏加载动画。
  5741. * @param {Object} [type] - 可选,加载动画类型,目前只有一种'default'。
  5742. * @param {Object} [options] - 可选,加载动画配置项,跟type有关。
  5743. */
  5744. showLoading: function showLoading(type, options) {
  5745. this._delegateMethod('showLoading', type, options);
  5746. },
  5747. /**
  5748. * 此接口用于,隐藏动画加载效果。
  5749. */
  5750. hideLoading: function hideLoading() {
  5751. this._delegateMethod('hideLoading');
  5752. },
  5753. /**
  5754. * 此接口用于,导出图表图片,返回一个 base64 的 URL,可以设置为Image的src。
  5755. * @param {Object} options - 导出配置
  5756. */
  5757. getDataURL: function getDataURL(options) {
  5758. return this._delegateMethod('getDataURL', options);
  5759. },
  5760. /**
  5761. * 此接口用于,导出联动的图表图片,返回一个 base64 的 url,可以设置为Image的src。导出图片中每个图表的相对位置跟容器的相对位置有关。
  5762. * @param {Object} options - 导出配置
  5763. */
  5764. getConnectedDataURL: function getConnectedDataURL(options) {
  5765. return this._delegateMethod('getConnectedDataURL', options);
  5766. },
  5767. /**
  5768. * 此接口用于,清空当前实例,会移除实例中所有的组件和图表。清空后调用 getOption 方法返回一个{}空对象。
  5769. */
  5770. clear: function clear() {
  5771. this._delegateMethod('clear');
  5772. },
  5773. /**
  5774. * 此接口用于,销毁实例,销毁后实例无法再被使用。
  5775. */
  5776. dispose: function dispose() {
  5777. this._delegateMethod('dispose');
  5778. },
  5779. // 内部调用的方法
  5780. _delegateMethod: function _delegateMethod(name) {
  5781. var _this$smChart;
  5782. for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  5783. args[_key - 1] = arguments[_key];
  5784. }
  5785. return (_this$smChart = this.smChart)[name].apply(_this$smChart, args);
  5786. },
  5787. unSupportedFeatureTip: function unSupportedFeatureTip() {
  5788. this.$message.destroy();
  5789. this.$message.warning(this.$t('chart.unSupportedData'));
  5790. },
  5791. handleChartClick: function handleChartClick(params) {
  5792. if (this.associatedMap) {
  5793. var dataIndex = params.dataIndex;
  5794. var features = [];
  5795. if (this.echartsDataService && this.echartsDataService.sortDataCache) {
  5796. features = this.echartsDataService.sortDataCache.features || features;
  5797. }
  5798. var selectedFeature = features[dataIndex];
  5799. this.showDetailInfo(selectedFeature);
  5800. }
  5801. },
  5802. showDetailInfo: function showDetailInfo(feature) {
  5803. var _this11 = this;
  5804. var coordinates = ((feature || {}).geometry || {}).coordinates;
  5805. var hasCoordinates = coordinates && !!coordinates.length;
  5806. if (hasCoordinates && this.viewModel) {
  5807. var properties = feature.properties || {};
  5808. var _coordinates = (0, _util.getFeatureCenter)(feature);
  5809. var propsData = this.generateTableData(properties);
  5810. this.tablePopupProps = _objectSpread({}, propsData);
  5811. this.$nextTick(function () {
  5812. _this11.viewModel.setPopupContent(_coordinates, _this11.$refs.chartTablePopup.$el, _this11.changePopupArrowStyle);
  5813. });
  5814. } else {
  5815. var mapNotLoaded = this.mapNotLoadedTip();
  5816. if (mapNotLoaded) {
  5817. return;
  5818. }
  5819. if (!hasCoordinates) {
  5820. this.unSupportedFeatureTip();
  5821. }
  5822. }
  5823. },
  5824. generateTableData: function generateTableData(properties) {
  5825. var propsData = {
  5826. columns: [{
  5827. title: this.$t('search.attribute'),
  5828. dataIndex: 'attribute',
  5829. width: 120
  5830. }, {
  5831. title: this.$t('search.attributeValue'),
  5832. dataIndex: 'attributeValue',
  5833. width: 150
  5834. }],
  5835. data: []
  5836. };
  5837. for (var key in properties) {
  5838. if (key && properties[key]) {
  5839. var dataItem = {};
  5840. dataItem.attribute = key;
  5841. dataItem.attributeValue = properties[key];
  5842. propsData.data.push(dataItem);
  5843. }
  5844. }
  5845. return propsData;
  5846. },
  5847. changePopupArrowStyle: function changePopupArrowStyle() {},
  5848. mapNotLoadedTip: function mapNotLoadedTip() {},
  5849. _dataZoomChanged: function _dataZoomChanged() {
  5850. var flag = false;
  5851. this.options.series && this.options.series.forEach(function (serie, index) {
  5852. var labelConfig = serie.label && serie.label.normal;
  5853. flag = labelConfig.show && labelConfig.smart;
  5854. });
  5855. if (flag) {
  5856. this.echartOptions = this._optionsHandler(this.options, this.dataSeriesCache, true);
  5857. }
  5858. },
  5859. registerShape: function registerShape() {
  5860. var _this12 = this;
  5861. this.datasetOptions && this.options.series && this.datasetOptions.forEach(function (item, index) {
  5862. var graphicIntance = _this12.$options.graphic;
  5863. if (item.seriesType === '2.5Bar') {
  5864. var cubeType = _this12.options.series[index].shape;
  5865. if (graphicIntance.getShapeClass("Cube".concat(cubeType, "Left"))) {
  5866. return;
  5867. }
  5868. var CubeLeft, CubeRight, CubeTop;
  5869. switch (cubeType) {
  5870. case 'square':
  5871. // 绘制左侧面
  5872. CubeLeft = graphicIntance.extendShape({
  5873. shape: {
  5874. x: 0,
  5875. y: 0
  5876. },
  5877. buildPath: function buildPath(ctx, shape) {
  5878. // 会canvas的应该都能看得懂,shape是从custom传入的
  5879. var xAxisPoint = shape.xAxisPoint;
  5880. var c0 = [shape.x, shape.y];
  5881. var c1 = [shape.x - 13, shape.y - 13];
  5882. var c2 = [xAxisPoint[0] - 13, xAxisPoint[1] - 13];
  5883. var c3 = [xAxisPoint[0], xAxisPoint[1]];
  5884. ctx.moveTo(c0[0], c0[1]).lineTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).closePath();
  5885. }
  5886. }); // 绘制右侧面
  5887. CubeRight = graphicIntance.extendShape({
  5888. shape: {
  5889. x: 0,
  5890. y: 0
  5891. },
  5892. buildPath: function buildPath(ctx, shape) {
  5893. var xAxisPoint = shape.xAxisPoint;
  5894. var c1 = [shape.x, shape.y];
  5895. var c2 = [xAxisPoint[0], xAxisPoint[1]];
  5896. var c3 = [xAxisPoint[0] + 18, xAxisPoint[1] - 9];
  5897. var c4 = [shape.x + 18, shape.y - 9];
  5898. ctx.moveTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).lineTo(c4[0], c4[1]).closePath();
  5899. }
  5900. }); // 绘制顶面
  5901. CubeTop = graphicIntance.extendShape({
  5902. shape: {
  5903. x: 0,
  5904. y: 0
  5905. },
  5906. buildPath: function buildPath(ctx, shape) {
  5907. var c1 = [shape.x, shape.y];
  5908. var c2 = [shape.x + 18, shape.y - 9];
  5909. var c3 = [shape.x + 5, shape.y - 22];
  5910. var c4 = [shape.x - 13, shape.y - 13];
  5911. ctx.moveTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).lineTo(c4[0], c4[1]).closePath();
  5912. }
  5913. });
  5914. break;
  5915. case 'rectangle':
  5916. // 绘制左侧面
  5917. CubeLeft = graphicIntance.extendShape({
  5918. shape: {
  5919. x: 0,
  5920. y: 0
  5921. },
  5922. buildPath: function buildPath(ctx, shape) {
  5923. var xAxisPoint = shape.xAxisPoint;
  5924. var c0 = [shape.x, shape.y];
  5925. var c1 = [shape.x - 9, shape.y - 9];
  5926. var c2 = [xAxisPoint[0] - 9, xAxisPoint[1] - 9];
  5927. var c3 = [xAxisPoint[0], xAxisPoint[1]];
  5928. ctx.moveTo(c0[0], c0[1]).lineTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).closePath();
  5929. }
  5930. });
  5931. CubeRight = graphicIntance.extendShape({
  5932. shape: {
  5933. x: 0,
  5934. y: 0
  5935. },
  5936. buildPath: function buildPath(ctx, shape) {
  5937. var xAxisPoint = shape.xAxisPoint;
  5938. var c1 = [shape.x, shape.y];
  5939. var c2 = [xAxisPoint[0], xAxisPoint[1]];
  5940. var c3 = [xAxisPoint[0] + 18, xAxisPoint[1] - 9];
  5941. var c4 = [shape.x + 18, shape.y - 9];
  5942. ctx.moveTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).lineTo(c4[0], c4[1]).closePath();
  5943. }
  5944. });
  5945. CubeTop = graphicIntance.extendShape({
  5946. shape: {
  5947. x: 0,
  5948. y: 0
  5949. },
  5950. buildPath: function buildPath(ctx, shape) {
  5951. var c1 = [shape.x, shape.y];
  5952. var c2 = [shape.x + 18, shape.y - 9];
  5953. var c3 = [shape.x + 9, shape.y - 18];
  5954. var c4 = [shape.x - 9, shape.y - 9];
  5955. ctx.moveTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).lineTo(c4[0], c4[1]).closePath();
  5956. }
  5957. });
  5958. break;
  5959. }
  5960. CubeLeft && graphicIntance.registerShape("Cube".concat(cubeType, "Left"), CubeLeft);
  5961. CubeRight && graphicIntance.registerShape("Cube".concat(cubeType, "Right"), CubeRight);
  5962. CubeTop && graphicIntance.registerShape("Cube".concat(cubeType, "Top"), CubeTop);
  5963. }
  5964. });
  5965. },
  5966. getCirlPoint: function getCirlPoint(x0, y0, r, angle) {
  5967. var x1 = x0 + r * Math.cos(angle * Math.PI / 180);
  5968. var y1 = y0 + r * Math.sin(angle * Math.PI / 180);
  5969. return {
  5970. x: x1,
  5971. y: y1
  5972. };
  5973. },
  5974. spinLine: function spinLine(startAngle, endAngle, angle, effectColor, radius) {
  5975. return function (params, api) {
  5976. return {
  5977. type: 'arc',
  5978. shape: {
  5979. cx: api.getWidth() / 2,
  5980. cy: api.getHeight() / 2,
  5981. r: Math.min(api.getWidth(), api.getHeight()) / 2 * radius,
  5982. startAngle: (startAngle + angle) * Math.PI / 180,
  5983. endAngle: (endAngle + angle) * Math.PI / 180
  5984. },
  5985. style: {
  5986. stroke: effectColor,
  5987. fill: 'transparent',
  5988. lineWidth: 1.5
  5989. },
  5990. silent: true
  5991. };
  5992. };
  5993. },
  5994. spinPoint: function spinPoint(angle, spinAngle, effectColor, radius) {
  5995. var _this13 = this;
  5996. return function (params, api) {
  5997. var x0 = api.getWidth() / 2;
  5998. var y0 = api.getHeight() / 2;
  5999. var r = Math.min(api.getWidth(), api.getHeight()) / 2 * radius;
  6000. var point = _this13.getCirlPoint(x0, y0, r, angle + spinAngle);
  6001. return {
  6002. type: 'circle',
  6003. shape: {
  6004. cx: point.x,
  6005. cy: point.y,
  6006. r: 4
  6007. },
  6008. style: {
  6009. stroke: effectColor,
  6010. fill: effectColor
  6011. },
  6012. silent: true
  6013. };
  6014. };
  6015. },
  6016. customRingsLine: function customRingsLine(startAngle, endAngle, angle, effectColor, effectRadius) {
  6017. var series = {
  6018. name: 'ring0',
  6019. type: 'custom',
  6020. coordinateSystem: 'none',
  6021. renderItem: null,
  6022. data: [0]
  6023. };
  6024. series.renderItem = this.spinLine(startAngle, endAngle, angle, effectColor, effectRadius);
  6025. return series;
  6026. },
  6027. customRingsPoint: function customRingsPoint(startAngle, angle, effectColor, outEffectRadius) {
  6028. var series = {
  6029. name: 'ring4',
  6030. type: 'custom',
  6031. coordinateSystem: 'none',
  6032. renderItem: null,
  6033. data: [0]
  6034. };
  6035. series.renderItem = this.spinPoint(startAngle, angle, effectColor, outEffectRadius);
  6036. return series;
  6037. },
  6038. addEffect: function addEffect(angle) {
  6039. angle = angle || 0;
  6040. var effectColor = this.options.series[0].customOptions.color;
  6041. var effectRadius = this.options.series[0].customOptions.radius;
  6042. var outEffectRadius = effectRadius + 0.1; // customRightBottomLine
  6043. this.customSeries.push(this.customRingsLine(0, 90, angle, effectColor, effectRadius)); // customRightTopLine
  6044. this.customSeries.push(this.customRingsLine(270, 40, -angle, effectColor, outEffectRadius)); // customLeftTopLine
  6045. this.customSeries.push(this.customRingsLine(180, 270, angle, effectColor, effectRadius)); // customLeftBottomLine
  6046. this.customSeries.push(this.customRingsLine(90, 220, -angle, effectColor, outEffectRadius));
  6047. if (this.options.series[0].customOptions.pointState === 'startPoint') {
  6048. this.customSeries.push(this.customRingsPoint(270, -angle, effectColor, outEffectRadius));
  6049. this.customSeries.push(this.customRingsPoint(90, -angle, effectColor, outEffectRadius));
  6050. }
  6051. },
  6052. startEffect: function startEffect() {
  6053. var _this14 = this;
  6054. var angle = 0;
  6055. this.startSpin = setInterval(function () {
  6056. if (!_this14.options.series) {
  6057. return;
  6058. }
  6059. if (_this14.options.series[0].customType === 'customRingsSeries') {
  6060. _this14.customSeries = [];
  6061. angle += 3;
  6062. _this14.addEffect(angle);
  6063. }
  6064. }, 100);
  6065. },
  6066. customRenderItem: function customRenderItem() {}
  6067. },
  6068. // echarts所有静态方法
  6069. /**
  6070. * @function connect
  6071. * 多个图表实例实现联动。
  6072. * @param {string|Array} group - group的id,或者图表实例的数组。
  6073. */
  6074. connect: function connect(group) {
  6075. _vueEcharts.default && _vueEcharts.default.connect(group);
  6076. },
  6077. /**
  6078. * 解除图表实例的联动,如果只需要移除单个实例,可以将通过将该图表实例 group 设为空。
  6079. * @param {string} group - group的id。
  6080. */
  6081. disconnect: function disconnect(group) {
  6082. _vueEcharts.default && _vueEcharts.default.disConnect(group);
  6083. },
  6084. /**
  6085. * 注册可用的地图,必须在包括 geo 组件或者 map 图表类型的时候才能使用。
  6086. * @param {string} mapName - 地图名称,在 geo 组件或者 map 图表类型中设置的 map 对应的就是该值。
  6087. * @param {Object} geoJSON - GeoJson 格式的数据,具体格式见 http://geojson.org/。
  6088. * @param {Object} [specialAreas] - 可选。将地图中的部分区域缩放到合适的位置,可以使得整个地图的显示更加好看。
  6089. */
  6090. registerMap: function registerMap(mapName, geoJSON, specialAreas) {
  6091. _vueEcharts.default && _vueEcharts.default.registerMap(mapName, geoJSON, specialAreas);
  6092. },
  6093. /**
  6094. * 注册主题,用于初始化实例的时候指定。
  6095. * @param {string} name - 主题命名。
  6096. * @param {Object} theme - 主题配置。
  6097. */
  6098. registerTheme: function registerTheme(name, theme) {
  6099. _vueEcharts.default && _vueEcharts.default.registerTheme(name, theme);
  6100. },
  6101. /**
  6102. * @desc 图形相关帮助方法。
  6103. */
  6104. graphic: _vueEcharts.default && _vueEcharts.default.graphic
  6105. };
  6106. exports.default = _default2;
  6107. /***/ }),
  6108. /***/ "0fd2":
  6109. /***/ (function(module, exports, __webpack_require__) {
  6110. "use strict";
  6111. var _interopRequireDefault = __webpack_require__("8e6d");
  6112. Object.defineProperty(exports, "__esModule", {
  6113. value: true
  6114. });
  6115. exports.default = void 0;
  6116. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  6117. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  6118. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  6119. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  6120. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  6121. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  6122. var _WebMapViewModel = _interopRequireDefault(__webpack_require__("6e42"));
  6123. var _mapEvent = _interopRequireDefault(__webpack_require__("d3e9"));
  6124. var _vmUpdater = _interopRequireDefault(__webpack_require__("3a49"));
  6125. var _mapEvents = _interopRequireDefault(__webpack_require__("9f21"));
  6126. var _vuePropertyDecorator = __webpack_require__("e22c");
  6127. var _resizeDetector = __webpack_require__("e0f2");
  6128. var _debounce = _interopRequireDefault(__webpack_require__("331f"));
  6129. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  6130. var c = arguments.length,
  6131. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  6132. d;
  6133. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  6134. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  6135. }
  6136. return c > 3 && r && Object.defineProperty(target, key, r), r;
  6137. };
  6138. var SmWebMap =
  6139. /*#__PURE__*/
  6140. function (_Mixins) {
  6141. (0, _inherits2.default)(SmWebMap, _Mixins);
  6142. function SmWebMap() {
  6143. var _this;
  6144. (0, _classCallCheck2.default)(this, SmWebMap);
  6145. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(SmWebMap).apply(this, arguments));
  6146. _this.spinning = true;
  6147. return _this;
  6148. }
  6149. (0, _createClass2.default)(SmWebMap, [{
  6150. key: "mapIdChanged",
  6151. value: function mapIdChanged() {
  6152. if (this.defaultLoading) {
  6153. this.spinning = true;
  6154. }
  6155. }
  6156. }, {
  6157. key: "loadingChanged",
  6158. value: function loadingChanged(newVal) {
  6159. this.spinning = newVal;
  6160. }
  6161. }, {
  6162. key: "created",
  6163. value: function created() {
  6164. if (!this.defaultLoading) {
  6165. this.spinning = false;
  6166. }
  6167. }
  6168. }, {
  6169. key: "mounted",
  6170. value: function mounted() {
  6171. this.initializeWebMap();
  6172. this.registerEvents();
  6173. }
  6174. }, {
  6175. key: "beforeDestroy",
  6176. value: function beforeDestroy() {
  6177. this.destory();
  6178. }
  6179. }, {
  6180. key: "destroyed",
  6181. value: function destroyed() {
  6182. _mapEvent.default.$options.deleteMap(this.target);
  6183. _mapEvent.default.$options.deleteWebMap(this.target);
  6184. this.viewModel.cleanWebMap();
  6185. }
  6186. }, {
  6187. key: "load",
  6188. value: function load(value) {
  6189. return value;
  6190. }
  6191. }, {
  6192. key: "getMapFailed",
  6193. value: function getMapFailed(value) {
  6194. return value;
  6195. }
  6196. }, {
  6197. key: "getLayerDatasourceFailed",
  6198. value: function getLayerDatasourceFailed(value) {
  6199. return value;
  6200. }
  6201. }, {
  6202. key: "initializeWebMap",
  6203. value: function initializeWebMap() {
  6204. var _this2 = this;
  6205. var _this$$props = this.$props,
  6206. target = _this$$props.target,
  6207. serverUrl = _this$$props.serverUrl,
  6208. accessToken = _this$$props.accessToken,
  6209. accessKey = _this$$props.accessKey,
  6210. tiandituKey = _this$$props.tiandituKey,
  6211. withCredentials = _this$$props.withCredentials,
  6212. excludePortalProxyUrl = _this$$props.excludePortalProxyUrl,
  6213. isSuperMapOnline = _this$$props.isSuperMapOnline,
  6214. proxy = _this$$props.proxy,
  6215. mapOptions = _this$$props.mapOptions,
  6216. iportalServiceProxyUrlPrefix = _this$$props.iportalServiceProxyUrlPrefix;
  6217. this.viewModel = new _WebMapViewModel.default(this.mapId, {
  6218. target: target,
  6219. serverUrl: serverUrl,
  6220. accessToken: accessToken,
  6221. accessKey: accessKey,
  6222. tiandituKey: tiandituKey,
  6223. withCredentials: withCredentials,
  6224. excludePortalProxyUrl: excludePortalProxyUrl,
  6225. isSuperMapOnline: isSuperMapOnline,
  6226. proxy: proxy,
  6227. iportalServiceProxyUrlPrefix: iportalServiceProxyUrlPrefix
  6228. }, mapOptions);
  6229. if (this.autoresize) {
  6230. this.__resizeHandler = (0, _debounce.default)(function () {
  6231. _this2.resize();
  6232. }, 100, {
  6233. leading: true
  6234. });
  6235. (0, _resizeDetector.addListener)(this.$el, this.__resizeHandler);
  6236. }
  6237. }
  6238. }, {
  6239. key: "resize",
  6240. value: function resize() {
  6241. if (this.viewModel && this.viewModel.resize) {
  6242. this.viewModel.resize(this.keepBounds);
  6243. }
  6244. }
  6245. }, {
  6246. key: "registerEvents",
  6247. value: function registerEvents() {
  6248. var _this3 = this;
  6249. this.viewModel.on({
  6250. addlayerssucceeded: function addlayerssucceeded(e) {
  6251. _this3.spinning = false;
  6252. _mapEvent.default.$options.setMap(_this3.target, e.map);
  6253. _this3.viewModel && _mapEvent.default.$options.setWebMap(_this3.target, _this3.viewModel);
  6254. _mapEvent.default.$emit('load-map', e.map, _this3.target);
  6255. e.map.resize();
  6256. _this3.map = e.map;
  6257. _this3.bindMapEvents();
  6258. _this3.load({
  6259. map: e.map
  6260. });
  6261. },
  6262. getmapinfofailed: function getmapinfofailed(e) {
  6263. _this3.getMapFailed({
  6264. error: e.error
  6265. });
  6266. _this3.$message.error(e.error.message);
  6267. _this3.spinning = false;
  6268. },
  6269. getlayerdatasourcefailed: function getlayerdatasourcefailed(e) {
  6270. _this3.getLayerDatasourceFailed({
  6271. error: e.error,
  6272. layer: e.layer,
  6273. map: e.map
  6274. });
  6275. if (e.error === 'SAMPLE DATA is not supported') {
  6276. _this3.$message.error(_this3.$t('webmap.sampleDataNotSupport'));
  6277. } else {
  6278. _this3.$message.error(_this3.$t('webmap.getLayerInfoFailed'));
  6279. }
  6280. },
  6281. notsupportbaidumap: function notsupportbaidumap() {
  6282. _this3.$message.error(_this3.$t('webmap.baiduMapNotSupport'));
  6283. },
  6284. beforeremovemap: function beforeremovemap() {
  6285. _mapEvent.default.$options.deleteMap(_this3.target);
  6286. _mapEvent.default.$options.deleteWebMap(_this3.target);
  6287. }
  6288. });
  6289. }
  6290. }, {
  6291. key: "destory",
  6292. value: function destory() {
  6293. if (this.autoresize) {
  6294. (0, _resizeDetector.removeListener)(this.$el, this.__resizeHandler);
  6295. }
  6296. }
  6297. }, {
  6298. key: "getMapTarget",
  6299. get: function get() {
  6300. return this.target;
  6301. }
  6302. }, {
  6303. key: "controlComponents",
  6304. get: function get() {
  6305. var controls = {};
  6306. for (var key in this.$props) {
  6307. if (key.includes('Control') && this.$props[key].show) {
  6308. var controlName = key.replace('Control', '');
  6309. var firstLetter = controlName[0];
  6310. controls["Sm".concat(controlName.replace(firstLetter, firstLetter.toUpperCase()))] = this.$props[key];
  6311. }
  6312. }
  6313. return controls;
  6314. }
  6315. }]);
  6316. return SmWebMap;
  6317. }((0, _vuePropertyDecorator.Mixins)(_vmUpdater.default, _mapEvents.default));
  6318. __decorate([(0, _vuePropertyDecorator.Provide)()], SmWebMap.prototype, "__resizeHandler", void 0);
  6319. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebMap.prototype, "mapId", void 0);
  6320. __decorate([(0, _vuePropertyDecorator.Prop)({
  6321. default: 'map'
  6322. })], SmWebMap.prototype, "target", void 0);
  6323. __decorate([(0, _vuePropertyDecorator.Prop)({
  6324. default: 'https://www.supermapol.com'
  6325. })], SmWebMap.prototype, "serverUrl", void 0);
  6326. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebMap.prototype, "accessToken", void 0);
  6327. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebMap.prototype, "accessKey", void 0);
  6328. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebMap.prototype, "tiandituKey", void 0);
  6329. __decorate([(0, _vuePropertyDecorator.Prop)({
  6330. default: false
  6331. })], SmWebMap.prototype, "withCredentials", void 0);
  6332. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebMap.prototype, "excludePortalProxyUrl", void 0);
  6333. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebMap.prototype, "isSuperMapOnline", void 0);
  6334. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebMap.prototype, "proxy", void 0);
  6335. __decorate([(0, _vuePropertyDecorator.Prop)({
  6336. default: true
  6337. })], SmWebMap.prototype, "defaultLoading", void 0);
  6338. __decorate([(0, _vuePropertyDecorator.Prop)({
  6339. default: false
  6340. })], SmWebMap.prototype, "loading", void 0);
  6341. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebMap.prototype, "background", void 0);
  6342. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebMap.prototype, "iportalServiceProxyUrlPrefix", void 0);
  6343. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebMap.prototype, "mapOptions", void 0);
  6344. __decorate([(0, _vuePropertyDecorator.Prop)({
  6345. default: true
  6346. })], SmWebMap.prototype, "autoresize", void 0);
  6347. __decorate([(0, _vuePropertyDecorator.Prop)({
  6348. default: false
  6349. })], SmWebMap.prototype, "keepBounds", void 0);
  6350. __decorate([(0, _vuePropertyDecorator.Prop)({
  6351. default: function _default() {
  6352. return {
  6353. show: false,
  6354. position: 'top-left'
  6355. };
  6356. }
  6357. })], SmWebMap.prototype, "panControl", void 0);
  6358. __decorate([(0, _vuePropertyDecorator.Prop)({
  6359. default: function _default() {
  6360. return {
  6361. show: false,
  6362. position: 'bottom-left'
  6363. };
  6364. }
  6365. })], SmWebMap.prototype, "scaleControl", void 0);
  6366. __decorate([(0, _vuePropertyDecorator.Prop)({
  6367. default: function _default() {
  6368. return {
  6369. show: false,
  6370. position: 'top-left'
  6371. };
  6372. }
  6373. })], SmWebMap.prototype, "zoomControl", void 0);
  6374. __decorate([(0, _vuePropertyDecorator.Prop)({
  6375. default: function _default() {
  6376. return {
  6377. show: false,
  6378. position: 'bottom-right'
  6379. };
  6380. }
  6381. })], SmWebMap.prototype, "miniMapControl", void 0);
  6382. __decorate([(0, _vuePropertyDecorator.Prop)({
  6383. default: function _default() {
  6384. return {
  6385. show: false,
  6386. position: 'top-right'
  6387. };
  6388. }
  6389. })], SmWebMap.prototype, "layerListControl", void 0);
  6390. __decorate([(0, _vuePropertyDecorator.Prop)({
  6391. default: function _default() {
  6392. return {
  6393. show: false,
  6394. position: 'top-right',
  6395. showUnitSelect: true,
  6396. distanceDefaultUnit: 'kilometers',
  6397. areaDefaultUnit: 'kilometers'
  6398. };
  6399. }
  6400. })], SmWebMap.prototype, "measureControl", void 0);
  6401. __decorate([(0, _vuePropertyDecorator.Prop)({
  6402. default: function _default() {
  6403. return {
  6404. show: false,
  6405. position: 'bottom-left',
  6406. layerNames: [],
  6407. isShowTitle: false,
  6408. isShowField: false,
  6409. mode: 'simple'
  6410. };
  6411. }
  6412. })], SmWebMap.prototype, "legendControl", void 0);
  6413. __decorate([(0, _vuePropertyDecorator.Prop)({
  6414. default: function _default() {
  6415. return {
  6416. show: false,
  6417. position: 'top-right'
  6418. };
  6419. }
  6420. })], SmWebMap.prototype, "queryControl", void 0);
  6421. __decorate([(0, _vuePropertyDecorator.Prop)({
  6422. default: function _default() {
  6423. return {
  6424. show: false,
  6425. position: 'top-right'
  6426. };
  6427. }
  6428. })], SmWebMap.prototype, "searchControl", void 0);
  6429. __decorate([(0, _vuePropertyDecorator.Prop)({
  6430. default: function _default() {
  6431. return {
  6432. show: false,
  6433. layers: [],
  6434. fields: [],
  6435. layerStyle: {},
  6436. clickAreaAround: 5
  6437. };
  6438. }
  6439. })], SmWebMap.prototype, "identifyControl", void 0);
  6440. __decorate([(0, _vuePropertyDecorator.Prop)({
  6441. default: function _default() {
  6442. return {
  6443. show: false,
  6444. layers: []
  6445. };
  6446. }
  6447. })], SmWebMap.prototype, "layerManagerControl", void 0);
  6448. __decorate([(0, _vuePropertyDecorator.Watch)('mapId')], SmWebMap.prototype, "mapIdChanged", null);
  6449. __decorate([(0, _vuePropertyDecorator.Watch)('loading')], SmWebMap.prototype, "loadingChanged", null);
  6450. __decorate([(0, _vuePropertyDecorator.Emit)()], SmWebMap.prototype, "load", null);
  6451. __decorate([(0, _vuePropertyDecorator.Emit)()], SmWebMap.prototype, "getMapFailed", null);
  6452. __decorate([(0, _vuePropertyDecorator.Emit)()], SmWebMap.prototype, "getLayerDatasourceFailed", null);
  6453. SmWebMap = __decorate([(0, _vuePropertyDecorator.Component)({
  6454. name: 'SmWebMap',
  6455. viewModelProps: ['mapId', 'serverUrl', 'mapOptions.center', 'mapOptions.zoom', 'mapOptions.style', 'mapOptions.crs', 'mapOptions.minZoom', 'mapOptions.maxZoom', 'mapOptions.maxBounds', 'mapOptions.renderWorldCopies', 'mapOptions.bearing', 'mapOptions.pitch', 'mapOptions.rasterTileSize', 'withCredentials', 'proxy']
  6456. })], SmWebMap);
  6457. var _default2 = SmWebMap;
  6458. exports.default = _default2;
  6459. /***/ }),
  6460. /***/ 1:
  6461. /***/ (function(module, exports) {
  6462. /* (ignored) */
  6463. /***/ }),
  6464. /***/ "10ba":
  6465. /***/ (function(module, exports, __webpack_require__) {
  6466. "use strict";
  6467. var _interopRequireDefault = __webpack_require__("8e6d");
  6468. Object.defineProperty(exports, "__esModule", {
  6469. value: true
  6470. });
  6471. exports.default = void 0;
  6472. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  6473. var _util = __webpack_require__("1448");
  6474. //
  6475. //
  6476. //
  6477. //
  6478. //
  6479. //
  6480. //
  6481. //
  6482. //
  6483. //
  6484. //
  6485. //
  6486. //
  6487. var _default2 = {
  6488. name: 'SmTablePopup',
  6489. mixins: [_theme.default],
  6490. props: {
  6491. data: {
  6492. type: Array,
  6493. default: function _default() {
  6494. return [];
  6495. }
  6496. },
  6497. columns: {
  6498. type: Array,
  6499. default: function _default() {
  6500. return [];
  6501. }
  6502. }
  6503. },
  6504. computed: {
  6505. styleObject: function styleObject() {
  6506. return {
  6507. '--table-popup-active-color--text': this.colorGroupsData[0]
  6508. };
  6509. },
  6510. backgroundStyle: function backgroundStyle() {
  6511. return {
  6512. background: this.backgroundData ? (0, _util.getColorWithOpacity)(this.backgroundData, 0.5) : this.backgroundData
  6513. };
  6514. }
  6515. }
  6516. };
  6517. exports.default = _default2;
  6518. /***/ }),
  6519. /***/ "10d6":
  6520. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6521. "use strict";
  6522. __webpack_require__.r(__webpack_exports__);
  6523. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_VectorTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ac9e");
  6524. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_VectorTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_VectorTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  6525. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_VectorTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_VectorTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  6526. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_VectorTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  6527. /***/ }),
  6528. /***/ "10d7":
  6529. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6530. "use strict";
  6531. __webpack_require__.r(__webpack_exports__);
  6532. /* harmony import */ var _RangeThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ba96");
  6533. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _RangeThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _RangeThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  6534. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  6535. var render, staticRenderFns
  6536. /* normalize component */
  6537. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  6538. _RangeThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  6539. render,
  6540. staticRenderFns,
  6541. false,
  6542. null,
  6543. null,
  6544. null
  6545. )
  6546. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  6547. /***/ }),
  6548. /***/ "1164":
  6549. /***/ (function(module, exports, __webpack_require__) {
  6550. "use strict";
  6551. Object.defineProperty(exports, "__esModule", { value: true });
  6552. var meta_1 = __webpack_require__("49c0");
  6553. /**
  6554. * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.
  6555. *
  6556. * @name bbox
  6557. * @param {GeoJSON} geojson any GeoJSON object
  6558. * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order
  6559. * @example
  6560. * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);
  6561. * var bbox = turf.bbox(line);
  6562. * var bboxPolygon = turf.bboxPolygon(bbox);
  6563. *
  6564. * //addToMap
  6565. * var addToMap = [line, bboxPolygon]
  6566. */
  6567. function bbox(geojson) {
  6568. var result = [Infinity, Infinity, -Infinity, -Infinity];
  6569. meta_1.coordEach(geojson, function (coord) {
  6570. if (result[0] > coord[0]) {
  6571. result[0] = coord[0];
  6572. }
  6573. if (result[1] > coord[1]) {
  6574. result[1] = coord[1];
  6575. }
  6576. if (result[2] < coord[0]) {
  6577. result[2] = coord[0];
  6578. }
  6579. if (result[3] < coord[1]) {
  6580. result[3] = coord[1];
  6581. }
  6582. });
  6583. return result;
  6584. }
  6585. exports.default = bbox;
  6586. /***/ }),
  6587. /***/ "1171":
  6588. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  6589. "use strict";
  6590. __webpack_require__.r(__webpack_exports__);
  6591. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_TrackLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ab53");
  6592. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_TrackLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_TrackLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__);
  6593. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_TrackLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_TrackLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  6594. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_TrackLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default.a);
  6595. /***/ }),
  6596. /***/ "11f8":
  6597. /***/ (function(module, exports, __webpack_require__) {
  6598. "use strict";
  6599. var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
  6600. /**
  6601. * Copyright Marc J. Schmidt. See the LICENSE file at the top-level
  6602. * directory of this distribution and at
  6603. * https://github.com/marcj/css-element-queries/blob/master/LICENSE.
  6604. */
  6605. (function (root, factory) {
  6606. if (true) {
  6607. !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("76b8")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
  6608. __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
  6609. (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
  6610. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  6611. } else {}
  6612. }(typeof window !== 'undefined' ? window : this, function (ResizeSensor) {
  6613. /**
  6614. *
  6615. * @type {Function}
  6616. * @constructor
  6617. */
  6618. var ElementQueries = function () {
  6619. //<style> element with our dynamically created styles
  6620. var cssStyleElement;
  6621. //all rules found for element queries
  6622. var allQueries = {};
  6623. //association map to identify which selector belongs to a element from the animationstart event.
  6624. var idToSelectorMapping = [];
  6625. /**
  6626. *
  6627. * @param element
  6628. * @returns {Number}
  6629. */
  6630. function getEmSize(element) {
  6631. if (!element) {
  6632. element = document.documentElement;
  6633. }
  6634. var fontSize = window.getComputedStyle(element, null).fontSize;
  6635. return parseFloat(fontSize) || 16;
  6636. }
  6637. /**
  6638. * Get element size
  6639. * @param {HTMLElement} element
  6640. * @returns {Object} {width, height}
  6641. */
  6642. function getElementSize(element) {
  6643. if (!element.getBoundingClientRect) {
  6644. return {
  6645. width: element.offsetWidth,
  6646. height: element.offsetHeight
  6647. }
  6648. }
  6649. var rect = element.getBoundingClientRect();
  6650. return {
  6651. width: Math.round(rect.width),
  6652. height: Math.round(rect.height)
  6653. }
  6654. }
  6655. /**
  6656. *
  6657. * @copyright https://github.com/Mr0grog/element-query/blob/master/LICENSE
  6658. *
  6659. * @param {HTMLElement} element
  6660. * @param {*} value
  6661. * @returns {*}
  6662. */
  6663. function convertToPx(element, value) {
  6664. var numbers = value.split(/\d/);
  6665. var units = numbers[numbers.length - 1];
  6666. value = parseFloat(value);
  6667. switch (units) {
  6668. case "px":
  6669. return value;
  6670. case "em":
  6671. return value * getEmSize(element);
  6672. case "rem":
  6673. return value * getEmSize();
  6674. // Viewport units!
  6675. // According to http://quirksmode.org/mobile/tableViewport.html
  6676. // documentElement.clientWidth/Height gets us the most reliable info
  6677. case "vw":
  6678. return value * document.documentElement.clientWidth / 100;
  6679. case "vh":
  6680. return value * document.documentElement.clientHeight / 100;
  6681. case "vmin":
  6682. case "vmax":
  6683. var vw = document.documentElement.clientWidth / 100;
  6684. var vh = document.documentElement.clientHeight / 100;
  6685. var chooser = Math[units === "vmin" ? "min" : "max"];
  6686. return value * chooser(vw, vh);
  6687. default:
  6688. return value;
  6689. // for now, not supporting physical units (since they are just a set number of px)
  6690. // or ex/ch (getting accurate measurements is hard)
  6691. }
  6692. }
  6693. /**
  6694. *
  6695. * @param {HTMLElement} element
  6696. * @param {String} id
  6697. * @constructor
  6698. */
  6699. function SetupInformation(element, id) {
  6700. this.element = element;
  6701. var key, option, elementSize, value, actualValue, attrValues, attrValue, attrName;
  6702. var attributes = ['min-width', 'min-height', 'max-width', 'max-height'];
  6703. /**
  6704. * Extracts the computed width/height and sets to min/max- attribute.
  6705. */
  6706. this.call = function () {
  6707. // extract current dimensions
  6708. elementSize = getElementSize(this.element);
  6709. attrValues = {};
  6710. for (key in allQueries[id]) {
  6711. if (!allQueries[id].hasOwnProperty(key)) {
  6712. continue;
  6713. }
  6714. option = allQueries[id][key];
  6715. value = convertToPx(this.element, option.value);
  6716. actualValue = option.property === 'width' ? elementSize.width : elementSize.height;
  6717. attrName = option.mode + '-' + option.property;
  6718. attrValue = '';
  6719. if (option.mode === 'min' && actualValue >= value) {
  6720. attrValue += option.value;
  6721. }
  6722. if (option.mode === 'max' && actualValue <= value) {
  6723. attrValue += option.value;
  6724. }
  6725. if (!attrValues[attrName]) attrValues[attrName] = '';
  6726. if (attrValue && -1 === (' ' + attrValues[attrName] + ' ').indexOf(' ' + attrValue + ' ')) {
  6727. attrValues[attrName] += ' ' + attrValue;
  6728. }
  6729. }
  6730. for (var k in attributes) {
  6731. if (!attributes.hasOwnProperty(k)) continue;
  6732. if (attrValues[attributes[k]]) {
  6733. this.element.setAttribute(attributes[k], attrValues[attributes[k]].substr(1));
  6734. } else {
  6735. this.element.removeAttribute(attributes[k]);
  6736. }
  6737. }
  6738. };
  6739. }
  6740. /**
  6741. * @param {HTMLElement} element
  6742. * @param {Object} id
  6743. */
  6744. function setupElement(element, id) {
  6745. if (!element.elementQueriesSetupInformation) {
  6746. element.elementQueriesSetupInformation = new SetupInformation(element, id);
  6747. }
  6748. if (!element.elementQueriesSensor) {
  6749. element.elementQueriesSensor = new ResizeSensor(element, function () {
  6750. element.elementQueriesSetupInformation.call();
  6751. });
  6752. }
  6753. }
  6754. /**
  6755. * Stores rules to the selector that should be applied once resized.
  6756. *
  6757. * @param {String} selector
  6758. * @param {String} mode min|max
  6759. * @param {String} property width|height
  6760. * @param {String} value
  6761. */
  6762. function queueQuery(selector, mode, property, value) {
  6763. if (typeof(allQueries[selector]) === 'undefined') {
  6764. allQueries[selector] = [];
  6765. // add animation to trigger animationstart event, so we know exactly when a element appears in the DOM
  6766. var id = idToSelectorMapping.length;
  6767. cssStyleElement.innerHTML += '\n' + selector + ' {animation: 0.1s element-queries;}';
  6768. cssStyleElement.innerHTML += '\n' + selector + ' > .resize-sensor {min-width: '+id+'px;}';
  6769. idToSelectorMapping.push(selector);
  6770. }
  6771. allQueries[selector].push({
  6772. mode: mode,
  6773. property: property,
  6774. value: value
  6775. });
  6776. }
  6777. function getQuery(container) {
  6778. var query;
  6779. if (document.querySelectorAll) query = (container) ? container.querySelectorAll.bind(container) : document.querySelectorAll.bind(document);
  6780. if (!query && 'undefined' !== typeof $$) query = $$;
  6781. if (!query && 'undefined' !== typeof jQuery) query = jQuery;
  6782. if (!query) {
  6783. throw 'No document.querySelectorAll, jQuery or Mootools\'s $$ found.';
  6784. }
  6785. return query;
  6786. }
  6787. /**
  6788. * If animationStart didn't catch a new element in the DOM, we can manually search for it
  6789. */
  6790. function findElementQueriesElements(container) {
  6791. var query = getQuery(container);
  6792. for (var selector in allQueries) if (allQueries.hasOwnProperty(selector)) {
  6793. // find all elements based on the extract query selector from the element query rule
  6794. var elements = query(selector, container);
  6795. for (var i = 0, j = elements.length; i < j; i++) {
  6796. setupElement(elements[i], selector);
  6797. }
  6798. }
  6799. }
  6800. /**
  6801. *
  6802. * @param {HTMLElement} element
  6803. */
  6804. function attachResponsiveImage(element) {
  6805. var children = [];
  6806. var rules = [];
  6807. var sources = [];
  6808. var defaultImageId = 0;
  6809. var lastActiveImage = -1;
  6810. var loadedImages = [];
  6811. for (var i in element.children) {
  6812. if (!element.children.hasOwnProperty(i)) continue;
  6813. if (element.children[i].tagName && element.children[i].tagName.toLowerCase() === 'img') {
  6814. children.push(element.children[i]);
  6815. var minWidth = element.children[i].getAttribute('min-width') || element.children[i].getAttribute('data-min-width');
  6816. //var minHeight = element.children[i].getAttribute('min-height') || element.children[i].getAttribute('data-min-height');
  6817. var src = element.children[i].getAttribute('data-src') || element.children[i].getAttribute('url');
  6818. sources.push(src);
  6819. var rule = {
  6820. minWidth: minWidth
  6821. };
  6822. rules.push(rule);
  6823. if (!minWidth) {
  6824. defaultImageId = children.length - 1;
  6825. element.children[i].style.display = 'block';
  6826. } else {
  6827. element.children[i].style.display = 'none';
  6828. }
  6829. }
  6830. }
  6831. lastActiveImage = defaultImageId;
  6832. function check() {
  6833. var imageToDisplay = false, i;
  6834. for (i in children) {
  6835. if (!children.hasOwnProperty(i)) continue;
  6836. if (rules[i].minWidth) {
  6837. if (element.offsetWidth > rules[i].minWidth) {
  6838. imageToDisplay = i;
  6839. }
  6840. }
  6841. }
  6842. if (!imageToDisplay) {
  6843. //no rule matched, show default
  6844. imageToDisplay = defaultImageId;
  6845. }
  6846. if (lastActiveImage !== imageToDisplay) {
  6847. //image change
  6848. if (!loadedImages[imageToDisplay]) {
  6849. //image has not been loaded yet, we need to load the image first in memory to prevent flash of
  6850. //no content
  6851. var image = new Image();
  6852. image.onload = function () {
  6853. children[imageToDisplay].src = sources[imageToDisplay];
  6854. children[lastActiveImage].style.display = 'none';
  6855. children[imageToDisplay].style.display = 'block';
  6856. loadedImages[imageToDisplay] = true;
  6857. lastActiveImage = imageToDisplay;
  6858. };
  6859. image.src = sources[imageToDisplay];
  6860. } else {
  6861. children[lastActiveImage].style.display = 'none';
  6862. children[imageToDisplay].style.display = 'block';
  6863. lastActiveImage = imageToDisplay;
  6864. }
  6865. } else {
  6866. //make sure for initial check call the .src is set correctly
  6867. children[imageToDisplay].src = sources[imageToDisplay];
  6868. }
  6869. }
  6870. element.resizeSensorInstance = new ResizeSensor(element, check);
  6871. check();
  6872. }
  6873. function findResponsiveImages() {
  6874. var query = getQuery();
  6875. var elements = query('[data-responsive-image],[responsive-image]');
  6876. for (var i = 0, j = elements.length; i < j; i++) {
  6877. attachResponsiveImage(elements[i]);
  6878. }
  6879. }
  6880. var regex = /,?[\s\t]*([^,\n]*?)((?:\[[\s\t]*?(?:min|max)-(?:width|height)[\s\t]*?[~$\^]?=[\s\t]*?"[^"]*?"[\s\t]*?])+)([^,\n\s\{]*)/mgi;
  6881. var attrRegex = /\[[\s\t]*?(min|max)-(width|height)[\s\t]*?[~$\^]?=[\s\t]*?"([^"]*?)"[\s\t]*?]/mgi;
  6882. /**
  6883. * @param {String} css
  6884. */
  6885. function extractQuery(css) {
  6886. var match, smatch, attrs, attrMatch;
  6887. css = css.replace(/'/g, '"');
  6888. while (null !== (match = regex.exec(css))) {
  6889. smatch = match[1] + match[3];
  6890. attrs = match[2];
  6891. while (null !== (attrMatch = attrRegex.exec(attrs))) {
  6892. queueQuery(smatch, attrMatch[1], attrMatch[2], attrMatch[3]);
  6893. }
  6894. }
  6895. }
  6896. /**
  6897. * @param {CssRule[]|String} rules
  6898. */
  6899. function readRules(rules) {
  6900. var selector = '';
  6901. if (!rules) {
  6902. return;
  6903. }
  6904. if ('string' === typeof rules) {
  6905. rules = rules.toLowerCase();
  6906. if (-1 !== rules.indexOf('min-width') || -1 !== rules.indexOf('max-width')) {
  6907. extractQuery(rules);
  6908. }
  6909. } else {
  6910. for (var i = 0, j = rules.length; i < j; i++) {
  6911. if (1 === rules[i].type) {
  6912. selector = rules[i].selectorText || rules[i].cssText;
  6913. if (-1 !== selector.indexOf('min-height') || -1 !== selector.indexOf('max-height')) {
  6914. extractQuery(selector);
  6915. } else if (-1 !== selector.indexOf('min-width') || -1 !== selector.indexOf('max-width')) {
  6916. extractQuery(selector);
  6917. }
  6918. } else if (4 === rules[i].type) {
  6919. readRules(rules[i].cssRules || rules[i].rules);
  6920. } else if (3 === rules[i].type) {
  6921. if(rules[i].styleSheet.hasOwnProperty("cssRules")) {
  6922. readRules(rules[i].styleSheet.cssRules);
  6923. }
  6924. }
  6925. }
  6926. }
  6927. }
  6928. var defaultCssInjected = false;
  6929. /**
  6930. * Searches all css rules and setups the event listener to all elements with element query rules..
  6931. */
  6932. this.init = function () {
  6933. var animationStart = 'animationstart';
  6934. if (typeof document.documentElement.style['webkitAnimationName'] !== 'undefined') {
  6935. animationStart = 'webkitAnimationStart';
  6936. } else if (typeof document.documentElement.style['MozAnimationName'] !== 'undefined') {
  6937. animationStart = 'mozanimationstart';
  6938. } else if (typeof document.documentElement.style['OAnimationName'] !== 'undefined') {
  6939. animationStart = 'oanimationstart';
  6940. }
  6941. document.body.addEventListener(animationStart, function (e) {
  6942. var element = e.target;
  6943. var styles = element && window.getComputedStyle(element, null);
  6944. var animationName = styles && styles.getPropertyValue('animation-name');
  6945. var requiresSetup = animationName && (-1 !== animationName.indexOf('element-queries'));
  6946. if (requiresSetup) {
  6947. element.elementQueriesSensor = new ResizeSensor(element, function () {
  6948. if (element.elementQueriesSetupInformation) {
  6949. element.elementQueriesSetupInformation.call();
  6950. }
  6951. });
  6952. var sensorStyles = window.getComputedStyle(element.resizeSensor, null);
  6953. var id = sensorStyles.getPropertyValue('min-width');
  6954. id = parseInt(id.replace('px', ''));
  6955. setupElement(e.target, idToSelectorMapping[id]);
  6956. }
  6957. });
  6958. if (!defaultCssInjected) {
  6959. cssStyleElement = document.createElement('style');
  6960. cssStyleElement.type = 'text/css';
  6961. cssStyleElement.innerHTML = '[responsive-image] > img, [data-responsive-image] {overflow: hidden; padding: 0; } [responsive-image] > img, [data-responsive-image] > img {width: 100%;}';
  6962. //safari wants at least one rule in keyframes to start working
  6963. cssStyleElement.innerHTML += '\n@keyframes element-queries { 0% { visibility: inherit; } }';
  6964. document.getElementsByTagName('head')[0].appendChild(cssStyleElement);
  6965. defaultCssInjected = true;
  6966. }
  6967. for (var i = 0, j = document.styleSheets.length; i < j; i++) {
  6968. try {
  6969. if (document.styleSheets[i].href && 0 === document.styleSheets[i].href.indexOf('file://')) {
  6970. console.warn("CssElementQueries: unable to parse local css files, " + document.styleSheets[i].href);
  6971. }
  6972. readRules(document.styleSheets[i].cssRules || document.styleSheets[i].rules || document.styleSheets[i].cssText);
  6973. } catch (e) {
  6974. }
  6975. }
  6976. findResponsiveImages();
  6977. };
  6978. /**
  6979. * Go through all collected rules (readRules()) and attach the resize-listener.
  6980. * Not necessary to call it manually, since we detect automatically when new elements
  6981. * are available in the DOM. However, sometimes handy for dirty DOM modifications.
  6982. *
  6983. * @param {HTMLElement} container only elements of the container are considered (document.body if not set)
  6984. */
  6985. this.findElementQueriesElements = function (container) {
  6986. findElementQueriesElements(container);
  6987. };
  6988. this.update = function () {
  6989. this.init();
  6990. };
  6991. };
  6992. ElementQueries.update = function () {
  6993. ElementQueries.instance.update();
  6994. };
  6995. /**
  6996. * Removes all sensor and elementquery information from the element.
  6997. *
  6998. * @param {HTMLElement} element
  6999. */
  7000. ElementQueries.detach = function (element) {
  7001. if (element.elementQueriesSetupInformation) {
  7002. //element queries
  7003. element.elementQueriesSensor.detach();
  7004. delete element.elementQueriesSetupInformation;
  7005. delete element.elementQueriesSensor;
  7006. } else if (element.resizeSensorInstance) {
  7007. //responsive image
  7008. element.resizeSensorInstance.detach();
  7009. delete element.resizeSensorInstance;
  7010. }
  7011. };
  7012. ElementQueries.init = function () {
  7013. if (!ElementQueries.instance) {
  7014. ElementQueries.instance = new ElementQueries();
  7015. }
  7016. ElementQueries.instance.init();
  7017. };
  7018. var domLoaded = function (callback) {
  7019. /* Mozilla, Chrome, Opera */
  7020. if (document.addEventListener) {
  7021. document.addEventListener('DOMContentLoaded', callback, false);
  7022. }
  7023. /* Safari, iCab, Konqueror */
  7024. else if (/KHTML|WebKit|iCab/i.test(navigator.userAgent)) {
  7025. var DOMLoadTimer = setInterval(function () {
  7026. if (/loaded|complete/i.test(document.readyState)) {
  7027. callback();
  7028. clearInterval(DOMLoadTimer);
  7029. }
  7030. }, 10);
  7031. }
  7032. /* Other web browsers */
  7033. else window.onload = callback;
  7034. };
  7035. ElementQueries.findElementQueriesElements = function (container) {
  7036. ElementQueries.instance.findElementQueriesElements(container);
  7037. };
  7038. ElementQueries.listen = function () {
  7039. domLoaded(ElementQueries.init);
  7040. };
  7041. return ElementQueries;
  7042. }));
  7043. /***/ }),
  7044. /***/ "13f5":
  7045. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7046. "use strict";
  7047. __webpack_require__.r(__webpack_exports__);
  7048. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Indicator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("a142");
  7049. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Indicator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Indicator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  7050. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Indicator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Indicator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  7051. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Indicator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  7052. /***/ }),
  7053. /***/ "1448":
  7054. /***/ (function(module, exports, __webpack_require__) {
  7055. "use strict";
  7056. var _interopRequireDefault = __webpack_require__("8e6d");
  7057. Object.defineProperty(exports, "__esModule", {
  7058. value: true
  7059. });
  7060. exports.getDateTime = getDateTime;
  7061. exports.hexToRgba = hexToRgba;
  7062. exports.isTransparent = isTransparent;
  7063. exports.reservedDecimal = reservedDecimal;
  7064. exports.clearNumberComma = clearNumberComma;
  7065. exports.isXField = isXField;
  7066. exports.isYField = isYField;
  7067. exports.getColorWithOpacity = getColorWithOpacity;
  7068. exports.parseUrl = parseUrl;
  7069. exports.getDataType = getDataType;
  7070. exports.isMatchUrl = isMatchUrl;
  7071. exports.isDate = isDate;
  7072. exports.isNumber = isNumber;
  7073. exports.getFeatureCenter = getFeatureCenter;
  7074. exports.getValueCaseInsensitive = getValueCaseInsensitive;
  7075. exports.filterInvalidData = filterInvalidData;
  7076. exports.handleWithCredentials = handleWithCredentials;
  7077. var _lang = __webpack_require__("4e21");
  7078. var _colorcolor = _interopRequireDefault(__webpack_require__("4552"));
  7079. var _center = _interopRequireDefault(__webpack_require__("cf46"));
  7080. // 获取当前时间返回置顶格式
  7081. function getDateTime(timeType) {
  7082. return (0, _lang.geti18n)().d(new Date(), timeType.replace(/\+/g, '_'), (0, _lang.getLanguage)());
  7083. } // hex -> rgba
  7084. function hexToRgba(hex, opacity) {
  7085. return 'rgba(' + parseInt('0x' + hex.slice(1, 3)) + ',' + parseInt('0x' + hex.slice(3, 5)) + ',' + parseInt('0x' + hex.slice(5, 7)) + ',' + opacity + ')';
  7086. }
  7087. function isTransparent(color) {
  7088. var rgba = (0, _colorcolor.default)(color, 'rgba');
  7089. return +rgba.match(/(\d(\.\d+)?)+/g)[3] === 0;
  7090. } // 保留指定位数的小数
  7091. function reservedDecimal(val, precise) {
  7092. return Number(val).toFixed(precise);
  7093. } // 清除数字(字符串型的)的逗号
  7094. function clearNumberComma(num) {
  7095. if (num.replace) {
  7096. num = num.replace(/,/g, '');
  7097. }
  7098. return num;
  7099. }
  7100. /**
  7101. * 判断是否地理X坐标
  7102. * @param data
  7103. */
  7104. function isXField(data) {
  7105. var lowerdata = data.toLowerCase();
  7106. return lowerdata === 'x' || lowerdata === 'smx' || lowerdata === 'jd' || lowerdata === '经度' || lowerdata === '东经' || lowerdata === 'longitude' || lowerdata === 'lot' || lowerdata === 'lon' || lowerdata === 'lng' || lowerdata === 'x坐标';
  7107. }
  7108. /**
  7109. * 判断是否地理Y坐标
  7110. * @param data
  7111. */
  7112. function isYField(data) {
  7113. var lowerdata = data.toLowerCase();
  7114. return lowerdata === 'y' || lowerdata === 'smy' || lowerdata === 'wd' || lowerdata === '纬度' || lowerdata === '北纬' || lowerdata === 'latitude' || lowerdata === 'lat' || lowerdata === 'y坐标';
  7115. }
  7116. function getColorWithOpacity(color, opacity) {
  7117. if (color.indexOf('rgba') > -1) {
  7118. return color.substring(0, color.lastIndexOf(',') + 1) + opacity + ')';
  7119. }
  7120. var newColor = (0, _colorcolor.default)(color, 'rgb');
  7121. return 'rgba' + newColor.substring(3, newColor.length - 1) + ",".concat(opacity, ")");
  7122. }
  7123. function parseUrl(url) {
  7124. var urlRe = /^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;
  7125. return url.match(urlRe);
  7126. }
  7127. function getDataType(data) {
  7128. return Object.prototype.toString.call(data);
  7129. } // 判断输入的地址是否符合地址格式
  7130. function isMatchUrl(str) {
  7131. var reg = new RegExp('(https?|http|file|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]');
  7132. return reg.test(str);
  7133. } // 判断是否为日期
  7134. function isDate(data) {
  7135. var reg = /((^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(10|12|0?[13578])([-\/\._])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(11|0?[469])([-\/\._])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(0?2)([-\/\._])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([3579][26]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][13579][26])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][13579][26])([-\/\._])(0?2)([-\/\._])(29)$))/gi;
  7136. return reg.test(data);
  7137. } // 判断是否为数值
  7138. function isNumber(data) {
  7139. var mdata = Number(data);
  7140. if (mdata === 0) {
  7141. return true;
  7142. }
  7143. return !isNaN(mdata);
  7144. }
  7145. function getFeatureCenter(feature) {
  7146. var coordinates = ((feature || {}).geometry || {}).coordinates;
  7147. var hasCoordinates = coordinates && !!coordinates.length;
  7148. if (!hasCoordinates) {
  7149. return;
  7150. }
  7151. var featureType = feature.geometry.type;
  7152. var center;
  7153. if (featureType === 'LineString') {
  7154. center = coordinates[parseInt(coordinates.length / 2)];
  7155. } else if (featureType === 'MultiLineString') {
  7156. var coord = coordinates[parseInt(coordinates.length / 2)];
  7157. center = coord[parseInt(coord.length / 2)];
  7158. } else {
  7159. center = (0, _center.default)(feature).geometry.coordinates;
  7160. }
  7161. return center;
  7162. }
  7163. function getValueCaseInsensitive(properties, searchKey) {
  7164. var isObj = getDataType(properties) === '[object Object]';
  7165. if (!searchKey || !isObj) {
  7166. return '';
  7167. }
  7168. var lowerSearchKey = searchKey.toLocaleLowerCase();
  7169. for (var key in properties) {
  7170. if (key.toLocaleLowerCase() === lowerSearchKey) {
  7171. return properties[key];
  7172. }
  7173. }
  7174. return '';
  7175. }
  7176. function filterInvalidData(datasetOptions, features) {
  7177. var xFields = datasetOptions.map(function (item) {
  7178. return item.xField;
  7179. });
  7180. var yFields = datasetOptions.map(function (item) {
  7181. return item.yField;
  7182. });
  7183. var nextFeatures = features.filter(function (feature) {
  7184. var matchXField = xFields.find(function (item) {
  7185. return feature.properties.hasOwnProperty(item);
  7186. });
  7187. var matchYField = yFields.find(function (item) {
  7188. return ![undefined, null, ''].includes(feature.properties[item]);
  7189. });
  7190. return !!(matchXField && matchYField);
  7191. });
  7192. return nextFeatures;
  7193. }
  7194. function handleWithCredentials(url, iportalServiceProxyUrl) {
  7195. var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  7196. if (!iportalServiceProxyUrl) {
  7197. return defaultValue;
  7198. }
  7199. return url.indexOf(iportalServiceProxyUrl) >= 0 || defaultValue;
  7200. }
  7201. /***/ }),
  7202. /***/ "144a":
  7203. /***/ (function(module, exports, __webpack_require__) {
  7204. "use strict";
  7205. Object.defineProperty(exports, "__esModule", { value: true });
  7206. var helpers_1 = __webpack_require__("38ce");
  7207. /**
  7208. * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.
  7209. *
  7210. * @name getCoord
  7211. * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers
  7212. * @returns {Array<number>} coordinates
  7213. * @example
  7214. * var pt = turf.point([10, 10]);
  7215. *
  7216. * var coord = turf.getCoord(pt);
  7217. * //= [10, 10]
  7218. */
  7219. function getCoord(coord) {
  7220. if (!coord) {
  7221. throw new Error("coord is required");
  7222. }
  7223. if (!Array.isArray(coord)) {
  7224. if (coord.type === "Feature" && coord.geometry !== null && coord.geometry.type === "Point") {
  7225. return coord.geometry.coordinates;
  7226. }
  7227. if (coord.type === "Point") {
  7228. return coord.coordinates;
  7229. }
  7230. }
  7231. if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {
  7232. return coord;
  7233. }
  7234. throw new Error("coord must be GeoJSON Point or an Array of numbers");
  7235. }
  7236. exports.getCoord = getCoord;
  7237. /**
  7238. * Unwrap coordinates from a Feature, Geometry Object or an Array
  7239. *
  7240. * @name getCoords
  7241. * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array
  7242. * @returns {Array<any>} coordinates
  7243. * @example
  7244. * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);
  7245. *
  7246. * var coords = turf.getCoords(poly);
  7247. * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]
  7248. */
  7249. function getCoords(coords) {
  7250. if (Array.isArray(coords)) {
  7251. return coords;
  7252. }
  7253. // Feature
  7254. if (coords.type === "Feature") {
  7255. if (coords.geometry !== null) {
  7256. return coords.geometry.coordinates;
  7257. }
  7258. }
  7259. else {
  7260. // Geometry
  7261. if (coords.coordinates) {
  7262. return coords.coordinates;
  7263. }
  7264. }
  7265. throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array");
  7266. }
  7267. exports.getCoords = getCoords;
  7268. /**
  7269. * Checks if coordinates contains a number
  7270. *
  7271. * @name containsNumber
  7272. * @param {Array<any>} coordinates GeoJSON Coordinates
  7273. * @returns {boolean} true if Array contains a number
  7274. */
  7275. function containsNumber(coordinates) {
  7276. if (coordinates.length > 1 && helpers_1.isNumber(coordinates[0]) && helpers_1.isNumber(coordinates[1])) {
  7277. return true;
  7278. }
  7279. if (Array.isArray(coordinates[0]) && coordinates[0].length) {
  7280. return containsNumber(coordinates[0]);
  7281. }
  7282. throw new Error("coordinates must only contain numbers");
  7283. }
  7284. exports.containsNumber = containsNumber;
  7285. /**
  7286. * Enforce expectations about types of GeoJSON objects for Turf.
  7287. *
  7288. * @name geojsonType
  7289. * @param {GeoJSON} value any GeoJSON object
  7290. * @param {string} type expected GeoJSON type
  7291. * @param {string} name name of calling function
  7292. * @throws {Error} if value is not the expected type.
  7293. */
  7294. function geojsonType(value, type, name) {
  7295. if (!type || !name) {
  7296. throw new Error("type and name required");
  7297. }
  7298. if (!value || value.type !== type) {
  7299. throw new Error("Invalid input to " + name + ": must be a " + type + ", given " + value.type);
  7300. }
  7301. }
  7302. exports.geojsonType = geojsonType;
  7303. /**
  7304. * Enforce expectations about types of {@link Feature} inputs for Turf.
  7305. * Internally this uses {@link geojsonType} to judge geometry types.
  7306. *
  7307. * @name featureOf
  7308. * @param {Feature} feature a feature with an expected geometry type
  7309. * @param {string} type expected GeoJSON type
  7310. * @param {string} name name of calling function
  7311. * @throws {Error} error if value is not the expected type.
  7312. */
  7313. function featureOf(feature, type, name) {
  7314. if (!feature) {
  7315. throw new Error("No feature passed");
  7316. }
  7317. if (!name) {
  7318. throw new Error(".featureOf() requires a name");
  7319. }
  7320. if (!feature || feature.type !== "Feature" || !feature.geometry) {
  7321. throw new Error("Invalid input to " + name + ", Feature with geometry required");
  7322. }
  7323. if (!feature.geometry || feature.geometry.type !== type) {
  7324. throw new Error("Invalid input to " + name + ": must be a " + type + ", given " + feature.geometry.type);
  7325. }
  7326. }
  7327. exports.featureOf = featureOf;
  7328. /**
  7329. * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.
  7330. * Internally this uses {@link geojsonType} to judge geometry types.
  7331. *
  7332. * @name collectionOf
  7333. * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged
  7334. * @param {string} type expected GeoJSON type
  7335. * @param {string} name name of calling function
  7336. * @throws {Error} if value is not the expected type.
  7337. */
  7338. function collectionOf(featureCollection, type, name) {
  7339. if (!featureCollection) {
  7340. throw new Error("No featureCollection passed");
  7341. }
  7342. if (!name) {
  7343. throw new Error(".collectionOf() requires a name");
  7344. }
  7345. if (!featureCollection || featureCollection.type !== "FeatureCollection") {
  7346. throw new Error("Invalid input to " + name + ", FeatureCollection required");
  7347. }
  7348. for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {
  7349. var feature = _a[_i];
  7350. if (!feature || feature.type !== "Feature" || !feature.geometry) {
  7351. throw new Error("Invalid input to " + name + ", Feature with geometry required");
  7352. }
  7353. if (!feature.geometry || feature.geometry.type !== type) {
  7354. throw new Error("Invalid input to " + name + ": must be a " + type + ", given " + feature.geometry.type);
  7355. }
  7356. }
  7357. }
  7358. exports.collectionOf = collectionOf;
  7359. /**
  7360. * Get Geometry from Feature or Geometry Object
  7361. *
  7362. * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object
  7363. * @returns {Geometry|null} GeoJSON Geometry Object
  7364. * @throws {Error} if geojson is not a Feature or Geometry Object
  7365. * @example
  7366. * var point = {
  7367. * "type": "Feature",
  7368. * "properties": {},
  7369. * "geometry": {
  7370. * "type": "Point",
  7371. * "coordinates": [110, 40]
  7372. * }
  7373. * }
  7374. * var geom = turf.getGeom(point)
  7375. * //={"type": "Point", "coordinates": [110, 40]}
  7376. */
  7377. function getGeom(geojson) {
  7378. if (geojson.type === "Feature") {
  7379. return geojson.geometry;
  7380. }
  7381. return geojson;
  7382. }
  7383. exports.getGeom = getGeom;
  7384. /**
  7385. * Get GeoJSON object's type, Geometry type is prioritize.
  7386. *
  7387. * @param {GeoJSON} geojson GeoJSON object
  7388. * @param {string} [name="geojson"] name of the variable to display in error message
  7389. * @returns {string} GeoJSON type
  7390. * @example
  7391. * var point = {
  7392. * "type": "Feature",
  7393. * "properties": {},
  7394. * "geometry": {
  7395. * "type": "Point",
  7396. * "coordinates": [110, 40]
  7397. * }
  7398. * }
  7399. * var geom = turf.getType(point)
  7400. * //="Point"
  7401. */
  7402. function getType(geojson, name) {
  7403. if (geojson.type === "FeatureCollection") {
  7404. return "FeatureCollection";
  7405. }
  7406. if (geojson.type === "GeometryCollection") {
  7407. return "GeometryCollection";
  7408. }
  7409. if (geojson.type === "Feature" && geojson.geometry !== null) {
  7410. return geojson.geometry.type;
  7411. }
  7412. return geojson.type;
  7413. }
  7414. exports.getType = getType;
  7415. /***/ }),
  7416. /***/ "1498":
  7417. /***/ (function(module, exports, __webpack_require__) {
  7418. "use strict";
  7419. var _interopRequireDefault = __webpack_require__("8e6d");
  7420. Object.defineProperty(exports, "__esModule", {
  7421. value: true
  7422. });
  7423. exports.default = void 0;
  7424. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  7425. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  7426. var _RasterTileLayerViewModel = _interopRequireDefault(__webpack_require__("d094"));
  7427. var _default = {
  7428. name: 'SmRasterTileLayer',
  7429. mixins: [_mapGetter.default, _layer.default],
  7430. props: {
  7431. tileSize: {
  7432. type: Number
  7433. },
  7434. mapUrl: {
  7435. type: String
  7436. },
  7437. tiles: {
  7438. type: Array
  7439. },
  7440. bounds: {
  7441. type: Array
  7442. },
  7443. attribution: {
  7444. type: String
  7445. },
  7446. scheme: {
  7447. type: String,
  7448. default: 'xyz',
  7449. validator: function validator(scheme) {
  7450. return ['xyz', 'tms'].indexOf(scheme) !== -1;
  7451. }
  7452. }
  7453. },
  7454. watch: {
  7455. tiles: function tiles(val) {
  7456. this.viewModel && this.viewModel.setTiles(val);
  7457. }
  7458. },
  7459. created: function created() {
  7460. this.viewModel = new _RasterTileLayerViewModel.default(this.$props);
  7461. },
  7462. render: function render() {}
  7463. };
  7464. exports.default = _default;
  7465. /***/ }),
  7466. /***/ "14f6":
  7467. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7468. "use strict";
  7469. __webpack_require__.r(__webpack_exports__);
  7470. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoPlayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8537");
  7471. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoPlayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoPlayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__);
  7472. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoPlayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoPlayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  7473. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoPlayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default.a);
  7474. /***/ }),
  7475. /***/ "1587":
  7476. /***/ (function(module, exports, __webpack_require__) {
  7477. "use strict";
  7478. var _interopRequireDefault = __webpack_require__("8e6d");
  7479. Object.defineProperty(exports, "__esModule", {
  7480. value: true
  7481. });
  7482. exports.default = void 0;
  7483. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  7484. var _util = __webpack_require__("1448");
  7485. //
  7486. //
  7487. //
  7488. //
  7489. //
  7490. //
  7491. //
  7492. //
  7493. //
  7494. //
  7495. //
  7496. //
  7497. //
  7498. var _default = {
  7499. name: 'SmImage',
  7500. mixins: [_theme.default],
  7501. props: {
  7502. src: {
  7503. type: String
  7504. },
  7505. repeat: {
  7506. type: String,
  7507. default: 'center'
  7508. },
  7509. href: {
  7510. type: String,
  7511. default: ''
  7512. },
  7513. target: {
  7514. type: String,
  7515. default: '_self'
  7516. }
  7517. },
  7518. data: function data() {
  7519. return {
  7520. repeatOption: {
  7521. center: {
  7522. backgroundRepeat: 'no-repeat',
  7523. backgroundPosition: 'center',
  7524. backgroundSize: 'contain'
  7525. },
  7526. noRepeat: {
  7527. backgroundSize: '100% 100%',
  7528. backgroundRepeat: 'no-repeat'
  7529. },
  7530. repeatX: {
  7531. backgroundRepeat: 'repeat-x',
  7532. backgroundSize: 'auto 100%'
  7533. },
  7534. repeatY: {
  7535. backgroundRepeat: 'repeat-Y',
  7536. backgroundSize: '100% auto'
  7537. },
  7538. repeatXY: {
  7539. backgroundRepeat: 'repeat',
  7540. backgroundSize: 'auto'
  7541. }
  7542. }
  7543. };
  7544. },
  7545. computed: {
  7546. repeatStyle: function repeatStyle() {
  7547. return this.repeatOption[this.repeat];
  7548. },
  7549. imgUrl: function imgUrl() {
  7550. return {
  7551. backgroundImage: "url(".concat(this.src, ")")
  7552. };
  7553. },
  7554. realHref: function realHref() {
  7555. var href = this.href.replace(/ /g, '');
  7556. if (href && !(0, _util.parseUrl)(href)) {
  7557. return "http://".concat(href);
  7558. }
  7559. return href;
  7560. }
  7561. }
  7562. };
  7563. exports.default = _default;
  7564. /***/ }),
  7565. /***/ "1635":
  7566. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7567. "use strict";
  7568. __webpack_require__.r(__webpack_exports__);
  7569. /* harmony import */ var _TextList_vue_vue_type_template_id_73b23a1f___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("035a");
  7570. /* harmony import */ var _TextList_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("1a6b");
  7571. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _TextList_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _TextList_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  7572. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  7573. /* normalize component */
  7574. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  7575. _TextList_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__["default"],
  7576. _TextList_vue_vue_type_template_id_73b23a1f___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  7577. _TextList_vue_vue_type_template_id_73b23a1f___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  7578. false,
  7579. null,
  7580. null,
  7581. null
  7582. )
  7583. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  7584. /***/ }),
  7585. /***/ "1659":
  7586. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7587. "use strict";
  7588. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/web-map/WebMap.vue?vue&type=template&id=6f80feba&
  7589. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-web-map",style:([{'background': _vm.background}]),attrs:{"id":_vm.target}},[_vm._t("default"),_vm._v(" "),_vm._l((_vm.controlComponents),function(controlProps,controlName){return [_c(controlName,_vm._b({key:controlName,tag:"component"},'component',controlProps,false))]}),_vm._v(" "),(_vm.spinning)?_c('a-spin',{attrs:{"size":"large","tip":_vm.$t('webmap.loadingTip'),"spinning":_vm.spinning}}):_vm._e()],2)}
  7590. var staticRenderFns = []
  7591. // CONCATENATED MODULE: ./src/mapboxgl/web-map/WebMap.vue?vue&type=template&id=6f80feba&
  7592. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  7593. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  7594. /***/ }),
  7595. /***/ "16ed":
  7596. /***/ (function(module, exports, __webpack_require__) {
  7597. var _typeof = __webpack_require__("7ae5");
  7598. function _getRequireWildcardCache() {
  7599. if (typeof WeakMap !== "function") return null;
  7600. var cache = new WeakMap();
  7601. _getRequireWildcardCache = function _getRequireWildcardCache() {
  7602. return cache;
  7603. };
  7604. return cache;
  7605. }
  7606. function _interopRequireWildcard(obj) {
  7607. if (obj && obj.__esModule) {
  7608. return obj;
  7609. }
  7610. if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
  7611. return {
  7612. "default": obj
  7613. };
  7614. }
  7615. var cache = _getRequireWildcardCache();
  7616. if (cache && cache.has(obj)) {
  7617. return cache.get(obj);
  7618. }
  7619. var newObj = {};
  7620. var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
  7621. for (var key in obj) {
  7622. if (Object.prototype.hasOwnProperty.call(obj, key)) {
  7623. var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
  7624. if (desc && (desc.get || desc.set)) {
  7625. Object.defineProperty(newObj, key, desc);
  7626. } else {
  7627. newObj[key] = obj[key];
  7628. }
  7629. }
  7630. }
  7631. newObj["default"] = obj;
  7632. if (cache) {
  7633. cache.set(obj, newObj);
  7634. }
  7635. return newObj;
  7636. }
  7637. module.exports = _interopRequireWildcard;
  7638. /***/ }),
  7639. /***/ "1753":
  7640. /***/ (function(module, exports, __webpack_require__) {
  7641. "use strict";
  7642. /**
  7643. * Update an Error with the specified config, error code, and response.
  7644. *
  7645. * @param {Error} error The error to update.
  7646. * @param {Object} config The config.
  7647. * @param {string} [code] The error code (for example, 'ECONNABORTED').
  7648. * @param {Object} [request] The request.
  7649. * @param {Object} [response] The response.
  7650. * @returns {Error} The error.
  7651. */
  7652. module.exports = function enhanceError(error, config, code, request, response) {
  7653. error.config = config;
  7654. if (code) {
  7655. error.code = code;
  7656. }
  7657. error.request = request;
  7658. error.response = response;
  7659. error.isAxiosError = true;
  7660. error.toJSON = function() {
  7661. return {
  7662. // Standard
  7663. message: this.message,
  7664. name: this.name,
  7665. // Microsoft
  7666. description: this.description,
  7667. number: this.number,
  7668. // Mozilla
  7669. fileName: this.fileName,
  7670. lineNumber: this.lineNumber,
  7671. columnNumber: this.columnNumber,
  7672. stack: this.stack,
  7673. // Axios
  7674. config: this.config,
  7675. code: this.code
  7676. };
  7677. };
  7678. return error;
  7679. };
  7680. /***/ }),
  7681. /***/ "183a":
  7682. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7683. "use strict";
  7684. __webpack_require__.r(__webpack_exports__);
  7685. /* harmony import */ var _AreaResult_vue_vue_type_template_id_cea2ca5a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("9cc6");
  7686. /* harmony import */ var _AreaResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("3297");
  7687. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _AreaResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _AreaResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  7688. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  7689. /* normalize component */
  7690. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  7691. _AreaResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  7692. _AreaResult_vue_vue_type_template_id_cea2ca5a___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  7693. _AreaResult_vue_vue_type_template_id_cea2ca5a___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  7694. false,
  7695. null,
  7696. null,
  7697. null
  7698. )
  7699. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  7700. /***/ }),
  7701. /***/ "183d":
  7702. /***/ (function(module, exports, __webpack_require__) {
  7703. "use strict";
  7704. var _interopRequireDefault = __webpack_require__("8e6d");
  7705. Object.defineProperty(exports, "__esModule", {
  7706. value: true
  7707. });
  7708. exports.default = void 0;
  7709. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  7710. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  7711. var _UniqueThemeLayerViewModel = _interopRequireDefault(__webpack_require__("0601"));
  7712. var _default2 = {
  7713. name: 'SmUniqueThemeLayer',
  7714. mixins: [_mapGetter.default, _layer.default],
  7715. props: {
  7716. layerName: {
  7717. type: String
  7718. },
  7719. options: {
  7720. type: Object,
  7721. default: function _default() {
  7722. return {};
  7723. }
  7724. },
  7725. data: {
  7726. type: Array,
  7727. required: true
  7728. }
  7729. },
  7730. watch: {
  7731. options: {
  7732. handler: function handler(val) {
  7733. this.viewModel && this.viewModel.setOptions(val);
  7734. },
  7735. deep: true
  7736. },
  7737. data: {
  7738. handler: function handler(val) {
  7739. this.viewModel && this.viewModel.setData(val);
  7740. },
  7741. deep: true
  7742. }
  7743. },
  7744. created: function created() {
  7745. this.viewModel = new _UniqueThemeLayerViewModel.default(this.$props);
  7746. },
  7747. loaded: function loaded() {
  7748. this.$emit('load', this.viewModel.themeLayer, this.map);
  7749. },
  7750. render: function render() {}
  7751. };
  7752. exports.default = _default2;
  7753. /***/ }),
  7754. /***/ "18ca":
  7755. /***/ (function(module, exports, __webpack_require__) {
  7756. var freeGlobal = __webpack_require__("5de5");
  7757. /** Detect free variable `self`. */
  7758. var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
  7759. /** Used as a reference to the global object. */
  7760. var root = freeGlobal || freeSelf || Function('return this')();
  7761. module.exports = root;
  7762. /***/ }),
  7763. /***/ "18e4":
  7764. /***/ (function(module, exports, __webpack_require__) {
  7765. module.exports = {
  7766. ResizeSensor: __webpack_require__("76b8"),
  7767. ElementQueries: __webpack_require__("11f8")
  7768. };
  7769. /***/ }),
  7770. /***/ "1942":
  7771. /***/ (function(module, exports, __webpack_require__) {
  7772. "use strict";
  7773. var createError = __webpack_require__("ff2e");
  7774. /**
  7775. * Resolve or reject a Promise based on response status.
  7776. *
  7777. * @param {Function} resolve A function that resolves the promise.
  7778. * @param {Function} reject A function that rejects the promise.
  7779. * @param {object} response The response.
  7780. */
  7781. module.exports = function settle(resolve, reject, response) {
  7782. var validateStatus = response.config.validateStatus;
  7783. if (!validateStatus || validateStatus(response.status)) {
  7784. resolve(response);
  7785. } else {
  7786. reject(createError(
  7787. 'Request failed with status code ' + response.status,
  7788. response.config,
  7789. null,
  7790. response.request,
  7791. response
  7792. ));
  7793. }
  7794. };
  7795. /***/ }),
  7796. /***/ "1969":
  7797. /***/ (function(module, exports, __webpack_require__) {
  7798. // extracted by mini-css-extract-plugin
  7799. /***/ }),
  7800. /***/ "19e1":
  7801. /***/ (function(module, exports) {
  7802. function _classCallCheck(instance, Constructor) {
  7803. if (!(instance instanceof Constructor)) {
  7804. throw new TypeError("Cannot call a class as a function");
  7805. }
  7806. }
  7807. module.exports = _classCallCheck;
  7808. /***/ }),
  7809. /***/ "1a33":
  7810. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7811. "use strict";
  7812. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/tdt/results/Pagination.vue?vue&type=template&id=401a7eac&
  7813. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showComponent)?_c('div',{staticClass:"sm-component-pagination pagination-container"},[_c('ul',{attrs:{"id":"paginationUl"},on:{"click":_vm.handleClick}},[_c('li',{attrs:{"type":"home"}},[_vm._v(_vm._s(_vm.$t('tdtResults.homePage')))]),_vm._v(" "),(_vm.realPage !== 1)?_c('li',{attrs:{"type":"prevPage"}},[_vm._v(_vm._s(_vm.$t('tdtResults.prevPage')))]):_vm._e(),_vm._v(" "),_vm._l((_vm.pageList),function(page,index){return _c('li',{key:page,style:(index === _vm.activePage && ("background: " + (_vm.getColor(0)) + "; border-color: " + (_vm.getColor(0)) + "; color: " + _vm.getTextColor)),attrs:{"type":_vm.attrType(index)}},[_vm._v(_vm._s(page))])}),_vm._v(" "),(_vm.realPage !== _vm.totalPage)?_c('li',{attrs:{"type":"nextPage"}},[_vm._v(_vm._s(_vm.$t('tdtResults.nextPage')))]):_vm._e()],2)]):_vm._e()}
  7814. var staticRenderFns = []
  7815. // CONCATENATED MODULE: ./src/mapboxgl/tdt/results/Pagination.vue?vue&type=template&id=401a7eac&
  7816. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  7817. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  7818. /***/ }),
  7819. /***/ "1a6b":
  7820. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  7821. "use strict";
  7822. __webpack_require__.r(__webpack_exports__);
  7823. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_TextList_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("5e7b");
  7824. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_TextList_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_TextList_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__);
  7825. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_TextList_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_TextList_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  7826. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_TextList_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default.a);
  7827. /***/ }),
  7828. /***/ "1a91":
  7829. /***/ (function(module, exports, __webpack_require__) {
  7830. "use strict";
  7831. var _interopRequireDefault = __webpack_require__("8e6d");
  7832. Object.defineProperty(exports, "__esModule", {
  7833. value: true
  7834. });
  7835. exports.registerProjection = registerProjection;
  7836. exports.getProjection = getProjection;
  7837. exports.toEpsgCode = toEpsgCode;
  7838. exports.default = void 0;
  7839. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  7840. var _util = __webpack_require__("1448");
  7841. var EpsgDefine = new _vue.default({
  7842. epsgCodes: {
  7843. 'EPSG:3857': 'PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",EAST],AXIS["Y",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]',
  7844. 'EPSG:4326': 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],AXIS["Northing", "NORTH"],AXIS["Easting", "EAST"],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]',
  7845. 'EPSG:4490': 'GEOGCS["China Geodetic Coordinate System 2000", DATUM["China 2000", SPHEROID["CGCS2000", 6378137.0, 298.257222101, AUTHORITY["EPSG","1024"]], AUTHORITY["EPSG","1043"]], PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], UNIT["degree", 0.017453292519943295], AXIS["Geodetic latitude", NORTH], AXIS["Geodetic longitude", EAST], AUTHORITY["EPSG","4490"]]'
  7846. },
  7847. registerProjection: function registerProjection(epsgKey, epsgValue) {
  7848. if ((0, _util.getDataType)(arguments[0]) === '[object Object]' && arguments.length === 1) {
  7849. this.epsgCodes = Object.assign({}, this.epsgCodes, arguments[0]);
  7850. } else if (epsgKey && epsgValue) {
  7851. this.epsgCodes[epsgKey] = epsgValue;
  7852. }
  7853. },
  7854. getProjection: function getProjection(epsgKey) {
  7855. return this.epsgCodes[epsgKey];
  7856. },
  7857. getAllProjections: function getAllProjections() {
  7858. return this.epsgCodes;
  7859. }
  7860. });
  7861. var _default = EpsgDefine;
  7862. exports.default = _default;
  7863. function registerProjection(epsgKey, epsgValue) {
  7864. return EpsgDefine.$options.registerProjection(epsgKey, epsgValue);
  7865. }
  7866. function getProjection(epsgKey) {
  7867. return EpsgDefine.$options.getProjection(epsgKey);
  7868. }
  7869. function toEpsgCode(wkt) {
  7870. if (typeof wkt !== 'string') {
  7871. return '';
  7872. } else if (wkt.indexOf('EPSG') === 0) {
  7873. return wkt;
  7874. } else {
  7875. var lastAuthority = wkt.lastIndexOf('AUTHORITY') + 10;
  7876. var endString = wkt.indexOf(']', lastAuthority) - 1;
  7877. if (lastAuthority > 0 && endString > 0) {
  7878. return "EPSG:".concat(wkt.substring(lastAuthority, endString).split(',')[1].substr(1));
  7879. } else {
  7880. return '';
  7881. }
  7882. }
  7883. }
  7884. /***/ }),
  7885. /***/ "1a9e":
  7886. /***/ (function(module, exports, __webpack_require__) {
  7887. "use strict";
  7888. var _interopRequireDefault = __webpack_require__("8e6d");
  7889. Object.defineProperty(exports, "__esModule", {
  7890. value: true
  7891. });
  7892. exports.Util = void 0;
  7893. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  7894. /* Copyright© 2000 - 2020 SuperMap Software Co.Ltd. All rights reserved.
  7895. * This program are made available under the terms of the Apache License, Version 2.0
  7896. * which accompanies this distribution and is available at http://www.apache.org/licenses/LICENSE-2.0.html. */
  7897. var Util = {};
  7898. /**
  7899. * @name Util
  7900. * @namespace
  7901. * @category BaseTypes Util
  7902. * @description common 工具类。
  7903. */
  7904. exports.Util = Util;
  7905. Util.extend = function (destination, source) {
  7906. destination = destination || {};
  7907. if (source) {
  7908. for (var property in source) {
  7909. var value = source[property];
  7910. if (value !== undefined) {
  7911. destination[property] = value;
  7912. }
  7913. }
  7914. var sourceIsEvt = typeof window.Event === 'function' && source instanceof window.Event;
  7915. if (!sourceIsEvt && source.hasOwnProperty && source.hasOwnProperty('toString')) {
  7916. destination.toString = source.toString;
  7917. }
  7918. }
  7919. return destination;
  7920. };
  7921. /**
  7922. * @description 对象拷贝。
  7923. * @param {Object} [des] - 目标对象。
  7924. * @param {Object} soc - 源对象。
  7925. */
  7926. Util.copy = function (des, soc) {
  7927. des = des || {};
  7928. var v;
  7929. if (soc) {
  7930. for (var p in des) {
  7931. v = soc[p];
  7932. if (typeof v !== 'undefined') {
  7933. des[p] = v;
  7934. }
  7935. }
  7936. }
  7937. };
  7938. /**
  7939. * @description 销毁对象,将其属性置空。
  7940. * @param {Object} [obj] - 目标对象。
  7941. */
  7942. Util.reset = function (obj) {
  7943. obj = obj || {};
  7944. for (var p in obj) {
  7945. if (obj.hasOwnProperty(p)) {
  7946. if ((0, _typeof2.default)(obj[p]) === 'object' && obj[p] instanceof Array) {
  7947. for (var i in obj[p]) {
  7948. if (obj[p][i].destroy) {
  7949. obj[p][i].destroy();
  7950. }
  7951. }
  7952. obj[p].length = 0;
  7953. } else if ((0, _typeof2.default)(obj[p]) === 'object' && obj[p] instanceof Object) {
  7954. if (obj[p].destroy) {
  7955. obj[p].destroy();
  7956. }
  7957. }
  7958. obj[p] = null;
  7959. }
  7960. }
  7961. };
  7962. /**
  7963. * @description 获取 HTML 元素数组。
  7964. * @returns {Array.<HTMLElement>} HTML 元素数组。
  7965. */
  7966. Util.getElement = function () {
  7967. var elements = [];
  7968. for (var i = 0, len = arguments.length; i < len; i++) {
  7969. var element = arguments[i];
  7970. if (typeof element === 'string') {
  7971. element = document.getElementById(element);
  7972. }
  7973. if (arguments.length === 1) {
  7974. return element;
  7975. }
  7976. elements.push(element);
  7977. }
  7978. return elements;
  7979. };
  7980. /**
  7981. * @description instance of 的跨浏览器实现。
  7982. * @param {Object} o - 对象。
  7983. * @returns {boolean} 是否是页面元素。
  7984. */
  7985. Util.isElement = function (o) {
  7986. return !!(o && o.nodeType === 1);
  7987. };
  7988. /**
  7989. * @description 判断一个对象是否是数组。
  7990. * @param {Object} a - 对象。
  7991. * @returns {boolean} 是否是数组。
  7992. */
  7993. Util.isArray = function (a) {
  7994. return Object.prototype.toString.call(a) === '[object Array]';
  7995. };
  7996. /**
  7997. * @description 从数组中删除某一项。
  7998. * @param {Array} array - 数组。
  7999. * @param {Object} item - 数组中要删除的一项。
  8000. * @returns {Array} 执行删除操作后的数组。
  8001. */
  8002. Util.removeItem = function (array, item) {
  8003. for (var i = array.length - 1; i >= 0; i--) {
  8004. if (array[i] === item) {
  8005. array.splice(i, 1);
  8006. }
  8007. }
  8008. return array;
  8009. };
  8010. /**
  8011. * @description 获取某对象再数组中的索引值。
  8012. * @param {Array} array - 数组。
  8013. * @param {Object} obj - 对象。
  8014. * @returns {number} 某对象再数组中的索引值。
  8015. */
  8016. Util.indexOf = function (array, obj) {
  8017. if (array == null) {
  8018. return -1;
  8019. } else {
  8020. // use the build-in function if available.
  8021. if (typeof array.indexOf === 'function') {
  8022. return array.indexOf(obj);
  8023. } else {
  8024. for (var i = 0, len = array.length; i < len; i++) {
  8025. if (array[i] === obj) {
  8026. return i;
  8027. }
  8028. }
  8029. return -1;
  8030. }
  8031. }
  8032. };
  8033. Util.getElement = function () {
  8034. var elements = [];
  8035. for (var i = 0, len = arguments.length; i < len; i++) {
  8036. var element = arguments[i];
  8037. if (typeof element === 'string') {
  8038. element = document.getElementById(element);
  8039. }
  8040. if (arguments.length === 1) {
  8041. return element;
  8042. }
  8043. elements.push(element);
  8044. }
  8045. return elements;
  8046. };
  8047. Util.lastSeqID = 0;
  8048. Util.createUniqueID = function (prefix) {
  8049. if (prefix == null) {
  8050. prefix = 'id_';
  8051. }
  8052. Util.lastSeqID += 1;
  8053. return prefix + Util.lastSeqID;
  8054. };
  8055. /***/ }),
  8056. /***/ "1ab5":
  8057. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  8058. "use strict";
  8059. __webpack_require__.r(__webpack_exports__);
  8060. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Zoom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("e8a8");
  8061. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Zoom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Zoom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  8062. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Zoom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Zoom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  8063. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Zoom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  8064. /***/ }),
  8065. /***/ "1b3a":
  8066. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  8067. "use strict";
  8068. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/search/Search.vue?vue&type=template&id=7b86e414&
  8069. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-search",style:(_vm.getTextColorStyle),attrs:{"id":"sm-component-search"}},[(_vm.showIcon && _vm.mode === 'control')?_c('div',{staticClass:"sm-component-search__toggle-icon",style:([{'--icon-color--hover': _vm.colorGroupsData[0]}, _vm.getBackgroundStyle]),on:{"click":function($event){_vm.showSearch = !_vm.showSearch; _vm.showIcon = !_vm.showIcon}}},[_c('a-icon',{attrs:{"type":"search"}})],1):_vm._e(),_vm._v(" "),_c('transition',{attrs:{"name":"sm-component-zoom-in"},on:{"after-leave":function($event){_vm.showIcon = !_vm.showIcon}}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.showSearch || _vm.mode === 'toolBar'),expression:"showSearch || mode === 'toolBar'"}],staticClass:"sm-component-search__content",style:([{'transform-origin': _vm.position.includes('left') ? 'top left' : 'top right'}, _vm.getBackgroundStyle])},[_c('div',{staticClass:"sm-component-search__input"},[(_vm.mode === 'control')?_c('div',{staticClass:"sm-component-search__arrow-icon",style:({ float: _vm.position.includes('left') ? 'right' : 'left'}),on:{"click":function($event){_vm.showSearch = !_vm.showSearch}}},[_c('a-icon',{attrs:{"type":_vm.position.includes('left') ? 'double-left' : 'double-right'}})],1):_vm._e(),_vm._v(" "),_c('div',{class:['sm-component-search__search-icon', { 'right': _vm.position.includes('right') }],style:([_vm.getBackgroundStyle, _vm.getColorStyle(0)]),on:{"click":_vm.searchButtonClicked}},[_c('a-icon',{attrs:{"type":_vm.prefixType}})],1),_vm._v(" "),_c('a-input',{class:['sm-component-search__a-input', { 'toolBar-input': _vm.mode === 'toolBar' }],style:([_vm.getBackgroundStyle]),attrs:{"placeholder":_vm.$t('search.inputPlaceHolder')},on:{"input":_vm.searchInput,"compositionstart":function($event){_vm.isInputing = true},"compositionend":function($event){_vm.isInputing = false},"pressEnter":_vm.searchButtonClicked,"focus":function($event){_vm.isActive = !_vm.isActive},"blur":function($event){_vm.isActive = !_vm.isActive},"keyup":_vm.changeResultHover},model:{value:(_vm.searchKey),callback:function ($$v) {_vm.searchKey=$$v},expression:"searchKey"}},[_c('a-icon',{directives:[{name:"show",rawName:"v-show",value:(_vm.isActive),expression:"isActive"}],style:(_vm.getColorStyle(0)),attrs:{"slot":"suffix","type":"close-circle"},on:{"mousedown":_vm.inputValueCleared},slot:"suffix"})],1)],1),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.resultSuggestions),expression:"resultSuggestions"}],staticClass:"sm-component-search__result",style:([_vm.getBackgroundStyle])},_vm._l((_vm.searchResult),function(result,index){return _c('div',{key:index,staticClass:"sm-component-search__panel"},[(result.source && _vm.showTitle && result.result.length)?_c('span',{staticClass:"sm-component-search__panel-header",style:(_vm.getColorStyle(0))},[_vm._v(_vm._s(result.source))]):_vm._e(),_vm._v(" "),(result.result)?_c('div',{staticClass:"sm-component-search__panel-body"},[_c('ul',{class:{'noMarginBottom': !_vm.showTitle}},_vm._l((result.result),function(item,i){return _c('li',{key:i,class:{'active': _vm.keyupHoverInfo.groupIndex === index && _vm.keyupHoverInfo.hoverIndex === i },attrs:{"title":item.filterVal || item.name || item.address},on:{"click":function($event){return _vm.searchResultListClicked(item, $event)},"mouseenter":_vm.changeChosenResultStyle,"mouseleave":_vm.resetChosenResultStyle}},[_vm._v(_vm._s(item.filterVal || item.name || item.address))])}),0)]):_vm._e()])}),0)])]),_vm._v(" "),_c('TablePopup',_vm._b({directives:[{name:"show",rawName:"v-show",value:(false),expression:"false"}],ref:"searchTablePopup",attrs:{"text-color":_vm.textColor,"background":_vm.background}},'TablePopup',_vm.tablePopupProps,false))],1)}
  8070. var staticRenderFns = []
  8071. // CONCATENATED MODULE: ./src/mapboxgl/search/Search.vue?vue&type=template&id=7b86e414&
  8072. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  8073. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  8074. /***/ }),
  8075. /***/ "1c98":
  8076. /***/ (function(module, exports) {
  8077. module.exports = __WEBPACK_EXTERNAL_MODULE__1c98__;
  8078. /***/ }),
  8079. /***/ "1d96":
  8080. /***/ (function(module, exports) {
  8081. function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  8082. try {
  8083. var info = gen[key](arg);
  8084. var value = info.value;
  8085. } catch (error) {
  8086. reject(error);
  8087. return;
  8088. }
  8089. if (info.done) {
  8090. resolve(value);
  8091. } else {
  8092. Promise.resolve(value).then(_next, _throw);
  8093. }
  8094. }
  8095. function _asyncToGenerator(fn) {
  8096. return function () {
  8097. var self = this,
  8098. args = arguments;
  8099. return new Promise(function (resolve, reject) {
  8100. var gen = fn.apply(self, args);
  8101. function _next(value) {
  8102. asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
  8103. }
  8104. function _throw(err) {
  8105. asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
  8106. }
  8107. _next(undefined);
  8108. });
  8109. };
  8110. }
  8111. module.exports = _asyncToGenerator;
  8112. /***/ }),
  8113. /***/ "1e44":
  8114. /***/ (function(module, exports) {
  8115. function _nonIterableSpread() {
  8116. throw new TypeError("Invalid attempt to spread non-iterable instance");
  8117. }
  8118. module.exports = _nonIterableSpread;
  8119. /***/ }),
  8120. /***/ 2:
  8121. /***/ (function(module, exports) {
  8122. /* (ignored) */
  8123. /***/ }),
  8124. /***/ "200b":
  8125. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  8126. "use strict";
  8127. __webpack_require__.r(__webpack_exports__);
  8128. /* harmony import */ var _WebMap_vue_vue_type_template_id_6f80feba___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("1659");
  8129. /* harmony import */ var _WebMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("7b98");
  8130. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _WebMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _WebMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  8131. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  8132. /* normalize component */
  8133. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  8134. _WebMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__["default"],
  8135. _WebMap_vue_vue_type_template_id_6f80feba___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  8136. _WebMap_vue_vue_type_template_id_6f80feba___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  8137. false,
  8138. null,
  8139. null,
  8140. null
  8141. )
  8142. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  8143. /***/ }),
  8144. /***/ "214f":
  8145. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  8146. "use strict";
  8147. __webpack_require__.r(__webpack_exports__);
  8148. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_FireLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("7690");
  8149. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_FireLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_FireLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__);
  8150. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_FireLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_FireLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  8151. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_FireLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default.a);
  8152. /***/ }),
  8153. /***/ "2166":
  8154. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  8155. "use strict";
  8156. __webpack_require__.r(__webpack_exports__);
  8157. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_Compare_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("9b6b");
  8158. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_Compare_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_Compare_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__);
  8159. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_Compare_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_Compare_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  8160. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_Compare_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default.a);
  8161. /***/ }),
  8162. /***/ "2389":
  8163. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  8164. "use strict";
  8165. __webpack_require__.r(__webpack_exports__);
  8166. /* harmony import */ var _Image_vue_vue_type_template_id_3aa6b84a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("a51f");
  8167. /* harmony import */ var _Image_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("eb1b");
  8168. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Image_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Image_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  8169. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  8170. /* normalize component */
  8171. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  8172. _Image_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  8173. _Image_vue_vue_type_template_id_3aa6b84a___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  8174. _Image_vue_vue_type_template_id_3aa6b84a___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  8175. false,
  8176. null,
  8177. null,
  8178. null
  8179. )
  8180. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  8181. /***/ }),
  8182. /***/ "238e":
  8183. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  8184. "use strict";
  8185. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/liquidfill/LiquidFill.vue?vue&type=template&id=8aedaae4&
  8186. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:"chart",staticClass:"sm-component-liquidFill",style:([_vm.background && _vm.getBackgroundStyle]),attrs:{"id":"chart"}})}
  8187. var staticRenderFns = []
  8188. // CONCATENATED MODULE: ./src/common/liquidfill/LiquidFill.vue?vue&type=template&id=8aedaae4&
  8189. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  8190. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  8191. /***/ }),
  8192. /***/ "24bf":
  8193. /***/ (function(module, exports, __webpack_require__) {
  8194. "use strict";
  8195. var _interopRequireDefault = __webpack_require__("8e6d");
  8196. Object.defineProperty(exports, "__esModule", {
  8197. value: true
  8198. });
  8199. exports.default = void 0;
  8200. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  8201. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  8202. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  8203. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  8204. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  8205. var _Marker2 = _interopRequireDefault(__webpack_require__("4361"));
  8206. var RotatingTextBorderMarker =
  8207. /*#__PURE__*/
  8208. function (_Marker) {
  8209. (0, _inherits2.default)(RotatingTextBorderMarker, _Marker);
  8210. function RotatingTextBorderMarker(features) {
  8211. var _this;
  8212. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  8213. (0, _classCallCheck2.default)(this, RotatingTextBorderMarker);
  8214. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(RotatingTextBorderMarker).call(this, features));
  8215. _this.options = options;
  8216. _this.features && _this._createMarker();
  8217. return _this;
  8218. }
  8219. (0, _createClass2.default)(RotatingTextBorderMarker, [{
  8220. key: "setMarkersWidth",
  8221. value: function setMarkersWidth(width) {
  8222. this.options.width = width;
  8223. this._setMarkerContainerProperty({
  8224. '--clip-width-1': width + width / 10 + 'px',
  8225. '--clip-width-2': width + width / 10 - 2 + 'px',
  8226. '--boder-width': width + 'px',
  8227. '--text-left-position': -width / 2 + 'px'
  8228. });
  8229. }
  8230. }, {
  8231. key: "setMarkersHeight",
  8232. value: function setMarkersHeight(height) {
  8233. this.options.height = height;
  8234. this._setMarkerContainerProperty({
  8235. '--clip-height-1': height + height / 10 + 'px',
  8236. '--clip-height-2': height + height / 10 - 2 + 'px',
  8237. '--boder-height': height + 'px'
  8238. });
  8239. }
  8240. }, {
  8241. key: "setMarkersTextField",
  8242. value: function setMarkersTextField(textField) {
  8243. if (!this.features || JSON.stringify(this.features) === '{}') {
  8244. return;
  8245. }
  8246. this.options.textField = textField;
  8247. var name = document.getElementsByClassName('sm-component-animate-marker__text');
  8248. for (var i = 0; i < name.length; i++) {
  8249. var properties = this.features.features[i] && this.features.features[i].properties;
  8250. if (properties && properties[textField]) {
  8251. name[i].innerHTML = properties[textField];
  8252. } else {
  8253. name[i].innerHTML = '';
  8254. }
  8255. }
  8256. }
  8257. }, {
  8258. key: "setMarkersTextColor",
  8259. value: function setMarkersTextColor(textColor) {
  8260. this.options.textColor = textColor;
  8261. this._setMarkerContainerProperty({
  8262. '--text-color': textColor
  8263. });
  8264. }
  8265. }, {
  8266. key: "setMarkersTextFontSize",
  8267. value: function setMarkersTextFontSize(textFontSize) {
  8268. this.options.textFontSize = textFontSize;
  8269. this._setMarkerContainerProperty({
  8270. '--text-font-size': textFontSize + 'px'
  8271. });
  8272. }
  8273. }, {
  8274. key: "setMarkersColors",
  8275. value: function setMarkersColors(colors) {
  8276. this.options.colors = colors;
  8277. if (colors && colors.length && colors.length > 0) {
  8278. this._setMarkerContainerProperty({
  8279. '--border-color': colors[0],
  8280. '--box-shadow-color': colors[1]
  8281. });
  8282. }
  8283. }
  8284. }, {
  8285. key: "_createMarker",
  8286. value: function _createMarker() {
  8287. var _this2 = this;
  8288. this.features.features.forEach(function (point) {
  8289. var markerContainer = document.createElement('div');
  8290. markerContainer.className = 'sm-component-animate-marker--text-boder';
  8291. var border = document.createElement('div');
  8292. border.className = 'sm-component-animate-marker__boder';
  8293. var keys = Object.keys(point.properties);
  8294. var name;
  8295. if (point.properties || Object.keys(point.properties).length !== 0) {
  8296. name = point.properties[_this2.options.textField] || point.properties[keys[0]];
  8297. }
  8298. var span = document.createElement('span');
  8299. span.className = 'sm-component-animate-marker__text';
  8300. span.innerHTML = name || '';
  8301. border.appendChild(span);
  8302. if (_this2.options.colors && _this2.options.colors.length && _this2.options.colors.length > 0) {
  8303. markerContainer.style.setProperty('--border-color', _this2.options.colors[0]);
  8304. markerContainer.style.setProperty('--box-shadow-color', _this2.options.colors[1]);
  8305. }
  8306. _this2.options.textColor && markerContainer.style.setProperty('--text-color', _this2.options.textColor);
  8307. _this2.options.textFontSize && markerContainer.style.setProperty('--text-font-size', _this2.options.textFontSize + 'px');
  8308. if (_this2.options.width) {
  8309. markerContainer.style.setProperty('--clip-width-1', _this2.options.width + _this2.options.width / 10 + 'px');
  8310. markerContainer.style.setProperty('--clip-width-2', _this2.options.width + _this2.options.width / 10 - 2 + 'px');
  8311. markerContainer.style.setProperty('--boder-width', _this2.options.width + 'px');
  8312. markerContainer.style.setProperty('--text-left-position', -_this2.options.width / 2 + 'px');
  8313. }
  8314. if (_this2.options.height) {
  8315. markerContainer.style.setProperty('--clip-height-1', _this2.options.height + _this2.options.width / 10 + 'px');
  8316. markerContainer.style.setProperty('--clip-height-2', _this2.options.height + _this2.options.width / 10 - 2 + 'px');
  8317. markerContainer.style.setProperty('--boder-height', _this2.options.height + 'px');
  8318. }
  8319. if ((_this2.options.width || 100) > (_this2.options.width || 200)) {
  8320. markerContainer.style.setProperty('--animation-name', 'clipMe2');
  8321. } else {
  8322. markerContainer.style.setProperty('--animation-name', 'clipMe1');
  8323. }
  8324. markerContainer.appendChild(border);
  8325. _this2.markersElement.push(markerContainer);
  8326. }, this);
  8327. }
  8328. }, {
  8329. key: "_setMarkerContainerProperty",
  8330. value: function _setMarkerContainerProperty(properties) {
  8331. var _this3 = this;
  8332. var markerContainer = document.getElementsByClassName('sm-component-animate-marker--text-boder');
  8333. var _loop = function _loop(i) {
  8334. var style = markerContainer[i].style;
  8335. Object.keys(properties).forEach(function (key) {
  8336. style.setProperty(key, properties[key]);
  8337. });
  8338. if ((_this3.options.height || 100) > (_this3.options.width || 200)) {
  8339. style.setProperty('--animation-name', 'clipMe2');
  8340. } else {
  8341. style.setProperty('--animation-name', 'clipMe1');
  8342. }
  8343. };
  8344. for (var i = 0; i < markerContainer.length; i++) {
  8345. _loop(i);
  8346. }
  8347. }
  8348. }]);
  8349. return RotatingTextBorderMarker;
  8350. }(_Marker2.default);
  8351. exports.default = RotatingTextBorderMarker;
  8352. /***/ }),
  8353. /***/ "24dd":
  8354. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  8355. "use strict";
  8356. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/web-map/control/identify/Identify.vue?vue&type=template&id=0e3cd6bc&
  8357. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"show",rawName:"v-show",value:(false),expression:"false"}],ref:"Popup",staticClass:"sm-component-identify",style:([_vm.getBackgroundStyle, _vm.getTextColorStyle])},[_c('div',{staticClass:"sm-component-identify__close"},[_vm._v("x")]),_vm._v(" "),_c('ul',{class:[
  8358. _vm.autoResize ? 'sm-component-identify__auto' : 'sm-component-identify__custom',
  8359. 'sm-component-identify__content'
  8360. ]},_vm._l((_vm.popupProps),function(value,key,index){return _c('li',{key:index,staticClass:"content"},[_c('div',{staticClass:"left ellipsis",style:(_vm.getWidthStyle.keyWidth),attrs:{"title":key}},[_vm._v(_vm._s(key))]),_vm._v(" "),_c('div',{staticClass:"right ellipsis",style:(_vm.getWidthStyle.valueWidth),attrs:{"title":value}},[_vm._v(_vm._s(value))])])}),0)])}
  8361. var staticRenderFns = []
  8362. // CONCATENATED MODULE: ./src/mapboxgl/web-map/control/identify/Identify.vue?vue&type=template&id=0e3cd6bc&
  8363. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  8364. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  8365. /***/ }),
  8366. /***/ "25a2":
  8367. /***/ (function(module, exports, __webpack_require__) {
  8368. /* WEBPACK VAR INJECTION */(function(global, module) {/**
  8369. * lodash (Custom Build) <https://lodash.com/>
  8370. * Build: `lodash modularize exports="npm" -o ./`
  8371. * Copyright jQuery Foundation and other contributors <https://jquery.org/>
  8372. * Released under MIT license <https://lodash.com/license>
  8373. * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  8374. * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  8375. */
  8376. /** Used as the size to enable large array optimizations. */
  8377. var LARGE_ARRAY_SIZE = 200;
  8378. /** Used to stand-in for `undefined` hash values. */
  8379. var HASH_UNDEFINED = '__lodash_hash_undefined__';
  8380. /** Used as references for various `Number` constants. */
  8381. var MAX_SAFE_INTEGER = 9007199254740991;
  8382. /** `Object#toString` result references. */
  8383. var argsTag = '[object Arguments]',
  8384. arrayTag = '[object Array]',
  8385. boolTag = '[object Boolean]',
  8386. dateTag = '[object Date]',
  8387. errorTag = '[object Error]',
  8388. funcTag = '[object Function]',
  8389. genTag = '[object GeneratorFunction]',
  8390. mapTag = '[object Map]',
  8391. numberTag = '[object Number]',
  8392. objectTag = '[object Object]',
  8393. promiseTag = '[object Promise]',
  8394. regexpTag = '[object RegExp]',
  8395. setTag = '[object Set]',
  8396. stringTag = '[object String]',
  8397. symbolTag = '[object Symbol]',
  8398. weakMapTag = '[object WeakMap]';
  8399. var arrayBufferTag = '[object ArrayBuffer]',
  8400. dataViewTag = '[object DataView]',
  8401. float32Tag = '[object Float32Array]',
  8402. float64Tag = '[object Float64Array]',
  8403. int8Tag = '[object Int8Array]',
  8404. int16Tag = '[object Int16Array]',
  8405. int32Tag = '[object Int32Array]',
  8406. uint8Tag = '[object Uint8Array]',
  8407. uint8ClampedTag = '[object Uint8ClampedArray]',
  8408. uint16Tag = '[object Uint16Array]',
  8409. uint32Tag = '[object Uint32Array]';
  8410. /**
  8411. * Used to match `RegExp`
  8412. * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
  8413. */
  8414. var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
  8415. /** Used to match `RegExp` flags from their coerced string values. */
  8416. var reFlags = /\w*$/;
  8417. /** Used to detect host constructors (Safari). */
  8418. var reIsHostCtor = /^\[object .+?Constructor\]$/;
  8419. /** Used to detect unsigned integer values. */
  8420. var reIsUint = /^(?:0|[1-9]\d*)$/;
  8421. /** Used to identify `toStringTag` values supported by `_.clone`. */
  8422. var cloneableTags = {};
  8423. cloneableTags[argsTag] = cloneableTags[arrayTag] =
  8424. cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
  8425. cloneableTags[boolTag] = cloneableTags[dateTag] =
  8426. cloneableTags[float32Tag] = cloneableTags[float64Tag] =
  8427. cloneableTags[int8Tag] = cloneableTags[int16Tag] =
  8428. cloneableTags[int32Tag] = cloneableTags[mapTag] =
  8429. cloneableTags[numberTag] = cloneableTags[objectTag] =
  8430. cloneableTags[regexpTag] = cloneableTags[setTag] =
  8431. cloneableTags[stringTag] = cloneableTags[symbolTag] =
  8432. cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
  8433. cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
  8434. cloneableTags[errorTag] = cloneableTags[funcTag] =
  8435. cloneableTags[weakMapTag] = false;
  8436. /** Detect free variable `global` from Node.js. */
  8437. var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
  8438. /** Detect free variable `self`. */
  8439. var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
  8440. /** Used as a reference to the global object. */
  8441. var root = freeGlobal || freeSelf || Function('return this')();
  8442. /** Detect free variable `exports`. */
  8443. var freeExports = true && exports && !exports.nodeType && exports;
  8444. /** Detect free variable `module`. */
  8445. var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
  8446. /** Detect the popular CommonJS extension `module.exports`. */
  8447. var moduleExports = freeModule && freeModule.exports === freeExports;
  8448. /**
  8449. * Adds the key-value `pair` to `map`.
  8450. *
  8451. * @private
  8452. * @param {Object} map The map to modify.
  8453. * @param {Array} pair The key-value pair to add.
  8454. * @returns {Object} Returns `map`.
  8455. */
  8456. function addMapEntry(map, pair) {
  8457. // Don't return `map.set` because it's not chainable in IE 11.
  8458. map.set(pair[0], pair[1]);
  8459. return map;
  8460. }
  8461. /**
  8462. * Adds `value` to `set`.
  8463. *
  8464. * @private
  8465. * @param {Object} set The set to modify.
  8466. * @param {*} value The value to add.
  8467. * @returns {Object} Returns `set`.
  8468. */
  8469. function addSetEntry(set, value) {
  8470. // Don't return `set.add` because it's not chainable in IE 11.
  8471. set.add(value);
  8472. return set;
  8473. }
  8474. /**
  8475. * A specialized version of `_.forEach` for arrays without support for
  8476. * iteratee shorthands.
  8477. *
  8478. * @private
  8479. * @param {Array} [array] The array to iterate over.
  8480. * @param {Function} iteratee The function invoked per iteration.
  8481. * @returns {Array} Returns `array`.
  8482. */
  8483. function arrayEach(array, iteratee) {
  8484. var index = -1,
  8485. length = array ? array.length : 0;
  8486. while (++index < length) {
  8487. if (iteratee(array[index], index, array) === false) {
  8488. break;
  8489. }
  8490. }
  8491. return array;
  8492. }
  8493. /**
  8494. * Appends the elements of `values` to `array`.
  8495. *
  8496. * @private
  8497. * @param {Array} array The array to modify.
  8498. * @param {Array} values The values to append.
  8499. * @returns {Array} Returns `array`.
  8500. */
  8501. function arrayPush(array, values) {
  8502. var index = -1,
  8503. length = values.length,
  8504. offset = array.length;
  8505. while (++index < length) {
  8506. array[offset + index] = values[index];
  8507. }
  8508. return array;
  8509. }
  8510. /**
  8511. * A specialized version of `_.reduce` for arrays without support for
  8512. * iteratee shorthands.
  8513. *
  8514. * @private
  8515. * @param {Array} [array] The array to iterate over.
  8516. * @param {Function} iteratee The function invoked per iteration.
  8517. * @param {*} [accumulator] The initial value.
  8518. * @param {boolean} [initAccum] Specify using the first element of `array` as
  8519. * the initial value.
  8520. * @returns {*} Returns the accumulated value.
  8521. */
  8522. function arrayReduce(array, iteratee, accumulator, initAccum) {
  8523. var index = -1,
  8524. length = array ? array.length : 0;
  8525. if (initAccum && length) {
  8526. accumulator = array[++index];
  8527. }
  8528. while (++index < length) {
  8529. accumulator = iteratee(accumulator, array[index], index, array);
  8530. }
  8531. return accumulator;
  8532. }
  8533. /**
  8534. * The base implementation of `_.times` without support for iteratee shorthands
  8535. * or max array length checks.
  8536. *
  8537. * @private
  8538. * @param {number} n The number of times to invoke `iteratee`.
  8539. * @param {Function} iteratee The function invoked per iteration.
  8540. * @returns {Array} Returns the array of results.
  8541. */
  8542. function baseTimes(n, iteratee) {
  8543. var index = -1,
  8544. result = Array(n);
  8545. while (++index < n) {
  8546. result[index] = iteratee(index);
  8547. }
  8548. return result;
  8549. }
  8550. /**
  8551. * Gets the value at `key` of `object`.
  8552. *
  8553. * @private
  8554. * @param {Object} [object] The object to query.
  8555. * @param {string} key The key of the property to get.
  8556. * @returns {*} Returns the property value.
  8557. */
  8558. function getValue(object, key) {
  8559. return object == null ? undefined : object[key];
  8560. }
  8561. /**
  8562. * Checks if `value` is a host object in IE < 9.
  8563. *
  8564. * @private
  8565. * @param {*} value The value to check.
  8566. * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
  8567. */
  8568. function isHostObject(value) {
  8569. // Many host objects are `Object` objects that can coerce to strings
  8570. // despite having improperly defined `toString` methods.
  8571. var result = false;
  8572. if (value != null && typeof value.toString != 'function') {
  8573. try {
  8574. result = !!(value + '');
  8575. } catch (e) {}
  8576. }
  8577. return result;
  8578. }
  8579. /**
  8580. * Converts `map` to its key-value pairs.
  8581. *
  8582. * @private
  8583. * @param {Object} map The map to convert.
  8584. * @returns {Array} Returns the key-value pairs.
  8585. */
  8586. function mapToArray(map) {
  8587. var index = -1,
  8588. result = Array(map.size);
  8589. map.forEach(function(value, key) {
  8590. result[++index] = [key, value];
  8591. });
  8592. return result;
  8593. }
  8594. /**
  8595. * Creates a unary function that invokes `func` with its argument transformed.
  8596. *
  8597. * @private
  8598. * @param {Function} func The function to wrap.
  8599. * @param {Function} transform The argument transform.
  8600. * @returns {Function} Returns the new function.
  8601. */
  8602. function overArg(func, transform) {
  8603. return function(arg) {
  8604. return func(transform(arg));
  8605. };
  8606. }
  8607. /**
  8608. * Converts `set` to an array of its values.
  8609. *
  8610. * @private
  8611. * @param {Object} set The set to convert.
  8612. * @returns {Array} Returns the values.
  8613. */
  8614. function setToArray(set) {
  8615. var index = -1,
  8616. result = Array(set.size);
  8617. set.forEach(function(value) {
  8618. result[++index] = value;
  8619. });
  8620. return result;
  8621. }
  8622. /** Used for built-in method references. */
  8623. var arrayProto = Array.prototype,
  8624. funcProto = Function.prototype,
  8625. objectProto = Object.prototype;
  8626. /** Used to detect overreaching core-js shims. */
  8627. var coreJsData = root['__core-js_shared__'];
  8628. /** Used to detect methods masquerading as native. */
  8629. var maskSrcKey = (function() {
  8630. var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
  8631. return uid ? ('Symbol(src)_1.' + uid) : '';
  8632. }());
  8633. /** Used to resolve the decompiled source of functions. */
  8634. var funcToString = funcProto.toString;
  8635. /** Used to check objects for own properties. */
  8636. var hasOwnProperty = objectProto.hasOwnProperty;
  8637. /**
  8638. * Used to resolve the
  8639. * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
  8640. * of values.
  8641. */
  8642. var objectToString = objectProto.toString;
  8643. /** Used to detect if a method is native. */
  8644. var reIsNative = RegExp('^' +
  8645. funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
  8646. .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
  8647. );
  8648. /** Built-in value references. */
  8649. var Buffer = moduleExports ? root.Buffer : undefined,
  8650. Symbol = root.Symbol,
  8651. Uint8Array = root.Uint8Array,
  8652. getPrototype = overArg(Object.getPrototypeOf, Object),
  8653. objectCreate = Object.create,
  8654. propertyIsEnumerable = objectProto.propertyIsEnumerable,
  8655. splice = arrayProto.splice;
  8656. /* Built-in method references for those with the same name as other `lodash` methods. */
  8657. var nativeGetSymbols = Object.getOwnPropertySymbols,
  8658. nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
  8659. nativeKeys = overArg(Object.keys, Object);
  8660. /* Built-in method references that are verified to be native. */
  8661. var DataView = getNative(root, 'DataView'),
  8662. Map = getNative(root, 'Map'),
  8663. Promise = getNative(root, 'Promise'),
  8664. Set = getNative(root, 'Set'),
  8665. WeakMap = getNative(root, 'WeakMap'),
  8666. nativeCreate = getNative(Object, 'create');
  8667. /** Used to detect maps, sets, and weakmaps. */
  8668. var dataViewCtorString = toSource(DataView),
  8669. mapCtorString = toSource(Map),
  8670. promiseCtorString = toSource(Promise),
  8671. setCtorString = toSource(Set),
  8672. weakMapCtorString = toSource(WeakMap);
  8673. /** Used to convert symbols to primitives and strings. */
  8674. var symbolProto = Symbol ? Symbol.prototype : undefined,
  8675. symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
  8676. /**
  8677. * Creates a hash object.
  8678. *
  8679. * @private
  8680. * @constructor
  8681. * @param {Array} [entries] The key-value pairs to cache.
  8682. */
  8683. function Hash(entries) {
  8684. var index = -1,
  8685. length = entries ? entries.length : 0;
  8686. this.clear();
  8687. while (++index < length) {
  8688. var entry = entries[index];
  8689. this.set(entry[0], entry[1]);
  8690. }
  8691. }
  8692. /**
  8693. * Removes all key-value entries from the hash.
  8694. *
  8695. * @private
  8696. * @name clear
  8697. * @memberOf Hash
  8698. */
  8699. function hashClear() {
  8700. this.__data__ = nativeCreate ? nativeCreate(null) : {};
  8701. }
  8702. /**
  8703. * Removes `key` and its value from the hash.
  8704. *
  8705. * @private
  8706. * @name delete
  8707. * @memberOf Hash
  8708. * @param {Object} hash The hash to modify.
  8709. * @param {string} key The key of the value to remove.
  8710. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  8711. */
  8712. function hashDelete(key) {
  8713. return this.has(key) && delete this.__data__[key];
  8714. }
  8715. /**
  8716. * Gets the hash value for `key`.
  8717. *
  8718. * @private
  8719. * @name get
  8720. * @memberOf Hash
  8721. * @param {string} key The key of the value to get.
  8722. * @returns {*} Returns the entry value.
  8723. */
  8724. function hashGet(key) {
  8725. var data = this.__data__;
  8726. if (nativeCreate) {
  8727. var result = data[key];
  8728. return result === HASH_UNDEFINED ? undefined : result;
  8729. }
  8730. return hasOwnProperty.call(data, key) ? data[key] : undefined;
  8731. }
  8732. /**
  8733. * Checks if a hash value for `key` exists.
  8734. *
  8735. * @private
  8736. * @name has
  8737. * @memberOf Hash
  8738. * @param {string} key The key of the entry to check.
  8739. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  8740. */
  8741. function hashHas(key) {
  8742. var data = this.__data__;
  8743. return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
  8744. }
  8745. /**
  8746. * Sets the hash `key` to `value`.
  8747. *
  8748. * @private
  8749. * @name set
  8750. * @memberOf Hash
  8751. * @param {string} key The key of the value to set.
  8752. * @param {*} value The value to set.
  8753. * @returns {Object} Returns the hash instance.
  8754. */
  8755. function hashSet(key, value) {
  8756. var data = this.__data__;
  8757. data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
  8758. return this;
  8759. }
  8760. // Add methods to `Hash`.
  8761. Hash.prototype.clear = hashClear;
  8762. Hash.prototype['delete'] = hashDelete;
  8763. Hash.prototype.get = hashGet;
  8764. Hash.prototype.has = hashHas;
  8765. Hash.prototype.set = hashSet;
  8766. /**
  8767. * Creates an list cache object.
  8768. *
  8769. * @private
  8770. * @constructor
  8771. * @param {Array} [entries] The key-value pairs to cache.
  8772. */
  8773. function ListCache(entries) {
  8774. var index = -1,
  8775. length = entries ? entries.length : 0;
  8776. this.clear();
  8777. while (++index < length) {
  8778. var entry = entries[index];
  8779. this.set(entry[0], entry[1]);
  8780. }
  8781. }
  8782. /**
  8783. * Removes all key-value entries from the list cache.
  8784. *
  8785. * @private
  8786. * @name clear
  8787. * @memberOf ListCache
  8788. */
  8789. function listCacheClear() {
  8790. this.__data__ = [];
  8791. }
  8792. /**
  8793. * Removes `key` and its value from the list cache.
  8794. *
  8795. * @private
  8796. * @name delete
  8797. * @memberOf ListCache
  8798. * @param {string} key The key of the value to remove.
  8799. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  8800. */
  8801. function listCacheDelete(key) {
  8802. var data = this.__data__,
  8803. index = assocIndexOf(data, key);
  8804. if (index < 0) {
  8805. return false;
  8806. }
  8807. var lastIndex = data.length - 1;
  8808. if (index == lastIndex) {
  8809. data.pop();
  8810. } else {
  8811. splice.call(data, index, 1);
  8812. }
  8813. return true;
  8814. }
  8815. /**
  8816. * Gets the list cache value for `key`.
  8817. *
  8818. * @private
  8819. * @name get
  8820. * @memberOf ListCache
  8821. * @param {string} key The key of the value to get.
  8822. * @returns {*} Returns the entry value.
  8823. */
  8824. function listCacheGet(key) {
  8825. var data = this.__data__,
  8826. index = assocIndexOf(data, key);
  8827. return index < 0 ? undefined : data[index][1];
  8828. }
  8829. /**
  8830. * Checks if a list cache value for `key` exists.
  8831. *
  8832. * @private
  8833. * @name has
  8834. * @memberOf ListCache
  8835. * @param {string} key The key of the entry to check.
  8836. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  8837. */
  8838. function listCacheHas(key) {
  8839. return assocIndexOf(this.__data__, key) > -1;
  8840. }
  8841. /**
  8842. * Sets the list cache `key` to `value`.
  8843. *
  8844. * @private
  8845. * @name set
  8846. * @memberOf ListCache
  8847. * @param {string} key The key of the value to set.
  8848. * @param {*} value The value to set.
  8849. * @returns {Object} Returns the list cache instance.
  8850. */
  8851. function listCacheSet(key, value) {
  8852. var data = this.__data__,
  8853. index = assocIndexOf(data, key);
  8854. if (index < 0) {
  8855. data.push([key, value]);
  8856. } else {
  8857. data[index][1] = value;
  8858. }
  8859. return this;
  8860. }
  8861. // Add methods to `ListCache`.
  8862. ListCache.prototype.clear = listCacheClear;
  8863. ListCache.prototype['delete'] = listCacheDelete;
  8864. ListCache.prototype.get = listCacheGet;
  8865. ListCache.prototype.has = listCacheHas;
  8866. ListCache.prototype.set = listCacheSet;
  8867. /**
  8868. * Creates a map cache object to store key-value pairs.
  8869. *
  8870. * @private
  8871. * @constructor
  8872. * @param {Array} [entries] The key-value pairs to cache.
  8873. */
  8874. function MapCache(entries) {
  8875. var index = -1,
  8876. length = entries ? entries.length : 0;
  8877. this.clear();
  8878. while (++index < length) {
  8879. var entry = entries[index];
  8880. this.set(entry[0], entry[1]);
  8881. }
  8882. }
  8883. /**
  8884. * Removes all key-value entries from the map.
  8885. *
  8886. * @private
  8887. * @name clear
  8888. * @memberOf MapCache
  8889. */
  8890. function mapCacheClear() {
  8891. this.__data__ = {
  8892. 'hash': new Hash,
  8893. 'map': new (Map || ListCache),
  8894. 'string': new Hash
  8895. };
  8896. }
  8897. /**
  8898. * Removes `key` and its value from the map.
  8899. *
  8900. * @private
  8901. * @name delete
  8902. * @memberOf MapCache
  8903. * @param {string} key The key of the value to remove.
  8904. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  8905. */
  8906. function mapCacheDelete(key) {
  8907. return getMapData(this, key)['delete'](key);
  8908. }
  8909. /**
  8910. * Gets the map value for `key`.
  8911. *
  8912. * @private
  8913. * @name get
  8914. * @memberOf MapCache
  8915. * @param {string} key The key of the value to get.
  8916. * @returns {*} Returns the entry value.
  8917. */
  8918. function mapCacheGet(key) {
  8919. return getMapData(this, key).get(key);
  8920. }
  8921. /**
  8922. * Checks if a map value for `key` exists.
  8923. *
  8924. * @private
  8925. * @name has
  8926. * @memberOf MapCache
  8927. * @param {string} key The key of the entry to check.
  8928. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  8929. */
  8930. function mapCacheHas(key) {
  8931. return getMapData(this, key).has(key);
  8932. }
  8933. /**
  8934. * Sets the map `key` to `value`.
  8935. *
  8936. * @private
  8937. * @name set
  8938. * @memberOf MapCache
  8939. * @param {string} key The key of the value to set.
  8940. * @param {*} value The value to set.
  8941. * @returns {Object} Returns the map cache instance.
  8942. */
  8943. function mapCacheSet(key, value) {
  8944. getMapData(this, key).set(key, value);
  8945. return this;
  8946. }
  8947. // Add methods to `MapCache`.
  8948. MapCache.prototype.clear = mapCacheClear;
  8949. MapCache.prototype['delete'] = mapCacheDelete;
  8950. MapCache.prototype.get = mapCacheGet;
  8951. MapCache.prototype.has = mapCacheHas;
  8952. MapCache.prototype.set = mapCacheSet;
  8953. /**
  8954. * Creates a stack cache object to store key-value pairs.
  8955. *
  8956. * @private
  8957. * @constructor
  8958. * @param {Array} [entries] The key-value pairs to cache.
  8959. */
  8960. function Stack(entries) {
  8961. this.__data__ = new ListCache(entries);
  8962. }
  8963. /**
  8964. * Removes all key-value entries from the stack.
  8965. *
  8966. * @private
  8967. * @name clear
  8968. * @memberOf Stack
  8969. */
  8970. function stackClear() {
  8971. this.__data__ = new ListCache;
  8972. }
  8973. /**
  8974. * Removes `key` and its value from the stack.
  8975. *
  8976. * @private
  8977. * @name delete
  8978. * @memberOf Stack
  8979. * @param {string} key The key of the value to remove.
  8980. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  8981. */
  8982. function stackDelete(key) {
  8983. return this.__data__['delete'](key);
  8984. }
  8985. /**
  8986. * Gets the stack value for `key`.
  8987. *
  8988. * @private
  8989. * @name get
  8990. * @memberOf Stack
  8991. * @param {string} key The key of the value to get.
  8992. * @returns {*} Returns the entry value.
  8993. */
  8994. function stackGet(key) {
  8995. return this.__data__.get(key);
  8996. }
  8997. /**
  8998. * Checks if a stack value for `key` exists.
  8999. *
  9000. * @private
  9001. * @name has
  9002. * @memberOf Stack
  9003. * @param {string} key The key of the entry to check.
  9004. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  9005. */
  9006. function stackHas(key) {
  9007. return this.__data__.has(key);
  9008. }
  9009. /**
  9010. * Sets the stack `key` to `value`.
  9011. *
  9012. * @private
  9013. * @name set
  9014. * @memberOf Stack
  9015. * @param {string} key The key of the value to set.
  9016. * @param {*} value The value to set.
  9017. * @returns {Object} Returns the stack cache instance.
  9018. */
  9019. function stackSet(key, value) {
  9020. var cache = this.__data__;
  9021. if (cache instanceof ListCache) {
  9022. var pairs = cache.__data__;
  9023. if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
  9024. pairs.push([key, value]);
  9025. return this;
  9026. }
  9027. cache = this.__data__ = new MapCache(pairs);
  9028. }
  9029. cache.set(key, value);
  9030. return this;
  9031. }
  9032. // Add methods to `Stack`.
  9033. Stack.prototype.clear = stackClear;
  9034. Stack.prototype['delete'] = stackDelete;
  9035. Stack.prototype.get = stackGet;
  9036. Stack.prototype.has = stackHas;
  9037. Stack.prototype.set = stackSet;
  9038. /**
  9039. * Creates an array of the enumerable property names of the array-like `value`.
  9040. *
  9041. * @private
  9042. * @param {*} value The value to query.
  9043. * @param {boolean} inherited Specify returning inherited property names.
  9044. * @returns {Array} Returns the array of property names.
  9045. */
  9046. function arrayLikeKeys(value, inherited) {
  9047. // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
  9048. // Safari 9 makes `arguments.length` enumerable in strict mode.
  9049. var result = (isArray(value) || isArguments(value))
  9050. ? baseTimes(value.length, String)
  9051. : [];
  9052. var length = result.length,
  9053. skipIndexes = !!length;
  9054. for (var key in value) {
  9055. if ((inherited || hasOwnProperty.call(value, key)) &&
  9056. !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
  9057. result.push(key);
  9058. }
  9059. }
  9060. return result;
  9061. }
  9062. /**
  9063. * Assigns `value` to `key` of `object` if the existing value is not equivalent
  9064. * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  9065. * for equality comparisons.
  9066. *
  9067. * @private
  9068. * @param {Object} object The object to modify.
  9069. * @param {string} key The key of the property to assign.
  9070. * @param {*} value The value to assign.
  9071. */
  9072. function assignValue(object, key, value) {
  9073. var objValue = object[key];
  9074. if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
  9075. (value === undefined && !(key in object))) {
  9076. object[key] = value;
  9077. }
  9078. }
  9079. /**
  9080. * Gets the index at which the `key` is found in `array` of key-value pairs.
  9081. *
  9082. * @private
  9083. * @param {Array} array The array to inspect.
  9084. * @param {*} key The key to search for.
  9085. * @returns {number} Returns the index of the matched value, else `-1`.
  9086. */
  9087. function assocIndexOf(array, key) {
  9088. var length = array.length;
  9089. while (length--) {
  9090. if (eq(array[length][0], key)) {
  9091. return length;
  9092. }
  9093. }
  9094. return -1;
  9095. }
  9096. /**
  9097. * The base implementation of `_.assign` without support for multiple sources
  9098. * or `customizer` functions.
  9099. *
  9100. * @private
  9101. * @param {Object} object The destination object.
  9102. * @param {Object} source The source object.
  9103. * @returns {Object} Returns `object`.
  9104. */
  9105. function baseAssign(object, source) {
  9106. return object && copyObject(source, keys(source), object);
  9107. }
  9108. /**
  9109. * The base implementation of `_.clone` and `_.cloneDeep` which tracks
  9110. * traversed objects.
  9111. *
  9112. * @private
  9113. * @param {*} value The value to clone.
  9114. * @param {boolean} [isDeep] Specify a deep clone.
  9115. * @param {boolean} [isFull] Specify a clone including symbols.
  9116. * @param {Function} [customizer] The function to customize cloning.
  9117. * @param {string} [key] The key of `value`.
  9118. * @param {Object} [object] The parent object of `value`.
  9119. * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
  9120. * @returns {*} Returns the cloned value.
  9121. */
  9122. function baseClone(value, isDeep, isFull, customizer, key, object, stack) {
  9123. var result;
  9124. if (customizer) {
  9125. result = object ? customizer(value, key, object, stack) : customizer(value);
  9126. }
  9127. if (result !== undefined) {
  9128. return result;
  9129. }
  9130. if (!isObject(value)) {
  9131. return value;
  9132. }
  9133. var isArr = isArray(value);
  9134. if (isArr) {
  9135. result = initCloneArray(value);
  9136. if (!isDeep) {
  9137. return copyArray(value, result);
  9138. }
  9139. } else {
  9140. var tag = getTag(value),
  9141. isFunc = tag == funcTag || tag == genTag;
  9142. if (isBuffer(value)) {
  9143. return cloneBuffer(value, isDeep);
  9144. }
  9145. if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
  9146. if (isHostObject(value)) {
  9147. return object ? value : {};
  9148. }
  9149. result = initCloneObject(isFunc ? {} : value);
  9150. if (!isDeep) {
  9151. return copySymbols(value, baseAssign(result, value));
  9152. }
  9153. } else {
  9154. if (!cloneableTags[tag]) {
  9155. return object ? value : {};
  9156. }
  9157. result = initCloneByTag(value, tag, baseClone, isDeep);
  9158. }
  9159. }
  9160. // Check for circular references and return its corresponding clone.
  9161. stack || (stack = new Stack);
  9162. var stacked = stack.get(value);
  9163. if (stacked) {
  9164. return stacked;
  9165. }
  9166. stack.set(value, result);
  9167. if (!isArr) {
  9168. var props = isFull ? getAllKeys(value) : keys(value);
  9169. }
  9170. arrayEach(props || value, function(subValue, key) {
  9171. if (props) {
  9172. key = subValue;
  9173. subValue = value[key];
  9174. }
  9175. // Recursively populate clone (susceptible to call stack limits).
  9176. assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));
  9177. });
  9178. return result;
  9179. }
  9180. /**
  9181. * The base implementation of `_.create` without support for assigning
  9182. * properties to the created object.
  9183. *
  9184. * @private
  9185. * @param {Object} prototype The object to inherit from.
  9186. * @returns {Object} Returns the new object.
  9187. */
  9188. function baseCreate(proto) {
  9189. return isObject(proto) ? objectCreate(proto) : {};
  9190. }
  9191. /**
  9192. * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
  9193. * `keysFunc` and `symbolsFunc` to get the enumerable property names and
  9194. * symbols of `object`.
  9195. *
  9196. * @private
  9197. * @param {Object} object The object to query.
  9198. * @param {Function} keysFunc The function to get the keys of `object`.
  9199. * @param {Function} symbolsFunc The function to get the symbols of `object`.
  9200. * @returns {Array} Returns the array of property names and symbols.
  9201. */
  9202. function baseGetAllKeys(object, keysFunc, symbolsFunc) {
  9203. var result = keysFunc(object);
  9204. return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
  9205. }
  9206. /**
  9207. * The base implementation of `getTag`.
  9208. *
  9209. * @private
  9210. * @param {*} value The value to query.
  9211. * @returns {string} Returns the `toStringTag`.
  9212. */
  9213. function baseGetTag(value) {
  9214. return objectToString.call(value);
  9215. }
  9216. /**
  9217. * The base implementation of `_.isNative` without bad shim checks.
  9218. *
  9219. * @private
  9220. * @param {*} value The value to check.
  9221. * @returns {boolean} Returns `true` if `value` is a native function,
  9222. * else `false`.
  9223. */
  9224. function baseIsNative(value) {
  9225. if (!isObject(value) || isMasked(value)) {
  9226. return false;
  9227. }
  9228. var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
  9229. return pattern.test(toSource(value));
  9230. }
  9231. /**
  9232. * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
  9233. *
  9234. * @private
  9235. * @param {Object} object The object to query.
  9236. * @returns {Array} Returns the array of property names.
  9237. */
  9238. function baseKeys(object) {
  9239. if (!isPrototype(object)) {
  9240. return nativeKeys(object);
  9241. }
  9242. var result = [];
  9243. for (var key in Object(object)) {
  9244. if (hasOwnProperty.call(object, key) && key != 'constructor') {
  9245. result.push(key);
  9246. }
  9247. }
  9248. return result;
  9249. }
  9250. /**
  9251. * Creates a clone of `buffer`.
  9252. *
  9253. * @private
  9254. * @param {Buffer} buffer The buffer to clone.
  9255. * @param {boolean} [isDeep] Specify a deep clone.
  9256. * @returns {Buffer} Returns the cloned buffer.
  9257. */
  9258. function cloneBuffer(buffer, isDeep) {
  9259. if (isDeep) {
  9260. return buffer.slice();
  9261. }
  9262. var result = new buffer.constructor(buffer.length);
  9263. buffer.copy(result);
  9264. return result;
  9265. }
  9266. /**
  9267. * Creates a clone of `arrayBuffer`.
  9268. *
  9269. * @private
  9270. * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
  9271. * @returns {ArrayBuffer} Returns the cloned array buffer.
  9272. */
  9273. function cloneArrayBuffer(arrayBuffer) {
  9274. var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
  9275. new Uint8Array(result).set(new Uint8Array(arrayBuffer));
  9276. return result;
  9277. }
  9278. /**
  9279. * Creates a clone of `dataView`.
  9280. *
  9281. * @private
  9282. * @param {Object} dataView The data view to clone.
  9283. * @param {boolean} [isDeep] Specify a deep clone.
  9284. * @returns {Object} Returns the cloned data view.
  9285. */
  9286. function cloneDataView(dataView, isDeep) {
  9287. var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
  9288. return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
  9289. }
  9290. /**
  9291. * Creates a clone of `map`.
  9292. *
  9293. * @private
  9294. * @param {Object} map The map to clone.
  9295. * @param {Function} cloneFunc The function to clone values.
  9296. * @param {boolean} [isDeep] Specify a deep clone.
  9297. * @returns {Object} Returns the cloned map.
  9298. */
  9299. function cloneMap(map, isDeep, cloneFunc) {
  9300. var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);
  9301. return arrayReduce(array, addMapEntry, new map.constructor);
  9302. }
  9303. /**
  9304. * Creates a clone of `regexp`.
  9305. *
  9306. * @private
  9307. * @param {Object} regexp The regexp to clone.
  9308. * @returns {Object} Returns the cloned regexp.
  9309. */
  9310. function cloneRegExp(regexp) {
  9311. var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
  9312. result.lastIndex = regexp.lastIndex;
  9313. return result;
  9314. }
  9315. /**
  9316. * Creates a clone of `set`.
  9317. *
  9318. * @private
  9319. * @param {Object} set The set to clone.
  9320. * @param {Function} cloneFunc The function to clone values.
  9321. * @param {boolean} [isDeep] Specify a deep clone.
  9322. * @returns {Object} Returns the cloned set.
  9323. */
  9324. function cloneSet(set, isDeep, cloneFunc) {
  9325. var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);
  9326. return arrayReduce(array, addSetEntry, new set.constructor);
  9327. }
  9328. /**
  9329. * Creates a clone of the `symbol` object.
  9330. *
  9331. * @private
  9332. * @param {Object} symbol The symbol object to clone.
  9333. * @returns {Object} Returns the cloned symbol object.
  9334. */
  9335. function cloneSymbol(symbol) {
  9336. return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
  9337. }
  9338. /**
  9339. * Creates a clone of `typedArray`.
  9340. *
  9341. * @private
  9342. * @param {Object} typedArray The typed array to clone.
  9343. * @param {boolean} [isDeep] Specify a deep clone.
  9344. * @returns {Object} Returns the cloned typed array.
  9345. */
  9346. function cloneTypedArray(typedArray, isDeep) {
  9347. var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
  9348. return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
  9349. }
  9350. /**
  9351. * Copies the values of `source` to `array`.
  9352. *
  9353. * @private
  9354. * @param {Array} source The array to copy values from.
  9355. * @param {Array} [array=[]] The array to copy values to.
  9356. * @returns {Array} Returns `array`.
  9357. */
  9358. function copyArray(source, array) {
  9359. var index = -1,
  9360. length = source.length;
  9361. array || (array = Array(length));
  9362. while (++index < length) {
  9363. array[index] = source[index];
  9364. }
  9365. return array;
  9366. }
  9367. /**
  9368. * Copies properties of `source` to `object`.
  9369. *
  9370. * @private
  9371. * @param {Object} source The object to copy properties from.
  9372. * @param {Array} props The property identifiers to copy.
  9373. * @param {Object} [object={}] The object to copy properties to.
  9374. * @param {Function} [customizer] The function to customize copied values.
  9375. * @returns {Object} Returns `object`.
  9376. */
  9377. function copyObject(source, props, object, customizer) {
  9378. object || (object = {});
  9379. var index = -1,
  9380. length = props.length;
  9381. while (++index < length) {
  9382. var key = props[index];
  9383. var newValue = customizer
  9384. ? customizer(object[key], source[key], key, object, source)
  9385. : undefined;
  9386. assignValue(object, key, newValue === undefined ? source[key] : newValue);
  9387. }
  9388. return object;
  9389. }
  9390. /**
  9391. * Copies own symbol properties of `source` to `object`.
  9392. *
  9393. * @private
  9394. * @param {Object} source The object to copy symbols from.
  9395. * @param {Object} [object={}] The object to copy symbols to.
  9396. * @returns {Object} Returns `object`.
  9397. */
  9398. function copySymbols(source, object) {
  9399. return copyObject(source, getSymbols(source), object);
  9400. }
  9401. /**
  9402. * Creates an array of own enumerable property names and symbols of `object`.
  9403. *
  9404. * @private
  9405. * @param {Object} object The object to query.
  9406. * @returns {Array} Returns the array of property names and symbols.
  9407. */
  9408. function getAllKeys(object) {
  9409. return baseGetAllKeys(object, keys, getSymbols);
  9410. }
  9411. /**
  9412. * Gets the data for `map`.
  9413. *
  9414. * @private
  9415. * @param {Object} map The map to query.
  9416. * @param {string} key The reference key.
  9417. * @returns {*} Returns the map data.
  9418. */
  9419. function getMapData(map, key) {
  9420. var data = map.__data__;
  9421. return isKeyable(key)
  9422. ? data[typeof key == 'string' ? 'string' : 'hash']
  9423. : data.map;
  9424. }
  9425. /**
  9426. * Gets the native function at `key` of `object`.
  9427. *
  9428. * @private
  9429. * @param {Object} object The object to query.
  9430. * @param {string} key The key of the method to get.
  9431. * @returns {*} Returns the function if it's native, else `undefined`.
  9432. */
  9433. function getNative(object, key) {
  9434. var value = getValue(object, key);
  9435. return baseIsNative(value) ? value : undefined;
  9436. }
  9437. /**
  9438. * Creates an array of the own enumerable symbol properties of `object`.
  9439. *
  9440. * @private
  9441. * @param {Object} object The object to query.
  9442. * @returns {Array} Returns the array of symbols.
  9443. */
  9444. var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;
  9445. /**
  9446. * Gets the `toStringTag` of `value`.
  9447. *
  9448. * @private
  9449. * @param {*} value The value to query.
  9450. * @returns {string} Returns the `toStringTag`.
  9451. */
  9452. var getTag = baseGetTag;
  9453. // Fallback for data views, maps, sets, and weak maps in IE 11,
  9454. // for data views in Edge < 14, and promises in Node.js.
  9455. if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
  9456. (Map && getTag(new Map) != mapTag) ||
  9457. (Promise && getTag(Promise.resolve()) != promiseTag) ||
  9458. (Set && getTag(new Set) != setTag) ||
  9459. (WeakMap && getTag(new WeakMap) != weakMapTag)) {
  9460. getTag = function(value) {
  9461. var result = objectToString.call(value),
  9462. Ctor = result == objectTag ? value.constructor : undefined,
  9463. ctorString = Ctor ? toSource(Ctor) : undefined;
  9464. if (ctorString) {
  9465. switch (ctorString) {
  9466. case dataViewCtorString: return dataViewTag;
  9467. case mapCtorString: return mapTag;
  9468. case promiseCtorString: return promiseTag;
  9469. case setCtorString: return setTag;
  9470. case weakMapCtorString: return weakMapTag;
  9471. }
  9472. }
  9473. return result;
  9474. };
  9475. }
  9476. /**
  9477. * Initializes an array clone.
  9478. *
  9479. * @private
  9480. * @param {Array} array The array to clone.
  9481. * @returns {Array} Returns the initialized clone.
  9482. */
  9483. function initCloneArray(array) {
  9484. var length = array.length,
  9485. result = array.constructor(length);
  9486. // Add properties assigned by `RegExp#exec`.
  9487. if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
  9488. result.index = array.index;
  9489. result.input = array.input;
  9490. }
  9491. return result;
  9492. }
  9493. /**
  9494. * Initializes an object clone.
  9495. *
  9496. * @private
  9497. * @param {Object} object The object to clone.
  9498. * @returns {Object} Returns the initialized clone.
  9499. */
  9500. function initCloneObject(object) {
  9501. return (typeof object.constructor == 'function' && !isPrototype(object))
  9502. ? baseCreate(getPrototype(object))
  9503. : {};
  9504. }
  9505. /**
  9506. * Initializes an object clone based on its `toStringTag`.
  9507. *
  9508. * **Note:** This function only supports cloning values with tags of
  9509. * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
  9510. *
  9511. * @private
  9512. * @param {Object} object The object to clone.
  9513. * @param {string} tag The `toStringTag` of the object to clone.
  9514. * @param {Function} cloneFunc The function to clone values.
  9515. * @param {boolean} [isDeep] Specify a deep clone.
  9516. * @returns {Object} Returns the initialized clone.
  9517. */
  9518. function initCloneByTag(object, tag, cloneFunc, isDeep) {
  9519. var Ctor = object.constructor;
  9520. switch (tag) {
  9521. case arrayBufferTag:
  9522. return cloneArrayBuffer(object);
  9523. case boolTag:
  9524. case dateTag:
  9525. return new Ctor(+object);
  9526. case dataViewTag:
  9527. return cloneDataView(object, isDeep);
  9528. case float32Tag: case float64Tag:
  9529. case int8Tag: case int16Tag: case int32Tag:
  9530. case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
  9531. return cloneTypedArray(object, isDeep);
  9532. case mapTag:
  9533. return cloneMap(object, isDeep, cloneFunc);
  9534. case numberTag:
  9535. case stringTag:
  9536. return new Ctor(object);
  9537. case regexpTag:
  9538. return cloneRegExp(object);
  9539. case setTag:
  9540. return cloneSet(object, isDeep, cloneFunc);
  9541. case symbolTag:
  9542. return cloneSymbol(object);
  9543. }
  9544. }
  9545. /**
  9546. * Checks if `value` is a valid array-like index.
  9547. *
  9548. * @private
  9549. * @param {*} value The value to check.
  9550. * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
  9551. * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
  9552. */
  9553. function isIndex(value, length) {
  9554. length = length == null ? MAX_SAFE_INTEGER : length;
  9555. return !!length &&
  9556. (typeof value == 'number' || reIsUint.test(value)) &&
  9557. (value > -1 && value % 1 == 0 && value < length);
  9558. }
  9559. /**
  9560. * Checks if `value` is suitable for use as unique object key.
  9561. *
  9562. * @private
  9563. * @param {*} value The value to check.
  9564. * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
  9565. */
  9566. function isKeyable(value) {
  9567. var type = typeof value;
  9568. return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
  9569. ? (value !== '__proto__')
  9570. : (value === null);
  9571. }
  9572. /**
  9573. * Checks if `func` has its source masked.
  9574. *
  9575. * @private
  9576. * @param {Function} func The function to check.
  9577. * @returns {boolean} Returns `true` if `func` is masked, else `false`.
  9578. */
  9579. function isMasked(func) {
  9580. return !!maskSrcKey && (maskSrcKey in func);
  9581. }
  9582. /**
  9583. * Checks if `value` is likely a prototype object.
  9584. *
  9585. * @private
  9586. * @param {*} value The value to check.
  9587. * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
  9588. */
  9589. function isPrototype(value) {
  9590. var Ctor = value && value.constructor,
  9591. proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
  9592. return value === proto;
  9593. }
  9594. /**
  9595. * Converts `func` to its source code.
  9596. *
  9597. * @private
  9598. * @param {Function} func The function to process.
  9599. * @returns {string} Returns the source code.
  9600. */
  9601. function toSource(func) {
  9602. if (func != null) {
  9603. try {
  9604. return funcToString.call(func);
  9605. } catch (e) {}
  9606. try {
  9607. return (func + '');
  9608. } catch (e) {}
  9609. }
  9610. return '';
  9611. }
  9612. /**
  9613. * This method is like `_.clone` except that it recursively clones `value`.
  9614. *
  9615. * @static
  9616. * @memberOf _
  9617. * @since 1.0.0
  9618. * @category Lang
  9619. * @param {*} value The value to recursively clone.
  9620. * @returns {*} Returns the deep cloned value.
  9621. * @see _.clone
  9622. * @example
  9623. *
  9624. * var objects = [{ 'a': 1 }, { 'b': 2 }];
  9625. *
  9626. * var deep = _.cloneDeep(objects);
  9627. * console.log(deep[0] === objects[0]);
  9628. * // => false
  9629. */
  9630. function cloneDeep(value) {
  9631. return baseClone(value, true, true);
  9632. }
  9633. /**
  9634. * Performs a
  9635. * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  9636. * comparison between two values to determine if they are equivalent.
  9637. *
  9638. * @static
  9639. * @memberOf _
  9640. * @since 4.0.0
  9641. * @category Lang
  9642. * @param {*} value The value to compare.
  9643. * @param {*} other The other value to compare.
  9644. * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
  9645. * @example
  9646. *
  9647. * var object = { 'a': 1 };
  9648. * var other = { 'a': 1 };
  9649. *
  9650. * _.eq(object, object);
  9651. * // => true
  9652. *
  9653. * _.eq(object, other);
  9654. * // => false
  9655. *
  9656. * _.eq('a', 'a');
  9657. * // => true
  9658. *
  9659. * _.eq('a', Object('a'));
  9660. * // => false
  9661. *
  9662. * _.eq(NaN, NaN);
  9663. * // => true
  9664. */
  9665. function eq(value, other) {
  9666. return value === other || (value !== value && other !== other);
  9667. }
  9668. /**
  9669. * Checks if `value` is likely an `arguments` object.
  9670. *
  9671. * @static
  9672. * @memberOf _
  9673. * @since 0.1.0
  9674. * @category Lang
  9675. * @param {*} value The value to check.
  9676. * @returns {boolean} Returns `true` if `value` is an `arguments` object,
  9677. * else `false`.
  9678. * @example
  9679. *
  9680. * _.isArguments(function() { return arguments; }());
  9681. * // => true
  9682. *
  9683. * _.isArguments([1, 2, 3]);
  9684. * // => false
  9685. */
  9686. function isArguments(value) {
  9687. // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
  9688. return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
  9689. (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
  9690. }
  9691. /**
  9692. * Checks if `value` is classified as an `Array` object.
  9693. *
  9694. * @static
  9695. * @memberOf _
  9696. * @since 0.1.0
  9697. * @category Lang
  9698. * @param {*} value The value to check.
  9699. * @returns {boolean} Returns `true` if `value` is an array, else `false`.
  9700. * @example
  9701. *
  9702. * _.isArray([1, 2, 3]);
  9703. * // => true
  9704. *
  9705. * _.isArray(document.body.children);
  9706. * // => false
  9707. *
  9708. * _.isArray('abc');
  9709. * // => false
  9710. *
  9711. * _.isArray(_.noop);
  9712. * // => false
  9713. */
  9714. var isArray = Array.isArray;
  9715. /**
  9716. * Checks if `value` is array-like. A value is considered array-like if it's
  9717. * not a function and has a `value.length` that's an integer greater than or
  9718. * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
  9719. *
  9720. * @static
  9721. * @memberOf _
  9722. * @since 4.0.0
  9723. * @category Lang
  9724. * @param {*} value The value to check.
  9725. * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
  9726. * @example
  9727. *
  9728. * _.isArrayLike([1, 2, 3]);
  9729. * // => true
  9730. *
  9731. * _.isArrayLike(document.body.children);
  9732. * // => true
  9733. *
  9734. * _.isArrayLike('abc');
  9735. * // => true
  9736. *
  9737. * _.isArrayLike(_.noop);
  9738. * // => false
  9739. */
  9740. function isArrayLike(value) {
  9741. return value != null && isLength(value.length) && !isFunction(value);
  9742. }
  9743. /**
  9744. * This method is like `_.isArrayLike` except that it also checks if `value`
  9745. * is an object.
  9746. *
  9747. * @static
  9748. * @memberOf _
  9749. * @since 4.0.0
  9750. * @category Lang
  9751. * @param {*} value The value to check.
  9752. * @returns {boolean} Returns `true` if `value` is an array-like object,
  9753. * else `false`.
  9754. * @example
  9755. *
  9756. * _.isArrayLikeObject([1, 2, 3]);
  9757. * // => true
  9758. *
  9759. * _.isArrayLikeObject(document.body.children);
  9760. * // => true
  9761. *
  9762. * _.isArrayLikeObject('abc');
  9763. * // => false
  9764. *
  9765. * _.isArrayLikeObject(_.noop);
  9766. * // => false
  9767. */
  9768. function isArrayLikeObject(value) {
  9769. return isObjectLike(value) && isArrayLike(value);
  9770. }
  9771. /**
  9772. * Checks if `value` is a buffer.
  9773. *
  9774. * @static
  9775. * @memberOf _
  9776. * @since 4.3.0
  9777. * @category Lang
  9778. * @param {*} value The value to check.
  9779. * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
  9780. * @example
  9781. *
  9782. * _.isBuffer(new Buffer(2));
  9783. * // => true
  9784. *
  9785. * _.isBuffer(new Uint8Array(2));
  9786. * // => false
  9787. */
  9788. var isBuffer = nativeIsBuffer || stubFalse;
  9789. /**
  9790. * Checks if `value` is classified as a `Function` object.
  9791. *
  9792. * @static
  9793. * @memberOf _
  9794. * @since 0.1.0
  9795. * @category Lang
  9796. * @param {*} value The value to check.
  9797. * @returns {boolean} Returns `true` if `value` is a function, else `false`.
  9798. * @example
  9799. *
  9800. * _.isFunction(_);
  9801. * // => true
  9802. *
  9803. * _.isFunction(/abc/);
  9804. * // => false
  9805. */
  9806. function isFunction(value) {
  9807. // The use of `Object#toString` avoids issues with the `typeof` operator
  9808. // in Safari 8-9 which returns 'object' for typed array and other constructors.
  9809. var tag = isObject(value) ? objectToString.call(value) : '';
  9810. return tag == funcTag || tag == genTag;
  9811. }
  9812. /**
  9813. * Checks if `value` is a valid array-like length.
  9814. *
  9815. * **Note:** This method is loosely based on
  9816. * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
  9817. *
  9818. * @static
  9819. * @memberOf _
  9820. * @since 4.0.0
  9821. * @category Lang
  9822. * @param {*} value The value to check.
  9823. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
  9824. * @example
  9825. *
  9826. * _.isLength(3);
  9827. * // => true
  9828. *
  9829. * _.isLength(Number.MIN_VALUE);
  9830. * // => false
  9831. *
  9832. * _.isLength(Infinity);
  9833. * // => false
  9834. *
  9835. * _.isLength('3');
  9836. * // => false
  9837. */
  9838. function isLength(value) {
  9839. return typeof value == 'number' &&
  9840. value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  9841. }
  9842. /**
  9843. * Checks if `value` is the
  9844. * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
  9845. * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
  9846. *
  9847. * @static
  9848. * @memberOf _
  9849. * @since 0.1.0
  9850. * @category Lang
  9851. * @param {*} value The value to check.
  9852. * @returns {boolean} Returns `true` if `value` is an object, else `false`.
  9853. * @example
  9854. *
  9855. * _.isObject({});
  9856. * // => true
  9857. *
  9858. * _.isObject([1, 2, 3]);
  9859. * // => true
  9860. *
  9861. * _.isObject(_.noop);
  9862. * // => true
  9863. *
  9864. * _.isObject(null);
  9865. * // => false
  9866. */
  9867. function isObject(value) {
  9868. var type = typeof value;
  9869. return !!value && (type == 'object' || type == 'function');
  9870. }
  9871. /**
  9872. * Checks if `value` is object-like. A value is object-like if it's not `null`
  9873. * and has a `typeof` result of "object".
  9874. *
  9875. * @static
  9876. * @memberOf _
  9877. * @since 4.0.0
  9878. * @category Lang
  9879. * @param {*} value The value to check.
  9880. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  9881. * @example
  9882. *
  9883. * _.isObjectLike({});
  9884. * // => true
  9885. *
  9886. * _.isObjectLike([1, 2, 3]);
  9887. * // => true
  9888. *
  9889. * _.isObjectLike(_.noop);
  9890. * // => false
  9891. *
  9892. * _.isObjectLike(null);
  9893. * // => false
  9894. */
  9895. function isObjectLike(value) {
  9896. return !!value && typeof value == 'object';
  9897. }
  9898. /**
  9899. * Creates an array of the own enumerable property names of `object`.
  9900. *
  9901. * **Note:** Non-object values are coerced to objects. See the
  9902. * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
  9903. * for more details.
  9904. *
  9905. * @static
  9906. * @since 0.1.0
  9907. * @memberOf _
  9908. * @category Object
  9909. * @param {Object} object The object to query.
  9910. * @returns {Array} Returns the array of property names.
  9911. * @example
  9912. *
  9913. * function Foo() {
  9914. * this.a = 1;
  9915. * this.b = 2;
  9916. * }
  9917. *
  9918. * Foo.prototype.c = 3;
  9919. *
  9920. * _.keys(new Foo);
  9921. * // => ['a', 'b'] (iteration order is not guaranteed)
  9922. *
  9923. * _.keys('hi');
  9924. * // => ['0', '1']
  9925. */
  9926. function keys(object) {
  9927. return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
  9928. }
  9929. /**
  9930. * This method returns a new empty array.
  9931. *
  9932. * @static
  9933. * @memberOf _
  9934. * @since 4.13.0
  9935. * @category Util
  9936. * @returns {Array} Returns the new empty array.
  9937. * @example
  9938. *
  9939. * var arrays = _.times(2, _.stubArray);
  9940. *
  9941. * console.log(arrays);
  9942. * // => [[], []]
  9943. *
  9944. * console.log(arrays[0] === arrays[1]);
  9945. * // => false
  9946. */
  9947. function stubArray() {
  9948. return [];
  9949. }
  9950. /**
  9951. * This method returns `false`.
  9952. *
  9953. * @static
  9954. * @memberOf _
  9955. * @since 4.13.0
  9956. * @category Util
  9957. * @returns {boolean} Returns `false`.
  9958. * @example
  9959. *
  9960. * _.times(2, _.stubFalse);
  9961. * // => [false, false]
  9962. */
  9963. function stubFalse() {
  9964. return false;
  9965. }
  9966. module.exports = cloneDeep;
  9967. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("698d"), __webpack_require__("f586")(module)))
  9968. /***/ }),
  9969. /***/ "25b4":
  9970. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  9971. "use strict";
  9972. __webpack_require__.r(__webpack_exports__);
  9973. /* harmony import */ var _Identify_vue_vue_type_template_id_0e3cd6bc___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("24dd");
  9974. /* harmony import */ var _Identify_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("445a");
  9975. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Identify_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Identify_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  9976. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  9977. /* normalize component */
  9978. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  9979. _Identify_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  9980. _Identify_vue_vue_type_template_id_0e3cd6bc___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  9981. _Identify_vue_vue_type_template_id_0e3cd6bc___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  9982. false,
  9983. null,
  9984. null,
  9985. null
  9986. )
  9987. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  9988. /***/ }),
  9989. /***/ "264a":
  9990. /***/ (function(module, exports, __webpack_require__) {
  9991. "use strict";
  9992. var _interopRequireDefault = __webpack_require__("8e6d");
  9993. Object.defineProperty(exports, "__esModule", {
  9994. value: true
  9995. });
  9996. exports.default = void 0;
  9997. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  9998. /**
  9999. * @class LineStyle
  10000. * @category BaseTypes Style
  10001. * @classdesc 线图层样式类。
  10002. * @param {mapboxgl.LayersLine} paint - MapboxGL 线图层 Paint 配置。
  10003. * @param {mapboxgl.LayersLine} layout - MapboxGL 线图层 Layout 配置。
  10004. */
  10005. var LineStyle = function LineStyle() {
  10006. var paint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  10007. var layout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  10008. (0, _classCallCheck2.default)(this, LineStyle);
  10009. this.layout = {
  10010. visibility: 'visible',
  10011. 'line-cap': 'butt',
  10012. 'line-join': 'miter'
  10013. };
  10014. this.paint = {
  10015. 'line-opacity': 1,
  10016. 'line-color': '#3fb1e3',
  10017. 'line-width': 3,
  10018. 'line-blur': 1
  10019. };
  10020. Object.assign(this.paint, paint);
  10021. Object.assign(this.layout, layout);
  10022. };
  10023. exports.default = LineStyle;
  10024. /***/ }),
  10025. /***/ "26ce":
  10026. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  10027. "use strict";
  10028. __webpack_require__.r(__webpack_exports__);
  10029. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_NcpMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("6b99");
  10030. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_NcpMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_NcpMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__);
  10031. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_NcpMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_NcpMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  10032. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_NcpMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default.a);
  10033. /***/ }),
  10034. /***/ "279f":
  10035. /***/ (function(module, exports) {
  10036. function _defineProperty(obj, key, value) {
  10037. if (key in obj) {
  10038. Object.defineProperty(obj, key, {
  10039. value: value,
  10040. enumerable: true,
  10041. configurable: true,
  10042. writable: true
  10043. });
  10044. } else {
  10045. obj[key] = value;
  10046. }
  10047. return obj;
  10048. }
  10049. module.exports = _defineProperty;
  10050. /***/ }),
  10051. /***/ "27f6":
  10052. /***/ (function(module, exports) {
  10053. function _assertThisInitialized(self) {
  10054. if (self === void 0) {
  10055. throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  10056. }
  10057. return self;
  10058. }
  10059. module.exports = _assertThisInitialized;
  10060. /***/ }),
  10061. /***/ "282c":
  10062. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  10063. "use strict";
  10064. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/tdt/route/TdtRoute.vue?vue&type=template&id=fb60b3aa&
  10065. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('sm-card',{directives:[{name:"show",rawName:"v-show",value:(_vm.isShow),expression:"isShow"}],staticClass:"sm-component-tdtRoute",attrs:{"icon-class":_vm.iconClass,"icon-position":_vm.position,"header-name":_vm.headerName,"auto-rotate":_vm.autoRotate,"collapsed":_vm.collapsed,"background":_vm.background,"textColor":_vm.textColor}},[_c('div',{staticClass:"sm-component-tdtRoute__panel",style:([_vm.getBackgroundStyle, _vm.getTextColorStyle])},[_c('div',{staticClass:"sm-component-tdtRoute__header"},[_c('div',{staticClass:"route-navbar"},[_c('div',[_c('div',{class:['car-icon', { active: _vm.routeActive === 'car' }],on:{"click":function($event){_vm.routeActive = 'car'}}},[_c('i')]),_vm._v(" "),_c('div',{class:['bus-icon', { active: _vm.routeActive === 'bus' }],on:{"click":function($event){_vm.routeActive = 'bus'}}},[_c('i')])]),_vm._v(" "),_c('div',{staticClass:"clear-route",style:([_vm.getTextColorStyle]),on:{"click":_vm.clearRoute}},[_vm._v(_vm._s(_vm.$t('tdtRoute.clearRoute')))])]),_vm._v(" "),_c('div',{staticClass:"route-panel"},[_c('div',{staticClass:"start-route"},[_c('div',{staticClass:"icon-wrapper"},[_c('div',{staticClass:"icon"})]),_vm._v(" "),_c('div',{staticClass:"content"},[_c('a-input',{style:([_vm.getBackgroundStyle, _vm.getTextColorStyle]),attrs:{"placeholder":_vm.$t('tdtRoute.pleaseEnterStartPoint'),"title":_vm.$t('tdtRoute.pleaseEnterStartPoint')},on:{"keyup":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==13){ return null; }return _vm.searchClicked($event)}},model:{value:(_vm.start),callback:function ($$v) {_vm.start=$$v},expression:"start"}},[_c('a-icon',{style:([_vm.getTextColorStyle]),attrs:{"slot":"suffix","type":"close-circle"},on:{"click":_vm.clearStart},slot:"suffix"})],1)],1)]),_vm._v(" "),_c('div',{staticClass:"end-route"},[_c('div',{staticClass:"icon-wrapper"},[_c('div',{staticClass:"icon"})]),_vm._v(" "),_c('div',{staticClass:"content"},[_c('a-input',{style:([_vm.getBackgroundStyle, _vm.getTextColorStyle]),attrs:{"placeholder":_vm.$t('tdtRoute.pleaseEnterEndPoint'),"title":_vm.$t('tdtRoute.pleaseEnterEndPoint')},on:{"keyup":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==13){ return null; }return _vm.searchClicked($event)}},model:{value:(_vm.end),callback:function ($$v) {_vm.end=$$v},expression:"end"}},[_c('a-icon',{style:([_vm.getTextColorStyle]),attrs:{"slot":"suffix","type":"close-circle"},on:{"click":_vm.clearEnd},slot:"suffix"})],1)],1)]),_vm._v(" "),_c('div',{staticClass:"switch-route",on:{"click":_vm.switchRoute}},[_c('a-icon',{attrs:{"type":"swap"}})],1)]),_vm._v(" "),_c('div',{staticClass:"search-btn"},[_c('a-button',{style:([_vm.getBackgroundStyle, _vm.getTextColorStyle]),attrs:{"type":"primary"},on:{"click":_vm.searchClicked}},[_vm._v("\n "+_vm._s(_vm.$t('tdtRoute.search'))+"\n ")])],1)]),_vm._v(" "),_c('div',{staticClass:"sm-component-tdtRoute__content",style:([_vm.getBackgroundStyle, _vm.getTextColorStyle])},[(!_vm.showRoutePlan && _vm.status)?_c('div',{staticClass:"route-result"},[_c('div',{staticClass:"start-point"},[_c('div',{staticClass:"title"},[_c('a-icon',{attrs:{"type":"question-circle","theme":"filled"}}),_vm._v(" "),_c('span',{on:{"click":function($event){return _vm.resetStatus('toSetStart')}}},[_vm._v(_vm._s(_vm.$t('tdtRoute.startPoint'))+":"+_vm._s(_vm.start))])],1),_vm._v(" "),(_vm.status === 'toSetStart' && _vm.componentId)?_c('div',{staticClass:"content"},[_c(_vm.componentId,_vm._g(_vm._b({tag:"component"},'component',_vm.componentProps,false),_vm.componentListeners))],1):_vm._e()]),_vm._v(" "),_c('div',{staticClass:"end-point"},[_c('div',{staticClass:"title"},[_c('a-icon',{attrs:{"type":"question-circle","theme":"filled"}}),_vm._v(" "),_c('span',{on:{"click":function($event){return _vm.resetStatus('toSetEnd')}}},[_vm._v(_vm._s(_vm.$t('tdtRoute.endPoint'))+":"+_vm._s(_vm.end))])],1),_vm._v(" "),(_vm.status === 'toSetEnd' && _vm.componentId)?_c('div',{staticClass:"content"},[_c(_vm.componentId,_vm._g(_vm._b({tag:"component"},'component',_vm.componentProps,false),_vm.componentListeners))],1):_vm._e()])]):_vm._e(),_vm._v(" "),(_vm.showRoutePlan)?_c('RoutePlan',{attrs:{"route-plan":_vm.routePlan,"start":{ name: _vm.start },"dest":{ name: _vm.end },"spinning":_vm.spinning,"search-type":_vm.routeActive,"isError":_vm.isError,"themeStyle":[_vm.getBackgroundStyle, _vm.getTextColorStyle]},on:{"style-changed":_vm.styleChanged,"route-plan-clicked":_vm.routePlanClicked,"bus-info-clicked":_vm.busInfoClicked}}):_vm._e()],1)])])}
  10066. var staticRenderFns = []
  10067. // CONCATENATED MODULE: ./src/mapboxgl/tdt/route/TdtRoute.vue?vue&type=template&id=fb60b3aa&
  10068. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  10069. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  10070. /***/ }),
  10071. /***/ "289c":
  10072. /***/ (function(module, exports, __webpack_require__) {
  10073. "use strict";
  10074. var utils = __webpack_require__("d691");
  10075. var bind = __webpack_require__("443f");
  10076. var Axios = __webpack_require__("5dfc");
  10077. var mergeConfig = __webpack_require__("44c1");
  10078. var defaults = __webpack_require__("764e");
  10079. /**
  10080. * Create an instance of Axios
  10081. *
  10082. * @param {Object} defaultConfig The default config for the instance
  10083. * @return {Axios} A new instance of Axios
  10084. */
  10085. function createInstance(defaultConfig) {
  10086. var context = new Axios(defaultConfig);
  10087. var instance = bind(Axios.prototype.request, context);
  10088. // Copy axios.prototype to instance
  10089. utils.extend(instance, Axios.prototype, context);
  10090. // Copy context to instance
  10091. utils.extend(instance, context);
  10092. return instance;
  10093. }
  10094. // Create the default instance to be exported
  10095. var axios = createInstance(defaults);
  10096. // Expose Axios class to allow class inheritance
  10097. axios.Axios = Axios;
  10098. // Factory for creating new instances
  10099. axios.create = function create(instanceConfig) {
  10100. return createInstance(mergeConfig(axios.defaults, instanceConfig));
  10101. };
  10102. // Expose Cancel & CancelToken
  10103. axios.Cancel = __webpack_require__("f3f9");
  10104. axios.CancelToken = __webpack_require__("efd0");
  10105. axios.isCancel = __webpack_require__("b8e7");
  10106. // Expose all/spread
  10107. axios.all = function all(promises) {
  10108. return Promise.all(promises);
  10109. };
  10110. axios.spread = __webpack_require__("8bd2");
  10111. module.exports = axios;
  10112. // Allow use of default import syntax in TypeScript
  10113. module.exports.default = axios;
  10114. /***/ }),
  10115. /***/ "28d7":
  10116. /***/ (function(module, exports, __webpack_require__) {
  10117. "use strict";
  10118. var _interopRequireDefault = __webpack_require__("8e6d");
  10119. Object.defineProperty(exports, "__esModule", {
  10120. value: true
  10121. });
  10122. exports.default = void 0;
  10123. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  10124. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  10125. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  10126. var _card = _interopRequireDefault(__webpack_require__("333c"));
  10127. var _LayerListViewModel = _interopRequireDefault(__webpack_require__("97dd"));
  10128. //
  10129. //
  10130. //
  10131. //
  10132. //
  10133. //
  10134. //
  10135. //
  10136. //
  10137. //
  10138. //
  10139. //
  10140. //
  10141. //
  10142. //
  10143. //
  10144. //
  10145. //
  10146. //
  10147. //
  10148. //
  10149. //
  10150. //
  10151. //
  10152. //
  10153. //
  10154. //
  10155. //
  10156. //
  10157. //
  10158. //
  10159. //
  10160. //
  10161. //
  10162. //
  10163. //
  10164. //
  10165. //
  10166. //
  10167. //
  10168. //
  10169. //
  10170. //
  10171. //
  10172. //
  10173. //
  10174. //
  10175. //
  10176. //
  10177. //
  10178. //
  10179. //
  10180. //
  10181. //
  10182. //
  10183. //
  10184. //
  10185. //
  10186. //
  10187. //
  10188. //
  10189. //
  10190. //
  10191. //
  10192. //
  10193. //
  10194. //
  10195. //
  10196. //
  10197. //
  10198. //
  10199. //
  10200. //
  10201. //
  10202. var _default2 = {
  10203. name: 'SmLayerList',
  10204. filters: {
  10205. isVisible: function isVisible(visibility) {
  10206. return visibility === 'visible';
  10207. }
  10208. },
  10209. mixins: [_mapGetter.default, _control.default, _theme.default, _card.default],
  10210. props: {
  10211. collapsed: {
  10212. type: Boolean,
  10213. // 是否折叠
  10214. default: true
  10215. },
  10216. iconClass: {
  10217. type: String,
  10218. default: 'sm-components-icons-layer-style'
  10219. },
  10220. headerName: {
  10221. type: String,
  10222. default: function _default() {
  10223. return this.$t('layerList.title');
  10224. }
  10225. }
  10226. },
  10227. data: function data() {
  10228. return {
  10229. sourceNames: [],
  10230. sourceList: {},
  10231. disabledStyle: {
  10232. color: '#c0c4cc'
  10233. }
  10234. };
  10235. },
  10236. watch: {
  10237. colorGroupsData: {
  10238. handler: function handler() {
  10239. this.changCheckStyle();
  10240. }
  10241. }
  10242. },
  10243. created: function created() {
  10244. this.viewModel = new _LayerListViewModel.default();
  10245. },
  10246. methods: {
  10247. handleCollapseChange: function handleCollapseChange() {
  10248. this.changCheckStyle();
  10249. },
  10250. changCheckStyle: function changCheckStyle() {
  10251. var _this = this;
  10252. setTimeout(function () {
  10253. var checkBoxsList = _this.$el.querySelectorAll('.ant-checkbox');
  10254. var _iteratorNormalCompletion = true;
  10255. var _didIteratorError = false;
  10256. var _iteratorError = undefined;
  10257. try {
  10258. for (var _iterator = checkBoxsList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  10259. var item = _step.value;
  10260. var childrens = item.childNodes;
  10261. var checkbox = childrens[1]; // let label = item.parentNode.childNodes[1];
  10262. if (item.classList.contains('ant-checkbox-checked')) {
  10263. checkbox.style.borderColor = _this.getColorStyle(0).color;
  10264. checkbox.style.backgroundColor = _this.getColorStyle(0).color; // label.style.color = this.getColorStyle(0).color;
  10265. } else {
  10266. checkbox.style.borderColor = '#DCDFE6';
  10267. checkbox.style.backgroundColor = '#fff'; // label.style.color = this.getTextColor;
  10268. }
  10269. }
  10270. } catch (err) {
  10271. _didIteratorError = true;
  10272. _iteratorError = err;
  10273. } finally {
  10274. try {
  10275. if (!_iteratorNormalCompletion && _iterator.return != null) {
  10276. _iterator.return();
  10277. }
  10278. } finally {
  10279. if (_didIteratorError) {
  10280. throw _iteratorError;
  10281. }
  10282. }
  10283. }
  10284. }, 0);
  10285. },
  10286. toggleVisibility: function toggleVisibility(sourceLayer, sourceName, visibility) {
  10287. this.viewModel && this.viewModel.changeLayerVisible(sourceLayer, sourceName, visibility);
  10288. },
  10289. addNewLayer: function addNewLayer() {
  10290. this.viewModel.addNewLayer();
  10291. },
  10292. deleteLayer: function deleteLayer() {
  10293. this.viewModel.deleteLayer();
  10294. },
  10295. toggleLayerGroupVisibility: function toggleLayerGroupVisibility(sourceName, visibility) {
  10296. this.viewModel && this.viewModel.changeLayerGroupVisibility(sourceName, visibility);
  10297. },
  10298. getDisabledStyle: function getDisabledStyle() {
  10299. var isText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
  10300. return {
  10301. color: '#c0c4cc'
  10302. };
  10303. },
  10304. layerUpdate: function layerUpdate() {
  10305. var _this2 = this;
  10306. this.$nextTick(function () {
  10307. _this2.sourceList = _this2.viewModel && _this2.viewModel.initLayerList();
  10308. _this2.sourceNames = _this2.viewModel && _this2.viewModel.getSourceNames();
  10309. _this2.viewModel && _this2.changCheckStyle();
  10310. });
  10311. }
  10312. },
  10313. loaded: function loaded() {
  10314. var _this3 = this;
  10315. !this.parentIsWebMapOrMap && this.$el.classList.add('layer-list-container'); // this.layerUpdate();
  10316. this.$nextTick(function () {
  10317. if (_this3.viewModel) {
  10318. _this3.sourceList = _this3.viewModel.initLayerList();
  10319. _this3.sourceNames = _this3.viewModel.getSourceNames();
  10320. }
  10321. });
  10322. this.layerUpdateFn = this.layerUpdate.bind(this);
  10323. this.viewModel.on('layersUpdated', this.layerUpdateFn);
  10324. },
  10325. removed: function removed() {
  10326. this.sourceList = {};
  10327. this.sourceNames = [];
  10328. },
  10329. beforeDestory: function beforeDestory() {
  10330. this.viewModel && this.viewModel.off('layersUpdated', this.layerUpdateFn);
  10331. this.$options.removed.call(this);
  10332. }
  10333. };
  10334. exports.default = _default2;
  10335. /***/ }),
  10336. /***/ "29e0":
  10337. /***/ (function(module, exports) {
  10338. module.exports = "data:image/png;base64,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RkDnBAgQIECAQALCIguLAAECBAgQGAWExQjonAABAgQIEEhAWGRhESBAgAABAqOAsBgBnRMgQIAAAQIJCIssLAIECBAgQGAUEBYjoHMCBAgQIEAgAWGRhUWAAAECBAiMAsJiBHROgAABAgQIJCAssrAIECBAgACBUUBYjIDOCRAgQIAAgQSERRYWAQIECBAgMAoIixHQOQECBAgQIJCAsMjCIkCAAAECBEYBYTECOidAgAABAgQSEBZZWAQIECBAgMAoICxGQOcECBAgQIBAAsIiC4sAAQIECBAYBYTFCOicAAECBAgQSEBYZGERIECAAAECo4CwGAGdEyBAgAABAgkIiywsAgQIECBAYBQQFiOgcwIECBAgQCABYZGFRYAAAQIECIwCwmIEdE6AAAECBAgkICyysAgQIECAAIFRQFiMgM4JECBAgACBBIRFFhYBAgQIECAwCgiLEdA5AQIECBAgkICwyMIiQIAAAQIERgFhMQI6J0CAAAECBBIQFllYBAgQIECAwCggLEZA5wQIECBAgEACwiILiwABAgQIEBgFhMUI6JwAAQIECBBIQFhkYREgQIAAAQKjgLAYAZ0TIECAAAECCQiLLCwCBAgQIEBgFBAWI6BzAgQIECBAIAFhkYVFgAABAgQIjALCYgR0ToAAAQIECCQgLLKwCBAgQIAAgVFAWIyAzgkQIECAAIEEhEUWFgECBAgQIDAKCIsR0DkBAgQIECCQgLDIwiJAgAABAgRGAWExAjonQIAAAQIEEhAWWVgECBAgQIDAKCAsRkDnBAgQIECAQALCIguLAAECBAgQGAWExQjonAABAgQIEEhAWGRhESBAgAABAqOAsBgBnRMgQIAAAQIJCIssLAIECBAgQGAUEBYjoHMCBAgQIEAgAWGRhUWAAAECBAiMAsJiBHROgAABAgQIJCAssrAIECBAgACBUUBYjIDOCRAgQIAAgQSERRYWAQIECBAgMAoIixHQOQECBAgQIJCAsMjCIkCAAAECBEYBYTECOidAgAABAgQSEBZZWAQIECBAgMAoICxGQOcECBAgQIBAAsIiC4sAAQIECBAYBYTFCOicAAECBAgQSEBYZGERIECAAAECo4CwGAGdEyBAgAABAgkIiywsAgQIECBAYBQQFiOgcwIECBAgQCABYZGFRYAAAQIECIwCwmIEdE6AAAECBAgkICyysAgQIECAAIFRQFiMgM4JECBAgACBBIRFFhYBAgQIECAwCgiLEdA5AQIECBAgkICwyMIiQIAAAQIERgFhMQI6J0CAAAECBBIQFllYBAgQIECAwCggLEZA5wQIECBAgEACwiILiwABAgQIEBgFhMUI6JwAAQIECBBIQFhkYREgQIAAAQKjgLAYAZ0TIECAAAECCQiLLCwCBAgQIEBgFBAWI6BzAgQIECBAIAFhkYVFgAABAgQIjALCYgR0ToAAAQIECCQgLLKwCBAgQIAAgVFAWIyAzgkQIECAAIEEhEUWFgECBAgQIDAKCIsR0DkBAgQIECCQgLDIwiJAgAABAgRGAWExAjonQIAAAQIEEhAWWVgECBAgQIDAKCAsRkDnBAgQIECAQALCIguLAAECBAgQGAWExQjonAABAgQIEEhAWGRhESBAgAABAqOAsBgBnRMgQIAAAQIJCIssLAIECBAgQGAUEBYjoHMCBAgQIEAgAWGRhUWAAAECBAiMAsJiBHROgAABAgQIJCAssrAIECBAgACBUUBYjIDOCRAgQIAAgQSERRYWAQIECBAgMAoIixHQOQECBAgQIJCAsMjCIkCAAAECBEYBYTECOidAgAABAgQSEBZZWAQIECBAgMAoICxGQOcECBAgQIBAAsIiC4sAAQIECBAYBYTFCOicAAECBAgQSEBYZGERIECAAAECo4CwGAGdEyBAgAABAgkIiywsAgQIECBAYBQQFiOgcwIECBAgQCABYZGFRYAAAQIECIwCwmIEdE6AAAECBAgkICyysAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC91DgeA/fs7dMgAABAv8HgYdPnv3o4uLil9c/6uzs7MfP33n0qxc/9ra/9pUPPvjcX//2r/cvD4fzw+H4z7PDW99+fv71v7z4eW89/uN7l4fLn774d/+8WeB4OP7sw/NvvHfzd7z8K8Li5T6+SoAAAQKvIXDb4XD9CDe9pqh4jQ/oE06WuBAWn4DrywQIECDwagI3BcD1q9z210TFq302r/LdrxsXwuJVlH0vAQIECLxU4LbD4fqH3fSaouKlH8WtfPF14uL44PHTq9+S8osAAQIECBAgsAv8D3+y/1UxtS72AAAAAElFTkSuQmCC"
  10339. /***/ }),
  10340. /***/ "2aa4":
  10341. /***/ (function(module, exports) {
  10342. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAeCAYAAADQBxWhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA25pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpmZDdjMWRjYi03ZmQ0LWRkNDUtOTYwYi03ZDI4N2E3YzE1NTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjM3OTIwRTRCNjJBMTFFMzk1NTE5NDNCOEIwNDE2NDkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjM3OTIwRTNCNjJBMTFFMzk1NTE5NDNCOEIwNDE2NDkiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpkNzA1ZmFjMi05YWNiLWFhNDUtOGI1Ny01ZTMzM2MzOGU3YjQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NDkyNDhDNTc3MUU5MTFFM0JCMDY4QjkwNjk5QzNFQ0MiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4Vkm2hAAAE6klEQVR42qRXb2xTVRQ/70/b163dujm2MYOZgRiCGgJTBijRdGCoIsGZGSRBSRSZMSQj8e8HJX5aokuM4YOYYMzkg8QpwjBAiM4YAhM1GOYgTDZFZd0Ko+3Wrn/fe9dzXi9t39a9tXCSX+57ffec3z33nHvOrcAYg7HmJ6GACIgWxDOItYhGhAcRRlxFnEV8i/hh4bnjDEoQYQ7SxxFdNkVpcpQ5QbY7QJIlEEQRmK6DpmqgppKQjMUhnUicx7mvI/GPt0tqQ+yzKY5dissFjrKyeQ0kYzFIRKNInvwUX3cjeXo+HTHv2Y447HS7d1XW1hZFSELzaD7p0XajA/ZSSD9GxU3lVZ7cNixbAsKiheatod8QM4X0UP8pslMs6Ua7orTnE5JIHTtBem1HjhAXIL//BghLGgsaI327U2lHb32WMfWv8lGWXqhYUPOg3enMrWbzepC2t4G690Ngl4Yzi9i7B8QHls4ywkaugvp2p/Gcisdh6sbEH/i4fK6sluk42BwOE6FBumkD6D+dBTYaMDwUVtxvEOqDl0E/2ZdZcd0CY2Hsz5FcYqAdspdOJumYnZmLdMsswq1Pg+BUQD14GI22gti8EkBRQP/1dxAfXgF6zzFjMdK2VmD+cdC+OWHSJ3tIusWK1ItHxEy65iGDxHagy3jXPuk2Rr0P68Gb7SC/sxtYMAxCtQfUzn0AkxGTPrfnnSumRNooybLpR61rP0BDbcYTNG6Q8cw1BBckNNQbXgr1tdmYZxMwY+9eK1IPVRpTYvw3BtKGdRlP3usCoXk5SC9tAwGzk4XCoB3sARa4AeJGL0ivvmggP+G4vSor0uu6ptWLkpTbXu9aEH0tRtJIz/qATQSBDVwCre8MiKtXGoTs3AXQCJVuEB9rNnlLpRJlyop0dCYpuMoMjyiZ4L7FoF8cAr33+0xhWN0Esq8lYxy3V+//DfRDx8zh0TQa/rEiPa+m0k2yPVe9iIAw6zyiN+orb2WPkLAUY4xFf6aoyRQNP1uRHknFYzsVV7m51GHVEWqqARDsMm4ddhvR+ygelXFgQ8PA/v634MJuFQiUXivSU6l4YgTP1WI81Jnse6ENAJMIMHPZNb8RQ4hMA0NiWHS3QS7wkknVSPuiJxtTtEOkVC1OztfatmK3+NJdc1fxjThvi7UP9md/j0zcpHb3PJbAQ8X006+cFe62co8Hblemw2GIT0V6kPC5YlvbDlToJ8U7IOwnO6X00xjiCVQ8Eg0G8TqSKoqM5tF81DtK+uhlrBRSkiiiNRGdfjk8HghMh6y9pu80j+bTBQ4Jo3dyMSOh1tPrqqpar7hdsz7SvSgaDNGZ2Yxk8VJCIVp8I0Md0VBILfQRCans7OHzShJRQGn45YQwx/eLiM9ik5OmH/n7AcQg6aKQHQlhKwCZf5P4PJHIqOgyo5Su8hW6XtQirlQ3NFSIePfV8c570++PdF278shH/uGJW7pUPfNGvcB7do7It1iw2I3riM54JNOoaRyKRz5HQnqt5i2sksNN7YLuaAi6wyp0S+XXW5nD8BTQw/nCoOhYcavq6u4JjI0F1g2c3j6KtZMaSh5UjvxnQpqPKY60XGTsE5Oq+q4zEu0+Hgp0I6GdhyWfIMh7aJIjlbcInU5JfsEvSryDp7/+btkab8dfA6f4lvs5icrjlWkAbP7/Uv8LMAAT3TYbmguilwAAAABJRU5ErkJggg=="
  10343. /***/ }),
  10344. /***/ "2ac4":
  10345. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  10346. "use strict";
  10347. __webpack_require__.r(__webpack_exports__);
  10348. /* harmony import */ var _RasterTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("a097");
  10349. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _RasterTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _RasterTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  10350. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  10351. var render, staticRenderFns
  10352. /* normalize component */
  10353. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  10354. _RasterTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  10355. render,
  10356. staticRenderFns,
  10357. false,
  10358. null,
  10359. null,
  10360. null
  10361. )
  10362. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  10363. /***/ }),
  10364. /***/ "2bec":
  10365. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  10366. "use strict";
  10367. __webpack_require__.r(__webpack_exports__);
  10368. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LiquidFill_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3a31");
  10369. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LiquidFill_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LiquidFill_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  10370. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LiquidFill_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LiquidFill_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  10371. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LiquidFill_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  10372. /***/ }),
  10373. /***/ "2bf3":
  10374. /***/ (function(module, exports, __webpack_require__) {
  10375. // extracted by mini-css-extract-plugin
  10376. /***/ }),
  10377. /***/ "2c06":
  10378. /***/ (function(module) {
  10379. module.exports = JSON.parse("[{\"name\":\"黑龙江省\",\"coord\":[127.64559817675396,48.48668098449708]},{\"name\":\"内蒙古自治区\",\"coord\":[118.34519572208615,45.370218276977525]},{\"name\":\"新疆维吾尔自治区\",\"coord\":[87.13479065593184,41.75497055053711]},{\"name\":\"吉林省\",\"coord\":[126.12985278813787,43.57983207702637]},{\"name\":\"辽宁省\",\"coord\":[124.02494773936439,41.105743408203125]},{\"name\":\"甘肃省\",\"coord\":[102.87785725633012,37.69582366943361]},{\"name\":\"河北省\",\"coord\":[115.66327227481898,39.33383178710938]},{\"name\":\"北京市\",\"coord\":[116.62199343603638,40.25053787231445]},{\"name\":\"山西省\",\"coord\":[112.45180235808988,37.666561126708984]},{\"name\":\"天津市\",\"coord\":[117.35711842642581,39.406789779663086]},{\"name\":\"陕西省\",\"coord\":[109.56294003056632,35.64754199981689]},{\"name\":\"宁夏回族自治区\",\"coord\":[105.96110877640074,37.3081169128418]},{\"name\":\"青海省\",\"coord\":[96.07301048277901,35.44417190551758]},{\"name\":\"山东省\",\"coord\":[118.03833752951093,36.29800605773925]},{\"name\":\"西藏自治区\",\"coord\":[87.47361520439412,31.6703872680664]},{\"name\":\"河南省\",\"coord\":[113.07832397097275,33.87751102447509]},{\"name\":\"江苏省\",\"coord\":[119.93926538201052,32.945452690124505]},{\"name\":\"安徽省\",\"coord\":[117.15146765881019,32.024482727050774]},{\"name\":\"四川省\",\"coord\":[102.28998890142759,30.182161331176758]},{\"name\":\"湖北省\",\"coord\":[112.87798261431585,31.157071113586426]},{\"name\":\"重庆市\",\"coord\":[107.870126637831,30.188085556030266]},{\"name\":\"上海市\",\"coord\":[121.42561166015514,31.276043891906745]},{\"name\":\"浙江省\",\"coord\":[119.75337092707514,29.175934791564945]},{\"name\":\"湖南省\",\"coord\":[111.52770282777405,27.38110256195069]},{\"name\":\"江西省\",\"coord\":[115.51091280655628,27.283511161804206]},{\"name\":\"云南省\",\"coord\":[101.27053825991308,25.19783210754396]},{\"name\":\"贵州省\",\"coord\":[106.49672346773299,26.92267990112305]},{\"name\":\"福建省\",\"coord\":[117.9976766946587,25.939599990844727]},{\"name\":\"广西壮族自治区\",\"coord\":[108.98706831086302,23.891559600830078]},{\"name\":\"台湾省\",\"coord\":[120.82468432537434,23.602651596069336]},{\"name\":\"香港特别行政区\",\"coord\":[114.21036850371561,22.374858856201172]},{\"name\":\"海南省\",\"coord\":[109.62792940960824,19.163116455078125]},{\"name\":\"广东省\",\"coord\":[113.32127888266032,22.873867034912106]},{\"name\":\"澳门特别行政区\",\"coord\":[113.56819996291901,22.160347992976]}]");
  10380. /***/ }),
  10381. /***/ "2c56":
  10382. /***/ (function(module, exports, __webpack_require__) {
  10383. "use strict";
  10384. var _interopRequireDefault = __webpack_require__("8e6d");
  10385. Object.defineProperty(exports, "__esModule", {
  10386. value: true
  10387. });
  10388. exports.default = void 0;
  10389. var _mapEvent = _interopRequireDefault(__webpack_require__("d3e9"));
  10390. var _default = {
  10391. props: {
  10392. position: {
  10393. type: String,
  10394. default: 'top-left',
  10395. validator: function validator(value) {
  10396. return ['top-left', 'top-right', 'bottom-left', 'bottom-right'].includes(value);
  10397. }
  10398. }
  10399. },
  10400. watch: {
  10401. position: function position() {
  10402. if (this.$el && this.parentIsWebMapOrMap) {
  10403. this.remove(this.map);
  10404. this.addTo(this.map);
  10405. }
  10406. }
  10407. },
  10408. created: function created() {
  10409. var parentName = this.$parent.$options.name;
  10410. this.parentIsWebMapOrMap = parentName && ['smwebmap', 'smncpmap'].includes(this.$parent.$options.name.toLowerCase());
  10411. },
  10412. mounted: function mounted() {
  10413. this.filterDelayLoad = !['smwebmap', 'smminimap', 'smncpmap'].includes(this.$options.name && this.$options.name.toLowerCase());
  10414. if (this.$el && this.parentIsWebMapOrMap) {
  10415. if (this.filterDelayLoad) {
  10416. this.isShow = false;
  10417. this.$el.style && (this.$el.style.display = 'none');
  10418. }
  10419. var targetName = this.getControlMapName();
  10420. if (_mapEvent.default.$options.getMap(targetName)) {
  10421. this.mapLoaded(_mapEvent.default.$options.getMap(targetName));
  10422. }
  10423. _mapEvent.default.$on('load-map', this.controlLoadMapSucceed);
  10424. }
  10425. },
  10426. methods: {
  10427. initControl: function initControl() {
  10428. var self = this;
  10429. return {
  10430. onAdd: function onAdd() {
  10431. return self.$el;
  10432. },
  10433. onRemove: function onRemove() {
  10434. return self.map;
  10435. }
  10436. };
  10437. },
  10438. addTo: function addTo() {
  10439. this.control = this.initControl();
  10440. this.map.addControl(this.control, this.position);
  10441. this.$el.classList.add('mapboxgl-ctrl');
  10442. },
  10443. remove: function remove() {
  10444. this.control && this.map && this.map.removeControl(this.control);
  10445. },
  10446. getControlMapName: function getControlMapName() {
  10447. var selfParent = this.$parent;
  10448. var parentTarget = selfParent && selfParent.$options.name && selfParent.$options.name.toLowerCase() === 'smwebmap' && selfParent.target;
  10449. return this.mapTarget || parentTarget || Object.keys(_mapEvent.default.$options.getAllMaps())[0];
  10450. },
  10451. controlLoadMapSucceed: function controlLoadMapSucceed(map, target) {
  10452. var targetName = this.getControlMapName();
  10453. if (target === targetName) {
  10454. this.mapLoaded(map);
  10455. }
  10456. },
  10457. mapLoaded: function mapLoaded(map) {
  10458. this.map = map;
  10459. this.addTo();
  10460. if (this.filterDelayLoad) {
  10461. this.isShow = true;
  10462. this.$el.style && (this.$el.style.display = 'block');
  10463. }
  10464. }
  10465. },
  10466. beforeDestroy: function beforeDestroy() {
  10467. this.remove();
  10468. _mapEvent.default.$off('load-map', this.controlLoadMapSucceed);
  10469. }
  10470. };
  10471. exports.default = _default;
  10472. /***/ }),
  10473. /***/ "2d64":
  10474. /***/ (function(module, exports, __webpack_require__) {
  10475. "use strict";
  10476. var _interopRequireDefault = __webpack_require__("8e6d");
  10477. Object.defineProperty(exports, "__esModule", {
  10478. value: true
  10479. });
  10480. exports.default = void 0;
  10481. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  10482. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  10483. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  10484. var _card = _interopRequireDefault(__webpack_require__("333c"));
  10485. var _LegendViewModel = _interopRequireDefault(__webpack_require__("a124"));
  10486. var _util = __webpack_require__("1448");
  10487. //
  10488. //
  10489. //
  10490. //
  10491. //
  10492. //
  10493. //
  10494. //
  10495. //
  10496. //
  10497. //
  10498. //
  10499. //
  10500. //
  10501. //
  10502. //
  10503. //
  10504. //
  10505. //
  10506. //
  10507. //
  10508. //
  10509. //
  10510. //
  10511. //
  10512. //
  10513. //
  10514. //
  10515. //
  10516. //
  10517. //
  10518. //
  10519. //
  10520. //
  10521. //
  10522. //
  10523. //
  10524. //
  10525. //
  10526. //
  10527. //
  10528. //
  10529. //
  10530. //
  10531. //
  10532. //
  10533. //
  10534. //
  10535. //
  10536. //
  10537. //
  10538. //
  10539. //
  10540. //
  10541. //
  10542. //
  10543. //
  10544. //
  10545. //
  10546. //
  10547. //
  10548. //
  10549. //
  10550. //
  10551. //
  10552. //
  10553. //
  10554. //
  10555. //
  10556. //
  10557. //
  10558. //
  10559. //
  10560. //
  10561. //
  10562. //
  10563. //
  10564. //
  10565. //
  10566. //
  10567. //
  10568. //
  10569. //
  10570. //
  10571. //
  10572. //
  10573. //
  10574. //
  10575. //
  10576. //
  10577. //
  10578. //
  10579. //
  10580. //
  10581. //
  10582. //
  10583. //
  10584. //
  10585. //
  10586. //
  10587. //
  10588. //
  10589. //
  10590. //
  10591. //
  10592. //
  10593. //
  10594. //
  10595. //
  10596. //
  10597. //
  10598. //
  10599. //
  10600. //
  10601. //
  10602. //
  10603. //
  10604. //
  10605. //
  10606. //
  10607. //
  10608. //
  10609. //
  10610. //
  10611. //
  10612. //
  10613. //
  10614. //
  10615. //
  10616. //
  10617. //
  10618. //
  10619. //
  10620. //
  10621. //
  10622. //
  10623. //
  10624. //
  10625. //
  10626. //
  10627. //
  10628. //
  10629. //
  10630. //
  10631. //
  10632. //
  10633. //
  10634. //
  10635. //
  10636. //
  10637. //
  10638. //
  10639. //
  10640. //
  10641. //
  10642. //
  10643. //
  10644. //
  10645. //
  10646. //
  10647. //
  10648. //
  10649. //
  10650. //
  10651. //
  10652. //
  10653. //
  10654. //
  10655. //
  10656. //
  10657. //
  10658. //
  10659. //
  10660. //
  10661. //
  10662. //
  10663. //
  10664. //
  10665. //
  10666. //
  10667. //
  10668. //
  10669. //
  10670. //
  10671. //
  10672. //
  10673. //
  10674. //
  10675. //
  10676. //
  10677. //
  10678. //
  10679. //
  10680. //
  10681. //
  10682. //
  10683. //
  10684. //
  10685. //
  10686. //
  10687. //
  10688. //
  10689. //
  10690. //
  10691. //
  10692. //
  10693. //
  10694. //
  10695. //
  10696. //
  10697. var _default = {
  10698. name: 'SmLegend',
  10699. filters: {
  10700. selectLayerType: function selectLayerType(featureType) {
  10701. return {
  10702. POLYGON: 'sm-components-icons-polygon-layer',
  10703. POINT: 'sm-components-icons-point-layer',
  10704. LINE: 'sm-components-icons-line-layer'
  10705. }[featureType];
  10706. }
  10707. },
  10708. mixins: [_mapGetter.default, _control.default, _theme.default, _card.default],
  10709. props: {
  10710. collapsed: {
  10711. type: Boolean,
  10712. // 是否折叠
  10713. default: true
  10714. },
  10715. iconClass: {
  10716. type: String,
  10717. default: 'sm-components-icons-layer-style'
  10718. },
  10719. layerNames: {
  10720. type: Array,
  10721. required: true
  10722. },
  10723. isShowTitle: {
  10724. type: Boolean,
  10725. default: false
  10726. },
  10727. isShowField: {
  10728. type: Boolean,
  10729. default: false
  10730. },
  10731. mode: {
  10732. type: String,
  10733. default: 'simple',
  10734. validator: function validator(mode) {
  10735. return ['simple', 'panel'].includes(mode);
  10736. }
  10737. },
  10738. position: {
  10739. type: String,
  10740. default: 'bottom-left'
  10741. }
  10742. },
  10743. data: function data() {
  10744. return {
  10745. legendList: {},
  10746. // 控制第一个图例默认展开
  10747. activeLegend: [],
  10748. themeStyle: {}
  10749. };
  10750. },
  10751. computed: {
  10752. getTitleColor: function getTitleColor() {
  10753. return {
  10754. color: this['colorGroupsData'][1]
  10755. };
  10756. },
  10757. noBorder: function noBorder() {
  10758. if (this.mode === 'simple') {
  10759. return {
  10760. background: 'transparent',
  10761. 'box-shadow': 'none'
  10762. };
  10763. } else {
  10764. return {};
  10765. }
  10766. },
  10767. rankSymbolStyle: function rankSymbolStyle() {
  10768. return function (styleItem) {
  10769. var style = styleItem.style,
  10770. radius = styleItem.radius,
  10771. color = styleItem.color;
  10772. var generateStyle = {};
  10773. switch (style.type) {
  10774. case 'BASIC_POINT':
  10775. generateStyle.background = (0, _util.getColorWithOpacity)(color || style.fillColor, style.fillOpacity);
  10776. generateStyle.width = "".concat(radius * 2, "px");
  10777. generateStyle.height = "".concat(radius * 2, "px");
  10778. generateStyle.borderRadius = "".concat(radius, "px");
  10779. break;
  10780. case 'SYMBOL_POINT':
  10781. generateStyle.color = (0, _util.getColorWithOpacity)(color || style.fillColor, style.fillOpacity);
  10782. generateStyle.fontSize = "".concat(radius * 2, "px");
  10783. break;
  10784. case 'IMAGE_POINT':
  10785. generateStyle.background = "url(".concat(style.imageInfo.url, ")");
  10786. generateStyle.backgroundSize = 'contain';
  10787. generateStyle.width = "".concat(radius * 2, "px");
  10788. generateStyle.height = "".concat(radius * 2, "px");
  10789. break;
  10790. default:
  10791. break;
  10792. }
  10793. return generateStyle;
  10794. };
  10795. },
  10796. showRangeInfo: function showRangeInfo() {
  10797. var _this = this;
  10798. return function (item, layerKey) {
  10799. var start = item.start,
  10800. end = item.end;
  10801. if (start !== undefined && end !== undefined) {
  10802. if (_this.legendList[layerKey].integerType) {
  10803. return _this.getIntegerRangeInfo(start, end);
  10804. }
  10805. return "".concat(start, " - ").concat(end);
  10806. }
  10807. return start !== undefined ? "\u2265".concat(start) : "\u2264".concat(end);
  10808. };
  10809. }
  10810. },
  10811. watch: {
  10812. layerNames: function layerNames(newVal) {
  10813. this.layerNames = newVal;
  10814. this.initLegendList();
  10815. }
  10816. },
  10817. methods: {
  10818. initLegendList: function initLegendList() {
  10819. var _this2 = this;
  10820. this.legendList = {};
  10821. if (this.viewModel) {
  10822. this.layerNames.forEach(function (layer) {
  10823. var style = _this2.viewModel.getStyle(layer);
  10824. if (!style) {
  10825. return;
  10826. }
  10827. if (!_this2.legendList[layer]) {
  10828. _this2.$set(_this2.legendList, layer, style);
  10829. }
  10830. });
  10831. this.activeLegend = JSON.stringify(this.legendList) !== '{}' ? Object.keys(this.legendList)[0] : [];
  10832. }
  10833. },
  10834. getIntegerRangeInfo: function getIntegerRangeInfo(start, end) {
  10835. if (end - 1 === start || end === start) {
  10836. return "".concat(start);
  10837. }
  10838. return "".concat(start, " - ").concat(end - 1);
  10839. }
  10840. },
  10841. loaded: function loaded() {
  10842. // show用来控制图例列表的显示
  10843. this.viewModel = new _LegendViewModel.default(this.webmap);
  10844. this.initLegendList();
  10845. },
  10846. removed: function removed() {
  10847. this.legendList = {};
  10848. }
  10849. };
  10850. exports.default = _default;
  10851. /***/ }),
  10852. /***/ "2d647":
  10853. /***/ (function(module, exports, __webpack_require__) {
  10854. "use strict";
  10855. var _interopRequireDefault = __webpack_require__("8e6d");
  10856. Object.defineProperty(exports, "__esModule", {
  10857. value: true
  10858. });
  10859. exports.default = void 0;
  10860. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  10861. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  10862. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  10863. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  10864. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  10865. var _Marker2 = _interopRequireDefault(__webpack_require__("4361"));
  10866. var FluorescenceMarker =
  10867. /*#__PURE__*/
  10868. function (_Marker) {
  10869. (0, _inherits2.default)(FluorescenceMarker, _Marker);
  10870. function FluorescenceMarker(features) {
  10871. var _this;
  10872. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  10873. (0, _classCallCheck2.default)(this, FluorescenceMarker);
  10874. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(FluorescenceMarker).call(this, features, options));
  10875. _this.features && _this._createMarker();
  10876. return _this;
  10877. }
  10878. (0, _createClass2.default)(FluorescenceMarker, [{
  10879. key: "setMarkersWidth",
  10880. value: function setMarkersWidth(width) {
  10881. this.options.width = width;
  10882. var markerContainer = document.getElementsByClassName('sm-component-animate-marker--fluorescence');
  10883. for (var i = 0; i < markerContainer.length; i++) {
  10884. this._setFluorescenceWidth(markerContainer[i].style);
  10885. }
  10886. }
  10887. }, {
  10888. key: "setMarkersColors",
  10889. value: function setMarkersColors(colors) {
  10890. this.options.colors = colors;
  10891. if (colors && colors.length && colors.length > 0) {
  10892. var markerContainer = document.getElementsByClassName('sm-component-animate-marker--fluorescence');
  10893. for (var i = 0; i < markerContainer.length; i++) {
  10894. this._setFluorescenceColor(markerContainer[i].style);
  10895. }
  10896. }
  10897. }
  10898. }, {
  10899. key: "_createMarker",
  10900. value: function _createMarker() {
  10901. var _this2 = this;
  10902. this.features.features.forEach(function (point) {
  10903. var markerContainer = document.createElement('div');
  10904. markerContainer.className = 'sm-component-animate-marker--fluorescence';
  10905. var marker = document.createElement('div');
  10906. marker.className = 'sm-component-animate-marker__fluorescence';
  10907. markerContainer.appendChild(marker);
  10908. var nameContainer = _this2._getTextContainer(point, 'fluorescence-name');
  10909. markerContainer.appendChild(nameContainer);
  10910. _this2._setFluorescenceWidth(markerContainer.style);
  10911. _this2._setFluorescenceColor(markerContainer.style);
  10912. _this2.markersElement.push(markerContainer);
  10913. });
  10914. }
  10915. }, {
  10916. key: "_setFluorescenceWidth",
  10917. value: function _setFluorescenceWidth(style) {
  10918. if (this.options.width) {
  10919. style.setProperty('--container-width', this.options.width / 3 + 'px');
  10920. style.setProperty('--box-shadow-width', this.options.width + 'px');
  10921. }
  10922. }
  10923. }, {
  10924. key: "_setFluorescenceColor",
  10925. value: function _setFluorescenceColor(style) {
  10926. if (this.options.colors && this.options.colors.length > 0) {
  10927. style.setProperty('--box-shadow-color', this.options.colors[0]);
  10928. style.setProperty('--light-color', this.options.colors[1]);
  10929. }
  10930. }
  10931. }]);
  10932. return FluorescenceMarker;
  10933. }(_Marker2.default);
  10934. exports.default = FluorescenceMarker;
  10935. /***/ }),
  10936. /***/ "2dbc":
  10937. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  10938. "use strict";
  10939. __webpack_require__.r(__webpack_exports__);
  10940. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Legend_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("2d64");
  10941. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Legend_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Legend_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  10942. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Legend_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Legend_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  10943. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Legend_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  10944. /***/ }),
  10945. /***/ "2df9":
  10946. /***/ (function(module, exports) {
  10947. /**
  10948. * lodash (Custom Build) <https://lodash.com/>
  10949. * Build: `lodash modularize exports="npm" -o ./`
  10950. * Copyright jQuery Foundation and other contributors <https://jquery.org/>
  10951. * Released under MIT license <https://lodash.com/license>
  10952. * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  10953. * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  10954. */
  10955. /** `Object#toString` result references. */
  10956. var symbolTag = '[object Symbol]';
  10957. /** Used for built-in method references. */
  10958. var objectProto = Object.prototype;
  10959. /**
  10960. * Used to resolve the
  10961. * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
  10962. * of values.
  10963. */
  10964. var objectToString = objectProto.toString;
  10965. /**
  10966. * The base implementation of methods like `_.max` and `_.min` which accepts a
  10967. * `comparator` to determine the extremum value.
  10968. *
  10969. * @private
  10970. * @param {Array} array The array to iterate over.
  10971. * @param {Function} iteratee The iteratee invoked per iteration.
  10972. * @param {Function} comparator The comparator used to compare values.
  10973. * @returns {*} Returns the extremum value.
  10974. */
  10975. function baseExtremum(array, iteratee, comparator) {
  10976. var index = -1,
  10977. length = array.length;
  10978. while (++index < length) {
  10979. var value = array[index],
  10980. current = iteratee(value);
  10981. if (current != null && (computed === undefined
  10982. ? (current === current && !isSymbol(current))
  10983. : comparator(current, computed)
  10984. )) {
  10985. var computed = current,
  10986. result = value;
  10987. }
  10988. }
  10989. return result;
  10990. }
  10991. /**
  10992. * The base implementation of `_.gt` which doesn't coerce arguments to numbers.
  10993. *
  10994. * @private
  10995. * @param {*} value The value to compare.
  10996. * @param {*} other The other value to compare.
  10997. * @returns {boolean} Returns `true` if `value` is greater than `other`,
  10998. * else `false`.
  10999. */
  11000. function baseGt(value, other) {
  11001. return value > other;
  11002. }
  11003. /**
  11004. * Checks if `value` is object-like. A value is object-like if it's not `null`
  11005. * and has a `typeof` result of "object".
  11006. *
  11007. * @static
  11008. * @memberOf _
  11009. * @since 4.0.0
  11010. * @category Lang
  11011. * @param {*} value The value to check.
  11012. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  11013. * @example
  11014. *
  11015. * _.isObjectLike({});
  11016. * // => true
  11017. *
  11018. * _.isObjectLike([1, 2, 3]);
  11019. * // => true
  11020. *
  11021. * _.isObjectLike(_.noop);
  11022. * // => false
  11023. *
  11024. * _.isObjectLike(null);
  11025. * // => false
  11026. */
  11027. function isObjectLike(value) {
  11028. return !!value && typeof value == 'object';
  11029. }
  11030. /**
  11031. * Checks if `value` is classified as a `Symbol` primitive or object.
  11032. *
  11033. * @static
  11034. * @memberOf _
  11035. * @since 4.0.0
  11036. * @category Lang
  11037. * @param {*} value The value to check.
  11038. * @returns {boolean} Returns `true` if `value` is correctly classified,
  11039. * else `false`.
  11040. * @example
  11041. *
  11042. * _.isSymbol(Symbol.iterator);
  11043. * // => true
  11044. *
  11045. * _.isSymbol('abc');
  11046. * // => false
  11047. */
  11048. function isSymbol(value) {
  11049. return typeof value == 'symbol' ||
  11050. (isObjectLike(value) && objectToString.call(value) == symbolTag);
  11051. }
  11052. /**
  11053. * This method returns the first argument given to it.
  11054. *
  11055. * @static
  11056. * @since 0.1.0
  11057. * @memberOf _
  11058. * @category Util
  11059. * @param {*} value Any value.
  11060. * @returns {*} Returns `value`.
  11061. * @example
  11062. *
  11063. * var object = { 'user': 'fred' };
  11064. *
  11065. * _.identity(object) === object;
  11066. * // => true
  11067. */
  11068. function identity(value) {
  11069. return value;
  11070. }
  11071. /**
  11072. * Computes the maximum value of `array`. If `array` is empty or falsey,
  11073. * `undefined` is returned.
  11074. *
  11075. * @static
  11076. * @since 0.1.0
  11077. * @memberOf _
  11078. * @category Math
  11079. * @param {Array} array The array to iterate over.
  11080. * @returns {*} Returns the maximum value.
  11081. * @example
  11082. *
  11083. * _.max([4, 2, 8, 6]);
  11084. * // => 8
  11085. *
  11086. * _.max([]);
  11087. * // => undefined
  11088. */
  11089. function max(array) {
  11090. return (array && array.length)
  11091. ? baseExtremum(array, identity, baseGt)
  11092. : undefined;
  11093. }
  11094. module.exports = max;
  11095. /***/ }),
  11096. /***/ "2efc":
  11097. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  11098. "use strict";
  11099. __webpack_require__.r(__webpack_exports__);
  11100. /*!
  11101. * vue-i18n v8.16.0
  11102. * (c) 2020 kazuya kawaguchi
  11103. * Released under the MIT License.
  11104. */
  11105. /* */
  11106. /**
  11107. * constants
  11108. */
  11109. var numberFormatKeys = [
  11110. 'style',
  11111. 'currency',
  11112. 'currencyDisplay',
  11113. 'useGrouping',
  11114. 'minimumIntegerDigits',
  11115. 'minimumFractionDigits',
  11116. 'maximumFractionDigits',
  11117. 'minimumSignificantDigits',
  11118. 'maximumSignificantDigits',
  11119. 'localeMatcher',
  11120. 'formatMatcher',
  11121. 'unit'
  11122. ];
  11123. /**
  11124. * utilities
  11125. */
  11126. function warn (msg, err) {
  11127. if (typeof console !== 'undefined') {
  11128. console.warn('[vue-i18n] ' + msg);
  11129. /* istanbul ignore if */
  11130. if (err) {
  11131. console.warn(err.stack);
  11132. }
  11133. }
  11134. }
  11135. function error (msg, err) {
  11136. if (typeof console !== 'undefined') {
  11137. console.error('[vue-i18n] ' + msg);
  11138. /* istanbul ignore if */
  11139. if (err) {
  11140. console.error(err.stack);
  11141. }
  11142. }
  11143. }
  11144. function isObject (obj) {
  11145. return obj !== null && typeof obj === 'object'
  11146. }
  11147. var toString = Object.prototype.toString;
  11148. var OBJECT_STRING = '[object Object]';
  11149. function isPlainObject (obj) {
  11150. return toString.call(obj) === OBJECT_STRING
  11151. }
  11152. function isNull (val) {
  11153. return val === null || val === undefined
  11154. }
  11155. function parseArgs () {
  11156. var args = [], len = arguments.length;
  11157. while ( len-- ) args[ len ] = arguments[ len ];
  11158. var locale = null;
  11159. var params = null;
  11160. if (args.length === 1) {
  11161. if (isObject(args[0]) || Array.isArray(args[0])) {
  11162. params = args[0];
  11163. } else if (typeof args[0] === 'string') {
  11164. locale = args[0];
  11165. }
  11166. } else if (args.length === 2) {
  11167. if (typeof args[0] === 'string') {
  11168. locale = args[0];
  11169. }
  11170. /* istanbul ignore if */
  11171. if (isObject(args[1]) || Array.isArray(args[1])) {
  11172. params = args[1];
  11173. }
  11174. }
  11175. return { locale: locale, params: params }
  11176. }
  11177. function looseClone (obj) {
  11178. return JSON.parse(JSON.stringify(obj))
  11179. }
  11180. function remove (arr, item) {
  11181. if (arr.length) {
  11182. var index = arr.indexOf(item);
  11183. if (index > -1) {
  11184. return arr.splice(index, 1)
  11185. }
  11186. }
  11187. }
  11188. var hasOwnProperty = Object.prototype.hasOwnProperty;
  11189. function hasOwn (obj, key) {
  11190. return hasOwnProperty.call(obj, key)
  11191. }
  11192. function merge (target) {
  11193. var arguments$1 = arguments;
  11194. var output = Object(target);
  11195. for (var i = 1; i < arguments.length; i++) {
  11196. var source = arguments$1[i];
  11197. if (source !== undefined && source !== null) {
  11198. var key = (void 0);
  11199. for (key in source) {
  11200. if (hasOwn(source, key)) {
  11201. if (isObject(source[key])) {
  11202. output[key] = merge(output[key], source[key]);
  11203. } else {
  11204. output[key] = source[key];
  11205. }
  11206. }
  11207. }
  11208. }
  11209. }
  11210. return output
  11211. }
  11212. function looseEqual (a, b) {
  11213. if (a === b) { return true }
  11214. var isObjectA = isObject(a);
  11215. var isObjectB = isObject(b);
  11216. if (isObjectA && isObjectB) {
  11217. try {
  11218. var isArrayA = Array.isArray(a);
  11219. var isArrayB = Array.isArray(b);
  11220. if (isArrayA && isArrayB) {
  11221. return a.length === b.length && a.every(function (e, i) {
  11222. return looseEqual(e, b[i])
  11223. })
  11224. } else if (!isArrayA && !isArrayB) {
  11225. var keysA = Object.keys(a);
  11226. var keysB = Object.keys(b);
  11227. return keysA.length === keysB.length && keysA.every(function (key) {
  11228. return looseEqual(a[key], b[key])
  11229. })
  11230. } else {
  11231. /* istanbul ignore next */
  11232. return false
  11233. }
  11234. } catch (e) {
  11235. /* istanbul ignore next */
  11236. return false
  11237. }
  11238. } else if (!isObjectA && !isObjectB) {
  11239. return String(a) === String(b)
  11240. } else {
  11241. return false
  11242. }
  11243. }
  11244. /* */
  11245. function extend (Vue) {
  11246. if (!Vue.prototype.hasOwnProperty('$i18n')) {
  11247. // $FlowFixMe
  11248. Object.defineProperty(Vue.prototype, '$i18n', {
  11249. get: function get () { return this._i18n }
  11250. });
  11251. }
  11252. Vue.prototype.$t = function (key) {
  11253. var values = [], len = arguments.length - 1;
  11254. while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];
  11255. var i18n = this.$i18n;
  11256. return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))
  11257. };
  11258. Vue.prototype.$tc = function (key, choice) {
  11259. var values = [], len = arguments.length - 2;
  11260. while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];
  11261. var i18n = this.$i18n;
  11262. return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))
  11263. };
  11264. Vue.prototype.$te = function (key, locale) {
  11265. var i18n = this.$i18n;
  11266. return i18n._te(key, i18n.locale, i18n._getMessages(), locale)
  11267. };
  11268. Vue.prototype.$d = function (value) {
  11269. var ref;
  11270. var args = [], len = arguments.length - 1;
  11271. while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
  11272. return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))
  11273. };
  11274. Vue.prototype.$n = function (value) {
  11275. var ref;
  11276. var args = [], len = arguments.length - 1;
  11277. while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
  11278. return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))
  11279. };
  11280. }
  11281. /* */
  11282. var mixin = {
  11283. beforeCreate: function beforeCreate () {
  11284. var options = this.$options;
  11285. options.i18n = options.i18n || (options.__i18n ? {} : null);
  11286. if (options.i18n) {
  11287. if (options.i18n instanceof VueI18n) {
  11288. // init locale messages via custom blocks
  11289. if (options.__i18n) {
  11290. try {
  11291. var localeMessages = {};
  11292. options.__i18n.forEach(function (resource) {
  11293. localeMessages = merge(localeMessages, JSON.parse(resource));
  11294. });
  11295. Object.keys(localeMessages).forEach(function (locale) {
  11296. options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);
  11297. });
  11298. } catch (e) {
  11299. if (false) {}
  11300. }
  11301. }
  11302. this._i18n = options.i18n;
  11303. this._i18nWatcher = this._i18n.watchI18nData();
  11304. } else if (isPlainObject(options.i18n)) {
  11305. // component local i18n
  11306. if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {
  11307. options.i18n.root = this.$root;
  11308. options.i18n.formatter = this.$root.$i18n.formatter;
  11309. options.i18n.fallbackLocale = this.$root.$i18n.fallbackLocale;
  11310. options.i18n.formatFallbackMessages = this.$root.$i18n.formatFallbackMessages;
  11311. options.i18n.silentTranslationWarn = this.$root.$i18n.silentTranslationWarn;
  11312. options.i18n.silentFallbackWarn = this.$root.$i18n.silentFallbackWarn;
  11313. options.i18n.pluralizationRules = this.$root.$i18n.pluralizationRules;
  11314. options.i18n.preserveDirectiveContent = this.$root.$i18n.preserveDirectiveContent;
  11315. }
  11316. // init locale messages via custom blocks
  11317. if (options.__i18n) {
  11318. try {
  11319. var localeMessages$1 = {};
  11320. options.__i18n.forEach(function (resource) {
  11321. localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));
  11322. });
  11323. options.i18n.messages = localeMessages$1;
  11324. } catch (e) {
  11325. if (false) {}
  11326. }
  11327. }
  11328. var ref = options.i18n;
  11329. var sharedMessages = ref.sharedMessages;
  11330. if (sharedMessages && isPlainObject(sharedMessages)) {
  11331. options.i18n.messages = merge(options.i18n.messages, sharedMessages);
  11332. }
  11333. this._i18n = new VueI18n(options.i18n);
  11334. this._i18nWatcher = this._i18n.watchI18nData();
  11335. if (options.i18n.sync === undefined || !!options.i18n.sync) {
  11336. this._localeWatcher = this.$i18n.watchLocale();
  11337. }
  11338. } else {
  11339. if (false) {}
  11340. }
  11341. } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {
  11342. // root i18n
  11343. this._i18n = this.$root.$i18n;
  11344. } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {
  11345. // parent i18n
  11346. this._i18n = options.parent.$i18n;
  11347. }
  11348. },
  11349. beforeMount: function beforeMount () {
  11350. var options = this.$options;
  11351. options.i18n = options.i18n || (options.__i18n ? {} : null);
  11352. if (options.i18n) {
  11353. if (options.i18n instanceof VueI18n) {
  11354. // init locale messages via custom blocks
  11355. this._i18n.subscribeDataChanging(this);
  11356. this._subscribing = true;
  11357. } else if (isPlainObject(options.i18n)) {
  11358. this._i18n.subscribeDataChanging(this);
  11359. this._subscribing = true;
  11360. } else {
  11361. if (false) {}
  11362. }
  11363. } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {
  11364. this._i18n.subscribeDataChanging(this);
  11365. this._subscribing = true;
  11366. } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {
  11367. this._i18n.subscribeDataChanging(this);
  11368. this._subscribing = true;
  11369. }
  11370. },
  11371. beforeDestroy: function beforeDestroy () {
  11372. if (!this._i18n) { return }
  11373. var self = this;
  11374. this.$nextTick(function () {
  11375. if (self._subscribing) {
  11376. self._i18n.unsubscribeDataChanging(self);
  11377. delete self._subscribing;
  11378. }
  11379. if (self._i18nWatcher) {
  11380. self._i18nWatcher();
  11381. self._i18n.destroyVM();
  11382. delete self._i18nWatcher;
  11383. }
  11384. if (self._localeWatcher) {
  11385. self._localeWatcher();
  11386. delete self._localeWatcher;
  11387. }
  11388. self._i18n = null;
  11389. });
  11390. }
  11391. };
  11392. /* */
  11393. var interpolationComponent = {
  11394. name: 'i18n',
  11395. functional: true,
  11396. props: {
  11397. tag: {
  11398. type: String
  11399. },
  11400. path: {
  11401. type: String,
  11402. required: true
  11403. },
  11404. locale: {
  11405. type: String
  11406. },
  11407. places: {
  11408. type: [Array, Object]
  11409. }
  11410. },
  11411. render: function render (h, ref) {
  11412. var data = ref.data;
  11413. var parent = ref.parent;
  11414. var props = ref.props;
  11415. var slots = ref.slots;
  11416. var $i18n = parent.$i18n;
  11417. if (!$i18n) {
  11418. if (false) {}
  11419. return
  11420. }
  11421. var path = props.path;
  11422. var locale = props.locale;
  11423. var places = props.places;
  11424. var params = slots();
  11425. var children = $i18n.i(
  11426. path,
  11427. locale,
  11428. onlyHasDefaultPlace(params) || places
  11429. ? useLegacyPlaces(params.default, places)
  11430. : params
  11431. );
  11432. var tag = props.tag || 'span';
  11433. return tag ? h(tag, data, children) : children
  11434. }
  11435. };
  11436. function onlyHasDefaultPlace (params) {
  11437. var prop;
  11438. for (prop in params) {
  11439. if (prop !== 'default') { return false }
  11440. }
  11441. return Boolean(prop)
  11442. }
  11443. function useLegacyPlaces (children, places) {
  11444. var params = places ? createParamsFromPlaces(places) : {};
  11445. if (!children) { return params }
  11446. // Filter empty text nodes
  11447. children = children.filter(function (child) {
  11448. return child.tag || child.text.trim() !== ''
  11449. });
  11450. var everyPlace = children.every(vnodeHasPlaceAttribute);
  11451. if (false) {}
  11452. return children.reduce(
  11453. everyPlace ? assignChildPlace : assignChildIndex,
  11454. params
  11455. )
  11456. }
  11457. function createParamsFromPlaces (places) {
  11458. if (false) {}
  11459. return Array.isArray(places)
  11460. ? places.reduce(assignChildIndex, {})
  11461. : Object.assign({}, places)
  11462. }
  11463. function assignChildPlace (params, child) {
  11464. if (child.data && child.data.attrs && child.data.attrs.place) {
  11465. params[child.data.attrs.place] = child;
  11466. }
  11467. return params
  11468. }
  11469. function assignChildIndex (params, child, index) {
  11470. params[index] = child;
  11471. return params
  11472. }
  11473. function vnodeHasPlaceAttribute (vnode) {
  11474. return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)
  11475. }
  11476. /* */
  11477. var numberComponent = {
  11478. name: 'i18n-n',
  11479. functional: true,
  11480. props: {
  11481. tag: {
  11482. type: String,
  11483. default: 'span'
  11484. },
  11485. value: {
  11486. type: Number,
  11487. required: true
  11488. },
  11489. format: {
  11490. type: [String, Object]
  11491. },
  11492. locale: {
  11493. type: String
  11494. }
  11495. },
  11496. render: function render (h, ref) {
  11497. var props = ref.props;
  11498. var parent = ref.parent;
  11499. var data = ref.data;
  11500. var i18n = parent.$i18n;
  11501. if (!i18n) {
  11502. if (false) {}
  11503. return null
  11504. }
  11505. var key = null;
  11506. var options = null;
  11507. if (typeof props.format === 'string') {
  11508. key = props.format;
  11509. } else if (isObject(props.format)) {
  11510. if (props.format.key) {
  11511. key = props.format.key;
  11512. }
  11513. // Filter out number format options only
  11514. options = Object.keys(props.format).reduce(function (acc, prop) {
  11515. var obj;
  11516. if (numberFormatKeys.includes(prop)) {
  11517. return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))
  11518. }
  11519. return acc
  11520. }, null);
  11521. }
  11522. var locale = props.locale || i18n.locale;
  11523. var parts = i18n._ntp(props.value, locale, key, options);
  11524. var values = parts.map(function (part, index) {
  11525. var obj;
  11526. var slot = data.scopedSlots && data.scopedSlots[part.type];
  11527. return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value
  11528. });
  11529. return h(props.tag, {
  11530. attrs: data.attrs,
  11531. 'class': data['class'],
  11532. staticClass: data.staticClass
  11533. }, values)
  11534. }
  11535. };
  11536. /* */
  11537. function bind (el, binding, vnode) {
  11538. if (!assert(el, vnode)) { return }
  11539. t(el, binding, vnode);
  11540. }
  11541. function update (el, binding, vnode, oldVNode) {
  11542. if (!assert(el, vnode)) { return }
  11543. var i18n = vnode.context.$i18n;
  11544. if (localeEqual(el, vnode) &&
  11545. (looseEqual(binding.value, binding.oldValue) &&
  11546. looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }
  11547. t(el, binding, vnode);
  11548. }
  11549. function unbind (el, binding, vnode, oldVNode) {
  11550. var vm = vnode.context;
  11551. if (!vm) {
  11552. warn('Vue instance does not exists in VNode context');
  11553. return
  11554. }
  11555. var i18n = vnode.context.$i18n || {};
  11556. if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {
  11557. el.textContent = '';
  11558. }
  11559. el._vt = undefined;
  11560. delete el['_vt'];
  11561. el._locale = undefined;
  11562. delete el['_locale'];
  11563. el._localeMessage = undefined;
  11564. delete el['_localeMessage'];
  11565. }
  11566. function assert (el, vnode) {
  11567. var vm = vnode.context;
  11568. if (!vm) {
  11569. warn('Vue instance does not exists in VNode context');
  11570. return false
  11571. }
  11572. if (!vm.$i18n) {
  11573. warn('VueI18n instance does not exists in Vue instance');
  11574. return false
  11575. }
  11576. return true
  11577. }
  11578. function localeEqual (el, vnode) {
  11579. var vm = vnode.context;
  11580. return el._locale === vm.$i18n.locale
  11581. }
  11582. function t (el, binding, vnode) {
  11583. var ref$1, ref$2;
  11584. var value = binding.value;
  11585. var ref = parseValue(value);
  11586. var path = ref.path;
  11587. var locale = ref.locale;
  11588. var args = ref.args;
  11589. var choice = ref.choice;
  11590. if (!path && !locale && !args) {
  11591. warn('value type not supported');
  11592. return
  11593. }
  11594. if (!path) {
  11595. warn('`path` is required in v-t directive');
  11596. return
  11597. }
  11598. var vm = vnode.context;
  11599. if (choice) {
  11600. el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));
  11601. } else {
  11602. el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));
  11603. }
  11604. el._locale = vm.$i18n.locale;
  11605. el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);
  11606. }
  11607. function parseValue (value) {
  11608. var path;
  11609. var locale;
  11610. var args;
  11611. var choice;
  11612. if (typeof value === 'string') {
  11613. path = value;
  11614. } else if (isPlainObject(value)) {
  11615. path = value.path;
  11616. locale = value.locale;
  11617. args = value.args;
  11618. choice = value.choice;
  11619. }
  11620. return { path: path, locale: locale, args: args, choice: choice }
  11621. }
  11622. function makeParams (locale, args) {
  11623. var params = [];
  11624. locale && params.push(locale);
  11625. if (args && (Array.isArray(args) || isPlainObject(args))) {
  11626. params.push(args);
  11627. }
  11628. return params
  11629. }
  11630. var Vue;
  11631. function install (_Vue) {
  11632. /* istanbul ignore if */
  11633. if (false) {}
  11634. install.installed = true;
  11635. Vue = _Vue;
  11636. var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;
  11637. /* istanbul ignore if */
  11638. if (false) {}
  11639. extend(Vue);
  11640. Vue.mixin(mixin);
  11641. Vue.directive('t', { bind: bind, update: update, unbind: unbind });
  11642. Vue.component(interpolationComponent.name, interpolationComponent);
  11643. Vue.component(numberComponent.name, numberComponent);
  11644. // use simple mergeStrategies to prevent i18n instance lose '__proto__'
  11645. var strats = Vue.config.optionMergeStrategies;
  11646. strats.i18n = function (parentVal, childVal) {
  11647. return childVal === undefined
  11648. ? parentVal
  11649. : childVal
  11650. };
  11651. }
  11652. /* */
  11653. var BaseFormatter = function BaseFormatter () {
  11654. this._caches = Object.create(null);
  11655. };
  11656. BaseFormatter.prototype.interpolate = function interpolate (message, values) {
  11657. if (!values) {
  11658. return [message]
  11659. }
  11660. var tokens = this._caches[message];
  11661. if (!tokens) {
  11662. tokens = parse(message);
  11663. this._caches[message] = tokens;
  11664. }
  11665. return compile(tokens, values)
  11666. };
  11667. var RE_TOKEN_LIST_VALUE = /^(?:\d)+/;
  11668. var RE_TOKEN_NAMED_VALUE = /^(?:\w)+/;
  11669. function parse (format) {
  11670. var tokens = [];
  11671. var position = 0;
  11672. var text = '';
  11673. while (position < format.length) {
  11674. var char = format[position++];
  11675. if (char === '{') {
  11676. if (text) {
  11677. tokens.push({ type: 'text', value: text });
  11678. }
  11679. text = '';
  11680. var sub = '';
  11681. char = format[position++];
  11682. while (char !== undefined && char !== '}') {
  11683. sub += char;
  11684. char = format[position++];
  11685. }
  11686. var isClosed = char === '}';
  11687. var type = RE_TOKEN_LIST_VALUE.test(sub)
  11688. ? 'list'
  11689. : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)
  11690. ? 'named'
  11691. : 'unknown';
  11692. tokens.push({ value: sub, type: type });
  11693. } else if (char === '%') {
  11694. // when found rails i18n syntax, skip text capture
  11695. if (format[(position)] !== '{') {
  11696. text += char;
  11697. }
  11698. } else {
  11699. text += char;
  11700. }
  11701. }
  11702. text && tokens.push({ type: 'text', value: text });
  11703. return tokens
  11704. }
  11705. function compile (tokens, values) {
  11706. var compiled = [];
  11707. var index = 0;
  11708. var mode = Array.isArray(values)
  11709. ? 'list'
  11710. : isObject(values)
  11711. ? 'named'
  11712. : 'unknown';
  11713. if (mode === 'unknown') { return compiled }
  11714. while (index < tokens.length) {
  11715. var token = tokens[index];
  11716. switch (token.type) {
  11717. case 'text':
  11718. compiled.push(token.value);
  11719. break
  11720. case 'list':
  11721. compiled.push(values[parseInt(token.value, 10)]);
  11722. break
  11723. case 'named':
  11724. if (mode === 'named') {
  11725. compiled.push((values)[token.value]);
  11726. } else {
  11727. if (false) {}
  11728. }
  11729. break
  11730. case 'unknown':
  11731. if (false) {}
  11732. break
  11733. }
  11734. index++;
  11735. }
  11736. return compiled
  11737. }
  11738. /* */
  11739. /**
  11740. * Path parser
  11741. * - Inspired:
  11742. * Vue.js Path parser
  11743. */
  11744. // actions
  11745. var APPEND = 0;
  11746. var PUSH = 1;
  11747. var INC_SUB_PATH_DEPTH = 2;
  11748. var PUSH_SUB_PATH = 3;
  11749. // states
  11750. var BEFORE_PATH = 0;
  11751. var IN_PATH = 1;
  11752. var BEFORE_IDENT = 2;
  11753. var IN_IDENT = 3;
  11754. var IN_SUB_PATH = 4;
  11755. var IN_SINGLE_QUOTE = 5;
  11756. var IN_DOUBLE_QUOTE = 6;
  11757. var AFTER_PATH = 7;
  11758. var ERROR = 8;
  11759. var pathStateMachine = [];
  11760. pathStateMachine[BEFORE_PATH] = {
  11761. 'ws': [BEFORE_PATH],
  11762. 'ident': [IN_IDENT, APPEND],
  11763. '[': [IN_SUB_PATH],
  11764. 'eof': [AFTER_PATH]
  11765. };
  11766. pathStateMachine[IN_PATH] = {
  11767. 'ws': [IN_PATH],
  11768. '.': [BEFORE_IDENT],
  11769. '[': [IN_SUB_PATH],
  11770. 'eof': [AFTER_PATH]
  11771. };
  11772. pathStateMachine[BEFORE_IDENT] = {
  11773. 'ws': [BEFORE_IDENT],
  11774. 'ident': [IN_IDENT, APPEND],
  11775. '0': [IN_IDENT, APPEND],
  11776. 'number': [IN_IDENT, APPEND]
  11777. };
  11778. pathStateMachine[IN_IDENT] = {
  11779. 'ident': [IN_IDENT, APPEND],
  11780. '0': [IN_IDENT, APPEND],
  11781. 'number': [IN_IDENT, APPEND],
  11782. 'ws': [IN_PATH, PUSH],
  11783. '.': [BEFORE_IDENT, PUSH],
  11784. '[': [IN_SUB_PATH, PUSH],
  11785. 'eof': [AFTER_PATH, PUSH]
  11786. };
  11787. pathStateMachine[IN_SUB_PATH] = {
  11788. "'": [IN_SINGLE_QUOTE, APPEND],
  11789. '"': [IN_DOUBLE_QUOTE, APPEND],
  11790. '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],
  11791. ']': [IN_PATH, PUSH_SUB_PATH],
  11792. 'eof': ERROR,
  11793. 'else': [IN_SUB_PATH, APPEND]
  11794. };
  11795. pathStateMachine[IN_SINGLE_QUOTE] = {
  11796. "'": [IN_SUB_PATH, APPEND],
  11797. 'eof': ERROR,
  11798. 'else': [IN_SINGLE_QUOTE, APPEND]
  11799. };
  11800. pathStateMachine[IN_DOUBLE_QUOTE] = {
  11801. '"': [IN_SUB_PATH, APPEND],
  11802. 'eof': ERROR,
  11803. 'else': [IN_DOUBLE_QUOTE, APPEND]
  11804. };
  11805. /**
  11806. * Check if an expression is a literal value.
  11807. */
  11808. var literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;
  11809. function isLiteral (exp) {
  11810. return literalValueRE.test(exp)
  11811. }
  11812. /**
  11813. * Strip quotes from a string
  11814. */
  11815. function stripQuotes (str) {
  11816. var a = str.charCodeAt(0);
  11817. var b = str.charCodeAt(str.length - 1);
  11818. return a === b && (a === 0x22 || a === 0x27)
  11819. ? str.slice(1, -1)
  11820. : str
  11821. }
  11822. /**
  11823. * Determine the type of a character in a keypath.
  11824. */
  11825. function getPathCharType (ch) {
  11826. if (ch === undefined || ch === null) { return 'eof' }
  11827. var code = ch.charCodeAt(0);
  11828. switch (code) {
  11829. case 0x5B: // [
  11830. case 0x5D: // ]
  11831. case 0x2E: // .
  11832. case 0x22: // "
  11833. case 0x27: // '
  11834. return ch
  11835. case 0x5F: // _
  11836. case 0x24: // $
  11837. case 0x2D: // -
  11838. return 'ident'
  11839. case 0x09: // Tab
  11840. case 0x0A: // Newline
  11841. case 0x0D: // Return
  11842. case 0xA0: // No-break space
  11843. case 0xFEFF: // Byte Order Mark
  11844. case 0x2028: // Line Separator
  11845. case 0x2029: // Paragraph Separator
  11846. return 'ws'
  11847. }
  11848. return 'ident'
  11849. }
  11850. /**
  11851. * Format a subPath, return its plain form if it is
  11852. * a literal string or number. Otherwise prepend the
  11853. * dynamic indicator (*).
  11854. */
  11855. function formatSubPath (path) {
  11856. var trimmed = path.trim();
  11857. // invalid leading 0
  11858. if (path.charAt(0) === '0' && isNaN(path)) { return false }
  11859. return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed
  11860. }
  11861. /**
  11862. * Parse a string path into an array of segments
  11863. */
  11864. function parse$1 (path) {
  11865. var keys = [];
  11866. var index = -1;
  11867. var mode = BEFORE_PATH;
  11868. var subPathDepth = 0;
  11869. var c;
  11870. var key;
  11871. var newChar;
  11872. var type;
  11873. var transition;
  11874. var action;
  11875. var typeMap;
  11876. var actions = [];
  11877. actions[PUSH] = function () {
  11878. if (key !== undefined) {
  11879. keys.push(key);
  11880. key = undefined;
  11881. }
  11882. };
  11883. actions[APPEND] = function () {
  11884. if (key === undefined) {
  11885. key = newChar;
  11886. } else {
  11887. key += newChar;
  11888. }
  11889. };
  11890. actions[INC_SUB_PATH_DEPTH] = function () {
  11891. actions[APPEND]();
  11892. subPathDepth++;
  11893. };
  11894. actions[PUSH_SUB_PATH] = function () {
  11895. if (subPathDepth > 0) {
  11896. subPathDepth--;
  11897. mode = IN_SUB_PATH;
  11898. actions[APPEND]();
  11899. } else {
  11900. subPathDepth = 0;
  11901. if (key === undefined) { return false }
  11902. key = formatSubPath(key);
  11903. if (key === false) {
  11904. return false
  11905. } else {
  11906. actions[PUSH]();
  11907. }
  11908. }
  11909. };
  11910. function maybeUnescapeQuote () {
  11911. var nextChar = path[index + 1];
  11912. if ((mode === IN_SINGLE_QUOTE && nextChar === "'") ||
  11913. (mode === IN_DOUBLE_QUOTE && nextChar === '"')) {
  11914. index++;
  11915. newChar = '\\' + nextChar;
  11916. actions[APPEND]();
  11917. return true
  11918. }
  11919. }
  11920. while (mode !== null) {
  11921. index++;
  11922. c = path[index];
  11923. if (c === '\\' && maybeUnescapeQuote()) {
  11924. continue
  11925. }
  11926. type = getPathCharType(c);
  11927. typeMap = pathStateMachine[mode];
  11928. transition = typeMap[type] || typeMap['else'] || ERROR;
  11929. if (transition === ERROR) {
  11930. return // parse error
  11931. }
  11932. mode = transition[0];
  11933. action = actions[transition[1]];
  11934. if (action) {
  11935. newChar = transition[2];
  11936. newChar = newChar === undefined
  11937. ? c
  11938. : newChar;
  11939. if (action() === false) {
  11940. return
  11941. }
  11942. }
  11943. if (mode === AFTER_PATH) {
  11944. return keys
  11945. }
  11946. }
  11947. }
  11948. var I18nPath = function I18nPath () {
  11949. this._cache = Object.create(null);
  11950. };
  11951. /**
  11952. * External parse that check for a cache hit first
  11953. */
  11954. I18nPath.prototype.parsePath = function parsePath (path) {
  11955. var hit = this._cache[path];
  11956. if (!hit) {
  11957. hit = parse$1(path);
  11958. if (hit) {
  11959. this._cache[path] = hit;
  11960. }
  11961. }
  11962. return hit || []
  11963. };
  11964. /**
  11965. * Get path value from path string
  11966. */
  11967. I18nPath.prototype.getPathValue = function getPathValue (obj, path) {
  11968. if (!isObject(obj)) { return null }
  11969. var paths = this.parsePath(path);
  11970. if (paths.length === 0) {
  11971. return null
  11972. } else {
  11973. var length = paths.length;
  11974. var last = obj;
  11975. var i = 0;
  11976. while (i < length) {
  11977. var value = last[paths[i]];
  11978. if (value === undefined) {
  11979. return null
  11980. }
  11981. last = value;
  11982. i++;
  11983. }
  11984. return last
  11985. }
  11986. };
  11987. /* */
  11988. var htmlTagMatcher = /<\/?[\w\s="/.':;#-\/]+>/;
  11989. var linkKeyMatcher = /(?:@(?:\.[a-z]+)?:(?:[\w\-_|.]+|\([\w\-_|.]+\)))/g;
  11990. var linkKeyPrefixMatcher = /^@(?:\.([a-z]+))?:/;
  11991. var bracketsMatcher = /[()]/g;
  11992. var defaultModifiers = {
  11993. 'upper': function (str) { return str.toLocaleUpperCase(); },
  11994. 'lower': function (str) { return str.toLocaleLowerCase(); },
  11995. 'capitalize': function (str) { return ("" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }
  11996. };
  11997. var defaultFormatter = new BaseFormatter();
  11998. var VueI18n = function VueI18n (options) {
  11999. var this$1 = this;
  12000. if ( options === void 0 ) options = {};
  12001. // Auto install if it is not done yet and `window` has `Vue`.
  12002. // To allow users to avoid auto-installation in some cases,
  12003. // this code should be placed here. See #290
  12004. /* istanbul ignore if */
  12005. if (!Vue && typeof window !== 'undefined' && window.Vue) {
  12006. install(window.Vue);
  12007. }
  12008. var locale = options.locale || 'en-US';
  12009. var fallbackLocale = options.fallbackLocale || 'en-US';
  12010. var messages = options.messages || {};
  12011. var dateTimeFormats = options.dateTimeFormats || {};
  12012. var numberFormats = options.numberFormats || {};
  12013. this._vm = null;
  12014. this._formatter = options.formatter || defaultFormatter;
  12015. this._modifiers = options.modifiers || {};
  12016. this._missing = options.missing || null;
  12017. this._root = options.root || null;
  12018. this._sync = options.sync === undefined ? true : !!options.sync;
  12019. this._fallbackRoot = options.fallbackRoot === undefined
  12020. ? true
  12021. : !!options.fallbackRoot;
  12022. this._formatFallbackMessages = options.formatFallbackMessages === undefined
  12023. ? false
  12024. : !!options.formatFallbackMessages;
  12025. this._silentTranslationWarn = options.silentTranslationWarn === undefined
  12026. ? false
  12027. : options.silentTranslationWarn;
  12028. this._silentFallbackWarn = options.silentFallbackWarn === undefined
  12029. ? false
  12030. : !!options.silentFallbackWarn;
  12031. this._dateTimeFormatters = {};
  12032. this._numberFormatters = {};
  12033. this._path = new I18nPath();
  12034. this._dataListeners = [];
  12035. this._preserveDirectiveContent = options.preserveDirectiveContent === undefined
  12036. ? false
  12037. : !!options.preserveDirectiveContent;
  12038. this.pluralizationRules = options.pluralizationRules || {};
  12039. this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';
  12040. this._postTranslation = options.postTranslation || null;
  12041. this._exist = function (message, key) {
  12042. if (!message || !key) { return false }
  12043. if (!isNull(this$1._path.getPathValue(message, key))) { return true }
  12044. // fallback for flat key
  12045. if (message[key]) { return true }
  12046. return false
  12047. };
  12048. if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {
  12049. Object.keys(messages).forEach(function (locale) {
  12050. this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);
  12051. });
  12052. }
  12053. this._initVM({
  12054. locale: locale,
  12055. fallbackLocale: fallbackLocale,
  12056. messages: messages,
  12057. dateTimeFormats: dateTimeFormats,
  12058. numberFormats: numberFormats
  12059. });
  12060. };
  12061. var prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true } };
  12062. VueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {
  12063. var paths = [];
  12064. var fn = function (level, locale, message, paths) {
  12065. if (isPlainObject(message)) {
  12066. Object.keys(message).forEach(function (key) {
  12067. var val = message[key];
  12068. if (isPlainObject(val)) {
  12069. paths.push(key);
  12070. paths.push('.');
  12071. fn(level, locale, val, paths);
  12072. paths.pop();
  12073. paths.pop();
  12074. } else {
  12075. paths.push(key);
  12076. fn(level, locale, val, paths);
  12077. paths.pop();
  12078. }
  12079. });
  12080. } else if (Array.isArray(message)) {
  12081. message.forEach(function (item, index) {
  12082. if (isPlainObject(item)) {
  12083. paths.push(("[" + index + "]"));
  12084. paths.push('.');
  12085. fn(level, locale, item, paths);
  12086. paths.pop();
  12087. paths.pop();
  12088. } else {
  12089. paths.push(("[" + index + "]"));
  12090. fn(level, locale, item, paths);
  12091. paths.pop();
  12092. }
  12093. });
  12094. } else if (typeof message === 'string') {
  12095. var ret = htmlTagMatcher.test(message);
  12096. if (ret) {
  12097. var msg = "Detected HTML in message '" + message + "' of keypath '" + (paths.join('')) + "' at '" + locale + "'. Consider component interpolation with '<i18n>' to avoid XSS. See https://bit.ly/2ZqJzkp";
  12098. if (level === 'warn') {
  12099. warn(msg);
  12100. } else if (level === 'error') {
  12101. error(msg);
  12102. }
  12103. }
  12104. }
  12105. };
  12106. fn(level, locale, message, paths);
  12107. };
  12108. VueI18n.prototype._initVM = function _initVM (data) {
  12109. var silent = Vue.config.silent;
  12110. Vue.config.silent = true;
  12111. this._vm = new Vue({ data: data });
  12112. Vue.config.silent = silent;
  12113. };
  12114. VueI18n.prototype.destroyVM = function destroyVM () {
  12115. this._vm.$destroy();
  12116. };
  12117. VueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {
  12118. this._dataListeners.push(vm);
  12119. };
  12120. VueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {
  12121. remove(this._dataListeners, vm);
  12122. };
  12123. VueI18n.prototype.watchI18nData = function watchI18nData () {
  12124. var self = this;
  12125. return this._vm.$watch('$data', function () {
  12126. var i = self._dataListeners.length;
  12127. while (i--) {
  12128. Vue.nextTick(function () {
  12129. self._dataListeners[i] && self._dataListeners[i].$forceUpdate();
  12130. });
  12131. }
  12132. }, { deep: true })
  12133. };
  12134. VueI18n.prototype.watchLocale = function watchLocale () {
  12135. /* istanbul ignore if */
  12136. if (!this._sync || !this._root) { return null }
  12137. var target = this._vm;
  12138. return this._root.$i18n.vm.$watch('locale', function (val) {
  12139. target.$set(target, 'locale', val);
  12140. target.$forceUpdate();
  12141. }, { immediate: true })
  12142. };
  12143. prototypeAccessors.vm.get = function () { return this._vm };
  12144. prototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };
  12145. prototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };
  12146. prototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };
  12147. prototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };
  12148. prototypeAccessors.locale.get = function () { return this._vm.locale };
  12149. prototypeAccessors.locale.set = function (locale) {
  12150. this._vm.$set(this._vm, 'locale', locale);
  12151. };
  12152. prototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };
  12153. prototypeAccessors.fallbackLocale.set = function (locale) {
  12154. this._vm.$set(this._vm, 'fallbackLocale', locale);
  12155. };
  12156. prototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };
  12157. prototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };
  12158. prototypeAccessors.missing.get = function () { return this._missing };
  12159. prototypeAccessors.missing.set = function (handler) { this._missing = handler; };
  12160. prototypeAccessors.formatter.get = function () { return this._formatter };
  12161. prototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };
  12162. prototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };
  12163. prototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };
  12164. prototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };
  12165. prototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };
  12166. prototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };
  12167. prototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };
  12168. prototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };
  12169. prototypeAccessors.warnHtmlInMessage.set = function (level) {
  12170. var this$1 = this;
  12171. var orgLevel = this._warnHtmlInMessage;
  12172. this._warnHtmlInMessage = level;
  12173. if (orgLevel !== level && (level === 'warn' || level === 'error')) {
  12174. var messages = this._getMessages();
  12175. Object.keys(messages).forEach(function (locale) {
  12176. this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);
  12177. });
  12178. }
  12179. };
  12180. prototypeAccessors.postTranslation.get = function () { return this._postTranslation };
  12181. prototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };
  12182. VueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };
  12183. VueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };
  12184. VueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };
  12185. VueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {
  12186. if (!isNull(result)) { return result }
  12187. if (this._missing) {
  12188. var missingRet = this._missing.apply(null, [locale, key, vm, values]);
  12189. if (typeof missingRet === 'string') {
  12190. return missingRet
  12191. }
  12192. } else {
  12193. if (false) {}
  12194. }
  12195. if (this._formatFallbackMessages) {
  12196. var parsedArgs = parseArgs.apply(void 0, values);
  12197. return this._render(key, interpolateMode, parsedArgs.params, key)
  12198. } else {
  12199. return key
  12200. }
  12201. };
  12202. VueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {
  12203. return !val && !isNull(this._root) && this._fallbackRoot
  12204. };
  12205. VueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {
  12206. return this._silentFallbackWarn instanceof RegExp
  12207. ? this._silentFallbackWarn.test(key)
  12208. : this._silentFallbackWarn
  12209. };
  12210. VueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {
  12211. return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)
  12212. };
  12213. VueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {
  12214. return this._silentTranslationWarn instanceof RegExp
  12215. ? this._silentTranslationWarn.test(key)
  12216. : this._silentTranslationWarn
  12217. };
  12218. VueI18n.prototype._interpolate = function _interpolate (
  12219. locale,
  12220. message,
  12221. key,
  12222. host,
  12223. interpolateMode,
  12224. values,
  12225. visitedLinkStack
  12226. ) {
  12227. if (!message) { return null }
  12228. var pathRet = this._path.getPathValue(message, key);
  12229. if (Array.isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }
  12230. var ret;
  12231. if (isNull(pathRet)) {
  12232. /* istanbul ignore else */
  12233. if (isPlainObject(message)) {
  12234. ret = message[key];
  12235. if (typeof ret !== 'string') {
  12236. if (false) {}
  12237. return null
  12238. }
  12239. } else {
  12240. return null
  12241. }
  12242. } else {
  12243. /* istanbul ignore else */
  12244. if (typeof pathRet === 'string') {
  12245. ret = pathRet;
  12246. } else {
  12247. if (false) {}
  12248. return null
  12249. }
  12250. }
  12251. // Check for the existence of links within the translated string
  12252. if (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0) {
  12253. ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);
  12254. }
  12255. return this._render(ret, interpolateMode, values, key)
  12256. };
  12257. VueI18n.prototype._link = function _link (
  12258. locale,
  12259. message,
  12260. str,
  12261. host,
  12262. interpolateMode,
  12263. values,
  12264. visitedLinkStack
  12265. ) {
  12266. var ret = str;
  12267. // Match all the links within the local
  12268. // We are going to replace each of
  12269. // them with its translation
  12270. var matches = ret.match(linkKeyMatcher);
  12271. for (var idx in matches) {
  12272. // ie compatible: filter custom array
  12273. // prototype method
  12274. if (!matches.hasOwnProperty(idx)) {
  12275. continue
  12276. }
  12277. var link = matches[idx];
  12278. var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);
  12279. var linkPrefix = linkKeyPrefixMatches[0];
  12280. var formatterName = linkKeyPrefixMatches[1];
  12281. // Remove the leading @:, @.case: and the brackets
  12282. var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');
  12283. if (visitedLinkStack.includes(linkPlaceholder)) {
  12284. if (false) {}
  12285. return ret
  12286. }
  12287. visitedLinkStack.push(linkPlaceholder);
  12288. // Translate the link
  12289. var translated = this._interpolate(
  12290. locale, message, linkPlaceholder, host,
  12291. interpolateMode === 'raw' ? 'string' : interpolateMode,
  12292. interpolateMode === 'raw' ? undefined : values,
  12293. visitedLinkStack
  12294. );
  12295. if (this._isFallbackRoot(translated)) {
  12296. if (false) {}
  12297. /* istanbul ignore if */
  12298. if (!this._root) { throw Error('unexpected error') }
  12299. var root = this._root.$i18n;
  12300. translated = root._translate(
  12301. root._getMessages(), root.locale, root.fallbackLocale,
  12302. linkPlaceholder, host, interpolateMode, values
  12303. );
  12304. }
  12305. translated = this._warnDefault(
  12306. locale, linkPlaceholder, translated, host,
  12307. Array.isArray(values) ? values : [values],
  12308. interpolateMode
  12309. );
  12310. if (this._modifiers.hasOwnProperty(formatterName)) {
  12311. translated = this._modifiers[formatterName](translated);
  12312. } else if (defaultModifiers.hasOwnProperty(formatterName)) {
  12313. translated = defaultModifiers[formatterName](translated);
  12314. }
  12315. visitedLinkStack.pop();
  12316. // Replace the link with the translated
  12317. ret = !translated ? ret : ret.replace(link, translated);
  12318. }
  12319. return ret
  12320. };
  12321. VueI18n.prototype._render = function _render (message, interpolateMode, values, path) {
  12322. var ret = this._formatter.interpolate(message, values, path);
  12323. // If the custom formatter refuses to work - apply the default one
  12324. if (!ret) {
  12325. ret = defaultFormatter.interpolate(message, values, path);
  12326. }
  12327. // if interpolateMode is **not** 'string' ('row'),
  12328. // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter
  12329. return interpolateMode === 'string' && typeof ret !== 'string' ? ret.join('') : ret
  12330. };
  12331. VueI18n.prototype._translate = function _translate (
  12332. messages,
  12333. locale,
  12334. fallback,
  12335. key,
  12336. host,
  12337. interpolateMode,
  12338. args
  12339. ) {
  12340. var res =
  12341. this._interpolate(locale, messages[locale], key, host, interpolateMode, args, [key]);
  12342. if (!isNull(res)) { return res }
  12343. res = this._interpolate(fallback, messages[fallback], key, host, interpolateMode, args, [key]);
  12344. if (!isNull(res)) {
  12345. if (false) {}
  12346. return res
  12347. } else {
  12348. return null
  12349. }
  12350. };
  12351. VueI18n.prototype._t = function _t (key, _locale, messages, host) {
  12352. var ref;
  12353. var values = [], len = arguments.length - 4;
  12354. while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];
  12355. if (!key) { return '' }
  12356. var parsedArgs = parseArgs.apply(void 0, values);
  12357. var locale = parsedArgs.locale || _locale;
  12358. var ret = this._translate(
  12359. messages, locale, this.fallbackLocale, key,
  12360. host, 'string', parsedArgs.params
  12361. );
  12362. if (this._isFallbackRoot(ret)) {
  12363. if (false) {}
  12364. /* istanbul ignore if */
  12365. if (!this._root) { throw Error('unexpected error') }
  12366. return (ref = this._root).$t.apply(ref, [ key ].concat( values ))
  12367. } else {
  12368. ret = this._warnDefault(locale, key, ret, host, values, 'string');
  12369. if (this._postTranslation) {
  12370. ret = this._postTranslation(ret);
  12371. }
  12372. return ret
  12373. }
  12374. };
  12375. VueI18n.prototype.t = function t (key) {
  12376. var ref;
  12377. var values = [], len = arguments.length - 1;
  12378. while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];
  12379. return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))
  12380. };
  12381. VueI18n.prototype._i = function _i (key, locale, messages, host, values) {
  12382. var ret =
  12383. this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);
  12384. if (this._isFallbackRoot(ret)) {
  12385. if (false) {}
  12386. if (!this._root) { throw Error('unexpected error') }
  12387. return this._root.$i18n.i(key, locale, values)
  12388. } else {
  12389. return this._warnDefault(locale, key, ret, host, [values], 'raw')
  12390. }
  12391. };
  12392. VueI18n.prototype.i = function i (key, locale, values) {
  12393. /* istanbul ignore if */
  12394. if (!key) { return '' }
  12395. if (typeof locale !== 'string') {
  12396. locale = this.locale;
  12397. }
  12398. return this._i(key, locale, this._getMessages(), null, values)
  12399. };
  12400. VueI18n.prototype._tc = function _tc (
  12401. key,
  12402. _locale,
  12403. messages,
  12404. host,
  12405. choice
  12406. ) {
  12407. var ref;
  12408. var values = [], len = arguments.length - 5;
  12409. while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];
  12410. if (!key) { return '' }
  12411. if (choice === undefined) {
  12412. choice = 1;
  12413. }
  12414. var predefined = { 'count': choice, 'n': choice };
  12415. var parsedArgs = parseArgs.apply(void 0, values);
  12416. parsedArgs.params = Object.assign(predefined, parsedArgs.params);
  12417. values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];
  12418. return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)
  12419. };
  12420. VueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {
  12421. /* istanbul ignore if */
  12422. if (!message && typeof message !== 'string') { return null }
  12423. var choices = message.split('|');
  12424. choice = this.getChoiceIndex(choice, choices.length);
  12425. if (!choices[choice]) { return message }
  12426. return choices[choice].trim()
  12427. };
  12428. /**
  12429. * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`
  12430. * @param choicesLength {number} an overall amount of available choices
  12431. * @returns a final choice index
  12432. */
  12433. VueI18n.prototype.getChoiceIndex = function getChoiceIndex (choice, choicesLength) {
  12434. // Default (old) getChoiceIndex implementation - english-compatible
  12435. var defaultImpl = function (_choice, _choicesLength) {
  12436. _choice = Math.abs(_choice);
  12437. if (_choicesLength === 2) {
  12438. return _choice
  12439. ? _choice > 1
  12440. ? 1
  12441. : 0
  12442. : 1
  12443. }
  12444. return _choice ? Math.min(_choice, 2) : 0
  12445. };
  12446. if (this.locale in this.pluralizationRules) {
  12447. return this.pluralizationRules[this.locale].apply(this, [choice, choicesLength])
  12448. } else {
  12449. return defaultImpl(choice, choicesLength)
  12450. }
  12451. };
  12452. VueI18n.prototype.tc = function tc (key, choice) {
  12453. var ref;
  12454. var values = [], len = arguments.length - 2;
  12455. while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];
  12456. return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))
  12457. };
  12458. VueI18n.prototype._te = function _te (key, locale, messages) {
  12459. var args = [], len = arguments.length - 3;
  12460. while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];
  12461. var _locale = parseArgs.apply(void 0, args).locale || locale;
  12462. return this._exist(messages[_locale], key)
  12463. };
  12464. VueI18n.prototype.te = function te (key, locale) {
  12465. return this._te(key, this.locale, this._getMessages(), locale)
  12466. };
  12467. VueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {
  12468. return looseClone(this._vm.messages[locale] || {})
  12469. };
  12470. VueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {
  12471. if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {
  12472. this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);
  12473. }
  12474. this._vm.$set(this._vm.messages, locale, message);
  12475. };
  12476. VueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {
  12477. if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {
  12478. this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);
  12479. }
  12480. this._vm.$set(this._vm.messages, locale, merge({}, this._vm.messages[locale] || {}, message));
  12481. };
  12482. VueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {
  12483. return looseClone(this._vm.dateTimeFormats[locale] || {})
  12484. };
  12485. VueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {
  12486. this._vm.$set(this._vm.dateTimeFormats, locale, format);
  12487. };
  12488. VueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {
  12489. this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));
  12490. };
  12491. VueI18n.prototype._localizeDateTime = function _localizeDateTime (
  12492. value,
  12493. locale,
  12494. fallback,
  12495. dateTimeFormats,
  12496. key
  12497. ) {
  12498. var _locale = locale;
  12499. var formats = dateTimeFormats[_locale];
  12500. // fallback locale
  12501. if (isNull(formats) || isNull(formats[key])) {
  12502. if (false) {}
  12503. _locale = fallback;
  12504. formats = dateTimeFormats[_locale];
  12505. }
  12506. if (isNull(formats) || isNull(formats[key])) {
  12507. return null
  12508. } else {
  12509. var format = formats[key];
  12510. var id = _locale + "__" + key;
  12511. var formatter = this._dateTimeFormatters[id];
  12512. if (!formatter) {
  12513. formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);
  12514. }
  12515. return formatter.format(value)
  12516. }
  12517. };
  12518. VueI18n.prototype._d = function _d (value, locale, key) {
  12519. /* istanbul ignore if */
  12520. if (false) {}
  12521. if (!key) {
  12522. return new Intl.DateTimeFormat(locale).format(value)
  12523. }
  12524. var ret =
  12525. this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);
  12526. if (this._isFallbackRoot(ret)) {
  12527. if (false) {}
  12528. /* istanbul ignore if */
  12529. if (!this._root) { throw Error('unexpected error') }
  12530. return this._root.$i18n.d(value, key, locale)
  12531. } else {
  12532. return ret || ''
  12533. }
  12534. };
  12535. VueI18n.prototype.d = function d (value) {
  12536. var args = [], len = arguments.length - 1;
  12537. while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
  12538. var locale = this.locale;
  12539. var key = null;
  12540. if (args.length === 1) {
  12541. if (typeof args[0] === 'string') {
  12542. key = args[0];
  12543. } else if (isObject(args[0])) {
  12544. if (args[0].locale) {
  12545. locale = args[0].locale;
  12546. }
  12547. if (args[0].key) {
  12548. key = args[0].key;
  12549. }
  12550. }
  12551. } else if (args.length === 2) {
  12552. if (typeof args[0] === 'string') {
  12553. key = args[0];
  12554. }
  12555. if (typeof args[1] === 'string') {
  12556. locale = args[1];
  12557. }
  12558. }
  12559. return this._d(value, locale, key)
  12560. };
  12561. VueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {
  12562. return looseClone(this._vm.numberFormats[locale] || {})
  12563. };
  12564. VueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {
  12565. this._vm.$set(this._vm.numberFormats, locale, format);
  12566. this._clearNumberFormat(locale, format);
  12567. };
  12568. VueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {
  12569. this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));
  12570. this._clearNumberFormat(locale, format);
  12571. };
  12572. VueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {
  12573. for (var key in format) {
  12574. var id = locale + "__" + key;
  12575. if (!this._numberFormatters.hasOwnProperty(id)) {
  12576. continue
  12577. }
  12578. delete this._numberFormatters[id];
  12579. }
  12580. };
  12581. VueI18n.prototype._getNumberFormatter = function _getNumberFormatter (
  12582. value,
  12583. locale,
  12584. fallback,
  12585. numberFormats,
  12586. key,
  12587. options
  12588. ) {
  12589. var _locale = locale;
  12590. var formats = numberFormats[_locale];
  12591. // fallback locale
  12592. if (isNull(formats) || isNull(formats[key])) {
  12593. if (false) {}
  12594. _locale = fallback;
  12595. formats = numberFormats[_locale];
  12596. }
  12597. if (isNull(formats) || isNull(formats[key])) {
  12598. return null
  12599. } else {
  12600. var format = formats[key];
  12601. var formatter;
  12602. if (options) {
  12603. // If options specified - create one time number formatter
  12604. formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));
  12605. } else {
  12606. var id = _locale + "__" + key;
  12607. formatter = this._numberFormatters[id];
  12608. if (!formatter) {
  12609. formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);
  12610. }
  12611. }
  12612. return formatter
  12613. }
  12614. };
  12615. VueI18n.prototype._n = function _n (value, locale, key, options) {
  12616. /* istanbul ignore if */
  12617. if (!VueI18n.availabilities.numberFormat) {
  12618. if (false) {}
  12619. return ''
  12620. }
  12621. if (!key) {
  12622. var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);
  12623. return nf.format(value)
  12624. }
  12625. var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);
  12626. var ret = formatter && formatter.format(value);
  12627. if (this._isFallbackRoot(ret)) {
  12628. if (false) {}
  12629. /* istanbul ignore if */
  12630. if (!this._root) { throw Error('unexpected error') }
  12631. return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))
  12632. } else {
  12633. return ret || ''
  12634. }
  12635. };
  12636. VueI18n.prototype.n = function n (value) {
  12637. var args = [], len = arguments.length - 1;
  12638. while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
  12639. var locale = this.locale;
  12640. var key = null;
  12641. var options = null;
  12642. if (args.length === 1) {
  12643. if (typeof args[0] === 'string') {
  12644. key = args[0];
  12645. } else if (isObject(args[0])) {
  12646. if (args[0].locale) {
  12647. locale = args[0].locale;
  12648. }
  12649. if (args[0].key) {
  12650. key = args[0].key;
  12651. }
  12652. // Filter out number format options only
  12653. options = Object.keys(args[0]).reduce(function (acc, key) {
  12654. var obj;
  12655. if (numberFormatKeys.includes(key)) {
  12656. return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))
  12657. }
  12658. return acc
  12659. }, null);
  12660. }
  12661. } else if (args.length === 2) {
  12662. if (typeof args[0] === 'string') {
  12663. key = args[0];
  12664. }
  12665. if (typeof args[1] === 'string') {
  12666. locale = args[1];
  12667. }
  12668. }
  12669. return this._n(value, locale, key, options)
  12670. };
  12671. VueI18n.prototype._ntp = function _ntp (value, locale, key, options) {
  12672. /* istanbul ignore if */
  12673. if (!VueI18n.availabilities.numberFormat) {
  12674. if (false) {}
  12675. return []
  12676. }
  12677. if (!key) {
  12678. var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);
  12679. return nf.formatToParts(value)
  12680. }
  12681. var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);
  12682. var ret = formatter && formatter.formatToParts(value);
  12683. if (this._isFallbackRoot(ret)) {
  12684. if (false) {}
  12685. /* istanbul ignore if */
  12686. if (!this._root) { throw Error('unexpected error') }
  12687. return this._root.$i18n._ntp(value, locale, key, options)
  12688. } else {
  12689. return ret || []
  12690. }
  12691. };
  12692. Object.defineProperties( VueI18n.prototype, prototypeAccessors );
  12693. var availabilities;
  12694. // $FlowFixMe
  12695. Object.defineProperty(VueI18n, 'availabilities', {
  12696. get: function get () {
  12697. if (!availabilities) {
  12698. var intlDefined = typeof Intl !== 'undefined';
  12699. availabilities = {
  12700. dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',
  12701. numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'
  12702. };
  12703. }
  12704. return availabilities
  12705. }
  12706. });
  12707. VueI18n.install = install;
  12708. VueI18n.version = '8.16.0';
  12709. /* harmony default export */ __webpack_exports__["default"] = (VueI18n);
  12710. /***/ }),
  12711. /***/ "2f66":
  12712. /***/ (function(module, exports, __webpack_require__) {
  12713. "use strict";
  12714. var _interopRequireDefault = __webpack_require__("8e6d");
  12715. Object.defineProperty(exports, "__esModule", {
  12716. value: true
  12717. });
  12718. exports.default = void 0;
  12719. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  12720. var _lang = __webpack_require__("4e21");
  12721. var RestParameter = function RestParameter(options) {
  12722. (0, _classCallCheck2.default)(this, RestParameter);
  12723. this.url = options.url;
  12724. this.type = 'rest';
  12725. this.attributeFilter = options.attributeFilter || null;
  12726. this.maxFeatures = options.maxFeatures || 20;
  12727. this.name = options.name || (0, _lang.geti18n)().t('commontypes.restData');
  12728. this.proxy = options.proxy;
  12729. };
  12730. exports.default = RestParameter;
  12731. /***/ }),
  12732. /***/ "2f96":
  12733. /***/ (function(module, exports, __webpack_require__) {
  12734. var helper = __webpack_require__("cabd");
  12735. var xml2js = __webpack_require__("98c2");
  12736. function validateOptions (userOptions) {
  12737. var options = helper.copyOptions(userOptions);
  12738. helper.ensureSpacesExists(options);
  12739. return options;
  12740. }
  12741. module.exports = function(xml, userOptions) {
  12742. var options, js, json, parentKey;
  12743. options = validateOptions(userOptions);
  12744. js = xml2js(xml, options);
  12745. parentKey = 'compact' in options && options.compact ? '_parent' : 'parent';
  12746. // parentKey = ptions.compact ? '_parent' : 'parent'; // consider this
  12747. if ('addParent' in options && options.addParent) {
  12748. json = JSON.stringify(js, function (k, v) { return k === parentKey? '_' : v; }, options.spaces);
  12749. } else {
  12750. json = JSON.stringify(js, null, options.spaces);
  12751. }
  12752. return json.replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029');
  12753. };
  12754. /***/ }),
  12755. /***/ "2fae":
  12756. /***/ (function(module, exports, __webpack_require__) {
  12757. "use strict";
  12758. var _interopRequireDefault = __webpack_require__("8e6d");
  12759. Object.defineProperty(exports, "__esModule", {
  12760. value: true
  12761. });
  12762. exports.default = void 0;
  12763. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  12764. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  12765. var _LabelThemeLayerViewModel = _interopRequireDefault(__webpack_require__("3a89"));
  12766. var _default2 = {
  12767. name: 'SmLabelThemeLayer',
  12768. mixins: [_mapGetter.default, _layer.default],
  12769. props: {
  12770. layerName: {
  12771. type: String,
  12772. required: true
  12773. },
  12774. options: {
  12775. type: Object,
  12776. default: function _default() {
  12777. return {};
  12778. }
  12779. },
  12780. data: {
  12781. type: Array,
  12782. required: true
  12783. }
  12784. },
  12785. watch: {
  12786. data: {
  12787. handler: function handler(val) {
  12788. this.viewModel && this.viewModel.setData(val);
  12789. },
  12790. deep: true
  12791. },
  12792. options: {
  12793. handler: function handler(val) {
  12794. this.viewModel && this.viewModel.setOptions(val);
  12795. },
  12796. deep: true
  12797. },
  12798. layerName: function layerName(val) {
  12799. this.viewModel && this.viewModel.setLayerName(val);
  12800. }
  12801. },
  12802. created: function created() {
  12803. this.viewModel = new _LabelThemeLayerViewModel.default(this.$props);
  12804. },
  12805. loaded: function loaded() {
  12806. this.$emit('load', this.viewModel.themeLayer, this.map);
  12807. },
  12808. render: function render() {}
  12809. };
  12810. exports.default = _default2;
  12811. /***/ }),
  12812. /***/ "2fc1":
  12813. /***/ (function(module, exports) {
  12814. /**
  12815. * lodash (Custom Build) <https://lodash.com/>
  12816. * Build: `lodash modularize exports="npm" -o ./`
  12817. * Copyright jQuery Foundation and other contributors <https://jquery.org/>
  12818. * Released under MIT license <https://lodash.com/license>
  12819. * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  12820. * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  12821. */
  12822. /** Used as references for various `Number` constants. */
  12823. var MAX_SAFE_INTEGER = 9007199254740991;
  12824. /** `Object#toString` result references. */
  12825. var argsTag = '[object Arguments]',
  12826. funcTag = '[object Function]',
  12827. genTag = '[object GeneratorFunction]';
  12828. /** Used to detect unsigned integer values. */
  12829. var reIsUint = /^(?:0|[1-9]\d*)$/;
  12830. /**
  12831. * A faster alternative to `Function#apply`, this function invokes `func`
  12832. * with the `this` binding of `thisArg` and the arguments of `args`.
  12833. *
  12834. * @private
  12835. * @param {Function} func The function to invoke.
  12836. * @param {*} thisArg The `this` binding of `func`.
  12837. * @param {Array} args The arguments to invoke `func` with.
  12838. * @returns {*} Returns the result of `func`.
  12839. */
  12840. function apply(func, thisArg, args) {
  12841. switch (args.length) {
  12842. case 0: return func.call(thisArg);
  12843. case 1: return func.call(thisArg, args[0]);
  12844. case 2: return func.call(thisArg, args[0], args[1]);
  12845. case 3: return func.call(thisArg, args[0], args[1], args[2]);
  12846. }
  12847. return func.apply(thisArg, args);
  12848. }
  12849. /**
  12850. * The base implementation of `_.times` without support for iteratee shorthands
  12851. * or max array length checks.
  12852. *
  12853. * @private
  12854. * @param {number} n The number of times to invoke `iteratee`.
  12855. * @param {Function} iteratee The function invoked per iteration.
  12856. * @returns {Array} Returns the array of results.
  12857. */
  12858. function baseTimes(n, iteratee) {
  12859. var index = -1,
  12860. result = Array(n);
  12861. while (++index < n) {
  12862. result[index] = iteratee(index);
  12863. }
  12864. return result;
  12865. }
  12866. /** Used for built-in method references. */
  12867. var objectProto = Object.prototype;
  12868. /** Used to check objects for own properties. */
  12869. var hasOwnProperty = objectProto.hasOwnProperty;
  12870. /**
  12871. * Used to resolve the
  12872. * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
  12873. * of values.
  12874. */
  12875. var objectToString = objectProto.toString;
  12876. /** Built-in value references. */
  12877. var propertyIsEnumerable = objectProto.propertyIsEnumerable;
  12878. /* Built-in method references for those with the same name as other `lodash` methods. */
  12879. var nativeMax = Math.max;
  12880. /**
  12881. * Creates an array of the enumerable property names of the array-like `value`.
  12882. *
  12883. * @private
  12884. * @param {*} value The value to query.
  12885. * @param {boolean} inherited Specify returning inherited property names.
  12886. * @returns {Array} Returns the array of property names.
  12887. */
  12888. function arrayLikeKeys(value, inherited) {
  12889. // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
  12890. // Safari 9 makes `arguments.length` enumerable in strict mode.
  12891. var result = (isArray(value) || isArguments(value))
  12892. ? baseTimes(value.length, String)
  12893. : [];
  12894. var length = result.length,
  12895. skipIndexes = !!length;
  12896. for (var key in value) {
  12897. if ((inherited || hasOwnProperty.call(value, key)) &&
  12898. !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
  12899. result.push(key);
  12900. }
  12901. }
  12902. return result;
  12903. }
  12904. /**
  12905. * Assigns `value` to `key` of `object` if the existing value is not equivalent
  12906. * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  12907. * for equality comparisons.
  12908. *
  12909. * @private
  12910. * @param {Object} object The object to modify.
  12911. * @param {string} key The key of the property to assign.
  12912. * @param {*} value The value to assign.
  12913. */
  12914. function assignValue(object, key, value) {
  12915. var objValue = object[key];
  12916. if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
  12917. (value === undefined && !(key in object))) {
  12918. object[key] = value;
  12919. }
  12920. }
  12921. /**
  12922. * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
  12923. *
  12924. * @private
  12925. * @param {Object} object The object to query.
  12926. * @returns {Array} Returns the array of property names.
  12927. */
  12928. function baseKeysIn(object) {
  12929. if (!isObject(object)) {
  12930. return nativeKeysIn(object);
  12931. }
  12932. var isProto = isPrototype(object),
  12933. result = [];
  12934. for (var key in object) {
  12935. if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
  12936. result.push(key);
  12937. }
  12938. }
  12939. return result;
  12940. }
  12941. /**
  12942. * The base implementation of `_.rest` which doesn't validate or coerce arguments.
  12943. *
  12944. * @private
  12945. * @param {Function} func The function to apply a rest parameter to.
  12946. * @param {number} [start=func.length-1] The start position of the rest parameter.
  12947. * @returns {Function} Returns the new function.
  12948. */
  12949. function baseRest(func, start) {
  12950. start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
  12951. return function() {
  12952. var args = arguments,
  12953. index = -1,
  12954. length = nativeMax(args.length - start, 0),
  12955. array = Array(length);
  12956. while (++index < length) {
  12957. array[index] = args[start + index];
  12958. }
  12959. index = -1;
  12960. var otherArgs = Array(start + 1);
  12961. while (++index < start) {
  12962. otherArgs[index] = args[index];
  12963. }
  12964. otherArgs[start] = array;
  12965. return apply(func, this, otherArgs);
  12966. };
  12967. }
  12968. /**
  12969. * Copies properties of `source` to `object`.
  12970. *
  12971. * @private
  12972. * @param {Object} source The object to copy properties from.
  12973. * @param {Array} props The property identifiers to copy.
  12974. * @param {Object} [object={}] The object to copy properties to.
  12975. * @param {Function} [customizer] The function to customize copied values.
  12976. * @returns {Object} Returns `object`.
  12977. */
  12978. function copyObject(source, props, object, customizer) {
  12979. object || (object = {});
  12980. var index = -1,
  12981. length = props.length;
  12982. while (++index < length) {
  12983. var key = props[index];
  12984. var newValue = customizer
  12985. ? customizer(object[key], source[key], key, object, source)
  12986. : undefined;
  12987. assignValue(object, key, newValue === undefined ? source[key] : newValue);
  12988. }
  12989. return object;
  12990. }
  12991. /**
  12992. * Creates a function like `_.assign`.
  12993. *
  12994. * @private
  12995. * @param {Function} assigner The function to assign values.
  12996. * @returns {Function} Returns the new assigner function.
  12997. */
  12998. function createAssigner(assigner) {
  12999. return baseRest(function(object, sources) {
  13000. var index = -1,
  13001. length = sources.length,
  13002. customizer = length > 1 ? sources[length - 1] : undefined,
  13003. guard = length > 2 ? sources[2] : undefined;
  13004. customizer = (assigner.length > 3 && typeof customizer == 'function')
  13005. ? (length--, customizer)
  13006. : undefined;
  13007. if (guard && isIterateeCall(sources[0], sources[1], guard)) {
  13008. customizer = length < 3 ? undefined : customizer;
  13009. length = 1;
  13010. }
  13011. object = Object(object);
  13012. while (++index < length) {
  13013. var source = sources[index];
  13014. if (source) {
  13015. assigner(object, source, index, customizer);
  13016. }
  13017. }
  13018. return object;
  13019. });
  13020. }
  13021. /**
  13022. * Checks if `value` is a valid array-like index.
  13023. *
  13024. * @private
  13025. * @param {*} value The value to check.
  13026. * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
  13027. * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
  13028. */
  13029. function isIndex(value, length) {
  13030. length = length == null ? MAX_SAFE_INTEGER : length;
  13031. return !!length &&
  13032. (typeof value == 'number' || reIsUint.test(value)) &&
  13033. (value > -1 && value % 1 == 0 && value < length);
  13034. }
  13035. /**
  13036. * Checks if the given arguments are from an iteratee call.
  13037. *
  13038. * @private
  13039. * @param {*} value The potential iteratee value argument.
  13040. * @param {*} index The potential iteratee index or key argument.
  13041. * @param {*} object The potential iteratee object argument.
  13042. * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
  13043. * else `false`.
  13044. */
  13045. function isIterateeCall(value, index, object) {
  13046. if (!isObject(object)) {
  13047. return false;
  13048. }
  13049. var type = typeof index;
  13050. if (type == 'number'
  13051. ? (isArrayLike(object) && isIndex(index, object.length))
  13052. : (type == 'string' && index in object)
  13053. ) {
  13054. return eq(object[index], value);
  13055. }
  13056. return false;
  13057. }
  13058. /**
  13059. * Checks if `value` is likely a prototype object.
  13060. *
  13061. * @private
  13062. * @param {*} value The value to check.
  13063. * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
  13064. */
  13065. function isPrototype(value) {
  13066. var Ctor = value && value.constructor,
  13067. proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
  13068. return value === proto;
  13069. }
  13070. /**
  13071. * This function is like
  13072. * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
  13073. * except that it includes inherited enumerable properties.
  13074. *
  13075. * @private
  13076. * @param {Object} object The object to query.
  13077. * @returns {Array} Returns the array of property names.
  13078. */
  13079. function nativeKeysIn(object) {
  13080. var result = [];
  13081. if (object != null) {
  13082. for (var key in Object(object)) {
  13083. result.push(key);
  13084. }
  13085. }
  13086. return result;
  13087. }
  13088. /**
  13089. * Performs a
  13090. * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  13091. * comparison between two values to determine if they are equivalent.
  13092. *
  13093. * @static
  13094. * @memberOf _
  13095. * @since 4.0.0
  13096. * @category Lang
  13097. * @param {*} value The value to compare.
  13098. * @param {*} other The other value to compare.
  13099. * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
  13100. * @example
  13101. *
  13102. * var object = { 'a': 1 };
  13103. * var other = { 'a': 1 };
  13104. *
  13105. * _.eq(object, object);
  13106. * // => true
  13107. *
  13108. * _.eq(object, other);
  13109. * // => false
  13110. *
  13111. * _.eq('a', 'a');
  13112. * // => true
  13113. *
  13114. * _.eq('a', Object('a'));
  13115. * // => false
  13116. *
  13117. * _.eq(NaN, NaN);
  13118. * // => true
  13119. */
  13120. function eq(value, other) {
  13121. return value === other || (value !== value && other !== other);
  13122. }
  13123. /**
  13124. * Checks if `value` is likely an `arguments` object.
  13125. *
  13126. * @static
  13127. * @memberOf _
  13128. * @since 0.1.0
  13129. * @category Lang
  13130. * @param {*} value The value to check.
  13131. * @returns {boolean} Returns `true` if `value` is an `arguments` object,
  13132. * else `false`.
  13133. * @example
  13134. *
  13135. * _.isArguments(function() { return arguments; }());
  13136. * // => true
  13137. *
  13138. * _.isArguments([1, 2, 3]);
  13139. * // => false
  13140. */
  13141. function isArguments(value) {
  13142. // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
  13143. return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
  13144. (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
  13145. }
  13146. /**
  13147. * Checks if `value` is classified as an `Array` object.
  13148. *
  13149. * @static
  13150. * @memberOf _
  13151. * @since 0.1.0
  13152. * @category Lang
  13153. * @param {*} value The value to check.
  13154. * @returns {boolean} Returns `true` if `value` is an array, else `false`.
  13155. * @example
  13156. *
  13157. * _.isArray([1, 2, 3]);
  13158. * // => true
  13159. *
  13160. * _.isArray(document.body.children);
  13161. * // => false
  13162. *
  13163. * _.isArray('abc');
  13164. * // => false
  13165. *
  13166. * _.isArray(_.noop);
  13167. * // => false
  13168. */
  13169. var isArray = Array.isArray;
  13170. /**
  13171. * Checks if `value` is array-like. A value is considered array-like if it's
  13172. * not a function and has a `value.length` that's an integer greater than or
  13173. * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
  13174. *
  13175. * @static
  13176. * @memberOf _
  13177. * @since 4.0.0
  13178. * @category Lang
  13179. * @param {*} value The value to check.
  13180. * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
  13181. * @example
  13182. *
  13183. * _.isArrayLike([1, 2, 3]);
  13184. * // => true
  13185. *
  13186. * _.isArrayLike(document.body.children);
  13187. * // => true
  13188. *
  13189. * _.isArrayLike('abc');
  13190. * // => true
  13191. *
  13192. * _.isArrayLike(_.noop);
  13193. * // => false
  13194. */
  13195. function isArrayLike(value) {
  13196. return value != null && isLength(value.length) && !isFunction(value);
  13197. }
  13198. /**
  13199. * This method is like `_.isArrayLike` except that it also checks if `value`
  13200. * is an object.
  13201. *
  13202. * @static
  13203. * @memberOf _
  13204. * @since 4.0.0
  13205. * @category Lang
  13206. * @param {*} value The value to check.
  13207. * @returns {boolean} Returns `true` if `value` is an array-like object,
  13208. * else `false`.
  13209. * @example
  13210. *
  13211. * _.isArrayLikeObject([1, 2, 3]);
  13212. * // => true
  13213. *
  13214. * _.isArrayLikeObject(document.body.children);
  13215. * // => true
  13216. *
  13217. * _.isArrayLikeObject('abc');
  13218. * // => false
  13219. *
  13220. * _.isArrayLikeObject(_.noop);
  13221. * // => false
  13222. */
  13223. function isArrayLikeObject(value) {
  13224. return isObjectLike(value) && isArrayLike(value);
  13225. }
  13226. /**
  13227. * Checks if `value` is classified as a `Function` object.
  13228. *
  13229. * @static
  13230. * @memberOf _
  13231. * @since 0.1.0
  13232. * @category Lang
  13233. * @param {*} value The value to check.
  13234. * @returns {boolean} Returns `true` if `value` is a function, else `false`.
  13235. * @example
  13236. *
  13237. * _.isFunction(_);
  13238. * // => true
  13239. *
  13240. * _.isFunction(/abc/);
  13241. * // => false
  13242. */
  13243. function isFunction(value) {
  13244. // The use of `Object#toString` avoids issues with the `typeof` operator
  13245. // in Safari 8-9 which returns 'object' for typed array and other constructors.
  13246. var tag = isObject(value) ? objectToString.call(value) : '';
  13247. return tag == funcTag || tag == genTag;
  13248. }
  13249. /**
  13250. * Checks if `value` is a valid array-like length.
  13251. *
  13252. * **Note:** This method is loosely based on
  13253. * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
  13254. *
  13255. * @static
  13256. * @memberOf _
  13257. * @since 4.0.0
  13258. * @category Lang
  13259. * @param {*} value The value to check.
  13260. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
  13261. * @example
  13262. *
  13263. * _.isLength(3);
  13264. * // => true
  13265. *
  13266. * _.isLength(Number.MIN_VALUE);
  13267. * // => false
  13268. *
  13269. * _.isLength(Infinity);
  13270. * // => false
  13271. *
  13272. * _.isLength('3');
  13273. * // => false
  13274. */
  13275. function isLength(value) {
  13276. return typeof value == 'number' &&
  13277. value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  13278. }
  13279. /**
  13280. * Checks if `value` is the
  13281. * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
  13282. * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
  13283. *
  13284. * @static
  13285. * @memberOf _
  13286. * @since 0.1.0
  13287. * @category Lang
  13288. * @param {*} value The value to check.
  13289. * @returns {boolean} Returns `true` if `value` is an object, else `false`.
  13290. * @example
  13291. *
  13292. * _.isObject({});
  13293. * // => true
  13294. *
  13295. * _.isObject([1, 2, 3]);
  13296. * // => true
  13297. *
  13298. * _.isObject(_.noop);
  13299. * // => true
  13300. *
  13301. * _.isObject(null);
  13302. * // => false
  13303. */
  13304. function isObject(value) {
  13305. var type = typeof value;
  13306. return !!value && (type == 'object' || type == 'function');
  13307. }
  13308. /**
  13309. * Checks if `value` is object-like. A value is object-like if it's not `null`
  13310. * and has a `typeof` result of "object".
  13311. *
  13312. * @static
  13313. * @memberOf _
  13314. * @since 4.0.0
  13315. * @category Lang
  13316. * @param {*} value The value to check.
  13317. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  13318. * @example
  13319. *
  13320. * _.isObjectLike({});
  13321. * // => true
  13322. *
  13323. * _.isObjectLike([1, 2, 3]);
  13324. * // => true
  13325. *
  13326. * _.isObjectLike(_.noop);
  13327. * // => false
  13328. *
  13329. * _.isObjectLike(null);
  13330. * // => false
  13331. */
  13332. function isObjectLike(value) {
  13333. return !!value && typeof value == 'object';
  13334. }
  13335. /**
  13336. * This method is like `_.assign` except that it iterates over own and
  13337. * inherited source properties.
  13338. *
  13339. * **Note:** This method mutates `object`.
  13340. *
  13341. * @static
  13342. * @memberOf _
  13343. * @since 4.0.0
  13344. * @alias extend
  13345. * @category Object
  13346. * @param {Object} object The destination object.
  13347. * @param {...Object} [sources] The source objects.
  13348. * @returns {Object} Returns `object`.
  13349. * @see _.assign
  13350. * @example
  13351. *
  13352. * function Foo() {
  13353. * this.a = 1;
  13354. * }
  13355. *
  13356. * function Bar() {
  13357. * this.c = 3;
  13358. * }
  13359. *
  13360. * Foo.prototype.b = 2;
  13361. * Bar.prototype.d = 4;
  13362. *
  13363. * _.assignIn({ 'a': 0 }, new Foo, new Bar);
  13364. * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
  13365. */
  13366. var assignIn = createAssigner(function(object, source) {
  13367. copyObject(source, keysIn(source), object);
  13368. });
  13369. /**
  13370. * Creates an array of the own and inherited enumerable property names of `object`.
  13371. *
  13372. * **Note:** Non-object values are coerced to objects.
  13373. *
  13374. * @static
  13375. * @memberOf _
  13376. * @since 3.0.0
  13377. * @category Object
  13378. * @param {Object} object The object to query.
  13379. * @returns {Array} Returns the array of property names.
  13380. * @example
  13381. *
  13382. * function Foo() {
  13383. * this.a = 1;
  13384. * this.b = 2;
  13385. * }
  13386. *
  13387. * Foo.prototype.c = 3;
  13388. *
  13389. * _.keysIn(new Foo);
  13390. * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
  13391. */
  13392. function keysIn(object) {
  13393. return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
  13394. }
  13395. module.exports = assignIn;
  13396. /***/ }),
  13397. /***/ "3057":
  13398. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  13399. "use strict";
  13400. __webpack_require__.r(__webpack_exports__);
  13401. /* harmony import */ var _Legend_vue_vue_type_template_id_3fcf247b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("bbd3");
  13402. /* harmony import */ var _Legend_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("2dbc");
  13403. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Legend_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Legend_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  13404. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  13405. /* normalize component */
  13406. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  13407. _Legend_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  13408. _Legend_vue_vue_type_template_id_3fcf247b___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  13409. _Legend_vue_vue_type_template_id_3fcf247b___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  13410. false,
  13411. null,
  13412. null,
  13413. null
  13414. )
  13415. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  13416. /***/ }),
  13417. /***/ "3074":
  13418. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  13419. "use strict";
  13420. __webpack_require__.r(__webpack_exports__);
  13421. /* harmony import */ var _Compare_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("2166");
  13422. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Compare_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Compare_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  13423. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  13424. var render, staticRenderFns
  13425. /* normalize component */
  13426. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  13427. _Compare_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__["default"],
  13428. render,
  13429. staticRenderFns,
  13430. false,
  13431. null,
  13432. null,
  13433. null
  13434. )
  13435. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  13436. /***/ }),
  13437. /***/ "30f7":
  13438. /***/ (function(module, exports) {
  13439. /**
  13440. * lodash 3.0.3 (Custom Build) <https://lodash.com/>
  13441. * Build: `lodash modularize exports="npm" -o ./`
  13442. * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
  13443. * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  13444. * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  13445. * Available under MIT license <https://lodash.com/license>
  13446. */
  13447. /** `Object#toString` result references. */
  13448. var numberTag = '[object Number]';
  13449. /** Used for built-in method references. */
  13450. var objectProto = Object.prototype;
  13451. /**
  13452. * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
  13453. * of values.
  13454. */
  13455. var objectToString = objectProto.toString;
  13456. /**
  13457. * Checks if `value` is object-like. A value is object-like if it's not `null`
  13458. * and has a `typeof` result of "object".
  13459. *
  13460. * @static
  13461. * @memberOf _
  13462. * @category Lang
  13463. * @param {*} value The value to check.
  13464. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  13465. * @example
  13466. *
  13467. * _.isObjectLike({});
  13468. * // => true
  13469. *
  13470. * _.isObjectLike([1, 2, 3]);
  13471. * // => true
  13472. *
  13473. * _.isObjectLike(_.noop);
  13474. * // => false
  13475. *
  13476. * _.isObjectLike(null);
  13477. * // => false
  13478. */
  13479. function isObjectLike(value) {
  13480. return !!value && typeof value == 'object';
  13481. }
  13482. /**
  13483. * Checks if `value` is classified as a `Number` primitive or object.
  13484. *
  13485. * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified
  13486. * as numbers, use the `_.isFinite` method.
  13487. *
  13488. * @static
  13489. * @memberOf _
  13490. * @category Lang
  13491. * @param {*} value The value to check.
  13492. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
  13493. * @example
  13494. *
  13495. * _.isNumber(3);
  13496. * // => true
  13497. *
  13498. * _.isNumber(Number.MIN_VALUE);
  13499. * // => true
  13500. *
  13501. * _.isNumber(Infinity);
  13502. * // => true
  13503. *
  13504. * _.isNumber('3');
  13505. * // => false
  13506. */
  13507. function isNumber(value) {
  13508. return typeof value == 'number' ||
  13509. (isObjectLike(value) && objectToString.call(value) == numberTag);
  13510. }
  13511. module.exports = isNumber;
  13512. /***/ }),
  13513. /***/ "31ff":
  13514. /***/ (function(module, exports) {
  13515. function _arrayWithHoles(arr) {
  13516. if (Array.isArray(arr)) return arr;
  13517. }
  13518. module.exports = _arrayWithHoles;
  13519. /***/ }),
  13520. /***/ "3297":
  13521. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  13522. "use strict";
  13523. __webpack_require__.r(__webpack_exports__);
  13524. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AreaResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("b763");
  13525. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AreaResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AreaResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  13526. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AreaResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AreaResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  13527. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AreaResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  13528. /***/ }),
  13529. /***/ "32bc":
  13530. /***/ (function(module, exports, __webpack_require__) {
  13531. "use strict";
  13532. var _interopRequireDefault = __webpack_require__("8e6d");
  13533. Object.defineProperty(exports, "__esModule", {
  13534. value: true
  13535. });
  13536. exports.default = void 0;
  13537. var _util = __webpack_require__("1448");
  13538. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  13539. //
  13540. //
  13541. //
  13542. //
  13543. //
  13544. //
  13545. var _default = {
  13546. name: 'SmTimeText',
  13547. mixins: [_theme.default],
  13548. props: {
  13549. timeType: {
  13550. type: String,
  13551. default: 'date' // "date+second" "date+second+week"
  13552. },
  13553. fontStyle: {
  13554. type: Object
  13555. }
  13556. },
  13557. data: function data() {
  13558. return {
  13559. time: '',
  13560. timeInterval: null
  13561. };
  13562. },
  13563. watch: {
  13564. timeType: function timeType() {
  13565. this.initTime(this.timeType);
  13566. }
  13567. },
  13568. mounted: function mounted() {
  13569. this.initTime(this.timeType);
  13570. },
  13571. destroyed: function destroyed() {
  13572. clearInterval(this.timeInterval);
  13573. },
  13574. methods: {
  13575. // 初始化
  13576. initTime: function initTime(timeType) {
  13577. var _this = this;
  13578. clearInterval(this.timeInterval);
  13579. this.time = (0, _util.getDateTime)(timeType);
  13580. this.timeInterval = setInterval(function () {
  13581. _this.time = (0, _util.getDateTime)(timeType);
  13582. }, 1000);
  13583. }
  13584. }
  13585. };
  13586. exports.default = _default;
  13587. /***/ }),
  13588. /***/ "331f":
  13589. /***/ (function(module, exports, __webpack_require__) {
  13590. var isObject = __webpack_require__("d3a8"),
  13591. now = __webpack_require__("d201"),
  13592. toNumber = __webpack_require__("b9e2");
  13593. /** Error message constants. */
  13594. var FUNC_ERROR_TEXT = 'Expected a function';
  13595. /* Built-in method references for those with the same name as other `lodash` methods. */
  13596. var nativeMax = Math.max,
  13597. nativeMin = Math.min;
  13598. /**
  13599. * Creates a debounced function that delays invoking `func` until after `wait`
  13600. * milliseconds have elapsed since the last time the debounced function was
  13601. * invoked. The debounced function comes with a `cancel` method to cancel
  13602. * delayed `func` invocations and a `flush` method to immediately invoke them.
  13603. * Provide `options` to indicate whether `func` should be invoked on the
  13604. * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
  13605. * with the last arguments provided to the debounced function. Subsequent
  13606. * calls to the debounced function return the result of the last `func`
  13607. * invocation.
  13608. *
  13609. * **Note:** If `leading` and `trailing` options are `true`, `func` is
  13610. * invoked on the trailing edge of the timeout only if the debounced function
  13611. * is invoked more than once during the `wait` timeout.
  13612. *
  13613. * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
  13614. * until to the next tick, similar to `setTimeout` with a timeout of `0`.
  13615. *
  13616. * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
  13617. * for details over the differences between `_.debounce` and `_.throttle`.
  13618. *
  13619. * @static
  13620. * @memberOf _
  13621. * @since 0.1.0
  13622. * @category Function
  13623. * @param {Function} func The function to debounce.
  13624. * @param {number} [wait=0] The number of milliseconds to delay.
  13625. * @param {Object} [options={}] The options object.
  13626. * @param {boolean} [options.leading=false]
  13627. * Specify invoking on the leading edge of the timeout.
  13628. * @param {number} [options.maxWait]
  13629. * The maximum time `func` is allowed to be delayed before it's invoked.
  13630. * @param {boolean} [options.trailing=true]
  13631. * Specify invoking on the trailing edge of the timeout.
  13632. * @returns {Function} Returns the new debounced function.
  13633. * @example
  13634. *
  13635. * // Avoid costly calculations while the window size is in flux.
  13636. * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
  13637. *
  13638. * // Invoke `sendMail` when clicked, debouncing subsequent calls.
  13639. * jQuery(element).on('click', _.debounce(sendMail, 300, {
  13640. * 'leading': true,
  13641. * 'trailing': false
  13642. * }));
  13643. *
  13644. * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
  13645. * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
  13646. * var source = new EventSource('/stream');
  13647. * jQuery(source).on('message', debounced);
  13648. *
  13649. * // Cancel the trailing debounced invocation.
  13650. * jQuery(window).on('popstate', debounced.cancel);
  13651. */
  13652. function debounce(func, wait, options) {
  13653. var lastArgs,
  13654. lastThis,
  13655. maxWait,
  13656. result,
  13657. timerId,
  13658. lastCallTime,
  13659. lastInvokeTime = 0,
  13660. leading = false,
  13661. maxing = false,
  13662. trailing = true;
  13663. if (typeof func != 'function') {
  13664. throw new TypeError(FUNC_ERROR_TEXT);
  13665. }
  13666. wait = toNumber(wait) || 0;
  13667. if (isObject(options)) {
  13668. leading = !!options.leading;
  13669. maxing = 'maxWait' in options;
  13670. maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
  13671. trailing = 'trailing' in options ? !!options.trailing : trailing;
  13672. }
  13673. function invokeFunc(time) {
  13674. var args = lastArgs,
  13675. thisArg = lastThis;
  13676. lastArgs = lastThis = undefined;
  13677. lastInvokeTime = time;
  13678. result = func.apply(thisArg, args);
  13679. return result;
  13680. }
  13681. function leadingEdge(time) {
  13682. // Reset any `maxWait` timer.
  13683. lastInvokeTime = time;
  13684. // Start the timer for the trailing edge.
  13685. timerId = setTimeout(timerExpired, wait);
  13686. // Invoke the leading edge.
  13687. return leading ? invokeFunc(time) : result;
  13688. }
  13689. function remainingWait(time) {
  13690. var timeSinceLastCall = time - lastCallTime,
  13691. timeSinceLastInvoke = time - lastInvokeTime,
  13692. timeWaiting = wait - timeSinceLastCall;
  13693. return maxing
  13694. ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
  13695. : timeWaiting;
  13696. }
  13697. function shouldInvoke(time) {
  13698. var timeSinceLastCall = time - lastCallTime,
  13699. timeSinceLastInvoke = time - lastInvokeTime;
  13700. // Either this is the first call, activity has stopped and we're at the
  13701. // trailing edge, the system time has gone backwards and we're treating
  13702. // it as the trailing edge, or we've hit the `maxWait` limit.
  13703. return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
  13704. (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
  13705. }
  13706. function timerExpired() {
  13707. var time = now();
  13708. if (shouldInvoke(time)) {
  13709. return trailingEdge(time);
  13710. }
  13711. // Restart the timer.
  13712. timerId = setTimeout(timerExpired, remainingWait(time));
  13713. }
  13714. function trailingEdge(time) {
  13715. timerId = undefined;
  13716. // Only invoke if we have `lastArgs` which means `func` has been
  13717. // debounced at least once.
  13718. if (trailing && lastArgs) {
  13719. return invokeFunc(time);
  13720. }
  13721. lastArgs = lastThis = undefined;
  13722. return result;
  13723. }
  13724. function cancel() {
  13725. if (timerId !== undefined) {
  13726. clearTimeout(timerId);
  13727. }
  13728. lastInvokeTime = 0;
  13729. lastArgs = lastCallTime = lastThis = timerId = undefined;
  13730. }
  13731. function flush() {
  13732. return timerId === undefined ? result : trailingEdge(now());
  13733. }
  13734. function debounced() {
  13735. var time = now(),
  13736. isInvoking = shouldInvoke(time);
  13737. lastArgs = arguments;
  13738. lastThis = this;
  13739. lastCallTime = time;
  13740. if (isInvoking) {
  13741. if (timerId === undefined) {
  13742. return leadingEdge(lastCallTime);
  13743. }
  13744. if (maxing) {
  13745. // Handle invocations in a tight loop.
  13746. clearTimeout(timerId);
  13747. timerId = setTimeout(timerExpired, wait);
  13748. return invokeFunc(lastCallTime);
  13749. }
  13750. }
  13751. if (timerId === undefined) {
  13752. timerId = setTimeout(timerExpired, wait);
  13753. }
  13754. return result;
  13755. }
  13756. debounced.cancel = cancel;
  13757. debounced.flush = flush;
  13758. return debounced;
  13759. }
  13760. module.exports = debounce;
  13761. /***/ }),
  13762. /***/ "333c":
  13763. /***/ (function(module, exports, __webpack_require__) {
  13764. "use strict";
  13765. var _interopRequireDefault = __webpack_require__("8e6d");
  13766. Object.defineProperty(exports, "__esModule", {
  13767. value: true
  13768. });
  13769. exports.default = void 0;
  13770. var _Card = _interopRequireDefault(__webpack_require__("f7bd"));
  13771. var _default = {
  13772. components: {
  13773. 'sm-card': _Card.default
  13774. },
  13775. data: function data() {
  13776. return {
  13777. isShow: true
  13778. };
  13779. },
  13780. props: {
  13781. position: {
  13782. type: String,
  13783. default: 'top-left',
  13784. validator: function validator(value) {
  13785. return ['top-left', 'top-right', 'bottom-left', 'bottom-right'].includes(value);
  13786. }
  13787. },
  13788. iconClass: {
  13789. type: String
  13790. },
  13791. autoRotate: {
  13792. type: Boolean,
  13793. default: false
  13794. },
  13795. headerName: {
  13796. type: String
  13797. },
  13798. collapsed: {
  13799. type: Boolean,
  13800. // 是否折叠
  13801. default: false
  13802. }
  13803. }
  13804. };
  13805. exports.default = _default;
  13806. /***/ }),
  13807. /***/ "338a":
  13808. /***/ (function(module, exports, __webpack_require__) {
  13809. "use strict";
  13810. var _interopRequireDefault = __webpack_require__("8e6d");
  13811. Object.defineProperty(exports, "__esModule", {
  13812. value: true
  13813. });
  13814. exports.default = void 0;
  13815. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  13816. //
  13817. //
  13818. //
  13819. //
  13820. //
  13821. //
  13822. //
  13823. //
  13824. //
  13825. //
  13826. //
  13827. //
  13828. //
  13829. //
  13830. //
  13831. //
  13832. //
  13833. //
  13834. //
  13835. //
  13836. var _default = {
  13837. name: 'SmIcon',
  13838. mixins: [_theme.default],
  13839. props: {
  13840. type: {
  13841. type: String,
  13842. default: 'info'
  13843. },
  13844. iconStyle: {
  13845. type: Object
  13846. },
  13847. theme: {
  13848. type: String,
  13849. default: 'outlined'
  13850. },
  13851. twoToneColor: {
  13852. type: String
  13853. },
  13854. iconClass: {
  13855. type: String
  13856. },
  13857. component: {
  13858. type: Object
  13859. },
  13860. autoPrefix: {
  13861. type: Boolean,
  13862. default: true
  13863. }
  13864. },
  13865. computed: {
  13866. colorStyle: function colorStyle() {
  13867. return !this.iconStyle || !this.iconStyle.color ? this.getColorStyle(0) : {
  13868. color: this.iconStyle.color
  13869. };
  13870. },
  13871. customIconClass: function customIconClass() {
  13872. return this.autoPrefix ? 'sm-components-icons-' + this.iconClass : this.iconClass;
  13873. }
  13874. }
  13875. };
  13876. exports.default = _default;
  13877. /***/ }),
  13878. /***/ "33aa":
  13879. /***/ (function(module, exports, __webpack_require__) {
  13880. "use strict";
  13881. var _interopRequireDefault = __webpack_require__("8e6d");
  13882. Object.defineProperty(exports, "__esModule", {
  13883. value: true
  13884. });
  13885. exports.chartThemeUtil = exports.getMultiColorGroup = exports.handleMultiGradient = void 0;
  13886. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  13887. var _util = __webpack_require__("1448");
  13888. var _lodash = _interopRequireDefault(__webpack_require__("25a2"));
  13889. var handleMultiGradient = function handleMultiGradient(colorGroupsData, dataLength) {
  13890. var startColors = [];
  13891. var endColors = [];
  13892. var startColorGroups = [];
  13893. var endColorGroups = [];
  13894. var results = [];
  13895. colorGroupsData.forEach(function (colorInfo) {
  13896. startColors.push(colorInfo.colorStops[0].color);
  13897. endColors.push(colorInfo.colorStops[1].color);
  13898. });
  13899. startColorGroups = SuperMap.ColorsPickerUtil.getGradientColors(startColors, dataLength, 'RANGE');
  13900. endColorGroups = SuperMap.ColorsPickerUtil.getGradientColors(endColors, dataLength, 'RANGE');
  13901. for (var i = 0; i < dataLength; i++) {
  13902. var colorGroupDataCopy = (0, _lodash.default)(colorGroupsData[0]);
  13903. colorGroupDataCopy.colorStops = [{
  13904. offset: 0,
  13905. color: startColorGroups[i]
  13906. }, {
  13907. offset: 1,
  13908. color: endColorGroups[i]
  13909. }];
  13910. results.push(colorGroupDataCopy);
  13911. }
  13912. return results;
  13913. };
  13914. exports.handleMultiGradient = handleMultiGradient;
  13915. var getMultiColorGroup = function getMultiColorGroup(colorGroup, dataNumber) {
  13916. var nextColorGroup; // 是否需要产生分段颜色值
  13917. if (colorGroup && dataNumber > colorGroup.length && (0, _typeof2.default)(colorGroup[0]) === 'object') {
  13918. nextColorGroup = handleMultiGradient(colorGroup, dataNumber);
  13919. } else {
  13920. nextColorGroup = SuperMap.ColorsPickerUtil.getGradientColors(colorGroup, dataNumber, 'RANGE');
  13921. }
  13922. return nextColorGroup;
  13923. };
  13924. exports.getMultiColorGroup = getMultiColorGroup;
  13925. var chartThemeUtil = function chartThemeUtil() {
  13926. var background = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'rgba(255, 255, 255, 0.6)';
  13927. var textColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#333';
  13928. var colorGroup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ['#3fb1e3', '#6be6c1', '#626c91', '#a0a7e6', '#c4ebad', '#96dee8'];
  13929. var dataNumber = arguments.length > 3 ? arguments[3] : undefined;
  13930. colorGroup = getMultiColorGroup(colorGroup, dataNumber);
  13931. var chartTheme = {
  13932. color: colorGroup,
  13933. backgroundColor: background,
  13934. textStyle: {},
  13935. title: {
  13936. textStyle: {
  13937. color: textColor
  13938. },
  13939. subtextStyle: {
  13940. color: '#999999'
  13941. }
  13942. },
  13943. line: {
  13944. itemStyle: {
  13945. normal: {
  13946. borderWidth: '2'
  13947. }
  13948. },
  13949. lineStyle: {
  13950. normal: {
  13951. width: '3'
  13952. }
  13953. },
  13954. symbolSize: '8',
  13955. symbol: 'emptyCircle',
  13956. smooth: false
  13957. },
  13958. radar: {
  13959. name: {
  13960. textStyle: {
  13961. color: textColor
  13962. }
  13963. },
  13964. lineStyle: {
  13965. normal: {
  13966. width: '3',
  13967. color: textColor
  13968. }
  13969. },
  13970. splitLine: {
  13971. lineStyle: {
  13972. color: [(0, _util.getColorWithOpacity)(textColor, 1), (0, _util.getColorWithOpacity)(textColor, 0.8), (0, _util.getColorWithOpacity)(textColor, 0.6), (0, _util.getColorWithOpacity)(textColor, 0.4), (0, _util.getColorWithOpacity)(textColor, 0.2), (0, _util.getColorWithOpacity)(textColor, 0.1)]
  13973. }
  13974. },
  13975. axisLine: {
  13976. lineStyle: {
  13977. color: (0, _util.getColorWithOpacity)(textColor, 0.3)
  13978. }
  13979. },
  13980. symbolSize: '8',
  13981. symbol: 'emptyCircle',
  13982. smooth: false // 'radius': '63%'
  13983. },
  13984. bar: {
  13985. itemStyle: {
  13986. normal: {
  13987. barBorderWidth: 0,
  13988. barBorderColor: '#cccccc'
  13989. },
  13990. emphasis: {
  13991. barBorderWidth: 0,
  13992. barBorderColor: '#cccccc'
  13993. }
  13994. }
  13995. },
  13996. pie: {
  13997. itemStyle: {
  13998. normal: {
  13999. borderWidth: 0,
  14000. borderColor: '#cccccc'
  14001. },
  14002. emphasis: {
  14003. borderWidth: 0,
  14004. borderColor: '#cccccc'
  14005. }
  14006. },
  14007. radius: '63%'
  14008. },
  14009. scatter: {
  14010. itemStyle: {
  14011. normal: {
  14012. borderWidth: 0,
  14013. borderColor: '#cccccc'
  14014. },
  14015. emphasis: {
  14016. borderWidth: 0,
  14017. borderColor: '#cccccc'
  14018. }
  14019. }
  14020. },
  14021. boxplot: {
  14022. itemStyle: {
  14023. normal: {
  14024. borderWidth: 0,
  14025. borderColor: '#cccccc'
  14026. },
  14027. emphasis: {
  14028. borderWidth: 0,
  14029. borderColor: '#cccccc'
  14030. }
  14031. }
  14032. },
  14033. parallel: {
  14034. itemStyle: {
  14035. normal: {
  14036. borderWidth: 0,
  14037. borderColor: '#cccccc'
  14038. },
  14039. emphasis: {
  14040. borderWidth: 0,
  14041. borderColor: '#cccccc'
  14042. }
  14043. }
  14044. },
  14045. sankey: {
  14046. itemStyle: {
  14047. normal: {
  14048. borderWidth: 0,
  14049. borderColor: '#cccccc'
  14050. },
  14051. emphasis: {
  14052. borderWidth: 0,
  14053. borderColor: '#cccccc'
  14054. }
  14055. }
  14056. },
  14057. funnel: {
  14058. itemStyle: {
  14059. normal: {
  14060. borderWidth: 0,
  14061. borderColor: '#cccccc'
  14062. },
  14063. emphasis: {
  14064. borderWidth: 0,
  14065. borderColor: '#cccccc'
  14066. }
  14067. }
  14068. },
  14069. gauge: {
  14070. axisLine: {
  14071. // 坐标轴线
  14072. lineStyle: {
  14073. // 属性lineStyle控制线条样式
  14074. color: [[0.2, colorGroup[0]], [0.8, colorGroup[1]], [1, colorGroup[2]]]
  14075. }
  14076. },
  14077. itemStyle: {
  14078. normal: {
  14079. borderWidth: 0,
  14080. borderColor: '#cccccc'
  14081. },
  14082. emphasis: {
  14083. borderWidth: 0,
  14084. borderColor: '#cccccc'
  14085. }
  14086. }
  14087. },
  14088. candlestick: {
  14089. itemStyle: {
  14090. normal: {
  14091. color: '#e6a0d2',
  14092. color0: 'transparent',
  14093. borderColor: '#e6a0d2',
  14094. borderColor0: '#3fb1e3',
  14095. borderWidth: '2'
  14096. }
  14097. }
  14098. },
  14099. graph: {
  14100. itemStyle: {
  14101. normal: {
  14102. borderWidth: 0,
  14103. borderColor: '#cccccc'
  14104. }
  14105. },
  14106. lineStyle: {
  14107. normal: {
  14108. width: '1',
  14109. color: '#cccccc'
  14110. }
  14111. },
  14112. symbolSize: '8',
  14113. symbol: 'emptyCircle',
  14114. smooth: false,
  14115. color: colorGroup,
  14116. label: {
  14117. normal: {
  14118. textStyle: {
  14119. color: '#ffffff'
  14120. }
  14121. }
  14122. }
  14123. },
  14124. map: {
  14125. itemStyle: {
  14126. normal: {
  14127. areaColor: '#eeeeee',
  14128. borderColor: '#aaaaaa',
  14129. borderWidth: 0.5
  14130. },
  14131. emphasis: {
  14132. areaColor: 'rgba(63,177,227,0.25)',
  14133. borderColor: '#3fb1e3',
  14134. borderWidth: 1
  14135. }
  14136. },
  14137. label: {
  14138. normal: {
  14139. textStyle: {
  14140. color: '#ffffff'
  14141. }
  14142. },
  14143. emphasis: {
  14144. textStyle: {
  14145. color: 'rgb(63,177,227)'
  14146. }
  14147. }
  14148. }
  14149. },
  14150. geo: {
  14151. itemStyle: {
  14152. normal: {
  14153. areaColor: '#eeeeee',
  14154. borderColor: '#aaaaaa',
  14155. borderWidth: 0.5
  14156. },
  14157. emphasis: {
  14158. areaColor: 'rgba(63,177,227,0.25)',
  14159. borderColor: '#3fb1e3',
  14160. borderWidth: 1
  14161. }
  14162. },
  14163. label: {
  14164. normal: {
  14165. textStyle: {
  14166. color: '#ffffff'
  14167. }
  14168. },
  14169. emphasis: {
  14170. textStyle: {
  14171. color: 'rgb(63,177,227)'
  14172. }
  14173. }
  14174. }
  14175. },
  14176. categoryAxis: {
  14177. axisLine: {
  14178. show: true,
  14179. lineStyle: {
  14180. color: textColor
  14181. }
  14182. },
  14183. axisTick: {
  14184. show: true,
  14185. lineStyle: {
  14186. color: textColor
  14187. }
  14188. },
  14189. axisLabel: {
  14190. show: true,
  14191. rotate: -45,
  14192. interval: 'auto',
  14193. textStyle: {
  14194. color: textColor
  14195. }
  14196. },
  14197. splitLine: {
  14198. show: false,
  14199. lineStyle: {
  14200. color: ['#eeeeee']
  14201. }
  14202. },
  14203. splitArea: {
  14204. show: false,
  14205. areaStyle: {
  14206. color: ['rgba(250,250,250,0.05)', 'rgba(200,200,200,0.02)']
  14207. }
  14208. },
  14209. nameTextStyle: {
  14210. fontSize: 14
  14211. }
  14212. },
  14213. valueAxis: {
  14214. axisLine: {
  14215. show: true,
  14216. lineStyle: {
  14217. color: textColor
  14218. }
  14219. },
  14220. axisTick: {
  14221. show: true,
  14222. lineStyle: {
  14223. color: textColor
  14224. }
  14225. },
  14226. axisLabel: {
  14227. show: true,
  14228. rotate: 45,
  14229. interval: 'auto',
  14230. textStyle: {
  14231. color: textColor
  14232. }
  14233. },
  14234. splitLine: {
  14235. show: false,
  14236. lineStyle: {
  14237. color: ['#eeeeee']
  14238. }
  14239. },
  14240. splitArea: {
  14241. show: true // 'areaStyle': {
  14242. // 'color': [
  14243. // 'rgba(237,237,236,1)',
  14244. // 'rgba(252,252,251,1)'
  14245. // ]
  14246. // }
  14247. },
  14248. nameTextStyle: {
  14249. fontSize: 14
  14250. }
  14251. },
  14252. logAxis: {
  14253. axisLine: {
  14254. show: true,
  14255. lineStyle: {
  14256. color: textColor
  14257. }
  14258. },
  14259. axisTick: {
  14260. show: false,
  14261. lineStyle: {
  14262. color: textColor
  14263. }
  14264. },
  14265. axisLabel: {
  14266. show: true,
  14267. textStyle: {
  14268. color: textColor
  14269. }
  14270. },
  14271. splitLine: {
  14272. show: true,
  14273. lineStyle: {
  14274. color: [textColor]
  14275. }
  14276. },
  14277. splitArea: {
  14278. show: false,
  14279. areaStyle: {
  14280. color: ['rgba(250,250,250,0.05)', 'rgba(200,200,200,0.02)']
  14281. }
  14282. }
  14283. },
  14284. timeAxis: {
  14285. axisLine: {
  14286. show: true,
  14287. lineStyle: {
  14288. color: textColor
  14289. }
  14290. },
  14291. axisTick: {
  14292. show: false,
  14293. lineStyle: {
  14294. color: textColor
  14295. }
  14296. },
  14297. axisLabel: {
  14298. show: true,
  14299. textStyle: {
  14300. color: textColor
  14301. }
  14302. },
  14303. splitLine: {
  14304. show: true,
  14305. lineStyle: {
  14306. color: [textColor]
  14307. }
  14308. },
  14309. splitArea: {
  14310. show: false,
  14311. areaStyle: {
  14312. color: ['rgba(250,250,250,0.05)', 'rgba(200,200,200,0.02)']
  14313. }
  14314. }
  14315. },
  14316. toolbox: {
  14317. iconStyle: {
  14318. normal: {
  14319. borderColor: '#999999'
  14320. },
  14321. emphasis: {
  14322. borderColor: '#666666'
  14323. }
  14324. }
  14325. },
  14326. legend: {
  14327. textStyle: {
  14328. color: textColor
  14329. },
  14330. pageTextStyle: {
  14331. color: textColor
  14332. }
  14333. },
  14334. tooltip: {
  14335. axisPointer: {
  14336. lineStyle: {
  14337. color: '#cccccc',
  14338. width: 1
  14339. },
  14340. crossStyle: {
  14341. color: '#cccccc',
  14342. width: 1
  14343. }
  14344. }
  14345. },
  14346. timeline: {
  14347. lineStyle: {
  14348. color: '#626c91',
  14349. width: 1
  14350. },
  14351. itemStyle: {
  14352. normal: {
  14353. color: '#626c91',
  14354. borderWidth: 1
  14355. },
  14356. emphasis: {
  14357. color: '#626c91'
  14358. }
  14359. },
  14360. controlStyle: {
  14361. normal: {
  14362. color: '#626c91',
  14363. borderColor: '#626c91',
  14364. borderWidth: 0.5
  14365. },
  14366. emphasis: {
  14367. color: '#626c91',
  14368. borderColor: '#626c91',
  14369. borderWidth: 0.5
  14370. }
  14371. },
  14372. checkpointStyle: {
  14373. color: '#3fb1e3',
  14374. borderColor: 'rgba(63,177,227,0.15)'
  14375. },
  14376. label: {
  14377. normal: {
  14378. textStyle: {
  14379. color: '#626c91'
  14380. }
  14381. },
  14382. emphasis: {
  14383. textStyle: {
  14384. color: '#626c91'
  14385. }
  14386. }
  14387. }
  14388. },
  14389. visualMap: {
  14390. color: colorGroup
  14391. },
  14392. dataZoom: {
  14393. backgroundColor: 'rgba(255,255,255,0)',
  14394. dataBackgroundColor: 'rgba(222,222,222,1)',
  14395. fillerColor: 'rgba(114,230,212,0.25)',
  14396. handleColor: '#cccccc',
  14397. handleSize: '100%',
  14398. textStyle: {
  14399. color: textColor
  14400. }
  14401. },
  14402. markPoint: {
  14403. label: {
  14404. normal: {
  14405. textStyle: {
  14406. color: textColor
  14407. }
  14408. },
  14409. emphasis: {
  14410. textStyle: {
  14411. color: textColor
  14412. }
  14413. }
  14414. }
  14415. }
  14416. };
  14417. return chartTheme;
  14418. };
  14419. exports.chartThemeUtil = chartThemeUtil;
  14420. /***/ }),
  14421. /***/ "33f4":
  14422. /***/ (function(module, exports, __webpack_require__) {
  14423. "use strict";
  14424. var _interopRequireDefault = __webpack_require__("8e6d");
  14425. Object.defineProperty(exports, "__esModule", {
  14426. value: true
  14427. });
  14428. exports.default = void 0;
  14429. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  14430. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  14431. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  14432. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  14433. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  14434. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  14435. var _lang = __webpack_require__("4e21");
  14436. var tileUrlTemplate = 'https://t{s}.tianditu.gov.cn/{type}_{proj}/wmts?tk={tk}&service=WMTS&request=GetTile&version=1.0.0&style=default&tilematrixSet={proj}&format=tiles&width=256&height=256&layer={type}&tilematrix={z}&tilerow={y}&tilecol={x}';
  14437. var LABELLIST = {
  14438. vec: 'cva',
  14439. img: 'cia',
  14440. ter: 'cta'
  14441. };
  14442. var TdtMapSwitcherViewModel =
  14443. /*#__PURE__*/
  14444. function (_mapboxgl$Evented) {
  14445. (0, _inherits2.default)(TdtMapSwitcherViewModel, _mapboxgl$Evented);
  14446. function TdtMapSwitcherViewModel(tk) {
  14447. var _this;
  14448. (0, _classCallCheck2.default)(this, TdtMapSwitcherViewModel);
  14449. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(TdtMapSwitcherViewModel).call(this));
  14450. _this.tk = tk;
  14451. _this.proj = 'w';
  14452. return _this;
  14453. }
  14454. (0, _createClass2.default)(TdtMapSwitcherViewModel, [{
  14455. key: "setMap",
  14456. value: function setMap(mapInfo) {
  14457. var map = mapInfo.map;
  14458. this.map = map;
  14459. }
  14460. }, {
  14461. key: "changeBaseLayer",
  14462. value: function changeBaseLayer(type) {
  14463. var _this2 = this;
  14464. if (this.map) {
  14465. this.removeLayer();
  14466. var mapCrs = this.map.getCRS();
  14467. this.proj = mapCrs.epsgCode === 'EPSG:3857' ? 'w' : 'c';
  14468. var sources = this.getSources(type);
  14469. Object.keys(sources).forEach(function (sourceId) {
  14470. _this2.map.addSource(sourceId, sources[sourceId]);
  14471. });
  14472. var layers = this.getLayers(type);
  14473. var styles = this.map.getStyle();
  14474. var firstLayerId = styles.layers.length ? this.map.getStyle().layers[0].id : '';
  14475. layers.forEach(function (layer) {
  14476. _this2.map.addLayer(layer, firstLayerId);
  14477. });
  14478. }
  14479. }
  14480. }, {
  14481. key: "togglerLabelLayer",
  14482. value: function togglerLabelLayer(isChecked) {
  14483. var visible = isChecked ? 'visible' : 'none';
  14484. var labelLayer = this.map && this.map.getLayer((0, _lang.geti18n)().tc("tdtMapSwitcher.Tianditu".concat(this.tdtLabelType)));
  14485. labelLayer && this.map.setLayoutProperty((0, _lang.geti18n)().tc("tdtMapSwitcher.Tianditu".concat(this.tdtLabelType)), 'visibility', visible);
  14486. }
  14487. }, {
  14488. key: "removeLayer",
  14489. value: function removeLayer() {
  14490. var _this3 = this;
  14491. var sourceList = this.map.getStyle().sources;
  14492. var layerList = this.map.getStyle().layers;
  14493. layerList.forEach(function (layer) {
  14494. if (layer.type === 'raster') {
  14495. _this3.map.removeLayer(layer.id);
  14496. }
  14497. });
  14498. Object.keys(sourceList).forEach(function (sourceId) {
  14499. if (sourceList[sourceId].type === 'raster') {
  14500. _this3.map.removeSource(sourceId);
  14501. }
  14502. });
  14503. }
  14504. }, {
  14505. key: "getLayers",
  14506. value: function getLayers(type) {
  14507. type = type.replace(type[0], type[0].toUpperCase());
  14508. return [{
  14509. id: (0, _lang.geti18n)().tc("tdtMapSwitcher.Tianditu".concat(type)),
  14510. type: 'raster',
  14511. source: (0, _lang.geti18n)().tc("tdtMapSwitcher.Tianditu".concat(type)),
  14512. minzoom: 0,
  14513. maxzoom: 18
  14514. }, {
  14515. id: (0, _lang.geti18n)().tc("tdtMapSwitcher.Tianditu".concat(this.tdtLabelType)),
  14516. type: 'raster',
  14517. source: (0, _lang.geti18n)().tc("tdtMapSwitcher.Tianditu".concat(this.tdtLabelType)),
  14518. minzoom: 0,
  14519. maxzoom: 18
  14520. }];
  14521. }
  14522. }, {
  14523. key: "getSources",
  14524. value: function getSources(type) {
  14525. var tdtType = type.replace(type[0], type[0].toUpperCase());
  14526. var sources = {};
  14527. sources[(0, _lang.geti18n)().tc("tdtMapSwitcher.Tianditu".concat(tdtType))] = {
  14528. type: 'raster',
  14529. tiles: this.listUrls(type),
  14530. tileSize: 256
  14531. };
  14532. var tdtLabeltype = LABELLIST[type];
  14533. this.tdtLabelType = tdtLabeltype.replace(tdtLabeltype[0], tdtLabeltype[0].toUpperCase());
  14534. sources[(0, _lang.geti18n)().tc("tdtMapSwitcher.Tianditu".concat(this.tdtLabelType))] = {
  14535. type: 'raster',
  14536. tiles: this.listUrls(LABELLIST[type]),
  14537. tileSize: 256
  14538. };
  14539. return sources;
  14540. }
  14541. }, {
  14542. key: "listUrls",
  14543. value: function listUrls(type) {
  14544. var urls = [];
  14545. if (type) {
  14546. for (var index = 0; index < 8; index++) {
  14547. urls.push(tileUrlTemplate.replace('{tk}', this.tk).replace('{s}', index).replace(/{proj}/g, this.proj).replace(/{type}/g, type));
  14548. }
  14549. }
  14550. return urls;
  14551. }
  14552. }]);
  14553. return TdtMapSwitcherViewModel;
  14554. }(_mapboxGlEnhance.default.Evented);
  14555. exports.default = TdtMapSwitcherViewModel;
  14556. /***/ }),
  14557. /***/ "34c8":
  14558. /***/ (function(module, exports) {
  14559. function _iterableToArrayLimit(arr, i) {
  14560. if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
  14561. return;
  14562. }
  14563. var _arr = [];
  14564. var _n = true;
  14565. var _d = false;
  14566. var _e = undefined;
  14567. try {
  14568. for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
  14569. _arr.push(_s.value);
  14570. if (i && _arr.length === i) break;
  14571. }
  14572. } catch (err) {
  14573. _d = true;
  14574. _e = err;
  14575. } finally {
  14576. try {
  14577. if (!_n && _i["return"] != null) _i["return"]();
  14578. } finally {
  14579. if (_d) throw _e;
  14580. }
  14581. }
  14582. return _arr;
  14583. }
  14584. module.exports = _iterableToArrayLimit;
  14585. /***/ }),
  14586. /***/ "3541":
  14587. /***/ (function(module, exports, __webpack_require__) {
  14588. "use strict";
  14589. var utils = __webpack_require__("d691");
  14590. var transformData = __webpack_require__("0c17");
  14591. var isCancel = __webpack_require__("b8e7");
  14592. var defaults = __webpack_require__("764e");
  14593. var isAbsoluteURL = __webpack_require__("a79c");
  14594. var combineURLs = __webpack_require__("e97f");
  14595. /**
  14596. * Throws a `Cancel` if cancellation has been requested.
  14597. */
  14598. function throwIfCancellationRequested(config) {
  14599. if (config.cancelToken) {
  14600. config.cancelToken.throwIfRequested();
  14601. }
  14602. }
  14603. /**
  14604. * Dispatch a request to the server using the configured adapter.
  14605. *
  14606. * @param {object} config The config that is to be used for the request
  14607. * @returns {Promise} The Promise to be fulfilled
  14608. */
  14609. module.exports = function dispatchRequest(config) {
  14610. throwIfCancellationRequested(config);
  14611. // Support baseURL config
  14612. if (config.baseURL && !isAbsoluteURL(config.url)) {
  14613. config.url = combineURLs(config.baseURL, config.url);
  14614. }
  14615. // Ensure headers exist
  14616. config.headers = config.headers || {};
  14617. // Transform request data
  14618. config.data = transformData(
  14619. config.data,
  14620. config.headers,
  14621. config.transformRequest
  14622. );
  14623. // Flatten headers
  14624. config.headers = utils.merge(
  14625. config.headers.common || {},
  14626. config.headers[config.method] || {},
  14627. config.headers || {}
  14628. );
  14629. utils.forEach(
  14630. ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
  14631. function cleanHeaderConfig(method) {
  14632. delete config.headers[method];
  14633. }
  14634. );
  14635. var adapter = config.adapter || defaults.adapter;
  14636. return adapter(config).then(function onAdapterResolution(response) {
  14637. throwIfCancellationRequested(config);
  14638. // Transform response data
  14639. response.data = transformData(
  14640. response.data,
  14641. response.headers,
  14642. config.transformResponse
  14643. );
  14644. return response;
  14645. }, function onAdapterRejection(reason) {
  14646. if (!isCancel(reason)) {
  14647. throwIfCancellationRequested(config);
  14648. // Transform response data
  14649. if (reason && reason.response) {
  14650. reason.response.data = transformData(
  14651. reason.response.data,
  14652. reason.response.headers,
  14653. config.transformResponse
  14654. );
  14655. }
  14656. }
  14657. return Promise.reject(reason);
  14658. });
  14659. };
  14660. /***/ }),
  14661. /***/ "3550":
  14662. /***/ (function(module, exports, __webpack_require__) {
  14663. "use strict";
  14664. var _interopRequireDefault = __webpack_require__("8e6d");
  14665. Object.defineProperty(exports, "__esModule", {
  14666. value: true
  14667. });
  14668. exports.default = void 0;
  14669. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  14670. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  14671. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  14672. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  14673. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  14674. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  14675. var _lodash = _interopRequireDefault(__webpack_require__("5f9f"));
  14676. var WebSceneViewModel =
  14677. /*#__PURE__*/
  14678. function (_mapboxgl$Evented) {
  14679. (0, _inherits2.default)(WebSceneViewModel, _mapboxgl$Evented);
  14680. function WebSceneViewModel(Cesium, viewer, sceneUrl) {
  14681. var _this;
  14682. var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
  14683. (0, _classCallCheck2.default)(this, WebSceneViewModel);
  14684. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(WebSceneViewModel).call(this));
  14685. if (!Cesium) {
  14686. return (0, _possibleConstructorReturn2.default)(_this);
  14687. }
  14688. if (!viewer) {
  14689. return (0, _possibleConstructorReturn2.default)(_this);
  14690. }
  14691. _this.Cesium = Cesium;
  14692. _this.viewer = viewer;
  14693. _this.scene = viewer.scene;
  14694. _this.scanEffect = options.scanEffect || {
  14695. status: false,
  14696. type: 'noScan',
  14697. centerPostion: {},
  14698. period: 2000,
  14699. speed: 500
  14700. };
  14701. _this.withCredentials = options.withCredentials || false;
  14702. _this.position = options.position || {};
  14703. _this.setSceneUrl(sceneUrl);
  14704. return _this;
  14705. }
  14706. (0, _createClass2.default)(WebSceneViewModel, [{
  14707. key: "setSceneUrl",
  14708. value: function setSceneUrl(url) {
  14709. if (!url) {
  14710. return;
  14711. }
  14712. if (url.indexOf('iserver') >= 0) {
  14713. this.sceneUrl = url;
  14714. this._createScene();
  14715. } else {
  14716. this._getSceneInfo(url);
  14717. }
  14718. }
  14719. }, {
  14720. key: "setScanEffect",
  14721. value: function setScanEffect(scanEffect) {
  14722. var _this2 = this;
  14723. if (!(0, _lodash.default)(this.scanEffect, scanEffect)) {
  14724. this.scanEffect = scanEffect;
  14725. if (scanEffect.type === 'noScan') {
  14726. this.scene && (this.scene.scanEffect.show = false);
  14727. this.scene && (this.scene.scanEffect.type = scanEffect.type);
  14728. } else {
  14729. setTimeout(function () {
  14730. _this2.scene && (_this2.scene.scanEffect.show = true);
  14731. _this2._startScan(scanEffect.type);
  14732. }, 100);
  14733. }
  14734. }
  14735. }
  14736. }, {
  14737. key: "setPosition",
  14738. value: function setPosition(position) {
  14739. if (!(0, _lodash.default)(this.position, position)) {
  14740. this.position = position;
  14741. if (this.scene && position) {
  14742. var sc = this.scene.camera;
  14743. this.scene.camera.setView({
  14744. destination: position,
  14745. orientation: {
  14746. heading: sc.heading,
  14747. pitch: sc.pitch,
  14748. roll: sc.roll
  14749. }
  14750. });
  14751. }
  14752. }
  14753. }
  14754. }, {
  14755. key: "_getSceneInfo",
  14756. value: function _getSceneInfo(url) {
  14757. var _this3 = this;
  14758. SuperMap.FetchRequest.get(url + '.json', {}, {
  14759. withCredentials: this.withCredentials
  14760. }).then(function (response) {
  14761. return response.json();
  14762. }).then(function (result) {
  14763. var url = result.url;
  14764. _this3.sceneUrl = url;
  14765. _this3._checkPrivate(result);
  14766. });
  14767. }
  14768. }, {
  14769. key: "_checkPrivate",
  14770. value: function _checkPrivate(result) {
  14771. var authorizeSetting = result.authorizeSetting,
  14772. url = result.url,
  14773. content = result.content;
  14774. if (!url) {
  14775. this.sceneUrl = JSON.parse(content).layers[0].url;
  14776. }
  14777. var isPublic = false;
  14778. authorizeSetting.map(function (item) {
  14779. if (item.entityType === 'USER' && item.entityName === 'GUEST') {
  14780. isPublic = true;
  14781. }
  14782. });
  14783. if (!isPublic) {
  14784. this.fire('sceneisprivate');
  14785. return;
  14786. }
  14787. this.sceneUrl && this._createScene();
  14788. }
  14789. }, {
  14790. key: "_createScene",
  14791. value: function _createScene() {
  14792. var _this4 = this;
  14793. this.scene && this.scene.layers.removeAll();
  14794. var sceneParam = this._getSceneParam();
  14795. var sceneUrl = sceneParam.sceneUrl;
  14796. sceneUrl = sceneUrl.slice(0, sceneUrl.indexOf('/rest/realspace') + 15);
  14797. var promise = this.scene.open(sceneUrl);
  14798. this.scene.fxaa = true;
  14799. this.scene.skyAtmosphere.show = true;
  14800. this.Cesium.when.all(promise, function () {
  14801. var sc = _this4.scene.camera;
  14802. _this4.scene.camera.setView({
  14803. destination: _this4.position.x && _this4.position || _this4.Cesium.Cartesian3(sc.position.x, sc.position.y, sc.position.z),
  14804. orientation: {
  14805. heading: sc.heading,
  14806. pitch: sc.pitch,
  14807. roll: sc.roll
  14808. }
  14809. });
  14810. var handler = new _this4.Cesium.ScreenSpaceEventHandler(_this4.scene.canvas);
  14811. handler.setInputAction(function (e) {
  14812. var sceneParam = _this4._getSceneParam();
  14813. sceneParam.position = new _this4.Cesium.Cartesian3(sc.position.x, sc.position.y, sc.position.z);
  14814. _this4.fire('viewerpositionchanged', {
  14815. position: sceneParam.position
  14816. });
  14817. if (sceneParam.scanEffect.status && sceneParam.scanEffect.type !== 'noScan') {
  14818. var position = e.position;
  14819. var last = _this4.scene.pickPosition(position);
  14820. _this4.scene.scanEffect.centerPostion = last;
  14821. sceneParam.scanEffect.centerPostion = last;
  14822. _this4.scanEffect.centerPostion = last;
  14823. _this4.fire('scanpositionchanged', {
  14824. position: sceneParam.position
  14825. });
  14826. }
  14827. }, _this4.Cesium.ScreenSpaceEventType.LEFT_CLICK);
  14828. handler.setInputAction(function () {
  14829. sceneParam.position = new _this4.Cesium.Cartesian3(sc.position.x, sc.position.y, sc.position.z);
  14830. _this4.fire('viewerpositionchanged', {
  14831. position: sceneParam.position
  14832. });
  14833. }, _this4.Cesium.ScreenSpaceEventType.LEFT_UP);
  14834. if (sceneParam.scanEffect.status && sceneParam.scanEffect.type !== 'noScan') {
  14835. setTimeout(function () {
  14836. _this4._startScan(sceneParam.scanEffect.type);
  14837. }, 3000);
  14838. }
  14839. _this4.sceneParam = sceneParam;
  14840. });
  14841. }
  14842. }, {
  14843. key: "_getSceneParam",
  14844. value: function _getSceneParam() {
  14845. return {
  14846. sceneUrl: this.sceneUrl,
  14847. position: null,
  14848. scanEffect: {
  14849. status: this.scanEffect.status || false,
  14850. type: this.scanEffect.type || this.scanEffect.status && 'circle' || 'noScan',
  14851. centerPostion: this.scanEffect.centerPostion || {},
  14852. _period: this.scanEffect.period || 2000,
  14853. speed: this.scanEffect.speed || 500,
  14854. color: null
  14855. }
  14856. };
  14857. }
  14858. }, {
  14859. key: "_startScan",
  14860. value: function _startScan(type) {
  14861. var sc = this.scene.camera;
  14862. this.scene.scanEffect.show = false;
  14863. this.scene.scanEffect.mode = type === 'line' ? this.Cesium.ScanEffectMode.LINE : this.Cesium.ScanEffectMode.CIRCLE;
  14864. var scanEffectPosition = this.sceneParam.scanEffect.centerPostion || this.scanEffect.centerPostion || {};
  14865. if (scanEffectPosition.x) {
  14866. this.scene.scanEffect.centerPostion = this.scanEffect.centerPostion || this.sceneParam.scanEffect.centerPostion;
  14867. } else {
  14868. this.sceneParam.scanEffect.centerPostion = new this.Cesium.Cartesian3(sc.position.x, sc.position.y, sc.position.z);
  14869. this.scene.scanEffect.centerPostion = new this.Cesium.Cartesian3(sc.position.x, sc.position.y, sc.position.z);
  14870. }
  14871. this.scene.scanEffect.color = this.Cesium.Color.CORNFLOWERBLUE;
  14872. this.scene.scanEffect._period = parseFloat(this.scanEffect.period);
  14873. this.scene.scanEffect.speed = parseFloat(this.scanEffect.speed);
  14874. this.scene.scanEffect.show = true;
  14875. }
  14876. }]);
  14877. return WebSceneViewModel;
  14878. }(_mapboxGlEnhance.default.Evented);
  14879. exports.default = WebSceneViewModel;
  14880. /***/ }),
  14881. /***/ "3605":
  14882. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14883. "use strict";
  14884. __webpack_require__.r(__webpack_exports__);
  14885. /* harmony import */ var _ChartMixin_vue_vue_type_template_id_1f1efe10___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("0b11");
  14886. /* harmony import */ var _ChartMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("d83d");
  14887. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _ChartMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _ChartMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  14888. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  14889. /* normalize component */
  14890. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  14891. _ChartMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  14892. _ChartMixin_vue_vue_type_template_id_1f1efe10___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  14893. _ChartMixin_vue_vue_type_template_id_1f1efe10___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  14894. false,
  14895. null,
  14896. null,
  14897. null
  14898. )
  14899. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  14900. /***/ }),
  14901. /***/ "3624":
  14902. /***/ (function(module, exports, __webpack_require__) {
  14903. "use strict";
  14904. Object.defineProperty(exports, "__esModule", {
  14905. value: true
  14906. });
  14907. exports.getFileType = getFileType;
  14908. exports.FileConfig = exports.FileTypes = void 0;
  14909. var FileTypes = {
  14910. EXCEL: 'EXCEL',
  14911. CSV: 'CSV',
  14912. ISERVER: 'ISERVER',
  14913. GEOJSON: 'GEOJSON',
  14914. JSON: 'JSON',
  14915. SHP: 'SHP',
  14916. ZIP: 'ZIP'
  14917. };
  14918. exports.FileTypes = FileTypes;
  14919. var FileConfig = {
  14920. fileMaxSize: 10 * 1024 * 1024
  14921. };
  14922. exports.FileConfig = FileConfig;
  14923. function getFileType(fileName) {
  14924. var regCSV = /^.*\.(?:csv)$/i;
  14925. var regExcel = /^.*\.(?:xls|xlsx)$/i; // 文件名可以带空格
  14926. var regGeojson = /^.*\.(?:geojson|json)$/i;
  14927. var regSHP = /^.*\.(?:shp)$/i;
  14928. if (regExcel.test(fileName)) {
  14929. // 校验不通过
  14930. return FileTypes.EXCEL;
  14931. } else if (regCSV.test(fileName)) {
  14932. return FileTypes.CSV;
  14933. } else if (regGeojson.test(fileName)) {
  14934. return FileTypes.GEOJSON;
  14935. } else if (regSHP.test(fileName)) {
  14936. return FileTypes.SHP;
  14937. }
  14938. return null;
  14939. }
  14940. /***/ }),
  14941. /***/ "3780":
  14942. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14943. "use strict";
  14944. __webpack_require__.r(__webpack_exports__);
  14945. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Scale_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("804a");
  14946. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Scale_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Scale_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  14947. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Scale_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Scale_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  14948. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Scale_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  14949. /***/ }),
  14950. /***/ "3826":
  14951. /***/ (function(module, exports, __webpack_require__) {
  14952. "use strict";
  14953. var _interopRequireDefault = __webpack_require__("8e6d");
  14954. Object.defineProperty(exports, "__esModule", {
  14955. value: true
  14956. });
  14957. exports.default = void 0;
  14958. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  14959. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  14960. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  14961. var _OpenFileViewModel = _interopRequireDefault(__webpack_require__("4409"));
  14962. var _GeojsonLayer = _interopRequireDefault(__webpack_require__("875b"));
  14963. var _CircleStyle = _interopRequireDefault(__webpack_require__("b27b"));
  14964. var _FillStyle = _interopRequireDefault(__webpack_require__("d040"));
  14965. var _LineStyle = _interopRequireDefault(__webpack_require__("264a"));
  14966. var _vmUpdater = _interopRequireDefault(__webpack_require__("3a49"));
  14967. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  14968. //
  14969. //
  14970. //
  14971. //
  14972. //
  14973. //
  14974. //
  14975. //
  14976. //
  14977. //
  14978. //
  14979. //
  14980. //
  14981. //
  14982. //
  14983. //
  14984. //
  14985. //
  14986. //
  14987. var _default2 = {
  14988. name: 'SmOpenFile',
  14989. viewModelProps: ['fitBounds', 'clearLastLayer', 'addToMap'],
  14990. mixins: [_theme.default, _control.default, _mapGetter.default, _vmUpdater.default],
  14991. props: {
  14992. fitBounds: {
  14993. type: Boolean,
  14994. default: true
  14995. },
  14996. addToMap: {
  14997. type: Boolean,
  14998. default: true
  14999. },
  15000. text: {
  15001. type: String,
  15002. default: function _default() {
  15003. return this.$t('openFile.openFile');
  15004. }
  15005. },
  15006. notify: {
  15007. type: Boolean,
  15008. default: true
  15009. },
  15010. layerStyle: {
  15011. type: Object,
  15012. default: function _default() {
  15013. return {
  15014. line: new _LineStyle.default(),
  15015. circle: new _CircleStyle.default(),
  15016. fill: new _FillStyle.default()
  15017. };
  15018. }
  15019. },
  15020. clearLastLayer: {
  15021. type: Boolean,
  15022. default: false
  15023. },
  15024. accept: {
  15025. type: Array,
  15026. default: function _default() {
  15027. return ['.json', '.geojson', '.csv', '.xlsx', '.xls', '.shp', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.ms-excel'];
  15028. }
  15029. },
  15030. fontStyle: {
  15031. type: Object
  15032. }
  15033. },
  15034. data: function data() {
  15035. return {
  15036. transformType: {
  15037. Point: 'circle',
  15038. Polygon: 'fill',
  15039. LineString: 'line',
  15040. MultiPolygon: 'fill'
  15041. },
  15042. cacheGeojsonLayer: [],
  15043. mapboxglClass: ''
  15044. };
  15045. },
  15046. created: function created() {
  15047. this.viewModel = new _OpenFileViewModel.default(); // 打开失败
  15048. this.viewModel.on('openfilefailed', this.openfilefailedFn);
  15049. this.viewModel.on('errorfileformat', this.errorfileformatFn);
  15050. this.viewModel.on('openfilesucceeded', this.openfilesucceededFn);
  15051. },
  15052. beforeDestroy: function beforeDestroy() {
  15053. this.viewModel.off('openfilefailed', this.openfilefailedFn);
  15054. this.viewModel.off('errorfileformat', this.errorfileformatFn);
  15055. this.viewModel.off('openfilesucceeded', this.openfilesucceededFn);
  15056. },
  15057. methods: {
  15058. fileSelect: function fileSelect(e) {
  15059. this.viewModel && this.viewModel.readFile(e);
  15060. },
  15061. preventDefault: function preventDefault(e) {
  15062. var mapNotLoaded = this.mapNotLoadedTip();
  15063. mapNotLoaded && e.preventDefault();
  15064. },
  15065. openfilefailedFn: function openfilefailedFn(e) {
  15066. this.notify && this.$message.error(e.message);
  15067. this.$emit('open-file-failed', e);
  15068. },
  15069. errorfileformatFn: function errorfileformatFn(e) {
  15070. this.notify && this.$message.error(e.message);
  15071. this.$emit('error-file-format', e);
  15072. },
  15073. openfilesucceededFn: function openfilesucceededFn(e) {
  15074. var result = e.result;
  15075. if (!result) {
  15076. return;
  15077. }
  15078. if (!e.result.features.length) {
  15079. this.$message({
  15080. message: this.$t('openFile.openEmptyFile'),
  15081. type: 'error'
  15082. });
  15083. this.$emit('open-empty-file', result);
  15084. return;
  15085. }
  15086. if (this.clearLastLayer) {
  15087. var geojsonLayerInstance = this.cacheGeojsonLayer.pop();
  15088. geojsonLayerInstance && geojsonLayerInstance.$destroy();
  15089. }
  15090. if (this.addToMap) {
  15091. var type = this.transformType[result.features[0].geometry.type];
  15092. var GeojsonLayerExtend = _vue.default.extend(_GeojsonLayer.default);
  15093. var GeojsonLayerInstance = new GeojsonLayerExtend({
  15094. propsData: {
  15095. data: result,
  15096. layerStyle: this.layerStyle[type],
  15097. layerId: e.layerId
  15098. }
  15099. });
  15100. var component = GeojsonLayerInstance.$mount();
  15101. this.cacheGeojsonLayer.push(component);
  15102. var mapTarget = this.getTargetName();
  15103. document.querySelector("#".concat(mapTarget)).appendChild(component.$el);
  15104. }
  15105. if (this.fitBounds && this.addToMap) {
  15106. this.viewModel.fitBoundsToData();
  15107. }
  15108. this.notify && this.$message.success(this.$t('openFile.openFileSuccess'));
  15109. this.$emit('open-file-succeeded', result);
  15110. }
  15111. },
  15112. loaded: function loaded() {
  15113. this.parentIsWebMapOrMap && (this.mapboxglClass = 'mapboxgl-ctrl');
  15114. },
  15115. removed: function removed() {
  15116. if (this.cacheGeojsonLayer && this.cacheGeojsonLayer.length) {
  15117. this.cacheGeojsonLayer.forEach(function (component) {
  15118. component.$destroy();
  15119. });
  15120. this.cacheGeojsonLayer = [];
  15121. }
  15122. }
  15123. };
  15124. exports.default = _default2;
  15125. /***/ }),
  15126. /***/ "383e":
  15127. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  15128. "use strict";
  15129. __webpack_require__.r(__webpack_exports__);
  15130. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Icon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("338a");
  15131. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Icon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Icon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  15132. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Icon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Icon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  15133. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Icon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  15134. /***/ }),
  15135. /***/ "3850":
  15136. /***/ (function(module, exports, __webpack_require__) {
  15137. "use strict";
  15138. var _interopRequireDefault = __webpack_require__("8e6d");
  15139. Object.defineProperty(exports, "__esModule", {
  15140. value: true
  15141. });
  15142. exports.default = void 0;
  15143. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  15144. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  15145. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  15146. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  15147. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  15148. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  15149. /**
  15150. * @class PanViewModel
  15151. * @description pan viewModel(平移控件vm层).
  15152. * @param {Object} map - 地图对象。
  15153. * @extends mapboxgl.Evented
  15154. */
  15155. var PanViewModel =
  15156. /*#__PURE__*/
  15157. function (_mapboxgl$Evented) {
  15158. (0, _inherits2.default)(PanViewModel, _mapboxgl$Evented);
  15159. function PanViewModel() {
  15160. (0, _classCallCheck2.default)(this, PanViewModel);
  15161. return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(PanViewModel).apply(this, arguments));
  15162. }
  15163. (0, _createClass2.default)(PanViewModel, [{
  15164. key: "setMap",
  15165. value: function setMap(mapInfo) {
  15166. var map = mapInfo.map;
  15167. this.map = map;
  15168. }
  15169. /**
  15170. * @function PanViewModel.prototype.panTo
  15171. * @description 地图平移至目标位置。
  15172. * @param {Object} lnglat - 目标位置:坐标经纬度
  15173. */
  15174. }, {
  15175. key: "panTo",
  15176. value: function panTo(lnglat) {
  15177. this.map.panTo(lnglat);
  15178. }
  15179. /**
  15180. * @function PanViewModel.prototype.panBy
  15181. * @description 地图平移至目标位置。
  15182. * @param {Array} point - 目标位置(px)
  15183. */
  15184. }, {
  15185. key: "panBy",
  15186. value: function panBy(point) {
  15187. // Represents a point with `x` and `y` coordinates in pixels. [200, 300]
  15188. this.map.panBy(point);
  15189. }
  15190. }]);
  15191. return PanViewModel;
  15192. }(_mapboxGlEnhance.default.Evented);
  15193. exports.default = PanViewModel;
  15194. /***/ }),
  15195. /***/ "3853":
  15196. /***/ (function(module) {
  15197. module.exports = JSON.parse("[{\"title\":\"经典深色\",\"label\":\"dark\",\"textColor\":\"#fff\",\"background\":\"rgba(0,0,0,0.6)\",\"colorGroup\":[\"#dd6b66\",\"#759aa0\",\"#e69d87\",\"#8dc1a9\",\"#ea7e53\"]},{\"title\":\"经典浅色\",\"label\":\"light\",\"textColor\":\"#333\",\"background\":\"rgba(255, 255, 255,0.6)\",\"colorGroup\":[\"#3fb1e3\",\"#6be6c1\",\"#626c91\",\"#a0a7e6\",\"#c4ebad\"]},{\"title\":\"绿色渐变\",\"label\":\"green-g\",\"textColor\":\"#fff\",\"background\":\"rgba(0,0,0,0.6)\",\"colorGroup\":[\"#064049\",\"#165A65\",\"#1F717F\",\"#3097AB\",\"#9AEAF4\"]},{\"title\":\"蓝色渐变\",\"label\":\"blue-g\",\"textColor\":\"#fff\",\"background\":\"rgba(0,0,0,0.6)\",\"colorGroup\":[\"#243BCC\",\"#1C55FF\",\"#0C75FF\",\"#338FFF\",\"#00CDF1\"]},{\"title\":\"橙红渐变\",\"label\":\"red-g\",\"textColor\":\"#fff\",\"background\":\"rgba(0,0,0,0.6)\",\"colorGroup\":[\"#770000\",\"#882241\",\"#BE3144\",\"#F05940\",\"#FF8417\"]},{\"title\":\"紫色渐变\",\"label\":\"purple-g\",\"textColor\":\"#fff\",\"background\":\"rgba(0,0,0,0.6)\",\"colorGroup\":[\"#2F2AA4\",\"#5432D3\",\"#8B3B86\",\"#9740B1\",\"#7B6CF5\"]},{\"title\":\"深蓝黑色\",\"label\":\"bluedark-dark\",\"textColor\":\"#fff\",\"background\":\"rgba(0,0,0,0.6)\",\"colorGroup\":[\"#15D1F2\",\"#499BFF\",\"#2C61FF\",\"#243BCC\",\"#67A9FF\"]},{\"title\":\"墨绿黑色\",\"label\":\"green-dark\",\"textColor\":\"#fff\",\"background\":\"rgba(0,0,0,0.6)\",\"colorGroup\":[\"#2D808D\",\"#53A8B6\",\"#7AC2D0\",\"#BCE4E9\",\"#F1FDFF\"]},{\"title\":\"浅蓝黑色\",\"label\":\"blue-dark\",\"textColor\":\"#fff\",\"background\":\"rgba(0,0,0,0.6)\",\"colorGroup\":[\"#00E9FF\",\"#BBE7FF\",\"#6AE5C1\",\"#46ABFF\",\"#363EFF\"]},{\"title\":\"浅灰黑色\",\"label\":\"grey-dark\",\"textColor\":\"#fff\",\"background\":\"rgba(0,0,0,0.6)\",\"colorGroup\":[\"#52606D\",\"#8894A0\",\"#BACBDB\",\"#D3DDE8\",\"#F2F5F8\"]},{\"title\":\"深紫黑色\",\"label\":\"purple-dark\",\"textColor\":\"#fff\",\"background\":\"rgba(0,0,0,0.6)\",\"colorGroup\":[\"#7B6CF6\",\"#5432D3\",\"#241F92\",\"#8B3B86\",\"#E6A5FF\"]},{\"title\":\"深蓝白色\",\"label\":\"blue-light\",\"textColor\":\"#000\",\"background\":\"rgba(255,255,255,0.6)\",\"colorGroup\":[\"#243BCC\",\"#2C61FF\",\"#499BFF\",\"#15D1F2\",\"#67A9FF\"]},{\"title\":\"深红白色\",\"label\":\"red-light\",\"textColor\":\"#000\",\"background\":\"rgba(255,255,255,0.6)\",\"colorGroup\":[\"#F05940\",\"#BE3144\",\"#882241\",\"#770000\",\"#FF8418\"]}]");
  15198. /***/ }),
  15199. /***/ "38ce":
  15200. /***/ (function(module, exports, __webpack_require__) {
  15201. "use strict";
  15202. Object.defineProperty(exports, "__esModule", { value: true });
  15203. /**
  15204. * @module helpers
  15205. */
  15206. /**
  15207. * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.
  15208. *
  15209. * @memberof helpers
  15210. * @type {number}
  15211. */
  15212. exports.earthRadius = 6371008.8;
  15213. /**
  15214. * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.
  15215. *
  15216. * @memberof helpers
  15217. * @type {Object}
  15218. */
  15219. exports.factors = {
  15220. centimeters: exports.earthRadius * 100,
  15221. centimetres: exports.earthRadius * 100,
  15222. degrees: exports.earthRadius / 111325,
  15223. feet: exports.earthRadius * 3.28084,
  15224. inches: exports.earthRadius * 39.370,
  15225. kilometers: exports.earthRadius / 1000,
  15226. kilometres: exports.earthRadius / 1000,
  15227. meters: exports.earthRadius,
  15228. metres: exports.earthRadius,
  15229. miles: exports.earthRadius / 1609.344,
  15230. millimeters: exports.earthRadius * 1000,
  15231. millimetres: exports.earthRadius * 1000,
  15232. nauticalmiles: exports.earthRadius / 1852,
  15233. radians: 1,
  15234. yards: exports.earthRadius / 1.0936,
  15235. };
  15236. /**
  15237. * Units of measurement factors based on 1 meter.
  15238. *
  15239. * @memberof helpers
  15240. * @type {Object}
  15241. */
  15242. exports.unitsFactors = {
  15243. centimeters: 100,
  15244. centimetres: 100,
  15245. degrees: 1 / 111325,
  15246. feet: 3.28084,
  15247. inches: 39.370,
  15248. kilometers: 1 / 1000,
  15249. kilometres: 1 / 1000,
  15250. meters: 1,
  15251. metres: 1,
  15252. miles: 1 / 1609.344,
  15253. millimeters: 1000,
  15254. millimetres: 1000,
  15255. nauticalmiles: 1 / 1852,
  15256. radians: 1 / exports.earthRadius,
  15257. yards: 1 / 1.0936,
  15258. };
  15259. /**
  15260. * Area of measurement factors based on 1 square meter.
  15261. *
  15262. * @memberof helpers
  15263. * @type {Object}
  15264. */
  15265. exports.areaFactors = {
  15266. acres: 0.000247105,
  15267. centimeters: 10000,
  15268. centimetres: 10000,
  15269. feet: 10.763910417,
  15270. inches: 1550.003100006,
  15271. kilometers: 0.000001,
  15272. kilometres: 0.000001,
  15273. meters: 1,
  15274. metres: 1,
  15275. miles: 3.86e-7,
  15276. millimeters: 1000000,
  15277. millimetres: 1000000,
  15278. yards: 1.195990046,
  15279. };
  15280. /**
  15281. * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
  15282. *
  15283. * @name feature
  15284. * @param {Geometry} geometry input geometry
  15285. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  15286. * @param {Object} [options={}] Optional Parameters
  15287. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  15288. * @param {string|number} [options.id] Identifier associated with the Feature
  15289. * @returns {Feature} a GeoJSON Feature
  15290. * @example
  15291. * var geometry = {
  15292. * "type": "Point",
  15293. * "coordinates": [110, 50]
  15294. * };
  15295. *
  15296. * var feature = turf.feature(geometry);
  15297. *
  15298. * //=feature
  15299. */
  15300. function feature(geom, properties, options) {
  15301. if (options === void 0) { options = {}; }
  15302. var feat = { type: "Feature" };
  15303. if (options.id === 0 || options.id) {
  15304. feat.id = options.id;
  15305. }
  15306. if (options.bbox) {
  15307. feat.bbox = options.bbox;
  15308. }
  15309. feat.properties = properties || {};
  15310. feat.geometry = geom;
  15311. return feat;
  15312. }
  15313. exports.feature = feature;
  15314. /**
  15315. * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
  15316. * For GeometryCollection type use `helpers.geometryCollection`
  15317. *
  15318. * @name geometry
  15319. * @param {string} type Geometry Type
  15320. * @param {Array<any>} coordinates Coordinates
  15321. * @param {Object} [options={}] Optional Parameters
  15322. * @returns {Geometry} a GeoJSON Geometry
  15323. * @example
  15324. * var type = "Point";
  15325. * var coordinates = [110, 50];
  15326. * var geometry = turf.geometry(type, coordinates);
  15327. * // => geometry
  15328. */
  15329. function geometry(type, coordinates, options) {
  15330. if (options === void 0) { options = {}; }
  15331. switch (type) {
  15332. case "Point": return point(coordinates).geometry;
  15333. case "LineString": return lineString(coordinates).geometry;
  15334. case "Polygon": return polygon(coordinates).geometry;
  15335. case "MultiPoint": return multiPoint(coordinates).geometry;
  15336. case "MultiLineString": return multiLineString(coordinates).geometry;
  15337. case "MultiPolygon": return multiPolygon(coordinates).geometry;
  15338. default: throw new Error(type + " is invalid");
  15339. }
  15340. }
  15341. exports.geometry = geometry;
  15342. /**
  15343. * Creates a {@link Point} {@link Feature} from a Position.
  15344. *
  15345. * @name point
  15346. * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
  15347. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  15348. * @param {Object} [options={}] Optional Parameters
  15349. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  15350. * @param {string|number} [options.id] Identifier associated with the Feature
  15351. * @returns {Feature<Point>} a Point feature
  15352. * @example
  15353. * var point = turf.point([-75.343, 39.984]);
  15354. *
  15355. * //=point
  15356. */
  15357. function point(coordinates, properties, options) {
  15358. if (options === void 0) { options = {}; }
  15359. var geom = {
  15360. type: "Point",
  15361. coordinates: coordinates,
  15362. };
  15363. return feature(geom, properties, options);
  15364. }
  15365. exports.point = point;
  15366. /**
  15367. * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.
  15368. *
  15369. * @name points
  15370. * @param {Array<Array<number>>} coordinates an array of Points
  15371. * @param {Object} [properties={}] Translate these properties to each Feature
  15372. * @param {Object} [options={}] Optional Parameters
  15373. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]
  15374. * associated with the FeatureCollection
  15375. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  15376. * @returns {FeatureCollection<Point>} Point Feature
  15377. * @example
  15378. * var points = turf.points([
  15379. * [-75, 39],
  15380. * [-80, 45],
  15381. * [-78, 50]
  15382. * ]);
  15383. *
  15384. * //=points
  15385. */
  15386. function points(coordinates, properties, options) {
  15387. if (options === void 0) { options = {}; }
  15388. return featureCollection(coordinates.map(function (coords) {
  15389. return point(coords, properties);
  15390. }), options);
  15391. }
  15392. exports.points = points;
  15393. /**
  15394. * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.
  15395. *
  15396. * @name polygon
  15397. * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings
  15398. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  15399. * @param {Object} [options={}] Optional Parameters
  15400. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  15401. * @param {string|number} [options.id] Identifier associated with the Feature
  15402. * @returns {Feature<Polygon>} Polygon Feature
  15403. * @example
  15404. * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });
  15405. *
  15406. * //=polygon
  15407. */
  15408. function polygon(coordinates, properties, options) {
  15409. if (options === void 0) { options = {}; }
  15410. for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {
  15411. var ring = coordinates_1[_i];
  15412. if (ring.length < 4) {
  15413. throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");
  15414. }
  15415. for (var j = 0; j < ring[ring.length - 1].length; j++) {
  15416. // Check if first point of Polygon contains two numbers
  15417. if (ring[ring.length - 1][j] !== ring[0][j]) {
  15418. throw new Error("First and last Position are not equivalent.");
  15419. }
  15420. }
  15421. }
  15422. var geom = {
  15423. type: "Polygon",
  15424. coordinates: coordinates,
  15425. };
  15426. return feature(geom, properties, options);
  15427. }
  15428. exports.polygon = polygon;
  15429. /**
  15430. * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.
  15431. *
  15432. * @name polygons
  15433. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates
  15434. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  15435. * @param {Object} [options={}] Optional Parameters
  15436. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  15437. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  15438. * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection
  15439. * @example
  15440. * var polygons = turf.polygons([
  15441. * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],
  15442. * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],
  15443. * ]);
  15444. *
  15445. * //=polygons
  15446. */
  15447. function polygons(coordinates, properties, options) {
  15448. if (options === void 0) { options = {}; }
  15449. return featureCollection(coordinates.map(function (coords) {
  15450. return polygon(coords, properties);
  15451. }), options);
  15452. }
  15453. exports.polygons = polygons;
  15454. /**
  15455. * Creates a {@link LineString} {@link Feature} from an Array of Positions.
  15456. *
  15457. * @name lineString
  15458. * @param {Array<Array<number>>} coordinates an array of Positions
  15459. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  15460. * @param {Object} [options={}] Optional Parameters
  15461. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  15462. * @param {string|number} [options.id] Identifier associated with the Feature
  15463. * @returns {Feature<LineString>} LineString Feature
  15464. * @example
  15465. * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});
  15466. * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});
  15467. *
  15468. * //=linestring1
  15469. * //=linestring2
  15470. */
  15471. function lineString(coordinates, properties, options) {
  15472. if (options === void 0) { options = {}; }
  15473. if (coordinates.length < 2) {
  15474. throw new Error("coordinates must be an array of two or more positions");
  15475. }
  15476. var geom = {
  15477. type: "LineString",
  15478. coordinates: coordinates,
  15479. };
  15480. return feature(geom, properties, options);
  15481. }
  15482. exports.lineString = lineString;
  15483. /**
  15484. * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.
  15485. *
  15486. * @name lineStrings
  15487. * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings
  15488. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  15489. * @param {Object} [options={}] Optional Parameters
  15490. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]
  15491. * associated with the FeatureCollection
  15492. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  15493. * @returns {FeatureCollection<LineString>} LineString FeatureCollection
  15494. * @example
  15495. * var linestrings = turf.lineStrings([
  15496. * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],
  15497. * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]
  15498. * ]);
  15499. *
  15500. * //=linestrings
  15501. */
  15502. function lineStrings(coordinates, properties, options) {
  15503. if (options === void 0) { options = {}; }
  15504. return featureCollection(coordinates.map(function (coords) {
  15505. return lineString(coords, properties);
  15506. }), options);
  15507. }
  15508. exports.lineStrings = lineStrings;
  15509. /**
  15510. * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.
  15511. *
  15512. * @name featureCollection
  15513. * @param {Feature[]} features input features
  15514. * @param {Object} [options={}] Optional Parameters
  15515. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  15516. * @param {string|number} [options.id] Identifier associated with the Feature
  15517. * @returns {FeatureCollection} FeatureCollection of Features
  15518. * @example
  15519. * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});
  15520. * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});
  15521. * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});
  15522. *
  15523. * var collection = turf.featureCollection([
  15524. * locationA,
  15525. * locationB,
  15526. * locationC
  15527. * ]);
  15528. *
  15529. * //=collection
  15530. */
  15531. function featureCollection(features, options) {
  15532. if (options === void 0) { options = {}; }
  15533. var fc = { type: "FeatureCollection" };
  15534. if (options.id) {
  15535. fc.id = options.id;
  15536. }
  15537. if (options.bbox) {
  15538. fc.bbox = options.bbox;
  15539. }
  15540. fc.features = features;
  15541. return fc;
  15542. }
  15543. exports.featureCollection = featureCollection;
  15544. /**
  15545. * Creates a {@link Feature<MultiLineString>} based on a
  15546. * coordinate array. Properties can be added optionally.
  15547. *
  15548. * @name multiLineString
  15549. * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings
  15550. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  15551. * @param {Object} [options={}] Optional Parameters
  15552. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  15553. * @param {string|number} [options.id] Identifier associated with the Feature
  15554. * @returns {Feature<MultiLineString>} a MultiLineString feature
  15555. * @throws {Error} if no coordinates are passed
  15556. * @example
  15557. * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);
  15558. *
  15559. * //=multiLine
  15560. */
  15561. function multiLineString(coordinates, properties, options) {
  15562. if (options === void 0) { options = {}; }
  15563. var geom = {
  15564. type: "MultiLineString",
  15565. coordinates: coordinates,
  15566. };
  15567. return feature(geom, properties, options);
  15568. }
  15569. exports.multiLineString = multiLineString;
  15570. /**
  15571. * Creates a {@link Feature<MultiPoint>} based on a
  15572. * coordinate array. Properties can be added optionally.
  15573. *
  15574. * @name multiPoint
  15575. * @param {Array<Array<number>>} coordinates an array of Positions
  15576. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  15577. * @param {Object} [options={}] Optional Parameters
  15578. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  15579. * @param {string|number} [options.id] Identifier associated with the Feature
  15580. * @returns {Feature<MultiPoint>} a MultiPoint feature
  15581. * @throws {Error} if no coordinates are passed
  15582. * @example
  15583. * var multiPt = turf.multiPoint([[0,0],[10,10]]);
  15584. *
  15585. * //=multiPt
  15586. */
  15587. function multiPoint(coordinates, properties, options) {
  15588. if (options === void 0) { options = {}; }
  15589. var geom = {
  15590. type: "MultiPoint",
  15591. coordinates: coordinates,
  15592. };
  15593. return feature(geom, properties, options);
  15594. }
  15595. exports.multiPoint = multiPoint;
  15596. /**
  15597. * Creates a {@link Feature<MultiPolygon>} based on a
  15598. * coordinate array. Properties can be added optionally.
  15599. *
  15600. * @name multiPolygon
  15601. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons
  15602. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  15603. * @param {Object} [options={}] Optional Parameters
  15604. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  15605. * @param {string|number} [options.id] Identifier associated with the Feature
  15606. * @returns {Feature<MultiPolygon>} a multipolygon feature
  15607. * @throws {Error} if no coordinates are passed
  15608. * @example
  15609. * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);
  15610. *
  15611. * //=multiPoly
  15612. *
  15613. */
  15614. function multiPolygon(coordinates, properties, options) {
  15615. if (options === void 0) { options = {}; }
  15616. var geom = {
  15617. type: "MultiPolygon",
  15618. coordinates: coordinates,
  15619. };
  15620. return feature(geom, properties, options);
  15621. }
  15622. exports.multiPolygon = multiPolygon;
  15623. /**
  15624. * Creates a {@link Feature<GeometryCollection>} based on a
  15625. * coordinate array. Properties can be added optionally.
  15626. *
  15627. * @name geometryCollection
  15628. * @param {Array<Geometry>} geometries an array of GeoJSON Geometries
  15629. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  15630. * @param {Object} [options={}] Optional Parameters
  15631. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  15632. * @param {string|number} [options.id] Identifier associated with the Feature
  15633. * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature
  15634. * @example
  15635. * var pt = turf.geometry("Point", [100, 0]);
  15636. * var line = turf.geometry("LineString", [[101, 0], [102, 1]]);
  15637. * var collection = turf.geometryCollection([pt, line]);
  15638. *
  15639. * // => collection
  15640. */
  15641. function geometryCollection(geometries, properties, options) {
  15642. if (options === void 0) { options = {}; }
  15643. var geom = {
  15644. type: "GeometryCollection",
  15645. geometries: geometries,
  15646. };
  15647. return feature(geom, properties, options);
  15648. }
  15649. exports.geometryCollection = geometryCollection;
  15650. /**
  15651. * Round number to precision
  15652. *
  15653. * @param {number} num Number
  15654. * @param {number} [precision=0] Precision
  15655. * @returns {number} rounded number
  15656. * @example
  15657. * turf.round(120.4321)
  15658. * //=120
  15659. *
  15660. * turf.round(120.4321, 2)
  15661. * //=120.43
  15662. */
  15663. function round(num, precision) {
  15664. if (precision === void 0) { precision = 0; }
  15665. if (precision && !(precision >= 0)) {
  15666. throw new Error("precision must be a positive number");
  15667. }
  15668. var multiplier = Math.pow(10, precision || 0);
  15669. return Math.round(num * multiplier) / multiplier;
  15670. }
  15671. exports.round = round;
  15672. /**
  15673. * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.
  15674. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  15675. *
  15676. * @name radiansToLength
  15677. * @param {number} radians in radians across the sphere
  15678. * @param {string} [units="kilometers"] can be degrees, radians, miles, or kilometers inches, yards, metres,
  15679. * meters, kilometres, kilometers.
  15680. * @returns {number} distance
  15681. */
  15682. function radiansToLength(radians, units) {
  15683. if (units === void 0) { units = "kilometers"; }
  15684. var factor = exports.factors[units];
  15685. if (!factor) {
  15686. throw new Error(units + " units is invalid");
  15687. }
  15688. return radians * factor;
  15689. }
  15690. exports.radiansToLength = radiansToLength;
  15691. /**
  15692. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians
  15693. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  15694. *
  15695. * @name lengthToRadians
  15696. * @param {number} distance in real units
  15697. * @param {string} [units="kilometers"] can be degrees, radians, miles, or kilometers inches, yards, metres,
  15698. * meters, kilometres, kilometers.
  15699. * @returns {number} radians
  15700. */
  15701. function lengthToRadians(distance, units) {
  15702. if (units === void 0) { units = "kilometers"; }
  15703. var factor = exports.factors[units];
  15704. if (!factor) {
  15705. throw new Error(units + " units is invalid");
  15706. }
  15707. return distance / factor;
  15708. }
  15709. exports.lengthToRadians = lengthToRadians;
  15710. /**
  15711. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees
  15712. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet
  15713. *
  15714. * @name lengthToDegrees
  15715. * @param {number} distance in real units
  15716. * @param {string} [units="kilometers"] can be degrees, radians, miles, or kilometers inches, yards, metres,
  15717. * meters, kilometres, kilometers.
  15718. * @returns {number} degrees
  15719. */
  15720. function lengthToDegrees(distance, units) {
  15721. return radiansToDegrees(lengthToRadians(distance, units));
  15722. }
  15723. exports.lengthToDegrees = lengthToDegrees;
  15724. /**
  15725. * Converts any bearing angle from the north line direction (positive clockwise)
  15726. * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line
  15727. *
  15728. * @name bearingToAzimuth
  15729. * @param {number} bearing angle, between -180 and +180 degrees
  15730. * @returns {number} angle between 0 and 360 degrees
  15731. */
  15732. function bearingToAzimuth(bearing) {
  15733. var angle = bearing % 360;
  15734. if (angle < 0) {
  15735. angle += 360;
  15736. }
  15737. return angle;
  15738. }
  15739. exports.bearingToAzimuth = bearingToAzimuth;
  15740. /**
  15741. * Converts an angle in radians to degrees
  15742. *
  15743. * @name radiansToDegrees
  15744. * @param {number} radians angle in radians
  15745. * @returns {number} degrees between 0 and 360 degrees
  15746. */
  15747. function radiansToDegrees(radians) {
  15748. var degrees = radians % (2 * Math.PI);
  15749. return degrees * 180 / Math.PI;
  15750. }
  15751. exports.radiansToDegrees = radiansToDegrees;
  15752. /**
  15753. * Converts an angle in degrees to radians
  15754. *
  15755. * @name degreesToRadians
  15756. * @param {number} degrees angle between 0 and 360 degrees
  15757. * @returns {number} angle in radians
  15758. */
  15759. function degreesToRadians(degrees) {
  15760. var radians = degrees % 360;
  15761. return radians * Math.PI / 180;
  15762. }
  15763. exports.degreesToRadians = degreesToRadians;
  15764. /**
  15765. * Converts a length to the requested unit.
  15766. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  15767. *
  15768. * @param {number} length to be converted
  15769. * @param {Units} [originalUnit="kilometers"] of the length
  15770. * @param {Units} [finalUnit="kilometers"] returned unit
  15771. * @returns {number} the converted length
  15772. */
  15773. function convertLength(length, originalUnit, finalUnit) {
  15774. if (originalUnit === void 0) { originalUnit = "kilometers"; }
  15775. if (finalUnit === void 0) { finalUnit = "kilometers"; }
  15776. if (!(length >= 0)) {
  15777. throw new Error("length must be a positive number");
  15778. }
  15779. return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);
  15780. }
  15781. exports.convertLength = convertLength;
  15782. /**
  15783. * Converts a area to the requested unit.
  15784. * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches
  15785. * @param {number} area to be converted
  15786. * @param {Units} [originalUnit="meters"] of the distance
  15787. * @param {Units} [finalUnit="kilometers"] returned unit
  15788. * @returns {number} the converted distance
  15789. */
  15790. function convertArea(area, originalUnit, finalUnit) {
  15791. if (originalUnit === void 0) { originalUnit = "meters"; }
  15792. if (finalUnit === void 0) { finalUnit = "kilometers"; }
  15793. if (!(area >= 0)) {
  15794. throw new Error("area must be a positive number");
  15795. }
  15796. var startFactor = exports.areaFactors[originalUnit];
  15797. if (!startFactor) {
  15798. throw new Error("invalid original units");
  15799. }
  15800. var finalFactor = exports.areaFactors[finalUnit];
  15801. if (!finalFactor) {
  15802. throw new Error("invalid final units");
  15803. }
  15804. return (area / startFactor) * finalFactor;
  15805. }
  15806. exports.convertArea = convertArea;
  15807. /**
  15808. * isNumber
  15809. *
  15810. * @param {*} num Number to validate
  15811. * @returns {boolean} true/false
  15812. * @example
  15813. * turf.isNumber(123)
  15814. * //=true
  15815. * turf.isNumber('foo')
  15816. * //=false
  15817. */
  15818. function isNumber(num) {
  15819. return !isNaN(num) && num !== null && !Array.isArray(num) && !/^\s*$/.test(num);
  15820. }
  15821. exports.isNumber = isNumber;
  15822. /**
  15823. * isObject
  15824. *
  15825. * @param {*} input variable to validate
  15826. * @returns {boolean} true/false
  15827. * @example
  15828. * turf.isObject({elevation: 10})
  15829. * //=true
  15830. * turf.isObject('foo')
  15831. * //=false
  15832. */
  15833. function isObject(input) {
  15834. return (!!input) && (input.constructor === Object);
  15835. }
  15836. exports.isObject = isObject;
  15837. /**
  15838. * Validate BBox
  15839. *
  15840. * @private
  15841. * @param {Array<number>} bbox BBox to validate
  15842. * @returns {void}
  15843. * @throws Error if BBox is not valid
  15844. * @example
  15845. * validateBBox([-180, -40, 110, 50])
  15846. * //=OK
  15847. * validateBBox([-180, -40])
  15848. * //=Error
  15849. * validateBBox('Foo')
  15850. * //=Error
  15851. * validateBBox(5)
  15852. * //=Error
  15853. * validateBBox(null)
  15854. * //=Error
  15855. * validateBBox(undefined)
  15856. * //=Error
  15857. */
  15858. function validateBBox(bbox) {
  15859. if (!bbox) {
  15860. throw new Error("bbox is required");
  15861. }
  15862. if (!Array.isArray(bbox)) {
  15863. throw new Error("bbox must be an Array");
  15864. }
  15865. if (bbox.length !== 4 && bbox.length !== 6) {
  15866. throw new Error("bbox must be an Array of 4 or 6 numbers");
  15867. }
  15868. bbox.forEach(function (num) {
  15869. if (!isNumber(num)) {
  15870. throw new Error("bbox must only contain numbers");
  15871. }
  15872. });
  15873. }
  15874. exports.validateBBox = validateBBox;
  15875. /**
  15876. * Validate Id
  15877. *
  15878. * @private
  15879. * @param {string|number} id Id to validate
  15880. * @returns {void}
  15881. * @throws Error if Id is not valid
  15882. * @example
  15883. * validateId([-180, -40, 110, 50])
  15884. * //=Error
  15885. * validateId([-180, -40])
  15886. * //=Error
  15887. * validateId('Foo')
  15888. * //=OK
  15889. * validateId(5)
  15890. * //=OK
  15891. * validateId(null)
  15892. * //=Error
  15893. * validateId(undefined)
  15894. * //=Error
  15895. */
  15896. function validateId(id) {
  15897. if (!id) {
  15898. throw new Error("id is required");
  15899. }
  15900. if (["string", "number"].indexOf(typeof id) === -1) {
  15901. throw new Error("id must be a number or a string");
  15902. }
  15903. }
  15904. exports.validateId = validateId;
  15905. // Deprecated methods
  15906. function radians2degrees() {
  15907. throw new Error("method has been renamed to `radiansToDegrees`");
  15908. }
  15909. exports.radians2degrees = radians2degrees;
  15910. function degrees2radians() {
  15911. throw new Error("method has been renamed to `degreesToRadians`");
  15912. }
  15913. exports.degrees2radians = degrees2radians;
  15914. function distanceToDegrees() {
  15915. throw new Error("method has been renamed to `lengthToDegrees`");
  15916. }
  15917. exports.distanceToDegrees = distanceToDegrees;
  15918. function distanceToRadians() {
  15919. throw new Error("method has been renamed to `lengthToRadians`");
  15920. }
  15921. exports.distanceToRadians = distanceToRadians;
  15922. function radiansToDistance() {
  15923. throw new Error("method has been renamed to `radiansToLength`");
  15924. }
  15925. exports.radiansToDistance = radiansToDistance;
  15926. function bearingToAngle() {
  15927. throw new Error("method has been renamed to `bearingToAzimuth`");
  15928. }
  15929. exports.bearingToAngle = bearingToAngle;
  15930. function convertDistance() {
  15931. throw new Error("method has been renamed to `convertLength`");
  15932. }
  15933. exports.convertDistance = convertDistance;
  15934. /***/ }),
  15935. /***/ "38cf":
  15936. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  15937. "use strict";
  15938. __webpack_require__.r(__webpack_exports__);
  15939. /* harmony import */ var _Border_vue_vue_type_template_id_531a677a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("c492");
  15940. /* harmony import */ var _Border_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("cadc");
  15941. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Border_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Border_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  15942. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  15943. /* normalize component */
  15944. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  15945. _Border_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  15946. _Border_vue_vue_type_template_id_531a677a___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  15947. _Border_vue_vue_type_template_id_531a677a___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  15948. false,
  15949. null,
  15950. null,
  15951. null
  15952. )
  15953. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  15954. /***/ }),
  15955. /***/ "3979":
  15956. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  15957. "use strict";
  15958. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/web-map/control/layer-list/LayerList.vue?vue&type=template&id=4a89632a&
  15959. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('sm-card',{directives:[{name:"show",rawName:"v-show",value:(_vm.isShow),expression:"isShow"}],staticClass:"sm-component-layer-list",attrs:{"icon-class":_vm.iconClass,"icon-position":_vm.position,"header-name":_vm.headerName,"auto-rotate":_vm.autoRotate,"collapsed":_vm.collapsed,"background":_vm.background,"textColor":_vm.textColor}},[_c('a-card',{staticClass:"sm-component-layer-list__a-card",style:([_vm.getBackgroundStyle])},[_c('div',{staticClass:"sm-component-layer-list__content"},_vm._l((_vm.sourceNames),function(name,index){return _c('a-collapse',{key:index,staticClass:"sm-component-layer-list__collapse",attrs:{"bordered":false},on:{"change":_vm.handleCollapseChange}},[(typeof _vm.sourceList[name].sourceLayerList === 'object')?_c('a-collapse-panel',{staticClass:"sm-component-layer-list__collapseitem",attrs:{"showArrow":false}},[_c('template',{slot:"header"},[_c('div',{staticClass:"header-wrap",style:(_vm.sourceList[name].visibility === 'visible' ? _vm.getTextColorStyle : _vm.getDisabledStyle())},[_c('div',{staticClass:"header-text"},[_c('a-icon',{style:(_vm.sourceList[name].visibility === 'visible' ? _vm.getColorStyle(0) : _vm.getDisabledStyle(false)),attrs:{"type":"eye"},on:{"click":function($event){$event.stopPropagation();return _vm.toggleLayerGroupVisibility(name, _vm.sourceList[name].visibility)}}}),_vm._v(" "),_c('span',{staticClass:"add-ellipsis"},[_vm._v(_vm._s(name))])],1),_vm._v(" "),_c('a-icon',{staticClass:"header-arrow",attrs:{"type":"right"}})],1)]),_vm._v(" "),_vm._l((_vm.sourceList[name].sourceLayerList),function(sourcelayerValue,sourcelayerKey,i){return _c('a-checkbox',{key:i,style:(sourcelayerValue[0].visibility === 'visible' ? _vm.getTextColorStyle : _vm.getDisabledStyle()),attrs:{"checked":_vm._f("isVisible")(sourcelayerValue[0].visibility),"title":sourcelayerKey},on:{"change":function($event){return _vm.toggleVisibility(sourcelayerKey, name, sourcelayerValue[0].visibility)}}},[_vm._v(_vm._s(sourcelayerKey))])})],2):_c('a-card',{staticClass:"sm-component-layer-list__elcarditem",style:([_vm.getTextColorStyle])},[_c('a-icon',{class:[_vm.sourceList[name].visibility === 'visible' ? 'visible' : 'none'],style:(_vm.sourceList[name].visibility === 'visible' ? _vm.getColorStyle(0) : _vm.getDisabledStyle(false)),attrs:{"type":"eye"},on:{"click":function($event){$event.stopPropagation();return _vm.toggleLayerGroupVisibility(name, _vm.sourceList[name].visibility)}}}),_vm._v(" "),_c('div',{staticClass:"sm-component-layer-list__layergroupname add-ellipsis",style:(_vm.sourceList[name].visibility === 'visible' ? _vm.getTextColorStyle : _vm.getDisabledStyle()),attrs:{"title":name}},[_vm._v("\n "+_vm._s(name)+"\n ")])],1)],1)}),1)])],1)}
  15960. var staticRenderFns = []
  15961. // CONCATENATED MODULE: ./src/mapboxgl/web-map/control/layer-list/LayerList.vue?vue&type=template&id=4a89632a&
  15962. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  15963. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  15964. /***/ }),
  15965. /***/ "399a":
  15966. /***/ (function(module, exports, __webpack_require__) {
  15967. "use strict";
  15968. var _interopRequireDefault = __webpack_require__("8e6d");
  15969. Object.defineProperty(exports, "__esModule", {
  15970. value: true
  15971. });
  15972. exports.default = void 0;
  15973. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  15974. //
  15975. //
  15976. //
  15977. //
  15978. //
  15979. //
  15980. //
  15981. //
  15982. //
  15983. //
  15984. //
  15985. //
  15986. //
  15987. //
  15988. //
  15989. //
  15990. var _default = {
  15991. name: 'PaginationContainer',
  15992. mixins: [_theme.default],
  15993. props: {
  15994. total: {
  15995. type: Number
  15996. },
  15997. pageNo: {
  15998. type: Number,
  15999. default: 1
  16000. },
  16001. pageSize: {
  16002. type: Number,
  16003. default: 10
  16004. },
  16005. hideOnSinglePage: {
  16006. type: Boolean,
  16007. default: true
  16008. }
  16009. },
  16010. data: function data() {
  16011. return {
  16012. showPrevPage: false,
  16013. activePage: 0,
  16014. realPage: 1,
  16015. pageList: [],
  16016. base: 4 // 分页显示几个按钮
  16017. };
  16018. },
  16019. computed: {
  16020. totalPage: function totalPage() {
  16021. return this.total && Math.ceil(this.total / this.pageSize);
  16022. },
  16023. showComponent: function showComponent() {
  16024. if (!this.total || this.hideOnSinglePage && this.totalPage <= 1) {
  16025. return false;
  16026. }
  16027. return true;
  16028. },
  16029. attrType: function attrType() {
  16030. return function (index) {
  16031. if (!index) {
  16032. return 'startPage';
  16033. } else if (index === 3) {
  16034. return 'endPage';
  16035. }
  16036. return 'serialPage';
  16037. };
  16038. }
  16039. },
  16040. watch: {
  16041. total: function total() {
  16042. this.calcRenderPages();
  16043. },
  16044. pageNo: function pageNo() {
  16045. if (this.pageNo) {
  16046. this.initData();
  16047. }
  16048. }
  16049. },
  16050. mounted: function mounted() {
  16051. this.initData();
  16052. this.calcRenderPages();
  16053. },
  16054. methods: {
  16055. initData: function initData() {
  16056. var remainder = this.pageNo % this.base;
  16057. var num = remainder ? remainder - 1 : this.base - 1;
  16058. this.activePage = num;
  16059. this.realPage = this.pageNo;
  16060. },
  16061. calcRenderPages: function calcRenderPages() {
  16062. var start = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
  16063. var pageData = [];
  16064. var count = this.totalPage;
  16065. if (count && start <= count) {
  16066. var step = start + this.base > count ? count - start : this.base;
  16067. var end = start + step;
  16068. while (start < end) {
  16069. start += 1;
  16070. pageData.push(start);
  16071. }
  16072. this.pageList = pageData;
  16073. }
  16074. },
  16075. handleClick: function handleClick(e) {
  16076. var target = e.target,
  16077. srcElement = e.srcElement;
  16078. if (target.nodeName.toLowerCase() === 'li') {
  16079. var value = target.innerHTML - 1;
  16080. switch (srcElement.getAttribute('type')) {
  16081. case 'home':
  16082. this.activePage = 0;
  16083. this.realPage = 1;
  16084. this.calcRenderPages();
  16085. break;
  16086. case 'prevPage':
  16087. this.activePage -= 1;
  16088. this.realPage = Math.max(this.realPage - 1, 1);
  16089. if (this.activePage < 0) {
  16090. this.calcRenderPages(Math.max(this.realPage - this.base, 0));
  16091. this.activePage = 3;
  16092. }
  16093. break;
  16094. case 'nextPage':
  16095. this.activePage += 1;
  16096. this.realPage = Math.min(this.realPage + 1, this.totalPage);
  16097. if (this.activePage > 3) {
  16098. this.calcRenderPages(this.realPage - 1);
  16099. this.activePage = 0;
  16100. }
  16101. break;
  16102. default:
  16103. this.activePage = value;
  16104. this.realPage = +target.innerHTML;
  16105. break;
  16106. }
  16107. this.$emit('change', {
  16108. page: this.realPage,
  16109. pageSize: this.pageSize
  16110. });
  16111. }
  16112. }
  16113. }
  16114. };
  16115. exports.default = _default;
  16116. /***/ }),
  16117. /***/ "3a31":
  16118. /***/ (function(module, exports, __webpack_require__) {
  16119. "use strict";
  16120. var _interopRequireDefault = __webpack_require__("8e6d");
  16121. Object.defineProperty(exports, "__esModule", {
  16122. value: true
  16123. });
  16124. exports.default = void 0;
  16125. var _echarts = _interopRequireDefault(__webpack_require__("f840"));
  16126. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  16127. __webpack_require__("acbb");
  16128. var _cssElementQueries = __webpack_require__("18e4");
  16129. var _timer = _interopRequireDefault(__webpack_require__("8156"));
  16130. var _thirdService = _interopRequireDefault(__webpack_require__("c51e"));
  16131. //
  16132. //
  16133. //
  16134. var _default = {
  16135. name: 'SmLiquidFill',
  16136. mixins: [_theme.default, _timer.default, _thirdService.default],
  16137. props: {
  16138. // 百分比的值
  16139. value: {
  16140. type: [Number, String],
  16141. default: 0
  16142. },
  16143. // 波浪数
  16144. waveCount: {
  16145. type: Number,
  16146. default: 1
  16147. },
  16148. // 字体
  16149. fontSize: {
  16150. type: [Number, String]
  16151. },
  16152. // 波浪颜色
  16153. waveColor: {
  16154. type: String
  16155. },
  16156. // 边框颜色
  16157. borderColor: {
  16158. type: String
  16159. },
  16160. // 数字在波浪外的颜色
  16161. labelColor: {
  16162. type: String,
  16163. default: '#626c91'
  16164. },
  16165. // 背景色
  16166. backgroundColor: {
  16167. type: String
  16168. },
  16169. // 数字在波浪内的颜色
  16170. insideLabelColor: {
  16171. type: String,
  16172. default: '#fff'
  16173. },
  16174. // 是否开启波浪动画
  16175. waveAnimation: {
  16176. type: Boolean,
  16177. default: false
  16178. }
  16179. },
  16180. data: function data() {
  16181. return {
  16182. waveColorData: '',
  16183. labelColorData: '',
  16184. insideLabelColorData: '',
  16185. borderColorData: '',
  16186. backgroundColorData: '',
  16187. finalValue: this.value
  16188. };
  16189. },
  16190. computed: {
  16191. // 根据波浪数渲染数据
  16192. calcData: function calcData() {
  16193. var data = [];
  16194. var formatValue = isNaN(this.finalValue) ? 0 : parseFloat(this.finalValue);
  16195. for (var i = 0; i < this.waveCount; i++) {
  16196. data.push(formatValue - i * 0.05);
  16197. }
  16198. return data;
  16199. }
  16200. },
  16201. watch: {
  16202. waveColor: function waveColor(val) {
  16203. this.waveColorData = val;
  16204. this.updateChart();
  16205. },
  16206. labelColor: function labelColor(val) {
  16207. this.labelColorData = val;
  16208. this.updateChart();
  16209. },
  16210. insideLabelColor: function insideLabelColor(val) {
  16211. this.insideLabelColorData = val;
  16212. this.updateChart();
  16213. },
  16214. borderColor: function borderColor(val) {
  16215. this.borderColorData = val;
  16216. this.updateChart();
  16217. },
  16218. backgroundColor: function backgroundColor(val) {
  16219. this.backgroundColorData = val;
  16220. this.updateChart();
  16221. },
  16222. finalValue: function finalValue() {
  16223. this.updateChart();
  16224. },
  16225. fontSize: function fontSize() {
  16226. this.updateChart();
  16227. },
  16228. waveCount: function waveCount() {
  16229. this.updateChart();
  16230. },
  16231. waveAnimation: function waveAnimation() {
  16232. this.updateChart();
  16233. },
  16234. value: function value(val) {
  16235. this.finalValue = val;
  16236. }
  16237. },
  16238. mounted: function mounted() {
  16239. var _this = this;
  16240. this.waveColorData = this.waveColor || this.getColor(0);
  16241. this.labelColorData = this.labelColor || this.getTextColor;
  16242. this.insideLabelColorData = this.insideLabelColor || this.getTextColor;
  16243. this.borderColorData = this.borderColor || this.waveColorData;
  16244. this.backgroundColorData = this.backgroundColor || this.getBackground;
  16245. setTimeout(function () {
  16246. _this.initializeChart();
  16247. _this.resize();
  16248. }, 0);
  16249. },
  16250. beforeDestroy: function beforeDestroy() {
  16251. this.restService && this.restService.remove('getdatasucceeded');
  16252. },
  16253. methods: {
  16254. resize: function resize() {
  16255. this.chart && this.chart.resize();
  16256. },
  16257. initializeChart: function initializeChart() {
  16258. var _this2 = this;
  16259. this.chart = _echarts.default.init(this.$refs.chart);
  16260. this.updateChart();
  16261. this.$on('theme-style-changed', function () {
  16262. _this2.waveColorData = _this2.getColor(0);
  16263. _this2.labelColorData = _this2.getTextColor;
  16264. _this2.insideLabelColorData = _this2.getTextColor;
  16265. _this2.borderColorData = _this2.getColor(0);
  16266. _this2.backgroundColorData = _this2.getBackground;
  16267. _this2.updateChart(true);
  16268. });
  16269. this.resizeObsever = new _cssElementQueries.ResizeSensor(this.$el, function () {
  16270. _this2.resize();
  16271. });
  16272. },
  16273. updateChart: function updateChart() {
  16274. var propsUpdate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
  16275. this.chart && this.chart.setOption({
  16276. series: [{
  16277. color: [this.waveColorData],
  16278. type: 'liquidFill',
  16279. waveAnimation: this.waveAnimation,
  16280. animation: false,
  16281. radius: '95%',
  16282. data: this.calcData,
  16283. label: {
  16284. fontSize: parseFloat(this.fontSize),
  16285. color: this.labelColorData,
  16286. insideColor: this.insideLabelColorData
  16287. },
  16288. backgroundStyle: {
  16289. color: this.backgroundColorData
  16290. },
  16291. itemStyle: {
  16292. shadowColor: '#fff'
  16293. },
  16294. outline: {
  16295. borderDistance: 3,
  16296. itemStyle: {
  16297. borderColor: this.borderColorData,
  16298. borderWidth: 3,
  16299. shadowBlur: 0,
  16300. shadowColor: '#fff'
  16301. }
  16302. }
  16303. }]
  16304. });
  16305. },
  16306. timing: function timing() {
  16307. this.getData();
  16308. }
  16309. }
  16310. };
  16311. exports.default = _default;
  16312. /***/ }),
  16313. /***/ "3a49":
  16314. /***/ (function(module, exports, __webpack_require__) {
  16315. "use strict";
  16316. var _interopRequireDefault = __webpack_require__("8e6d");
  16317. Object.defineProperty(exports, "__esModule", {
  16318. value: true
  16319. });
  16320. exports.default = void 0;
  16321. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  16322. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  16323. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  16324. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  16325. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  16326. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  16327. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  16328. var _vuePropertyDecorator = __webpack_require__("e22c");
  16329. var _lodash = _interopRequireDefault(__webpack_require__("5f9f"));
  16330. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  16331. var c = arguments.length,
  16332. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  16333. d;
  16334. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  16335. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  16336. }
  16337. return c > 3 && r && Object.defineProperty(target, key, r), r;
  16338. };
  16339. var VmUpdater =
  16340. /*#__PURE__*/
  16341. function (_Vue) {
  16342. (0, _inherits2.default)(VmUpdater, _Vue);
  16343. function VmUpdater() {
  16344. (0, _classCallCheck2.default)(this, VmUpdater);
  16345. return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(VmUpdater).apply(this, arguments));
  16346. }
  16347. (0, _createClass2.default)(VmUpdater, [{
  16348. key: "mounted",
  16349. value: function mounted() {
  16350. if (this.$options.viewModelProps) {
  16351. this.watchViewModelOptions(this.$options.viewModelProps);
  16352. }
  16353. }
  16354. }, {
  16355. key: "setViewModel",
  16356. value: function setViewModel(viewModel) {
  16357. this.viewModel = viewModel;
  16358. }
  16359. }, {
  16360. key: "watchViewModelOptions",
  16361. value: function watchViewModelOptions(viewModelProps) {
  16362. var _this = this;
  16363. viewModelProps.map(function (item) {
  16364. _this.$watch(item, function (newVal, oldVal) {
  16365. if (!(0, _lodash.default)(newVal, oldVal)) {
  16366. if (item.includes('.')) {
  16367. var itemArr = item.split('.');
  16368. item = itemArr[itemArr.length - 1];
  16369. }
  16370. var setFun = 'set' + item.replace(item[0], item[0].toUpperCase());
  16371. this.viewModel && this.viewModel[setFun](newVal);
  16372. }
  16373. }, {
  16374. deep: true
  16375. });
  16376. });
  16377. }
  16378. }]);
  16379. return VmUpdater;
  16380. }(_vue.default);
  16381. VmUpdater = __decorate([_vuePropertyDecorator.Component], VmUpdater);
  16382. var _default = VmUpdater;
  16383. exports.default = _default;
  16384. /***/ }),
  16385. /***/ "3a59":
  16386. /***/ (function(module, exports, __webpack_require__) {
  16387. "use strict";
  16388. var _interopRequireDefault = __webpack_require__("8e6d");
  16389. Object.defineProperty(exports, "__esModule", {
  16390. value: true
  16391. });
  16392. exports.default = void 0;
  16393. var _regenerator = _interopRequireDefault(__webpack_require__("849c"));
  16394. var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("1d96"));
  16395. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  16396. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  16397. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  16398. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  16399. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  16400. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  16401. var _lang = __webpack_require__("4e21");
  16402. __webpack_require__("f240");
  16403. var _util = __webpack_require__("1448");
  16404. var _iServerRestService = __webpack_require__("e340");
  16405. // import iPortalDataParameter from '../../common/_types/iPortalDataParameter';
  16406. // import RestDataParameter from '../../common/_types/RestDataParameter';
  16407. // import RestMapParameter from '../../common/_types/RestMapParameter';
  16408. /**
  16409. * @class QueryViewModel
  16410. * @classdesc 查询组件功能类。
  16411. * @category ViewModel
  16412. * @param {Object} map - map 对象。
  16413. * @param {Object} options - 可选参数。
  16414. * @param {Object} [options.maxFeatures=200] - 查询最大返回要素个数。
  16415. * @param {Object} [options.layerStyle] - 查询结果图层样式配置。
  16416. * @param {Object} [options.layerStyle.line] - 线图层样式配置。
  16417. * @param {Object} [options.layerStyle.circle] - 点图层样式配置。
  16418. * @param {Object} [options.layerStyle.fill] - 面图层样式配置。
  16419. * @param {Object} [options.layerStyle.stokeLine] - 面图层样式配置。
  16420. * @extends mapboxgl.Evented
  16421. * @fires QueryViewModel#querysucceeded
  16422. * @fires QueryViewModel#queryfailed
  16423. * @fires QueryViewModel#getfeatureinfosucceeded
  16424. */
  16425. var QueryViewModel =
  16426. /*#__PURE__*/
  16427. function (_mapboxgl$Evented) {
  16428. (0, _inherits2.default)(QueryViewModel, _mapboxgl$Evented);
  16429. function QueryViewModel(options) {
  16430. var _this;
  16431. (0, _classCallCheck2.default)(this, QueryViewModel);
  16432. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(QueryViewModel).call(this));
  16433. _this.options = options || {};
  16434. _this.maxFeatures = _this.options.maxFeatures || 200;
  16435. _this.layerStyle = options.layerStyle || {};
  16436. return _this;
  16437. }
  16438. (0, _createClass2.default)(QueryViewModel, [{
  16439. key: "setMap",
  16440. value: function setMap(mapInfo) {
  16441. var map = mapInfo.map;
  16442. this.map = map;
  16443. }
  16444. }, {
  16445. key: "clearResultLayer",
  16446. value: function clearResultLayer() {
  16447. if (this.map) {
  16448. this.strokeLayerID && this.map.getLayer(this.strokeLayerID) && this.map.removeLayer(this.strokeLayerID);
  16449. this.layerID && this.map.getLayer(this.layerID) && this.map.removeLayer(this.layerID);
  16450. }
  16451. }
  16452. }, {
  16453. key: "removed",
  16454. value: function removed() {
  16455. this.bounds = null;
  16456. this.clearResultLayer();
  16457. }
  16458. /**
  16459. * @function QueryViewModel.prototype.query
  16460. * @desc 开始查询。
  16461. * @param {iPortalDataParameter|RestDataParameter|RestMapParameter} parameter - 查询配置参数。
  16462. * @param {String} [queryBounds='mapBounds'] - 查询范围,可选值为 mapBounds(地图全图范围),currentMapBounds(当前地图范围)。
  16463. */
  16464. }, {
  16465. key: "query",
  16466. value: function query(queryParameter, queryBounds) {
  16467. if (!this.map) {
  16468. return;
  16469. }
  16470. this.queryParameter = queryParameter;
  16471. this.removed();
  16472. this.queryBounds = queryBounds;
  16473. if (queryBounds === 'currentMapBounds') {
  16474. this.bounds = this.map.getBounds();
  16475. }
  16476. this.queryResult = null;
  16477. if (queryParameter) {
  16478. if (queryParameter.dataName) {
  16479. this._queryByRestData(queryParameter);
  16480. } else if (queryParameter.layerName) {
  16481. this._queryByRestMap(queryParameter);
  16482. } else {
  16483. this._queryByIportalData(queryParameter);
  16484. }
  16485. } // if (queryParameter instanceof iPortalDataParameter) {
  16486. // this._queryByIportalData(queryParameter);
  16487. // } else if (queryParameter instanceof RestDataParameter) {
  16488. // this._queryByRestData(queryParameter);
  16489. // } else if (queryParameter instanceof RestMapParameter) {
  16490. // this._queryByRestMap(queryParameter);
  16491. // }
  16492. }
  16493. }, {
  16494. key: "_queryByRestMap",
  16495. value: function _queryByRestMap(restMapParameter) {
  16496. var _this2 = this;
  16497. var options = {
  16498. withCredentials: restMapParameter.withCredentials || false
  16499. };
  16500. if (restMapParameter.proxy) {
  16501. options.proxy = restMapParameter.proxy;
  16502. }
  16503. if (this.bounds) {
  16504. var param = new SuperMap.QueryByGeometryParameters({
  16505. queryParams: {
  16506. name: restMapParameter.layerName,
  16507. attributeFilter: restMapParameter.attributeFilter
  16508. },
  16509. spatialQueryMode: SuperMap.SpatialQueryMode.INTERSECT,
  16510. geometry: this.bounds,
  16511. startRecord: 0,
  16512. expectCount: restMapParameter.maxFeatures || this.maxFeatures
  16513. });
  16514. new _mapboxGlEnhance.default.supermap.QueryService(restMapParameter.url, options).queryByGeometry(param, function (serviceResult) {
  16515. _this2._mapQuerySucceed(serviceResult, restMapParameter, options);
  16516. });
  16517. } else {
  16518. var _param = new SuperMap.QueryBySQLParameters({
  16519. queryParams: {
  16520. name: restMapParameter.layerName,
  16521. attributeFilter: restMapParameter.attributeFilter
  16522. },
  16523. startRecord: 0,
  16524. expectCount: restMapParameter.maxFeatures || this.maxFeatures
  16525. });
  16526. new _mapboxGlEnhance.default.supermap.QueryService(restMapParameter.url, options).queryBySQL(_param, function (serviceResult) {
  16527. _this2._mapQuerySucceed(serviceResult, restMapParameter, options);
  16528. });
  16529. }
  16530. }
  16531. }, {
  16532. key: "_queryByRestData",
  16533. value: function _queryByRestData(restDataParameter) {
  16534. var _this3 = this;
  16535. var maxFeatures = restDataParameter.maxFeatures || this.maxFeatures;
  16536. var toIndex = maxFeatures === 1 ? 0 : maxFeatures - 1;
  16537. var options = {
  16538. withCredentials: restDataParameter.withCredentials || false
  16539. };
  16540. if (restDataParameter.proxy) {
  16541. options.proxy = restDataParameter.proxy;
  16542. }
  16543. if (this.bounds) {
  16544. var boundsParam = new SuperMap.GetFeaturesByBoundsParameters({
  16545. attributeFilter: restDataParameter.attributeFilter,
  16546. datasetNames: restDataParameter.dataName,
  16547. spatialQueryMode: 'INTERSECT',
  16548. geometry: this.bounds,
  16549. fromIndex: 0,
  16550. toIndex: toIndex
  16551. });
  16552. new _mapboxGlEnhance.default.supermap.FeatureService(restDataParameter.url, options).getFeaturesByGeometry(boundsParam, function (serviceResult) {
  16553. _this3._dataQuerySucceed(serviceResult, restDataParameter, options);
  16554. });
  16555. } else {
  16556. var param = new SuperMap.GetFeaturesBySQLParameters({
  16557. queryParameter: {
  16558. attributeFilter: restDataParameter.attributeFilter
  16559. },
  16560. datasetNames: restDataParameter.dataName,
  16561. fromIndex: 0,
  16562. toIndex: toIndex
  16563. });
  16564. new _mapboxGlEnhance.default.supermap.FeatureService(restDataParameter.url, options).getFeaturesBySQL(param, function (serviceResult) {
  16565. _this3._dataQuerySucceed(serviceResult, restDataParameter, options);
  16566. });
  16567. }
  16568. }
  16569. }, {
  16570. key: "_mapQuerySucceed",
  16571. value: function () {
  16572. var _mapQuerySucceed2 = (0, _asyncToGenerator2.default)(
  16573. /*#__PURE__*/
  16574. _regenerator.default.mark(function _callee(serviceResult, restMapParameter, options) {
  16575. var result, resultFeatures, projectionUrl;
  16576. return _regenerator.default.wrap(function _callee$(_context) {
  16577. while (1) {
  16578. switch (_context.prev = _context.next) {
  16579. case 0:
  16580. result = serviceResult.result;
  16581. if (!(result && result.totalCount !== 0)) {
  16582. _context.next = 12;
  16583. break;
  16584. }
  16585. resultFeatures = result.recordsets[0].features.features;
  16586. projectionUrl = "".concat(restMapParameter.url, "/prjCoordSys");
  16587. _context.next = 6;
  16588. return (0, _iServerRestService.checkAndRectifyFeatures)({
  16589. features: resultFeatures,
  16590. epsgCode: restMapParameter.epsgCode,
  16591. projectionUrl: projectionUrl,
  16592. options: options
  16593. }).catch(function (error) {
  16594. console.error(error);
  16595. return resultFeatures;
  16596. });
  16597. case 6:
  16598. resultFeatures = _context.sent;
  16599. resultFeatures.length > 0 && (this.queryResult = {
  16600. name: restMapParameter.name,
  16601. result: resultFeatures
  16602. });
  16603. this._addResultLayer(this.queryResult);
  16604. /**
  16605. * @event QueryViewModel#querysucceeded
  16606. * @description 查询成功后触发。
  16607. * @property {Object} e - 事件对象。
  16608. */
  16609. this.fire('querysucceeded', {
  16610. result: this.queryResult
  16611. });
  16612. _context.next = 13;
  16613. break;
  16614. case 12:
  16615. if (result && result.totalCount === 0) {
  16616. /**
  16617. * @event QueryViewModel#queryfailed
  16618. * @description 查询失败后触发。
  16619. * @property {Object} e - 事件对象。
  16620. */
  16621. this.fire('queryfailed', {
  16622. message: (0, _lang.geti18n)().t('query.noResults')
  16623. });
  16624. } else {
  16625. this.fire('queryfailed', {
  16626. message: (0, _lang.geti18n)().t('query.queryFailed')
  16627. });
  16628. }
  16629. case 13:
  16630. case "end":
  16631. return _context.stop();
  16632. }
  16633. }
  16634. }, _callee, this);
  16635. }));
  16636. function _mapQuerySucceed(_x, _x2, _x3) {
  16637. return _mapQuerySucceed2.apply(this, arguments);
  16638. }
  16639. return _mapQuerySucceed;
  16640. }()
  16641. }, {
  16642. key: "_dataQuerySucceed",
  16643. value: function () {
  16644. var _dataQuerySucceed2 = (0, _asyncToGenerator2.default)(
  16645. /*#__PURE__*/
  16646. _regenerator.default.mark(function _callee2(serviceResult, restDataParameter, options) {
  16647. var result, url, dataName, epsgCode, dataSourceName, datasetName, projectionUrl, resultFeatures;
  16648. return _regenerator.default.wrap(function _callee2$(_context2) {
  16649. while (1) {
  16650. switch (_context2.prev = _context2.next) {
  16651. case 0:
  16652. result = serviceResult.result;
  16653. if (!(result && result.totalCount !== 0)) {
  16654. _context2.next = 15;
  16655. break;
  16656. }
  16657. url = restDataParameter.url, dataName = restDataParameter.dataName, epsgCode = restDataParameter.epsgCode;
  16658. dataSourceName = dataName[0].split(':')[0];
  16659. datasetName = dataName[0].split(':')[1];
  16660. projectionUrl = "".concat(url, "/datasources/").concat(dataSourceName, "/datasets/").concat(datasetName);
  16661. resultFeatures = result.features.features;
  16662. _context2.next = 9;
  16663. return (0, _iServerRestService.checkAndRectifyFeatures)({
  16664. features: resultFeatures,
  16665. epsgCode: epsgCode,
  16666. projectionUrl: projectionUrl,
  16667. options: options
  16668. }).catch(function (error) {
  16669. console.error(error);
  16670. return resultFeatures;
  16671. });
  16672. case 9:
  16673. resultFeatures = _context2.sent;
  16674. resultFeatures.length > 0 && (this.queryResult = {
  16675. name: restDataParameter.name,
  16676. result: resultFeatures
  16677. });
  16678. this._addResultLayer(this.queryResult);
  16679. this.fire('querysucceeded', {
  16680. result: this.queryResult
  16681. });
  16682. _context2.next = 16;
  16683. break;
  16684. case 15:
  16685. if (result && result.totalCount === 0) {
  16686. this.fire('queryfailed', {
  16687. message: (0, _lang.geti18n)().t('query.noResults')
  16688. });
  16689. } else {
  16690. this.fire('queryfailed', {
  16691. message: (0, _lang.geti18n)().t('query.queryFailed')
  16692. });
  16693. }
  16694. case 16:
  16695. case "end":
  16696. return _context2.stop();
  16697. }
  16698. }
  16699. }, _callee2, this);
  16700. }));
  16701. function _dataQuerySucceed(_x4, _x5, _x6) {
  16702. return _dataQuerySucceed2.apply(this, arguments);
  16703. }
  16704. return _dataQuerySucceed;
  16705. }()
  16706. }, {
  16707. key: "_queryByIportalData",
  16708. value: function _queryByIportalData(iportalDataParameter) {
  16709. var _this4 = this;
  16710. var url = iportalDataParameter.url;
  16711. var withCredentials = iportalDataParameter.withCredentials || false;
  16712. SuperMap.FetchRequest.get(url, null, {
  16713. withCredentials: withCredentials
  16714. }).then(function (response) {
  16715. return response.json();
  16716. }).then(function (data) {
  16717. if (data.succeed === false) {
  16718. _this4.queryCount--; // 请求失败
  16719. return;
  16720. } // 是否有rest服务
  16721. if (data.dataItemServices && data.dataItemServices.length > 0) {
  16722. var dataItemServices = data.dataItemServices;
  16723. var resultData;
  16724. dataItemServices.forEach(function (item) {
  16725. if (item.serviceType === 'RESTDATA' && item.serviceStatus === 'PUBLISHED') {
  16726. resultData = item;
  16727. } else if (item.serviceType === 'RESTMAP' && item.serviceStatus === 'PUBLISHED') {
  16728. resultData = item;
  16729. }
  16730. }, _this4);
  16731. if (resultData) {
  16732. // 如果有服务,获取数据源和数据集, 然后请求rest服务
  16733. _this4._getDatafromRest(resultData.serviceType, resultData.address, iportalDataParameter);
  16734. } else {
  16735. _this4.fire('queryfailed', {
  16736. message: (0, _lang.geti18n)().t('query.seviceNotSupport')
  16737. });
  16738. }
  16739. } else {
  16740. _this4.fire('queryfailed', {
  16741. message: (0, _lang.geti18n)().t('query.seviceNotSupport')
  16742. });
  16743. }
  16744. }).catch(function (error) {
  16745. _this4.fire('queryfailed', {
  16746. message: error
  16747. });
  16748. console.log(error);
  16749. });
  16750. }
  16751. }, {
  16752. key: "_getDatafromRest",
  16753. value: function _getDatafromRest(serviceType, address, iportalDataParameter) {
  16754. var _this5 = this;
  16755. if (serviceType === 'RESTDATA') {
  16756. var url = "".concat(address, "/data/datasources");
  16757. var sourceName, datasetName; // 请求获取数据源名
  16758. SuperMap.FetchRequest.get(url, null, {
  16759. withCredentials: iportalDataParameter.withCredentials
  16760. }).then(function (response) {
  16761. return response.json();
  16762. }).then(function (data) {
  16763. sourceName = data.datasourceNames[0];
  16764. url = "".concat(address, "/data/datasources/").concat(sourceName, "/datasets"); // 请求获取数据集名
  16765. SuperMap.FetchRequest.get(url, null, {
  16766. withCredentials: iportalDataParameter.withCredentials
  16767. }).then(function (response) {
  16768. return response.json();
  16769. }).then(function (data) {
  16770. datasetName = data.datasetNames[0]; // 请求restdata服务
  16771. _this5._queryByRestData({
  16772. dataName: [sourceName + ':' + datasetName],
  16773. url: "".concat(address, "/data"),
  16774. name: iportalDataParameter.name,
  16775. attributeFilter: iportalDataParameter.attributeFilter,
  16776. maxFeatures: iportalDataParameter.maxFeatures,
  16777. epsgCode: iportalDataParameter.epsgCode,
  16778. withCredentials: iportalDataParameter.withCredentials
  16779. });
  16780. }).catch(function (error) {
  16781. _this5.fire('queryfailed', {
  16782. message: error
  16783. });
  16784. console.log(error);
  16785. });
  16786. }).catch(function (error) {
  16787. _this5.fire('queryfailed', {
  16788. message: error
  16789. });
  16790. console.log(error);
  16791. });
  16792. } else {
  16793. // 如果是地图服务
  16794. var _url = "".concat(address, "/maps");
  16795. var mapName, layerName, path; // 请求获取地图名
  16796. SuperMap.FetchRequest.get(_url, null, {
  16797. withCredentials: iportalDataParameter.withCredentials
  16798. }).then(function (response) {
  16799. return response.json();
  16800. }).then(function (data) {
  16801. mapName = data[0].name;
  16802. path = data[0].path;
  16803. _url = _url = "".concat(address, "/maps/").concat(mapName, "/layers"); // 请求获取图层名
  16804. SuperMap.FetchRequest.get(_url, null, {
  16805. withCredentials: iportalDataParameter.withCredentials
  16806. }).then(function (response) {
  16807. return response.json();
  16808. }).then(function (data) {
  16809. layerName = data[0].subLayers.layers[0].caption; // 请求restmap服务
  16810. _this5._queryByRestMap({
  16811. layerName: layerName,
  16812. url: path,
  16813. name: iportalDataParameter.name,
  16814. attributeFilter: iportalDataParameter.attributeFilter,
  16815. maxFeatures: iportalDataParameter.maxFeatures,
  16816. epsgCode: iportalDataParameter.epsgCode,
  16817. withCredentials: iportalDataParameter.withCredentials
  16818. });
  16819. return layerName;
  16820. }).catch(function (error) {
  16821. _this5.fire('queryfailed', {
  16822. message: error
  16823. });
  16824. console.log(error);
  16825. });
  16826. }).catch(function (error) {
  16827. _this5.fire('queryfailed', {
  16828. message: error
  16829. });
  16830. console.log(error);
  16831. });
  16832. }
  16833. }
  16834. }, {
  16835. key: "_addResultLayer",
  16836. value: function _addResultLayer() {
  16837. this.layerID = this.queryParameter.name + new Date().getTime();
  16838. var type = this.queryResult.result[0].geometry.type;
  16839. var source = {
  16840. type: 'geojson',
  16841. data: {
  16842. type: 'FeatureCollection',
  16843. features: this.queryResult.result
  16844. }
  16845. };
  16846. this._addOverlayToMap(type, source, this.layerID);
  16847. }
  16848. /**
  16849. * @function QueryViewModel.prototype.getFilterFeature
  16850. * @desc 获取过滤后的要素。
  16851. * @param {String|Number} filter - 过滤条件,值应为要素的 properties 中的某个值。
  16852. * @returns {Object} 要素信息。
  16853. */
  16854. }, {
  16855. key: "getFilterFeature",
  16856. value: function getFilterFeature(filter) {
  16857. var features = this.queryResult.result;
  16858. var feature;
  16859. for (var i = 0; i < features.length; i++) {
  16860. var propertiesValue = (0, _util.getValueCaseInsensitive)(features[i].properties, 'smid');
  16861. if (filter === propertiesValue) {
  16862. feature = this._getFeatrueInfo(features[i]);
  16863. break;
  16864. }
  16865. }
  16866. this.map.flyTo({
  16867. center: feature.coordinates
  16868. });
  16869. return feature;
  16870. }
  16871. }, {
  16872. key: "_getFeatrueInfo",
  16873. value: function _getFeatrueInfo(feature) {
  16874. var featureInfo = {};
  16875. var coordinates;
  16876. var geometry = feature.geometry;
  16877. if (geometry.type === 'MultiPolygon' || geometry.type === 'Polygon' || geometry.type === 'LineString' || geometry.type === 'MultiLineString') {
  16878. coordinates = (0, _util.getFeatureCenter)(feature);
  16879. } else {
  16880. coordinates = geometry.coordinates;
  16881. }
  16882. featureInfo.coordinates = coordinates;
  16883. featureInfo.info = [];
  16884. for (var key in feature.properties) {
  16885. feature.properties[key] && featureInfo.info.push({
  16886. attribute: key,
  16887. attributeValue: feature.properties[key]
  16888. });
  16889. }
  16890. return featureInfo;
  16891. }
  16892. /**
  16893. * @function QueryViewModel.prototype.getPopupFeature
  16894. * @desc 获得地图点击位置的要素信息。调用此方法后,需要监听 'getfeatureinfosucceeded' 事件获得要素。
  16895. */
  16896. }, {
  16897. key: "getPopupFeature",
  16898. value: function getPopupFeature() {
  16899. var _this6 = this;
  16900. this.map.on('click', this.layerID, function (e) {
  16901. var feature = e.features[0];
  16902. var featureInfo = _this6._getFeatrueInfo(feature);
  16903. /**
  16904. * @event QueryViewModel#getfeatureinfosucceeded
  16905. * @description 获取要素信息成功后触发。
  16906. * @property {Object} e - 事件对象。
  16907. */
  16908. _this6.fire('getfeatureinfosucceeded', {
  16909. featureInfo: featureInfo
  16910. });
  16911. });
  16912. }
  16913. /**
  16914. * @function QueryViewModel.prototype.addPopup
  16915. * @desc 添加弹窗。
  16916. * @param {Array} coordinates - 弹窗坐标。
  16917. * @param {HTMLElement} popupContainer - 弹窗 DOM 对象。
  16918. */
  16919. }, {
  16920. key: "addPopup",
  16921. value: function addPopup(coordinates, popupContainer) {
  16922. popupContainer.style.display = 'block';
  16923. return new _mapboxGlEnhance.default.Popup({
  16924. className: 'sm-mapboxgl-tabel-popup',
  16925. closeOnClick: true,
  16926. anchor: 'bottom'
  16927. }).setLngLat(coordinates).setDOMContent(popupContainer).addTo(this.map);
  16928. }
  16929. }, {
  16930. key: "_addOverlayToMap",
  16931. value: function _addOverlayToMap(type, source, layerID) {
  16932. var mbglStyle = {
  16933. circle: {
  16934. 'circle-color': '#409eff',
  16935. 'circle-opacity': 0.6,
  16936. 'circle-radius': 8,
  16937. 'circle-stroke-width': 2,
  16938. 'circle-stroke-color': '#409eff',
  16939. 'circle-stroke-opacity': 1
  16940. },
  16941. line: {
  16942. 'line-width': 3,
  16943. 'line-color': '#409eff',
  16944. 'line-opacity': 1
  16945. },
  16946. fill: {
  16947. 'fill-color': '#409eff',
  16948. 'fill-opacity': 0.6,
  16949. 'fill-outline-color': '#409eff'
  16950. }
  16951. };
  16952. var mbglTypeMap = {
  16953. Point: 'circle',
  16954. LineString: 'line',
  16955. MultiLineString: 'line',
  16956. Polygon: 'fill',
  16957. MultiPolygon: 'fill'
  16958. };
  16959. type = mbglTypeMap[type];
  16960. if (type === 'circle' || type === 'line' || type === 'fill') {
  16961. var layerStyle = this.layerStyle[type];
  16962. this.map.addLayer({
  16963. id: layerID,
  16964. type: type,
  16965. source: source,
  16966. paint: layerStyle && layerStyle.paint || mbglStyle[type],
  16967. layout: layerStyle && layerStyle.layout || {}
  16968. });
  16969. }
  16970. if (type === 'fill') {
  16971. this.strokeLayerID = layerID + '-StrokeLine';
  16972. var stokeLineStyle = this.layerStyle.stokeLine || {};
  16973. var lineStyle = stokeLineStyle && stokeLineStyle.paint || {
  16974. 'line-width': 3,
  16975. 'line-color': '#409eff',
  16976. 'line-opacity': 1
  16977. };
  16978. this.map.addLayer({
  16979. id: this.strokeLayerID,
  16980. type: 'line',
  16981. source: source,
  16982. paint: lineStyle
  16983. });
  16984. }
  16985. }
  16986. }]);
  16987. return QueryViewModel;
  16988. }(_mapboxGlEnhance.default.Evented);
  16989. exports.default = QueryViewModel;
  16990. /***/ }),
  16991. /***/ "3a89":
  16992. /***/ (function(module, exports, __webpack_require__) {
  16993. "use strict";
  16994. var _interopRequireDefault = __webpack_require__("8e6d");
  16995. Object.defineProperty(exports, "__esModule", {
  16996. value: true
  16997. });
  16998. exports.default = void 0;
  16999. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  17000. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  17001. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  17002. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  17003. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  17004. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  17005. __webpack_require__("f240");
  17006. var LabelThemeLayerViewModel =
  17007. /*#__PURE__*/
  17008. function (_mapboxgl$Evented) {
  17009. (0, _inherits2.default)(LabelThemeLayerViewModel, _mapboxgl$Evented);
  17010. function LabelThemeLayerViewModel(themeProps) {
  17011. var _this;
  17012. (0, _classCallCheck2.default)(this, LabelThemeLayerViewModel);
  17013. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(LabelThemeLayerViewModel).call(this));
  17014. var layerName = themeProps.layerName,
  17015. options = themeProps.options,
  17016. layerId = themeProps.layerId,
  17017. data = themeProps.data;
  17018. _this.layerName = layerName || layerId;
  17019. options.id = options.id || layerId;
  17020. _this.options = options;
  17021. _this.layerId = layerId;
  17022. _this.data = data || [];
  17023. return _this;
  17024. }
  17025. (0, _createClass2.default)(LabelThemeLayerViewModel, [{
  17026. key: "setMap",
  17027. value: function setMap(mapInfo) {
  17028. var map = mapInfo.map;
  17029. this.map = map;
  17030. this._init();
  17031. }
  17032. }, {
  17033. key: "setLayerName",
  17034. value: function setLayerName(layerName) {
  17035. this.layerName = layerName;
  17036. this.removed();
  17037. this._init();
  17038. }
  17039. }, {
  17040. key: "setData",
  17041. value: function setData(data) {
  17042. this.data = data;
  17043. this.removed();
  17044. this._init();
  17045. }
  17046. }, {
  17047. key: "setOptions",
  17048. value: function setOptions(options) {
  17049. this.options = options;
  17050. this.removed();
  17051. this._init();
  17052. }
  17053. }, {
  17054. key: "_init",
  17055. value: function _init() {
  17056. this.themeLayer = new _mapboxGlEnhance.default.supermap.LabelThemeLayer(this.layerName, this.options);
  17057. this.map.addLayer(this.themeLayer);
  17058. this.themeLayer.addFeatures(this.data);
  17059. }
  17060. }, {
  17061. key: "removed",
  17062. value: function removed() {
  17063. var map = this.map,
  17064. options = this.options;
  17065. var layerId = options.id;
  17066. if (map && layerId && map.getLayer(layerId)) {
  17067. map.removeLayer(layerId);
  17068. }
  17069. }
  17070. }]);
  17071. return LabelThemeLayerViewModel;
  17072. }(_mapboxGlEnhance.default.Evented);
  17073. exports.default = LabelThemeLayerViewModel;
  17074. /***/ }),
  17075. /***/ "3be6":
  17076. /***/ (function(module, exports, __webpack_require__) {
  17077. "use strict";
  17078. /* WEBPACK VAR INJECTION */(function(global) {/*!
  17079. * The buffer module from node.js, for the browser.
  17080. *
  17081. * @author Feross Aboukhadijeh <http://feross.org>
  17082. * @license MIT
  17083. */
  17084. /* eslint-disable no-proto */
  17085. var base64 = __webpack_require__("9711")
  17086. var ieee754 = __webpack_require__("4a62")
  17087. var isArray = __webpack_require__("5b56")
  17088. exports.Buffer = Buffer
  17089. exports.SlowBuffer = SlowBuffer
  17090. exports.INSPECT_MAX_BYTES = 50
  17091. /**
  17092. * If `Buffer.TYPED_ARRAY_SUPPORT`:
  17093. * === true Use Uint8Array implementation (fastest)
  17094. * === false Use Object implementation (most compatible, even IE6)
  17095. *
  17096. * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
  17097. * Opera 11.6+, iOS 4.2+.
  17098. *
  17099. * Due to various browser bugs, sometimes the Object implementation will be used even
  17100. * when the browser supports typed arrays.
  17101. *
  17102. * Note:
  17103. *
  17104. * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
  17105. * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
  17106. *
  17107. * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
  17108. *
  17109. * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
  17110. * incorrect length in some situations.
  17111. * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
  17112. * get the Object implementation, which is slower but behaves correctly.
  17113. */
  17114. Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
  17115. ? global.TYPED_ARRAY_SUPPORT
  17116. : typedArraySupport()
  17117. /*
  17118. * Export kMaxLength after typed array support is determined.
  17119. */
  17120. exports.kMaxLength = kMaxLength()
  17121. function typedArraySupport () {
  17122. try {
  17123. var arr = new Uint8Array(1)
  17124. arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
  17125. return arr.foo() === 42 && // typed array instances can be augmented
  17126. typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
  17127. arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
  17128. } catch (e) {
  17129. return false
  17130. }
  17131. }
  17132. function kMaxLength () {
  17133. return Buffer.TYPED_ARRAY_SUPPORT
  17134. ? 0x7fffffff
  17135. : 0x3fffffff
  17136. }
  17137. function createBuffer (that, length) {
  17138. if (kMaxLength() < length) {
  17139. throw new RangeError('Invalid typed array length')
  17140. }
  17141. if (Buffer.TYPED_ARRAY_SUPPORT) {
  17142. // Return an augmented `Uint8Array` instance, for best performance
  17143. that = new Uint8Array(length)
  17144. that.__proto__ = Buffer.prototype
  17145. } else {
  17146. // Fallback: Return an object instance of the Buffer class
  17147. if (that === null) {
  17148. that = new Buffer(length)
  17149. }
  17150. that.length = length
  17151. }
  17152. return that
  17153. }
  17154. /**
  17155. * The Buffer constructor returns instances of `Uint8Array` that have their
  17156. * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
  17157. * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
  17158. * and the `Uint8Array` methods. Square bracket notation works as expected -- it
  17159. * returns a single octet.
  17160. *
  17161. * The `Uint8Array` prototype remains unmodified.
  17162. */
  17163. function Buffer (arg, encodingOrOffset, length) {
  17164. if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
  17165. return new Buffer(arg, encodingOrOffset, length)
  17166. }
  17167. // Common case.
  17168. if (typeof arg === 'number') {
  17169. if (typeof encodingOrOffset === 'string') {
  17170. throw new Error(
  17171. 'If encoding is specified then the first argument must be a string'
  17172. )
  17173. }
  17174. return allocUnsafe(this, arg)
  17175. }
  17176. return from(this, arg, encodingOrOffset, length)
  17177. }
  17178. Buffer.poolSize = 8192 // not used by this implementation
  17179. // TODO: Legacy, not needed anymore. Remove in next major version.
  17180. Buffer._augment = function (arr) {
  17181. arr.__proto__ = Buffer.prototype
  17182. return arr
  17183. }
  17184. function from (that, value, encodingOrOffset, length) {
  17185. if (typeof value === 'number') {
  17186. throw new TypeError('"value" argument must not be a number')
  17187. }
  17188. if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
  17189. return fromArrayBuffer(that, value, encodingOrOffset, length)
  17190. }
  17191. if (typeof value === 'string') {
  17192. return fromString(that, value, encodingOrOffset)
  17193. }
  17194. return fromObject(that, value)
  17195. }
  17196. /**
  17197. * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
  17198. * if value is a number.
  17199. * Buffer.from(str[, encoding])
  17200. * Buffer.from(array)
  17201. * Buffer.from(buffer)
  17202. * Buffer.from(arrayBuffer[, byteOffset[, length]])
  17203. **/
  17204. Buffer.from = function (value, encodingOrOffset, length) {
  17205. return from(null, value, encodingOrOffset, length)
  17206. }
  17207. if (Buffer.TYPED_ARRAY_SUPPORT) {
  17208. Buffer.prototype.__proto__ = Uint8Array.prototype
  17209. Buffer.__proto__ = Uint8Array
  17210. if (typeof Symbol !== 'undefined' && Symbol.species &&
  17211. Buffer[Symbol.species] === Buffer) {
  17212. // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
  17213. Object.defineProperty(Buffer, Symbol.species, {
  17214. value: null,
  17215. configurable: true
  17216. })
  17217. }
  17218. }
  17219. function assertSize (size) {
  17220. if (typeof size !== 'number') {
  17221. throw new TypeError('"size" argument must be a number')
  17222. } else if (size < 0) {
  17223. throw new RangeError('"size" argument must not be negative')
  17224. }
  17225. }
  17226. function alloc (that, size, fill, encoding) {
  17227. assertSize(size)
  17228. if (size <= 0) {
  17229. return createBuffer(that, size)
  17230. }
  17231. if (fill !== undefined) {
  17232. // Only pay attention to encoding if it's a string. This
  17233. // prevents accidentally sending in a number that would
  17234. // be interpretted as a start offset.
  17235. return typeof encoding === 'string'
  17236. ? createBuffer(that, size).fill(fill, encoding)
  17237. : createBuffer(that, size).fill(fill)
  17238. }
  17239. return createBuffer(that, size)
  17240. }
  17241. /**
  17242. * Creates a new filled Buffer instance.
  17243. * alloc(size[, fill[, encoding]])
  17244. **/
  17245. Buffer.alloc = function (size, fill, encoding) {
  17246. return alloc(null, size, fill, encoding)
  17247. }
  17248. function allocUnsafe (that, size) {
  17249. assertSize(size)
  17250. that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
  17251. if (!Buffer.TYPED_ARRAY_SUPPORT) {
  17252. for (var i = 0; i < size; ++i) {
  17253. that[i] = 0
  17254. }
  17255. }
  17256. return that
  17257. }
  17258. /**
  17259. * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
  17260. * */
  17261. Buffer.allocUnsafe = function (size) {
  17262. return allocUnsafe(null, size)
  17263. }
  17264. /**
  17265. * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
  17266. */
  17267. Buffer.allocUnsafeSlow = function (size) {
  17268. return allocUnsafe(null, size)
  17269. }
  17270. function fromString (that, string, encoding) {
  17271. if (typeof encoding !== 'string' || encoding === '') {
  17272. encoding = 'utf8'
  17273. }
  17274. if (!Buffer.isEncoding(encoding)) {
  17275. throw new TypeError('"encoding" must be a valid string encoding')
  17276. }
  17277. var length = byteLength(string, encoding) | 0
  17278. that = createBuffer(that, length)
  17279. var actual = that.write(string, encoding)
  17280. if (actual !== length) {
  17281. // Writing a hex string, for example, that contains invalid characters will
  17282. // cause everything after the first invalid character to be ignored. (e.g.
  17283. // 'abxxcd' will be treated as 'ab')
  17284. that = that.slice(0, actual)
  17285. }
  17286. return that
  17287. }
  17288. function fromArrayLike (that, array) {
  17289. var length = array.length < 0 ? 0 : checked(array.length) | 0
  17290. that = createBuffer(that, length)
  17291. for (var i = 0; i < length; i += 1) {
  17292. that[i] = array[i] & 255
  17293. }
  17294. return that
  17295. }
  17296. function fromArrayBuffer (that, array, byteOffset, length) {
  17297. array.byteLength // this throws if `array` is not a valid ArrayBuffer
  17298. if (byteOffset < 0 || array.byteLength < byteOffset) {
  17299. throw new RangeError('\'offset\' is out of bounds')
  17300. }
  17301. if (array.byteLength < byteOffset + (length || 0)) {
  17302. throw new RangeError('\'length\' is out of bounds')
  17303. }
  17304. if (byteOffset === undefined && length === undefined) {
  17305. array = new Uint8Array(array)
  17306. } else if (length === undefined) {
  17307. array = new Uint8Array(array, byteOffset)
  17308. } else {
  17309. array = new Uint8Array(array, byteOffset, length)
  17310. }
  17311. if (Buffer.TYPED_ARRAY_SUPPORT) {
  17312. // Return an augmented `Uint8Array` instance, for best performance
  17313. that = array
  17314. that.__proto__ = Buffer.prototype
  17315. } else {
  17316. // Fallback: Return an object instance of the Buffer class
  17317. that = fromArrayLike(that, array)
  17318. }
  17319. return that
  17320. }
  17321. function fromObject (that, obj) {
  17322. if (Buffer.isBuffer(obj)) {
  17323. var len = checked(obj.length) | 0
  17324. that = createBuffer(that, len)
  17325. if (that.length === 0) {
  17326. return that
  17327. }
  17328. obj.copy(that, 0, 0, len)
  17329. return that
  17330. }
  17331. if (obj) {
  17332. if ((typeof ArrayBuffer !== 'undefined' &&
  17333. obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
  17334. if (typeof obj.length !== 'number' || isnan(obj.length)) {
  17335. return createBuffer(that, 0)
  17336. }
  17337. return fromArrayLike(that, obj)
  17338. }
  17339. if (obj.type === 'Buffer' && isArray(obj.data)) {
  17340. return fromArrayLike(that, obj.data)
  17341. }
  17342. }
  17343. throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
  17344. }
  17345. function checked (length) {
  17346. // Note: cannot use `length < kMaxLength()` here because that fails when
  17347. // length is NaN (which is otherwise coerced to zero.)
  17348. if (length >= kMaxLength()) {
  17349. throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
  17350. 'size: 0x' + kMaxLength().toString(16) + ' bytes')
  17351. }
  17352. return length | 0
  17353. }
  17354. function SlowBuffer (length) {
  17355. if (+length != length) { // eslint-disable-line eqeqeq
  17356. length = 0
  17357. }
  17358. return Buffer.alloc(+length)
  17359. }
  17360. Buffer.isBuffer = function isBuffer (b) {
  17361. return !!(b != null && b._isBuffer)
  17362. }
  17363. Buffer.compare = function compare (a, b) {
  17364. if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
  17365. throw new TypeError('Arguments must be Buffers')
  17366. }
  17367. if (a === b) return 0
  17368. var x = a.length
  17369. var y = b.length
  17370. for (var i = 0, len = Math.min(x, y); i < len; ++i) {
  17371. if (a[i] !== b[i]) {
  17372. x = a[i]
  17373. y = b[i]
  17374. break
  17375. }
  17376. }
  17377. if (x < y) return -1
  17378. if (y < x) return 1
  17379. return 0
  17380. }
  17381. Buffer.isEncoding = function isEncoding (encoding) {
  17382. switch (String(encoding).toLowerCase()) {
  17383. case 'hex':
  17384. case 'utf8':
  17385. case 'utf-8':
  17386. case 'ascii':
  17387. case 'latin1':
  17388. case 'binary':
  17389. case 'base64':
  17390. case 'ucs2':
  17391. case 'ucs-2':
  17392. case 'utf16le':
  17393. case 'utf-16le':
  17394. return true
  17395. default:
  17396. return false
  17397. }
  17398. }
  17399. Buffer.concat = function concat (list, length) {
  17400. if (!isArray(list)) {
  17401. throw new TypeError('"list" argument must be an Array of Buffers')
  17402. }
  17403. if (list.length === 0) {
  17404. return Buffer.alloc(0)
  17405. }
  17406. var i
  17407. if (length === undefined) {
  17408. length = 0
  17409. for (i = 0; i < list.length; ++i) {
  17410. length += list[i].length
  17411. }
  17412. }
  17413. var buffer = Buffer.allocUnsafe(length)
  17414. var pos = 0
  17415. for (i = 0; i < list.length; ++i) {
  17416. var buf = list[i]
  17417. if (!Buffer.isBuffer(buf)) {
  17418. throw new TypeError('"list" argument must be an Array of Buffers')
  17419. }
  17420. buf.copy(buffer, pos)
  17421. pos += buf.length
  17422. }
  17423. return buffer
  17424. }
  17425. function byteLength (string, encoding) {
  17426. if (Buffer.isBuffer(string)) {
  17427. return string.length
  17428. }
  17429. if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
  17430. (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
  17431. return string.byteLength
  17432. }
  17433. if (typeof string !== 'string') {
  17434. string = '' + string
  17435. }
  17436. var len = string.length
  17437. if (len === 0) return 0
  17438. // Use a for loop to avoid recursion
  17439. var loweredCase = false
  17440. for (;;) {
  17441. switch (encoding) {
  17442. case 'ascii':
  17443. case 'latin1':
  17444. case 'binary':
  17445. return len
  17446. case 'utf8':
  17447. case 'utf-8':
  17448. case undefined:
  17449. return utf8ToBytes(string).length
  17450. case 'ucs2':
  17451. case 'ucs-2':
  17452. case 'utf16le':
  17453. case 'utf-16le':
  17454. return len * 2
  17455. case 'hex':
  17456. return len >>> 1
  17457. case 'base64':
  17458. return base64ToBytes(string).length
  17459. default:
  17460. if (loweredCase) return utf8ToBytes(string).length // assume utf8
  17461. encoding = ('' + encoding).toLowerCase()
  17462. loweredCase = true
  17463. }
  17464. }
  17465. }
  17466. Buffer.byteLength = byteLength
  17467. function slowToString (encoding, start, end) {
  17468. var loweredCase = false
  17469. // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
  17470. // property of a typed array.
  17471. // This behaves neither like String nor Uint8Array in that we set start/end
  17472. // to their upper/lower bounds if the value passed is out of range.
  17473. // undefined is handled specially as per ECMA-262 6th Edition,
  17474. // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
  17475. if (start === undefined || start < 0) {
  17476. start = 0
  17477. }
  17478. // Return early if start > this.length. Done here to prevent potential uint32
  17479. // coercion fail below.
  17480. if (start > this.length) {
  17481. return ''
  17482. }
  17483. if (end === undefined || end > this.length) {
  17484. end = this.length
  17485. }
  17486. if (end <= 0) {
  17487. return ''
  17488. }
  17489. // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
  17490. end >>>= 0
  17491. start >>>= 0
  17492. if (end <= start) {
  17493. return ''
  17494. }
  17495. if (!encoding) encoding = 'utf8'
  17496. while (true) {
  17497. switch (encoding) {
  17498. case 'hex':
  17499. return hexSlice(this, start, end)
  17500. case 'utf8':
  17501. case 'utf-8':
  17502. return utf8Slice(this, start, end)
  17503. case 'ascii':
  17504. return asciiSlice(this, start, end)
  17505. case 'latin1':
  17506. case 'binary':
  17507. return latin1Slice(this, start, end)
  17508. case 'base64':
  17509. return base64Slice(this, start, end)
  17510. case 'ucs2':
  17511. case 'ucs-2':
  17512. case 'utf16le':
  17513. case 'utf-16le':
  17514. return utf16leSlice(this, start, end)
  17515. default:
  17516. if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
  17517. encoding = (encoding + '').toLowerCase()
  17518. loweredCase = true
  17519. }
  17520. }
  17521. }
  17522. // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
  17523. // Buffer instances.
  17524. Buffer.prototype._isBuffer = true
  17525. function swap (b, n, m) {
  17526. var i = b[n]
  17527. b[n] = b[m]
  17528. b[m] = i
  17529. }
  17530. Buffer.prototype.swap16 = function swap16 () {
  17531. var len = this.length
  17532. if (len % 2 !== 0) {
  17533. throw new RangeError('Buffer size must be a multiple of 16-bits')
  17534. }
  17535. for (var i = 0; i < len; i += 2) {
  17536. swap(this, i, i + 1)
  17537. }
  17538. return this
  17539. }
  17540. Buffer.prototype.swap32 = function swap32 () {
  17541. var len = this.length
  17542. if (len % 4 !== 0) {
  17543. throw new RangeError('Buffer size must be a multiple of 32-bits')
  17544. }
  17545. for (var i = 0; i < len; i += 4) {
  17546. swap(this, i, i + 3)
  17547. swap(this, i + 1, i + 2)
  17548. }
  17549. return this
  17550. }
  17551. Buffer.prototype.swap64 = function swap64 () {
  17552. var len = this.length
  17553. if (len % 8 !== 0) {
  17554. throw new RangeError('Buffer size must be a multiple of 64-bits')
  17555. }
  17556. for (var i = 0; i < len; i += 8) {
  17557. swap(this, i, i + 7)
  17558. swap(this, i + 1, i + 6)
  17559. swap(this, i + 2, i + 5)
  17560. swap(this, i + 3, i + 4)
  17561. }
  17562. return this
  17563. }
  17564. Buffer.prototype.toString = function toString () {
  17565. var length = this.length | 0
  17566. if (length === 0) return ''
  17567. if (arguments.length === 0) return utf8Slice(this, 0, length)
  17568. return slowToString.apply(this, arguments)
  17569. }
  17570. Buffer.prototype.equals = function equals (b) {
  17571. if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
  17572. if (this === b) return true
  17573. return Buffer.compare(this, b) === 0
  17574. }
  17575. Buffer.prototype.inspect = function inspect () {
  17576. var str = ''
  17577. var max = exports.INSPECT_MAX_BYTES
  17578. if (this.length > 0) {
  17579. str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
  17580. if (this.length > max) str += ' ... '
  17581. }
  17582. return '<Buffer ' + str + '>'
  17583. }
  17584. Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
  17585. if (!Buffer.isBuffer(target)) {
  17586. throw new TypeError('Argument must be a Buffer')
  17587. }
  17588. if (start === undefined) {
  17589. start = 0
  17590. }
  17591. if (end === undefined) {
  17592. end = target ? target.length : 0
  17593. }
  17594. if (thisStart === undefined) {
  17595. thisStart = 0
  17596. }
  17597. if (thisEnd === undefined) {
  17598. thisEnd = this.length
  17599. }
  17600. if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
  17601. throw new RangeError('out of range index')
  17602. }
  17603. if (thisStart >= thisEnd && start >= end) {
  17604. return 0
  17605. }
  17606. if (thisStart >= thisEnd) {
  17607. return -1
  17608. }
  17609. if (start >= end) {
  17610. return 1
  17611. }
  17612. start >>>= 0
  17613. end >>>= 0
  17614. thisStart >>>= 0
  17615. thisEnd >>>= 0
  17616. if (this === target) return 0
  17617. var x = thisEnd - thisStart
  17618. var y = end - start
  17619. var len = Math.min(x, y)
  17620. var thisCopy = this.slice(thisStart, thisEnd)
  17621. var targetCopy = target.slice(start, end)
  17622. for (var i = 0; i < len; ++i) {
  17623. if (thisCopy[i] !== targetCopy[i]) {
  17624. x = thisCopy[i]
  17625. y = targetCopy[i]
  17626. break
  17627. }
  17628. }
  17629. if (x < y) return -1
  17630. if (y < x) return 1
  17631. return 0
  17632. }
  17633. // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
  17634. // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
  17635. //
  17636. // Arguments:
  17637. // - buffer - a Buffer to search
  17638. // - val - a string, Buffer, or number
  17639. // - byteOffset - an index into `buffer`; will be clamped to an int32
  17640. // - encoding - an optional encoding, relevant is val is a string
  17641. // - dir - true for indexOf, false for lastIndexOf
  17642. function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
  17643. // Empty buffer means no match
  17644. if (buffer.length === 0) return -1
  17645. // Normalize byteOffset
  17646. if (typeof byteOffset === 'string') {
  17647. encoding = byteOffset
  17648. byteOffset = 0
  17649. } else if (byteOffset > 0x7fffffff) {
  17650. byteOffset = 0x7fffffff
  17651. } else if (byteOffset < -0x80000000) {
  17652. byteOffset = -0x80000000
  17653. }
  17654. byteOffset = +byteOffset // Coerce to Number.
  17655. if (isNaN(byteOffset)) {
  17656. // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
  17657. byteOffset = dir ? 0 : (buffer.length - 1)
  17658. }
  17659. // Normalize byteOffset: negative offsets start from the end of the buffer
  17660. if (byteOffset < 0) byteOffset = buffer.length + byteOffset
  17661. if (byteOffset >= buffer.length) {
  17662. if (dir) return -1
  17663. else byteOffset = buffer.length - 1
  17664. } else if (byteOffset < 0) {
  17665. if (dir) byteOffset = 0
  17666. else return -1
  17667. }
  17668. // Normalize val
  17669. if (typeof val === 'string') {
  17670. val = Buffer.from(val, encoding)
  17671. }
  17672. // Finally, search either indexOf (if dir is true) or lastIndexOf
  17673. if (Buffer.isBuffer(val)) {
  17674. // Special case: looking for empty string/buffer always fails
  17675. if (val.length === 0) {
  17676. return -1
  17677. }
  17678. return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
  17679. } else if (typeof val === 'number') {
  17680. val = val & 0xFF // Search for a byte value [0-255]
  17681. if (Buffer.TYPED_ARRAY_SUPPORT &&
  17682. typeof Uint8Array.prototype.indexOf === 'function') {
  17683. if (dir) {
  17684. return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
  17685. } else {
  17686. return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
  17687. }
  17688. }
  17689. return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
  17690. }
  17691. throw new TypeError('val must be string, number or Buffer')
  17692. }
  17693. function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
  17694. var indexSize = 1
  17695. var arrLength = arr.length
  17696. var valLength = val.length
  17697. if (encoding !== undefined) {
  17698. encoding = String(encoding).toLowerCase()
  17699. if (encoding === 'ucs2' || encoding === 'ucs-2' ||
  17700. encoding === 'utf16le' || encoding === 'utf-16le') {
  17701. if (arr.length < 2 || val.length < 2) {
  17702. return -1
  17703. }
  17704. indexSize = 2
  17705. arrLength /= 2
  17706. valLength /= 2
  17707. byteOffset /= 2
  17708. }
  17709. }
  17710. function read (buf, i) {
  17711. if (indexSize === 1) {
  17712. return buf[i]
  17713. } else {
  17714. return buf.readUInt16BE(i * indexSize)
  17715. }
  17716. }
  17717. var i
  17718. if (dir) {
  17719. var foundIndex = -1
  17720. for (i = byteOffset; i < arrLength; i++) {
  17721. if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
  17722. if (foundIndex === -1) foundIndex = i
  17723. if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
  17724. } else {
  17725. if (foundIndex !== -1) i -= i - foundIndex
  17726. foundIndex = -1
  17727. }
  17728. }
  17729. } else {
  17730. if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
  17731. for (i = byteOffset; i >= 0; i--) {
  17732. var found = true
  17733. for (var j = 0; j < valLength; j++) {
  17734. if (read(arr, i + j) !== read(val, j)) {
  17735. found = false
  17736. break
  17737. }
  17738. }
  17739. if (found) return i
  17740. }
  17741. }
  17742. return -1
  17743. }
  17744. Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
  17745. return this.indexOf(val, byteOffset, encoding) !== -1
  17746. }
  17747. Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
  17748. return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
  17749. }
  17750. Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
  17751. return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
  17752. }
  17753. function hexWrite (buf, string, offset, length) {
  17754. offset = Number(offset) || 0
  17755. var remaining = buf.length - offset
  17756. if (!length) {
  17757. length = remaining
  17758. } else {
  17759. length = Number(length)
  17760. if (length > remaining) {
  17761. length = remaining
  17762. }
  17763. }
  17764. // must be an even number of digits
  17765. var strLen = string.length
  17766. if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
  17767. if (length > strLen / 2) {
  17768. length = strLen / 2
  17769. }
  17770. for (var i = 0; i < length; ++i) {
  17771. var parsed = parseInt(string.substr(i * 2, 2), 16)
  17772. if (isNaN(parsed)) return i
  17773. buf[offset + i] = parsed
  17774. }
  17775. return i
  17776. }
  17777. function utf8Write (buf, string, offset, length) {
  17778. return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
  17779. }
  17780. function asciiWrite (buf, string, offset, length) {
  17781. return blitBuffer(asciiToBytes(string), buf, offset, length)
  17782. }
  17783. function latin1Write (buf, string, offset, length) {
  17784. return asciiWrite(buf, string, offset, length)
  17785. }
  17786. function base64Write (buf, string, offset, length) {
  17787. return blitBuffer(base64ToBytes(string), buf, offset, length)
  17788. }
  17789. function ucs2Write (buf, string, offset, length) {
  17790. return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
  17791. }
  17792. Buffer.prototype.write = function write (string, offset, length, encoding) {
  17793. // Buffer#write(string)
  17794. if (offset === undefined) {
  17795. encoding = 'utf8'
  17796. length = this.length
  17797. offset = 0
  17798. // Buffer#write(string, encoding)
  17799. } else if (length === undefined && typeof offset === 'string') {
  17800. encoding = offset
  17801. length = this.length
  17802. offset = 0
  17803. // Buffer#write(string, offset[, length][, encoding])
  17804. } else if (isFinite(offset)) {
  17805. offset = offset | 0
  17806. if (isFinite(length)) {
  17807. length = length | 0
  17808. if (encoding === undefined) encoding = 'utf8'
  17809. } else {
  17810. encoding = length
  17811. length = undefined
  17812. }
  17813. // legacy write(string, encoding, offset, length) - remove in v0.13
  17814. } else {
  17815. throw new Error(
  17816. 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
  17817. )
  17818. }
  17819. var remaining = this.length - offset
  17820. if (length === undefined || length > remaining) length = remaining
  17821. if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
  17822. throw new RangeError('Attempt to write outside buffer bounds')
  17823. }
  17824. if (!encoding) encoding = 'utf8'
  17825. var loweredCase = false
  17826. for (;;) {
  17827. switch (encoding) {
  17828. case 'hex':
  17829. return hexWrite(this, string, offset, length)
  17830. case 'utf8':
  17831. case 'utf-8':
  17832. return utf8Write(this, string, offset, length)
  17833. case 'ascii':
  17834. return asciiWrite(this, string, offset, length)
  17835. case 'latin1':
  17836. case 'binary':
  17837. return latin1Write(this, string, offset, length)
  17838. case 'base64':
  17839. // Warning: maxLength not taken into account in base64Write
  17840. return base64Write(this, string, offset, length)
  17841. case 'ucs2':
  17842. case 'ucs-2':
  17843. case 'utf16le':
  17844. case 'utf-16le':
  17845. return ucs2Write(this, string, offset, length)
  17846. default:
  17847. if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
  17848. encoding = ('' + encoding).toLowerCase()
  17849. loweredCase = true
  17850. }
  17851. }
  17852. }
  17853. Buffer.prototype.toJSON = function toJSON () {
  17854. return {
  17855. type: 'Buffer',
  17856. data: Array.prototype.slice.call(this._arr || this, 0)
  17857. }
  17858. }
  17859. function base64Slice (buf, start, end) {
  17860. if (start === 0 && end === buf.length) {
  17861. return base64.fromByteArray(buf)
  17862. } else {
  17863. return base64.fromByteArray(buf.slice(start, end))
  17864. }
  17865. }
  17866. function utf8Slice (buf, start, end) {
  17867. end = Math.min(buf.length, end)
  17868. var res = []
  17869. var i = start
  17870. while (i < end) {
  17871. var firstByte = buf[i]
  17872. var codePoint = null
  17873. var bytesPerSequence = (firstByte > 0xEF) ? 4
  17874. : (firstByte > 0xDF) ? 3
  17875. : (firstByte > 0xBF) ? 2
  17876. : 1
  17877. if (i + bytesPerSequence <= end) {
  17878. var secondByte, thirdByte, fourthByte, tempCodePoint
  17879. switch (bytesPerSequence) {
  17880. case 1:
  17881. if (firstByte < 0x80) {
  17882. codePoint = firstByte
  17883. }
  17884. break
  17885. case 2:
  17886. secondByte = buf[i + 1]
  17887. if ((secondByte & 0xC0) === 0x80) {
  17888. tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
  17889. if (tempCodePoint > 0x7F) {
  17890. codePoint = tempCodePoint
  17891. }
  17892. }
  17893. break
  17894. case 3:
  17895. secondByte = buf[i + 1]
  17896. thirdByte = buf[i + 2]
  17897. if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
  17898. tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
  17899. if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
  17900. codePoint = tempCodePoint
  17901. }
  17902. }
  17903. break
  17904. case 4:
  17905. secondByte = buf[i + 1]
  17906. thirdByte = buf[i + 2]
  17907. fourthByte = buf[i + 3]
  17908. if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
  17909. tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
  17910. if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
  17911. codePoint = tempCodePoint
  17912. }
  17913. }
  17914. }
  17915. }
  17916. if (codePoint === null) {
  17917. // we did not generate a valid codePoint so insert a
  17918. // replacement char (U+FFFD) and advance only 1 byte
  17919. codePoint = 0xFFFD
  17920. bytesPerSequence = 1
  17921. } else if (codePoint > 0xFFFF) {
  17922. // encode to utf16 (surrogate pair dance)
  17923. codePoint -= 0x10000
  17924. res.push(codePoint >>> 10 & 0x3FF | 0xD800)
  17925. codePoint = 0xDC00 | codePoint & 0x3FF
  17926. }
  17927. res.push(codePoint)
  17928. i += bytesPerSequence
  17929. }
  17930. return decodeCodePointsArray(res)
  17931. }
  17932. // Based on http://stackoverflow.com/a/22747272/680742, the browser with
  17933. // the lowest limit is Chrome, with 0x10000 args.
  17934. // We go 1 magnitude less, for safety
  17935. var MAX_ARGUMENTS_LENGTH = 0x1000
  17936. function decodeCodePointsArray (codePoints) {
  17937. var len = codePoints.length
  17938. if (len <= MAX_ARGUMENTS_LENGTH) {
  17939. return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
  17940. }
  17941. // Decode in chunks to avoid "call stack size exceeded".
  17942. var res = ''
  17943. var i = 0
  17944. while (i < len) {
  17945. res += String.fromCharCode.apply(
  17946. String,
  17947. codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
  17948. )
  17949. }
  17950. return res
  17951. }
  17952. function asciiSlice (buf, start, end) {
  17953. var ret = ''
  17954. end = Math.min(buf.length, end)
  17955. for (var i = start; i < end; ++i) {
  17956. ret += String.fromCharCode(buf[i] & 0x7F)
  17957. }
  17958. return ret
  17959. }
  17960. function latin1Slice (buf, start, end) {
  17961. var ret = ''
  17962. end = Math.min(buf.length, end)
  17963. for (var i = start; i < end; ++i) {
  17964. ret += String.fromCharCode(buf[i])
  17965. }
  17966. return ret
  17967. }
  17968. function hexSlice (buf, start, end) {
  17969. var len = buf.length
  17970. if (!start || start < 0) start = 0
  17971. if (!end || end < 0 || end > len) end = len
  17972. var out = ''
  17973. for (var i = start; i < end; ++i) {
  17974. out += toHex(buf[i])
  17975. }
  17976. return out
  17977. }
  17978. function utf16leSlice (buf, start, end) {
  17979. var bytes = buf.slice(start, end)
  17980. var res = ''
  17981. for (var i = 0; i < bytes.length; i += 2) {
  17982. res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
  17983. }
  17984. return res
  17985. }
  17986. Buffer.prototype.slice = function slice (start, end) {
  17987. var len = this.length
  17988. start = ~~start
  17989. end = end === undefined ? len : ~~end
  17990. if (start < 0) {
  17991. start += len
  17992. if (start < 0) start = 0
  17993. } else if (start > len) {
  17994. start = len
  17995. }
  17996. if (end < 0) {
  17997. end += len
  17998. if (end < 0) end = 0
  17999. } else if (end > len) {
  18000. end = len
  18001. }
  18002. if (end < start) end = start
  18003. var newBuf
  18004. if (Buffer.TYPED_ARRAY_SUPPORT) {
  18005. newBuf = this.subarray(start, end)
  18006. newBuf.__proto__ = Buffer.prototype
  18007. } else {
  18008. var sliceLen = end - start
  18009. newBuf = new Buffer(sliceLen, undefined)
  18010. for (var i = 0; i < sliceLen; ++i) {
  18011. newBuf[i] = this[i + start]
  18012. }
  18013. }
  18014. return newBuf
  18015. }
  18016. /*
  18017. * Need to make sure that buffer isn't trying to write out of bounds.
  18018. */
  18019. function checkOffset (offset, ext, length) {
  18020. if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
  18021. if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
  18022. }
  18023. Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
  18024. offset = offset | 0
  18025. byteLength = byteLength | 0
  18026. if (!noAssert) checkOffset(offset, byteLength, this.length)
  18027. var val = this[offset]
  18028. var mul = 1
  18029. var i = 0
  18030. while (++i < byteLength && (mul *= 0x100)) {
  18031. val += this[offset + i] * mul
  18032. }
  18033. return val
  18034. }
  18035. Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
  18036. offset = offset | 0
  18037. byteLength = byteLength | 0
  18038. if (!noAssert) {
  18039. checkOffset(offset, byteLength, this.length)
  18040. }
  18041. var val = this[offset + --byteLength]
  18042. var mul = 1
  18043. while (byteLength > 0 && (mul *= 0x100)) {
  18044. val += this[offset + --byteLength] * mul
  18045. }
  18046. return val
  18047. }
  18048. Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
  18049. if (!noAssert) checkOffset(offset, 1, this.length)
  18050. return this[offset]
  18051. }
  18052. Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
  18053. if (!noAssert) checkOffset(offset, 2, this.length)
  18054. return this[offset] | (this[offset + 1] << 8)
  18055. }
  18056. Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
  18057. if (!noAssert) checkOffset(offset, 2, this.length)
  18058. return (this[offset] << 8) | this[offset + 1]
  18059. }
  18060. Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
  18061. if (!noAssert) checkOffset(offset, 4, this.length)
  18062. return ((this[offset]) |
  18063. (this[offset + 1] << 8) |
  18064. (this[offset + 2] << 16)) +
  18065. (this[offset + 3] * 0x1000000)
  18066. }
  18067. Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
  18068. if (!noAssert) checkOffset(offset, 4, this.length)
  18069. return (this[offset] * 0x1000000) +
  18070. ((this[offset + 1] << 16) |
  18071. (this[offset + 2] << 8) |
  18072. this[offset + 3])
  18073. }
  18074. Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
  18075. offset = offset | 0
  18076. byteLength = byteLength | 0
  18077. if (!noAssert) checkOffset(offset, byteLength, this.length)
  18078. var val = this[offset]
  18079. var mul = 1
  18080. var i = 0
  18081. while (++i < byteLength && (mul *= 0x100)) {
  18082. val += this[offset + i] * mul
  18083. }
  18084. mul *= 0x80
  18085. if (val >= mul) val -= Math.pow(2, 8 * byteLength)
  18086. return val
  18087. }
  18088. Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
  18089. offset = offset | 0
  18090. byteLength = byteLength | 0
  18091. if (!noAssert) checkOffset(offset, byteLength, this.length)
  18092. var i = byteLength
  18093. var mul = 1
  18094. var val = this[offset + --i]
  18095. while (i > 0 && (mul *= 0x100)) {
  18096. val += this[offset + --i] * mul
  18097. }
  18098. mul *= 0x80
  18099. if (val >= mul) val -= Math.pow(2, 8 * byteLength)
  18100. return val
  18101. }
  18102. Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
  18103. if (!noAssert) checkOffset(offset, 1, this.length)
  18104. if (!(this[offset] & 0x80)) return (this[offset])
  18105. return ((0xff - this[offset] + 1) * -1)
  18106. }
  18107. Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
  18108. if (!noAssert) checkOffset(offset, 2, this.length)
  18109. var val = this[offset] | (this[offset + 1] << 8)
  18110. return (val & 0x8000) ? val | 0xFFFF0000 : val
  18111. }
  18112. Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
  18113. if (!noAssert) checkOffset(offset, 2, this.length)
  18114. var val = this[offset + 1] | (this[offset] << 8)
  18115. return (val & 0x8000) ? val | 0xFFFF0000 : val
  18116. }
  18117. Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
  18118. if (!noAssert) checkOffset(offset, 4, this.length)
  18119. return (this[offset]) |
  18120. (this[offset + 1] << 8) |
  18121. (this[offset + 2] << 16) |
  18122. (this[offset + 3] << 24)
  18123. }
  18124. Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
  18125. if (!noAssert) checkOffset(offset, 4, this.length)
  18126. return (this[offset] << 24) |
  18127. (this[offset + 1] << 16) |
  18128. (this[offset + 2] << 8) |
  18129. (this[offset + 3])
  18130. }
  18131. Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
  18132. if (!noAssert) checkOffset(offset, 4, this.length)
  18133. return ieee754.read(this, offset, true, 23, 4)
  18134. }
  18135. Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
  18136. if (!noAssert) checkOffset(offset, 4, this.length)
  18137. return ieee754.read(this, offset, false, 23, 4)
  18138. }
  18139. Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
  18140. if (!noAssert) checkOffset(offset, 8, this.length)
  18141. return ieee754.read(this, offset, true, 52, 8)
  18142. }
  18143. Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
  18144. if (!noAssert) checkOffset(offset, 8, this.length)
  18145. return ieee754.read(this, offset, false, 52, 8)
  18146. }
  18147. function checkInt (buf, value, offset, ext, max, min) {
  18148. if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
  18149. if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
  18150. if (offset + ext > buf.length) throw new RangeError('Index out of range')
  18151. }
  18152. Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
  18153. value = +value
  18154. offset = offset | 0
  18155. byteLength = byteLength | 0
  18156. if (!noAssert) {
  18157. var maxBytes = Math.pow(2, 8 * byteLength) - 1
  18158. checkInt(this, value, offset, byteLength, maxBytes, 0)
  18159. }
  18160. var mul = 1
  18161. var i = 0
  18162. this[offset] = value & 0xFF
  18163. while (++i < byteLength && (mul *= 0x100)) {
  18164. this[offset + i] = (value / mul) & 0xFF
  18165. }
  18166. return offset + byteLength
  18167. }
  18168. Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
  18169. value = +value
  18170. offset = offset | 0
  18171. byteLength = byteLength | 0
  18172. if (!noAssert) {
  18173. var maxBytes = Math.pow(2, 8 * byteLength) - 1
  18174. checkInt(this, value, offset, byteLength, maxBytes, 0)
  18175. }
  18176. var i = byteLength - 1
  18177. var mul = 1
  18178. this[offset + i] = value & 0xFF
  18179. while (--i >= 0 && (mul *= 0x100)) {
  18180. this[offset + i] = (value / mul) & 0xFF
  18181. }
  18182. return offset + byteLength
  18183. }
  18184. Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
  18185. value = +value
  18186. offset = offset | 0
  18187. if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
  18188. if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
  18189. this[offset] = (value & 0xff)
  18190. return offset + 1
  18191. }
  18192. function objectWriteUInt16 (buf, value, offset, littleEndian) {
  18193. if (value < 0) value = 0xffff + value + 1
  18194. for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
  18195. buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
  18196. (littleEndian ? i : 1 - i) * 8
  18197. }
  18198. }
  18199. Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
  18200. value = +value
  18201. offset = offset | 0
  18202. if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
  18203. if (Buffer.TYPED_ARRAY_SUPPORT) {
  18204. this[offset] = (value & 0xff)
  18205. this[offset + 1] = (value >>> 8)
  18206. } else {
  18207. objectWriteUInt16(this, value, offset, true)
  18208. }
  18209. return offset + 2
  18210. }
  18211. Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
  18212. value = +value
  18213. offset = offset | 0
  18214. if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
  18215. if (Buffer.TYPED_ARRAY_SUPPORT) {
  18216. this[offset] = (value >>> 8)
  18217. this[offset + 1] = (value & 0xff)
  18218. } else {
  18219. objectWriteUInt16(this, value, offset, false)
  18220. }
  18221. return offset + 2
  18222. }
  18223. function objectWriteUInt32 (buf, value, offset, littleEndian) {
  18224. if (value < 0) value = 0xffffffff + value + 1
  18225. for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
  18226. buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
  18227. }
  18228. }
  18229. Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
  18230. value = +value
  18231. offset = offset | 0
  18232. if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
  18233. if (Buffer.TYPED_ARRAY_SUPPORT) {
  18234. this[offset + 3] = (value >>> 24)
  18235. this[offset + 2] = (value >>> 16)
  18236. this[offset + 1] = (value >>> 8)
  18237. this[offset] = (value & 0xff)
  18238. } else {
  18239. objectWriteUInt32(this, value, offset, true)
  18240. }
  18241. return offset + 4
  18242. }
  18243. Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
  18244. value = +value
  18245. offset = offset | 0
  18246. if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
  18247. if (Buffer.TYPED_ARRAY_SUPPORT) {
  18248. this[offset] = (value >>> 24)
  18249. this[offset + 1] = (value >>> 16)
  18250. this[offset + 2] = (value >>> 8)
  18251. this[offset + 3] = (value & 0xff)
  18252. } else {
  18253. objectWriteUInt32(this, value, offset, false)
  18254. }
  18255. return offset + 4
  18256. }
  18257. Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
  18258. value = +value
  18259. offset = offset | 0
  18260. if (!noAssert) {
  18261. var limit = Math.pow(2, 8 * byteLength - 1)
  18262. checkInt(this, value, offset, byteLength, limit - 1, -limit)
  18263. }
  18264. var i = 0
  18265. var mul = 1
  18266. var sub = 0
  18267. this[offset] = value & 0xFF
  18268. while (++i < byteLength && (mul *= 0x100)) {
  18269. if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
  18270. sub = 1
  18271. }
  18272. this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
  18273. }
  18274. return offset + byteLength
  18275. }
  18276. Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
  18277. value = +value
  18278. offset = offset | 0
  18279. if (!noAssert) {
  18280. var limit = Math.pow(2, 8 * byteLength - 1)
  18281. checkInt(this, value, offset, byteLength, limit - 1, -limit)
  18282. }
  18283. var i = byteLength - 1
  18284. var mul = 1
  18285. var sub = 0
  18286. this[offset + i] = value & 0xFF
  18287. while (--i >= 0 && (mul *= 0x100)) {
  18288. if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
  18289. sub = 1
  18290. }
  18291. this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
  18292. }
  18293. return offset + byteLength
  18294. }
  18295. Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
  18296. value = +value
  18297. offset = offset | 0
  18298. if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
  18299. if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
  18300. if (value < 0) value = 0xff + value + 1
  18301. this[offset] = (value & 0xff)
  18302. return offset + 1
  18303. }
  18304. Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
  18305. value = +value
  18306. offset = offset | 0
  18307. if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
  18308. if (Buffer.TYPED_ARRAY_SUPPORT) {
  18309. this[offset] = (value & 0xff)
  18310. this[offset + 1] = (value >>> 8)
  18311. } else {
  18312. objectWriteUInt16(this, value, offset, true)
  18313. }
  18314. return offset + 2
  18315. }
  18316. Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
  18317. value = +value
  18318. offset = offset | 0
  18319. if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
  18320. if (Buffer.TYPED_ARRAY_SUPPORT) {
  18321. this[offset] = (value >>> 8)
  18322. this[offset + 1] = (value & 0xff)
  18323. } else {
  18324. objectWriteUInt16(this, value, offset, false)
  18325. }
  18326. return offset + 2
  18327. }
  18328. Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
  18329. value = +value
  18330. offset = offset | 0
  18331. if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
  18332. if (Buffer.TYPED_ARRAY_SUPPORT) {
  18333. this[offset] = (value & 0xff)
  18334. this[offset + 1] = (value >>> 8)
  18335. this[offset + 2] = (value >>> 16)
  18336. this[offset + 3] = (value >>> 24)
  18337. } else {
  18338. objectWriteUInt32(this, value, offset, true)
  18339. }
  18340. return offset + 4
  18341. }
  18342. Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
  18343. value = +value
  18344. offset = offset | 0
  18345. if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
  18346. if (value < 0) value = 0xffffffff + value + 1
  18347. if (Buffer.TYPED_ARRAY_SUPPORT) {
  18348. this[offset] = (value >>> 24)
  18349. this[offset + 1] = (value >>> 16)
  18350. this[offset + 2] = (value >>> 8)
  18351. this[offset + 3] = (value & 0xff)
  18352. } else {
  18353. objectWriteUInt32(this, value, offset, false)
  18354. }
  18355. return offset + 4
  18356. }
  18357. function checkIEEE754 (buf, value, offset, ext, max, min) {
  18358. if (offset + ext > buf.length) throw new RangeError('Index out of range')
  18359. if (offset < 0) throw new RangeError('Index out of range')
  18360. }
  18361. function writeFloat (buf, value, offset, littleEndian, noAssert) {
  18362. if (!noAssert) {
  18363. checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
  18364. }
  18365. ieee754.write(buf, value, offset, littleEndian, 23, 4)
  18366. return offset + 4
  18367. }
  18368. Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
  18369. return writeFloat(this, value, offset, true, noAssert)
  18370. }
  18371. Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
  18372. return writeFloat(this, value, offset, false, noAssert)
  18373. }
  18374. function writeDouble (buf, value, offset, littleEndian, noAssert) {
  18375. if (!noAssert) {
  18376. checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
  18377. }
  18378. ieee754.write(buf, value, offset, littleEndian, 52, 8)
  18379. return offset + 8
  18380. }
  18381. Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
  18382. return writeDouble(this, value, offset, true, noAssert)
  18383. }
  18384. Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
  18385. return writeDouble(this, value, offset, false, noAssert)
  18386. }
  18387. // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
  18388. Buffer.prototype.copy = function copy (target, targetStart, start, end) {
  18389. if (!start) start = 0
  18390. if (!end && end !== 0) end = this.length
  18391. if (targetStart >= target.length) targetStart = target.length
  18392. if (!targetStart) targetStart = 0
  18393. if (end > 0 && end < start) end = start
  18394. // Copy 0 bytes; we're done
  18395. if (end === start) return 0
  18396. if (target.length === 0 || this.length === 0) return 0
  18397. // Fatal error conditions
  18398. if (targetStart < 0) {
  18399. throw new RangeError('targetStart out of bounds')
  18400. }
  18401. if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
  18402. if (end < 0) throw new RangeError('sourceEnd out of bounds')
  18403. // Are we oob?
  18404. if (end > this.length) end = this.length
  18405. if (target.length - targetStart < end - start) {
  18406. end = target.length - targetStart + start
  18407. }
  18408. var len = end - start
  18409. var i
  18410. if (this === target && start < targetStart && targetStart < end) {
  18411. // descending copy from end
  18412. for (i = len - 1; i >= 0; --i) {
  18413. target[i + targetStart] = this[i + start]
  18414. }
  18415. } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
  18416. // ascending copy from start
  18417. for (i = 0; i < len; ++i) {
  18418. target[i + targetStart] = this[i + start]
  18419. }
  18420. } else {
  18421. Uint8Array.prototype.set.call(
  18422. target,
  18423. this.subarray(start, start + len),
  18424. targetStart
  18425. )
  18426. }
  18427. return len
  18428. }
  18429. // Usage:
  18430. // buffer.fill(number[, offset[, end]])
  18431. // buffer.fill(buffer[, offset[, end]])
  18432. // buffer.fill(string[, offset[, end]][, encoding])
  18433. Buffer.prototype.fill = function fill (val, start, end, encoding) {
  18434. // Handle string cases:
  18435. if (typeof val === 'string') {
  18436. if (typeof start === 'string') {
  18437. encoding = start
  18438. start = 0
  18439. end = this.length
  18440. } else if (typeof end === 'string') {
  18441. encoding = end
  18442. end = this.length
  18443. }
  18444. if (val.length === 1) {
  18445. var code = val.charCodeAt(0)
  18446. if (code < 256) {
  18447. val = code
  18448. }
  18449. }
  18450. if (encoding !== undefined && typeof encoding !== 'string') {
  18451. throw new TypeError('encoding must be a string')
  18452. }
  18453. if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
  18454. throw new TypeError('Unknown encoding: ' + encoding)
  18455. }
  18456. } else if (typeof val === 'number') {
  18457. val = val & 255
  18458. }
  18459. // Invalid ranges are not set to a default, so can range check early.
  18460. if (start < 0 || this.length < start || this.length < end) {
  18461. throw new RangeError('Out of range index')
  18462. }
  18463. if (end <= start) {
  18464. return this
  18465. }
  18466. start = start >>> 0
  18467. end = end === undefined ? this.length : end >>> 0
  18468. if (!val) val = 0
  18469. var i
  18470. if (typeof val === 'number') {
  18471. for (i = start; i < end; ++i) {
  18472. this[i] = val
  18473. }
  18474. } else {
  18475. var bytes = Buffer.isBuffer(val)
  18476. ? val
  18477. : utf8ToBytes(new Buffer(val, encoding).toString())
  18478. var len = bytes.length
  18479. for (i = 0; i < end - start; ++i) {
  18480. this[i + start] = bytes[i % len]
  18481. }
  18482. }
  18483. return this
  18484. }
  18485. // HELPER FUNCTIONS
  18486. // ================
  18487. var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
  18488. function base64clean (str) {
  18489. // Node strips out invalid characters like \n and \t from the string, base64-js does not
  18490. str = stringtrim(str).replace(INVALID_BASE64_RE, '')
  18491. // Node converts strings with length < 2 to ''
  18492. if (str.length < 2) return ''
  18493. // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
  18494. while (str.length % 4 !== 0) {
  18495. str = str + '='
  18496. }
  18497. return str
  18498. }
  18499. function stringtrim (str) {
  18500. if (str.trim) return str.trim()
  18501. return str.replace(/^\s+|\s+$/g, '')
  18502. }
  18503. function toHex (n) {
  18504. if (n < 16) return '0' + n.toString(16)
  18505. return n.toString(16)
  18506. }
  18507. function utf8ToBytes (string, units) {
  18508. units = units || Infinity
  18509. var codePoint
  18510. var length = string.length
  18511. var leadSurrogate = null
  18512. var bytes = []
  18513. for (var i = 0; i < length; ++i) {
  18514. codePoint = string.charCodeAt(i)
  18515. // is surrogate component
  18516. if (codePoint > 0xD7FF && codePoint < 0xE000) {
  18517. // last char was a lead
  18518. if (!leadSurrogate) {
  18519. // no lead yet
  18520. if (codePoint > 0xDBFF) {
  18521. // unexpected trail
  18522. if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
  18523. continue
  18524. } else if (i + 1 === length) {
  18525. // unpaired lead
  18526. if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
  18527. continue
  18528. }
  18529. // valid lead
  18530. leadSurrogate = codePoint
  18531. continue
  18532. }
  18533. // 2 leads in a row
  18534. if (codePoint < 0xDC00) {
  18535. if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
  18536. leadSurrogate = codePoint
  18537. continue
  18538. }
  18539. // valid surrogate pair
  18540. codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
  18541. } else if (leadSurrogate) {
  18542. // valid bmp char, but last char was a lead
  18543. if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
  18544. }
  18545. leadSurrogate = null
  18546. // encode utf8
  18547. if (codePoint < 0x80) {
  18548. if ((units -= 1) < 0) break
  18549. bytes.push(codePoint)
  18550. } else if (codePoint < 0x800) {
  18551. if ((units -= 2) < 0) break
  18552. bytes.push(
  18553. codePoint >> 0x6 | 0xC0,
  18554. codePoint & 0x3F | 0x80
  18555. )
  18556. } else if (codePoint < 0x10000) {
  18557. if ((units -= 3) < 0) break
  18558. bytes.push(
  18559. codePoint >> 0xC | 0xE0,
  18560. codePoint >> 0x6 & 0x3F | 0x80,
  18561. codePoint & 0x3F | 0x80
  18562. )
  18563. } else if (codePoint < 0x110000) {
  18564. if ((units -= 4) < 0) break
  18565. bytes.push(
  18566. codePoint >> 0x12 | 0xF0,
  18567. codePoint >> 0xC & 0x3F | 0x80,
  18568. codePoint >> 0x6 & 0x3F | 0x80,
  18569. codePoint & 0x3F | 0x80
  18570. )
  18571. } else {
  18572. throw new Error('Invalid code point')
  18573. }
  18574. }
  18575. return bytes
  18576. }
  18577. function asciiToBytes (str) {
  18578. var byteArray = []
  18579. for (var i = 0; i < str.length; ++i) {
  18580. // Node's code seems to be doing this and not & 0x7F..
  18581. byteArray.push(str.charCodeAt(i) & 0xFF)
  18582. }
  18583. return byteArray
  18584. }
  18585. function utf16leToBytes (str, units) {
  18586. var c, hi, lo
  18587. var byteArray = []
  18588. for (var i = 0; i < str.length; ++i) {
  18589. if ((units -= 2) < 0) break
  18590. c = str.charCodeAt(i)
  18591. hi = c >> 8
  18592. lo = c % 256
  18593. byteArray.push(lo)
  18594. byteArray.push(hi)
  18595. }
  18596. return byteArray
  18597. }
  18598. function base64ToBytes (str) {
  18599. return base64.toByteArray(base64clean(str))
  18600. }
  18601. function blitBuffer (src, dst, offset, length) {
  18602. for (var i = 0; i < length; ++i) {
  18603. if ((i + offset >= dst.length) || (i >= src.length)) break
  18604. dst[i + offset] = src[i]
  18605. }
  18606. return i
  18607. }
  18608. function isnan (val) {
  18609. return val !== val // eslint-disable-line no-self-compare
  18610. }
  18611. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("698d")))
  18612. /***/ }),
  18613. /***/ "3cbc":
  18614. /***/ (function(module, exports, __webpack_require__) {
  18615. "use strict";
  18616. var _interopRequireDefault = __webpack_require__("8e6d");
  18617. Object.defineProperty(exports, "__esModule", {
  18618. value: true
  18619. });
  18620. exports.default = void 0;
  18621. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  18622. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  18623. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  18624. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  18625. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  18626. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  18627. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  18628. var _vuePropertyDecorator = __webpack_require__("e22c");
  18629. var _WebSceneViewModel = _interopRequireDefault(__webpack_require__("3550"));
  18630. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  18631. var c = arguments.length,
  18632. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  18633. d;
  18634. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  18635. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  18636. }
  18637. return c > 3 && r && Object.defineProperty(target, key, r), r;
  18638. };
  18639. var SmWebScene =
  18640. /*#__PURE__*/
  18641. function (_Vue) {
  18642. (0, _inherits2.default)(SmWebScene, _Vue);
  18643. function SmWebScene() {
  18644. (0, _classCallCheck2.default)(this, SmWebScene);
  18645. return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(SmWebScene).apply(this, arguments));
  18646. }
  18647. (0, _createClass2.default)(SmWebScene, [{
  18648. key: "sceneUrlChaned",
  18649. value: function sceneUrlChaned() {
  18650. this.WebSceneViewModel && this.WebSceneViewModel.setSceneUrl(this.sceneUrl);
  18651. }
  18652. }, {
  18653. key: "scanEffectChaned",
  18654. value: function scanEffectChaned(newVal, oldVal) {
  18655. this.WebSceneViewModel && this.WebSceneViewModel.setScanEffect(this.options.scanEffect);
  18656. }
  18657. }, {
  18658. key: "positionChaned",
  18659. value: function positionChaned(newVal, oldVal) {
  18660. this.WebSceneViewModel && this.WebSceneViewModel.setPosition(this.options.position);
  18661. }
  18662. }, {
  18663. key: "viewerPositionChanged",
  18664. value: function viewerPositionChanged(value) {
  18665. return value;
  18666. }
  18667. }, {
  18668. key: "scanPositionChanged",
  18669. value: function scanPositionChanged(value) {
  18670. return value;
  18671. }
  18672. }, {
  18673. key: "ready",
  18674. value: function ready(cesiumInstance) {
  18675. var Cesium = cesiumInstance.Cesium,
  18676. viewer = cesiumInstance.viewer;
  18677. this.WebSceneViewModel = new _WebSceneViewModel.default(Cesium, viewer, this.sceneUrl, this.options);
  18678. this.registerEvents();
  18679. }
  18680. }, {
  18681. key: "registerEvents",
  18682. value: function registerEvents() {
  18683. var _this = this;
  18684. this.WebSceneViewModel.on('viewerpositionchanged', function (e) {
  18685. var position = e.position;
  18686. _this.viewerPositionChanged(position);
  18687. });
  18688. this.WebSceneViewModel.on('scanpositionchanged', function (e) {
  18689. var position = e.position;
  18690. _this.scanPositionChanged(position);
  18691. });
  18692. }
  18693. }]);
  18694. return SmWebScene;
  18695. }(_vue.default);
  18696. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebScene.prototype, "sceneUrl", void 0);
  18697. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebScene.prototype, "cesiumPath", void 0);
  18698. __decorate([(0, _vuePropertyDecorator.Prop)()], SmWebScene.prototype, "options", void 0);
  18699. __decorate([(0, _vuePropertyDecorator.Watch)('sceneUrl')], SmWebScene.prototype, "sceneUrlChaned", null);
  18700. __decorate([(0, _vuePropertyDecorator.Watch)('options.scanEffect')], SmWebScene.prototype, "scanEffectChaned", null);
  18701. __decorate([(0, _vuePropertyDecorator.Watch)('options.position')], SmWebScene.prototype, "positionChaned", null);
  18702. __decorate([(0, _vuePropertyDecorator.Emit)()], SmWebScene.prototype, "viewerPositionChanged", null);
  18703. __decorate([(0, _vuePropertyDecorator.Emit)()], SmWebScene.prototype, "scanPositionChanged", null);
  18704. SmWebScene = __decorate([(0, _vuePropertyDecorator.Component)({
  18705. name: 'SmWebScene'
  18706. })], SmWebScene);
  18707. var _default = SmWebScene;
  18708. exports.default = _default;
  18709. /***/ }),
  18710. /***/ "3cdc":
  18711. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  18712. "use strict";
  18713. __webpack_require__.r(__webpack_exports__);
  18714. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_NothingResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ba6e");
  18715. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_NothingResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_NothingResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  18716. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_NothingResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_NothingResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  18717. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_NothingResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  18718. /***/ }),
  18719. /***/ "3ce4":
  18720. /***/ (function(module, exports, __webpack_require__) {
  18721. "use strict";
  18722. var _interopRequireDefault = __webpack_require__("8e6d");
  18723. Object.defineProperty(exports, "__esModule", {
  18724. value: true
  18725. });
  18726. exports.default = void 0;
  18727. var _drawEvent = _interopRequireDefault(__webpack_require__("9104"));
  18728. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  18729. var _card = _interopRequireDefault(__webpack_require__("333c"));
  18730. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  18731. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  18732. var _DrawViewModel = _interopRequireDefault(__webpack_require__("c167"));
  18733. var _lodash = _interopRequireDefault(__webpack_require__("f344"));
  18734. __webpack_require__("fc22");
  18735. //
  18736. //
  18737. //
  18738. //
  18739. //
  18740. //
  18741. //
  18742. //
  18743. //
  18744. //
  18745. //
  18746. //
  18747. //
  18748. //
  18749. //
  18750. //
  18751. //
  18752. //
  18753. //
  18754. //
  18755. //
  18756. //
  18757. //
  18758. //
  18759. //
  18760. var _default2 = {
  18761. name: 'SmDraw',
  18762. mixins: [_mapGetter.default, _control.default, _theme.default, _card.default],
  18763. props: {
  18764. iconClass: {
  18765. type: String,
  18766. default: 'sm-components-icons-edit'
  18767. },
  18768. headerName: {
  18769. type: String,
  18770. default: function _default() {
  18771. return this.$t('draw.draw');
  18772. }
  18773. },
  18774. collapsed: {
  18775. type: Boolean,
  18776. // 是否折叠
  18777. default: true
  18778. },
  18779. layerStyle: {
  18780. type: Object
  18781. }
  18782. },
  18783. data: function data() {
  18784. return {
  18785. modes: [{
  18786. icon: 'point-layer',
  18787. value: 'draw_point',
  18788. title: 'Point Tool'
  18789. }, {
  18790. icon: 'line-layer',
  18791. value: 'draw_line_string',
  18792. title: 'LineString Tool'
  18793. }, {
  18794. icon: 'polygon-layer',
  18795. value: 'draw_polygon',
  18796. title: 'Polygon Tool'
  18797. }, {
  18798. icon: 'delete',
  18799. value: 'trash',
  18800. title: 'Delete'
  18801. }],
  18802. activeMode: null
  18803. };
  18804. },
  18805. watch: {
  18806. layerStyle: {
  18807. handler: function handler() {
  18808. this.viewModel && this.viewModel.setLayerStyle(this.layerStyle);
  18809. },
  18810. deep: true
  18811. }
  18812. },
  18813. created: function created() {
  18814. this.componentName = (0, _lodash.default)(this.$options.name);
  18815. this.viewModel = new _DrawViewModel.default(this.componentName);
  18816. this.initEvent();
  18817. },
  18818. removed: function removed() {
  18819. this.activeMode = null;
  18820. var targetName = this.getTargetName();
  18821. _drawEvent.default.$options.deleteDrawingState(targetName, this.componentName);
  18822. },
  18823. methods: {
  18824. initEvent: function initEvent() {
  18825. var _this = this;
  18826. this.viewModel.on('draw-create', function (data) {
  18827. _this.activeMode = null;
  18828. _this.$emit('draw-created', data.popupInfo);
  18829. });
  18830. },
  18831. updateMode: function updateMode(mode) {
  18832. var _this2 = this;
  18833. setTimeout(function () {
  18834. var mapNotLoaded = _this2.mapNotLoadedTip();
  18835. if (mapNotLoaded) return;
  18836. if (_this2.map && _this2.map.loaded()) {
  18837. _this2.activeMode = mode;
  18838. if (mode === 'trash') {
  18839. _this2.viewModel.trash();
  18840. _this2.activeMode = null;
  18841. _this2.$emit('draw-removed', {});
  18842. return;
  18843. }
  18844. _this2.viewModel.openDraw(mode);
  18845. _drawEvent.default.$emit('draw-reset', {
  18846. componentName: _this2.$options.name
  18847. });
  18848. }
  18849. }, 0);
  18850. },
  18851. // 提供对外方法:清空features
  18852. clear: function clear() {
  18853. this.activeMode = null;
  18854. this.viewModel && this.viewModel.clearAllFeatures();
  18855. }
  18856. }
  18857. };
  18858. exports.default = _default2;
  18859. /***/ }),
  18860. /***/ "3d57":
  18861. /***/ (function(module, exports) {
  18862. module.exports = __WEBPACK_EXTERNAL_MODULE__3d57__;
  18863. /***/ }),
  18864. /***/ "3e31":
  18865. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  18866. "use strict";
  18867. __webpack_require__.r(__webpack_exports__);
  18868. /* harmony import */ var _Zoom_vue_vue_type_template_id_45cc8a58___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("d80b");
  18869. /* harmony import */ var _Zoom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("1ab5");
  18870. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Zoom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Zoom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  18871. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  18872. /* normalize component */
  18873. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  18874. _Zoom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  18875. _Zoom_vue_vue_type_template_id_45cc8a58___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  18876. _Zoom_vue_vue_type_template_id_45cc8a58___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  18877. false,
  18878. null,
  18879. null,
  18880. null
  18881. )
  18882. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  18883. /***/ }),
  18884. /***/ "3e48":
  18885. /***/ (function(module, exports, __webpack_require__) {
  18886. "use strict";
  18887. /* WEBPACK VAR INJECTION */(function(process) {
  18888. if (typeof process === 'undefined' ||
  18889. !process.version ||
  18890. process.version.indexOf('v0.') === 0 ||
  18891. process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
  18892. module.exports = { nextTick: nextTick };
  18893. } else {
  18894. module.exports = process
  18895. }
  18896. function nextTick(fn, arg1, arg2, arg3) {
  18897. if (typeof fn !== 'function') {
  18898. throw new TypeError('"callback" argument must be a function');
  18899. }
  18900. var len = arguments.length;
  18901. var args, i;
  18902. switch (len) {
  18903. case 0:
  18904. case 1:
  18905. return process.nextTick(fn);
  18906. case 2:
  18907. return process.nextTick(function afterTickOne() {
  18908. fn.call(null, arg1);
  18909. });
  18910. case 3:
  18911. return process.nextTick(function afterTickTwo() {
  18912. fn.call(null, arg1, arg2);
  18913. });
  18914. case 4:
  18915. return process.nextTick(function afterTickThree() {
  18916. fn.call(null, arg1, arg2, arg3);
  18917. });
  18918. default:
  18919. args = new Array(len - 1);
  18920. i = 0;
  18921. while (i < args.length) {
  18922. args[i++] = arguments[i];
  18923. }
  18924. return process.nextTick(function afterTick() {
  18925. fn.apply(null, args);
  18926. });
  18927. }
  18928. }
  18929. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("f2ac")))
  18930. /***/ }),
  18931. /***/ "3e59":
  18932. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  18933. "use strict";
  18934. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/table-popup/TablePopup.vue?vue&type=template&id=1c51b447&
  18935. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-table-popup",style:([_vm.backgroundStyle, _vm.getTextColorStyle, _vm.styleObject])},[_c('div',{staticClass:"sm-component-table-popup__close"},[_vm._v("x")]),_vm._v(" "),_c('a-table',{staticClass:"sm-component-table-popup__table",style:(_vm.backgroundStyle),attrs:{"data-source":_vm.data,"columns":_vm.columns,"rowKey":function (record, index) { return index; },"pagination":false}})],1)}
  18936. var staticRenderFns = []
  18937. // CONCATENATED MODULE: ./src/common/table-popup/TablePopup.vue?vue&type=template&id=1c51b447&
  18938. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  18939. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  18940. /***/ }),
  18941. /***/ "3e9b":
  18942. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  18943. "use strict";
  18944. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/tdt/results/LinesResult.vue?vue&type=template&id=cbe68680&
  18945. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.data)?_c('div',{staticClass:"linedata-results-container sm-component-tdtLineResults"},[_c('a',{staticClass:"link-to-points",style:(_vm.getColorStyle(0)),on:{"click":_vm.searchPointsResult}},[_vm._v(_vm._s(_vm.$t('tdtResults.relateAdress', {keyWord: _vm.keyWord})))]),_vm._v(" "),_c('div',{staticClass:"title"},[_vm._v("\n "+_vm._s(_vm.$t('tdtResults.allFound'))+"\n "),_c('span',{staticClass:"total-num"},[_vm._v(_vm._s(_vm.count))]),_vm._v("\n "+_vm._s(_vm.$t('tdtResults.piecesBusRoute'))+"\n ")]),_vm._v(" "),(_vm.data)?_c('div',{staticClass:"content"},[_c('ul',{staticClass:"line-groups"},_vm._l((_vm.data),function(line,groupIndex){return _c('li',{key:line.uuid,staticClass:"line-item",style:(_vm.detailVisibles[groupIndex] && _vm.getBackgroundStyle),on:{"mouseenter":function (e) { return e.target.style.background = _vm.getBackground; },"mouseleave":function (e) { return e.target.style.background = _vm.detailVisibles[groupIndex] ? _vm.getBackground : 'inherit'; }}},[_c('i',{staticClass:"line-icon"}),_vm._v(" "),_c('div',{staticClass:"line-info"},[_c('p',{staticClass:"name",style:(_vm.getColorStyle(0)),attrs:{"title":line.name}},[_vm._v(_vm._s(line.name))]),_vm._v(" "),_c('p',{staticClass:"count"},[_vm._v("\n "+_vm._s(_vm.$t('tdtResults.total'))+"\n "),_c('span',{style:(_vm.getColorStyle(0))},[_vm._v(_vm._s(line.stationNum))]),_vm._v("\n "+_vm._s(_vm.$t('tdtResults.station'))+"\n ")]),_vm._v(" "),_c('p',{staticClass:"show-details",on:{"click":function($event){return _vm.showLineDetail(line.uuid, groupIndex)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('tdtResults.showDetail')))]),_vm._v(" "),_c('a-icon',{attrs:{"type":_vm.detailVisibles[groupIndex] ? 'caret-up' : 'caret-down'}})],1),_vm._v(" "),(_vm.detailVisibles[groupIndex] && _vm.busData[line.uuid])?_c('div',{staticClass:"detail-info"},[_c('p',{staticClass:"time"},[_vm._v("\n "+_vm._s(_vm.$t('tdtResults.busEndTime'))+":\n "),_c('span',{style:(_vm.getColorStyle(0))},[_vm._v(_vm._s((_vm.busData[line.uuid] || {}).starttime)+" - "+_vm._s((_vm.busData[line.uuid] || {}).endtime))])]),_vm._v(" "),_c('ul',{staticClass:"lines",style:(_vm.getBackgroundStyle)},_vm._l((((_vm.busData[line.uuid] || {}).station || [])),function(bus,index){return _c('li',{key:bus.uuid,on:{"click":function($event){return _vm.generatePopup(bus)},"mouseenter":function (e) { return e.target.style.color = _vm.getColor(0); },"mouseleave":function (e) { return e.target.style.color = 'inherit'; }}},[_vm._v(_vm._s(((index + 1) + "、" + (bus.name))))])}),0)]):_vm._e()])])}),0)]):_vm._e()]):_vm._e()}
  18946. var staticRenderFns = []
  18947. // CONCATENATED MODULE: ./src/mapboxgl/tdt/results/LinesResult.vue?vue&type=template&id=cbe68680&
  18948. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  18949. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  18950. /***/ }),
  18951. /***/ "3ef3":
  18952. /***/ (function(module, exports, __webpack_require__) {
  18953. /**
  18954. * geostats() is a tiny and standalone javascript library for classification
  18955. * Project page - https://github.com/simogeo/geostats
  18956. * Copyright (c) 2011 Simon Georget, http://www.empreinte-urbaine.eu
  18957. * Licensed under the MIT license
  18958. */
  18959. (function (definition) {
  18960. // This file will function properly as a <script> tag, or a module
  18961. // using CommonJS and NodeJS or RequireJS module formats.
  18962. // CommonJS
  18963. if (true) {
  18964. module.exports = definition();
  18965. // RequireJS
  18966. } else {}
  18967. })(function () {
  18968. var isInt = function(n) {
  18969. return typeof n === 'number' && parseFloat(n) == parseInt(n, 10) && !isNaN(n);
  18970. } // 6 characters
  18971. var _t = function(str) {
  18972. return str;
  18973. };
  18974. //taking from http://stackoverflow.com/questions/18082/validate-decimal-numbers-in-javascript-isnumeric
  18975. var isNumber = function(n) {
  18976. return !isNaN(parseFloat(n)) && isFinite(n);
  18977. }
  18978. //indexOf polyfill
  18979. // from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
  18980. if (!Array.prototype.indexOf) {
  18981. Array.prototype.indexOf = function (searchElement, fromIndex) {
  18982. if ( this === undefined || this === null ) {
  18983. throw new TypeError( '"this" is null or not defined' );
  18984. }
  18985. var length = this.length >>> 0; // Hack to convert object.length to a UInt32
  18986. fromIndex = +fromIndex || 0;
  18987. if (Math.abs(fromIndex) === Infinity) {
  18988. fromIndex = 0;
  18989. }
  18990. if (fromIndex < 0) {
  18991. fromIndex += length;
  18992. if (fromIndex < 0) {
  18993. fromIndex = 0;
  18994. }
  18995. }
  18996. for (;fromIndex < length; fromIndex++) {
  18997. if (this[fromIndex] === searchElement) {
  18998. return fromIndex;
  18999. }
  19000. }
  19001. return -1;
  19002. };
  19003. }
  19004. var geostats = function(a) {
  19005. this.objectID = '';
  19006. this.separator = ' - ';
  19007. this.legendSeparator = this.separator;
  19008. this.method = '';
  19009. this.precision = 0;
  19010. this.precisionflag = 'auto';
  19011. this.roundlength = 2; // Number of decimals, round values
  19012. this.is_uniqueValues = false;
  19013. this.debug = false;
  19014. this.silent = false;
  19015. this.bounds = Array();
  19016. this.ranges = Array();
  19017. this.inner_ranges = null;
  19018. this.colors = Array();
  19019. this.counter = Array();
  19020. // statistics information
  19021. this.stat_sorted = null;
  19022. this.stat_mean = null;
  19023. this.stat_median = null;
  19024. this.stat_sum = null;
  19025. this.stat_max = null;
  19026. this.stat_min = null;
  19027. this.stat_pop = null;
  19028. this.stat_variance = null;
  19029. this.stat_stddev = null;
  19030. this.stat_cov = null;
  19031. /**
  19032. * logging method
  19033. */
  19034. this.log = function(msg, force) {
  19035. if(this.debug == true || force != null)
  19036. console.log(this.objectID + "(object id) :: " + msg);
  19037. };
  19038. /**
  19039. * Set bounds
  19040. */
  19041. this.setBounds = function(a) {
  19042. this.log('Setting bounds (' + a.length + ') : ' + a.join());
  19043. this.bounds = Array() // init empty array to prevent bug when calling classification after another with less items (sample getQuantile(6) and getQuantile(4))
  19044. this.bounds = a;
  19045. //this.bounds = this.decimalFormat(a);
  19046. };
  19047. /**
  19048. * Set a new serie
  19049. */
  19050. this.setSerie = function(a) {
  19051. this.log('Setting serie (' + a.length + ') : ' + a.join());
  19052. this.serie = Array() // init empty array to prevent bug when calling classification after another with less items (sample getQuantile(6) and getQuantile(4))
  19053. this.serie = a;
  19054. //reset statistics after changing serie
  19055. this.resetStatistics();
  19056. this.setPrecision();
  19057. };
  19058. /**
  19059. * Set colors
  19060. */
  19061. this.setColors = function(colors) {
  19062. this.log('Setting color ramp (' + colors.length + ') : ' + colors.join());
  19063. this.colors = colors;
  19064. };
  19065. /**
  19066. * Get feature count
  19067. * With bounds array(0, 0.75, 1.5, 2.25, 3);
  19068. * should populate this.counter with 5 keys
  19069. * and increment counters for each key
  19070. */
  19071. this.doCount = function() {
  19072. if (this._nodata())
  19073. return;
  19074. var tmp = this.sorted();
  19075. this.counter = new Array();
  19076. // we init counter with 0 value
  19077. for(i = 0; i < this.bounds.length -1; i++) {
  19078. this.counter[i]= 0;
  19079. }
  19080. for(j=0; j < tmp.length; j++) {
  19081. // get current class for value to increment the counter
  19082. var cclass = this.getClass(tmp[j]);
  19083. this.counter[cclass]++;
  19084. }
  19085. };
  19086. /**
  19087. * Set decimal precision according to user input
  19088. * or automatcally determined according
  19089. * to the given serie.
  19090. */
  19091. this.setPrecision = function(decimals) {
  19092. // only when called from user
  19093. if(typeof decimals !== "undefined") {
  19094. this.precisionflag = 'manual';
  19095. this.precision = decimals;
  19096. }
  19097. // we calculate the maximal decimal length on given serie
  19098. if(this.precisionflag == 'auto') {
  19099. for (var i = 0; i < this.serie.length; i++) {
  19100. // check if the given value is a number and a float
  19101. if (!isNaN((this.serie[i]+"")) && (this.serie[i]+"").toString().indexOf('.') != -1) {
  19102. var precision = (this.serie[i] + "").split(".")[1].length;
  19103. } else {
  19104. var precision = 0;
  19105. }
  19106. if(precision > this.precision) {
  19107. this.precision = precision;
  19108. }
  19109. }
  19110. }
  19111. if(this.precision > 20) {
  19112. // prevent "Uncaught RangeError: toFixed() digits argument must be between 0 and 20" bug. See https://github.com/simogeo/geostats/issues/34
  19113. 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.');
  19114. this.precision = 20;
  19115. }
  19116. this.log('Calling setPrecision(). Mode : ' + this.precisionflag + ' - Decimals : '+ this.precision);
  19117. this.serie = this.decimalFormat(this.serie);
  19118. };
  19119. /**
  19120. * Format array numbers regarding to precision
  19121. */
  19122. this.decimalFormat = function(a) {
  19123. var b = new Array();
  19124. for (var i = 0; i < a.length; i++) {
  19125. // check if the given value is a number
  19126. if (isNumber(a[i])) {
  19127. b[i] = parseFloat(parseFloat(a[i]).toFixed(this.precision));
  19128. } else {
  19129. b[i] = a[i];
  19130. }
  19131. }
  19132. return b;
  19133. }
  19134. /**
  19135. * Transform a bounds array to a range array the following array : array(0,
  19136. * 0.75, 1.5, 2.25, 3); becomes : array('0-0.75', '0.75-1.5', '1.5-2.25',
  19137. * '2.25-3');
  19138. */
  19139. this.setRanges = function() {
  19140. this.ranges = Array(); // init empty array to prevent bug when calling classification after another with less items (sample getQuantile(6) and getQuantile(4))
  19141. for (i = 0; i < (this.bounds.length - 1); i++) {
  19142. this.ranges[i] = this.bounds[i] + this.separator + this.bounds[i + 1];
  19143. }
  19144. };
  19145. /** return min value */
  19146. this.min = function() {
  19147. if (this._nodata())
  19148. return;
  19149. this.stat_min = this.serie[0];
  19150. for (i = 0; i < this.pop(); i++) {
  19151. if (this.serie[i] < this.stat_min) {
  19152. this.stat_min = this.serie[i];
  19153. }
  19154. }
  19155. return this.stat_min;
  19156. };
  19157. /** return max value */
  19158. this.max = function() {
  19159. if (this._nodata())
  19160. return;
  19161. this.stat_max = this.serie[0];
  19162. for (i = 0; i < this.pop(); i++) {
  19163. if (this.serie[i] > this.stat_max) {
  19164. this.stat_max = this.serie[i];
  19165. }
  19166. }
  19167. return this.stat_max;
  19168. };
  19169. /** return sum value */
  19170. this.sum = function() {
  19171. if (this._nodata())
  19172. return;
  19173. if (this.stat_sum == null) {
  19174. this.stat_sum = 0;
  19175. for (i = 0; i < this.pop(); i++) {
  19176. this.stat_sum += parseFloat(this.serie[i]);
  19177. }
  19178. }
  19179. return this.stat_sum;
  19180. };
  19181. /** return population number */
  19182. this.pop = function() {
  19183. if (this._nodata())
  19184. return;
  19185. if (this.stat_pop == null) {
  19186. this.stat_pop = this.serie.length;
  19187. }
  19188. return this.stat_pop;
  19189. };
  19190. /** return mean value */
  19191. this.mean = function() {
  19192. if (this._nodata())
  19193. return;
  19194. if (this.stat_mean == null) {
  19195. this.stat_mean = parseFloat(this.sum() / this.pop());
  19196. }
  19197. return this.stat_mean;
  19198. };
  19199. /** return median value */
  19200. this.median = function() {
  19201. if (this._nodata())
  19202. return;
  19203. if (this.stat_median == null) {
  19204. this.stat_median = 0;
  19205. var tmp = this.sorted();
  19206. // serie pop is odd
  19207. if (tmp.length % 2) {
  19208. this.stat_median = parseFloat(tmp[(Math.ceil(tmp.length / 2) - 1)]);
  19209. // serie pop is even
  19210. } else {
  19211. this.stat_median = ( parseFloat(tmp[((tmp.length / 2) - 1)]) + parseFloat(tmp[(tmp.length / 2)]) ) / 2;
  19212. }
  19213. }
  19214. return this.stat_median;
  19215. };
  19216. /** return variance value */
  19217. this.variance = function() {
  19218. round = (typeof round === "undefined") ? true : false;
  19219. if (this._nodata())
  19220. return;
  19221. if (this.stat_variance == null) {
  19222. var tmp = 0, serie_mean = this.mean();
  19223. for (var i = 0; i < this.pop(); i++) {
  19224. tmp += Math.pow( (this.serie[i] - serie_mean), 2 );
  19225. }
  19226. this.stat_variance = tmp / this.pop();
  19227. if(round == true) {
  19228. this.stat_variance = Math.round(this.stat_variance * Math.pow(10,this.roundlength) )/ Math.pow(10,this.roundlength);
  19229. }
  19230. }
  19231. return this.stat_variance;
  19232. };
  19233. /** return standard deviation value */
  19234. this.stddev = function(round) {
  19235. round = (typeof round === "undefined") ? true : false;
  19236. if (this._nodata())
  19237. return;
  19238. if (this.stat_stddev == null) {
  19239. this.stat_stddev = Math.sqrt(this.variance());
  19240. if(round == true) {
  19241. this.stat_stddev = Math.round(this.stat_stddev * Math.pow(10,this.roundlength) )/ Math.pow(10,this.roundlength);
  19242. }
  19243. }
  19244. return this.stat_stddev;
  19245. };
  19246. /** coefficient of variation - measure of dispersion */
  19247. this.cov = function(round) {
  19248. round = (typeof round === "undefined") ? true : false;
  19249. if (this._nodata())
  19250. return;
  19251. if (this.stat_cov == null) {
  19252. this.stat_cov = this.stddev() / this.mean();
  19253. if(round == true) {
  19254. this.stat_cov = Math.round(this.stat_cov * Math.pow(10,this.roundlength) )/ Math.pow(10,this.roundlength);
  19255. }
  19256. }
  19257. return this.stat_cov;
  19258. };
  19259. /** reset all attributes after setting a new serie */
  19260. this.resetStatistics = function() {
  19261. this.stat_sorted = null;
  19262. this.stat_mean = null;
  19263. this.stat_median = null;
  19264. this.stat_sum = null;
  19265. this.stat_max = null;
  19266. this.stat_min = null;
  19267. this.stat_pop = null;
  19268. this.stat_variance = null;
  19269. this.stat_stddev = null;
  19270. this.stat_cov = null;
  19271. }
  19272. /** data test */
  19273. this._nodata = function() {
  19274. if (this.serie.length == 0) {
  19275. if(this.silent) this.log("[silent mode] Error. You should first enter a serie!", true);
  19276. else throw new TypeError("Error. You should first enter a serie!");
  19277. return 1;
  19278. } else
  19279. return 0;
  19280. };
  19281. /** check if the serie contains negative value */
  19282. this._hasNegativeValue = function() {
  19283. for (i = 0; i < this.serie.length; i++) {
  19284. if(this.serie[i] < 0)
  19285. return true;
  19286. }
  19287. return false;
  19288. };
  19289. /** check if the serie contains zero value */
  19290. this._hasZeroValue = function() {
  19291. for (i = 0; i < this.serie.length; i++) {
  19292. if(parseFloat(this.serie[i]) === 0)
  19293. return true;
  19294. }
  19295. return false;
  19296. };
  19297. /** return sorted values (as array) */
  19298. this.sorted = function() {
  19299. if (this.stat_sorted == null) {
  19300. if(this.is_uniqueValues == false) {
  19301. this.stat_sorted = this.serie.sort(function(a, b) {
  19302. return a - b;
  19303. });
  19304. } else {
  19305. this.stat_sorted = this.serie.sort(function(a,b){
  19306. var nameA=a.toString().toLowerCase(), nameB=b.toString().toLowerCase();
  19307. if(nameA < nameB) return -1;
  19308. if(nameA > nameB) return 1;
  19309. return 0;
  19310. })
  19311. }
  19312. }
  19313. return this.stat_sorted;
  19314. };
  19315. /** return all info */
  19316. this.info = function() {
  19317. if (this._nodata())
  19318. return;
  19319. var content = '';
  19320. content += _t('Population') + ' : ' + this.pop() + ' - [' + _t('Min')
  19321. + ' : ' + this.min() + ' | ' + _t('Max') + ' : ' + this.max()
  19322. + ']' + "\n";
  19323. content += _t('Mean') + ' : ' + this.mean() + ' - ' + _t('Median') + ' : ' + this.median() + "\n";
  19324. content += _t('Variance') + ' : ' + this.variance() + ' - ' + _t('Standard deviation') + ' : ' + this.stddev()
  19325. + ' - ' + _t('Coefficient of variation') + ' : ' + this.cov() + "\n";
  19326. return content;
  19327. };
  19328. /**
  19329. * Set Manual classification Return an array with bounds : ie array(0,
  19330. * 0.75, 1.5, 2.25, 3);
  19331. * Set ranges and prepare data for displaying legend
  19332. *
  19333. */
  19334. this.setClassManually = function(array) {
  19335. if (this._nodata())
  19336. return;
  19337. if(array[0] !== this.min() || array[array.length-1] !== this.max()) {
  19338. if(this.silent) this.log("[silent mode] " + t('Given bounds may not be correct! please check your input.\nMin value : ' + this.min() + ' / Max value : ' + this.max()), true);
  19339. else throw new TypeError(_t('Given bounds may not be correct! please check your input.\nMin value : ' + this.min() + ' / Max value : ' + this.max()));
  19340. return;
  19341. }
  19342. this.setBounds(array);
  19343. this.setRanges();
  19344. // we specify the classification method
  19345. this.method = _t('manual classification') + ' (' + (array.length -1) + ' ' + _t('classes') + ')';
  19346. return this.bounds;
  19347. };
  19348. /**
  19349. * Equal intervals classification Return an array with bounds : ie array(0,
  19350. * 0.75, 1.5, 2.25, 3);
  19351. */
  19352. this.getClassEqInterval = function(nbClass, forceMin, forceMax) {
  19353. if (this._nodata())
  19354. return;
  19355. var tmpMin = (typeof forceMin === "undefined") ? this.min() : forceMin;
  19356. var tmpMax = (typeof forceMax === "undefined") ? this.max() : forceMax;
  19357. var a = Array();
  19358. var val = tmpMin;
  19359. var interval = (tmpMax - tmpMin) / nbClass;
  19360. for (i = 0; i <= nbClass; i++) {
  19361. a[i] = val;
  19362. val += interval;
  19363. }
  19364. //-> Fix last bound to Max of values
  19365. a[nbClass] = tmpMax;
  19366. this.setBounds(a);
  19367. this.setRanges();
  19368. // we specify the classification method
  19369. this.method = _t('eq. intervals') + ' (' + nbClass + ' ' + _t('classes') + ')';
  19370. return this.bounds;
  19371. };
  19372. this.getQuantiles = function(nbClass) {
  19373. var tmp = this.sorted();
  19374. var quantiles = [];
  19375. var step = this.pop() / nbClass;
  19376. for (var i = 1; i < nbClass; i++) {
  19377. var qidx = Math.round(i*step+0.49);
  19378. quantiles.push(tmp[qidx-1]); // zero-based
  19379. }
  19380. return quantiles;
  19381. };
  19382. /**
  19383. * Quantile classification Return an array with bounds : ie array(0, 0.75,
  19384. * 1.5, 2.25, 3);
  19385. */
  19386. this.getClassQuantile = function(nbClass) {
  19387. if (this._nodata())
  19388. return;
  19389. var tmp = this.sorted();
  19390. var bounds = this.getQuantiles(nbClass);
  19391. bounds.unshift(tmp[0]);
  19392. if (bounds[tmp.length - 1] !== tmp[tmp.length - 1])
  19393. bounds.push(tmp[tmp.length - 1]);
  19394. this.setBounds(bounds);
  19395. this.setRanges();
  19396. // we specify the classification method
  19397. this.method = _t('quantile') + ' (' + nbClass + ' ' + _t('classes') + ')';
  19398. return this.bounds;
  19399. };
  19400. /**
  19401. * Standard Deviation classification
  19402. * Return an array with bounds : ie array(0,
  19403. * 0.75, 1.5, 2.25, 3);
  19404. */
  19405. this.getClassStdDeviation = function(nbClass, matchBounds) {
  19406. if (this._nodata())
  19407. return;
  19408. var tmpMax = this.max();
  19409. var tmpMin = this.min();
  19410. var a = Array();
  19411. // number of classes is odd
  19412. if(nbClass % 2 == 1) {
  19413. // Euclidean division to get the inferior bound
  19414. var infBound = Math.floor(nbClass / 2);
  19415. var supBound = infBound + 1;
  19416. // we set the central bounds
  19417. a[infBound] = this.mean() - ( this.stddev() / 2);
  19418. a[supBound] = this.mean() + ( this.stddev() / 2);
  19419. // Values < to infBound, except first one
  19420. for (i = infBound - 1; i > 0; i--) {
  19421. var val = a[i+1] - this.stddev();
  19422. a[i] = val;
  19423. }
  19424. // Values > to supBound, except last one
  19425. for (i = supBound + 1; i < nbClass; i++) {
  19426. var val = a[i-1] + this.stddev();
  19427. a[i] = val;
  19428. }
  19429. // number of classes is even
  19430. } else {
  19431. var meanBound = nbClass / 2;
  19432. // we get the mean value
  19433. a[meanBound] = this.mean();
  19434. // Values < to the mean, except first one
  19435. for (i = meanBound - 1; i > 0; i--) {
  19436. var val = a[i+1] - this.stddev();
  19437. a[i] = val;
  19438. }
  19439. // Values > to the mean, except last one
  19440. for (i = meanBound + 1; i < nbClass; i++) {
  19441. var val = a[i-1] + this.stddev();
  19442. a[i] = val;
  19443. }
  19444. }
  19445. // we finally set the first value
  19446. // do we excatly match min value or not ?
  19447. a[0] = (typeof matchBounds === "undefined") ? a[1]-this.stddev() : this.min();
  19448. // we finally set the last value
  19449. // do we excatly match max value or not ?
  19450. a[nbClass] = (typeof matchBounds === "undefined") ? a[nbClass-1]+this.stddev() : this.max();
  19451. this.setBounds(a);
  19452. this.setRanges();
  19453. // we specify the classification method
  19454. this.method = _t('std deviation') + ' (' + nbClass + ' ' + _t('classes')+ ')';
  19455. return this.bounds;
  19456. };
  19457. /**
  19458. * Geometric Progression classification
  19459. * http://en.wikipedia.org/wiki/Geometric_progression
  19460. * Return an array with bounds : ie array(0,
  19461. * 0.75, 1.5, 2.25, 3);
  19462. */
  19463. this.getClassGeometricProgression = function(nbClass) {
  19464. if (this._nodata())
  19465. return;
  19466. if(this._hasNegativeValue() || this._hasZeroValue()) {
  19467. if(this.silent) this.log("[silent mode] " + _t('geometric progression can\'t be applied with a serie containing negative or zero values.'), true);
  19468. else throw new TypeError(_t('geometric progression can\'t be applied with a serie containing negative or zero values.'));
  19469. return;
  19470. }
  19471. var a = Array();
  19472. var tmpMin = this.min();
  19473. var tmpMax = this.max();
  19474. var logMax = Math.log(tmpMax) / Math.LN10; // max decimal logarithm (or base 10)
  19475. var logMin = Math.log(tmpMin) / Math.LN10;; // min decimal logarithm (or base 10)
  19476. var interval = (logMax - logMin) / nbClass;
  19477. // we compute log bounds
  19478. for (i = 0; i < nbClass; i++) {
  19479. if(i == 0) {
  19480. a[i] = logMin;
  19481. } else {
  19482. a[i] = a[i-1] + interval;
  19483. }
  19484. }
  19485. // we compute antilog
  19486. a = a.map(function(x) { return Math.pow(10, x); });
  19487. // and we finally add max value
  19488. a.push(this.max());
  19489. this.setBounds(a);
  19490. this.setRanges();
  19491. // we specify the classification method
  19492. this.method = _t('geometric progression') + ' (' + nbClass + ' ' + _t('classes') + ')';
  19493. return this.bounds;
  19494. };
  19495. /**
  19496. * Arithmetic Progression classification
  19497. * http://en.wikipedia.org/wiki/Arithmetic_progression
  19498. * Return an array with bounds : ie array(0,
  19499. * 0.75, 1.5, 2.25, 3);
  19500. */
  19501. this.getClassArithmeticProgression = function(nbClass) {
  19502. if (this._nodata())
  19503. return;
  19504. var denominator = 0;
  19505. // we compute the (french) "Raison"
  19506. for (i = 1; i <= nbClass; i++) {
  19507. denominator += i;
  19508. }
  19509. var a = Array();
  19510. var tmpMin = this.min();
  19511. var tmpMax = this.max();
  19512. var interval = (tmpMax - tmpMin) / denominator;
  19513. for (i = 0; i <= nbClass; i++) {
  19514. if(i == 0) {
  19515. a[i] = tmpMin;
  19516. } else {
  19517. a[i] = a[i-1] + (i * interval);
  19518. }
  19519. }
  19520. this.setBounds(a);
  19521. this.setRanges();
  19522. // we specify the classification method
  19523. this.method = _t('arithmetic progression') + ' (' + nbClass + ' ' + _t('classes') + ')';
  19524. return this.bounds;
  19525. };
  19526. /**
  19527. * Credits : Doug Curl (javascript) and Daniel J Lewis (python implementation)
  19528. * http://www.arcgis.com/home/item.html?id=0b633ff2f40d412995b8be377211c47b
  19529. * http://danieljlewis.org/2010/06/07/jenks-natural-breaks-algorithm-in-python/
  19530. */
  19531. this.getClassJenks = function(nbClass) {
  19532. if (this._nodata())
  19533. return;
  19534. dataList = this.sorted();
  19535. // now iterate through the datalist:
  19536. // determine mat1 and mat2
  19537. // really not sure how these 2 different arrays are set - the code for
  19538. // each seems the same!
  19539. // but the effect are 2 different arrays: mat1 and mat2
  19540. var mat1 = []
  19541. for ( var x = 0, xl = dataList.length + 1; x < xl; x++) {
  19542. var temp = []
  19543. for ( var j = 0, jl = nbClass + 1; j < jl; j++) {
  19544. temp.push(0)
  19545. }
  19546. mat1.push(temp)
  19547. }
  19548. var mat2 = []
  19549. for ( var i = 0, il = dataList.length + 1; i < il; i++) {
  19550. var temp2 = []
  19551. for ( var c = 0, cl = nbClass + 1; c < cl; c++) {
  19552. temp2.push(0)
  19553. }
  19554. mat2.push(temp2)
  19555. }
  19556. // absolutely no idea what this does - best I can tell, it sets the 1st
  19557. // group in the
  19558. // mat1 and mat2 arrays to 1 and 0 respectively
  19559. for ( var y = 1, yl = nbClass + 1; y < yl; y++) {
  19560. mat1[0][y] = 1
  19561. mat2[0][y] = 0
  19562. for ( var t = 1, tl = dataList.length + 1; t < tl; t++) {
  19563. mat2[t][y] = Infinity
  19564. }
  19565. var v = 0.0
  19566. }
  19567. // and this part - I'm a little clueless on - but it works
  19568. // pretty sure it iterates across the entire dataset and compares each
  19569. // value to
  19570. // one another to and adjust the indices until you meet the rules:
  19571. // minimum deviation
  19572. // within a class and maximum separation between classes
  19573. for ( var l = 2, ll = dataList.length + 1; l < ll; l++) {
  19574. var s1 = 0.0
  19575. var s2 = 0.0
  19576. var w = 0.0
  19577. for ( var m = 1, ml = l + 1; m < ml; m++) {
  19578. var i3 = l - m + 1
  19579. var val = parseFloat(dataList[i3 - 1])
  19580. s2 += val * val
  19581. s1 += val
  19582. w += 1
  19583. v = s2 - (s1 * s1) / w
  19584. var i4 = i3 - 1
  19585. if (i4 != 0) {
  19586. for ( var p = 2, pl = nbClass + 1; p < pl; p++) {
  19587. if (mat2[l][p] >= (v + mat2[i4][p - 1])) {
  19588. mat1[l][p] = i3
  19589. mat2[l][p] = v + mat2[i4][p - 1]
  19590. }
  19591. }
  19592. }
  19593. }
  19594. mat1[l][1] = 1
  19595. mat2[l][1] = v
  19596. }
  19597. var k = dataList.length
  19598. var kclass = []
  19599. // fill the kclass (classification) array with zeros:
  19600. for (i = 0; i <= nbClass; i++) {
  19601. kclass.push(0);
  19602. }
  19603. // this is the last number in the array:
  19604. kclass[nbClass] = parseFloat(dataList[dataList.length - 1])
  19605. // this is the first number - can set to zero, but want to set to lowest
  19606. // to use for legend:
  19607. kclass[0] = parseFloat(dataList[0])
  19608. var countNum = nbClass
  19609. while (countNum >= 2) {
  19610. var id = parseInt((mat1[k][countNum]) - 2)
  19611. kclass[countNum - 1] = dataList[id]
  19612. k = parseInt((mat1[k][countNum] - 1))
  19613. // spits out the rank and value of the break values:
  19614. // console.log("id="+id,"rank = " + String(mat1[k][countNum]),"val =
  19615. // " + String(dataList[id]))
  19616. // count down:
  19617. countNum -= 1
  19618. }
  19619. // check to see if the 0 and 1 in the array are the same - if so, set 0
  19620. // to 0:
  19621. if (kclass[0] == kclass[1]) {
  19622. kclass[0] = 0
  19623. }
  19624. this.setBounds(kclass);
  19625. this.setRanges();
  19626. this.method = _t('Jenks') + ' (' + nbClass + ' ' + _t('classes') + ')';
  19627. return this.bounds; //array of breaks
  19628. }
  19629. /**
  19630. * Quantile classification Return an array with bounds : ie array(0, 0.75,
  19631. * 1.5, 2.25, 3);
  19632. */
  19633. this.getClassUniqueValues = function() {
  19634. if (this._nodata())
  19635. return;
  19636. this.is_uniqueValues = true;
  19637. var tmp = this.sorted(); // display in alphabetical order
  19638. var a = Array();
  19639. for (i = 0; i < this.pop(); i++) {
  19640. if(a.indexOf(tmp[i]) === -1)
  19641. a.push(tmp[i]);
  19642. }
  19643. this.bounds = a;
  19644. // we specify the classification method
  19645. this.method = _t('unique values');
  19646. return a;
  19647. };
  19648. /**
  19649. * Return the class of a given value.
  19650. * For example value : 6
  19651. * and bounds array = (0, 4, 8, 12);
  19652. * Return 2
  19653. */
  19654. this.getClass = function(value) {
  19655. for(i = 0; i < this.bounds.length; i++) {
  19656. if(this.is_uniqueValues == true) {
  19657. if(value == this.bounds[i])
  19658. return i;
  19659. } else {
  19660. // parseFloat() is necessary
  19661. if(parseFloat(value) <= this.bounds[i + 1]) {
  19662. return i;
  19663. }
  19664. }
  19665. }
  19666. return _t("Unable to get value's class.");
  19667. };
  19668. /**
  19669. * Return the ranges array : array('0-0.75', '0.75-1.5', '1.5-2.25',
  19670. * '2.25-3');
  19671. */
  19672. this.getRanges = function() {
  19673. return this.ranges;
  19674. };
  19675. /**
  19676. * Returns the number/index of this.ranges that value falls into
  19677. */
  19678. this.getRangeNum = function(value) {
  19679. var bounds, i;
  19680. for (i = 0; i < this.ranges.length; i++) {
  19681. bounds = this.ranges[i].split(/ - /);
  19682. if (value <= parseFloat(bounds[1])) {
  19683. return i;
  19684. }
  19685. }
  19686. }
  19687. /*
  19688. * Compute inner ranges based on serie.
  19689. * Produce discontinous ranges used for legend - return an array similar to :
  19690. * array('0.00-0.74', '0.98-1.52', '1.78-2.25', '2.99-3.14');
  19691. * If inner ranges already computed, return array values.
  19692. */
  19693. this.getInnerRanges = function() {
  19694. // if already computed, we return the result
  19695. if(this.inner_ranges != null)
  19696. return this.inner_ranges;
  19697. var a = new Array();
  19698. var tmp = this.sorted();
  19699. var cnt = 1; // bounds array counter
  19700. for (i = 0; i < tmp.length; i++) {
  19701. if(i == 0) var range_firstvalue = tmp[i]; // we init first range value
  19702. if(parseFloat(tmp[i]) > parseFloat(this.bounds[cnt])) {
  19703. a[cnt - 1] = '' + range_firstvalue + this.separator + tmp[i-1];
  19704. var range_firstvalue = tmp[i];
  19705. cnt++;
  19706. }
  19707. // we reach the last range, we finally complete manually
  19708. // and return the array
  19709. if(cnt == (this.bounds.length - 1)) {
  19710. // we set the last value
  19711. a[cnt - 1] = '' + range_firstvalue + this.separator + tmp[tmp.length-1];
  19712. this.inner_ranges = a;
  19713. return this.inner_ranges;
  19714. }
  19715. }
  19716. };
  19717. this.getSortedlist = function() {
  19718. return this.sorted().join(', ');
  19719. };
  19720. /**
  19721. * Return an html legend
  19722. * colors : specify an array of color (hexadecimal values)
  19723. * legend : specify a text input for the legend. By default, just displays 'legend'
  19724. * counter : if not null, display counter value
  19725. * callback : if not null, callback function applied on legend boundaries
  19726. * mode : null, 'default', 'distinct', 'discontinuous' :
  19727. * - if mode is null, will display legend as 'default mode'
  19728. * - 'default' : displays ranges like in ranges array (continuous values), sample : 29.26 - 378.80 / 378.80 - 2762.25 / 2762.25 - 6884.84
  19729. * - '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
  19730. * - '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
  19731. * order : null, 'ASC', 'DESC'
  19732. */
  19733. this.getHtmlLegend = function(colors, legend, counter, callback, mode, order) {
  19734. var cnt= '';
  19735. var elements = new Array();
  19736. this.doCount(); // we do count, even if not displayed
  19737. if(colors != null) {
  19738. ccolors = colors;
  19739. }
  19740. else {
  19741. ccolors = this.colors;
  19742. }
  19743. if(legend != null) {
  19744. lg = legend;
  19745. }
  19746. else {
  19747. lg = 'Legend';
  19748. }
  19749. if(counter != null) {
  19750. getcounter = true;
  19751. }
  19752. else {
  19753. getcounter = false;
  19754. }
  19755. if(callback != null) {
  19756. fn = callback;
  19757. }
  19758. else {
  19759. fn = function(o) {return o;};
  19760. }
  19761. if(mode == null) {
  19762. mode = 'default';
  19763. }
  19764. if(mode == 'discontinuous') {
  19765. this.getInnerRanges();
  19766. // check if some classes are not populated / equivalent of in_array function
  19767. if(this.counter.indexOf(0) !== -1) {
  19768. if(this.silent) this.log("[silent mode] " + _t("Geostats cannot apply 'discontinuous' mode to the getHtmlLegend() method because some classes are not populated.\nPlease switch to 'default' or 'distinct' modes. Exit!"), true);
  19769. else throw new TypeError(_t("Geostats cannot apply 'discontinuous' mode to the getHtmlLegend() method because some classes are not populated.\nPlease switch to 'default' or 'distinct' modes. Exit!"));
  19770. return;
  19771. }
  19772. }
  19773. if(order !== 'DESC') order = 'ASC';
  19774. if(ccolors.length < this.ranges.length) {
  19775. if(this.silent) this.log("[silent mode] " + _t('The number of colors should fit the number of ranges. Exit!'), true);
  19776. else throw new TypeError(_t('The number of colors should fit the number of ranges. Exit!'));
  19777. return;
  19778. }
  19779. if(this.is_uniqueValues == false) {
  19780. for (i = 0; i < (this.ranges.length); i++) {
  19781. if(getcounter===true) {
  19782. cnt = ' <span class="geostats-legend-counter">(' + this.counter[i] + ')</span>';
  19783. }
  19784. //console.log("Ranges : " + this.ranges[i]);
  19785. // default mode
  19786. var tmp = this.ranges[i].split(this.separator);
  19787. var start_value = parseFloat(tmp[0]).toFixed(this.precision);
  19788. var end_value = parseFloat(tmp[1]).toFixed(this.precision);
  19789. // if mode == 'distinct' and we are not working on the first value
  19790. if(mode == 'distinct' && i != 0) {
  19791. if(isInt(start_value)) {
  19792. start_value = parseInt(start_value) + 1;
  19793. // format to float if necessary
  19794. if(this.precisionflag == 'manual' && this.precision != 0) start_value = parseFloat(start_value).toFixed(this.precision);
  19795. } else {
  19796. start_value = parseFloat(start_value) + (1 / Math.pow(10,this.precision));
  19797. // strangely the formula above return sometimes long decimal values,
  19798. // the following instruction fix it
  19799. start_value = parseFloat(start_value).toFixed(this.precision);
  19800. }
  19801. }
  19802. // if mode == 'discontinuous'
  19803. if(mode == 'discontinuous') {
  19804. var tmp = this.inner_ranges[i].split(this.separator);
  19805. // console.log("Ranges : " + this.inner_ranges[i]);
  19806. var start_value = parseFloat(tmp[0]).toFixed(this.precision);
  19807. var end_value = parseFloat(tmp[1]).toFixed(this.precision);
  19808. }
  19809. // we apply callback function
  19810. var el = fn(start_value) + this.legendSeparator + fn(end_value);
  19811. var block = '<div><div class="geostats-legend-block" style="background-color:' + ccolors[i] + '"></div> ' + el + cnt + '</div>';
  19812. elements.push(block);
  19813. }
  19814. } else {
  19815. // only if classification is done on unique values
  19816. for (i = 0; i < (this.bounds.length); i++) {
  19817. if(getcounter===true) {
  19818. cnt = ' <span class="geostats-legend-counter">(' + this.counter[i] + ')</span>';
  19819. }
  19820. var el = fn(this.bounds[i]);
  19821. var block = '<div><div class="geostats-legend-block" style="background-color:' + ccolors[i] + '"></div> ' + el + cnt + '</div>';
  19822. elements.push(block);
  19823. }
  19824. }
  19825. // do we reverse the return legend ?
  19826. if(order === 'DESC') elements.reverse();
  19827. // finally we create HTML and return it
  19828. var content = '<div class="geostats-legend"><div class="geostats-legend-title">' + _t(lg) + '</div>';
  19829. for (i = 0; i < (elements.length); i++) {
  19830. content += elements[i];
  19831. }
  19832. content += '</div>';
  19833. return content;
  19834. };
  19835. // object constructor
  19836. // At the end of script. If not setPrecision() method is not known
  19837. // we create an object identifier for debugging
  19838. this.objectID = new Date().getUTCMilliseconds();
  19839. this.log('Creating new geostats object');
  19840. if(typeof a !== 'undefined' && a.length > 0) {
  19841. this.serie = a;
  19842. this.setPrecision();
  19843. this.log('Setting serie (' + a.length + ') : ' + a.join());
  19844. } else {
  19845. this.serie = Array();
  19846. };
  19847. // creating aliases on classification function for backward compatibility
  19848. this.getJenks = this.getClassJenks;
  19849. this.getGeometricProgression = this.getClassGeometricProgression;
  19850. this.getEqInterval = this.getClassEqInterval;
  19851. this.getQuantile = this.getClassQuantile;
  19852. this.getStdDeviation = this.getClassStdDeviation;
  19853. this.getUniqueValues = this.getClassUniqueValues;
  19854. this.getArithmeticProgression = this.getClassArithmeticProgression;
  19855. };
  19856. window.geostats = geostats;
  19857. return geostats;
  19858. });
  19859. /***/ }),
  19860. /***/ "3f4f":
  19861. /***/ (function(module, exports, __webpack_require__) {
  19862. "use strict";
  19863. var _interopRequireDefault = __webpack_require__("8e6d");
  19864. Object.defineProperty(exports, "__esModule", {
  19865. value: true
  19866. });
  19867. exports.default = void 0;
  19868. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  19869. var _EchatsLayerViewModel = _interopRequireDefault(__webpack_require__("dd27"));
  19870. var _default = {
  19871. name: 'SmEchartsLayer',
  19872. mixins: [_mapGetter.default],
  19873. props: {
  19874. options: {
  19875. type: Object,
  19876. required: true,
  19877. validator: function validator(value) {
  19878. return JSON.stringify(value) !== '{}';
  19879. }
  19880. }
  19881. },
  19882. watch: {
  19883. options: {
  19884. handler: function handler(val) {
  19885. this.viewModel && this.viewModel.setOptions(val);
  19886. },
  19887. deep: true
  19888. }
  19889. },
  19890. created: function created() {
  19891. this.viewModel = new _EchatsLayerViewModel.default(this.options);
  19892. },
  19893. render: function render() {}
  19894. };
  19895. exports.default = _default;
  19896. /***/ }),
  19897. /***/ "3fbb":
  19898. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  19899. "use strict";
  19900. __webpack_require__.r(__webpack_exports__);
  19901. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_WebScene_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3cbc");
  19902. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_WebScene_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_WebScene_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__);
  19903. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_WebScene_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_WebScene_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  19904. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_WebScene_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default.a);
  19905. /***/ }),
  19906. /***/ "4066":
  19907. /***/ (function(module, exports, __webpack_require__) {
  19908. var arrayWithoutHoles = __webpack_require__("d372");
  19909. var iterableToArray = __webpack_require__("4fe1");
  19910. var nonIterableSpread = __webpack_require__("1e44");
  19911. function _toConsumableArray(arr) {
  19912. return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
  19913. }
  19914. module.exports = _toConsumableArray;
  19915. /***/ }),
  19916. /***/ "4156":
  19917. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  19918. "use strict";
  19919. __webpack_require__.r(__webpack_exports__);
  19920. /* harmony import */ var _CountTo_vue_vue_type_template_id_c61b74f4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("77c4");
  19921. /* harmony import */ var _CountTo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("f14a");
  19922. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _CountTo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _CountTo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  19923. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  19924. /* normalize component */
  19925. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  19926. _CountTo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  19927. _CountTo_vue_vue_type_template_id_c61b74f4___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  19928. _CountTo_vue_vue_type_template_id_c61b74f4___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  19929. false,
  19930. null,
  19931. null,
  19932. null
  19933. )
  19934. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  19935. /***/ }),
  19936. /***/ "425c":
  19937. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  19938. "use strict";
  19939. __webpack_require__.r(__webpack_exports__);
  19940. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PointsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("6608");
  19941. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PointsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PointsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  19942. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PointsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PointsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  19943. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PointsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  19944. /***/ }),
  19945. /***/ "4277":
  19946. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  19947. "use strict";
  19948. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/web-scene/WebScene.vue?vue&type=template&id=5436dd28&
  19949. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-web-scene"},[(_vm.sceneUrl)?_c('vc-viewer',{staticClass:"sm-component-web-scene__wrap",attrs:{"cesiumPath":_vm.cesiumPath},on:{"ready":_vm.ready}}):_vm._e()],1)}
  19950. var staticRenderFns = []
  19951. // CONCATENATED MODULE: ./src/mapboxgl/web-scene/WebScene.vue?vue&type=template&id=5436dd28&
  19952. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  19953. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  19954. /***/ }),
  19955. /***/ "4361":
  19956. /***/ (function(module, exports, __webpack_require__) {
  19957. "use strict";
  19958. var _interopRequireDefault = __webpack_require__("8e6d");
  19959. Object.defineProperty(exports, "__esModule", {
  19960. value: true
  19961. });
  19962. exports.default = void 0;
  19963. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  19964. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  19965. var _util = __webpack_require__("1448");
  19966. var Marker =
  19967. /*#__PURE__*/
  19968. function () {
  19969. function Marker(features) {
  19970. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  19971. (0, _classCallCheck2.default)(this, Marker);
  19972. this.markersElement = [];
  19973. this.features = features;
  19974. this.options = options;
  19975. }
  19976. (0, _createClass2.default)(Marker, [{
  19977. key: "setFeatures",
  19978. value: function setFeatures(features) {
  19979. this.markersElement = [];
  19980. this.features = features;
  19981. this.features && this._createMarker();
  19982. }
  19983. }, {
  19984. key: "getMarkersElement",
  19985. value: function getMarkersElement() {
  19986. return this.markersElement;
  19987. }
  19988. }, {
  19989. key: "setMarkersTextField",
  19990. value: function setMarkersTextField(textField) {
  19991. if (!this.features || JSON.stringify(this.features) === '{}') {
  19992. return;
  19993. }
  19994. this.options.textField = textField;
  19995. var name = document.getElementsByClassName('sm-component-animate-marker__name');
  19996. for (var i = 0; i < name.length; i++) {
  19997. var properties = this.features.features[i] && this.features.features[i].properties;
  19998. if (properties && properties[textField]) {
  19999. name[i].innerHTML = properties[textField];
  20000. } else {
  20001. name[i].innerHTML = '';
  20002. }
  20003. }
  20004. }
  20005. }, {
  20006. key: "setMarkersTextFontSize",
  20007. value: function setMarkersTextFontSize(textFontSize) {
  20008. this.options.textFontSize = textFontSize;
  20009. var pulse = document.getElementsByClassName('sm-component-animate-marker__name-container');
  20010. for (var i = 0; i < pulse.length; i++) {
  20011. pulse[i].style.fontSize = textFontSize + 'px';
  20012. }
  20013. }
  20014. }, {
  20015. key: "setMarkersTextColor",
  20016. value: function setMarkersTextColor(textColor) {
  20017. this.options.textColor = textColor;
  20018. var pulse = document.getElementsByClassName('sm-component-animate-marker__name-container');
  20019. for (var i = 0; i < pulse.length; i++) {
  20020. pulse[i].style.color = textColor;
  20021. }
  20022. }
  20023. }, {
  20024. key: "_getColorWithOpacity",
  20025. value: function _getColorWithOpacity(color, opacity) {
  20026. return (0, _util.getColorWithOpacity)(color, opacity);
  20027. }
  20028. }, {
  20029. key: "_getTextContainer",
  20030. value: function _getTextContainer(point, className) {
  20031. var name;
  20032. if (point.properties && Object.keys(point.properties).length !== 0 && this.options.textField) {
  20033. name = point.properties[this.options.textField];
  20034. }
  20035. var nameContainer = document.createElement('div');
  20036. nameContainer.className = "sm-component-animate-marker__name-container sm-component-animate-marker__name-container--".concat(className);
  20037. this.options.textColor && (nameContainer.style.color = this.options.textColor);
  20038. this.options.textFontSize && (nameContainer.style.fontSize = this.options.textFontSize + 'px');
  20039. var nameSpan = document.createElement('span');
  20040. nameSpan.className = "sm-component-animate-marker__".concat(className, " sm-component-animate-marker__name");
  20041. nameSpan.innerHTML = name || '';
  20042. nameContainer.appendChild(nameSpan);
  20043. return nameContainer;
  20044. }
  20045. }]);
  20046. return Marker;
  20047. }();
  20048. exports.default = Marker;
  20049. /***/ }),
  20050. /***/ "4362":
  20051. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  20052. "use strict";
  20053. __webpack_require__.r(__webpack_exports__);
  20054. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_StatisticsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("50af");
  20055. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_StatisticsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_StatisticsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  20056. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_StatisticsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_StatisticsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  20057. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_StatisticsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  20058. /***/ }),
  20059. /***/ "4366":
  20060. /***/ (function(module, exports, __webpack_require__) {
  20061. module.exports = __webpack_require__("bbe9").Transform
  20062. /***/ }),
  20063. /***/ "4409":
  20064. /***/ (function(module, exports, __webpack_require__) {
  20065. "use strict";
  20066. var _interopRequireDefault = __webpack_require__("8e6d");
  20067. Object.defineProperty(exports, "__esModule", {
  20068. value: true
  20069. });
  20070. exports.default = void 0;
  20071. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  20072. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  20073. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  20074. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  20075. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  20076. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  20077. var _FileModel = _interopRequireDefault(__webpack_require__("b5f4"));
  20078. var _FileTypes = __webpack_require__("3624");
  20079. var _FileReaderUtil = _interopRequireDefault(__webpack_require__("4569"));
  20080. var _lang = __webpack_require__("4e21");
  20081. var _bbox = _interopRequireDefault(__webpack_require__("1164"));
  20082. var _lodash = _interopRequireDefault(__webpack_require__("f344"));
  20083. /**
  20084. * @class OpenFileViewModel
  20085. * @param {mapboxgl.map} map - mapboxgl map 对象。
  20086. * @description OpenFile viewModel.
  20087. * @extends mapboxgl.Evented
  20088. */
  20089. var OpenFileViewModel =
  20090. /*#__PURE__*/
  20091. function (_mapboxgl$Evented) {
  20092. (0, _inherits2.default)(OpenFileViewModel, _mapboxgl$Evented);
  20093. function OpenFileViewModel() {
  20094. var _this;
  20095. (0, _classCallCheck2.default)(this, OpenFileViewModel);
  20096. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(OpenFileViewModel).call(this));
  20097. _this.prevLayerId = '';
  20098. _this.geojson = null;
  20099. _this.fileModel = new _FileModel.default();
  20100. return _this;
  20101. }
  20102. (0, _createClass2.default)(OpenFileViewModel, [{
  20103. key: "setMap",
  20104. value: function setMap(mapInfo) {
  20105. var map = mapInfo.map;
  20106. this.map = map;
  20107. }
  20108. }, {
  20109. key: "setClearLastLayer",
  20110. value: function setClearLastLayer(clearLastLayer) {
  20111. this.clearLastLayer = clearLastLayer;
  20112. }
  20113. }, {
  20114. key: "setFitBounds",
  20115. value: function setFitBounds(fitBounds) {
  20116. this.fitBounds = fitBounds;
  20117. }
  20118. }, {
  20119. key: "setAddToMap",
  20120. value: function setAddToMap(addToMap) {
  20121. this.addToMap = addToMap;
  20122. }
  20123. }, {
  20124. key: "readFile",
  20125. value: function readFile(fileEventObject) {
  20126. var inputDom = fileEventObject.target;
  20127. var file = inputDom.files[0];
  20128. var filePath = inputDom.value;
  20129. var fileName = file && file.name;
  20130. var fileType = (0, _FileTypes.getFileType)(fileName);
  20131. if (!filePath) {
  20132. return;
  20133. } // 文件格式不支持
  20134. if (!fileType) {
  20135. /**
  20136. * @event errorfileformat
  20137. * @description 文件格式不支持时触发。
  20138. * @property {string} messageType - 警告类型。
  20139. * @property {string} message - 警告内容。
  20140. */
  20141. this.fire('errorfileformat', {
  20142. messageType: 'failure',
  20143. message: (0, _lang.geti18n)().t("openFile.fileTypeUnsupported")
  20144. });
  20145. return false;
  20146. } // 文件类型限制
  20147. if (fileName !== '') {
  20148. // 给control 一份数据
  20149. // todo MVVM模式 应该是数据变化触发数据变化的事件
  20150. this.fileModel.set('loadFileObject', {
  20151. file: file,
  20152. filePath: filePath,
  20153. fileName: fileName,
  20154. fileType: fileType
  20155. }); // 响应选中文件添加到地图
  20156. this._readData();
  20157. }
  20158. }
  20159. }, {
  20160. key: "getUniqueId",
  20161. value: function getUniqueId() {
  20162. return (0, _lodash.default)("layer-smopenfile-");
  20163. }
  20164. }, {
  20165. key: "fitBoundsToData",
  20166. value: function fitBoundsToData() {
  20167. this.map.fitBounds((0, _bbox.default)(this.geojson), {
  20168. maxZoom: 12
  20169. });
  20170. }
  20171. }, {
  20172. key: "_readData",
  20173. value: function _readData() {
  20174. var _this2 = this;
  20175. // todo 需要测试另外两个
  20176. var me = this;
  20177. var type = this.fileModel.loadFileObject.fileType;
  20178. _FileReaderUtil.default.readFile(type, {
  20179. file: this.fileModel.loadFileObject.file,
  20180. path: this.fileModel.loadFileObject.filePath
  20181. }, function (data) {
  20182. // 将数据统一转换为 geoJson 格式加载到底图
  20183. _FileReaderUtil.default.processDataToGeoJson(type, data, function (geojson) {
  20184. if (geojson) {
  20185. /**
  20186. * @event openfilesucceeded
  20187. * @description 打开文件成功。
  20188. * @property {GeoJSONObject} result - GeoJSON 格式数据。
  20189. * @property {string} layerName - 图层名。
  20190. */
  20191. _this2.geojson = geojson;
  20192. var layerId = _this2.getUniqueId();
  20193. if (_this2.clearLastLayer) {
  20194. if (_this2.prevLayerId && _this2.map.getLayer(_this2.prevLayerId)) {
  20195. _this2.map.removeLayer(_this2.prevLayerId);
  20196. }
  20197. }
  20198. _this2.prevLayerId = layerId; // bounds
  20199. _this2.fire('openfilesucceeded', {
  20200. result: geojson,
  20201. layerId: layerId,
  20202. layerName: _this2.fileModel.loadFileObject.fileName.split('.')[0]
  20203. });
  20204. }
  20205. }, function (e) {
  20206. /**
  20207. * @event openfilefailed
  20208. * @description 打开文件失败。
  20209. * @property {String} messageType - 信息类型。
  20210. * @property {Object} message - e。
  20211. */
  20212. me.fire('openfilefailed', {
  20213. messageType: 'failure',
  20214. message: e
  20215. });
  20216. }, _this2);
  20217. }, function (e) {
  20218. /**
  20219. * @event openfilefailed
  20220. * @description 打开文件失败。
  20221. * @property {String} messageType - 信息类型。
  20222. * @property {String} message - 失败信息。
  20223. */
  20224. me.fire('openfilefailed', {
  20225. messageType: 'failure',
  20226. message: "".concat((0, _lang.geti18n)().t("openFile.openFileFail"), " ").concat(e.message)
  20227. });
  20228. }, this);
  20229. }
  20230. }]);
  20231. return OpenFileViewModel;
  20232. }(_mapboxGlEnhance.default.Evented);
  20233. var _default = OpenFileViewModel;
  20234. exports.default = _default;
  20235. /***/ }),
  20236. /***/ "443f":
  20237. /***/ (function(module, exports, __webpack_require__) {
  20238. "use strict";
  20239. module.exports = function bind(fn, thisArg) {
  20240. return function wrap() {
  20241. var args = new Array(arguments.length);
  20242. for (var i = 0; i < args.length; i++) {
  20243. args[i] = arguments[i];
  20244. }
  20245. return fn.apply(thisArg, args);
  20246. };
  20247. };
  20248. /***/ }),
  20249. /***/ "445a":
  20250. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  20251. "use strict";
  20252. __webpack_require__.r(__webpack_exports__);
  20253. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Identify_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("b2a7");
  20254. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Identify_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Identify_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  20255. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Identify_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Identify_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  20256. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Identify_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  20257. /***/ }),
  20258. /***/ "44c1":
  20259. /***/ (function(module, exports, __webpack_require__) {
  20260. "use strict";
  20261. var utils = __webpack_require__("d691");
  20262. /**
  20263. * Config-specific merge-function which creates a new config-object
  20264. * by merging two configuration objects together.
  20265. *
  20266. * @param {Object} config1
  20267. * @param {Object} config2
  20268. * @returns {Object} New object resulting from merging config2 to config1
  20269. */
  20270. module.exports = function mergeConfig(config1, config2) {
  20271. // eslint-disable-next-line no-param-reassign
  20272. config2 = config2 || {};
  20273. var config = {};
  20274. utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {
  20275. if (typeof config2[prop] !== 'undefined') {
  20276. config[prop] = config2[prop];
  20277. }
  20278. });
  20279. utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {
  20280. if (utils.isObject(config2[prop])) {
  20281. config[prop] = utils.deepMerge(config1[prop], config2[prop]);
  20282. } else if (typeof config2[prop] !== 'undefined') {
  20283. config[prop] = config2[prop];
  20284. } else if (utils.isObject(config1[prop])) {
  20285. config[prop] = utils.deepMerge(config1[prop]);
  20286. } else if (typeof config1[prop] !== 'undefined') {
  20287. config[prop] = config1[prop];
  20288. }
  20289. });
  20290. utils.forEach([
  20291. 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',
  20292. 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',
  20293. 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',
  20294. 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',
  20295. 'socketPath'
  20296. ], function defaultToConfig2(prop) {
  20297. if (typeof config2[prop] !== 'undefined') {
  20298. config[prop] = config2[prop];
  20299. } else if (typeof config1[prop] !== 'undefined') {
  20300. config[prop] = config1[prop];
  20301. }
  20302. });
  20303. return config;
  20304. };
  20305. /***/ }),
  20306. /***/ "4552":
  20307. /***/ (function(module, exports, __webpack_require__) {
  20308. "use strict";
  20309. /* WEBPACK VAR INJECTION */(function(global) {
  20310. var _interopRequireDefault = __webpack_require__("8e6d");
  20311. var _slicedToArray2 = _interopRequireDefault(__webpack_require__("5e4c"));
  20312. /*jshint esversion: 6 */
  20313. function colorcolor(color) {
  20314. var newColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "rgba";
  20315. var calculateOpacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  20316. color = color.toLowerCase();
  20317. newColor = newColor.toLowerCase();
  20318. var returnedColor = color;
  20319. var namedColor = __webpack_require__("8afa");
  20320. var r, g, b, a;
  20321. var roundTo = 4;
  20322. var colorDefinitions = {
  20323. rgb: {
  20324. re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
  20325. example: ["rgb(123, 234, 45)", "rgb(255,234,245)"],
  20326. toRGBA: function toRGBA(bits) {
  20327. return [parseInt(bits[1], 10), parseInt(bits[2], 10), parseInt(bits[3], 10), 1];
  20328. }
  20329. },
  20330. rgba: {
  20331. re: /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d+(?:\.\d+)?|\.\d+)\s*\)/,
  20332. example: ["rgba(123, 234, 45, 1)", "rgba(255,234,245, 0.5)"],
  20333. toRGBA: function toRGBA(bits) {
  20334. return [parseInt(bits[1], 10), parseInt(bits[2], 10), parseInt(bits[3], 10), parseFloat(bits[4])];
  20335. }
  20336. },
  20337. hex: {
  20338. re: /^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
  20339. example: ["00ff00", "336699"],
  20340. toRGBA: function toRGBA(bits) {
  20341. return [parseInt(bits[1], 16), parseInt(bits[2], 16), parseInt(bits[3], 16), 1];
  20342. }
  20343. },
  20344. hex3: {
  20345. re: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
  20346. example: ["fb0", "f0f"],
  20347. toRGBA: function toRGBA(bits) {
  20348. return [parseInt(bits[1] + bits[1], 16), parseInt(bits[2] + bits[2], 16), parseInt(bits[3] + bits[3], 16), 1];
  20349. }
  20350. },
  20351. hexa: {
  20352. re: /^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
  20353. example: ["00ff00ff", "336699a0"],
  20354. toRGBA: function toRGBA(bits) {
  20355. return [parseInt(bits[1], 16), parseInt(bits[2], 16), parseInt(bits[3], 16), parseInt(bits[4], 16) / 255];
  20356. }
  20357. },
  20358. hex4a: {
  20359. re: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
  20360. example: ["fb0f", "f0f8"],
  20361. toRGBA: function toRGBA(bits) {
  20362. return [parseInt(bits[1] + bits[1], 16), parseInt(bits[2] + bits[2], 16), parseInt(bits[3] + bits[3], 16), parseInt(bits[4] + bits[4], 16) / 255];
  20363. }
  20364. },
  20365. hsl: {
  20366. re: /^hsl\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%\)$/,
  20367. example: ["hsl(120, 100%, 25%)", "hsl(0, 100%, 50%)"],
  20368. toRGBA: function toRGBA(bits) {
  20369. bits[4] = 1;
  20370. var rgba = hslToRgb(bits);
  20371. return [rgba.r, rgba.g, rgba.b, rgba.a];
  20372. }
  20373. },
  20374. hsla: {
  20375. re: /^hsla\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%,\s*(\d+(?:\.\d+)?|\.\d+)\s*\)/,
  20376. example: ["hsla(120, 100%, 25%, 1)", "hsla(0, 100%, 50%, 0.5)"],
  20377. toRGBA: function toRGBA(bits) {
  20378. var rgba = hslToRgb(bits);
  20379. return [rgba.r, rgba.g, rgba.b, rgba.a];
  20380. }
  20381. },
  20382. hsv: {
  20383. re: /^hsv\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%\)$/,
  20384. example: ["hsv(120, 100%, 25%)", "hsv(0, 100%, 50%)"],
  20385. toRGBA: function toRGBA(bits) {
  20386. var rgb = hsvToRgb(bits);
  20387. return [rgb.r, rgb.g, rgb.b, 1];
  20388. }
  20389. },
  20390. hsb: {
  20391. re: /^hsb\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%\)$/,
  20392. example: ["hsb(120, 100%, 25%)", "hsb(0, 100%, 50%)"],
  20393. toRGBA: function toRGBA(bits) {
  20394. var rgb = hsvToRgb(bits);
  20395. return [rgb.r, rgb.g, rgb.b, 1];
  20396. }
  20397. }
  20398. }; // If this is a named color, convert it to hex
  20399. if (namedColor.hasOwnProperty(color)) {
  20400. color = namedColor[color];
  20401. color.forEach(function (piece, index) {
  20402. "use strict";
  20403. color[index] = ("0" + piece.toString(16)).slice(-2);
  20404. });
  20405. color = "#" + color.join('');
  20406. } // Search the color definitions for a match
  20407. for (var colorDefinition in colorDefinitions) {
  20408. var re = colorDefinitions[colorDefinition].re;
  20409. var processor = colorDefinitions[colorDefinition].toRGBA;
  20410. var bits = re.exec(color);
  20411. if (bits) {
  20412. var channels = processor(bits);
  20413. r = channels[0];
  20414. g = channels[1];
  20415. b = channels[2];
  20416. a = +(Math.round(channels[3] + ("e+" + roundTo)) + ("e-" + roundTo));
  20417. }
  20418. }
  20419. r = Math.round(r < 0 || isNaN(r) ? 0 : r > 255 ? 255 : r);
  20420. g = Math.round(g < 0 || isNaN(g) ? 0 : g > 255 ? 255 : g);
  20421. b = Math.round(b < 0 || isNaN(b) ? 0 : b > 255 ? 255 : b);
  20422. a = a < 0 || isNaN(a) ? 0 : a > 1 ? 1 : a;
  20423. switch (newColor) {
  20424. case "hex":
  20425. returnedColor = "#" + ("0" + r.toString(16)).slice(-2) + ("0" + g.toString(16)).slice(-2) + ("0" + b.toString(16)).slice(-2);
  20426. break;
  20427. case "hexa":
  20428. if (calculateOpacity) {
  20429. var _calculateOpacityFrom = calculateOpacityFromWhite(r, g, b, a);
  20430. var _calculateOpacityFrom2 = (0, _slicedToArray2.default)(_calculateOpacityFrom, 4);
  20431. r = _calculateOpacityFrom2[0];
  20432. g = _calculateOpacityFrom2[1];
  20433. b = _calculateOpacityFrom2[2];
  20434. a = _calculateOpacityFrom2[3];
  20435. }
  20436. returnedColor = "#" + ("0" + r.toString(16)).slice(-2) + ("0" + g.toString(16)).slice(-2) + ("0" + b.toString(16)).slice(-2) + ("0" + Math.round(255 * a).toString(16)).slice(-2);
  20437. break;
  20438. case "hsl":
  20439. var hsl = rgbToHsl({
  20440. "r": r,
  20441. "g": g,
  20442. "b": b
  20443. });
  20444. returnedColor = "hsl(".concat(hsl.h, ",").concat(hsl.s, "%,").concat(hsl.l, "%)");
  20445. break;
  20446. case "hsla":
  20447. if (calculateOpacity) {
  20448. var _calculateOpacityFrom3 = calculateOpacityFromWhite(r, g, b, a);
  20449. var _calculateOpacityFrom4 = (0, _slicedToArray2.default)(_calculateOpacityFrom3, 4);
  20450. r = _calculateOpacityFrom4[0];
  20451. g = _calculateOpacityFrom4[1];
  20452. b = _calculateOpacityFrom4[2];
  20453. a = _calculateOpacityFrom4[3];
  20454. }
  20455. var hsla = rgbToHsl({
  20456. "r": r,
  20457. "g": g,
  20458. "b": b,
  20459. "a": a
  20460. });
  20461. returnedColor = "hsla(".concat(hsla.h, ",").concat(hsla.s, "%,").concat(hsla.l, "%,").concat(hsla.a, ")");
  20462. break;
  20463. case "hsb":
  20464. /* Same as `hsv` */
  20465. var hsb = rgbToHsv({
  20466. "r": r,
  20467. "g": g,
  20468. "b": b
  20469. });
  20470. returnedColor = "hsb(".concat(hsb.h, ",").concat(hsb.s, "%,").concat(hsb.v, "%)");
  20471. break;
  20472. case "hsv":
  20473. var hsv = rgbToHsv({
  20474. "r": r,
  20475. "g": g,
  20476. "b": b
  20477. });
  20478. returnedColor = "hsv(".concat(hsv.h, ",").concat(hsv.s, "%,").concat(hsv.v, "%)");
  20479. break;
  20480. case "rgb":
  20481. returnedColor = "rgb(".concat(r, ",").concat(g, ",").concat(b, ")");
  20482. break;
  20483. case "rgba":
  20484. /* falls through */
  20485. default:
  20486. if (calculateOpacity) {
  20487. var _calculateOpacityFrom5 = calculateOpacityFromWhite(r, g, b, a);
  20488. var _calculateOpacityFrom6 = (0, _slicedToArray2.default)(_calculateOpacityFrom5, 4);
  20489. r = _calculateOpacityFrom6[0];
  20490. g = _calculateOpacityFrom6[1];
  20491. b = _calculateOpacityFrom6[2];
  20492. a = _calculateOpacityFrom6[3];
  20493. }
  20494. returnedColor = "rgba(".concat(r, ",").concat(g, ",").concat(b, ",").concat(a, ")");
  20495. break;
  20496. }
  20497. return returnedColor;
  20498. }
  20499. function calculateOpacityFromWhite(r, g, b, a) {
  20500. "use strict";
  20501. var min = 0;
  20502. a = (255 - (min = Math.min(r, g, b))) / 255;
  20503. r = ( false || (r - min) / a).toFixed(0);
  20504. g = ( false || (g - min) / a).toFixed(0);
  20505. b = ( false || (b - min) / a).toFixed(0);
  20506. a = parseFloat(a.toFixed(4));
  20507. return [r, g, b, a];
  20508. }
  20509. function hslToRgb(bits) {
  20510. var rgba = {},
  20511. hsl = {
  20512. h: bits[1] / 360,
  20513. s: bits[2] / 100,
  20514. l: bits[3] / 100,
  20515. a: parseFloat(bits[4])
  20516. };
  20517. if (hsl.s === 0) {
  20518. var v = 255 * hsl.l;
  20519. rgba = {
  20520. r: v,
  20521. g: v,
  20522. b: v,
  20523. a: hsl.a
  20524. };
  20525. } else {
  20526. var q = hsl.l < 0.5 ? hsl.l * (1 + hsl.s) : hsl.l + hsl.s - hsl.l * hsl.s;
  20527. var p = 2 * hsl.l - q;
  20528. rgba.r = hueToRgb(p, q, hsl.h + 1 / 3) * 255;
  20529. rgba.g = hueToRgb(p, q, hsl.h) * 255;
  20530. rgba.b = hueToRgb(p, q, hsl.h - 1 / 3) * 255;
  20531. rgba.a = hsl.a;
  20532. }
  20533. return rgba;
  20534. }
  20535. function rgbToHsl(rgba) {
  20536. rgba.r = rgba.r / 255;
  20537. rgba.g = rgba.g / 255;
  20538. rgba.b = rgba.b / 255;
  20539. var max = Math.max(rgba.r, rgba.g, rgba.b),
  20540. min = Math.min(rgba.r, rgba.g, rgba.b),
  20541. hsl = [],
  20542. d;
  20543. hsl.a = rgba.a;
  20544. hsl.l = (max + min) / 2;
  20545. if (max === min) {
  20546. hsl.h = 0;
  20547. hsl.s = 0;
  20548. } else {
  20549. d = max - min;
  20550. hsl.s = hsl.l >= 0.5 ? d / (2 - max - min) : d / (max + min);
  20551. switch (max) {
  20552. case rgba.r:
  20553. hsl.h = (rgba.g - rgba.b) / d + (rgba.g < rgba.b ? 6 : 0);
  20554. break;
  20555. case rgba.g:
  20556. hsl.h = (rgba.b - rgba.r) / d + 2;
  20557. break;
  20558. case rgba.b:
  20559. hsl.h = (rgba.r - rgba.g) / d + 4;
  20560. break;
  20561. }
  20562. hsl.h /= 6;
  20563. }
  20564. hsl.h = parseInt((hsl.h * 360).toFixed(0), 10);
  20565. hsl.s = parseInt((hsl.s * 100).toFixed(0), 10);
  20566. hsl.l = parseInt((hsl.l * 100).toFixed(0), 10);
  20567. return hsl;
  20568. }
  20569. function hsvToRgb(bits) {
  20570. var rgb = {},
  20571. hsv = {
  20572. h: bits[1] / 360,
  20573. s: bits[2] / 100,
  20574. v: bits[3] / 100
  20575. },
  20576. i = Math.floor(hsv.h * 6),
  20577. f = hsv.h * 6 - i,
  20578. p = hsv.v * (1 - hsv.s),
  20579. q = hsv.v * (1 - f * hsv.s),
  20580. t = hsv.v * (1 - (1 - f) * hsv.s);
  20581. switch (i % 6) {
  20582. case 0:
  20583. rgb.r = hsv.v;
  20584. rgb.g = t;
  20585. rgb.b = p;
  20586. break;
  20587. case 1:
  20588. rgb.r = q;
  20589. rgb.g = hsv.v;
  20590. rgb.b = p;
  20591. break;
  20592. case 2:
  20593. rgb.r = p;
  20594. rgb.g = hsv.v;
  20595. rgb.b = t;
  20596. break;
  20597. case 3:
  20598. rgb.r = p;
  20599. rgb.g = q;
  20600. rgb.b = hsv.v;
  20601. break;
  20602. case 4:
  20603. rgb.r = t;
  20604. rgb.g = p;
  20605. rgb.b = hsv.v;
  20606. break;
  20607. case 5:
  20608. rgb.r = hsv.v;
  20609. rgb.g = p;
  20610. rgb.b = q;
  20611. break;
  20612. }
  20613. rgb.r = rgb.r * 255;
  20614. rgb.g = rgb.g * 255;
  20615. rgb.b = rgb.b * 255;
  20616. return rgb;
  20617. }
  20618. function rgbToHsv(rgba) {
  20619. rgba.r = toPercent(parseInt(rgba.r, 10) % 256, 256);
  20620. rgba.g = toPercent(parseInt(rgba.g, 10) % 256, 256);
  20621. rgba.b = toPercent(parseInt(rgba.b, 10) % 256, 256);
  20622. var max = Math.max(rgba.r, rgba.g, rgba.b),
  20623. min = Math.min(rgba.r, rgba.g, rgba.b),
  20624. d = max - min,
  20625. hsv = {
  20626. "h": 0,
  20627. "s": max === 0 ? 0 : d / max,
  20628. "v": max
  20629. };
  20630. if (max !== min) {
  20631. switch (max) {
  20632. case rgba.r:
  20633. hsv.h = (rgba.g - rgba.b) / d + (rgba.g < rgba.b ? 6 : 0);
  20634. break;
  20635. case rgba.g:
  20636. hsv.h = (rgba.b - rgba.r) / d + 2;
  20637. break;
  20638. case rgba.b:
  20639. hsv.h = (rgba.r - rgba.g) / d + 4;
  20640. break;
  20641. }
  20642. hsv.h /= 6;
  20643. }
  20644. hsv.h = parseInt((hsv.h * 360).toFixed(0), 10);
  20645. hsv.s = parseInt((hsv.s * 100).toFixed(0), 10);
  20646. hsv.v = parseInt((hsv.v * 100).toFixed(0), 10);
  20647. return hsv;
  20648. }
  20649. function hueToRgb(p, q, t) {
  20650. if (t < 0) {
  20651. t += 1;
  20652. }
  20653. if (t > 1) {
  20654. t -= 1;
  20655. }
  20656. if (t < 1 / 6) {
  20657. return p + (q - p) * 6 * t;
  20658. }
  20659. if (t < 1 / 2) {
  20660. return q;
  20661. }
  20662. if (t < 2 / 3) {
  20663. return p + (q - p) * ((2 / 3 - t) * 6);
  20664. }
  20665. return p;
  20666. }
  20667. function toPercent(amount, limit) {
  20668. return amount / limit;
  20669. }
  20670. module.exports = colorcolor;
  20671. global.colorcolor = module.exports;
  20672. /* ew */
  20673. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("698d")))
  20674. /***/ }),
  20675. /***/ "455a":
  20676. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  20677. "use strict";
  20678. __webpack_require__.r(__webpack_exports__);
  20679. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_OpenFile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3826");
  20680. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_OpenFile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_OpenFile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  20681. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_OpenFile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_OpenFile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  20682. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_OpenFile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  20683. /***/ }),
  20684. /***/ "4569":
  20685. /***/ (function(module, exports, __webpack_require__) {
  20686. "use strict";
  20687. var _interopRequireDefault = __webpack_require__("8e6d");
  20688. Object.defineProperty(exports, "__esModule", {
  20689. value: true
  20690. });
  20691. exports.default = void 0;
  20692. var _xlsx = _interopRequireDefault(__webpack_require__("1c98"));
  20693. var _FileTypes = __webpack_require__("3624");
  20694. var _shapefile = __webpack_require__("ffd5");
  20695. var _geometryUtil = __webpack_require__("c599");
  20696. var _util = __webpack_require__("1448");
  20697. var _lang = __webpack_require__("4e21");
  20698. var FileReaderUtil = {
  20699. rABS: typeof FileReader !== 'undefined' && FileReader.prototype && FileReader.prototype.readAsBinaryString,
  20700. rABF: typeof FileReader !== 'undefined' && FileReader.prototype && FileReader.prototype.readAsArrayBuffer,
  20701. rAT: typeof FileReader !== 'undefined' && FileReader.prototype && FileReader.prototype.readAsText,
  20702. /**
  20703. * @function SuperMap.Components.FileReaderUtil.prototype.readFile
  20704. * @description 读取文件
  20705. * @param {string} fileType - 当前读取的文件类型
  20706. *
  20707. * @param {Object} file - 读取回来的文件内容对象
  20708. * @param {function} success - 读取文件成功回调函数
  20709. * @param {function} failed - 读取文件失败回调函数
  20710. * @param {Object} context - 回调重定向对象
  20711. */
  20712. readFile: function readFile(fileType, file, success, failed, context) {
  20713. if (_FileTypes.FileTypes.JSON === fileType || _FileTypes.FileTypes.GEOJSON === fileType) {
  20714. this.readTextFile(file, success, failed, context);
  20715. } else if (_FileTypes.FileTypes.EXCEL === fileType || _FileTypes.FileTypes.CSV === fileType) {
  20716. this.readXLSXFile(file, success, failed, context);
  20717. } else if (_FileTypes.FileTypes.SHP === fileType) {
  20718. this.readShpFile(file, success, failed, context);
  20719. }
  20720. },
  20721. /**
  20722. * 读取文本文件
  20723. * @param file
  20724. * @param success
  20725. * @param failed
  20726. * @param {Object} context - 回调重定向对象
  20727. */
  20728. readTextFile: function readTextFile(file, success, failed, context) {
  20729. var reader = new FileReader();
  20730. reader.onloadend = function (evt) {
  20731. success && success.call(context, evt.target.result);
  20732. };
  20733. reader.onerror = function (error) {
  20734. failed && failed.call(context, error);
  20735. };
  20736. this.rAT ? reader.readAsText(file.file, 'utf-8') : reader.readAsBinaryString(file.file);
  20737. },
  20738. /**
  20739. * 读取excel或csv文件
  20740. * @param file
  20741. * @param success
  20742. * @param failed
  20743. * @param {Object} context - 回调重定向对象
  20744. */
  20745. readXLSXFile: function readXLSXFile(file, success, failed, context) {
  20746. var reader = new FileReader();
  20747. reader.onloadend = function (evt) {
  20748. var xLSXData = new Uint8Array(evt.target.result);
  20749. var workbook = _xlsx.default.read(xLSXData, {
  20750. type: 'array'
  20751. });
  20752. try {
  20753. if (workbook && workbook.SheetNames && workbook.SheetNames.length > 0) {
  20754. // 暂时只读取第一个sheets的内容
  20755. var sheetName = workbook.SheetNames[0];
  20756. var xLSXCSVString = _xlsx.default.utils.sheet_to_csv(workbook.Sheets[sheetName]);
  20757. success && success.call(context, xLSXCSVString);
  20758. }
  20759. } catch (error) {
  20760. failed && failed.call(context, error);
  20761. }
  20762. };
  20763. reader.onerror = function (error) {
  20764. failed && failed.call(context, error);
  20765. };
  20766. this.rABF && reader.readAsArrayBuffer(file.file);
  20767. },
  20768. readShpFile: function readShpFile(file, success, failed, context) {
  20769. var reader = new FileReader();
  20770. reader.onloadend = function (evt) {
  20771. var geojson = [];
  20772. (0, _shapefile.open)(evt.target.result).then(function (source) {
  20773. source.read().then(function log(result) {
  20774. if (result.done) return;
  20775. geojson.push(result.value);
  20776. return source.read().then(log);
  20777. }).then(function () {
  20778. success.call(context, geojson);
  20779. });
  20780. }).catch(function (error) {
  20781. return console.error(error.stack);
  20782. });
  20783. };
  20784. reader.onerror = function (error) {
  20785. failed && failed.call(context, error);
  20786. };
  20787. this.rABF && reader.readAsArrayBuffer(file.file);
  20788. },
  20789. /**
  20790. * @function SuperMap.Components.FileReaderUtil.prototype.processDataToGeoJson
  20791. * @description 将读取回来得数据统一处理为 GeoJSON 格式
  20792. * @param {string} type - 文件类型
  20793. * @param {Object} data - 读取返回的数据对象
  20794. * @param {function} success - 数据处理成功的回调
  20795. * @param {function} failed - 数据处理失败的回调
  20796. * @param {Object} context - 回调重定向对象
  20797. * @returns {GeoJSONObject} 返回标准 GeoJSON 规范格式数据
  20798. * @private
  20799. */
  20800. processDataToGeoJson: function processDataToGeoJson(type, data, success, failed, context) {
  20801. var geojson = null;
  20802. if (type === 'EXCEL' || type === 'CSV') {
  20803. geojson = this.processExcelDataToGeoJson(data);
  20804. geojson = Array.isArray(geojson) ? this.toGeoJSON(geojson) : geojson;
  20805. } else if (type === 'JSON' || type === 'GEOJSON' || type === 'SHP' || type === 'ZIP') {
  20806. var result = data;
  20807. result = Array.isArray(result) ? this.toGeoJSON(result) : result; // geojson、json未知,通过类容来判断
  20808. if (typeof result === 'string') {
  20809. result = JSON.parse(result);
  20810. }
  20811. if (result.type === 'ISERVER') {
  20812. geojson = result.data.recordsets[0].features;
  20813. } else if (result.type === 'FeatureCollection') {
  20814. // geojson
  20815. geojson = result;
  20816. } else {
  20817. // 不支持数据
  20818. failed && failed.call(context, (0, _lang.geti18n)().t("openFile.fileTypeUnsupported"));
  20819. return;
  20820. }
  20821. } else {
  20822. failed && failed.call(context, '数据格式化错误');
  20823. return;
  20824. }
  20825. if (geojson.features[0]) {
  20826. var geometryType = geojson.features[0].geometry.type;
  20827. if (geometryType === 'Polygon' || geometryType === 'MultiPolygon') {
  20828. geojson.features = (0, _geometryUtil.handleMultyPolygon)(geojson.features);
  20829. }
  20830. }
  20831. success && success.call(context, geojson);
  20832. },
  20833. toGeoJSON: function toGeoJSON(features) {
  20834. return {
  20835. type: 'FeatureCollection',
  20836. features: features
  20837. };
  20838. },
  20839. /**
  20840. * @function SuperMap.Components.FileReaderUtil.prototype.processExcelDataToGeoJson
  20841. * @description 表格文件数据处理
  20842. * @param {Object} data - 读取的表格文件数据
  20843. * @returns {GeoJSONObject} 返回标准 GeoJSON 规范格式数据
  20844. * @private
  20845. */
  20846. processExcelDataToGeoJson: function processExcelDataToGeoJson(data) {
  20847. // 处理为对象格式转化
  20848. var dataContent = this.string2Csv(data);
  20849. var fieldCaptions = dataContent.colTitles; // 位置属性处理
  20850. var xfieldIndex = -1;
  20851. var yfieldIndex = -1;
  20852. for (var i = 0, len = fieldCaptions.length; i < len; i++) {
  20853. if ((0, _util.isXField)(fieldCaptions[i])) {
  20854. xfieldIndex = i;
  20855. }
  20856. if ((0, _util.isYField)(fieldCaptions[i])) {
  20857. yfieldIndex = i;
  20858. }
  20859. } // feature 构建后期支持坐标系 4326/3857
  20860. var features = [];
  20861. for (var _i = 0, _len = dataContent.rows.length; _i < _len; _i++) {
  20862. var row = dataContent.rows[_i]; // if (featureFrom === "LonLat") {
  20863. var x = Number(row[xfieldIndex]);
  20864. var y = Number(row[yfieldIndex]); // 属性信息
  20865. var attributes = {};
  20866. for (var index in dataContent.colTitles) {
  20867. var key = dataContent.colTitles[index];
  20868. attributes[key] = dataContent.rows[_i][index];
  20869. } // 目前csv 只支持处理点,所以先生成点类型的 geojson
  20870. var feature = {
  20871. type: 'Feature',
  20872. geometry: {
  20873. type: 'Point',
  20874. coordinates: [x, y]
  20875. },
  20876. properties: attributes
  20877. };
  20878. features.push(feature);
  20879. }
  20880. return features;
  20881. },
  20882. /**
  20883. * 字符串转为dataEditor 支持的csv格式数据
  20884. * @param string
  20885. * @param withoutTitle
  20886. */
  20887. string2Csv: function string2Csv(string, withoutTitle) {
  20888. // let rows = string.split('\r\n');
  20889. var rows = string.split('\n');
  20890. var result = {};
  20891. if (!withoutTitle) {
  20892. result['colTitles'] = rows[0].split(',');
  20893. } else {
  20894. result['colTitles'] = [];
  20895. }
  20896. result['rows'] = [];
  20897. for (var i = withoutTitle ? 0 : 1; i < rows.length; i++) {
  20898. rows[i] && result['rows'].push(rows[i].split(','));
  20899. }
  20900. return result;
  20901. }
  20902. };
  20903. var _default = FileReaderUtil;
  20904. exports.default = _default;
  20905. /***/ }),
  20906. /***/ "4689":
  20907. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  20908. "use strict";
  20909. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/web-map/control/scale/Scale.vue?vue&type=template&id=348a4c78&
  20910. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-scale",style:([_vm.background && _vm.getBackgroundStyle, (_vm.textColor && _vm.getTextColorStyle) || _vm.getColorStyle(0)])},[_c('span',[_vm._v(_vm._s(_vm.content))])])}
  20911. var staticRenderFns = []
  20912. // CONCATENATED MODULE: ./src/mapboxgl/web-map/control/scale/Scale.vue?vue&type=template&id=348a4c78&
  20913. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  20914. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  20915. /***/ }),
  20916. /***/ "477a":
  20917. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  20918. "use strict";
  20919. __webpack_require__.r(__webpack_exports__);
  20920. /* harmony import */ var _TdtSearch_vue_vue_type_template_id_7b37535d___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("9832");
  20921. /* harmony import */ var _TdtSearch_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("bc8a");
  20922. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _TdtSearch_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _TdtSearch_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  20923. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  20924. /* normalize component */
  20925. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  20926. _TdtSearch_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  20927. _TdtSearch_vue_vue_type_template_id_7b37535d___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  20928. _TdtSearch_vue_vue_type_template_id_7b37535d___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  20929. false,
  20930. null,
  20931. null,
  20932. null
  20933. )
  20934. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  20935. /***/ }),
  20936. /***/ "4849":
  20937. /***/ (function(module, exports, __webpack_require__) {
  20938. !function(t,e){ true?module.exports=e():undefined}(this,function(){return function(t){function e(n){if(i[n])return i[n].exports;var a=i[n]={i:n,l:!1,exports:{}};return t[n].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var i={};return e.m=t,e.c=i,e.i=function(t){return t},e.d=function(t,i,n){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/dist/",e(e.s=2)}([function(t,e,i){var n=i(4)(i(1),i(5),null,null);t.exports=n.exports},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(3);e.default={props:{startVal:{type:Number,required:!1,default:0},endVal:{type:Number,required:!1,default:2017},duration:{type:Number,required:!1,default:3e3},autoplay:{type:Boolean,required:!1,default:!0},decimals:{type:Number,required:!1,default:0,validator:function(t){return t>=0}},decimal:{type:String,required:!1,default:"."},separator:{type:String,required:!1,default:","},prefix:{type:String,required:!1,default:""},suffix:{type:String,required:!1,default:""},useEasing:{type:Boolean,required:!1,default:!0},easingFn:{type:Function,default:function(t,e,i,n){return i*(1-Math.pow(2,-10*t/n))*1024/1023+e}}},data:function(){return{localStartVal:this.startVal,displayValue:this.formatNumber(this.startVal),printVal:null,paused:!1,localDuration:this.duration,startTime:null,timestamp:null,remaining:null,rAF:null}},computed:{countDown:function(){return this.startVal>this.endVal}},watch:{startVal:function(){this.autoplay&&this.start()},endVal:function(){this.autoplay&&this.start()}},mounted:function(){this.autoplay&&this.start(),this.$emit("mountedCallback")},methods:{start:function(){this.localStartVal=this.startVal,this.startTime=null,this.localDuration=this.duration,this.paused=!1,this.rAF=(0,n.requestAnimationFrame)(this.count)},pauseResume:function(){this.paused?(this.resume(),this.paused=!1):(this.pause(),this.paused=!0)},pause:function(){(0,n.cancelAnimationFrame)(this.rAF)},resume:function(){this.startTime=null,this.localDuration=+this.remaining,this.localStartVal=+this.printVal,(0,n.requestAnimationFrame)(this.count)},reset:function(){this.startTime=null,(0,n.cancelAnimationFrame)(this.rAF),this.displayValue=this.formatNumber(this.startVal)},count:function(t){this.startTime||(this.startTime=t),this.timestamp=t;var e=t-this.startTime;this.remaining=this.localDuration-e,this.useEasing?this.countDown?this.printVal=this.localStartVal-this.easingFn(e,0,this.localStartVal-this.endVal,this.localDuration):this.printVal=this.easingFn(e,this.localStartVal,this.endVal-this.localStartVal,this.localDuration):this.countDown?this.printVal=this.localStartVal-(this.localStartVal-this.endVal)*(e/this.localDuration):this.printVal=this.localStartVal+(this.localStartVal-this.startVal)*(e/this.localDuration),this.countDown?this.printVal=this.printVal<this.endVal?this.endVal:this.printVal:this.printVal=this.printVal>this.endVal?this.endVal:this.printVal,this.displayValue=this.formatNumber(this.printVal),e<this.localDuration?this.rAF=(0,n.requestAnimationFrame)(this.count):this.$emit("callback")},isNumber:function(t){return!isNaN(parseFloat(t))},formatNumber:function(t){t=t.toFixed(this.decimals),t+="";var e=t.split("."),i=e[0],n=e.length>1?this.decimal+e[1]:"",a=/(\d+)(\d{3})/;if(this.separator&&!this.isNumber(this.separator))for(;a.test(i);)i=i.replace(a,"$1"+this.separator+"$2");return this.prefix+i+n+this.suffix}},destroyed:function(){(0,n.cancelAnimationFrame)(this.rAF)}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),a=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=a.default,"undefined"!=typeof window&&window.Vue&&window.Vue.component("count-to",a.default)},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=0,a="webkit moz ms o".split(" "),r=void 0,o=void 0;if("undefined"==typeof window)e.requestAnimationFrame=r=function(){},e.cancelAnimationFrame=o=function(){};else{e.requestAnimationFrame=r=window.requestAnimationFrame,e.cancelAnimationFrame=o=window.cancelAnimationFrame;for(var s=void 0,u=0;u<a.length&&(!r||!o);u++)s=a[u],e.requestAnimationFrame=r=r||window[s+"RequestAnimationFrame"],e.cancelAnimationFrame=o=o||window[s+"CancelAnimationFrame"]||window[s+"CancelRequestAnimationFrame"];r&&o||(e.requestAnimationFrame=r=function(t){var e=(new Date).getTime(),i=Math.max(0,16-(e-n)),a=window.setTimeout(function(){t(e+i)},i);return n=e+i,a},e.cancelAnimationFrame=o=function(t){window.clearTimeout(t)})}e.requestAnimationFrame=r,e.cancelAnimationFrame=o},function(t,e){t.exports=function(t,e,i,n){var a,r=t=t||{},o=typeof t.default;"object"!==o&&"function"!==o||(a=t,r=t.default);var s="function"==typeof r?r.options:r;if(e&&(s.render=e.render,s.staticRenderFns=e.staticRenderFns),i&&(s._scopeId=i),n){var u=Object.create(s.computed||null);Object.keys(n).forEach(function(t){var e=n[t];u[t]=function(){return e}}),s.computed=u}return{esModule:a,exports:r,options:s}}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement;return(t._self._c||e)("span",[t._v("\n "+t._s(t.displayValue)+"\n")])},staticRenderFns:[]}}])});
  20939. //# sourceMappingURL=vue-count-to.min.js.map
  20940. /***/ }),
  20941. /***/ "48a7":
  20942. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  20943. "use strict";
  20944. __webpack_require__.r(__webpack_exports__);
  20945. /* harmony import */ var _MiniMap_vue_vue_type_template_id_18481454___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("4ece");
  20946. /* harmony import */ var _MiniMap_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("7e38");
  20947. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _MiniMap_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _MiniMap_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  20948. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  20949. /* normalize component */
  20950. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  20951. _MiniMap_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  20952. _MiniMap_vue_vue_type_template_id_18481454___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  20953. _MiniMap_vue_vue_type_template_id_18481454___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  20954. false,
  20955. null,
  20956. null,
  20957. null
  20958. )
  20959. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  20960. /***/ }),
  20961. /***/ "48e5":
  20962. /***/ (function(module, exports, __webpack_require__) {
  20963. "use strict";
  20964. var utils = __webpack_require__("d691");
  20965. function InterceptorManager() {
  20966. this.handlers = [];
  20967. }
  20968. /**
  20969. * Add a new interceptor to the stack
  20970. *
  20971. * @param {Function} fulfilled The function to handle `then` for a `Promise`
  20972. * @param {Function} rejected The function to handle `reject` for a `Promise`
  20973. *
  20974. * @return {Number} An ID used to remove interceptor later
  20975. */
  20976. InterceptorManager.prototype.use = function use(fulfilled, rejected) {
  20977. this.handlers.push({
  20978. fulfilled: fulfilled,
  20979. rejected: rejected
  20980. });
  20981. return this.handlers.length - 1;
  20982. };
  20983. /**
  20984. * Remove an interceptor from the stack
  20985. *
  20986. * @param {Number} id The ID that was returned by `use`
  20987. */
  20988. InterceptorManager.prototype.eject = function eject(id) {
  20989. if (this.handlers[id]) {
  20990. this.handlers[id] = null;
  20991. }
  20992. };
  20993. /**
  20994. * Iterate over all the registered interceptors
  20995. *
  20996. * This method is particularly useful for skipping over any
  20997. * interceptors that may have become `null` calling `eject`.
  20998. *
  20999. * @param {Function} fn The function to call for each interceptor
  21000. */
  21001. InterceptorManager.prototype.forEach = function forEach(fn) {
  21002. utils.forEach(this.handlers, function forEachHandler(h) {
  21003. if (h !== null) {
  21004. fn(h);
  21005. }
  21006. });
  21007. };
  21008. module.exports = InterceptorManager;
  21009. /***/ }),
  21010. /***/ "49c0":
  21011. /***/ (function(module, exports, __webpack_require__) {
  21012. "use strict";
  21013. Object.defineProperty(exports, '__esModule', { value: true });
  21014. var helpers = __webpack_require__("38ce");
  21015. /**
  21016. * Callback for coordEach
  21017. *
  21018. * @callback coordEachCallback
  21019. * @param {Array<number>} currentCoord The current coordinate being processed.
  21020. * @param {number} coordIndex The current index of the coordinate being processed.
  21021. * @param {number} featureIndex The current index of the Feature being processed.
  21022. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  21023. * @param {number} geometryIndex The current index of the Geometry being processed.
  21024. */
  21025. /**
  21026. * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()
  21027. *
  21028. * @name coordEach
  21029. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  21030. * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)
  21031. * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
  21032. * @returns {void}
  21033. * @example
  21034. * var features = turf.featureCollection([
  21035. * turf.point([26, 37], {"foo": "bar"}),
  21036. * turf.point([36, 53], {"hello": "world"})
  21037. * ]);
  21038. *
  21039. * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
  21040. * //=currentCoord
  21041. * //=coordIndex
  21042. * //=featureIndex
  21043. * //=multiFeatureIndex
  21044. * //=geometryIndex
  21045. * });
  21046. */
  21047. function coordEach(geojson, callback, excludeWrapCoord) {
  21048. // Handles null Geometry -- Skips this GeoJSON
  21049. if (geojson === null) return;
  21050. var j, k, l, geometry, stopG, coords,
  21051. geometryMaybeCollection,
  21052. wrapShrink = 0,
  21053. coordIndex = 0,
  21054. isGeometryCollection,
  21055. type = geojson.type,
  21056. isFeatureCollection = type === 'FeatureCollection',
  21057. isFeature = type === 'Feature',
  21058. stop = isFeatureCollection ? geojson.features.length : 1;
  21059. // This logic may look a little weird. The reason why it is that way
  21060. // is because it's trying to be fast. GeoJSON supports multiple kinds
  21061. // of objects at its root: FeatureCollection, Features, Geometries.
  21062. // This function has the responsibility of handling all of them, and that
  21063. // means that some of the `for` loops you see below actually just don't apply
  21064. // to certain inputs. For instance, if you give this just a
  21065. // Point geometry, then both loops are short-circuited and all we do
  21066. // is gradually rename the input until it's called 'geometry'.
  21067. //
  21068. // This also aims to allocate as few resources as possible: just a
  21069. // few numbers and booleans, rather than any temporary arrays as would
  21070. // be required with the normalization approach.
  21071. for (var featureIndex = 0; featureIndex < stop; featureIndex++) {
  21072. geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :
  21073. (isFeature ? geojson.geometry : geojson));
  21074. isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;
  21075. stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;
  21076. for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {
  21077. var multiFeatureIndex = 0;
  21078. var geometryIndex = 0;
  21079. geometry = isGeometryCollection ?
  21080. geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;
  21081. // Handles null Geometry -- Skips this geometry
  21082. if (geometry === null) continue;
  21083. coords = geometry.coordinates;
  21084. var geomType = geometry.type;
  21085. wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;
  21086. switch (geomType) {
  21087. case null:
  21088. break;
  21089. case 'Point':
  21090. if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  21091. coordIndex++;
  21092. multiFeatureIndex++;
  21093. break;
  21094. case 'LineString':
  21095. case 'MultiPoint':
  21096. for (j = 0; j < coords.length; j++) {
  21097. if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  21098. coordIndex++;
  21099. if (geomType === 'MultiPoint') multiFeatureIndex++;
  21100. }
  21101. if (geomType === 'LineString') multiFeatureIndex++;
  21102. break;
  21103. case 'Polygon':
  21104. case 'MultiLineString':
  21105. for (j = 0; j < coords.length; j++) {
  21106. for (k = 0; k < coords[j].length - wrapShrink; k++) {
  21107. if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  21108. coordIndex++;
  21109. }
  21110. if (geomType === 'MultiLineString') multiFeatureIndex++;
  21111. if (geomType === 'Polygon') geometryIndex++;
  21112. }
  21113. if (geomType === 'Polygon') multiFeatureIndex++;
  21114. break;
  21115. case 'MultiPolygon':
  21116. for (j = 0; j < coords.length; j++) {
  21117. geometryIndex = 0;
  21118. for (k = 0; k < coords[j].length; k++) {
  21119. for (l = 0; l < coords[j][k].length - wrapShrink; l++) {
  21120. if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  21121. coordIndex++;
  21122. }
  21123. geometryIndex++;
  21124. }
  21125. multiFeatureIndex++;
  21126. }
  21127. break;
  21128. case 'GeometryCollection':
  21129. for (j = 0; j < geometry.geometries.length; j++)
  21130. if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;
  21131. break;
  21132. default:
  21133. throw new Error('Unknown Geometry Type');
  21134. }
  21135. }
  21136. }
  21137. }
  21138. /**
  21139. * Callback for coordReduce
  21140. *
  21141. * The first time the callback function is called, the values provided as arguments depend
  21142. * on whether the reduce method has an initialValue argument.
  21143. *
  21144. * If an initialValue is provided to the reduce method:
  21145. * - The previousValue argument is initialValue.
  21146. * - The currentValue argument is the value of the first element present in the array.
  21147. *
  21148. * If an initialValue is not provided:
  21149. * - The previousValue argument is the value of the first element present in the array.
  21150. * - The currentValue argument is the value of the second element present in the array.
  21151. *
  21152. * @callback coordReduceCallback
  21153. * @param {*} previousValue The accumulated value previously returned in the last invocation
  21154. * of the callback, or initialValue, if supplied.
  21155. * @param {Array<number>} currentCoord The current coordinate being processed.
  21156. * @param {number} coordIndex The current index of the coordinate being processed.
  21157. * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.
  21158. * @param {number} featureIndex The current index of the Feature being processed.
  21159. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  21160. * @param {number} geometryIndex The current index of the Geometry being processed.
  21161. */
  21162. /**
  21163. * Reduce coordinates in any GeoJSON object, similar to Array.reduce()
  21164. *
  21165. * @name coordReduce
  21166. * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object
  21167. * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)
  21168. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  21169. * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
  21170. * @returns {*} The value that results from the reduction.
  21171. * @example
  21172. * var features = turf.featureCollection([
  21173. * turf.point([26, 37], {"foo": "bar"}),
  21174. * turf.point([36, 53], {"hello": "world"})
  21175. * ]);
  21176. *
  21177. * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
  21178. * //=previousValue
  21179. * //=currentCoord
  21180. * //=coordIndex
  21181. * //=featureIndex
  21182. * //=multiFeatureIndex
  21183. * //=geometryIndex
  21184. * return currentCoord;
  21185. * });
  21186. */
  21187. function coordReduce(geojson, callback, initialValue, excludeWrapCoord) {
  21188. var previousValue = initialValue;
  21189. coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
  21190. if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;
  21191. else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);
  21192. }, excludeWrapCoord);
  21193. return previousValue;
  21194. }
  21195. /**
  21196. * Callback for propEach
  21197. *
  21198. * @callback propEachCallback
  21199. * @param {Object} currentProperties The current Properties being processed.
  21200. * @param {number} featureIndex The current index of the Feature being processed.
  21201. */
  21202. /**
  21203. * Iterate over properties in any GeoJSON object, similar to Array.forEach()
  21204. *
  21205. * @name propEach
  21206. * @param {FeatureCollection|Feature} geojson any GeoJSON object
  21207. * @param {Function} callback a method that takes (currentProperties, featureIndex)
  21208. * @returns {void}
  21209. * @example
  21210. * var features = turf.featureCollection([
  21211. * turf.point([26, 37], {foo: 'bar'}),
  21212. * turf.point([36, 53], {hello: 'world'})
  21213. * ]);
  21214. *
  21215. * turf.propEach(features, function (currentProperties, featureIndex) {
  21216. * //=currentProperties
  21217. * //=featureIndex
  21218. * });
  21219. */
  21220. function propEach(geojson, callback) {
  21221. var i;
  21222. switch (geojson.type) {
  21223. case 'FeatureCollection':
  21224. for (i = 0; i < geojson.features.length; i++) {
  21225. if (callback(geojson.features[i].properties, i) === false) break;
  21226. }
  21227. break;
  21228. case 'Feature':
  21229. callback(geojson.properties, 0);
  21230. break;
  21231. }
  21232. }
  21233. /**
  21234. * Callback for propReduce
  21235. *
  21236. * The first time the callback function is called, the values provided as arguments depend
  21237. * on whether the reduce method has an initialValue argument.
  21238. *
  21239. * If an initialValue is provided to the reduce method:
  21240. * - The previousValue argument is initialValue.
  21241. * - The currentValue argument is the value of the first element present in the array.
  21242. *
  21243. * If an initialValue is not provided:
  21244. * - The previousValue argument is the value of the first element present in the array.
  21245. * - The currentValue argument is the value of the second element present in the array.
  21246. *
  21247. * @callback propReduceCallback
  21248. * @param {*} previousValue The accumulated value previously returned in the last invocation
  21249. * of the callback, or initialValue, if supplied.
  21250. * @param {*} currentProperties The current Properties being processed.
  21251. * @param {number} featureIndex The current index of the Feature being processed.
  21252. */
  21253. /**
  21254. * Reduce properties in any GeoJSON object into a single value,
  21255. * similar to how Array.reduce works. However, in this case we lazily run
  21256. * the reduction, so an array of all properties is unnecessary.
  21257. *
  21258. * @name propReduce
  21259. * @param {FeatureCollection|Feature} geojson any GeoJSON object
  21260. * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)
  21261. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  21262. * @returns {*} The value that results from the reduction.
  21263. * @example
  21264. * var features = turf.featureCollection([
  21265. * turf.point([26, 37], {foo: 'bar'}),
  21266. * turf.point([36, 53], {hello: 'world'})
  21267. * ]);
  21268. *
  21269. * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {
  21270. * //=previousValue
  21271. * //=currentProperties
  21272. * //=featureIndex
  21273. * return currentProperties
  21274. * });
  21275. */
  21276. function propReduce(geojson, callback, initialValue) {
  21277. var previousValue = initialValue;
  21278. propEach(geojson, function (currentProperties, featureIndex) {
  21279. if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;
  21280. else previousValue = callback(previousValue, currentProperties, featureIndex);
  21281. });
  21282. return previousValue;
  21283. }
  21284. /**
  21285. * Callback for featureEach
  21286. *
  21287. * @callback featureEachCallback
  21288. * @param {Feature<any>} currentFeature The current Feature being processed.
  21289. * @param {number} featureIndex The current index of the Feature being processed.
  21290. */
  21291. /**
  21292. * Iterate over features in any GeoJSON object, similar to
  21293. * Array.forEach.
  21294. *
  21295. * @name featureEach
  21296. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  21297. * @param {Function} callback a method that takes (currentFeature, featureIndex)
  21298. * @returns {void}
  21299. * @example
  21300. * var features = turf.featureCollection([
  21301. * turf.point([26, 37], {foo: 'bar'}),
  21302. * turf.point([36, 53], {hello: 'world'})
  21303. * ]);
  21304. *
  21305. * turf.featureEach(features, function (currentFeature, featureIndex) {
  21306. * //=currentFeature
  21307. * //=featureIndex
  21308. * });
  21309. */
  21310. function featureEach(geojson, callback) {
  21311. if (geojson.type === 'Feature') {
  21312. callback(geojson, 0);
  21313. } else if (geojson.type === 'FeatureCollection') {
  21314. for (var i = 0; i < geojson.features.length; i++) {
  21315. if (callback(geojson.features[i], i) === false) break;
  21316. }
  21317. }
  21318. }
  21319. /**
  21320. * Callback for featureReduce
  21321. *
  21322. * The first time the callback function is called, the values provided as arguments depend
  21323. * on whether the reduce method has an initialValue argument.
  21324. *
  21325. * If an initialValue is provided to the reduce method:
  21326. * - The previousValue argument is initialValue.
  21327. * - The currentValue argument is the value of the first element present in the array.
  21328. *
  21329. * If an initialValue is not provided:
  21330. * - The previousValue argument is the value of the first element present in the array.
  21331. * - The currentValue argument is the value of the second element present in the array.
  21332. *
  21333. * @callback featureReduceCallback
  21334. * @param {*} previousValue The accumulated value previously returned in the last invocation
  21335. * of the callback, or initialValue, if supplied.
  21336. * @param {Feature} currentFeature The current Feature being processed.
  21337. * @param {number} featureIndex The current index of the Feature being processed.
  21338. */
  21339. /**
  21340. * Reduce features in any GeoJSON object, similar to Array.reduce().
  21341. *
  21342. * @name featureReduce
  21343. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  21344. * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)
  21345. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  21346. * @returns {*} The value that results from the reduction.
  21347. * @example
  21348. * var features = turf.featureCollection([
  21349. * turf.point([26, 37], {"foo": "bar"}),
  21350. * turf.point([36, 53], {"hello": "world"})
  21351. * ]);
  21352. *
  21353. * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {
  21354. * //=previousValue
  21355. * //=currentFeature
  21356. * //=featureIndex
  21357. * return currentFeature
  21358. * });
  21359. */
  21360. function featureReduce(geojson, callback, initialValue) {
  21361. var previousValue = initialValue;
  21362. featureEach(geojson, function (currentFeature, featureIndex) {
  21363. if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;
  21364. else previousValue = callback(previousValue, currentFeature, featureIndex);
  21365. });
  21366. return previousValue;
  21367. }
  21368. /**
  21369. * Get all coordinates from any GeoJSON object.
  21370. *
  21371. * @name coordAll
  21372. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  21373. * @returns {Array<Array<number>>} coordinate position array
  21374. * @example
  21375. * var features = turf.featureCollection([
  21376. * turf.point([26, 37], {foo: 'bar'}),
  21377. * turf.point([36, 53], {hello: 'world'})
  21378. * ]);
  21379. *
  21380. * var coords = turf.coordAll(features);
  21381. * //= [[26, 37], [36, 53]]
  21382. */
  21383. function coordAll(geojson) {
  21384. var coords = [];
  21385. coordEach(geojson, function (coord) {
  21386. coords.push(coord);
  21387. });
  21388. return coords;
  21389. }
  21390. /**
  21391. * Callback for geomEach
  21392. *
  21393. * @callback geomEachCallback
  21394. * @param {Geometry} currentGeometry The current Geometry being processed.
  21395. * @param {number} featureIndex The current index of the Feature being processed.
  21396. * @param {Object} featureProperties The current Feature Properties being processed.
  21397. * @param {Array<number>} featureBBox The current Feature BBox being processed.
  21398. * @param {number|string} featureId The current Feature Id being processed.
  21399. */
  21400. /**
  21401. * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()
  21402. *
  21403. * @name geomEach
  21404. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  21405. * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)
  21406. * @returns {void}
  21407. * @example
  21408. * var features = turf.featureCollection([
  21409. * turf.point([26, 37], {foo: 'bar'}),
  21410. * turf.point([36, 53], {hello: 'world'})
  21411. * ]);
  21412. *
  21413. * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
  21414. * //=currentGeometry
  21415. * //=featureIndex
  21416. * //=featureProperties
  21417. * //=featureBBox
  21418. * //=featureId
  21419. * });
  21420. */
  21421. function geomEach(geojson, callback) {
  21422. var i, j, g, geometry, stopG,
  21423. geometryMaybeCollection,
  21424. isGeometryCollection,
  21425. featureProperties,
  21426. featureBBox,
  21427. featureId,
  21428. featureIndex = 0,
  21429. isFeatureCollection = geojson.type === 'FeatureCollection',
  21430. isFeature = geojson.type === 'Feature',
  21431. stop = isFeatureCollection ? geojson.features.length : 1;
  21432. // This logic may look a little weird. The reason why it is that way
  21433. // is because it's trying to be fast. GeoJSON supports multiple kinds
  21434. // of objects at its root: FeatureCollection, Features, Geometries.
  21435. // This function has the responsibility of handling all of them, and that
  21436. // means that some of the `for` loops you see below actually just don't apply
  21437. // to certain inputs. For instance, if you give this just a
  21438. // Point geometry, then both loops are short-circuited and all we do
  21439. // is gradually rename the input until it's called 'geometry'.
  21440. //
  21441. // This also aims to allocate as few resources as possible: just a
  21442. // few numbers and booleans, rather than any temporary arrays as would
  21443. // be required with the normalization approach.
  21444. for (i = 0; i < stop; i++) {
  21445. geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :
  21446. (isFeature ? geojson.geometry : geojson));
  21447. featureProperties = (isFeatureCollection ? geojson.features[i].properties :
  21448. (isFeature ? geojson.properties : {}));
  21449. featureBBox = (isFeatureCollection ? geojson.features[i].bbox :
  21450. (isFeature ? geojson.bbox : undefined));
  21451. featureId = (isFeatureCollection ? geojson.features[i].id :
  21452. (isFeature ? geojson.id : undefined));
  21453. isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;
  21454. stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;
  21455. for (g = 0; g < stopG; g++) {
  21456. geometry = isGeometryCollection ?
  21457. geometryMaybeCollection.geometries[g] : geometryMaybeCollection;
  21458. // Handle null Geometry
  21459. if (geometry === null) {
  21460. if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;
  21461. continue;
  21462. }
  21463. switch (geometry.type) {
  21464. case 'Point':
  21465. case 'LineString':
  21466. case 'MultiPoint':
  21467. case 'Polygon':
  21468. case 'MultiLineString':
  21469. case 'MultiPolygon': {
  21470. if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;
  21471. break;
  21472. }
  21473. case 'GeometryCollection': {
  21474. for (j = 0; j < geometry.geometries.length; j++) {
  21475. if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;
  21476. }
  21477. break;
  21478. }
  21479. default:
  21480. throw new Error('Unknown Geometry Type');
  21481. }
  21482. }
  21483. // Only increase `featureIndex` per each feature
  21484. featureIndex++;
  21485. }
  21486. }
  21487. /**
  21488. * Callback for geomReduce
  21489. *
  21490. * The first time the callback function is called, the values provided as arguments depend
  21491. * on whether the reduce method has an initialValue argument.
  21492. *
  21493. * If an initialValue is provided to the reduce method:
  21494. * - The previousValue argument is initialValue.
  21495. * - The currentValue argument is the value of the first element present in the array.
  21496. *
  21497. * If an initialValue is not provided:
  21498. * - The previousValue argument is the value of the first element present in the array.
  21499. * - The currentValue argument is the value of the second element present in the array.
  21500. *
  21501. * @callback geomReduceCallback
  21502. * @param {*} previousValue The accumulated value previously returned in the last invocation
  21503. * of the callback, or initialValue, if supplied.
  21504. * @param {Geometry} currentGeometry The current Geometry being processed.
  21505. * @param {number} featureIndex The current index of the Feature being processed.
  21506. * @param {Object} featureProperties The current Feature Properties being processed.
  21507. * @param {Array<number>} featureBBox The current Feature BBox being processed.
  21508. * @param {number|string} featureId The current Feature Id being processed.
  21509. */
  21510. /**
  21511. * Reduce geometry in any GeoJSON object, similar to Array.reduce().
  21512. *
  21513. * @name geomReduce
  21514. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  21515. * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)
  21516. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  21517. * @returns {*} The value that results from the reduction.
  21518. * @example
  21519. * var features = turf.featureCollection([
  21520. * turf.point([26, 37], {foo: 'bar'}),
  21521. * turf.point([36, 53], {hello: 'world'})
  21522. * ]);
  21523. *
  21524. * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
  21525. * //=previousValue
  21526. * //=currentGeometry
  21527. * //=featureIndex
  21528. * //=featureProperties
  21529. * //=featureBBox
  21530. * //=featureId
  21531. * return currentGeometry
  21532. * });
  21533. */
  21534. function geomReduce(geojson, callback, initialValue) {
  21535. var previousValue = initialValue;
  21536. geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
  21537. if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;
  21538. else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);
  21539. });
  21540. return previousValue;
  21541. }
  21542. /**
  21543. * Callback for flattenEach
  21544. *
  21545. * @callback flattenEachCallback
  21546. * @param {Feature} currentFeature The current flattened feature being processed.
  21547. * @param {number} featureIndex The current index of the Feature being processed.
  21548. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  21549. */
  21550. /**
  21551. * Iterate over flattened features in any GeoJSON object, similar to
  21552. * Array.forEach.
  21553. *
  21554. * @name flattenEach
  21555. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  21556. * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)
  21557. * @example
  21558. * var features = turf.featureCollection([
  21559. * turf.point([26, 37], {foo: 'bar'}),
  21560. * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})
  21561. * ]);
  21562. *
  21563. * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {
  21564. * //=currentFeature
  21565. * //=featureIndex
  21566. * //=multiFeatureIndex
  21567. * });
  21568. */
  21569. function flattenEach(geojson, callback) {
  21570. geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {
  21571. // Callback for single geometry
  21572. var type = (geometry === null) ? null : geometry.type;
  21573. switch (type) {
  21574. case null:
  21575. case 'Point':
  21576. case 'LineString':
  21577. case 'Polygon':
  21578. if (callback(helpers.feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;
  21579. return;
  21580. }
  21581. var geomType;
  21582. // Callback for multi-geometry
  21583. switch (type) {
  21584. case 'MultiPoint':
  21585. geomType = 'Point';
  21586. break;
  21587. case 'MultiLineString':
  21588. geomType = 'LineString';
  21589. break;
  21590. case 'MultiPolygon':
  21591. geomType = 'Polygon';
  21592. break;
  21593. }
  21594. for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {
  21595. var coordinate = geometry.coordinates[multiFeatureIndex];
  21596. var geom = {
  21597. type: geomType,
  21598. coordinates: coordinate
  21599. };
  21600. if (callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;
  21601. }
  21602. });
  21603. }
  21604. /**
  21605. * Callback for flattenReduce
  21606. *
  21607. * The first time the callback function is called, the values provided as arguments depend
  21608. * on whether the reduce method has an initialValue argument.
  21609. *
  21610. * If an initialValue is provided to the reduce method:
  21611. * - The previousValue argument is initialValue.
  21612. * - The currentValue argument is the value of the first element present in the array.
  21613. *
  21614. * If an initialValue is not provided:
  21615. * - The previousValue argument is the value of the first element present in the array.
  21616. * - The currentValue argument is the value of the second element present in the array.
  21617. *
  21618. * @callback flattenReduceCallback
  21619. * @param {*} previousValue The accumulated value previously returned in the last invocation
  21620. * of the callback, or initialValue, if supplied.
  21621. * @param {Feature} currentFeature The current Feature being processed.
  21622. * @param {number} featureIndex The current index of the Feature being processed.
  21623. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  21624. */
  21625. /**
  21626. * Reduce flattened features in any GeoJSON object, similar to Array.reduce().
  21627. *
  21628. * @name flattenReduce
  21629. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  21630. * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)
  21631. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  21632. * @returns {*} The value that results from the reduction.
  21633. * @example
  21634. * var features = turf.featureCollection([
  21635. * turf.point([26, 37], {foo: 'bar'}),
  21636. * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})
  21637. * ]);
  21638. *
  21639. * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {
  21640. * //=previousValue
  21641. * //=currentFeature
  21642. * //=featureIndex
  21643. * //=multiFeatureIndex
  21644. * return currentFeature
  21645. * });
  21646. */
  21647. function flattenReduce(geojson, callback, initialValue) {
  21648. var previousValue = initialValue;
  21649. flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {
  21650. if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;
  21651. else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);
  21652. });
  21653. return previousValue;
  21654. }
  21655. /**
  21656. * Callback for segmentEach
  21657. *
  21658. * @callback segmentEachCallback
  21659. * @param {Feature<LineString>} currentSegment The current Segment being processed.
  21660. * @param {number} featureIndex The current index of the Feature being processed.
  21661. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  21662. * @param {number} geometryIndex The current index of the Geometry being processed.
  21663. * @param {number} segmentIndex The current index of the Segment being processed.
  21664. * @returns {void}
  21665. */
  21666. /**
  21667. * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()
  21668. * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
  21669. *
  21670. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON
  21671. * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)
  21672. * @returns {void}
  21673. * @example
  21674. * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);
  21675. *
  21676. * // Iterate over GeoJSON by 2-vertex segments
  21677. * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
  21678. * //=currentSegment
  21679. * //=featureIndex
  21680. * //=multiFeatureIndex
  21681. * //=geometryIndex
  21682. * //=segmentIndex
  21683. * });
  21684. *
  21685. * // Calculate the total number of segments
  21686. * var total = 0;
  21687. * turf.segmentEach(polygon, function () {
  21688. * total++;
  21689. * });
  21690. */
  21691. function segmentEach(geojson, callback) {
  21692. flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {
  21693. var segmentIndex = 0;
  21694. // Exclude null Geometries
  21695. if (!feature.geometry) return;
  21696. // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
  21697. var type = feature.geometry.type;
  21698. if (type === 'Point' || type === 'MultiPoint') return;
  21699. // Generate 2-vertex line segments
  21700. var previousCoords;
  21701. var previousFeatureIndex = 0;
  21702. var previousMultiIndex = 0;
  21703. var prevGeomIndex = 0;
  21704. if (coordEach(feature, function (currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {
  21705. // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`
  21706. if (previousCoords === undefined || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {
  21707. previousCoords = currentCoord;
  21708. previousFeatureIndex = featureIndex;
  21709. previousMultiIndex = multiPartIndexCoord;
  21710. prevGeomIndex = geometryIndex;
  21711. segmentIndex = 0;
  21712. return;
  21713. }
  21714. var currentSegment = helpers.lineString([previousCoords, currentCoord], feature.properties);
  21715. if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;
  21716. segmentIndex++;
  21717. previousCoords = currentCoord;
  21718. }) === false) return false;
  21719. });
  21720. }
  21721. /**
  21722. * Callback for segmentReduce
  21723. *
  21724. * The first time the callback function is called, the values provided as arguments depend
  21725. * on whether the reduce method has an initialValue argument.
  21726. *
  21727. * If an initialValue is provided to the reduce method:
  21728. * - The previousValue argument is initialValue.
  21729. * - The currentValue argument is the value of the first element present in the array.
  21730. *
  21731. * If an initialValue is not provided:
  21732. * - The previousValue argument is the value of the first element present in the array.
  21733. * - The currentValue argument is the value of the second element present in the array.
  21734. *
  21735. * @callback segmentReduceCallback
  21736. * @param {*} previousValue The accumulated value previously returned in the last invocation
  21737. * of the callback, or initialValue, if supplied.
  21738. * @param {Feature<LineString>} currentSegment The current Segment being processed.
  21739. * @param {number} featureIndex The current index of the Feature being processed.
  21740. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  21741. * @param {number} geometryIndex The current index of the Geometry being processed.
  21742. * @param {number} segmentIndex The current index of the Segment being processed.
  21743. */
  21744. /**
  21745. * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()
  21746. * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
  21747. *
  21748. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON
  21749. * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)
  21750. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  21751. * @returns {void}
  21752. * @example
  21753. * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);
  21754. *
  21755. * // Iterate over GeoJSON by 2-vertex segments
  21756. * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
  21757. * //= previousSegment
  21758. * //= currentSegment
  21759. * //= featureIndex
  21760. * //= multiFeatureIndex
  21761. * //= geometryIndex
  21762. * //= segmentInex
  21763. * return currentSegment
  21764. * });
  21765. *
  21766. * // Calculate the total number of segments
  21767. * var initialValue = 0
  21768. * var total = turf.segmentReduce(polygon, function (previousValue) {
  21769. * previousValue++;
  21770. * return previousValue;
  21771. * }, initialValue);
  21772. */
  21773. function segmentReduce(geojson, callback, initialValue) {
  21774. var previousValue = initialValue;
  21775. var started = false;
  21776. segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
  21777. if (started === false && initialValue === undefined) previousValue = currentSegment;
  21778. else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);
  21779. started = true;
  21780. });
  21781. return previousValue;
  21782. }
  21783. /**
  21784. * Callback for lineEach
  21785. *
  21786. * @callback lineEachCallback
  21787. * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed
  21788. * @param {number} featureIndex The current index of the Feature being processed
  21789. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed
  21790. * @param {number} geometryIndex The current index of the Geometry being processed
  21791. */
  21792. /**
  21793. * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,
  21794. * similar to Array.forEach.
  21795. *
  21796. * @name lineEach
  21797. * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object
  21798. * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)
  21799. * @example
  21800. * var multiLine = turf.multiLineString([
  21801. * [[26, 37], [35, 45]],
  21802. * [[36, 53], [38, 50], [41, 55]]
  21803. * ]);
  21804. *
  21805. * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
  21806. * //=currentLine
  21807. * //=featureIndex
  21808. * //=multiFeatureIndex
  21809. * //=geometryIndex
  21810. * });
  21811. */
  21812. function lineEach(geojson, callback) {
  21813. // validation
  21814. if (!geojson) throw new Error('geojson is required');
  21815. flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {
  21816. if (feature.geometry === null) return;
  21817. var type = feature.geometry.type;
  21818. var coords = feature.geometry.coordinates;
  21819. switch (type) {
  21820. case 'LineString':
  21821. if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false) return false;
  21822. break;
  21823. case 'Polygon':
  21824. for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {
  21825. if (callback(helpers.lineString(coords[geometryIndex], feature.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  21826. }
  21827. break;
  21828. }
  21829. });
  21830. }
  21831. /**
  21832. * Callback for lineReduce
  21833. *
  21834. * The first time the callback function is called, the values provided as arguments depend
  21835. * on whether the reduce method has an initialValue argument.
  21836. *
  21837. * If an initialValue is provided to the reduce method:
  21838. * - The previousValue argument is initialValue.
  21839. * - The currentValue argument is the value of the first element present in the array.
  21840. *
  21841. * If an initialValue is not provided:
  21842. * - The previousValue argument is the value of the first element present in the array.
  21843. * - The currentValue argument is the value of the second element present in the array.
  21844. *
  21845. * @callback lineReduceCallback
  21846. * @param {*} previousValue The accumulated value previously returned in the last invocation
  21847. * of the callback, or initialValue, if supplied.
  21848. * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.
  21849. * @param {number} featureIndex The current index of the Feature being processed
  21850. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed
  21851. * @param {number} geometryIndex The current index of the Geometry being processed
  21852. */
  21853. /**
  21854. * Reduce features in any GeoJSON object, similar to Array.reduce().
  21855. *
  21856. * @name lineReduce
  21857. * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object
  21858. * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)
  21859. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  21860. * @returns {*} The value that results from the reduction.
  21861. * @example
  21862. * var multiPoly = turf.multiPolygon([
  21863. * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),
  21864. * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])
  21865. * ]);
  21866. *
  21867. * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
  21868. * //=previousValue
  21869. * //=currentLine
  21870. * //=featureIndex
  21871. * //=multiFeatureIndex
  21872. * //=geometryIndex
  21873. * return currentLine
  21874. * });
  21875. */
  21876. function lineReduce(geojson, callback, initialValue) {
  21877. var previousValue = initialValue;
  21878. lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
  21879. if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;
  21880. else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);
  21881. });
  21882. return previousValue;
  21883. }
  21884. /**
  21885. * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.
  21886. *
  21887. * Negative indexes are permitted.
  21888. * Point & MultiPoint will always return null.
  21889. *
  21890. * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry
  21891. * @param {Object} [options={}] Optional parameters
  21892. * @param {number} [options.featureIndex=0] Feature Index
  21893. * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index
  21894. * @param {number} [options.geometryIndex=0] Geometry Index
  21895. * @param {number} [options.segmentIndex=0] Segment Index
  21896. * @param {Object} [options.properties={}] Translate Properties to output LineString
  21897. * @param {BBox} [options.bbox={}] Translate BBox to output LineString
  21898. * @param {number|string} [options.id={}] Translate Id to output LineString
  21899. * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString
  21900. * @example
  21901. * var multiLine = turf.multiLineString([
  21902. * [[10, 10], [50, 30], [30, 40]],
  21903. * [[-10, -10], [-50, -30], [-30, -40]]
  21904. * ]);
  21905. *
  21906. * // First Segment (defaults are 0)
  21907. * turf.findSegment(multiLine);
  21908. * // => Feature<LineString<[[10, 10], [50, 30]]>>
  21909. *
  21910. * // First Segment of 2nd Multi Feature
  21911. * turf.findSegment(multiLine, {multiFeatureIndex: 1});
  21912. * // => Feature<LineString<[[-10, -10], [-50, -30]]>>
  21913. *
  21914. * // Last Segment of Last Multi Feature
  21915. * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});
  21916. * // => Feature<LineString<[[-50, -30], [-30, -40]]>>
  21917. */
  21918. function findSegment(geojson, options) {
  21919. // Optional Parameters
  21920. options = options || {};
  21921. if (!helpers.isObject(options)) throw new Error('options is invalid');
  21922. var featureIndex = options.featureIndex || 0;
  21923. var multiFeatureIndex = options.multiFeatureIndex || 0;
  21924. var geometryIndex = options.geometryIndex || 0;
  21925. var segmentIndex = options.segmentIndex || 0;
  21926. // Find FeatureIndex
  21927. var properties = options.properties;
  21928. var geometry;
  21929. switch (geojson.type) {
  21930. case 'FeatureCollection':
  21931. if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;
  21932. properties = properties || geojson.features[featureIndex].properties;
  21933. geometry = geojson.features[featureIndex].geometry;
  21934. break;
  21935. case 'Feature':
  21936. properties = properties || geojson.properties;
  21937. geometry = geojson.geometry;
  21938. break;
  21939. case 'Point':
  21940. case 'MultiPoint':
  21941. return null;
  21942. case 'LineString':
  21943. case 'Polygon':
  21944. case 'MultiLineString':
  21945. case 'MultiPolygon':
  21946. geometry = geojson;
  21947. break;
  21948. default:
  21949. throw new Error('geojson is invalid');
  21950. }
  21951. // Find SegmentIndex
  21952. if (geometry === null) return null;
  21953. var coords = geometry.coordinates;
  21954. switch (geometry.type) {
  21955. case 'Point':
  21956. case 'MultiPoint':
  21957. return null;
  21958. case 'LineString':
  21959. if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;
  21960. return helpers.lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);
  21961. case 'Polygon':
  21962. if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;
  21963. if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;
  21964. return helpers.lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);
  21965. case 'MultiLineString':
  21966. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  21967. if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;
  21968. return helpers.lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);
  21969. case 'MultiPolygon':
  21970. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  21971. if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;
  21972. if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;
  21973. return helpers.lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);
  21974. }
  21975. throw new Error('geojson is invalid');
  21976. }
  21977. /**
  21978. * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.
  21979. *
  21980. * Negative indexes are permitted.
  21981. *
  21982. * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry
  21983. * @param {Object} [options={}] Optional parameters
  21984. * @param {number} [options.featureIndex=0] Feature Index
  21985. * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index
  21986. * @param {number} [options.geometryIndex=0] Geometry Index
  21987. * @param {number} [options.coordIndex=0] Coord Index
  21988. * @param {Object} [options.properties={}] Translate Properties to output Point
  21989. * @param {BBox} [options.bbox={}] Translate BBox to output Point
  21990. * @param {number|string} [options.id={}] Translate Id to output Point
  21991. * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point
  21992. * @example
  21993. * var multiLine = turf.multiLineString([
  21994. * [[10, 10], [50, 30], [30, 40]],
  21995. * [[-10, -10], [-50, -30], [-30, -40]]
  21996. * ]);
  21997. *
  21998. * // First Segment (defaults are 0)
  21999. * turf.findPoint(multiLine);
  22000. * // => Feature<Point<[10, 10]>>
  22001. *
  22002. * // First Segment of the 2nd Multi-Feature
  22003. * turf.findPoint(multiLine, {multiFeatureIndex: 1});
  22004. * // => Feature<Point<[-10, -10]>>
  22005. *
  22006. * // Last Segment of last Multi-Feature
  22007. * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});
  22008. * // => Feature<Point<[-30, -40]>>
  22009. */
  22010. function findPoint(geojson, options) {
  22011. // Optional Parameters
  22012. options = options || {};
  22013. if (!helpers.isObject(options)) throw new Error('options is invalid');
  22014. var featureIndex = options.featureIndex || 0;
  22015. var multiFeatureIndex = options.multiFeatureIndex || 0;
  22016. var geometryIndex = options.geometryIndex || 0;
  22017. var coordIndex = options.coordIndex || 0;
  22018. // Find FeatureIndex
  22019. var properties = options.properties;
  22020. var geometry;
  22021. switch (geojson.type) {
  22022. case 'FeatureCollection':
  22023. if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;
  22024. properties = properties || geojson.features[featureIndex].properties;
  22025. geometry = geojson.features[featureIndex].geometry;
  22026. break;
  22027. case 'Feature':
  22028. properties = properties || geojson.properties;
  22029. geometry = geojson.geometry;
  22030. break;
  22031. case 'Point':
  22032. case 'MultiPoint':
  22033. return null;
  22034. case 'LineString':
  22035. case 'Polygon':
  22036. case 'MultiLineString':
  22037. case 'MultiPolygon':
  22038. geometry = geojson;
  22039. break;
  22040. default:
  22041. throw new Error('geojson is invalid');
  22042. }
  22043. // Find Coord Index
  22044. if (geometry === null) return null;
  22045. var coords = geometry.coordinates;
  22046. switch (geometry.type) {
  22047. case 'Point':
  22048. return helpers.point(coords, properties, options);
  22049. case 'MultiPoint':
  22050. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  22051. return helpers.point(coords[multiFeatureIndex], properties, options);
  22052. case 'LineString':
  22053. if (coordIndex < 0) coordIndex = coords.length + coordIndex;
  22054. return helpers.point(coords[coordIndex], properties, options);
  22055. case 'Polygon':
  22056. if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;
  22057. if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;
  22058. return helpers.point(coords[geometryIndex][coordIndex], properties, options);
  22059. case 'MultiLineString':
  22060. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  22061. if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;
  22062. return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);
  22063. case 'MultiPolygon':
  22064. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  22065. if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;
  22066. if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;
  22067. return helpers.point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);
  22068. }
  22069. throw new Error('geojson is invalid');
  22070. }
  22071. exports.coordEach = coordEach;
  22072. exports.coordReduce = coordReduce;
  22073. exports.propEach = propEach;
  22074. exports.propReduce = propReduce;
  22075. exports.featureEach = featureEach;
  22076. exports.featureReduce = featureReduce;
  22077. exports.coordAll = coordAll;
  22078. exports.geomEach = geomEach;
  22079. exports.geomReduce = geomReduce;
  22080. exports.flattenEach = flattenEach;
  22081. exports.flattenReduce = flattenReduce;
  22082. exports.segmentEach = segmentEach;
  22083. exports.segmentReduce = segmentReduce;
  22084. exports.lineEach = lineEach;
  22085. exports.lineReduce = lineReduce;
  22086. exports.findSegment = findSegment;
  22087. exports.findPoint = findPoint;
  22088. /***/ }),
  22089. /***/ "4a62":
  22090. /***/ (function(module, exports) {
  22091. exports.read = function (buffer, offset, isLE, mLen, nBytes) {
  22092. var e, m
  22093. var eLen = (nBytes * 8) - mLen - 1
  22094. var eMax = (1 << eLen) - 1
  22095. var eBias = eMax >> 1
  22096. var nBits = -7
  22097. var i = isLE ? (nBytes - 1) : 0
  22098. var d = isLE ? -1 : 1
  22099. var s = buffer[offset + i]
  22100. i += d
  22101. e = s & ((1 << (-nBits)) - 1)
  22102. s >>= (-nBits)
  22103. nBits += eLen
  22104. for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
  22105. m = e & ((1 << (-nBits)) - 1)
  22106. e >>= (-nBits)
  22107. nBits += mLen
  22108. for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
  22109. if (e === 0) {
  22110. e = 1 - eBias
  22111. } else if (e === eMax) {
  22112. return m ? NaN : ((s ? -1 : 1) * Infinity)
  22113. } else {
  22114. m = m + Math.pow(2, mLen)
  22115. e = e - eBias
  22116. }
  22117. return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
  22118. }
  22119. exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
  22120. var e, m, c
  22121. var eLen = (nBytes * 8) - mLen - 1
  22122. var eMax = (1 << eLen) - 1
  22123. var eBias = eMax >> 1
  22124. var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
  22125. var i = isLE ? 0 : (nBytes - 1)
  22126. var d = isLE ? 1 : -1
  22127. var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
  22128. value = Math.abs(value)
  22129. if (isNaN(value) || value === Infinity) {
  22130. m = isNaN(value) ? 1 : 0
  22131. e = eMax
  22132. } else {
  22133. e = Math.floor(Math.log(value) / Math.LN2)
  22134. if (value * (c = Math.pow(2, -e)) < 1) {
  22135. e--
  22136. c *= 2
  22137. }
  22138. if (e + eBias >= 1) {
  22139. value += rt / c
  22140. } else {
  22141. value += rt * Math.pow(2, 1 - eBias)
  22142. }
  22143. if (value * c >= 2) {
  22144. e++
  22145. c /= 2
  22146. }
  22147. if (e + eBias >= eMax) {
  22148. m = 0
  22149. e = eMax
  22150. } else if (e + eBias >= 1) {
  22151. m = ((value * c) - 1) * Math.pow(2, mLen)
  22152. e = e + eBias
  22153. } else {
  22154. m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
  22155. e = 0
  22156. }
  22157. }
  22158. for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
  22159. e = (e << mLen) | m
  22160. eLen += mLen
  22161. for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
  22162. buffer[offset + i - d] |= s * 128
  22163. }
  22164. /***/ }),
  22165. /***/ "4ab7":
  22166. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  22167. "use strict";
  22168. __webpack_require__.r(__webpack_exports__);
  22169. /* harmony import */ var _Search_vue_vue_type_template_id_7b86e414___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("1b3a");
  22170. /* harmony import */ var _Search_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b39e");
  22171. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Search_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Search_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  22172. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  22173. /* normalize component */
  22174. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  22175. _Search_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  22176. _Search_vue_vue_type_template_id_7b86e414___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  22177. _Search_vue_vue_type_template_id_7b86e414___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  22178. false,
  22179. null,
  22180. null,
  22181. null
  22182. )
  22183. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  22184. /***/ }),
  22185. /***/ "4aed":
  22186. /***/ (function(module, exports) {
  22187. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA0ppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkUxOTcwODEzQjZFMTFFN0FFMEVDQTZFMUQ5NUU2QTYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkUxOTcwODAzQjZFMTFFN0FFMEVDQTZFMUQ5NUU2QTYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3ZTJjNWUyMy0zYjZlLTExZTctYmRlYy1iMDYwNjA4OWNmOTkiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3ZTJjNWUyMy0zYjZlLTExZTctYmRlYy1iMDYwNjA4OWNmOTkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4XpMU1AAAA8FBMVEXo7fg9aMFfg8zO2e9EbsT9/v9Qd8jq7/g8aMF/m9ZykdLI1e5CbMO7y+qXr96kuOL+/v+Wrt7J1e5xkdJAa8M9acKQqdyds+D6+/2qveTP2vBAa8JOdsdrjdDh6PbD0eyGodlHcMV/nNeasN9jhs76+/7Cz+w/asLm7PfP2fDi6PZTecnI1O3n7fe8y+r7/P6xwuZ0k9NFb8SzxOfj6faovOSAndfp7vi4yOmnuuPm6/fl6/f9/f7R2/Bbf8vg5/Vaf8tNdce6yenQ2/Dk6va7yun2+PxKc8ZbgMtReMiEoNh7mNWjt+I7Z8H////////revEKAAAAUHRSTlP/////////////////////////////////////////////////////////////////////////////////////////////////////////ABNzpnkAAAElSURBVHjabJLXVsMwDIZtyF5NkwZKaaGLTrrYu+xpK+//NsiJ3eYi/4WPre/Ykn+JpLkIi39q2rPD7lQgX7tJEF3XP9duQLtkC47P2ANI6Uz7UOCAnkJBb9ZlDubWEYT+qulx7jVXfggX1lwAoo0BenyjHsBYw3B6xfB6Zws6eGR2SmZUxx3/3ZX646ICOiOVqkjI91XqPQGgWiGOWwZchxhmGTANUqtn4GVH6isDJ4cKFCSBfEqo398AfCqOFGiFYUsBTC7LRbUB2gpguaPsg1MMeMsl2sWn2QdHJLWFJYNEpU4G0hI0sYHbyXcef5rgoZGZmPpoO9yoG+cA75Zf2qhH67bQWr3Q2tfCMNg0iMzFwowCaheGIR8fYzg0YnYvA/8CDAD7lYOpO3C0xgAAAABJRU5ErkJggg=="
  22188. /***/ }),
  22189. /***/ "4b85":
  22190. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  22191. "use strict";
  22192. __webpack_require__.r(__webpack_exports__);
  22193. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Progress_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("5310");
  22194. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Progress_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Progress_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  22195. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Progress_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Progress_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  22196. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Progress_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  22197. /***/ }),
  22198. /***/ "4b93":
  22199. /***/ (function(module, exports) {
  22200. /**
  22201. * Checks if `value` is object-like. A value is object-like if it's not `null`
  22202. * and has a `typeof` result of "object".
  22203. *
  22204. * @static
  22205. * @memberOf _
  22206. * @since 4.0.0
  22207. * @category Lang
  22208. * @param {*} value The value to check.
  22209. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  22210. * @example
  22211. *
  22212. * _.isObjectLike({});
  22213. * // => true
  22214. *
  22215. * _.isObjectLike([1, 2, 3]);
  22216. * // => true
  22217. *
  22218. * _.isObjectLike(_.noop);
  22219. * // => false
  22220. *
  22221. * _.isObjectLike(null);
  22222. * // => false
  22223. */
  22224. function isObjectLike(value) {
  22225. return value != null && typeof value == 'object';
  22226. }
  22227. module.exports = isObjectLike;
  22228. /***/ }),
  22229. /***/ "4c06":
  22230. /***/ (function(module, exports, __webpack_require__) {
  22231. "use strict";
  22232. var _interopRequireDefault = __webpack_require__("8e6d");
  22233. Object.defineProperty(exports, "__esModule", {
  22234. value: true
  22235. });
  22236. exports.default = void 0;
  22237. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  22238. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  22239. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  22240. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  22241. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  22242. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  22243. var _length = _interopRequireDefault(__webpack_require__("821b"));
  22244. var _area = _interopRequireDefault(__webpack_require__("0650"));
  22245. var _center = _interopRequireDefault(__webpack_require__("cf46"));
  22246. var _helpers = __webpack_require__("38ce");
  22247. var _util = __webpack_require__("1448");
  22248. var _lang = __webpack_require__("4e21");
  22249. var _drawEvent = _interopRequireDefault(__webpack_require__("9104"));
  22250. /**
  22251. * @class MeasureViewModel
  22252. * @description 量算 viewModel.
  22253. * @param {Object} webmap - webmap实例对象。
  22254. * @extends mapboxgl.Evented
  22255. */
  22256. var MeasureViewModel =
  22257. /*#__PURE__*/
  22258. function (_mapboxgl$Evented) {
  22259. (0, _inherits2.default)(MeasureViewModel, _mapboxgl$Evented);
  22260. function MeasureViewModel(options) {
  22261. var _this;
  22262. (0, _classCallCheck2.default)(this, MeasureViewModel);
  22263. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(MeasureViewModel).call(this));
  22264. _this.lenTipNodesList = {}; // 收集测量长度实时生成的popup,以方便后面销毁
  22265. _this.areaTipNodesList = {}; // 收集多绘制情况下 测量面积最后生成的结果popup
  22266. _this.cacheLengthUnitList = {}; // 缓存量算长度每个节点的值跟单位,在修改单位时使用
  22267. _this.cachePolygonUnit = {};
  22268. _this.componentName = options.componentName;
  22269. _this.continueDraw = options.continueDraw;
  22270. return _this;
  22271. }
  22272. (0, _createClass2.default)(MeasureViewModel, [{
  22273. key: "setMap",
  22274. value: function setMap(mapInfo) {
  22275. var map = mapInfo.map,
  22276. mapTarget = mapInfo.mapTarget;
  22277. this.map = map;
  22278. this.mapTarget = mapTarget;
  22279. this._addDrawControl();
  22280. }
  22281. }, {
  22282. key: "_addDrawControl",
  22283. value: function _addDrawControl() {
  22284. this.draw = _drawEvent.default.$options.getDraw(this.mapTarget);
  22285. _drawEvent.default.$options.setDrawingState(this.mapTarget, this.componentName, false);
  22286. this._finishDrawBind = this._finishDraw.bind(this);
  22287. this._changeModeBind = this._changeMode.bind(this);
  22288. this.map.on('draw.create', this._finishDrawBind);
  22289. this.map.on('draw.modechange', this._changeModeBind);
  22290. } // 绘画结束后计算最后的结果
  22291. }, {
  22292. key: "_finishDraw",
  22293. value: function _finishDraw(e) {
  22294. if (this._isDrawing()) {
  22295. this._resetEvent();
  22296. switch (this.activeMode) {
  22297. case 'draw_line_string':
  22298. var tempLength = (0, _length.default)(e.features[0], 'kilometers');
  22299. this.result = (0, _helpers.convertLength)(tempLength, 'kilometers', this.activeUnit); // 将tipNodesList中key为“id”的字段替换成生成的id值
  22300. this._updateLenPopupNodes(e.features[0].id); // 如果是测量长度,销毁实时计算生成的popup
  22301. this._removeHoverPopup();
  22302. break;
  22303. case 'draw_polygon':
  22304. var tempArea = (0, _area.default)(e.features[0]);
  22305. this.result = (0, _helpers.convertArea)(tempArea, 'meters', this.activeUnit);
  22306. this._updateAreaPopupNodes(this.result, e.features[0]);
  22307. break;
  22308. }
  22309. this.ids = this.ids || [];
  22310. this.ids.push((e.features[0] || {}).id);
  22311. this.fire('measure-finished', {
  22312. result: this._getFormatResult(this.result)
  22313. });
  22314. }
  22315. }
  22316. }, {
  22317. key: "_changeMode",
  22318. value: function _changeMode(e) {
  22319. if (this._isDrawing() && this.continueDraw && this.isEditing) {
  22320. this.draw.changeMode(this.mode);
  22321. this.continueDrawBind = this._continueDraw.bind(this);
  22322. this.map.on('mousedown', this.continueDrawBind);
  22323. this.map.on('mousedown', this.measureNodeDistanceBind);
  22324. this.fire('measure-finished', {
  22325. result: this._getFormatResult(this.result)
  22326. });
  22327. }
  22328. } // 开启绘制
  22329. }, {
  22330. key: "openDraw",
  22331. value: function openDraw(mode, activeUnit) {
  22332. _drawEvent.default.$options.setDrawingState(this.mapTarget, this.componentName, true);
  22333. this._resetDraw();
  22334. this._resetEvent();
  22335. this.isEditing = true;
  22336. this.mode = mode;
  22337. this.activeMode = mode;
  22338. this.activeUnit = activeUnit; // 绘画线或面
  22339. this.draw.changeMode(mode);
  22340. this.measureNodeDistanceBind = this._measureNodeDistance.bind(this);
  22341. this.map.on('mousedown', this.measureNodeDistanceBind);
  22342. }
  22343. }, {
  22344. key: "updateUnit",
  22345. value: function updateUnit(unit) {
  22346. if (Object.values(this.lenTipNodesList).length) {
  22347. for (var id in this.lenTipNodesList) {
  22348. var tipNodes = this.lenTipNodesList[id];
  22349. if (tipNodes && tipNodes.length && (this.continueDraw && id !== 'id' || id === 'id')) {
  22350. for (var i = 1; i < tipNodes.length; i++) {
  22351. var transValue = (0, _helpers.convertLength)(this.cacheLengthUnitList[id][i - 1].value, this.cacheLengthUnitList[id][i - 1].unit, unit);
  22352. transValue = this._getFormatResult(transValue);
  22353. this.cacheLengthUnitList[id][i - 1].value = transValue;
  22354. this.cacheLengthUnitList[id][i - 1].unit = unit;
  22355. if (this.activeMode === 'draw_line_string') {
  22356. var uniti18n = (0, _lang.geti18n)().t("unit.".concat(unit));
  22357. tipNodes[i] && tipNodes[i].setText("".concat(transValue, " ").concat(uniti18n));
  22358. }
  22359. }
  22360. }
  22361. }
  22362. this.result && (this.result = (0, _helpers.convertLength)(this.result, this.activeUnit, unit));
  22363. } else if (this.cachePolygonUnit.value && this.cachePolygonUnit.unit) {
  22364. var _transValue = (0, _helpers.convertArea)(this.cachePolygonUnit.value, this.cachePolygonUnit.unit, unit);
  22365. var _uniti18n = (0, _lang.geti18n)().t("unit.square".concat(unit));
  22366. this.tipHoverDiv && this.tipHoverDiv.setText("".concat(_transValue, " ").concat(_uniti18n));
  22367. this.result && (this.result = (0, _helpers.convertArea)(this.result, this.activeUnit, unit));
  22368. }
  22369. this.result && this.fire('update-unit', {
  22370. result: this._getFormatResult(this.result),
  22371. mode: this.mode
  22372. });
  22373. this.activeUnit = unit;
  22374. }
  22375. }, {
  22376. key: "_resetDraw",
  22377. value: function _resetDraw(continueDraw) {
  22378. // 连续绘制情况下 根据ids只删除上一次量算的数据
  22379. if (this.draw && this.continueDraw) {
  22380. this.ids && this.draw.delete(this.ids);
  22381. this.ids = null;
  22382. this._removePopups();
  22383. this._removeHoverPopup();
  22384. }
  22385. this.isOpenMoveEvent = true;
  22386. this.cacheLengthUnitList = {};
  22387. this.measureNodes = []; // 收集测算长度生成每个点的feature数据, 方便后面计算总长度
  22388. this.result = 0;
  22389. if (!continueDraw) {
  22390. this.activeMode = null;
  22391. this.mode = null;
  22392. }
  22393. this.fire('measure-start', {
  22394. result: this._getFormatResult(this.result)
  22395. });
  22396. }
  22397. }, {
  22398. key: "_continueDraw",
  22399. value: function _continueDraw(e) {
  22400. if (this._isDrawing()) {
  22401. this._resetDraw(true);
  22402. this.map.off('mousemove', this.popupFollowMouseBind);
  22403. this.map.off('mousedown', this.continueDrawBind);
  22404. }
  22405. } // 绘画每个点显示tip,同时监听鼠标move事件
  22406. }, {
  22407. key: "_measureNodeDistance",
  22408. value: function _measureNodeDistance(e) {
  22409. if (this._isDrawing()) {
  22410. var _e$lngLat = e.lngLat,
  22411. lng = _e$lngLat.lng,
  22412. lat = _e$lngLat.lat;
  22413. var to = [lng, lat];
  22414. if (this.isOpenMoveEvent) {
  22415. this.popupFollowMouseBind = this._popupFollowMouse.bind(this);
  22416. this.map.on('mousemove', this.popupFollowMouseBind);
  22417. this.isOpenMoveEvent = false;
  22418. }
  22419. this.measureNodes.push(to);
  22420. if (this.activeMode === 'draw_line_string') {
  22421. this._renderPopupTip(e);
  22422. }
  22423. }
  22424. }
  22425. }, {
  22426. key: "_popupFollowMouse",
  22427. value: function _popupFollowMouse(e) {
  22428. if (this._isDrawing()) {
  22429. var _e$lngLat2 = e.lngLat,
  22430. lng = _e$lngLat2.lng,
  22431. lat = _e$lngLat2.lat;
  22432. var lastPointPos = [lng, lat];
  22433. var popup = this.tipHoverDiv; // 实时显示popup只需要一个,如果没有再生成新popup
  22434. if (!popup) {
  22435. popup = new _mapboxGlEnhance.default.Popup({
  22436. closeButton: false,
  22437. closeOnClick: false,
  22438. className: 'sm-component-measure__popup'
  22439. });
  22440. }
  22441. popup.setLngLat(lastPointPos);
  22442. var measureNodeList = [].concat(this.measureNodes, [lastPointPos]);
  22443. var feature = {
  22444. type: 'Feature',
  22445. geometry: {
  22446. type: "".concat(this.activeMode === 'draw_line_string' ? 'LineString' : 'Polygon'),
  22447. coordinates: this.activeMode === 'draw_line_string' ? measureNodeList : [measureNodeList]
  22448. }
  22449. };
  22450. switch (this.activeMode) {
  22451. case 'draw_line_string':
  22452. var tempLength = (0, _length.default)(feature, 'kilometers');
  22453. this.result = (0, _helpers.convertLength)(tempLength, 'kilometers', this.activeUnit);
  22454. break;
  22455. case 'draw_polygon':
  22456. var tempArea = (0, _area.default)(feature);
  22457. this.result = (0, _helpers.convertArea)(tempArea, 'meters', this.activeUnit);
  22458. break;
  22459. }
  22460. var uniti18n;
  22461. if (this.activeMode === 'draw_line_string') {
  22462. uniti18n = (0, _lang.geti18n)().t("unit.".concat(this.activeUnit));
  22463. } else if (this.activeMode === 'draw_polygon') {
  22464. uniti18n = (0, _lang.geti18n)().t("unit.square".concat(this.activeUnit));
  22465. }
  22466. popup.setText("".concat(this._getFormatResult(this.result), " ").concat(uniti18n));
  22467. popup.addTo(this.map);
  22468. this.cachePolygonUnit['value'] = this.result;
  22469. this.cachePolygonUnit['unit'] = this.activeUnit;
  22470. this.tipHoverDiv = popup;
  22471. }
  22472. }
  22473. }, {
  22474. key: "_renderPopupTip",
  22475. value: function _renderPopupTip(e) {
  22476. var _e$lngLat3 = e.lngLat,
  22477. lng = _e$lngLat3.lng,
  22478. lat = _e$lngLat3.lat;
  22479. var popup = new _mapboxGlEnhance.default.Popup({
  22480. closeButton: false,
  22481. closeOnClick: false,
  22482. className: 'sm-component-measure__popup'
  22483. });
  22484. if (this.measureNodes.length > 1) {
  22485. var line = {
  22486. type: 'Feature',
  22487. geometry: {
  22488. type: 'LineString',
  22489. coordinates: this.measureNodes
  22490. }
  22491. }; // 修改单位
  22492. var tempLength = (0, _length.default)(line, 'kilometers');
  22493. var calcValue = (0, _helpers.convertLength)(tempLength, 'kilometers', this.activeUnit);
  22494. var uniti18n;
  22495. if (this.activeMode === 'draw_line_string') {
  22496. uniti18n = (0, _lang.geti18n)().t("unit.".concat(this.activeUnit));
  22497. } else if (this.activeMode === 'draw_polygon') {
  22498. uniti18n = (0, _lang.geti18n)().t("unit.square".concat(this.activeUnit));
  22499. }
  22500. var renderText = "".concat(this._getFormatResult(calcValue), " ").concat(uniti18n);
  22501. this.cacheLengthUnitList.id = this.cacheLengthUnitList.id || [];
  22502. this.cacheLengthUnitList.id.push({
  22503. value: this._getFormatResult(calcValue),
  22504. unit: this.activeUnit
  22505. });
  22506. popup.setText(renderText);
  22507. } else {
  22508. popup.setText((0, _lang.geti18n)().t('measure.startingPoint'));
  22509. this.cacheLengthUnitList.id = this.cacheLengthUnitList.id || [];
  22510. }
  22511. popup.setLngLat([lng, lat]);
  22512. popup && popup.addTo(this.map); // 这里的key-id只是一个临时的值 在绘画完成后(会生成一个featureId) 这时会把id这个key转换成真实的id值
  22513. this.lenTipNodesList.id = this.lenTipNodesList.id || [];
  22514. this.lenTipNodesList.id.push(popup);
  22515. }
  22516. }, {
  22517. key: "_getFormatResult",
  22518. value: function _getFormatResult(result) {
  22519. return (0, _util.reservedDecimal)(result || this.result, 4);
  22520. }
  22521. }, {
  22522. key: "_isDrawing",
  22523. value: function _isDrawing() {
  22524. return _drawEvent.default.$options.getDrawingState(this.mapTarget, this.componentName) && this.draw; // return true;
  22525. }
  22526. }, {
  22527. key: "_updateLenPopupNodes",
  22528. value: function _updateLenPopupNodes(idValue) {
  22529. this.cacheLengthUnitList[idValue] = this.cacheLengthUnitList.id || [];
  22530. delete this.cacheLengthUnitList.id;
  22531. this.lenTipNodesList[idValue] = this.lenTipNodesList.id || [];
  22532. delete this.lenTipNodesList.id;
  22533. for (var id in this.lenTipNodesList) {
  22534. var tipNodes = this.lenTipNodesList[id];
  22535. if (tipNodes && !tipNodes.length) {
  22536. delete this.lenTipNodesList[id];
  22537. delete this.cacheLengthUnitList[id];
  22538. }
  22539. }
  22540. }
  22541. }, {
  22542. key: "_updateAreaPopupNodes",
  22543. value: function _updateAreaPopupNodes(popupResult, feature) {
  22544. // 如果是测量面积,直接利用实时计算生成的popup显示最后结果
  22545. var centerResult = (0, _center.default)(feature);
  22546. var uniti18n = (0, _lang.geti18n)().t("unit.square".concat(this.activeUnit));
  22547. var result = this._getFormatResult(popupResult);
  22548. if (this.continueDraw) {
  22549. this.tipHoverDiv && this.tipHoverDiv.setLngLat(centerResult.geometry.coordinates).setText("".concat(result, " ").concat(uniti18n));
  22550. } else {
  22551. this._removeHoverPopup();
  22552. var popup = new _mapboxGlEnhance.default.Popup({
  22553. closeButton: false,
  22554. closeOnClick: false,
  22555. className: 'sm-component-measure__popup'
  22556. });
  22557. popup.setLngLat(centerResult.geometry.coordinates).setText("".concat(result, " ").concat(uniti18n)).addTo(this.map);
  22558. this.areaTipNodesList[feature.id] = popup;
  22559. }
  22560. }
  22561. }, {
  22562. key: "_resetEvent",
  22563. value: function _resetEvent() {
  22564. this.map.off('mousemove', this.popupFollowMouseBind);
  22565. this.map.off('mousedown', this.measureNodeDistanceBind);
  22566. this.map.off('mousedown', this.continueDrawBind);
  22567. }
  22568. }, {
  22569. key: "_clearEvent",
  22570. value: function _clearEvent() {
  22571. this._resetEvent();
  22572. this.map.off('draw.create', this._finishDrawBind);
  22573. this.map.off('draw.modechange', this._changeModeBind);
  22574. }
  22575. }, {
  22576. key: "_removePopups",
  22577. value: function _removePopups() {
  22578. for (var id in this.lenTipNodesList) {
  22579. var tipNodes = this.lenTipNodesList[id];
  22580. if (tipNodes && tipNodes.length) {
  22581. tipNodes.forEach(function (tipNode) {
  22582. return tipNode.remove();
  22583. });
  22584. }
  22585. }
  22586. for (var _id in this.areaTipNodesList) {
  22587. var tipNode = this.areaTipNodesList[_id];
  22588. tipNode && tipNode.remove();
  22589. }
  22590. this.lenTipNodesList = {};
  22591. this.areaTipNodesList = {};
  22592. }
  22593. }, {
  22594. key: "_removeHoverPopup",
  22595. value: function _removeHoverPopup() {
  22596. this.tipHoverDiv && this.tipHoverDiv.remove();
  22597. this.tipHoverDiv = null;
  22598. }
  22599. }, {
  22600. key: "trash",
  22601. value: function trash() {
  22602. var _this2 = this;
  22603. var selectedIds = this.draw.getSelectedIds();
  22604. selectedIds.forEach(function (item) {
  22605. var matchIndex = _this2.ids.findIndex(function (id) {
  22606. return id === item;
  22607. });
  22608. if (matchIndex > -1) {
  22609. _this2.ids.splice(matchIndex, 1);
  22610. _this2.draw.delete(item);
  22611. var tipNodes = _this2.lenTipNodesList[item] || _this2.areaTipNodesList[item];
  22612. Array.isArray(tipNodes) ? tipNodes.forEach(function (tipNode) {
  22613. return tipNode.remove();
  22614. }) : tipNodes.remove();
  22615. }
  22616. });
  22617. }
  22618. }, {
  22619. key: "removeDraw",
  22620. value: function removeDraw(continueDraw) {
  22621. this.isEditing = false;
  22622. this.draw.changeMode('simple_select');
  22623. this.ids && this.draw.delete(this.ids);
  22624. this.ids = [];
  22625. this._resetDraw(continueDraw);
  22626. this._resetEvent();
  22627. this._removePopups();
  22628. this._removeHoverPopup();
  22629. }
  22630. }, {
  22631. key: "removed",
  22632. value: function removed() {
  22633. this.isEditing = false;
  22634. this.ids && this.draw.delete(this.ids);
  22635. this.ids = [];
  22636. this.cacheLengthUnitList = {};
  22637. this.cachePolygonUnit = {};
  22638. this._clearEvent();
  22639. this._removePopups();
  22640. this._removeHoverPopup();
  22641. this.draw = null;
  22642. }
  22643. }, {
  22644. key: "clearAllFeatures",
  22645. value: function clearAllFeatures() {
  22646. this.removeDraw();
  22647. }
  22648. }]);
  22649. return MeasureViewModel;
  22650. }(_mapboxGlEnhance.default.Evented);
  22651. var _default = MeasureViewModel;
  22652. exports.default = _default;
  22653. /***/ }),
  22654. /***/ "4d11":
  22655. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  22656. "use strict";
  22657. __webpack_require__.r(__webpack_exports__);
  22658. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RanksymbolThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("50f6");
  22659. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RanksymbolThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RanksymbolThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  22660. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RanksymbolThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RanksymbolThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  22661. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RanksymbolThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  22662. /***/ }),
  22663. /***/ "4d5e":
  22664. /***/ (function(module, exports, __webpack_require__) {
  22665. "use strict";
  22666. var _interopRequireDefault = __webpack_require__("8e6d");
  22667. Object.defineProperty(exports, "__esModule", {
  22668. value: true
  22669. });
  22670. exports.default = void 0;
  22671. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  22672. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  22673. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  22674. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  22675. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  22676. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  22677. var ChartViewModel =
  22678. /*#__PURE__*/
  22679. function (_mapboxgl$Evented) {
  22680. (0, _inherits2.default)(ChartViewModel, _mapboxgl$Evented);
  22681. function ChartViewModel(options) {
  22682. var _this;
  22683. (0, _classCallCheck2.default)(this, ChartViewModel);
  22684. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(ChartViewModel).call(this));
  22685. _this.options = options;
  22686. return _this;
  22687. }
  22688. (0, _createClass2.default)(ChartViewModel, [{
  22689. key: "setMap",
  22690. value: function setMap(mapInfo) {
  22691. var map = mapInfo.map;
  22692. this.map = map;
  22693. }
  22694. }, {
  22695. key: "setPopupContent",
  22696. value: function setPopupContent(coordinates, popupContainer, callback) {
  22697. this.removed();
  22698. popupContainer.style.display = 'block';
  22699. this.popup = new _mapboxGlEnhance.default.Popup({
  22700. className: 'sm-mapboxgl-tabel-popup sm-component-chart-result-popup',
  22701. closeOnClick: true,
  22702. anchor: 'bottom'
  22703. });
  22704. this.marker = new _mapboxGlEnhance.default.Marker();
  22705. this.popup.setLngLat(coordinates).setDOMContent(popupContainer).addTo(this.map);
  22706. this.popup.on('open', function () {
  22707. callback && callback();
  22708. });
  22709. this.marker.setLngLat(coordinates).setPopup(this.popup).addTo(this.map);
  22710. this.map.flyTo({
  22711. center: coordinates
  22712. });
  22713. }
  22714. }, {
  22715. key: "removed",
  22716. value: function removed() {
  22717. if (this.popup) {
  22718. this.popup.remove();
  22719. this.popup = null;
  22720. }
  22721. if (this.marker) {
  22722. this.marker.remove();
  22723. this.marker = null;
  22724. }
  22725. }
  22726. }]);
  22727. return ChartViewModel;
  22728. }(_mapboxGlEnhance.default.Evented);
  22729. exports.default = ChartViewModel;
  22730. /***/ }),
  22731. /***/ "4dd8":
  22732. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  22733. "use strict";
  22734. __webpack_require__.r(__webpack_exports__);
  22735. /* harmony import */ var _Pagination_vue_vue_type_template_id_401a7eac___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("1a33");
  22736. /* harmony import */ var _Pagination_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("03e1");
  22737. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Pagination_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Pagination_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  22738. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  22739. /* normalize component */
  22740. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  22741. _Pagination_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  22742. _Pagination_vue_vue_type_template_id_401a7eac___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  22743. _Pagination_vue_vue_type_template_id_401a7eac___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  22744. false,
  22745. null,
  22746. null,
  22747. null
  22748. )
  22749. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  22750. /***/ }),
  22751. /***/ "4e21":
  22752. /***/ (function(module, exports, __webpack_require__) {
  22753. "use strict";
  22754. var _interopRequireDefault = __webpack_require__("8e6d");
  22755. Object.defineProperty(exports, "__esModule", {
  22756. value: true
  22757. });
  22758. exports.getLanguage = getLanguage;
  22759. exports.geti18n = geti18n;
  22760. exports.setLocale = setLocale;
  22761. exports.initi18n = initi18n;
  22762. exports.default = exports.lang = void 0;
  22763. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  22764. var _jsCookie = _interopRequireDefault(__webpack_require__("f53a"));
  22765. var _en = _interopRequireDefault(__webpack_require__("7fd4"));
  22766. var _zh = _interopRequireDefault(__webpack_require__("99ae"));
  22767. var _lodash = _interopRequireDefault(__webpack_require__("25a2"));
  22768. var _vueI18n = _interopRequireDefault(__webpack_require__("2efc"));
  22769. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  22770. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  22771. var dateTimeFormats = {
  22772. en: _en.default.dateTimeFormat,
  22773. zh: _zh.default.dateTimeFormat
  22774. };
  22775. var i18n = {};
  22776. var rooti18n;
  22777. var messages = {
  22778. en: _objectSpread({}, _en.default),
  22779. zh: _objectSpread({}, _zh.default)
  22780. };
  22781. function getLanguage() {
  22782. var lang = _jsCookie.default.get('language');
  22783. if (!lang) {
  22784. if (navigator.appName === 'Netscape') {
  22785. lang = navigator.language;
  22786. } else {
  22787. lang = navigator.browserLanguage;
  22788. }
  22789. }
  22790. if (lang) {
  22791. if (lang.indexOf('zh') === 0) {
  22792. return 'zh';
  22793. }
  22794. if (lang.indexOf('en') === 0) {
  22795. return 'en';
  22796. }
  22797. }
  22798. return 'zh';
  22799. }
  22800. function geti18n(n) {
  22801. return rooti18n || i18n;
  22802. }
  22803. function setLocale(locales) {
  22804. i18n.mergeLocaleMessage && i18n.mergeLocaleMessage(i18n.locale, locales);
  22805. }
  22806. var lang = {
  22807. en: (0, _lodash.default)(_en.default),
  22808. zh: (0, _lodash.default)(_zh.default)
  22809. };
  22810. exports.lang = lang;
  22811. function initi18n(Vue, config) {
  22812. config = config || {};
  22813. if (config.i18n) {
  22814. i18n = config.i18n;
  22815. if (!i18n.getDateTimeFormat().hasOwnProperty()) {
  22816. i18n.setDateTimeFormat('en', _en.default.dateTimeFormat);
  22817. i18n.setDateTimeFormat('zh', _zh.default.dateTimeFormat);
  22818. }
  22819. i18n.mergeLocaleMessage && i18n.mergeLocaleMessage('en', _en.default);
  22820. i18n.mergeLocaleMessage && i18n.mergeLocaleMessage('zh', _zh.default);
  22821. } else if (!Vue.prototype.hasOwnProperty('$i18n')) {
  22822. Object.defineProperty(Vue.prototype, '$i18n', {
  22823. get: function get() {
  22824. if (!rooti18n && this.$root && this.$root.$options.i18n) {
  22825. rooti18n = this.$root.$options.i18n;
  22826. }
  22827. return rooti18n || i18n;
  22828. }
  22829. });
  22830. Vue.use(_vueI18n.default);
  22831. i18n = new _vueI18n.default({
  22832. dateTimeFormats: dateTimeFormats,
  22833. locale: getLanguage(),
  22834. fallbackLocale: 'zh',
  22835. messages: messages
  22836. });
  22837. }
  22838. if (config.locale) {
  22839. setLocale(config.locale);
  22840. }
  22841. }
  22842. var _default = i18n;
  22843. /*
  22844. Example
  22845. 假设国际化资源配置为:
  22846. layerList: {
  22847. title: "图层",
  22848. hello: '{msg} world',
  22849. hello1: '{0} world',
  22850. theWorld: 'the world',
  22851. dio: 'DIO:',
  22852. linked: '@:(message.dio) @:(message.theWorld) !!!!',
  22853. apple: 'no apples | one apple | {count} apples'
  22854. },
  22855. vue中调用:
  22856. this.$tc('layerList.apple',10,{ count: 20 })
  22857. 文本模板调用:
  22858. $t方法:
  22859. <span>{{$t("layerList.title")}}</span>
  22860. ==>
  22861. <span>图层</span>
  22862. <span>{{$t("layerList.hello",{msg:"hello"})}}</span>
  22863. ==>
  22864. <span>hello world</span>
  22865. <span>{{$t("layerList.hello1",["bye"])}}</span>
  22866. ==>
  22867. <span>bye world</span>
  22868. <span>{{$t("layerList.linked")}}</span>
  22869. ==>
  22870. <span>DIO: the world !!!!</span>
  22871. $tc方法:
  22872. <p>{{ $tc('layerList.apple', 0) }}</p>
  22873. ==>
  22874. <p>no apples</p>
  22875. <p>{{ $tc('layerList.apple', 1) }}</p>
  22876. ==>
  22877. <p>one apple</p>
  22878. <p>{{ $tc('layerList.apple', 10}}</p>
  22879. ==>
  22880. <p>10 apples</p>
  22881. <p>{{ $tc('layerList.apple', 10, { count: 20 }) }}</p>
  22882. ==>
  22883. <p>20 apples</p>
  22884. 日期格式处理($d):https://kazupon.github.io/vue-i18n/guide/datetime.html
  22885. 数字格式处理($n):https://kazupon.github.io/vue-i18n/guide/number.html
  22886. */
  22887. exports.default = _default;
  22888. /***/ }),
  22889. /***/ "4ece":
  22890. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  22891. "use strict";
  22892. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/web-map/control/mini-map/MiniMap.vue?vue&type=template&id=18481454&
  22893. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('sm-card',{staticClass:"sm-component-minimap",attrs:{"icon-class":_vm.iconClass,"icon-position":_vm.position,"header-name":_vm.headerName,"auto-rotate":_vm.autoRotate,"collapsed":_vm.collapsed,"background":_vm.background,"textColor":_vm.textColor},on:{"content-show-state":_vm.handleMinimapResize}},[_c('div',{staticClass:"miniMap",attrs:{"id":"miniMap"}},[(_vm.spinning)?_c('a-spin',{attrs:{"size":"small","tip":_vm.$t('info.loading'),"spinning":_vm.spinning}}):_vm._e()],1)])}
  22894. var staticRenderFns = []
  22895. // CONCATENATED MODULE: ./src/mapboxgl/web-map/control/mini-map/MiniMap.vue?vue&type=template&id=18481454&
  22896. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  22897. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  22898. /***/ }),
  22899. /***/ "4f7b":
  22900. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  22901. "use strict";
  22902. __webpack_require__.r(__webpack_exports__);
  22903. /* harmony import */ var _MapvLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("5c36");
  22904. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _MapvLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _MapvLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  22905. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  22906. var render, staticRenderFns
  22907. /* normalize component */
  22908. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  22909. _MapvLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  22910. render,
  22911. staticRenderFns,
  22912. false,
  22913. null,
  22914. null,
  22915. null
  22916. )
  22917. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  22918. /***/ }),
  22919. /***/ "4fe1":
  22920. /***/ (function(module, exports) {
  22921. function _iterableToArray(iter) {
  22922. if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
  22923. }
  22924. module.exports = _iterableToArray;
  22925. /***/ }),
  22926. /***/ "500a":
  22927. /***/ (function(module, exports, __webpack_require__) {
  22928. "use strict";
  22929. var _interopRequireDefault = __webpack_require__("8e6d");
  22930. Object.defineProperty(exports, "__esModule", {
  22931. value: true
  22932. });
  22933. exports.default = void 0;
  22934. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  22935. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  22936. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  22937. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  22938. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  22939. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  22940. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  22941. var _service = __webpack_require__("027a");
  22942. var _bbox = _interopRequireDefault(__webpack_require__("1164"));
  22943. var _transformScale = _interopRequireDefault(__webpack_require__("f052"));
  22944. var _lang = __webpack_require__("4e21");
  22945. var TdtSearchViewModel =
  22946. /*#__PURE__*/
  22947. function (_mapboxgl$Evented) {
  22948. (0, _inherits2.default)(TdtSearchViewModel, _mapboxgl$Evented);
  22949. function TdtSearchViewModel(options) {
  22950. var _this;
  22951. (0, _classCallCheck2.default)(this, TdtSearchViewModel);
  22952. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(TdtSearchViewModel).call(this));
  22953. _this.options = options || {};
  22954. _this.groupLineList = {};
  22955. _this.data = options.data;
  22956. _this.searchResultPoints = _service.sourceNames.searchResultPoints;
  22957. _this.searchResultLine = _service.sourceNames.searchResultLine;
  22958. _this.searchResultPolygon = _service.sourceNames.searchResultPolygon;
  22959. _this.searchResultPointsOfLine = _service.sourceNames.searchResultPointsOfLine;
  22960. return _this;
  22961. }
  22962. (0, _createClass2.default)(TdtSearchViewModel, [{
  22963. key: "setMap",
  22964. value: function setMap(mapInfo) {
  22965. var map = mapInfo.map;
  22966. if (map) {
  22967. this.map = map;
  22968. this.registerEvents();
  22969. } else {
  22970. return new Error("Cannot find map");
  22971. }
  22972. }
  22973. }, {
  22974. key: "registerEvents",
  22975. value: function registerEvents() {
  22976. this.registerPointsEvent();
  22977. this.registerLinesEvent();
  22978. }
  22979. }, {
  22980. key: "registerPointsEvent",
  22981. value: function registerPointsEvent() {
  22982. var _this2 = this;
  22983. this.map.on('click', this.searchResultPoints, function (e) {
  22984. var properties = e.features[0].properties;
  22985. _this2.showPointPopup(e.lngLat, properties);
  22986. });
  22987. this.map.on('mouseenter', this.searchResultPoints, function () {
  22988. _this2.map.getCanvas().style.cursor = 'pointer';
  22989. });
  22990. this.map.on('mouseleave', this.searchResultPoints, function () {
  22991. _this2.map.getCanvas().style.cursor = '';
  22992. });
  22993. }
  22994. }, {
  22995. key: "registerLinesEvent",
  22996. value: function registerLinesEvent() {
  22997. var _this3 = this;
  22998. this.map.on('click', "".concat(this.searchResultPointsOfLine, "-stroke"), function (e) {
  22999. var properties = e.features[0].properties;
  23000. _this3.showPointPopup(e.lngLat, properties, 'LineString');
  23001. });
  23002. this.map.on('mouseenter', "".concat(this.searchResultPointsOfLine, "-stroke"), function (e) {
  23003. _this3.map.getCanvas().style.cursor = 'pointer';
  23004. _this3.showLineHoverPopup(e);
  23005. });
  23006. this.map.on('mouseleave', "".concat(this.searchResultPointsOfLine, "-stroke"), function () {
  23007. _this3.map.getCanvas().style.cursor = '';
  23008. _this3._removeHoverPopup();
  23009. });
  23010. }
  23011. }, {
  23012. key: "showPointPopup",
  23013. value: function showPointPopup(coordinate, pointInfo) {
  23014. var from = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'Point';
  23015. this._removeResultPopup();
  23016. var content = this._getPopupContent(from, pointInfo);
  23017. this.resultPopup = new _mapboxGlEnhance.default.Popup({
  23018. anchor: 'bottom',
  23019. offset: [0, -10],
  23020. className: 'tdt-search-popup'
  23021. }).setLngLat(coordinate).setDOMContent(content).addTo(this.map);
  23022. this.map.easeTo({
  23023. center: coordinate
  23024. });
  23025. }
  23026. }, {
  23027. key: "showLineHoverPopup",
  23028. value: function showLineHoverPopup(e) {
  23029. var coordinates = e.features[0].geometry.coordinates.slice();
  23030. var properties = e.features[0].properties;
  23031. var popDom = "<div style='padding: 5px;'>\n <div style='background: #0099ff; line-height: 28px; padding: 0 10px; font-size: 12px; color: #fff'>".concat(properties.name, "</div>\n </div>");
  23032. this.hoverPopup = new _mapboxGlEnhance.default.Popup({
  23033. closeButton: false,
  23034. offset: [0, -10],
  23035. className: 'tdt-search-line-hover-popup'
  23036. }).setLngLat(coordinates).setHTML(popDom).addTo(this.map);
  23037. }
  23038. }, {
  23039. key: "setData",
  23040. value: function setData(data) {
  23041. this.data = Object.assign(this.data, data);
  23042. this.style = 0;
  23043. }
  23044. }, {
  23045. key: "_getPopupContent",
  23046. value: function _getPopupContent(from, data) {
  23047. var _this4 = this;
  23048. var container = document.createElement('div');
  23049. container.className = 'popup-container';
  23050. container.innerHTML = "\n <div class=\"title\" title=".concat(data.name, ">\n <div class=\"region\">").concat(data.name, "</div>\n </div>\n ");
  23051. var content = document.createElement('div');
  23052. content.className = 'content';
  23053. content.innerHTML = "\n ".concat(from === 'Point' ? "<div>\n <div class=\"phone\">".concat((0, _lang.geti18n)().t('tdtSearch.phone'), "\uFF1A ").concat(data.phone || (0, _lang.geti18n)().t('tdtSearch.noData'), "</div>\n <div class=\"address\">").concat((0, _lang.geti18n)().t('tdtSearch.address'), "\uFF1A ").concat(data.address || (0, _lang.geti18n)().t('tdtSearch.noData'), "</div>\n </div>") : '', "\n ").concat(from === 'LineString' ? "<div>\n <div class=\"address\">".concat((0, _lang.geti18n)().t('tdtSearch.transport'), "\uFF1A ").concat(data.address || (0, _lang.geti18n)().t('tdtSearch.noData'), "</div>\n </div>") : '', "\n ");
  23054. var group = document.createElement('div');
  23055. group.className = 'operate-group';
  23056. var startItem = document.createElement('div');
  23057. startItem.className = 'start-item';
  23058. startItem.onclick = function () {
  23059. return _this4._setPosition('start', data);
  23060. };
  23061. startItem.innerHTML = '<span>设为起点</span>';
  23062. var endItem = document.createElement('div');
  23063. endItem.className = 'end-item';
  23064. endItem.onclick = function () {
  23065. return _this4._setPosition('end', data);
  23066. };
  23067. endItem.innerHTML = '<span>设为终点</span>';
  23068. group.appendChild(startItem);
  23069. group.appendChild(endItem); // content.appendChild(group);
  23070. container.appendChild(content);
  23071. return container;
  23072. }
  23073. }, {
  23074. key: "_setPosition",
  23075. value: function _setPosition(type, data) {
  23076. var name = data.name,
  23077. lonlat = data.lonlat;
  23078. var coordinates = lonlat.split(' ');
  23079. coordinates = coordinates.length < 2 ? lonlat.split(',') : coordinates;
  23080. this._transformMsg(type, [+coordinates[0], +coordinates[1]], name);
  23081. }
  23082. }, {
  23083. key: "_transformMsg",
  23084. value: function _transformMsg(type, coordinates, name) {
  23085. if (coordinates) {
  23086. if (!name) {
  23087. this._getPointInfo(type, coordinates);
  23088. } else {
  23089. this._resetPoint(type, name, coordinates);
  23090. }
  23091. }
  23092. }
  23093. }, {
  23094. key: "_getPointInfo",
  23095. value: function _getPointInfo(type, coordinates) {
  23096. var _this5 = this;
  23097. var url = _service.config.GEOCODE_URL;
  23098. var postStr = {
  23099. lon: coordinates[0],
  23100. lat: coordinates[1],
  23101. ver: 1
  23102. };
  23103. var params = {
  23104. postStr: JSON.stringify(postStr),
  23105. type: 'geocode',
  23106. tk: this.options.data.tk
  23107. };
  23108. (0, _service.request)(url, params).then(function (res) {
  23109. var _res$result$addressCo = res.result.addressComponent,
  23110. addressComponent = _res$result$addressCo === void 0 ? {} : _res$result$addressCo;
  23111. var name = _this5._convertName(addressComponent);
  23112. _this5._resetPoint(type, name, coordinates);
  23113. });
  23114. }
  23115. }, {
  23116. key: "_resetPoint",
  23117. value: function _resetPoint(type, name, coordinates) {
  23118. var _data;
  23119. var coordinatesType = {
  23120. start: 'startLnglat',
  23121. end: 'endLnglat'
  23122. };
  23123. var data = (_data = {}, (0, _defineProperty2.default)(_data, type, name), (0, _defineProperty2.default)(_data, coordinatesType[type], coordinates), _data);
  23124. this.fire('reset-position', {
  23125. data: data
  23126. });
  23127. }
  23128. }, {
  23129. key: "_convertName",
  23130. value: function _convertName(addressComponent) {
  23131. var poi = addressComponent.poi,
  23132. poiDistance = addressComponent.poi_distance,
  23133. road = addressComponent.road,
  23134. roadDistance = addressComponent.road_distance;
  23135. if (poi && poiDistance) {
  23136. return poiDistance > roadDistance ? roadDistance > 10 ? "".concat(road, "\u9644\u8FD1") : road : poiDistance > 10 ? "".concat(poi, "\u9644\u8FD1") : poi;
  23137. }
  23138. return '未知地点';
  23139. }
  23140. /**
  23141. * @function SearchViewModel.prototype.search
  23142. * @description 开始搜索。
  23143. * @param {String} keyWord - 搜索关键字。
  23144. */
  23145. }, {
  23146. key: "search",
  23147. value: function search(keyWord, params) {
  23148. this.keyWord = keyWord;
  23149. return this._searchFromTianditu(params);
  23150. } // queryType: '1' 表示搜索,queryType: '4' 表示普通建议词搜索,queryType: '7' 表示纯POI搜索(不搜公交线)
  23151. }, {
  23152. key: "_searchFromTianditu",
  23153. value: function _searchFromTianditu() {
  23154. var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  23155. var data = this.options.data || {};
  23156. var commonData = {
  23157. keyWord: this.keyWord,
  23158. queryType: '4',
  23159. start: '0',
  23160. count: '10',
  23161. level: Math.round(this.map.getZoom()) + 1,
  23162. mapBound: this._toBBoxString() // 如果params里没有mapBound, 就重新获取一个(例如search)
  23163. };
  23164. return (0, _service.tiandituSearch)(data.searchUrl || 'https://api.tianditu.gov.cn/search', {
  23165. postStr: JSON.stringify(Object.assign({}, commonData, params)),
  23166. type: 'query',
  23167. tk: data.tk
  23168. }).then(function (res) {
  23169. if (+res.count || !+res.count && res.prompt) {
  23170. return res;
  23171. }
  23172. }).catch(function (error) {
  23173. var err = error && error.isCancel ? null : error;
  23174. return Promise.reject(err);
  23175. });
  23176. }
  23177. }, {
  23178. key: "_toBBoxString",
  23179. value: function _toBBoxString() {
  23180. return (0, _service.toBBoxString)(this.map);
  23181. }
  23182. }, {
  23183. key: "getFeatureInfo",
  23184. value: function getFeatureInfo(searchKey, params) {
  23185. var _this6 = this;
  23186. var resultRender = this.options.resultRender;
  23187. this.keyWord = searchKey;
  23188. this.groupLineList = {};
  23189. this.reset();
  23190. return this._searchFromTianditu(params).then(function (data) {
  23191. _this6.fire('search-selected-info', {
  23192. data: data
  23193. });
  23194. if (resultRender) return;
  23195. var result = _this6._showResultToMap(data);
  23196. return result;
  23197. });
  23198. }
  23199. }, {
  23200. key: "_showResultToMap",
  23201. value: function _showResultToMap(data) {
  23202. var features;
  23203. var type;
  23204. var result;
  23205. var prompt = data.prompt && data.prompt.find(function (item) {
  23206. return +item.type === 4;
  23207. });
  23208. if (data.pois && data.pois.length) {
  23209. type = 'Point';
  23210. result = data.pois;
  23211. features = this._generatePointsFeatures(result);
  23212. this._addPoints(features);
  23213. } else if (data.lineData && data.lineData.length) {
  23214. type = 'LineString';
  23215. result = data.lineData;
  23216. var firstUuid = data.lineData[0].uuid;
  23217. this.showLineDetail(firstUuid);
  23218. } else if (data.area) {
  23219. type = 'Polygon';
  23220. result = data.area;
  23221. features = this._generateAreaFeatures(data.area);
  23222. this._addPolygon(features);
  23223. } else if (data.statistics) {
  23224. type = 'Statistics';
  23225. result = (0, _service.getStatisticsResult)(data.statistics);
  23226. } else {
  23227. result = data.prompt;
  23228. }
  23229. return {
  23230. type: type,
  23231. result: {
  23232. count: +data.count,
  23233. data: result,
  23234. prompt: ((prompt || {}).admins || [])[0]
  23235. }
  23236. };
  23237. }
  23238. }, {
  23239. key: "_generatePointsFeatures",
  23240. value: function _generatePointsFeatures(data) {
  23241. var splitFlag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ' ';
  23242. return (0, _service.generatePointsFeatures)(data, splitFlag);
  23243. }
  23244. }, {
  23245. key: "_generateLinesFeatures",
  23246. value: function _generateLinesFeatures(data) {
  23247. var coordinates = [];
  23248. var points = data.linepoint.split(';');
  23249. points.forEach(function (item) {
  23250. var point = item.split(',');
  23251. if (point && point.length === 2) {
  23252. coordinates.push([+point[0], +point[1]]);
  23253. }
  23254. });
  23255. var feature = {
  23256. type: 'Feature',
  23257. properties: data,
  23258. geometry: {
  23259. type: 'LineString',
  23260. coordinates: coordinates
  23261. }
  23262. };
  23263. return feature;
  23264. }
  23265. }, {
  23266. key: "_generateAreaFeatures",
  23267. value: function _generateAreaFeatures(area) {
  23268. var _area$points = area.points,
  23269. points = _area$points === void 0 ? [] : _area$points;
  23270. var region = (points[0] || {}).region || '';
  23271. var data = region.split(',');
  23272. var feature = {
  23273. type: 'Feature',
  23274. geometry: {
  23275. type: 'Polygon',
  23276. coordinates: [data.map(function (item) {
  23277. var items = item.split(' ');
  23278. items[0] = +items[0];
  23279. items[1] = +items[1];
  23280. return items;
  23281. })]
  23282. },
  23283. properties: area
  23284. };
  23285. return feature;
  23286. }
  23287. }, {
  23288. key: "showLineDetail",
  23289. value: function showLineDetail(uuid) {
  23290. var _this7 = this;
  23291. if (!uuid) return;
  23292. if (!this.groupLineList[uuid]) {
  23293. this._transitByUuid(uuid).then(function (res) {
  23294. if (res) {
  23295. _this7.groupLineList[uuid] = res;
  23296. _this7._addLines(_this7._generateLinesFeatures(res));
  23297. _this7.fire('get-transit-data-succeeded', {
  23298. data: _this7.groupLineList
  23299. });
  23300. }
  23301. });
  23302. } else {
  23303. this._addLines(this._generateLinesFeatures(this.groupLineList[uuid]));
  23304. }
  23305. }
  23306. }, {
  23307. key: "_transitByUuid",
  23308. value: function _transitByUuid(uuid) {
  23309. var url = _service.config.BUS_URL;
  23310. var params = {
  23311. postStr: JSON.stringify({
  23312. uuid: uuid
  23313. }),
  23314. type: 'busline',
  23315. tk: this.options.data.tk
  23316. };
  23317. return (0, _service.tiandituTransit)(url, params);
  23318. }
  23319. }, {
  23320. key: "_addPoints",
  23321. value: function _addPoints(features) {
  23322. (0, _service.addPoints)(this.map, this.searchResultPoints, features);
  23323. }
  23324. }, {
  23325. key: "_addPointsOfLine",
  23326. value: function _addPointsOfLine(features) {
  23327. if (features && this.map) {
  23328. var source = this.map.getSource(this.searchResultPointsOfLine);
  23329. var sourceData = features;
  23330. if (source) {
  23331. source.setData(sourceData);
  23332. } else {
  23333. this.map.addSource(this.searchResultPointsOfLine, {
  23334. type: 'geojson',
  23335. data: sourceData
  23336. });
  23337. this.map.addLayer({
  23338. id: "".concat(this.searchResultPointsOfLine, "-fill"),
  23339. type: 'circle',
  23340. source: this.searchResultPointsOfLine,
  23341. paint: {
  23342. 'circle-radius': 6,
  23343. 'circle-color': '#3385ff'
  23344. }
  23345. });
  23346. this.map.addLayer({
  23347. id: "".concat(this.searchResultPointsOfLine, "-stroke"),
  23348. type: 'circle',
  23349. source: this.searchResultPointsOfLine,
  23350. paint: {
  23351. 'circle-radius': 4,
  23352. 'circle-color': '#fff'
  23353. }
  23354. });
  23355. }
  23356. }
  23357. }
  23358. }, {
  23359. key: "_addLines",
  23360. value: function _addLines(feature) {
  23361. if (feature && this.map) {
  23362. var source = this.map.getSource(this.searchResultLine);
  23363. var sourceData = feature;
  23364. var lineFill = "".concat(this.searchResultPointsOfLine, "-fill");
  23365. this._addPointsOfLine(this._generatePointsFeatures(feature.properties.station || [], ','));
  23366. if (source) {
  23367. source.setData(sourceData);
  23368. } else {
  23369. this.map.addSource(this.searchResultLine, {
  23370. type: 'geojson',
  23371. data: sourceData
  23372. });
  23373. this.map.addLayer({
  23374. id: this.searchResultLine,
  23375. type: 'line',
  23376. source: this.searchResultLine,
  23377. layout: {
  23378. 'line-cap': 'round'
  23379. },
  23380. paint: {
  23381. 'line-width': 8,
  23382. 'line-color': 'rgb(92,155,239)',
  23383. 'line-opacity': 1
  23384. }
  23385. }, lineFill);
  23386. }
  23387. var bounds = (0, _bbox.default)((0, _transformScale.default)(sourceData, 1.7));
  23388. this.map.fitBounds([[bounds[0], bounds[1]], [bounds[2], bounds[3]]]);
  23389. }
  23390. }
  23391. }, {
  23392. key: "_addPolygon",
  23393. value: function _addPolygon(feature) {
  23394. if (feature && this.map) {
  23395. var map = this.map;
  23396. if (feature && map) {
  23397. var source = map.getSource(this.searchResultPolygon);
  23398. var sourceData = feature;
  23399. if (source) {
  23400. source.setData(sourceData);
  23401. } else {
  23402. map.addSource(this.searchResultPolygon, {
  23403. type: 'geojson',
  23404. data: sourceData
  23405. });
  23406. map.addLayer({
  23407. id: "".concat(this.searchResultPolygon, "-stroke"),
  23408. type: 'line',
  23409. source: this.searchResultPolygon,
  23410. layout: {
  23411. 'line-cap': 'round',
  23412. 'line-join': 'round'
  23413. },
  23414. paint: {
  23415. 'line-width': 3,
  23416. 'line-dasharray': [0.6, 1.2],
  23417. 'line-color': '#0027eb'
  23418. }
  23419. });
  23420. map.addLayer({
  23421. id: this.searchResultPolygon,
  23422. type: 'fill',
  23423. source: this.searchResultPolygon,
  23424. layout: {},
  23425. paint: {
  23426. 'fill-color': 'rgb(0, 0, 255)',
  23427. 'fill-opacity': 0.1
  23428. }
  23429. });
  23430. }
  23431. var bounds = feature.properties.bound.split(',');
  23432. var mapBound = [[bounds[0], bounds[1]], [bounds[2], bounds[3]]];
  23433. map.fitBounds(mapBound);
  23434. }
  23435. }
  23436. }
  23437. }, {
  23438. key: "setHighlightIcon",
  23439. value: function setHighlightIcon(hotPointID) {
  23440. (0, _service.tdtSetHighlightIcon)(this.map, this.searchResultPoints, hotPointID);
  23441. }
  23442. }, {
  23443. key: "_resetSearchSourceData",
  23444. value: function _resetSearchSourceData() {
  23445. (0, _service.resetSearchSourceData)(this.map);
  23446. }
  23447. }, {
  23448. key: "_removeHoverPopup",
  23449. value: function _removeHoverPopup() {
  23450. this.hoverPopup && this.hoverPopup.remove();
  23451. this.hoverPopup = null;
  23452. }
  23453. }, {
  23454. key: "_removeResultPopup",
  23455. value: function _removeResultPopup() {
  23456. this.resultPopup && this.resultPopup.remove();
  23457. this.resultPopup = null;
  23458. }
  23459. }, {
  23460. key: "reset",
  23461. value: function reset() {
  23462. this._removeResultPopup();
  23463. this._resetSearchSourceData();
  23464. }
  23465. }, {
  23466. key: "_clearSearchResultLayer",
  23467. value: function _clearSearchResultLayer() {
  23468. (0, _service.clearSearchResultLayer)(this.map);
  23469. }
  23470. }, {
  23471. key: "removed",
  23472. value: function removed() {
  23473. this.groupLineList = {};
  23474. if (!this.options.resultRender) {
  23475. this._removeResultPopup();
  23476. this._clearSearchResultLayer();
  23477. }
  23478. }
  23479. }]);
  23480. return TdtSearchViewModel;
  23481. }(_mapboxGlEnhance.default.Evented);
  23482. exports.default = TdtSearchViewModel;
  23483. /***/ }),
  23484. /***/ "50a6":
  23485. /***/ (function(module, exports, __webpack_require__) {
  23486. "use strict";
  23487. var _interopRequireDefault = __webpack_require__("8e6d");
  23488. Object.defineProperty(exports, "__esModule", {
  23489. value: true
  23490. });
  23491. exports.default = void 0;
  23492. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  23493. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  23494. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  23495. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  23496. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  23497. var _Marker2 = _interopRequireDefault(__webpack_require__("4361"));
  23498. var DiffusedApertureMarker =
  23499. /*#__PURE__*/
  23500. function (_Marker) {
  23501. (0, _inherits2.default)(DiffusedApertureMarker, _Marker);
  23502. function DiffusedApertureMarker(features) {
  23503. var _this;
  23504. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  23505. (0, _classCallCheck2.default)(this, DiffusedApertureMarker);
  23506. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(DiffusedApertureMarker).call(this, features, options));
  23507. _this.features && _this._createMarker();
  23508. return _this;
  23509. }
  23510. (0, _createClass2.default)(DiffusedApertureMarker, [{
  23511. key: "setMarkersWidth",
  23512. value: function setMarkersWidth(width) {
  23513. this.options.width = width;
  23514. var markerContainer = document.getElementsByClassName('sm-component-animate-marker--diffused-aperture');
  23515. for (var i = 0; i < markerContainer.length; i++) {
  23516. var style = markerContainer[i].style;
  23517. style.setProperty('--container-width', width + 'px');
  23518. }
  23519. }
  23520. }, {
  23521. key: "setMarkersColors",
  23522. value: function setMarkersColors(colors) {
  23523. this.options.colors = colors;
  23524. if (colors && colors.length && colors.length > 0) {
  23525. var markerContainer = document.getElementsByClassName('sm-component-animate-marker--diffused-aperture');
  23526. for (var i = 0; i < markerContainer.length; i++) {
  23527. var style = markerContainer[i].style;
  23528. style.setProperty('--background-color', this.options.colors[0]);
  23529. style.setProperty('--box-shadow-color', this.options.colors[1] || this.options.colors[0]);
  23530. }
  23531. }
  23532. }
  23533. }, {
  23534. key: "_createMarker",
  23535. value: function _createMarker() {
  23536. var _this2 = this;
  23537. this.features.features.forEach(function (point) {
  23538. var markerContainer = document.createElement('div');
  23539. markerContainer.className = 'sm-component-animate-marker--diffused-aperture';
  23540. var wrapper = document.createElement('div');
  23541. wrapper.className = 'sm-component-animate-marker__diffused-aperture-wrapper';
  23542. var bg = document.createElement('div');
  23543. bg.className = 'sm-component-animate-marker__bg';
  23544. wrapper.appendChild(bg);
  23545. var circle = document.createElement('div');
  23546. circle.className = 'sm-component-animate-marker__circle';
  23547. wrapper.appendChild(circle);
  23548. markerContainer.appendChild(wrapper);
  23549. var nameContainer = _this2._getTextContainer(point, 'diffused-aperture-name');
  23550. markerContainer.appendChild(nameContainer);
  23551. _this2.options.width && markerContainer.style.setProperty('--container-width', _this2.options.width + 'px');
  23552. if (_this2.options.colors && _this2.options.colors.length && _this2.options.colors.length > 0) {
  23553. markerContainer.style.setProperty('--background-color', _this2.options.colors[0]);
  23554. markerContainer.style.setProperty('--box-shadow-color', _this2.options.colors[1] || _this2.options.colors[0]);
  23555. }
  23556. _this2.markersElement.push(markerContainer);
  23557. }, this);
  23558. }
  23559. }]);
  23560. return DiffusedApertureMarker;
  23561. }(_Marker2.default);
  23562. exports.default = DiffusedApertureMarker;
  23563. /***/ }),
  23564. /***/ "50af":
  23565. /***/ (function(module, exports, __webpack_require__) {
  23566. "use strict";
  23567. var _interopRequireDefault = __webpack_require__("8e6d");
  23568. Object.defineProperty(exports, "__esModule", {
  23569. value: true
  23570. });
  23571. exports.default = void 0;
  23572. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  23573. //
  23574. //
  23575. //
  23576. //
  23577. //
  23578. //
  23579. //
  23580. //
  23581. //
  23582. //
  23583. //
  23584. //
  23585. //
  23586. //
  23587. //
  23588. //
  23589. //
  23590. //
  23591. //
  23592. //
  23593. //
  23594. //
  23595. //
  23596. //
  23597. //
  23598. //
  23599. //
  23600. //
  23601. //
  23602. //
  23603. //
  23604. //
  23605. //
  23606. //
  23607. //
  23608. //
  23609. //
  23610. //
  23611. //
  23612. //
  23613. //
  23614. //
  23615. //
  23616. //
  23617. //
  23618. //
  23619. //
  23620. //
  23621. var _default = {
  23622. name: 'StatisticsResult',
  23623. mixins: [_theme.default],
  23624. props: {
  23625. keyWord: {
  23626. type: String
  23627. },
  23628. from: {
  23629. type: String,
  23630. default: 'Search' // Search Route
  23631. },
  23632. pageSize: {
  23633. type: Number,
  23634. default: 10
  23635. },
  23636. priorityCitys: {
  23637. type: Array
  23638. },
  23639. data: {
  23640. type: Array
  23641. },
  23642. prompt: {
  23643. type: Object
  23644. }
  23645. },
  23646. data: function data() {
  23647. return {
  23648. showMore: true
  23649. };
  23650. },
  23651. methods: {
  23652. searchPointsResult: function searchPointsResult(adminCode) {
  23653. var params = {
  23654. queryType: '1',
  23655. queryTerminal: 10000,
  23656. specifyAdminCode: adminCode
  23657. };
  23658. if (this.from === 'Route') {
  23659. params.queryType = '7';
  23660. params.count = this.pageSize;
  23661. this.$emit('search-points-result', this.keyWord, params, true);
  23662. return;
  23663. }
  23664. this.$emit('search-points-result', this.keyWord, params, false);
  23665. },
  23666. searchDetail: function searchDetail(info) {
  23667. if (info.lon && info.lat && !info.childAdmins) {
  23668. var center = [+info.lon, +info.lat];
  23669. var map = this.$parent.map || this.$parent.$parent.map;
  23670. map.easeTo({
  23671. center: center
  23672. });
  23673. this.searchPointsResult(info.adminCode);
  23674. }
  23675. }
  23676. }
  23677. };
  23678. exports.default = _default;
  23679. /***/ }),
  23680. /***/ "50c6":
  23681. /***/ (function(module, exports, __webpack_require__) {
  23682. "use strict";
  23683. var _interopRequireDefault = __webpack_require__("8e6d");
  23684. Object.defineProperty(exports, "__esModule", {
  23685. value: true
  23686. });
  23687. exports.tranformSingleToMulti = tranformSingleToMulti;
  23688. exports.sortData = sortData;
  23689. exports.default = void 0;
  23690. var _toConsumableArray2 = _interopRequireDefault(__webpack_require__("4066"));
  23691. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  23692. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  23693. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  23694. var _slicedToArray2 = _interopRequireDefault(__webpack_require__("5e4c"));
  23695. var _getFeatures = _interopRequireDefault(__webpack_require__("6e0d"));
  23696. var _lodash = _interopRequireDefault(__webpack_require__("ca6a"));
  23697. var _lodash2 = _interopRequireDefault(__webpack_require__("2df9"));
  23698. var _lodash3 = _interopRequireDefault(__webpack_require__("ae5c"));
  23699. var _util = __webpack_require__("1448");
  23700. var _statistics = __webpack_require__("9dde");
  23701. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  23702. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  23703. // 三方服务请求的结果为单对象的时候,是否要转成多个features
  23704. function tranformSingleToMulti(data) {
  23705. var dataInfo = (data.features[0] || {}).properties;
  23706. if (dataInfo) {
  23707. data.features = Object.entries(dataInfo).map(function (_ref) {
  23708. var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
  23709. key = _ref2[0],
  23710. value = _ref2[1];
  23711. return {
  23712. properties: {
  23713. label: key,
  23714. value: value
  23715. }
  23716. };
  23717. });
  23718. return Object.assign(data, (0, _statistics.statisticsFeatures)(data.features));
  23719. }
  23720. return data;
  23721. }
  23722. function sortData(features, datasetOptions, maxFeatures, xBar) {
  23723. var matchItem = datasetOptions.find(function (item) {
  23724. return item.sort && item.sort !== 'unsort';
  23725. });
  23726. var nextFeatures = [].concat(features);
  23727. if (matchItem) {
  23728. nextFeatures = (0, _lodash3.default)(features, function (feature) {
  23729. return isNaN(+feature.properties[matchItem.yField]) ? -Number.MAX_VALUE : +feature.properties[matchItem.yField];
  23730. }, matchItem.sort === 'ascending' ? 'asc' : 'desc');
  23731. }
  23732. var maxLen = +maxFeatures;
  23733. if (maxLen && nextFeatures.length > maxLen) {
  23734. nextFeatures.length = maxLen;
  23735. }
  23736. matchItem && xBar && nextFeatures.reverse();
  23737. return nextFeatures;
  23738. }
  23739. /**
  23740. * @class EchartsDataService
  23741. * @classdesc 图表组件功能类
  23742. * @param {Chart-dataset} dataset - 请求的参数
  23743. * @param {Array.<Chart-datasetOption>} datasetOptions - 数据解析的配置。
  23744. */
  23745. /**
  23746. * @typedef {Object} Chart-dataset - 数据来源
  23747. * @property {string} [type = 'iServer'] - 服务类型 iServer, iPortal。
  23748. * @property {string} url - 服务url地址。
  23749. * @property {boolean} [withCredentials = false] - 设置请求是否带cookie
  23750. * @property {SuperMap.FilterParameter} queryInfo - 查询条件
  23751. */
  23752. /**
  23753. * @typedef {Object} Chart-datasetOption - 解析数据的配置
  23754. * @property {string} seriesType - 图表类型line, bar, scatter, pie, radar, gauge。
  23755. * @property {boolean} [isStastic = false] - 是否统计数据。
  23756. * @property {boolean} [isStack = false] - 图表(line, bar, scatter)是否堆叠
  23757. * @property {string} xField - 数据的字段,坐标值
  23758. * @property {string} yField - 数据的字段,数据值
  23759. */
  23760. var EchartsDataService =
  23761. /*#__PURE__*/
  23762. function () {
  23763. function EchartsDataService(dataset, datasetOptions) {
  23764. (0, _classCallCheck2.default)(this, EchartsDataService);
  23765. // 设置默认值
  23766. dataset.withCredentials = dataset.withCredentials || false; // 请求认证
  23767. this.dataset = dataset;
  23768. this.datasetOptions = datasetOptions;
  23769. this.dataCache = null; // 缓存的是请求后的数据
  23770. this.sortDataCache = null;
  23771. this.axisDatas = []; // 坐标data
  23772. this.serieDatas = []; // series data
  23773. this.gridAxis = {
  23774. xAxis: [],
  23775. yAxis: {}
  23776. }; // 直角坐标系
  23777. this.radarAxis = {}; // 雷达图坐标系
  23778. this.radarMax = 0; // 雷达图坐标最大值
  23779. }
  23780. /**
  23781. * @function EchartsDataService.prototype.getDataOption
  23782. * @description 获取符合echart data数据格式的数据, 入口函数。
  23783. * @returns {Object} 带有请求的数据的promise对象
  23784. */
  23785. (0, _createClass2.default)(EchartsDataService, [{
  23786. key: "getDataOption",
  23787. value: function getDataOption(dataset) {
  23788. var _this = this;
  23789. var xBar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  23790. // 设置datasets的默认配置type,withCredentials
  23791. var promise = new Promise(function (resolve, reject) {
  23792. // 请求数据,请求成功后,解析数据
  23793. var matchItem = _this.datasetOptions.find(function (item) {
  23794. return item.sort !== 'unsort';
  23795. });
  23796. var maxFeatures = matchItem ? '' : dataset.maxFeatures;
  23797. (0, _getFeatures.default)(_objectSpread({}, dataset, {
  23798. maxFeatures: maxFeatures
  23799. })).then(function (data) {
  23800. // 兼容三方服务接口返回的一个普通的对象
  23801. if (data.transformed && !!data.features.length) {
  23802. data = tranformSingleToMulti(data);
  23803. } // 解析数据,生成dataOption
  23804. var options;
  23805. if (_this.dataset.type === 'iPortal' || _this.dataset.type === 'iServer' || _this.dataset.type === 'rest' || _this.dataset.type === 'geoJSON') {
  23806. options = _this.formatChartData(_this.datasetOptions, xBar, data);
  23807. }
  23808. resolve(options);
  23809. }).catch(function (e) {
  23810. reject(e);
  23811. });
  23812. });
  23813. return promise;
  23814. }
  23815. /**
  23816. * @function EchartsDataService.prototype.formatChartData
  23817. * @description _requestData方法中返回的数据: 设置数据,转换数据格式。
  23818. * @param {Object} data - 从superMap的iserver,iportal中请求返回的数据
  23819. * @param {Object} datasetOptions - 数据解析的配置参数
  23820. * @returns {Object} 符合echart格式的数据
  23821. */
  23822. }, {
  23823. key: "formatChartData",
  23824. value: function formatChartData(datasetOptions) {
  23825. var _this2 = this;
  23826. var xBar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  23827. var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.dataCache;
  23828. // 清除数据缓存
  23829. this._clearChartCache(); // 设置datasetOptions
  23830. this.setDatasetOptions(datasetOptions); // 设置this.data
  23831. data = this._setData(data, xBar); // 生成seriedata
  23832. datasetOptions.forEach(function (item) {
  23833. // 生成YData, XData
  23834. var fieldData = _this2._fieldsData(data, item, xBar); // 解析YData, XData,生成EchartsOption的data
  23835. var serieData = _this2._createDataOption(fieldData, item); // 设置坐标
  23836. _this2._createAxisData(fieldData, item);
  23837. if (!serieData.tooltip) {
  23838. serieData.tooltip = _this2._fixToolTip(data, item);
  23839. }
  23840. _this2.serieDatas.push(serieData);
  23841. });
  23842. var gridAxis = (this.gridAxis.xAxis.length > 0 || JSON.stringify(this.gridAxis.yAxis) !== '{}') && this.gridAxis;
  23843. var radarAxis = this.radarAxis;
  23844. var series = this.serieDatas;
  23845. return _objectSpread({}, gridAxis, {}, radarAxis, {
  23846. series: series
  23847. });
  23848. }
  23849. /**
  23850. * @function EchartsDataService.prototype.setDatasetOptions
  23851. * @private
  23852. * @description 设置datasetOptions
  23853. * @param {Array.<Chart-datasetOption>} datasetOptions - 数据解析的配置
  23854. */
  23855. }, {
  23856. key: "setDatasetOptions",
  23857. value: function setDatasetOptions(datasetOptions) {
  23858. this.datasetOptions = datasetOptions;
  23859. }
  23860. /**
  23861. * @function EchartsDataService.prototype._setData
  23862. * @private
  23863. * @description 给实例绑定data。
  23864. * @param {Object} data - 从superMap的iserver,iportal中请求返回的数据
  23865. */
  23866. }, {
  23867. key: "_setData",
  23868. value: function _setData(data, xBar) {
  23869. var nextData = data;
  23870. if (data) {
  23871. var nextFeatures = (0, _util.filterInvalidData)(this.datasetOptions, data.features); // 只过滤空数据但不排序的原数据
  23872. this.dataCache = (0, _statistics.statisticsFeatures)(nextFeatures);
  23873. nextFeatures = sortData(nextFeatures, this.datasetOptions, this.dataset.maxFeatures, xBar);
  23874. nextData = (0, _statistics.statisticsFeatures)(nextFeatures);
  23875. this.sortDataCache = nextData;
  23876. }
  23877. return nextData;
  23878. }
  23879. /**
  23880. * @function EchartsDataService.prototype._clearChartCache
  23881. * @private
  23882. * @description 清除已经生成的chart数据的缓存。
  23883. */
  23884. }, {
  23885. key: "_clearChartCache",
  23886. value: function _clearChartCache() {
  23887. this.axisDatas = []; // 坐标data
  23888. this.serieDatas = []; // series data
  23889. this.gridAxis = {
  23890. xAxis: [],
  23891. yAxis: {}
  23892. }; // 直角坐标系
  23893. }
  23894. /**
  23895. * @function EchartsDataService.prototype._createSeriesData
  23896. * @private
  23897. * @description 生成chart的serie。
  23898. * @param {Object} fieldData - 解析后的数据{xData,yData}
  23899. * @param {Chart-datasetOption} datasetOption - 数据解析的配置
  23900. * @returns {Object} 配置好的serieData
  23901. */
  23902. }, {
  23903. key: "_createDataOption",
  23904. value: function _createDataOption(fieldData, datasetOption) {
  23905. var chartType = datasetOption.seriesType;
  23906. var XData = fieldData.xData;
  23907. var YData = fieldData.yData;
  23908. var serieData = {
  23909. type: chartType,
  23910. name: datasetOption.yField,
  23911. data: []
  23912. };
  23913. if (chartType === 'pie') {
  23914. YData.forEach(function (value, index) {
  23915. serieData.data.push({
  23916. value: value,
  23917. name: XData[index]
  23918. });
  23919. });
  23920. } else if (chartType === 'radar') {
  23921. var yData = (0, _toConsumableArray2.default)(YData);
  23922. serieData.data.push({
  23923. value: (0, _toConsumableArray2.default)(YData),
  23924. name: datasetOption.yField
  23925. }); // 获取雷达图的max最大值
  23926. var maxValue = (0, _lodash2.default)(yData);
  23927. this.radarMax = Math.max(maxValue, this.radarMax);
  23928. } else {
  23929. // line bar scatter gauge
  23930. serieData.data = (0, _toConsumableArray2.default)(YData); // 是否堆叠数据(line,bar,scatter)
  23931. if (datasetOption.isStack) {
  23932. serieData.stack = 1;
  23933. } else {
  23934. serieData.stack = 0;
  23935. }
  23936. }
  23937. return serieData;
  23938. }
  23939. /**
  23940. * @function EchartsDataService.prototype._fixToolTip
  23941. * @private
  23942. * @description 调整tooltip显示,Todo 考虑支持用户自定义tooltip内容
  23943. * @param {Object} data - 数据
  23944. * @param {Chart-datasetOption} datasetOption - 数据解析的配置
  23945. * @returns {Object} tooltip
  23946. */
  23947. }, {
  23948. key: "_fixToolTip",
  23949. value: function _fixToolTip(data, datasetOption) {
  23950. if (data.transformed) {
  23951. if (datasetOption.seriesType === 'pie') {
  23952. return {
  23953. trigger: 'item',
  23954. formatter: '{b} : {c} ({d}%)'
  23955. };
  23956. }
  23957. return {
  23958. trigger: 'item',
  23959. formatter: '{b} : {c}'
  23960. };
  23961. }
  23962. return null;
  23963. }
  23964. /**
  23965. * @function EchartsDataService.prototype._createSeriesData
  23966. * @private
  23967. * @description 生成chart的serie。
  23968. * @param {Object} fieldData - 解析后的数据{xData,yData}
  23969. * @param {Chart-datasetOption} datasetOption - 数据解析的配置
  23970. * @returns {Object} 配置好的坐标data
  23971. */
  23972. }, {
  23973. key: "_createAxisData",
  23974. value: function _createAxisData(fieldData, datasetOption) {
  23975. var chartType = datasetOption.seriesType;
  23976. var XData = fieldData.xData;
  23977. var radarData = [];
  23978. var axisData;
  23979. if (chartType === 'radar' && XData) {
  23980. var radarMax = this.radarMax;
  23981. XData.forEach(function (text) {
  23982. radarData.push({
  23983. text: text,
  23984. max: radarMax
  23985. });
  23986. });
  23987. this.radarAxis = {
  23988. radar: {
  23989. indicator: radarData
  23990. }
  23991. };
  23992. axisData = this.radarAxis;
  23993. } else if (['bar', 'line', 'scatter', '2.5Bar'].find(function (item) {
  23994. return item === chartType;
  23995. })) {
  23996. var data = XData && (0, _toConsumableArray2.default)(XData);
  23997. if (!this.gridAxis.xAxis) {
  23998. this.gridAxis.xAxis = [];
  23999. this.gridAxis.yAxis = {};
  24000. }
  24001. if (this.gridAxis.xAxis.length === 0) {
  24002. this.gridAxis.xAxis.push({
  24003. data: data
  24004. });
  24005. } else {
  24006. this.gridAxis.xAxis[0] = {
  24007. data: data
  24008. };
  24009. }
  24010. axisData = this.gridAxis;
  24011. } else {
  24012. axisData = {};
  24013. }
  24014. return axisData;
  24015. }
  24016. /**
  24017. * @function EchartsDataService.prototype._fieldsData
  24018. * @private
  24019. * @description 将请求回来的数据,转换成适用于chart配置的数据。
  24020. * @param {Object} data - 从superMap的iserver,iportal中请求返回的数据
  24021. * @param {Chart-datasetOption} datasetOption - 数据解析的配置
  24022. * @returns {Object} 解析好的Ydata,xdata
  24023. */
  24024. }, {
  24025. key: "_fieldsData",
  24026. value: function _fieldsData(data, datasetOption) {
  24027. var xBar = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  24028. var fieldCaptions, fieldValues, xFieldIndex, yFieldIndex, fieldValueIndex, xData, yData, result;
  24029. var sort = datasetOption.sort,
  24030. yField = datasetOption.yField,
  24031. xField = datasetOption.xField,
  24032. isStastic = datasetOption.isStastic;
  24033. fieldCaptions = data.fieldCaptions; // 所有x字段
  24034. xFieldIndex = fieldCaptions.indexOf(xField); // x字段的下标
  24035. yFieldIndex = fieldCaptions.indexOf(yField); // y字段的下标
  24036. fieldValues = yFieldIndex < 0 ? [] : data.fieldValues[yFieldIndex]; // y字段的所有feature值
  24037. // 该数据是否需要统计,统计的是数组下标
  24038. if (isStastic) {
  24039. fieldValueIndex = this._getUniqFieldDatas(data, xFieldIndex, sort); // 生成统计后的数据
  24040. xData = this._stasticXData(fieldValueIndex, sort);
  24041. yData = this._stasticYData(fieldValues, fieldValueIndex, sort);
  24042. } else {
  24043. // 如果不是统计图表
  24044. xData = this._getFieldDatas(data, xFieldIndex);
  24045. yData = (0, _toConsumableArray2.default)(fieldValues);
  24046. }
  24047. result = {
  24048. xData: xData,
  24049. yData: yData
  24050. };
  24051. return result;
  24052. }
  24053. /**
  24054. * @function EchartsDataService.prototype._stasticXData
  24055. * @private
  24056. * @description 统计X字段数据,生成xData。
  24057. * @param {Object} fieldValueIndex - x字段的统计索引
  24058. * @returns {Array} 统计后的Xdata、
  24059. */
  24060. }, {
  24061. key: "_stasticXData",
  24062. value: function _stasticXData(fieldValueIndex) {
  24063. var xData = Object.keys(fieldValueIndex);
  24064. return xData;
  24065. }
  24066. /**
  24067. * @function EchartsDataService.prototype._stasticYData
  24068. * @private
  24069. * @description 统计数据,生成yData。
  24070. * @param {Object} fieldValues - y字段的所有feature值
  24071. * @param {Object} fieldValueIndex - x字段的统计索引
  24072. * @returns {Array} 统计后的Ydata、
  24073. */
  24074. }, {
  24075. key: "_stasticYData",
  24076. value: function _stasticYData(fieldValues, fieldValueIndex) {
  24077. var yData = []; // 统计Y字段
  24078. for (var key in fieldValueIndex) {
  24079. var total = 0;
  24080. fieldValueIndex[key].forEach(function (index) {
  24081. // 清除字符串型的数字的逗号
  24082. var num = fieldValues[index] && (0, _util.clearNumberComma)(fieldValues[index]);
  24083. total += (0, _lodash.default)(num);
  24084. });
  24085. yData.push(total);
  24086. }
  24087. return yData;
  24088. }
  24089. /**
  24090. * @function EchartsDataService.prototype._getUniqFieldDatas
  24091. * @private
  24092. * @description 获取x轴字段要统计的属性值
  24093. * @param {Object} data - 从superMap的iserver,iportal中请求返回的数据的fieldValue
  24094. * @param {String} fieldIndexs - x字段索引值数组
  24095. * @returns {Object} 返回x轴字段要统计的属性值,返回值为eg:[fieldIndex:1, statiscIndex:{浇水地:[5,2,5,4], 林地:[5,2,5,4]...}]。
  24096. */
  24097. }, {
  24098. key: "_getUniqFieldDatas",
  24099. value: function _getUniqFieldDatas(data, fieldIndex) {
  24100. var fieldValues = this._getFieldDatas(data, fieldIndex);
  24101. var uniqFieldValues = {};
  24102. if (fieldValues) {
  24103. fieldValues.forEach(function (value, index) {
  24104. if (!uniqFieldValues[value]) {
  24105. uniqFieldValues[value] = [index];
  24106. } else {
  24107. uniqFieldValues[value].push(index);
  24108. }
  24109. });
  24110. }
  24111. return uniqFieldValues;
  24112. }
  24113. /**
  24114. * @function EchartsDataService.prototype._getFieldDatas
  24115. * @private
  24116. * @description 。
  24117. * @param {Object} data - 从superMap的iserver,iportal中请求返回的数据的fieldValue
  24118. * @param {String} fieldIndex - x字段索引值
  24119. * @returns {Array} 返回的是一个数组[林地, 旱地, 林地,沼泽,旱地...]
  24120. */
  24121. }, {
  24122. key: "_getFieldDatas",
  24123. value: function _getFieldDatas(data, fieldIndex) {
  24124. // 获取x字段所有值,
  24125. return data.fieldValues[fieldIndex];
  24126. }
  24127. }]);
  24128. return EchartsDataService;
  24129. }();
  24130. exports.default = EchartsDataService;
  24131. /***/ }),
  24132. /***/ "50f6":
  24133. /***/ (function(module, exports, __webpack_require__) {
  24134. "use strict";
  24135. var _interopRequireDefault = __webpack_require__("8e6d");
  24136. Object.defineProperty(exports, "__esModule", {
  24137. value: true
  24138. });
  24139. exports.default = void 0;
  24140. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  24141. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  24142. var _RanksymbolThemeLayerViewModel = _interopRequireDefault(__webpack_require__("a9cb"));
  24143. var _default2 = {
  24144. name: 'SmRanksymbolThemeLayer',
  24145. mixins: [_mapGetter.default, _layer.default],
  24146. props: {
  24147. symbolType: {
  24148. type: String,
  24149. default: 'Circle'
  24150. },
  24151. layerName: {
  24152. type: String
  24153. },
  24154. options: {
  24155. type: Object,
  24156. default: function _default() {
  24157. return {};
  24158. }
  24159. },
  24160. data: {
  24161. type: Array,
  24162. required: true
  24163. }
  24164. },
  24165. watch: {
  24166. data: {
  24167. handler: function handler(val) {
  24168. this.viewModel && this.viewModel.setData(val);
  24169. },
  24170. deep: true
  24171. },
  24172. options: {
  24173. handler: function handler(val) {
  24174. this.viewModel && this.viewModel.setOptions(val);
  24175. },
  24176. deep: true
  24177. },
  24178. symbolType: function symbolType(val) {
  24179. this.viewModel && this.viewModel.setSymbolType(val);
  24180. },
  24181. layerName: function layerName(val) {
  24182. this.viewModel && this.viewModel.setLayerName(val);
  24183. }
  24184. },
  24185. created: function created() {
  24186. this.viewModel = new _RanksymbolThemeLayerViewModel.default(this.$props);
  24187. },
  24188. loaded: function loaded() {
  24189. this.$emit('load', this.viewModel.themeLayer, this.map);
  24190. },
  24191. render: function render() {}
  24192. };
  24193. exports.default = _default2;
  24194. /***/ }),
  24195. /***/ "5106":
  24196. /***/ (function(module, exports) {
  24197. module.exports = "data:image/png;base64,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"
  24198. /***/ }),
  24199. /***/ "52fe":
  24200. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24201. "use strict";
  24202. __webpack_require__.r(__webpack_exports__);
  24203. /* harmony import */ var _Progress_vue_vue_type_template_id_0ed980d1___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ee84");
  24204. /* harmony import */ var _Progress_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("4b85");
  24205. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Progress_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Progress_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  24206. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  24207. /* normalize component */
  24208. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  24209. _Progress_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  24210. _Progress_vue_vue_type_template_id_0ed980d1___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  24211. _Progress_vue_vue_type_template_id_0ed980d1___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  24212. false,
  24213. null,
  24214. null,
  24215. null
  24216. )
  24217. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  24218. /***/ }),
  24219. /***/ "5310":
  24220. /***/ (function(module, exports, __webpack_require__) {
  24221. "use strict";
  24222. var _interopRequireDefault = __webpack_require__("8e6d");
  24223. Object.defineProperty(exports, "__esModule", {
  24224. value: true
  24225. });
  24226. exports.default = void 0;
  24227. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  24228. var _cssElementQueries = __webpack_require__("18e4");
  24229. var _timer = _interopRequireDefault(__webpack_require__("8156"));
  24230. var _thirdService = _interopRequireDefault(__webpack_require__("c51e"));
  24231. //
  24232. //
  24233. //
  24234. //
  24235. //
  24236. //
  24237. //
  24238. //
  24239. //
  24240. //
  24241. //
  24242. //
  24243. //
  24244. //
  24245. //
  24246. //
  24247. var _default = {
  24248. name: 'SmProgress',
  24249. mixins: [_theme.default, _timer.default, _thirdService.default],
  24250. props: {
  24251. percent: {
  24252. type: [Number, String],
  24253. required: true
  24254. },
  24255. type: {
  24256. type: String,
  24257. default: 'line'
  24258. },
  24259. strokeWidth: {
  24260. type: [Number, String],
  24261. default: 6
  24262. },
  24263. status: {
  24264. type: String
  24265. },
  24266. strokeColor: {
  24267. type: String
  24268. },
  24269. trailColor: {
  24270. type: String,
  24271. default: '#f3f3f3'
  24272. },
  24273. size: {
  24274. type: [Number] // fix 其父元素宽高都很大的时候,需要传一个合适的size, 这时候不会自适应, 如需自适应则不传size
  24275. },
  24276. showInfo: {
  24277. type: Boolean,
  24278. default: true
  24279. },
  24280. gapDegree: {
  24281. type: Number,
  24282. default: 0
  24283. },
  24284. gapPosition: {
  24285. type: String,
  24286. default: 'top',
  24287. validator: function validator(gapPosition) {
  24288. var positionList = ['top', 'bottom', 'left', 'right'];
  24289. return positionList.includes(gapPosition);
  24290. }
  24291. },
  24292. strokeLinecap: {
  24293. type: String,
  24294. default: 'round',
  24295. validator: function validator(strokeLinecap) {
  24296. var strokeLinecapList = ['round', 'square'];
  24297. return strokeLinecapList.includes(strokeLinecap);
  24298. }
  24299. }
  24300. },
  24301. data: function data() {
  24302. return {
  24303. colorData: '',
  24304. circleWidth: 0,
  24305. finalValue: this.percent
  24306. };
  24307. },
  24308. computed: {
  24309. calWidth: function calWidth() {
  24310. if (this.size) {
  24311. return this.size;
  24312. }
  24313. return this.circleWidth;
  24314. }
  24315. },
  24316. watch: {
  24317. strokeColor: function strokeColor(val) {
  24318. this.colorData = val;
  24319. },
  24320. trailColor: {
  24321. handler: function handler() {
  24322. if (this.type === 'circle' && this.progressTrailNode) {
  24323. this.progressTrailNode.style.stroke = this.trailColor;
  24324. }
  24325. if (this.type === 'line' && this.progressLineTrailNode) {
  24326. this.progressLineTrailNode.style.backgroundColor = this.trailColor;
  24327. }
  24328. }
  24329. },
  24330. textColorsData: {
  24331. handler: function handler() {
  24332. if (this.progressTextNode) {
  24333. this.progressTextNode.style.color = this.getTextColor;
  24334. }
  24335. }
  24336. },
  24337. percent: function percent(val) {
  24338. this.finalValue = val;
  24339. }
  24340. },
  24341. created: function created() {
  24342. this.colorData = this.strokeColor || this.getColor(0);
  24343. },
  24344. mounted: function mounted() {
  24345. var _this = this;
  24346. this.$on('theme-style-changed', function () {
  24347. _this.colorData = _this.getColor(0);
  24348. });
  24349. this.progressTextNode = this.$el.querySelector('.ant-progress-text');
  24350. this.progressTextNode.style.color = this.getTextColor;
  24351. this.progressTrailNode = this.$el.querySelector('.ant-progress-circle-trail');
  24352. this.progressLineTrailNode = this.$el.querySelector('.ant-progress-inner');
  24353. if (this.type === 'circle' && this.progressTrailNode) {
  24354. this.progressTrailNode.style.stroke = this.trailColor;
  24355. }
  24356. if (this.type === 'line' && this.progressLineTrailNode) {
  24357. this.progressLineTrailNode.style.backgroundColor = this.trailColor;
  24358. }
  24359. this.resizeObsever = new _cssElementQueries.ResizeSensor(this.$el, function () {
  24360. _this.resize();
  24361. });
  24362. },
  24363. beforeDestroy: function beforeDestroy() {
  24364. this.restService && this.restService.remove('getdatasucceeded');
  24365. },
  24366. methods: {
  24367. resize: function resize() {
  24368. this.circleWidth = Math.min(this.$el.offsetWidth, this.$el.offsetHeight);
  24369. },
  24370. timing: function timing() {
  24371. this.getData();
  24372. }
  24373. }
  24374. };
  24375. exports.default = _default;
  24376. /***/ }),
  24377. /***/ "531a":
  24378. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24379. "use strict";
  24380. __webpack_require__.r(__webpack_exports__);
  24381. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_HeatmapLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("c196");
  24382. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_HeatmapLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_HeatmapLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  24383. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_HeatmapLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_HeatmapLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  24384. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_HeatmapLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  24385. /***/ }),
  24386. /***/ "5465":
  24387. /***/ (function(module, exports, __webpack_require__) {
  24388. "use strict";
  24389. // Copyright Joyent, Inc. and other Node contributors.
  24390. //
  24391. // Permission is hereby granted, free of charge, to any person obtaining a
  24392. // copy of this software and associated documentation files (the
  24393. // "Software"), to deal in the Software without restriction, including
  24394. // without limitation the rights to use, copy, modify, merge, publish,
  24395. // distribute, sublicense, and/or sell copies of the Software, and to permit
  24396. // persons to whom the Software is furnished to do so, subject to the
  24397. // following conditions:
  24398. //
  24399. // The above copyright notice and this permission notice shall be included
  24400. // in all copies or substantial portions of the Software.
  24401. //
  24402. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  24403. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  24404. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  24405. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  24406. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  24407. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  24408. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  24409. /*<replacement>*/
  24410. var Buffer = __webpack_require__("0318").Buffer;
  24411. /*</replacement>*/
  24412. var isEncoding = Buffer.isEncoding || function (encoding) {
  24413. encoding = '' + encoding;
  24414. switch (encoding && encoding.toLowerCase()) {
  24415. 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':
  24416. return true;
  24417. default:
  24418. return false;
  24419. }
  24420. };
  24421. function _normalizeEncoding(enc) {
  24422. if (!enc) return 'utf8';
  24423. var retried;
  24424. while (true) {
  24425. switch (enc) {
  24426. case 'utf8':
  24427. case 'utf-8':
  24428. return 'utf8';
  24429. case 'ucs2':
  24430. case 'ucs-2':
  24431. case 'utf16le':
  24432. case 'utf-16le':
  24433. return 'utf16le';
  24434. case 'latin1':
  24435. case 'binary':
  24436. return 'latin1';
  24437. case 'base64':
  24438. case 'ascii':
  24439. case 'hex':
  24440. return enc;
  24441. default:
  24442. if (retried) return; // undefined
  24443. enc = ('' + enc).toLowerCase();
  24444. retried = true;
  24445. }
  24446. }
  24447. };
  24448. // Do not cache `Buffer.isEncoding` when checking encoding names as some
  24449. // modules monkey-patch it to support additional encodings
  24450. function normalizeEncoding(enc) {
  24451. var nenc = _normalizeEncoding(enc);
  24452. if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
  24453. return nenc || enc;
  24454. }
  24455. // StringDecoder provides an interface for efficiently splitting a series of
  24456. // buffers into a series of JS strings without breaking apart multi-byte
  24457. // characters.
  24458. exports.StringDecoder = StringDecoder;
  24459. function StringDecoder(encoding) {
  24460. this.encoding = normalizeEncoding(encoding);
  24461. var nb;
  24462. switch (this.encoding) {
  24463. case 'utf16le':
  24464. this.text = utf16Text;
  24465. this.end = utf16End;
  24466. nb = 4;
  24467. break;
  24468. case 'utf8':
  24469. this.fillLast = utf8FillLast;
  24470. nb = 4;
  24471. break;
  24472. case 'base64':
  24473. this.text = base64Text;
  24474. this.end = base64End;
  24475. nb = 3;
  24476. break;
  24477. default:
  24478. this.write = simpleWrite;
  24479. this.end = simpleEnd;
  24480. return;
  24481. }
  24482. this.lastNeed = 0;
  24483. this.lastTotal = 0;
  24484. this.lastChar = Buffer.allocUnsafe(nb);
  24485. }
  24486. StringDecoder.prototype.write = function (buf) {
  24487. if (buf.length === 0) return '';
  24488. var r;
  24489. var i;
  24490. if (this.lastNeed) {
  24491. r = this.fillLast(buf);
  24492. if (r === undefined) return '';
  24493. i = this.lastNeed;
  24494. this.lastNeed = 0;
  24495. } else {
  24496. i = 0;
  24497. }
  24498. if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
  24499. return r || '';
  24500. };
  24501. StringDecoder.prototype.end = utf8End;
  24502. // Returns only complete characters in a Buffer
  24503. StringDecoder.prototype.text = utf8Text;
  24504. // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
  24505. StringDecoder.prototype.fillLast = function (buf) {
  24506. if (this.lastNeed <= buf.length) {
  24507. buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
  24508. return this.lastChar.toString(this.encoding, 0, this.lastTotal);
  24509. }
  24510. buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
  24511. this.lastNeed -= buf.length;
  24512. };
  24513. // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
  24514. // continuation byte. If an invalid byte is detected, -2 is returned.
  24515. function utf8CheckByte(byte) {
  24516. if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
  24517. return byte >> 6 === 0x02 ? -1 : -2;
  24518. }
  24519. // Checks at most 3 bytes at the end of a Buffer in order to detect an
  24520. // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
  24521. // needed to complete the UTF-8 character (if applicable) are returned.
  24522. function utf8CheckIncomplete(self, buf, i) {
  24523. var j = buf.length - 1;
  24524. if (j < i) return 0;
  24525. var nb = utf8CheckByte(buf[j]);
  24526. if (nb >= 0) {
  24527. if (nb > 0) self.lastNeed = nb - 1;
  24528. return nb;
  24529. }
  24530. if (--j < i || nb === -2) return 0;
  24531. nb = utf8CheckByte(buf[j]);
  24532. if (nb >= 0) {
  24533. if (nb > 0) self.lastNeed = nb - 2;
  24534. return nb;
  24535. }
  24536. if (--j < i || nb === -2) return 0;
  24537. nb = utf8CheckByte(buf[j]);
  24538. if (nb >= 0) {
  24539. if (nb > 0) {
  24540. if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
  24541. }
  24542. return nb;
  24543. }
  24544. return 0;
  24545. }
  24546. // Validates as many continuation bytes for a multi-byte UTF-8 character as
  24547. // needed or are available. If we see a non-continuation byte where we expect
  24548. // one, we "replace" the validated continuation bytes we've seen so far with
  24549. // a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding
  24550. // behavior. The continuation byte check is included three times in the case
  24551. // where all of the continuation bytes for a character exist in the same buffer.
  24552. // It is also done this way as a slight performance increase instead of using a
  24553. // loop.
  24554. function utf8CheckExtraBytes(self, buf, p) {
  24555. if ((buf[0] & 0xC0) !== 0x80) {
  24556. self.lastNeed = 0;
  24557. return '\ufffd';
  24558. }
  24559. if (self.lastNeed > 1 && buf.length > 1) {
  24560. if ((buf[1] & 0xC0) !== 0x80) {
  24561. self.lastNeed = 1;
  24562. return '\ufffd';
  24563. }
  24564. if (self.lastNeed > 2 && buf.length > 2) {
  24565. if ((buf[2] & 0xC0) !== 0x80) {
  24566. self.lastNeed = 2;
  24567. return '\ufffd';
  24568. }
  24569. }
  24570. }
  24571. }
  24572. // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
  24573. function utf8FillLast(buf) {
  24574. var p = this.lastTotal - this.lastNeed;
  24575. var r = utf8CheckExtraBytes(this, buf, p);
  24576. if (r !== undefined) return r;
  24577. if (this.lastNeed <= buf.length) {
  24578. buf.copy(this.lastChar, p, 0, this.lastNeed);
  24579. return this.lastChar.toString(this.encoding, 0, this.lastTotal);
  24580. }
  24581. buf.copy(this.lastChar, p, 0, buf.length);
  24582. this.lastNeed -= buf.length;
  24583. }
  24584. // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
  24585. // partial character, the character's bytes are buffered until the required
  24586. // number of bytes are available.
  24587. function utf8Text(buf, i) {
  24588. var total = utf8CheckIncomplete(this, buf, i);
  24589. if (!this.lastNeed) return buf.toString('utf8', i);
  24590. this.lastTotal = total;
  24591. var end = buf.length - (total - this.lastNeed);
  24592. buf.copy(this.lastChar, 0, end);
  24593. return buf.toString('utf8', i, end);
  24594. }
  24595. // For UTF-8, a replacement character is added when ending on a partial
  24596. // character.
  24597. function utf8End(buf) {
  24598. var r = buf && buf.length ? this.write(buf) : '';
  24599. if (this.lastNeed) return r + '\ufffd';
  24600. return r;
  24601. }
  24602. // UTF-16LE typically needs two bytes per character, but even if we have an even
  24603. // number of bytes available, we need to check if we end on a leading/high
  24604. // surrogate. In that case, we need to wait for the next two bytes in order to
  24605. // decode the last character properly.
  24606. function utf16Text(buf, i) {
  24607. if ((buf.length - i) % 2 === 0) {
  24608. var r = buf.toString('utf16le', i);
  24609. if (r) {
  24610. var c = r.charCodeAt(r.length - 1);
  24611. if (c >= 0xD800 && c <= 0xDBFF) {
  24612. this.lastNeed = 2;
  24613. this.lastTotal = 4;
  24614. this.lastChar[0] = buf[buf.length - 2];
  24615. this.lastChar[1] = buf[buf.length - 1];
  24616. return r.slice(0, -1);
  24617. }
  24618. }
  24619. return r;
  24620. }
  24621. this.lastNeed = 1;
  24622. this.lastTotal = 2;
  24623. this.lastChar[0] = buf[buf.length - 1];
  24624. return buf.toString('utf16le', i, buf.length - 1);
  24625. }
  24626. // For UTF-16LE we do not explicitly append special replacement characters if we
  24627. // end on a partial character, we simply let v8 handle that.
  24628. function utf16End(buf) {
  24629. var r = buf && buf.length ? this.write(buf) : '';
  24630. if (this.lastNeed) {
  24631. var end = this.lastTotal - this.lastNeed;
  24632. return r + this.lastChar.toString('utf16le', 0, end);
  24633. }
  24634. return r;
  24635. }
  24636. function base64Text(buf, i) {
  24637. var n = (buf.length - i) % 3;
  24638. if (n === 0) return buf.toString('base64', i);
  24639. this.lastNeed = 3 - n;
  24640. this.lastTotal = 3;
  24641. if (n === 1) {
  24642. this.lastChar[0] = buf[buf.length - 1];
  24643. } else {
  24644. this.lastChar[0] = buf[buf.length - 2];
  24645. this.lastChar[1] = buf[buf.length - 1];
  24646. }
  24647. return buf.toString('base64', i, buf.length - n);
  24648. }
  24649. function base64End(buf) {
  24650. var r = buf && buf.length ? this.write(buf) : '';
  24651. if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
  24652. return r;
  24653. }
  24654. // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
  24655. function simpleWrite(buf) {
  24656. return buf.toString(this.encoding);
  24657. }
  24658. function simpleEnd(buf) {
  24659. return buf && buf.length ? this.write(buf) : '';
  24660. }
  24661. /***/ }),
  24662. /***/ "54da":
  24663. /***/ (function(module, exports, __webpack_require__) {
  24664. /* eslint-disable node/no-deprecated-api */
  24665. var buffer = __webpack_require__("3be6")
  24666. var Buffer = buffer.Buffer
  24667. // alternative to using Object.keys for old browsers
  24668. function copyProps (src, dst) {
  24669. for (var key in src) {
  24670. dst[key] = src[key]
  24671. }
  24672. }
  24673. if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
  24674. module.exports = buffer
  24675. } else {
  24676. // Copy properties from require('buffer')
  24677. copyProps(buffer, exports)
  24678. exports.Buffer = SafeBuffer
  24679. }
  24680. function SafeBuffer (arg, encodingOrOffset, length) {
  24681. return Buffer(arg, encodingOrOffset, length)
  24682. }
  24683. // Copy static methods from Buffer
  24684. copyProps(Buffer, SafeBuffer)
  24685. SafeBuffer.from = function (arg, encodingOrOffset, length) {
  24686. if (typeof arg === 'number') {
  24687. throw new TypeError('Argument must not be a number')
  24688. }
  24689. return Buffer(arg, encodingOrOffset, length)
  24690. }
  24691. SafeBuffer.alloc = function (size, fill, encoding) {
  24692. if (typeof size !== 'number') {
  24693. throw new TypeError('Argument must be a number')
  24694. }
  24695. var buf = Buffer(size)
  24696. if (fill !== undefined) {
  24697. if (typeof encoding === 'string') {
  24698. buf.fill(fill, encoding)
  24699. } else {
  24700. buf.fill(fill)
  24701. }
  24702. } else {
  24703. buf.fill(0)
  24704. }
  24705. return buf
  24706. }
  24707. SafeBuffer.allocUnsafe = function (size) {
  24708. if (typeof size !== 'number') {
  24709. throw new TypeError('Argument must be a number')
  24710. }
  24711. return Buffer(size)
  24712. }
  24713. SafeBuffer.allocUnsafeSlow = function (size) {
  24714. if (typeof size !== 'number') {
  24715. throw new TypeError('Argument must be a number')
  24716. }
  24717. return buffer.SlowBuffer(size)
  24718. }
  24719. /***/ }),
  24720. /***/ "5595":
  24721. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24722. "use strict";
  24723. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/web-map/control/pan/Pan.vue?vue&type=template&id=c352d4ec&
  24724. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['sm-component-pan', _vm.panImgClass, _vm.mapboxglClass]},[_c('div',{staticClass:"sm-component-pan__center",on:{"click":_vm.panToCenter}}),_vm._v(" "),_c('div',{staticClass:"sm-component-pan__icon is-left",on:{"click":_vm.panToLeft,"mouseleave":_vm.setPanImg,"mouseenter":_vm.setPanWestImg}}),_vm._v(" "),_c('div',{staticClass:"sm-component-pan__icon is-right",on:{"click":_vm.panToRight,"mouseleave":_vm.setPanImg,"mouseenter":_vm.setPanEastImg}}),_vm._v(" "),_c('div',{staticClass:"sm-component-pan__icon is-top",on:{"click":_vm.panToTop,"mouseleave":_vm.setPanImg,"mouseenter":_vm.setPanNorthImg}}),_vm._v(" "),_c('div',{staticClass:"sm-component-pan__icon is-bottom",on:{"click":_vm.panToBottom,"mouseleave":_vm.setPanImg,"mouseenter":_vm.setPanSouthImg}})])}
  24725. var staticRenderFns = []
  24726. // CONCATENATED MODULE: ./src/mapboxgl/web-map/control/pan/Pan.vue?vue&type=template&id=c352d4ec&
  24727. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  24728. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  24729. /***/ }),
  24730. /***/ "5643":
  24731. /***/ (function(module, exports) {
  24732. module.exports = __WEBPACK_EXTERNAL_MODULE__5643__;
  24733. /***/ }),
  24734. /***/ "5648":
  24735. /***/ (function(module, exports, __webpack_require__) {
  24736. module.exports = __webpack_require__("d711");
  24737. /***/ }),
  24738. /***/ "56d1":
  24739. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24740. "use strict";
  24741. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/tdt/results/NothingResult.vue?vue&type=template&id=00943705&
  24742. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.data)?_c('div',{staticClass:"search-results-container nothing-results-container sm-component-tdtNoResults"},[_c('div',{staticClass:"title"},[(_vm.prompt)?_c('span',{staticClass:"region"},[_vm._v(_vm._s(_vm.$t('tdtResults.on'))+_vm._s(_vm.prompt.name))]):_vm._e(),_vm._v("\n "+_vm._s(_vm.$t('tdtResults.searchNoResult'))+"\n ")]),_vm._v(" "),_c('div',{staticClass:"content"},[_c('div',{staticClass:"data-content"},[(!_vm.noResultInfo.DidYouMean)?_c('div',{staticClass:"try-content"},[_c('p',{staticClass:"label"},[_vm._v(_vm._s(_vm.$t('tdtResults.youCanTry'))+":")]),_vm._v(" "),_c('div',{staticClass:"data-list"},[_c('p',[_vm._v("1、"+_vm._s(_vm.$t('tdtResults.enterCorrect')))]),_vm._v(" "),_c('p',[_vm._v("2、"+_vm._s(_vm.$t('tdtResults.enterOtherKeyWords')))]),_vm._v(" "),_c('p',[_vm._v("\n 3、"+_vm._s(_vm.$t('tdtResults.onTdtMap'))+"\n "),_c('a',{style:(_vm.getColorStyle(0)),attrs:{"href":"https://www.tianditu.gov.cn/feedback/#/newPlace","target":"_bank"}},[_vm._v(_vm._s(_vm.$t('tdtResults.addThisAddress')))])])])]):_vm._e(),_vm._v(" "),(_vm.noResultInfo.DidYouMean)?_c('div',{staticClass:"didyoumean-content"},[_c('p',[_vm._v("\n "+_vm._s(_vm.$t('tdtResults.uWantTo'))+":\n "),_c('a',{style:(_vm.getColorStyle(0)),attrs:{"href":"javascript:void(0)"},on:{"click":_vm.searchResult}},[_vm._v(_vm._s(_vm.noResultInfo.DidYouMean))])])]):_vm._e()])])]):_vm._e()}
  24743. var staticRenderFns = []
  24744. // CONCATENATED MODULE: ./src/mapboxgl/tdt/results/NothingResult.vue?vue&type=template&id=00943705&
  24745. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  24746. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  24747. /***/ }),
  24748. /***/ "5941":
  24749. /***/ (function(module, exports, __webpack_require__) {
  24750. "use strict";
  24751. var _interopRequireDefault = __webpack_require__("8e6d");
  24752. Object.defineProperty(exports, "__esModule", {
  24753. value: true
  24754. });
  24755. exports.default = void 0;
  24756. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  24757. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  24758. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  24759. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  24760. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  24761. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  24762. __webpack_require__("f240");
  24763. var GraphThemeLayerViewModel =
  24764. /*#__PURE__*/
  24765. function (_mapboxgl$Evented) {
  24766. (0, _inherits2.default)(GraphThemeLayerViewModel, _mapboxgl$Evented);
  24767. function GraphThemeLayerViewModel(themeProps) {
  24768. var _this;
  24769. (0, _classCallCheck2.default)(this, GraphThemeLayerViewModel);
  24770. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(GraphThemeLayerViewModel).call(this));
  24771. var layerName = themeProps.layerName,
  24772. options = themeProps.options,
  24773. chartsType = themeProps.chartsType,
  24774. layerId = themeProps.layerId,
  24775. data = themeProps.data;
  24776. _this.layerName = layerName || layerId;
  24777. _this.chartsType = chartsType || 'Bar';
  24778. options.id = options.id || layerId;
  24779. _this.options = options;
  24780. _this.layerId = layerId;
  24781. _this.data = data || {};
  24782. return _this;
  24783. }
  24784. (0, _createClass2.default)(GraphThemeLayerViewModel, [{
  24785. key: "setMap",
  24786. value: function setMap(mapInfo) {
  24787. var map = mapInfo.map;
  24788. this.map = map;
  24789. this._init();
  24790. }
  24791. }, {
  24792. key: "setLayerName",
  24793. value: function setLayerName(layerName) {
  24794. this.layerName = layerName;
  24795. this.removed();
  24796. this._init();
  24797. }
  24798. }, {
  24799. key: "setChartsType",
  24800. value: function setChartsType(chartsType) {
  24801. this.chartsType = chartsType;
  24802. this.removed();
  24803. this._init();
  24804. }
  24805. }, {
  24806. key: "setData",
  24807. value: function setData(data) {
  24808. this.data = data;
  24809. this.removed();
  24810. this._init();
  24811. }
  24812. }, {
  24813. key: "setOptions",
  24814. value: function setOptions(options) {
  24815. this.options = options;
  24816. this.removed();
  24817. this._init();
  24818. }
  24819. }, {
  24820. key: "_init",
  24821. value: function _init() {
  24822. this.themeLayer = new _mapboxGlEnhance.default.supermap.GraphThemeLayer(this.layerName, this.chartsType, this.options);
  24823. this.map.addLayer(this.themeLayer);
  24824. this.themeLayer.addFeatures(this.data);
  24825. }
  24826. }, {
  24827. key: "removed",
  24828. value: function removed() {
  24829. var map = this.map,
  24830. options = this.options;
  24831. var layerId = options.id;
  24832. if (map && layerId && map.getLayer(layerId)) {
  24833. map.removeLayer(layerId);
  24834. }
  24835. }
  24836. }]);
  24837. return GraphThemeLayerViewModel;
  24838. }(_mapboxGlEnhance.default.Evented);
  24839. exports.default = GraphThemeLayerViewModel;
  24840. /***/ }),
  24841. /***/ "5966":
  24842. /***/ (function(module, exports, __webpack_require__) {
  24843. "use strict";
  24844. var _interopRequireWildcard = __webpack_require__("16ed");
  24845. var _interopRequireDefault = __webpack_require__("8e6d");
  24846. Object.defineProperty(exports, "__esModule", {
  24847. value: true
  24848. });
  24849. exports.default = void 0;
  24850. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  24851. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  24852. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  24853. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  24854. var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__("27f6"));
  24855. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  24856. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  24857. var THREE = _interopRequireWildcard(__webpack_require__("8b5b"));
  24858. var _GLTFLoader = __webpack_require__("6d09");
  24859. var _OBJLoader = __webpack_require__("b9f8");
  24860. var _pointGeometry = _interopRequireDefault(__webpack_require__("fd21"));
  24861. var _rhumbBearing = _interopRequireDefault(__webpack_require__("0a75"));
  24862. var TrackLayerViewModel =
  24863. /*#__PURE__*/
  24864. function (_mapboxgl$Evented) {
  24865. (0, _inherits2.default)(TrackLayerViewModel, _mapboxgl$Evented);
  24866. function TrackLayerViewModel(options) {
  24867. var _this;
  24868. (0, _classCallCheck2.default)(this, TrackLayerViewModel);
  24869. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(TrackLayerViewModel).call(this));
  24870. _this.lineData = [];
  24871. _this.layerStyle = {};
  24872. _this.imageName = 'custom-image';
  24873. _this.animateTime = 0;
  24874. _this.animateRemaining = 0;
  24875. _this.rotateFactor = 0;
  24876. _this.layerId = options.layerId || "tracklayer_".concat(+new Date());
  24877. _this.lineLayerId = "".concat(_this.layerId, "-line");
  24878. _this.layerStyle = options.layerStyle || {};
  24879. _this.trackPoints = options.trackPoints;
  24880. _this.position = options.position;
  24881. _this.options = {
  24882. loaderType: options.loaderType,
  24883. url: options.url,
  24884. displayLine: options.displayLine,
  24885. direction: options.direction,
  24886. unit: options.unit,
  24887. scale: options.scale,
  24888. fitBounds: options.fitBounds,
  24889. followCamera: options.followCamera
  24890. };
  24891. _this._initPosition();
  24892. _this._animateLayerFn = _this._animateLayer.bind((0, _assertThisInitialized2.default)(_this));
  24893. return _this;
  24894. }
  24895. (0, _createClass2.default)(TrackLayerViewModel, [{
  24896. key: "setMap",
  24897. value: function setMap(mapInfo) {
  24898. var map = mapInfo.map;
  24899. if (!map) {
  24900. throw new Error('map is requierd');
  24901. }
  24902. this.map = map;
  24903. this._init();
  24904. }
  24905. }, {
  24906. key: "setLoaderType",
  24907. value: function setLoaderType(loaderType) {
  24908. var _this2 = this;
  24909. this.options.loaderType = loaderType;
  24910. if (!loaderType) {
  24911. this.removed();
  24912. return;
  24913. }
  24914. if (!this.map) {
  24915. return;
  24916. }
  24917. setTimeout(function () {
  24918. _this2._init(true);
  24919. }, 0);
  24920. }
  24921. }, {
  24922. key: "setUrl",
  24923. value: function setUrl(url) {
  24924. var _this3 = this;
  24925. this.options.url = url;
  24926. if (!url) {
  24927. this.removed();
  24928. return;
  24929. }
  24930. if (!this.map || !this.options.loaderType) {
  24931. return;
  24932. }
  24933. if (this.options.loaderType === 'IMAGE') {
  24934. this.map.loadImage(url, function (error, image) {
  24935. if (error) {
  24936. console.error(error);
  24937. return;
  24938. }
  24939. if (_this3.map.hasImage(_this3.imageName)) {
  24940. _this3.map.removeImage(_this3.imageName);
  24941. _this3.imageName = 'custom-image-' + new Date().getTime();
  24942. _this3.map.addImage(_this3.imageName, image);
  24943. _this3.map.setLayoutProperty(_this3.layerId, 'icon-image', _this3.imageName);
  24944. } else {
  24945. _this3._init();
  24946. }
  24947. });
  24948. } else {
  24949. this._init(true);
  24950. }
  24951. }
  24952. }, {
  24953. key: "setDisplayLine",
  24954. value: function setDisplayLine(displayLine) {
  24955. this.options.displayLine = displayLine;
  24956. var lineSource = this.map && this.map.getSource(this.lineLayerId);
  24957. if (!lineSource) {
  24958. return;
  24959. }
  24960. this._addTrackLineLayer();
  24961. }
  24962. }, {
  24963. key: "setTrackPoints",
  24964. value: function setTrackPoints(trackPoints) {
  24965. this.trackPoints = trackPoints;
  24966. if (!this.map) {
  24967. return;
  24968. }
  24969. if (!trackPoints) {
  24970. this.removed();
  24971. }
  24972. this.lineData = [];
  24973. }
  24974. }, {
  24975. key: "setPosition",
  24976. value: function setPosition(timestampInfo) {
  24977. if (!this.trackPoints) {
  24978. return;
  24979. }
  24980. this.animationFrameId && cancelAnimationFrame(this.animationFrameId);
  24981. this.originStartTimestamp = this.position && this.position.prevTimestamp;
  24982. this.originNextTimestamp = this.position && this.position.nextTimestamp;
  24983. this.position = timestampInfo;
  24984. var destCoordinates, matchNextPosition, matchStartPosition, animateStep;
  24985. var matchNextPositionIndex = this.trackPoints.findIndex(function (item) {
  24986. return item.properties.timestamp > timestampInfo.currentTimestamp;
  24987. });
  24988. if (matchNextPositionIndex > -1) {
  24989. matchNextPosition = this.trackPoints[matchNextPositionIndex];
  24990. matchStartPosition = this.trackPoints[matchNextPositionIndex - 1];
  24991. destCoordinates = matchNextPosition.geometry.coordinates;
  24992. this.destPosition = destCoordinates;
  24993. this.destTimestamp = matchNextPosition.properties.timestamp;
  24994. this.startTimestamp = matchStartPosition.properties.timestamp;
  24995. }
  24996. if (this.originStartTimestamp !== timestampInfo.prevTimestamp) {
  24997. this.animateRemaining = 0;
  24998. var matchCurrentPosition = this.trackPoints.find(function (item) {
  24999. return item.properties.timestamp === timestampInfo.currentTimestamp;
  25000. });
  25001. if (matchCurrentPosition) {
  25002. this.startPosition = matchCurrentPosition.geometry.coordinates;
  25003. } else if (destCoordinates) {
  25004. var totalTime = matchNextPosition.properties.timestamp - this.startTimestamp;
  25005. var diff = timestampInfo.currentTimestamp - this.startTimestamp;
  25006. var percent = diff / totalTime;
  25007. this.startPosition = this._getWayPoint(percent, matchStartPosition.geometry.coordinates, destCoordinates);
  25008. }
  25009. this.lineData = this.trackPoints.slice(0, matchNextPositionIndex).map(function (item) {
  25010. return item.geometry.coordinates;
  25011. });
  25012. this._setRotateFactor();
  25013. this._initLayer(this.startPosition);
  25014. } else if (!timestampInfo.nextTimestamp && this.animateRemaining > 0) {
  25015. animateStep = this.animateRemaining;
  25016. }
  25017. if (timestampInfo.nextTimestamp && destCoordinates) {
  25018. if (timestampInfo.currentTimestamp === timestampInfo.prevTimestamp) {
  25019. var stepBetweenNearPoints = timestampInfo.nextTimestamp - timestampInfo.currentTimestamp;
  25020. var _totalTime = this.destTimestamp - timestampInfo.currentTimestamp;
  25021. var intervals = _totalTime / stepBetweenNearPoints;
  25022. animateStep = animateStep || intervals * timestampInfo.step;
  25023. } else {
  25024. animateStep = animateStep || this.destTimestamp - this.startTimestamp;
  25025. }
  25026. this.animateStep = animateStep;
  25027. this.animateTime = performance.now() + animateStep;
  25028. this._setRotateFactor();
  25029. this._animateLayer();
  25030. } else if (this.destPosition && this.originNextTimestamp) {
  25031. this.destPosition = null;
  25032. }
  25033. }
  25034. }, {
  25035. key: "setLayerStyle",
  25036. value: function setLayerStyle(layerStyle) {
  25037. this.layerStyle = layerStyle;
  25038. if (!layerStyle || !this.map.getSource(this.lineLayerId)) {
  25039. return;
  25040. }
  25041. var _layerStyle$line = layerStyle.line,
  25042. paint = _layerStyle$line.paint,
  25043. layout = _layerStyle$line.layout;
  25044. if (paint) {
  25045. for (var _i = 0, _Object$keys = Object.keys(paint); _i < _Object$keys.length; _i++) {
  25046. var prop = _Object$keys[_i];
  25047. this.map.setPaintProperty(this.lineLayerId, prop, paint[prop]);
  25048. }
  25049. }
  25050. if (layout) {
  25051. for (var _i2 = 0, _Object$keys2 = Object.keys(layout); _i2 < _Object$keys2.length; _i2++) {
  25052. var _prop = _Object$keys2[_i2];
  25053. this.map.setLayoutProperty(this.lineLayerId, _prop, layout[_prop]);
  25054. }
  25055. }
  25056. }
  25057. }, {
  25058. key: "setDirection",
  25059. value: function setDirection(direction) {
  25060. this.options.direction = direction;
  25061. this._init();
  25062. }
  25063. }, {
  25064. key: "setUnit",
  25065. value: function setUnit(unit) {
  25066. this.options.unit = unit;
  25067. this._init(true);
  25068. }
  25069. }, {
  25070. key: "setScale",
  25071. value: function setScale(scale) {
  25072. this.options.scale = isNaN(+scale) ? 0 : +scale;
  25073. this._init(true);
  25074. }
  25075. }, {
  25076. key: "setFitBounds",
  25077. value: function setFitBounds(fitBounds) {
  25078. this.options.fitBounds = fitBounds;
  25079. this._init(true);
  25080. }
  25081. }, {
  25082. key: "setFollowCamera",
  25083. value: function setFollowCamera(followCamera) {
  25084. this.options.followCamera = followCamera;
  25085. }
  25086. }, {
  25087. key: "_initPosition",
  25088. value: function _initPosition() {
  25089. var _this4 = this;
  25090. if (this.position && this.trackPoints) {
  25091. var matchStartPositionIndex = this.trackPoints.findIndex(function (item) {
  25092. return item.properties.timestamp === _this4.position.currentTimestamp;
  25093. });
  25094. if (matchStartPositionIndex > -1) {
  25095. var matchStartPosition = this.trackPoints[matchStartPositionIndex];
  25096. this.startPosition = matchStartPosition.geometry.coordinates;
  25097. var nextPosition;
  25098. if (this.position.nextTimestamp) {
  25099. var matchNextPosition = this.trackPoints.find(function (item) {
  25100. return item.properties.timestamp > _this4.position.nextTimestamp;
  25101. });
  25102. matchNextPosition && (nextPosition = matchNextPosition.geometry.coordinates);
  25103. }
  25104. if (!nextPosition && this.trackPoints[matchStartPositionIndex + 1]) {
  25105. this.destPosition = this.trackPoints[matchStartPositionIndex + 1].geometry.coordinates;
  25106. }
  25107. }
  25108. }
  25109. }
  25110. }, {
  25111. key: "_setRotateFactor",
  25112. value: function _setRotateFactor() {
  25113. var pointInfo = this._getPointInfo();
  25114. this.rotateFactor = 0;
  25115. if (pointInfo) {
  25116. var startPoint = pointInfo.startPoint;
  25117. var endPoint = pointInfo.endPoint;
  25118. var rad = Math.atan((endPoint.y - startPoint.y) / (endPoint.x - startPoint.x));
  25119. if (endPoint.x - startPoint.x < 0) {
  25120. rad = Math.PI + rad;
  25121. }
  25122. this.rotateFactor = isNaN(rad) ? 0 : -rad;
  25123. }
  25124. if (this.map) {
  25125. var bearing = this.map.getBearing() * Math.PI / 180;
  25126. this.rotateFactor -= bearing;
  25127. }
  25128. }
  25129. }, {
  25130. key: "_init",
  25131. value: function _init(removedLayer) {
  25132. if (removedLayer) {
  25133. this.removed();
  25134. }
  25135. this._setRotateFactor();
  25136. this._initLayer();
  25137. }
  25138. }, {
  25139. key: "_getWayPoint",
  25140. value: function _getWayPoint(percent, startPosition, destPosition) {
  25141. var pointInfo = this._getPointInfo(startPosition, destPosition);
  25142. if (pointInfo) {
  25143. var startPoint = pointInfo.startPoint;
  25144. var endPoint = pointInfo.endPoint;
  25145. var nextPoint = endPoint.sub(startPoint).mult(percent).add(startPoint);
  25146. var nextPosition = this.map.unproject(nextPoint).toArray();
  25147. return nextPosition;
  25148. }
  25149. }
  25150. }, {
  25151. key: "_animateLayer",
  25152. value: function _animateLayer() {
  25153. var remaining, gone, percent;
  25154. if (this.position.currentTimestamp === this.position.prevTimestamp) {
  25155. var now = performance.now();
  25156. remaining = this.animateTime - now;
  25157. gone = this.animateStep - remaining;
  25158. percent = gone / this.animateStep;
  25159. } else {
  25160. remaining = this.destTimestamp - this.position.currentTimestamp;
  25161. gone = this.position.currentTimestamp - this.position.prevTimestamp;
  25162. percent = gone / this.animateStep;
  25163. }
  25164. if (remaining > 0) {
  25165. this.animateRemaining = remaining;
  25166. var nextPosition = this._getWayPoint(percent);
  25167. if (nextPosition) {
  25168. this.lineData.push(nextPosition);
  25169. this._initLayer(nextPosition);
  25170. }
  25171. this.animationFrameId = requestAnimationFrame(this._animateLayerFn);
  25172. } else {
  25173. cancelAnimationFrame(this.animationFrameId);
  25174. }
  25175. }
  25176. }, {
  25177. key: "_initLayer",
  25178. value: function _initLayer() {
  25179. var positionCoordinate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.currentPosition;
  25180. var position = positionCoordinate || this.startPosition;
  25181. if (!position || !this.map || !this.options.url || !this.options.loaderType) {
  25182. return;
  25183. }
  25184. if (this.options.followCamera) {
  25185. var options = {
  25186. center: position,
  25187. pitch: 60
  25188. };
  25189. if (this.startPosition && this.destPosition) {
  25190. options.bearing = (0, _rhumbBearing.default)(this.startPosition, this.destPosition);
  25191. }
  25192. this.map.easeTo(options);
  25193. }
  25194. switch (this.options.loaderType) {
  25195. case 'GLTF':
  25196. case 'OBJ2':
  25197. this._addCustomLayer(position);
  25198. break;
  25199. case 'IMAGE':
  25200. this._addImageLayer(position);
  25201. }
  25202. this._addTrackLineLayer();
  25203. }
  25204. }, {
  25205. key: "_addCustomLayer",
  25206. value: function _addCustomLayer(positionCoordinate) {
  25207. var _this5 = this;
  25208. this.currentPosition = positionCoordinate;
  25209. this.modelTransform = this._getModelTransform(positionCoordinate);
  25210. if (!this.map.getLayer(this.layerId)) {
  25211. var customLayer = {
  25212. id: this.layerId,
  25213. type: 'custom',
  25214. renderingMode: '3d',
  25215. onAdd: function onAdd(map, gl) {
  25216. _this5.camera = new THREE.Camera();
  25217. _this5.scene = new THREE.Scene();
  25218. var directionalLight = new THREE.DirectionalLight(0xffffff);
  25219. directionalLight.position.set(0, -70, 100).normalize();
  25220. _this5.scene.add(directionalLight);
  25221. var directionalLight2 = new THREE.DirectionalLight(0xfffffff);
  25222. directionalLight2.position.set(0, 70, 100).normalize();
  25223. _this5.scene.add(directionalLight2);
  25224. _this5._dealWithLoader();
  25225. _this5.map = map;
  25226. _this5.renderer = new THREE.WebGLRenderer({
  25227. canvas: map.getCanvas(),
  25228. context: gl,
  25229. antialias: true
  25230. });
  25231. _this5.renderer.autoClear = false;
  25232. },
  25233. render: function render(gl, matrix) {
  25234. var modelTransform = _this5.modelTransform;
  25235. var rotationX = new THREE.Matrix4().makeRotationAxis(new THREE.Vector3(1, 0, 0), modelTransform.rotateX);
  25236. var rotationY = new THREE.Matrix4().makeRotationAxis(new THREE.Vector3(0, 1, 0), modelTransform.rotateY);
  25237. var rotationZ = new THREE.Matrix4().makeRotationAxis(new THREE.Vector3(0, 0, 1), modelTransform.rotateZ);
  25238. var m = new THREE.Matrix4().fromArray(matrix);
  25239. var l = new THREE.Matrix4().makeTranslation(modelTransform.translateX, modelTransform.translateY, modelTransform.translateZ).scale(new THREE.Vector3(modelTransform.scale, -modelTransform.scale, modelTransform.scale)).multiply(rotationX).multiply(rotationY).multiply(rotationZ);
  25240. _this5.camera.projectionMatrix = m.multiply(l);
  25241. _this5.renderer.state.reset();
  25242. _this5.renderer.render(_this5.scene, _this5.camera);
  25243. _this5.map.triggerRepaint();
  25244. }
  25245. };
  25246. this.map.addLayer(customLayer);
  25247. }
  25248. }
  25249. }, {
  25250. key: "_addImageLayer",
  25251. value: function _addImageLayer(positionCoordinate) {
  25252. var _this6 = this;
  25253. var url = this.options.url;
  25254. var imageSource = this.map.getSource(this.layerId);
  25255. var sourceData = {
  25256. type: 'FeatureCollection',
  25257. features: [{
  25258. type: 'Feature',
  25259. geometry: {
  25260. type: 'Point',
  25261. coordinates: positionCoordinate
  25262. },
  25263. properties: {}
  25264. }]
  25265. };
  25266. if (imageSource) {
  25267. imageSource.setData(sourceData);
  25268. } else {
  25269. if (!this.map.hasImage(this.imageName)) {
  25270. this.map.loadImage(url, function (error, image) {
  25271. if (error) {
  25272. console.error(error);
  25273. return;
  25274. }
  25275. _this6.map.addImage(_this6.imageName, image);
  25276. _this6.map.addSource(_this6.layerId, {
  25277. type: 'geojson',
  25278. data: sourceData
  25279. });
  25280. _this6.map.addLayer({
  25281. type: 'symbol',
  25282. id: _this6.layerId,
  25283. source: _this6.layerId,
  25284. layout: {
  25285. 'icon-image': _this6.imageName,
  25286. 'icon-size': _this6.options.scale || 1,
  25287. 'icon-allow-overlap': true,
  25288. 'icon-ignore-placement': true
  25289. }
  25290. });
  25291. });
  25292. } else {
  25293. this.map.addSource(this.layerId, {
  25294. type: 'geojson',
  25295. data: sourceData
  25296. });
  25297. this.map.addLayer({
  25298. type: 'symbol',
  25299. id: this.layerId,
  25300. source: this.layerId,
  25301. layout: {
  25302. 'icon-image': this.imageName,
  25303. 'icon-size': this.options.scale || 1
  25304. }
  25305. });
  25306. }
  25307. }
  25308. }
  25309. }, {
  25310. key: "_addTrackLineLayer",
  25311. value: function _addTrackLineLayer() {
  25312. var imageSource = this.map.getSource(this.lineLayerId);
  25313. var features;
  25314. if (!this.options.displayLine) {
  25315. features = [];
  25316. } else {
  25317. var coordinates = this.lineData;
  25318. if (this.options.displayLine === 'All') {
  25319. coordinates = this.trackPoints.map(function (item) {
  25320. return item.geometry.coordinates;
  25321. });
  25322. }
  25323. features = [{
  25324. type: 'Feature',
  25325. geometry: {
  25326. type: 'LineString',
  25327. coordinates: coordinates
  25328. },
  25329. properties: {}
  25330. }];
  25331. }
  25332. var sourceData = {
  25333. type: 'FeatureCollection',
  25334. features: features
  25335. };
  25336. if (imageSource) {
  25337. imageSource.setData(sourceData);
  25338. } else {
  25339. var lineStyle = this.layerStyle && this.layerStyle.line || {};
  25340. this.map.addSource(this.lineLayerId, {
  25341. type: 'geojson',
  25342. data: sourceData
  25343. });
  25344. this.map.addLayer({
  25345. type: 'line',
  25346. id: this.lineLayerId,
  25347. source: this.lineLayerId,
  25348. layout: lineStyle.layout || {
  25349. 'line-cap': 'round',
  25350. 'line-join': 'round'
  25351. },
  25352. paint: lineStyle.paint || {
  25353. 'line-color': '#065726',
  25354. 'line-width': 5,
  25355. 'line-opacity': 0.8
  25356. }
  25357. }, this.map.getLayer(this.layerId) ? this.layerId : null);
  25358. }
  25359. }
  25360. }, {
  25361. key: "_getFontRotate",
  25362. value: function _getFontRotate(front) {
  25363. var rotateInfo = {
  25364. rotateAxisIndex: void 0,
  25365. rotate: void 0
  25366. };
  25367. switch (front) {
  25368. case '-x':
  25369. rotateInfo.rotateAxisIndex = 2;
  25370. rotateInfo.rotate = 180;
  25371. break;
  25372. case 'y':
  25373. rotateInfo.rotateAxisIndex = 2;
  25374. rotateInfo.rotate = -90;
  25375. break;
  25376. case '-y':
  25377. rotateInfo.rotateAxisIndex = 2;
  25378. rotateInfo.rotate = 90;
  25379. break;
  25380. case 'z':
  25381. rotateInfo.rotateAxisIndex = 1;
  25382. rotateInfo.rotate = 90;
  25383. break;
  25384. case '-z':
  25385. rotateInfo.rotateAxisIndex = 1;
  25386. rotateInfo.rotate = -90;
  25387. break;
  25388. }
  25389. return rotateInfo;
  25390. }
  25391. }, {
  25392. key: "_getBottomRotate",
  25393. value: function _getBottomRotate(bottom) {
  25394. var rotateInfo = {
  25395. originAxisIndex: void 0,
  25396. rotateAxisIndex: void 0,
  25397. rotate: void 0
  25398. };
  25399. switch (bottom) {
  25400. case 'x':
  25401. rotateInfo.originAxisIndex = 0;
  25402. rotateInfo.rotateAxisIndex = 1;
  25403. rotateInfo.rotate = 90;
  25404. break;
  25405. case '-x':
  25406. rotateInfo.originAxisIndex = 0;
  25407. rotateInfo.rotateAxisIndex = 1;
  25408. rotateInfo.rotate = -90;
  25409. break;
  25410. case 'y':
  25411. rotateInfo.originAxisIndex = 1;
  25412. rotateInfo.rotateAxisIndex = 0;
  25413. rotateInfo.rotate = -90;
  25414. break;
  25415. case '-y':
  25416. rotateInfo.originAxisIndex = 1;
  25417. rotateInfo.rotateAxisIndex = 0;
  25418. rotateInfo.rotate = 90;
  25419. break;
  25420. case 'z':
  25421. rotateInfo.originAxisIndex = 2;
  25422. rotateInfo.rotateAxisIndex = 1;
  25423. rotateInfo.rotate = 180;
  25424. break;
  25425. }
  25426. return rotateInfo;
  25427. }
  25428. }, {
  25429. key: "_getModelTransform",
  25430. value: function _getModelTransform(positionCoordinate) {
  25431. var modelOrigin = positionCoordinate;
  25432. var modelAltitude = 0;
  25433. var modelRotate = [0, 0, 0];
  25434. var _ref = this.options.direction || {
  25435. front: null,
  25436. bottom: null
  25437. },
  25438. front = _ref.front,
  25439. bottom = _ref.bottom;
  25440. var bottomAxisIndex = 2;
  25441. if (front) {
  25442. var rotateInfo = this._getFontRotate(front);
  25443. if (rotateInfo.rotateAxisIndex !== void 0) {
  25444. modelRotate[rotateInfo.rotateAxisIndex] += rotateInfo.rotate * Math.PI / 180;
  25445. }
  25446. }
  25447. if (bottom) {
  25448. var _rotateInfo = this._getBottomRotate(bottom);
  25449. if (_rotateInfo.rotateAxisIndex !== void 0) {
  25450. modelRotate[_rotateInfo.rotateAxisIndex] += _rotateInfo.rotate * Math.PI / 180;
  25451. bottomAxisIndex = _rotateInfo.originAxisIndex;
  25452. }
  25453. }
  25454. modelRotate[bottomAxisIndex] += this.rotateFactor;
  25455. var modelAsMercatorCoordinate = _mapboxGlEnhance.default.MercatorCoordinate.fromLngLat(modelOrigin, modelAltitude);
  25456. var modelTransform = {
  25457. translateX: modelAsMercatorCoordinate.x,
  25458. translateY: modelAsMercatorCoordinate.y,
  25459. translateZ: modelAsMercatorCoordinate.z,
  25460. rotateX: modelRotate[0],
  25461. rotateY: modelRotate[1],
  25462. rotateZ: modelRotate[2],
  25463. scale: modelAsMercatorCoordinate.meterInMercatorCoordinateUnits()
  25464. };
  25465. return modelTransform;
  25466. }
  25467. }, {
  25468. key: "_getUnitFactor",
  25469. value: function _getUnitFactor() {
  25470. switch (this.options.unit) {
  25471. case 'millimeter':
  25472. return 1000;
  25473. case 'centimeter':
  25474. return 100;
  25475. default:
  25476. return 1;
  25477. }
  25478. }
  25479. }, {
  25480. key: "_getMeterFactor",
  25481. value: function _getMeterFactor() {
  25482. var modelScale = this.options.scale;
  25483. var scaleFactor;
  25484. if (this.options.fitBounds) {
  25485. scaleFactor = 1;
  25486. } else {
  25487. scaleFactor = modelScale || 1;
  25488. }
  25489. var unitFactor = this._getUnitFactor();
  25490. var result = scaleFactor / unitFactor;
  25491. return result;
  25492. }
  25493. }, {
  25494. key: "_getFitBoundsFactor",
  25495. value: function _getFitBoundsFactor(scene, scaleFactor) {
  25496. var bbox = new THREE.Box3().setFromObject(scene);
  25497. var size = bbox.getSize(new THREE.Vector3());
  25498. var maxSize = Math.max(size.x, size.y, size.z);
  25499. var extent = this.map.getCRS().extent;
  25500. var resolution = Math.max(extent[2] - extent[0], extent[3] - extent[2]) / 512 / Math.pow(2, this.map.getZoom());
  25501. var canvasWidthDistance = resolution * this.map.getCanvas().width;
  25502. var unitFactor = this._getUnitFactor();
  25503. var result = scaleFactor * canvasWidthDistance / (maxSize / unitFactor) * 0.5;
  25504. return result;
  25505. }
  25506. }, {
  25507. key: "_getScaleFactor",
  25508. value: function _getScaleFactor(scene) {
  25509. var meterFactor = this._getMeterFactor();
  25510. if (this.options.fitBounds) {
  25511. return this._getFitBoundsFactor(scene, meterFactor);
  25512. }
  25513. return meterFactor;
  25514. }
  25515. }, {
  25516. key: "_dealWithLoader",
  25517. value: function _dealWithLoader() {
  25518. var _this7 = this;
  25519. var loader;
  25520. switch (this.options.loaderType) {
  25521. case 'GLTF':
  25522. loader = new _GLTFLoader.GLTFLoader();
  25523. loader.load(this.options.url, function (gltf) {
  25524. var scaleFactor = _this7._getScaleFactor(gltf.scene);
  25525. gltf.scene.scale.multiplyScalar(scaleFactor);
  25526. _this7.scene.add(gltf.scene);
  25527. }, function (xhr) {
  25528. console.log("".concat(xhr.loaded / xhr.total * 100, "% loaded"));
  25529. }, function (error) {
  25530. console.error('An error happened', error);
  25531. });
  25532. break;
  25533. case 'OBJ2':
  25534. loader = new _OBJLoader.OBJLoader2();
  25535. var material = new THREE.MeshBasicMaterial({
  25536. color: 'red',
  25537. wireframe: true
  25538. });
  25539. loader.load(this.options.url, function (object3d) {
  25540. var scaleFactor = _this7._getScaleFactor(object3d);
  25541. object3d.scale.multiplyScalar(scaleFactor);
  25542. loader.addMaterials({
  25543. tester: material
  25544. }, true);
  25545. _this7.scene.add(object3d);
  25546. }, function (xhr) {
  25547. console.log("".concat(xhr.loaded / xhr.total * 100, "% loaded"));
  25548. }, null, function (error) {
  25549. console.error('An error happened', error);
  25550. });
  25551. break;
  25552. }
  25553. }
  25554. }, {
  25555. key: "_getPointInfo",
  25556. value: function _getPointInfo() {
  25557. var startPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.startPosition;
  25558. var destPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.destPosition;
  25559. if (!startPosition || !destPosition || !this.map) {
  25560. return;
  25561. }
  25562. var startPixelPoint = this.map.project(startPosition);
  25563. var endPixelPoint = this.map.project(destPosition);
  25564. var startPoint = new _pointGeometry.default(startPixelPoint.x, startPixelPoint.y);
  25565. var endPoint = new _pointGeometry.default(endPixelPoint.x, endPixelPoint.y);
  25566. return {
  25567. startPoint: startPoint,
  25568. endPoint: endPoint
  25569. };
  25570. }
  25571. }, {
  25572. key: "removed",
  25573. value: function removed() {
  25574. var map = this.map,
  25575. layerId = this.layerId,
  25576. lineLayerId = this.lineLayerId;
  25577. if (map) {
  25578. if (layerId) {
  25579. map.getLayer(layerId) && map.removeLayer(layerId);
  25580. map.getSource(layerId) && map.removeSource(layerId);
  25581. }
  25582. if (lineLayerId) {
  25583. map.getLayer(lineLayerId) && map.removeLayer(lineLayerId);
  25584. map.getSource(lineLayerId) && map.removeSource(lineLayerId);
  25585. this.lineData = [];
  25586. }
  25587. }
  25588. }
  25589. }, {
  25590. key: "reset",
  25591. value: function reset() {
  25592. this.lineData = [];
  25593. }
  25594. }]);
  25595. return TrackLayerViewModel;
  25596. }(_mapboxGlEnhance.default.Evented);
  25597. exports.default = TrackLayerViewModel;
  25598. /***/ }),
  25599. /***/ "5993":
  25600. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  25601. "use strict";
  25602. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/card/Card.vue?vue&type=template&id=0b7b8e8a&
  25603. var render = function () {
  25604. var _obj, _obj$1, _obj$2;
  25605. var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-card"},[(_vm.iconClass)?_c('div',{class:( _obj = {}, _obj['sm-component-card__icon'] = true, _obj['is-' + _vm.position] = true, _obj[("is-click-" + (_vm.isShow ? 'out' : 'in'))] = true, _obj['is-not-header'] = !_vm.headerName, _obj ),style:([_vm.getBackgroundStyle, _vm.getTextColorStyle, _vm.iconStyleObject]),on:{"click":_vm.iconClicked}},[_c('div',{class:( _obj$1 = {}, _obj$1[_vm.iconClass] = true, _obj$1['is-auto-rotate'] = _vm.autoRotate, _obj$1['sm-component-card__component-icon'] = true, _obj$1 ),style:([_vm.iconStyle])})]):_vm._e(),_vm._v(" "),_c('transition',{attrs:{"name":"sm-component-zoom-in"},on:{"after-leave":function($event){return _vm.toggleTransition('leave')},"enter":function($event){return _vm.toggleTransition('enter')}}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.isShow),expression:"isShow"}],class:( _obj$2 = {}, _obj$2['sm-component-card__content'] = true, _obj$2['is-not-header'] = !_vm.headerName, _obj$2['is-' + _vm.position] = true, _obj$2['is-icon'] = _vm.iconClass, _obj$2 ),style:([_vm.getCardStyle])},[(_vm.headerName)?_c('div',{staticClass:"sm-component-card__header",style:([_vm.getBackgroundStyle, _vm.getTextColorStyle])},[_c('span',{staticClass:"sm-component-card__header-name"},[_vm._v(_vm._s(_vm.headerName))])]):_vm._e(),_vm._v(" "),_vm._t("default")],2)])],1)}
  25606. var staticRenderFns = []
  25607. // CONCATENATED MODULE: ./src/common/card/Card.vue?vue&type=template&id=0b7b8e8a&
  25608. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  25609. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  25610. /***/ }),
  25611. /***/ "5a96":
  25612. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  25613. "use strict";
  25614. __webpack_require__.r(__webpack_exports__);
  25615. /* harmony import */ var _TrackLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("1171");
  25616. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _TrackLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _TrackLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  25617. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  25618. var render, staticRenderFns
  25619. /* normalize component */
  25620. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  25621. _TrackLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__["default"],
  25622. render,
  25623. staticRenderFns,
  25624. false,
  25625. null,
  25626. null,
  25627. null
  25628. )
  25629. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  25630. /***/ }),
  25631. /***/ "5b56":
  25632. /***/ (function(module, exports) {
  25633. var toString = {}.toString;
  25634. module.exports = Array.isArray || function (arr) {
  25635. return toString.call(arr) == '[object Array]';
  25636. };
  25637. /***/ }),
  25638. /***/ "5bf3":
  25639. /***/ (function(module, exports, __webpack_require__) {
  25640. "use strict";
  25641. var _interopRequireDefault = __webpack_require__("8e6d");
  25642. Object.defineProperty(exports, "__esModule", {
  25643. value: true
  25644. });
  25645. exports.default = void 0;
  25646. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  25647. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  25648. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  25649. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  25650. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  25651. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  25652. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  25653. var _Events2 = __webpack_require__("e3e2");
  25654. var _util = __webpack_require__("1448");
  25655. var _statistics = __webpack_require__("9dde");
  25656. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  25657. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  25658. var RestService =
  25659. /*#__PURE__*/
  25660. function (_Events) {
  25661. (0, _inherits2.default)(RestService, _Events);
  25662. function RestService(options) {
  25663. var _this;
  25664. (0, _classCallCheck2.default)(this, RestService);
  25665. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(RestService).call(this));
  25666. _this.eventTypes = ['getdatafailed', 'getdatasucceeded'];
  25667. _this.options = options || {};
  25668. return _this;
  25669. }
  25670. (0, _createClass2.default)(RestService, [{
  25671. key: "setProxy",
  25672. value: function setProxy(proxy) {
  25673. this.options.proxy = proxy;
  25674. }
  25675. /**
  25676. * @function RestService.prototype.getData
  25677. * @description 请求数据。
  25678. */
  25679. }, {
  25680. key: "getData",
  25681. value: function getData(data, queryInfo) {
  25682. var _this2 = this;
  25683. if (!data) {
  25684. return;
  25685. } // 如果是geojson
  25686. if ((0, _typeof2.default)(data) === 'object') {
  25687. this.transfromGeoJSON(_objectSpread({}, data), queryInfo);
  25688. return;
  25689. } // 如果是url, 就发送请求
  25690. var url = data;
  25691. SuperMap.FetchRequest.get(url, null, {
  25692. withoutFormatSuffix: true,
  25693. proxy: this.options.proxy
  25694. }).then(function (response) {
  25695. return response.json();
  25696. }).then(function (data) {
  25697. if (!data) {
  25698. // 请求失败
  25699. _this2.triggerEvent('getdatafailed', {
  25700. data: data
  25701. });
  25702. } else {
  25703. var resData = data.hasOwnProperty('data') ? data.data : data;
  25704. _this2.transfromGeoJSON(resData, queryInfo);
  25705. }
  25706. }).catch(function (error) {
  25707. console.log(error);
  25708. _this2.triggerEvent('getdatafailed', {
  25709. error: error
  25710. });
  25711. });
  25712. }
  25713. }, {
  25714. key: "transfromGeoJSON",
  25715. value: function transfromGeoJSON(resData, queryInfo) {
  25716. var generateData = {
  25717. type: 'FeatureCollection',
  25718. features: []
  25719. };
  25720. var dataType = (0, _util.getDataType)(resData);
  25721. var limitLen = (queryInfo || {}).maxFeatures;
  25722. if (dataType !== '[object Object]' || !resData.type || resData.type !== 'FeatureCollection' || (0, _util.getDataType)(resData.features) !== '[object Array]') {
  25723. generateData.features = this._generateData(resData, limitLen);
  25724. } else {
  25725. generateData = resData;
  25726. generateData.features = this._generateData(resData.features, limitLen, false);
  25727. }
  25728. if (this.transformed) {
  25729. generateData.transformed = this.transformed;
  25730. }
  25731. var triggerData = Object.assign({}, generateData, (0, _statistics.statisticsFeatures)(generateData.features));
  25732. this.triggerEvent('getdatasucceeded', triggerData);
  25733. }
  25734. }, {
  25735. key: "_generateData",
  25736. value: function _generateData(data, limitLen) {
  25737. var generateTransformed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
  25738. var dataType = (0, _util.getDataType)(data);
  25739. var features = [];
  25740. var subData;
  25741. switch (dataType) {
  25742. case '[object Number]':
  25743. case '[object String]':
  25744. var feature = {
  25745. properties: {
  25746. value: data
  25747. }
  25748. };
  25749. features.push(feature);
  25750. break;
  25751. case '[object Array]':
  25752. subData = limitLen && !isNaN(+limitLen) && limitLen < data.length ? data.slice(0, limitLen) : data;
  25753. features = subData.map(function (item) {
  25754. if ((0, _util.getDataType)(item) === '[object Object]' && item.hasOwnProperty('properties') && (0, _util.getDataType)(item.properties) === '[object Object]') {
  25755. return item;
  25756. } else {
  25757. var _feature = {
  25758. properties: (0, _util.getDataType)(item) === '[object Object]' ? item : {
  25759. value: item
  25760. }
  25761. };
  25762. return _feature;
  25763. }
  25764. });
  25765. break;
  25766. case '[object Object]':
  25767. subData = data;
  25768. if (limitLen && !isNaN(+limitLen) && limitLen < Object.keys(data).length) {
  25769. subData = Object.fromEntries(Object.entries(data).slice(0, limitLen));
  25770. }
  25771. if (!subData.hasOwnProperty('properties') || (0, _util.getDataType)(subData.properties) !== '[object Object]') {
  25772. if (generateTransformed) {
  25773. this.transformed = true;
  25774. }
  25775. subData = {
  25776. properties: subData
  25777. };
  25778. }
  25779. features.push(subData);
  25780. break;
  25781. }
  25782. return features;
  25783. }
  25784. }]);
  25785. return RestService;
  25786. }(_Events2.Events);
  25787. exports.default = RestService;
  25788. /***/ }),
  25789. /***/ "5c15":
  25790. /***/ (function(module, exports, __webpack_require__) {
  25791. "use strict";
  25792. var _interopRequireWildcard = __webpack_require__("16ed");
  25793. var _interopRequireDefault = __webpack_require__("8e6d");
  25794. Object.defineProperty(exports, "__esModule", {
  25795. value: true
  25796. });
  25797. exports.default = void 0;
  25798. var _globalEvent = _interopRequireDefault(__webpack_require__("fb6a"));
  25799. var _epsgDefine = __webpack_require__("1a91");
  25800. var _antDesignVue = __webpack_require__("a587");
  25801. var _lang = __webpack_require__("4e21");
  25802. var _theme = _interopRequireDefault(__webpack_require__("3853"));
  25803. var components = _interopRequireWildcard(__webpack_require__("bc7f"));
  25804. __webpack_require__("1969");
  25805. var commontypes = _interopRequireWildcard(__webpack_require__("6f2a"));
  25806. var utils = _interopRequireWildcard(__webpack_require__("9f50"));
  25807. var _vueCesium = _interopRequireDefault(__webpack_require__("be1f"));
  25808. var setTheme = function setTheme() {
  25809. var themeStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  25810. if (typeof themeStyle === 'string') {
  25811. try {
  25812. __webpack_require__("d073")("./".concat(themeStyle, ".scss"));
  25813. } catch (e) {
  25814. themeStyle = 'light';
  25815. __webpack_require__("d073")("./".concat(themeStyle, ".scss"));
  25816. }
  25817. themeStyle = _theme.default.filter(function (item) {
  25818. return item.label === themeStyle;
  25819. })[0] || {};
  25820. }
  25821. _globalEvent.default.$options.theme = themeStyle;
  25822. _globalEvent.default.$emit('change-theme', themeStyle);
  25823. };
  25824. var install = function install(Vue) {
  25825. var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  25826. var theme = opts.theme || 'light';
  25827. __webpack_require__("2bf3");
  25828. setTheme(theme);
  25829. (0, _epsgDefine.registerProjection)(opts.projections);
  25830. Vue.use(_antDesignVue.Button);
  25831. Vue.use(_antDesignVue.Checkbox);
  25832. Vue.use(_antDesignVue.Card);
  25833. Vue.use(_antDesignVue.Slider);
  25834. Vue.use(_antDesignVue.Select);
  25835. Vue.use(_antDesignVue.Collapse);
  25836. Vue.use(_antDesignVue.Input);
  25837. Vue.use(_antDesignVue.Table);
  25838. Vue.use(_antDesignVue.Progress);
  25839. Vue.use(_antDesignVue.Icon);
  25840. Vue.use(_antDesignVue.Spin);
  25841. Vue.use(_antDesignVue.Modal);
  25842. Vue.use(_antDesignVue.Tree);
  25843. Vue.use(_antDesignVue.Tabs);
  25844. if (_vueCesium.default) {
  25845. Vue.use(_vueCesium.default, {
  25846. cesiumPath: opts.cesiumPath || '../../static/libs/Cesium/Cesium.js'
  25847. });
  25848. }
  25849. Vue.prototype.$message = _antDesignVue.message;
  25850. (0, _lang.initi18n)(Vue, opts);
  25851. for (var component in components) {
  25852. var com = components[component];
  25853. Vue.component(com.options ? com.options.name : com.name, com);
  25854. }
  25855. };
  25856. if (typeof window !== 'undefined' && window['Vue']) {
  25857. install(window['Vue'], {
  25858. theme: 'light'
  25859. });
  25860. }
  25861. var _default = {
  25862. setTheme: setTheme,
  25863. commontypes: commontypes,
  25864. utils: utils,
  25865. lang: _lang.lang,
  25866. locale: _lang.setLocale,
  25867. install: install
  25868. };
  25869. exports.default = _default;
  25870. /***/ }),
  25871. /***/ "5c36":
  25872. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  25873. "use strict";
  25874. __webpack_require__.r(__webpack_exports__);
  25875. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MapvLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("e916");
  25876. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MapvLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MapvLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  25877. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MapvLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MapvLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  25878. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MapvLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  25879. /***/ }),
  25880. /***/ "5c61":
  25881. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  25882. "use strict";
  25883. __webpack_require__.r(__webpack_exports__);
  25884. /* harmony import */ var _Icon_vue_vue_type_template_id_076da86b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("c794");
  25885. /* harmony import */ var _Icon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("383e");
  25886. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Icon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Icon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  25887. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  25888. /* normalize component */
  25889. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  25890. _Icon_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  25891. _Icon_vue_vue_type_template_id_076da86b___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  25892. _Icon_vue_vue_type_template_id_076da86b___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  25893. false,
  25894. null,
  25895. null,
  25896. null
  25897. )
  25898. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  25899. /***/ }),
  25900. /***/ "5de5":
  25901. /***/ (function(module, exports, __webpack_require__) {
  25902. /* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
  25903. var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
  25904. module.exports = freeGlobal;
  25905. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("698d")))
  25906. /***/ }),
  25907. /***/ "5dfc":
  25908. /***/ (function(module, exports, __webpack_require__) {
  25909. "use strict";
  25910. var utils = __webpack_require__("d691");
  25911. var buildURL = __webpack_require__("9c18");
  25912. var InterceptorManager = __webpack_require__("48e5");
  25913. var dispatchRequest = __webpack_require__("3541");
  25914. var mergeConfig = __webpack_require__("44c1");
  25915. /**
  25916. * Create a new instance of Axios
  25917. *
  25918. * @param {Object} instanceConfig The default config for the instance
  25919. */
  25920. function Axios(instanceConfig) {
  25921. this.defaults = instanceConfig;
  25922. this.interceptors = {
  25923. request: new InterceptorManager(),
  25924. response: new InterceptorManager()
  25925. };
  25926. }
  25927. /**
  25928. * Dispatch a request
  25929. *
  25930. * @param {Object} config The config specific for this request (merged with this.defaults)
  25931. */
  25932. Axios.prototype.request = function request(config) {
  25933. /*eslint no-param-reassign:0*/
  25934. // Allow for axios('example/url'[, config]) a la fetch API
  25935. if (typeof config === 'string') {
  25936. config = arguments[1] || {};
  25937. config.url = arguments[0];
  25938. } else {
  25939. config = config || {};
  25940. }
  25941. config = mergeConfig(this.defaults, config);
  25942. config.method = config.method ? config.method.toLowerCase() : 'get';
  25943. // Hook up interceptors middleware
  25944. var chain = [dispatchRequest, undefined];
  25945. var promise = Promise.resolve(config);
  25946. this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
  25947. chain.unshift(interceptor.fulfilled, interceptor.rejected);
  25948. });
  25949. this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
  25950. chain.push(interceptor.fulfilled, interceptor.rejected);
  25951. });
  25952. while (chain.length) {
  25953. promise = promise.then(chain.shift(), chain.shift());
  25954. }
  25955. return promise;
  25956. };
  25957. Axios.prototype.getUri = function getUri(config) {
  25958. config = mergeConfig(this.defaults, config);
  25959. return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, '');
  25960. };
  25961. // Provide aliases for supported request methods
  25962. utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
  25963. /*eslint func-names:0*/
  25964. Axios.prototype[method] = function(url, config) {
  25965. return this.request(utils.merge(config || {}, {
  25966. method: method,
  25967. url: url
  25968. }));
  25969. };
  25970. });
  25971. utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
  25972. /*eslint func-names:0*/
  25973. Axios.prototype[method] = function(url, data, config) {
  25974. return this.request(utils.merge(config || {}, {
  25975. method: method,
  25976. url: url,
  25977. data: data
  25978. }));
  25979. };
  25980. });
  25981. module.exports = Axios;
  25982. /***/ }),
  25983. /***/ "5e45":
  25984. /***/ (function(module, exports, __webpack_require__) {
  25985. /* WEBPACK VAR INJECTION */(function(Buffer) {var js2xml = __webpack_require__("c365");
  25986. module.exports = function (json, options) {
  25987. if (json instanceof Buffer) {
  25988. json = json.toString();
  25989. }
  25990. var js = null;
  25991. if (typeof (json) === 'string') {
  25992. try {
  25993. js = JSON.parse(json);
  25994. } catch (e) {
  25995. throw new Error('The JSON structure is invalid');
  25996. }
  25997. } else {
  25998. js = json;
  25999. }
  26000. return js2xml(js, options);
  26001. };
  26002. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("3be6").Buffer))
  26003. /***/ }),
  26004. /***/ "5e4c":
  26005. /***/ (function(module, exports, __webpack_require__) {
  26006. var arrayWithHoles = __webpack_require__("31ff");
  26007. var iterableToArrayLimit = __webpack_require__("34c8");
  26008. var nonIterableRest = __webpack_require__("830f");
  26009. function _slicedToArray(arr, i) {
  26010. return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
  26011. }
  26012. module.exports = _slicedToArray;
  26013. /***/ }),
  26014. /***/ "5e58":
  26015. /***/ (function(module) {
  26016. module.exports = JSON.parse("{\"type\":\"FeatureCollection\",\"features\":[{\"geometry\":{\"coordinates\":[85.5064896237756,41.0795371259766],\"type\":\"Point\"},\"properties\":{\"省份\":\"新疆\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[89.81054792048526,30.46619972736792],\"type\":\"Point\"},\"properties\":{\"省份\":\"西藏\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[96.1088863880621,35.7783387438333],\"type\":\"Point\"},\"properties\":{\"省份\":\"青海\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[104.4333972690034,35.09978535091904],\"type\":\"Point\"},\"properties\":{\"省份\":\"甘肃\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[108.638979512171,40.578899368505],\"type\":\"Point\"},\"properties\":{\"省份\":\"内蒙古\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[127.985829291213,47.008509000742],\"type\":\"Point\"},\"properties\":{\"省份\":\"黑龙江\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[126.660529695677,43.3116206553],\"type\":\"Point\"},\"properties\":{\"省份\":\"吉林\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[123.103146570818,41.4980527877247],\"type\":\"Point\"},\"properties\":{\"省份\":\"辽宁\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[115.430359438768,37.93835633149562],\"type\":\"Point\"},\"properties\":{\"省份\":\"河北\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[118.136760718073,36.3084585820476],\"type\":\"Point\"},\"properties\":{\"省份\":\"山东\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[117.299729394577,31.5652810822353],\"type\":\"Point\"},\"properties\":{\"省份\":\"安徽\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[116.4557011264247,40.36094728046202],\"type\":\"Point\"},\"properties\":{\"省份\":\"北京\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[114.0056862345403,33.7973646115587],\"type\":\"Point\"},\"properties\":{\"省份\":\"河南\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[112.2592562253268,36.62266094496981],\"type\":\"Point\"},\"properties\":{\"省份\":\"山西\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[108.371395277283,33.7415625233257],\"type\":\"Point\"},\"properties\":{\"省份\":\"陕西\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[103.0024772665263,31.44189007620082],\"type\":\"Point\"},\"properties\":{\"省份\":\"四川\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[101.842550954012,24.4226137884002],\"type\":\"Point\"},\"properties\":{\"省份\":\"云南\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[108.3396268931018,23.7454991001028],\"type\":\"Point\"},\"properties\":{\"省份\":\"广西\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[107.199551424388,26.47102719959632],\"type\":\"Point\"},\"properties\":{\"省份\":\"贵州\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[109.7166370984773,18.91993567578719],\"type\":\"Point\"},\"properties\":{\"省份\":\"海南\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[120.926865129727,23.5855824649039],\"type\":\"Point\"},\"properties\":{\"省份\":\"台湾\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[113.8080329166514,24.00979976081936],\"type\":\"Point\"},\"properties\":{\"省份\":\"广东\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[112.639485651564,20.55445363123207],\"type\":\"Point\"},\"properties\":{\"省份\":\"澳门\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[115.5374226645028,22.27256022161274],\"type\":\"Point\"},\"properties\":{\"省份\":\"香港\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[118.4501309602551,25.9962326765732],\"type\":\"Point\"},\"properties\":{\"省份\":\"福建\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[115.6291345125558,27.35768220411655],\"type\":\"Point\"},\"properties\":{\"省份\":\"江西\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[111.5296454180681,28.56572895189682],\"type\":\"Point\"},\"properties\":{\"省份\":\"湖南\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[112.712797741817,31.0407414528443],\"type\":\"Point\"},\"properties\":{\"省份\":\"湖北\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[107.445080612614,29.90401452369961],\"type\":\"Point\"},\"properties\":{\"省份\":\"重庆\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[119.989390047412,33.48921923050181],\"type\":\"Point\"},\"properties\":{\"省份\":\"江苏\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[121.7342993713295,31.26454201860731],\"type\":\"Point\"},\"properties\":{\"省份\":\"上海\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[120.123315059171,29.0765079470396],\"type\":\"Point\"},\"properties\":{\"省份\":\"浙江\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[117.7580990684511,39.04633152484913],\"type\":\"Point\"},\"properties\":{\"省份\":\"天津\"},\"type\":\"Feature\"},{\"geometry\":{\"coordinates\":[106.195113836192,37.3798586761229],\"type\":\"Point\"},\"properties\":{\"省份\":\"宁夏\"},\"type\":\"Feature\"}]}");
  26017. /***/ }),
  26018. /***/ "5e7b":
  26019. /***/ (function(module, exports, __webpack_require__) {
  26020. "use strict";
  26021. var _interopRequireDefault = __webpack_require__("8e6d");
  26022. Object.defineProperty(exports, "__esModule", {
  26023. value: true
  26024. });
  26025. exports.default = void 0;
  26026. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  26027. var _toConsumableArray2 = _interopRequireDefault(__webpack_require__("4066"));
  26028. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  26029. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  26030. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  26031. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  26032. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  26033. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  26034. var _vuePropertyDecorator = __webpack_require__("e22c");
  26035. var _resizeDetector = __webpack_require__("e0f2");
  26036. var _debounce = _interopRequireDefault(__webpack_require__("331f"));
  26037. var _getFeatures = _interopRequireDefault(__webpack_require__("6e0d"));
  26038. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  26039. var _timer = _interopRequireDefault(__webpack_require__("8156"));
  26040. var _util = __webpack_require__("1448");
  26041. var _lodash = _interopRequireDefault(__webpack_require__("6e63"));
  26042. var _lodash2 = _interopRequireDefault(__webpack_require__("25a2"));
  26043. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  26044. var c = arguments.length,
  26045. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  26046. d;
  26047. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  26048. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  26049. }
  26050. return c > 3 && r && Object.defineProperty(target, key, r), r;
  26051. };
  26052. var SmTextList =
  26053. /*#__PURE__*/
  26054. function (_Mixins) {
  26055. (0, _inherits2.default)(SmTextList, _Mixins);
  26056. function SmTextList() {
  26057. var _this;
  26058. (0, _classCallCheck2.default)(this, SmTextList);
  26059. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(SmTextList).apply(this, arguments));
  26060. _this.animate = false;
  26061. _this.spinning = false;
  26062. _this.animateContent = [];
  26063. _this.containerHeight = 0;
  26064. _this.containerWidth = 0;
  26065. _this.listStyle = {};
  26066. _this.sortType = 'descend';
  26067. _this.sortTypeList = ['ascend', 'descend', 'none'];
  26068. _this.sortTypeIndex = 0;
  26069. _this.sortField = '';
  26070. _this.activeHoverRowIndex = null;
  26071. _this.activeClickRowIndex = [];
  26072. _this.eventTriggerColorList = {
  26073. clickColor: null
  26074. };
  26075. _this.hoverColor = 'rgba(128, 128,128, 0.8 )';
  26076. _this.curRollingStartIndex = 0;
  26077. return _this;
  26078. }
  26079. (0, _createClass2.default)(SmTextList, [{
  26080. key: "contentChanged",
  26081. value: function contentChanged(newVal, oldVal) {
  26082. this.listData = this.handleContent(this.content);
  26083. this.getListHeightStyle();
  26084. }
  26085. }, {
  26086. key: "datasetChanged",
  26087. value: function datasetChanged(newVal, oldVal) {
  26088. if (this.dataset && (this.dataset.url || this.dataset.geoJSON)) {
  26089. this.getFeaturesFromDataset();
  26090. } else {
  26091. clearInterval(this.startInter);
  26092. }
  26093. }
  26094. }, {
  26095. key: "columnsChanged",
  26096. value: function columnsChanged(newVal, oldVal) {
  26097. if (this.content || this.featuresData) {
  26098. this.listData = this.content ? this.handleContent(this.content) : this.handleFeatures(this.featuresData);
  26099. this.getListHeightStyle();
  26100. this.setDefaultSortType();
  26101. }
  26102. }
  26103. }, {
  26104. key: "autoRollingChanged",
  26105. value: function autoRollingChanged() {
  26106. if (!this.listData) {
  26107. this.listData = [];
  26108. }
  26109. if (this.autoRolling) {
  26110. if (this.listData.length > 2) {
  26111. this.itemByItem();
  26112. }
  26113. } else {
  26114. clearInterval(this.startInter);
  26115. }
  26116. this.getListHeightStyle();
  26117. this.reset();
  26118. }
  26119. }, {
  26120. key: "rowsChanged",
  26121. value: function rowsChanged() {
  26122. this.getListHeightStyle();
  26123. }
  26124. }, {
  26125. key: "rowStyleChanged",
  26126. value: function rowStyleChanged(next, before) {
  26127. this.rowStyleData = Object.assign({}, this.rowStyleData, next);
  26128. this.getListHeightStyle();
  26129. }
  26130. }, {
  26131. key: "headerHeightChanged",
  26132. value: function headerHeightChanged(next, before) {
  26133. this.headerStyleData = Object.assign({}, this.headerStyleData, next);
  26134. this.getListHeightStyle();
  26135. }
  26136. }, {
  26137. key: "containerHeightChanged",
  26138. value: function containerHeightChanged(newVal, oldVal) {
  26139. if (newVal !== oldVal) {
  26140. clearInterval(this.startInter);
  26141. this.getListHeightStyle();
  26142. }
  26143. }
  26144. }, {
  26145. key: "sortTypeChanged",
  26146. value: function sortTypeChanged(newVal, oldVal) {
  26147. var rawContent = this.content ? this.handleContent(this.content) : this.handleFeatures(this.featuresData);
  26148. this.listData = this.sortContent(rawContent);
  26149. this.getListHeightStyle();
  26150. }
  26151. }, {
  26152. key: "sortFieldChanged",
  26153. value: function sortFieldChanged(newVal, oldVal) {
  26154. var rawContent = this.content ? this.handleContent(this.content) : this.handleFeatures(this.featuresData);
  26155. this.listData = this.sortContent(rawContent);
  26156. this.getListHeightStyle();
  26157. }
  26158. }, {
  26159. key: "highlightColorChanged",
  26160. value: function highlightColorChanged(newVal, oldVal) {
  26161. var _this2 = this;
  26162. if (newVal && typeof newVal === 'string') {
  26163. Object.keys(this.eventTriggerColorList).forEach(function (colorType) {
  26164. _this2.eventTriggerColorList[colorType] = newVal;
  26165. });
  26166. }
  26167. }
  26168. }, {
  26169. key: "highlightOptionsChanged",
  26170. value: function highlightOptionsChanged(newVal, oldVal) {
  26171. var _this3 = this;
  26172. var bounds = this.rowsIndexViewBounds();
  26173. var autoBounds = this.getAutoRollingIndexBounds;
  26174. if (!this.autoRolling && newVal && newVal.length && !this.clamp(newVal[0], bounds[0], bounds[1])) {
  26175. this.$refs.animate && (this.$refs.animate.scrollTop = newVal[0] * this.filterUnit(this.listStyle.rowStyle.height));
  26176. } else if (this.autoRolling) {
  26177. if (!this.clamp(newVal[0], autoBounds[0], autoBounds[1])) {
  26178. var splitIndex;
  26179. if (newVal[0] <= this.rows) {
  26180. this.reset();
  26181. } else {
  26182. splitIndex = newVal[0] - this.rows;
  26183. this.$nextTick(function () {
  26184. _this3.animateContent = [];
  26185. _this3.$nextTick(function () {
  26186. var copyListData = (0, _lodash2.default)(_this3.listData);
  26187. var tempArr = copyListData.splice(0, splitIndex + 1);
  26188. copyListData = [].concat((0, _toConsumableArray2.default)(copyListData), (0, _toConsumableArray2.default)(tempArr));
  26189. _this3.animateContent = copyListData;
  26190. });
  26191. });
  26192. }
  26193. }
  26194. }
  26195. this.setCurrentRow(newVal);
  26196. }
  26197. }, {
  26198. key: "created",
  26199. value: function created() {
  26200. this.headerStyleData = (0, _lodash.default)({
  26201. show: true,
  26202. background: this.getColor(0),
  26203. color: this.textColorsData
  26204. }, this.headerStyle);
  26205. this.rowStyleData = (0, _lodash.default)({
  26206. oddStyle: {
  26207. background: (0, _util.getColorWithOpacity)(this.getBackground, 0.4)
  26208. },
  26209. evenStyle: {
  26210. background: (0, _util.getColorWithOpacity)(this.getColor(0), 0.4)
  26211. }
  26212. }, this.rowStyle);
  26213. this.handleMouseEnterFn = (0, _debounce.default)(this.handleMouseEnter, 20, {
  26214. leading: true
  26215. });
  26216. this.handleMouseLeaveFn = (0, _debounce.default)(this.handleMouseLeave, 20, {
  26217. leading: true
  26218. });
  26219. }
  26220. }, {
  26221. key: "mounted",
  26222. value: function mounted() {
  26223. var _this4 = this;
  26224. this.setListData();
  26225. this.setDefaultSortType();
  26226. if (this.autoResize) {
  26227. this.resizeHandler = (0, _debounce.default)(function () {
  26228. if (_this4.$el) {
  26229. _this4.containerHeight = _this4.$el.offsetHeight;
  26230. _this4.containerWidth = _this4.$el.offsetWidth;
  26231. }
  26232. }, 500, {
  26233. leading: true
  26234. });
  26235. (0, _resizeDetector.addListener)(this.$el, this.resizeHandler);
  26236. }
  26237. setTimeout(function () {
  26238. _this4.containerHeight = _this4.$el.offsetHeight;
  26239. _this4.containerWidth = _this4.$el.offsetWidth;
  26240. }, 0);
  26241. this.$on('theme-style-changed', this.handleThemeStyleChanged);
  26242. }
  26243. }, {
  26244. key: "handleThemeStyleChanged",
  26245. value: function handleThemeStyleChanged() {
  26246. this.headerStyleData = (0, _lodash.default)(this.headerStyleData, {
  26247. background: this.getColor(0),
  26248. color: this.textColorsData
  26249. });
  26250. this.rowStyleData = (0, _lodash.default)(this.rowStyleData, {
  26251. oddStyle: {
  26252. background: (0, _util.getColorWithOpacity)(this.getBackground, 0.4)
  26253. },
  26254. evenStyle: {
  26255. background: (0, _util.getColorWithOpacity)(this.getColor(0), 0.4)
  26256. }
  26257. });
  26258. }
  26259. }, {
  26260. key: "setListData",
  26261. value: function setListData() {
  26262. if (this.content && this.content.length > 0) {
  26263. this.listData = this.handleContent(this.content);
  26264. } else if (this.dataset && (this.dataset.url || this.dataset.geoJSON)) {
  26265. this.getFeaturesFromDataset();
  26266. }
  26267. }
  26268. }, {
  26269. key: "timing",
  26270. value: function timing() {
  26271. if (this.dataset && this.dataset.url) {
  26272. this.getFeaturesFromDataset(false);
  26273. }
  26274. }
  26275. }, {
  26276. key: "getFeaturesFromDataset",
  26277. value: function getFeaturesFromDataset() {
  26278. var _this5 = this;
  26279. var initLoading = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
  26280. var _this$dataset = this.dataset,
  26281. url = _this$dataset.url,
  26282. geoJSON = _this$dataset.geoJSON;
  26283. url && initLoading && (this.spinning = true);
  26284. if (url || geoJSON) {
  26285. var dataset = (0, _lodash2.default)(this.dataset);
  26286. (0, _getFeatures.default)(dataset).then(function (data) {
  26287. _this5.dataset.url && initLoading && (_this5.spinning = false);
  26288. _this5.featuresData = data;
  26289. _this5.listData = _this5.sortContent(_this5.handleFeatures(data));
  26290. _this5.getListHeightStyle();
  26291. });
  26292. }
  26293. }
  26294. }, {
  26295. key: "getListHeightStyle",
  26296. value: function getListHeightStyle() {
  26297. this.animateContent = this.listData && this.listData.concat();
  26298. if (!this.containerHeight || !this.listData) {
  26299. return;
  26300. }
  26301. var height = this.containerHeight;
  26302. var headerHeightNum = this.headerStyleData.show ? this.headerStyleData.height || height * 0.15 : 0;
  26303. var headerHeight = {
  26304. height: "".concat(headerHeightNum, "px")
  26305. };
  26306. var contentHeightNum = height - headerHeightNum;
  26307. var contentHeight = {
  26308. height: "".concat(contentHeightNum, "px")
  26309. };
  26310. var rowHeight = this.rowStyleData.height;
  26311. if (!rowHeight) {
  26312. if (this.listData.length < this.rows) {
  26313. rowHeight = contentHeightNum / (this.listData.length - 1);
  26314. } else {
  26315. rowHeight = contentHeightNum / this.rows;
  26316. }
  26317. }
  26318. var rowStyle = {
  26319. height: "".concat(rowHeight, "px"),
  26320. lineHeight: "".concat(rowHeight, "px")
  26321. };
  26322. if (this.autoRolling) {
  26323. if (this.listData.length > 2) {
  26324. this.itemByItem();
  26325. }
  26326. } else {
  26327. clearInterval(this.startInter);
  26328. }
  26329. this.listStyle = {
  26330. headerHeight: headerHeight,
  26331. contentHeight: contentHeight,
  26332. rowStyle: rowStyle
  26333. };
  26334. }
  26335. }, {
  26336. key: "handleContent",
  26337. value: function handleContent(content) {
  26338. var _this6 = this;
  26339. if (content) {
  26340. var listData = [];
  26341. content.forEach(function (data, index) {
  26342. var obj = {};
  26343. _this6.getColumns && _this6.getColumns.forEach(function (column, index) {
  26344. obj["".concat(column.field, "-").concat(index)] = data[column.field] || '-';
  26345. });
  26346. obj['idx'] = index;
  26347. JSON.stringify(obj) !== '{}' && listData.push(obj);
  26348. });
  26349. return listData;
  26350. } else {
  26351. return content;
  26352. }
  26353. }
  26354. }, {
  26355. key: "handleFeatures",
  26356. value: function handleFeatures(data) {
  26357. var _this7 = this;
  26358. var features = data && data.features;
  26359. var content = [];
  26360. features && features.forEach(function (feature, index) {
  26361. var properties = feature.properties;
  26362. if (!properties) {
  26363. return;
  26364. }
  26365. var contentObj = {};
  26366. if (_this7.getColumns) {
  26367. _this7.getColumns.forEach(function (column, index) {
  26368. contentObj["".concat(column.field, "-").concat(index)] = properties[column.field] || '-';
  26369. });
  26370. contentObj['idx'] = index;
  26371. } else {
  26372. contentObj = properties;
  26373. }
  26374. JSON.stringify(contentObj) !== '{}' && content.push(contentObj);
  26375. });
  26376. return content;
  26377. }
  26378. }, {
  26379. key: "itemByItem",
  26380. value: function itemByItem() {
  26381. var _this8 = this;
  26382. clearInterval(this.startInter);
  26383. this.startInter = setInterval(function () {
  26384. var wrapper = _this8.$refs.listContent;
  26385. wrapper && wrapper['style'] && (wrapper['style'].marginTop = "-".concat(_this8.listStyle.rowStyle.height));
  26386. _this8.animate = !_this8.animate;
  26387. setTimeout(function () {
  26388. var first = _this8.$refs.listContent && _this8.$refs.listContent['children'] && _this8.$refs.listContent['children'][0];
  26389. if (first) {
  26390. _this8.curRollingStartIndex = +first.dataset.index;
  26391. }
  26392. first && _this8.$refs.listContent.appendChild(first);
  26393. wrapper && wrapper['style'] && (wrapper['style'].marginTop = '0px');
  26394. _this8.animate = !_this8.animate;
  26395. }, 500);
  26396. }, 2000);
  26397. }
  26398. }, {
  26399. key: "sortByField",
  26400. value: function sortByField(fieldName, index, isSortField) {
  26401. if (!isSortField) {
  26402. return;
  26403. }
  26404. this.sortField = fieldName;
  26405. this.sortIndex = index;
  26406. this.sortTypeIndex++;
  26407. if (this.sortTypeIndex > this.sortTypeList.length - 1) {
  26408. this.sortTypeIndex = 0;
  26409. }
  26410. this.sortType = this.sortTypeList[this.sortTypeIndex];
  26411. this.reset();
  26412. }
  26413. }, {
  26414. key: "sortContent",
  26415. value: function sortContent(content) {
  26416. var _this9 = this;
  26417. if (!content) {
  26418. return null;
  26419. }
  26420. var sortContent = [];
  26421. if (this.sortType === 'none' || !this.sortField || content.length <= 1) {
  26422. sortContent = content;
  26423. } else {
  26424. sortContent = (0, _lodash2.default)(content);
  26425. if (this.sortType === 'descend') {
  26426. sortContent.sort(function (a, b) {
  26427. return b[_this9.sortField] - a[_this9.sortField];
  26428. });
  26429. } else if (this.sortType === 'ascend') {
  26430. sortContent.sort(function (a, b) {
  26431. return a[_this9.sortField] - b[_this9.sortField];
  26432. });
  26433. }
  26434. }
  26435. return sortContent;
  26436. }
  26437. }, {
  26438. key: "setDefaultSortType",
  26439. value: function setDefaultSortType() {
  26440. var fieldIndex = 0;
  26441. var column = this.columns && this.columns.find(function (column, index) {
  26442. if (['ascend', 'descend'].includes(column.defaultSortType) && column.sort) {
  26443. fieldIndex = index;
  26444. return true;
  26445. }
  26446. return false;
  26447. });
  26448. if (column) {
  26449. this.sortType = column.defaultSortType;
  26450. var index = this.sortTypeList.findIndex(function (item) {
  26451. return item === column.defaultSortType;
  26452. });
  26453. this.sortTypeIndex = index;
  26454. this.sortField = "".concat(column.field, "-").concat(fieldIndex);
  26455. this.sortIndex = fieldIndex;
  26456. return;
  26457. }
  26458. this.sortField = '';
  26459. this.sortType = 'none';
  26460. }
  26461. }, {
  26462. key: "handleClick",
  26463. value: function handleClick(item, rowIndex, event) {
  26464. if (this.highlightColor && typeof this.highlightColor === 'function') {
  26465. this.eventTriggerColorList.clickColor = this.highlightColor(item, rowIndex, event);
  26466. }
  26467. this.$emit('row-click', item, rowIndex, event);
  26468. this.$emit('cell-click', item, rowIndex, event);
  26469. }
  26470. }, {
  26471. key: "handleMouseEnter",
  26472. value: function handleMouseEnter(item, rowIndex, event) {
  26473. this.activeHoverRowIndex = rowIndex;
  26474. if (this.highlightColor && typeof this.highlightColor === 'function') {
  26475. this.hoverColor = this.highlightColor(item, rowIndex, event);
  26476. }
  26477. this.$emit('cell-mouse-enter', item, rowIndex, event);
  26478. }
  26479. }, {
  26480. key: "handleMouseLeave",
  26481. value: function handleMouseLeave(item, rowIndex, event) {
  26482. this.activeHoverRowIndex = null;
  26483. this.$emit('cell-mouse-leave', item, rowIndex, event);
  26484. }
  26485. }, {
  26486. key: "setCurrentRow",
  26487. value: function setCurrentRow(rowIndexList) {
  26488. if (rowIndexList && rowIndexList.length) {
  26489. this.activeClickRowIndex = rowIndexList;
  26490. } else {
  26491. this.activeClickRowIndex = null;
  26492. }
  26493. }
  26494. }, {
  26495. key: "filterUnit",
  26496. value: function filterUnit(str) {
  26497. return str.match(/[\d\D]+(?=px)/gim)[0];
  26498. }
  26499. }, {
  26500. key: "reset",
  26501. value: function reset() {
  26502. var _this10 = this;
  26503. this.$nextTick(function () {
  26504. _this10.animateContent = [];
  26505. _this10.$nextTick(function () {
  26506. _this10.animateContent = (0, _toConsumableArray2.default)(_this10.listData);
  26507. _this10.$refs.animate && (_this10.$refs.animate.scrollTop = 0);
  26508. });
  26509. });
  26510. }
  26511. }, {
  26512. key: "rowsIndexViewBounds",
  26513. value: function rowsIndexViewBounds() {
  26514. if (this.$refs.animate && this.rows) {
  26515. var beginIndex = Math.ceil(this.$refs.animate.scrollTop / this.filterUnit(this.listStyle.rowStyle.height));
  26516. var endIndex = beginIndex + this.rows;
  26517. return [beginIndex, endIndex];
  26518. }
  26519. return [];
  26520. }
  26521. }, {
  26522. key: "clamp",
  26523. value: function clamp(num, min, max) {
  26524. if ((min || min === 0) && (max || max === 0) && num > min && num < max) {
  26525. return true;
  26526. }
  26527. return false;
  26528. }
  26529. }, {
  26530. key: "destory",
  26531. value: function destory() {
  26532. if (this.autoResize) {
  26533. clearInterval(this.startInter);
  26534. (0, _resizeDetector.removeListener)(this.$el, this.resizeHandler);
  26535. }
  26536. }
  26537. }, {
  26538. key: "getAutoRollingIndexBounds",
  26539. get: function get() {
  26540. return [this.curRollingStartIndex + 1, this.curRollingStartIndex + 1 + this.rows];
  26541. }
  26542. }, {
  26543. key: "getRowStyle",
  26544. get: function get() {
  26545. return function (index, rawIndex) {
  26546. if (this.highlightCurrentRow) {
  26547. if (this.activeClickRowIndex && this.activeClickRowIndex.includes(index)) {
  26548. return {
  26549. background: this.eventTriggerColorList.clickColor
  26550. };
  26551. }
  26552. }
  26553. if (this.activeHoverRowIndex === index) {
  26554. return {
  26555. background: this.hoverColor
  26556. };
  26557. }
  26558. if ((rawIndex + 1) % 2 !== 0) {
  26559. return {
  26560. background: this.rowStyleData.oddStyle.background
  26561. };
  26562. } else {
  26563. return {
  26564. background: this.rowStyleData.evenStyle.background
  26565. };
  26566. }
  26567. };
  26568. }
  26569. }, {
  26570. key: "getCellStyle",
  26571. get: function get() {
  26572. return function (value, columnIndex) {
  26573. if (isNaN(+value) || !this.thresholdsStyle || !this.thresholdsStyle[columnIndex]) {
  26574. return {};
  26575. }
  26576. var rangeGroup = this.thresholdsStyle[columnIndex];
  26577. var colorRangeInfo = rangeGroup.data.map(function (item) {
  26578. return Object.assign({}, item);
  26579. });
  26580. var matchColorRange = colorRangeInfo.find(function (item) {
  26581. var status;
  26582. if (item.min) {
  26583. status = +value >= +item.min;
  26584. }
  26585. if (item.max) {
  26586. status = status === void 0 ? true : status;
  26587. status = status && +value <= +item.max;
  26588. }
  26589. return status;
  26590. });
  26591. if (matchColorRange) {
  26592. return (0, _defineProperty2.default)({}, rangeGroup.type, matchColorRange.color);
  26593. }
  26594. return {};
  26595. };
  26596. }
  26597. }, {
  26598. key: "fontSizeStyle",
  26599. get: function get() {
  26600. return {
  26601. fontSize: typeof this.fontSize === 'string' ? this.fontSize : this.fontSize * 1.1 + 'px'
  26602. };
  26603. }
  26604. }, {
  26605. key: "getColumnWidth",
  26606. get: function get() {
  26607. return function (index) {
  26608. if (this.getColumns && this.getColumns.length > 0 && index < this.getColumns.length) {
  26609. var width = this.getColumns[index].width;
  26610. return width ? "0 0 ".concat(width / 100 * this.containerWidth, "px") : 1;
  26611. }
  26612. return 1;
  26613. };
  26614. }
  26615. }, {
  26616. key: "getColumns",
  26617. get: function get() {
  26618. var _this11 = this;
  26619. if (Array.isArray(this.columns)) {
  26620. return this.columns;
  26621. } else {
  26622. return this.fields.map(function (field, index) {
  26623. return {
  26624. header: _this11.header[index],
  26625. field: _this11.fields[index],
  26626. width: _this11.columnWidths[index],
  26627. fixInfo: {
  26628. prefix: '',
  26629. suffix: ''
  26630. },
  26631. sort: true,
  26632. defaultSortType: 'none'
  26633. };
  26634. });
  26635. }
  26636. }
  26637. }, {
  26638. key: "filterProperty",
  26639. get: function get() {
  26640. return function (rowData, propertyName) {
  26641. var copyRowData = Object.assign({}, rowData);
  26642. delete copyRowData[propertyName];
  26643. return copyRowData;
  26644. };
  26645. }
  26646. }]);
  26647. return SmTextList;
  26648. }((0, _vuePropertyDecorator.Mixins)(_theme.default, _timer.default));
  26649. __decorate([(0, _vuePropertyDecorator.Prop)()], SmTextList.prototype, "content", void 0);
  26650. __decorate([(0, _vuePropertyDecorator.Prop)()], SmTextList.prototype, "dataset", void 0);
  26651. __decorate([(0, _vuePropertyDecorator.Prop)({
  26652. default: function _default() {
  26653. return [];
  26654. }
  26655. })], SmTextList.prototype, "header", void 0);
  26656. __decorate([(0, _vuePropertyDecorator.Prop)({
  26657. default: 6
  26658. })], SmTextList.prototype, "rows", void 0);
  26659. __decorate([(0, _vuePropertyDecorator.Prop)({
  26660. default: false
  26661. })], SmTextList.prototype, "autoRolling", void 0);
  26662. __decorate([(0, _vuePropertyDecorator.Prop)()], SmTextList.prototype, "fontSize", void 0);
  26663. __decorate([(0, _vuePropertyDecorator.Prop)({
  26664. default: true
  26665. })], SmTextList.prototype, "autoResize", void 0);
  26666. __decorate([(0, _vuePropertyDecorator.Prop)({
  26667. default: function _default() {
  26668. return [];
  26669. }
  26670. })], SmTextList.prototype, "fields", void 0);
  26671. __decorate([(0, _vuePropertyDecorator.Prop)({
  26672. default: function _default() {
  26673. return [];
  26674. }
  26675. })], SmTextList.prototype, "columnWidths", void 0);
  26676. __decorate([(0, _vuePropertyDecorator.Prop)()], SmTextList.prototype, "rowStyle", void 0);
  26677. __decorate([(0, _vuePropertyDecorator.Prop)({
  26678. default: function _default() {
  26679. return {
  26680. show: true
  26681. };
  26682. }
  26683. })], SmTextList.prototype, "headerStyle", void 0);
  26684. __decorate([(0, _vuePropertyDecorator.Prop)()], SmTextList.prototype, "thresholdsStyle", void 0);
  26685. __decorate([(0, _vuePropertyDecorator.Prop)()], SmTextList.prototype, "columns", void 0);
  26686. __decorate([(0, _vuePropertyDecorator.Prop)({
  26687. default: function _default() {
  26688. return [];
  26689. }
  26690. })], SmTextList.prototype, "highlightOptions", void 0);
  26691. __decorate([(0, _vuePropertyDecorator.Prop)({
  26692. default: true
  26693. })], SmTextList.prototype, "highlightCurrentRow", void 0);
  26694. __decorate([(0, _vuePropertyDecorator.Prop)({
  26695. default: '#b9b9b9'
  26696. })], SmTextList.prototype, "highlightColor", void 0);
  26697. __decorate([(0, _vuePropertyDecorator.Watch)('content')], SmTextList.prototype, "contentChanged", null);
  26698. __decorate([(0, _vuePropertyDecorator.Watch)('dataset', {
  26699. deep: true
  26700. })], SmTextList.prototype, "datasetChanged", null);
  26701. __decorate([(0, _vuePropertyDecorator.Watch)('columns')], SmTextList.prototype, "columnsChanged", null);
  26702. __decorate([(0, _vuePropertyDecorator.Watch)('autoRolling', {
  26703. immediate: true
  26704. })], SmTextList.prototype, "autoRollingChanged", null);
  26705. __decorate([(0, _vuePropertyDecorator.Watch)('rows')], SmTextList.prototype, "rowsChanged", null);
  26706. __decorate([(0, _vuePropertyDecorator.Watch)('rowStyle')], SmTextList.prototype, "rowStyleChanged", null);
  26707. __decorate([(0, _vuePropertyDecorator.Watch)('headerStyle')], SmTextList.prototype, "headerHeightChanged", null);
  26708. __decorate([(0, _vuePropertyDecorator.Watch)('containerHeight')], SmTextList.prototype, "containerHeightChanged", null);
  26709. __decorate([(0, _vuePropertyDecorator.Watch)('sortType')], SmTextList.prototype, "sortTypeChanged", null);
  26710. __decorate([(0, _vuePropertyDecorator.Watch)('sortField')], SmTextList.prototype, "sortFieldChanged", null);
  26711. __decorate([(0, _vuePropertyDecorator.Watch)('highlightColor', {
  26712. immediate: true
  26713. })], SmTextList.prototype, "highlightColorChanged", null);
  26714. __decorate([(0, _vuePropertyDecorator.Watch)('highlightOptions', {
  26715. immediate: true,
  26716. deep: true
  26717. })], SmTextList.prototype, "highlightOptionsChanged", null);
  26718. SmTextList = __decorate([(0, _vuePropertyDecorator.Component)({
  26719. name: 'SmTextList'
  26720. })], SmTextList);
  26721. var _default2 = SmTextList;
  26722. exports.default = _default2;
  26723. /***/ }),
  26724. /***/ "5e89":
  26725. /***/ (function(module, exports, __webpack_require__) {
  26726. module.exports = __webpack_require__("0956").EventEmitter;
  26727. /***/ }),
  26728. /***/ "5f24":
  26729. /***/ (function(module, exports, __webpack_require__) {
  26730. "use strict";
  26731. var _interopRequireDefault = __webpack_require__("8e6d");
  26732. Object.defineProperty(exports, "__esModule", {
  26733. value: true
  26734. });
  26735. exports.default = void 0;
  26736. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  26737. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  26738. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  26739. var _card = _interopRequireDefault(__webpack_require__("333c"));
  26740. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  26741. var _LineStyle = _interopRequireDefault(__webpack_require__("264a"));
  26742. var _FillStyle = _interopRequireDefault(__webpack_require__("d040"));
  26743. var _CircleStyle = _interopRequireDefault(__webpack_require__("b27b"));
  26744. var _QueryViewModel = _interopRequireDefault(__webpack_require__("3a59"));
  26745. var _TablePopup = _interopRequireDefault(__webpack_require__("b397"));
  26746. var _util = __webpack_require__("1448");
  26747. var _lodash = _interopRequireDefault(__webpack_require__("5f9f"));
  26748. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  26749. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  26750. // let validators = (value, propType) => {
  26751. // let valid = true;
  26752. // value.forEach(item => {
  26753. // if (!(item instanceof propType)) {
  26754. // valid = false;
  26755. // }
  26756. // });
  26757. // return valid;
  26758. // };
  26759. var _default2 = {
  26760. name: 'SmQuery',
  26761. components: {
  26762. TablePopup: _TablePopup.default
  26763. },
  26764. mixins: [_mapGetter.default, _control.default, _theme.default, _card.default],
  26765. props: {
  26766. collapsed: {
  26767. type: Boolean,
  26768. // 是否折叠
  26769. default: true
  26770. },
  26771. iconClass: {
  26772. type: String,
  26773. default: 'sm-components-icons-ditusousuo'
  26774. },
  26775. headerName: {
  26776. type: String,
  26777. default: function _default() {
  26778. return this.$t('query.query');
  26779. }
  26780. },
  26781. maxFeatures: {
  26782. type: Number,
  26783. default: 200
  26784. },
  26785. layerStyle: {
  26786. type: Object,
  26787. default: function _default() {
  26788. return {
  26789. line: new _LineStyle.default({
  26790. 'line-width': 3,
  26791. 'line-color': '#409eff',
  26792. 'line-opacity': 1
  26793. }),
  26794. circle: new _CircleStyle.default({
  26795. 'circle-color': '#409eff',
  26796. 'circle-opacity': 0.6,
  26797. 'circle-radius': 8,
  26798. 'circle-stroke-width': 2,
  26799. 'circle-stroke-color': '#409eff',
  26800. 'circle-stroke-opacity': 1
  26801. }),
  26802. fill: new _FillStyle.default({
  26803. 'fill-color': '#409eff',
  26804. 'fill-opacity': 0.6,
  26805. 'fill-outline-color': '#409eff'
  26806. }),
  26807. stokeLine: new _LineStyle.default({
  26808. 'line-width': 3,
  26809. 'line-color': '#409eff',
  26810. 'line-opacity': 1
  26811. })
  26812. };
  26813. }
  26814. },
  26815. iportalData: {
  26816. type: Array // validator(value) {
  26817. // return validators(value, iPortalDataParameter);
  26818. // }
  26819. },
  26820. restData: {
  26821. type: Array // validator(value) {
  26822. // return validators(value, RestDataParameter);
  26823. // }
  26824. },
  26825. restMap: {
  26826. type: Array // validator(value) {
  26827. // return validators(value, RestMapParameter);
  26828. // }
  26829. }
  26830. },
  26831. data: function data() {
  26832. return {
  26833. isHidden: false,
  26834. message: null,
  26835. selectOptions: [{
  26836. label: this.$t('query.currentMapBounds'),
  26837. value: 'currentMapBounds'
  26838. }, {
  26839. label: this.$t('query.mapBounds'),
  26840. value: 'mapBounds'
  26841. }],
  26842. queryResult: null,
  26843. activeTab: 'job',
  26844. isQuery: false,
  26845. jobInfos: [],
  26846. tablePopupProps: {}
  26847. };
  26848. },
  26849. computed: {
  26850. popupBackground: function popupBackground() {
  26851. return this.backgroundData ? (0, _util.getColorWithOpacity)(this.backgroundData, 0.5) : this.backgroundData;
  26852. }
  26853. },
  26854. watch: {
  26855. iportalData: function iportalData(newVal, oldVal) {
  26856. if (!(0, _lodash.default)(newVal, oldVal)) {
  26857. this.clearResult();
  26858. this.formatJobInfos();
  26859. }
  26860. },
  26861. restData: function restData(newVal, oldVal) {
  26862. if (!(0, _lodash.default)(newVal, oldVal)) {
  26863. this.clearResult();
  26864. this.formatJobInfos();
  26865. }
  26866. },
  26867. restMap: function restMap(newVal, oldVal) {
  26868. if (!(0, _lodash.default)(newVal, oldVal)) {
  26869. this.clearResult();
  26870. this.formatJobInfos();
  26871. }
  26872. },
  26873. colorGroupsData: {
  26874. handler: function handler() {
  26875. this.changeSelectInputStyle();
  26876. this.changeLoadingStyle();
  26877. }
  26878. },
  26879. textColorsData: {
  26880. handler: function handler() {
  26881. var results = this.$el.querySelectorAll('.sm-component-query__result-body li');
  26882. var _iteratorNormalCompletion = true;
  26883. var _didIteratorError = false;
  26884. var _iteratorError = undefined;
  26885. try {
  26886. for (var _iterator = results[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  26887. var result = _step.value;
  26888. result.style.color = this.getTextColor;
  26889. }
  26890. } catch (err) {
  26891. _didIteratorError = true;
  26892. _iteratorError = err;
  26893. } finally {
  26894. try {
  26895. if (!_iteratorNormalCompletion && _iterator.return != null) {
  26896. _iterator.return();
  26897. }
  26898. } finally {
  26899. if (_didIteratorError) {
  26900. throw _iteratorError;
  26901. }
  26902. }
  26903. }
  26904. }
  26905. },
  26906. backgroundData: function backgroundData() {
  26907. this.changeResultPopupArrowStyle();
  26908. },
  26909. layerStyle: function layerStyle() {
  26910. this.viewModel && (this.viewModel.layerStyle = this.$props.layerStyle);
  26911. }
  26912. },
  26913. mounted: function mounted() {
  26914. this.resultButton = this.$el.querySelector('.sm-component-query__result-button');
  26915. this.jobButton = this.$el.querySelector('.sm-component-query__job-button');
  26916. this.resultInfoContainer = this.$el.querySelector('.sm-component-query__result-info');
  26917. this.jobInfoContainer = this.$el.querySelector('.sm-component-query__job-info');
  26918. this.formatJobInfos();
  26919. this.registerEvents();
  26920. },
  26921. loaded: function loaded() {
  26922. this.clear();
  26923. },
  26924. created: function created() {
  26925. this.viewModel = new _QueryViewModel.default(this.$props);
  26926. },
  26927. removed: function removed() {
  26928. this.queryResult = null;
  26929. this.jobInfo = null;
  26930. this.jobInfos = [];
  26931. this.jobButtonClicked();
  26932. this.popup && this.popup.remove() && (this.popup = null);
  26933. },
  26934. methods: {
  26935. clear: function clear() {
  26936. this.queryResult = null;
  26937. this.map && this.viewModel && this.viewModel.clearResultLayer();
  26938. this.popup && this.popup.remove() && (this.popup = null);
  26939. },
  26940. formatJobInfos: function formatJobInfos() {
  26941. var _this = this;
  26942. if (this.viewModel) {
  26943. this.jobInfos = [];
  26944. Object.keys(this.$props).forEach(function (key) {
  26945. if (key === 'iportalData' || key === 'restData' || key === 'restMap') {
  26946. _this.$props[key] && _this.$props[key].forEach(function (item) {
  26947. item.name && _this.jobInfos.push({
  26948. spaceFilter: 'currentMapBounds',
  26949. queryParameter: item
  26950. });
  26951. }, _this);
  26952. }
  26953. }, this);
  26954. }
  26955. },
  26956. queryButtonClicked: function queryButtonClicked(jobInfo, value) {
  26957. this.$message.destroy();
  26958. if (this.jobInfo === jobInfo && this.selectValue === value && this.queryResult) {
  26959. this.$message.warning(this.$t('query.resultAlreadyExists'));
  26960. return;
  26961. }
  26962. this.queryResult = null;
  26963. this.popup && this.popup.remove() && (this.popup = null);
  26964. this.jobButton.classList.add('disabled');
  26965. this.resultButtonClicked();
  26966. this.jobInfo = jobInfo;
  26967. this.selectValue = value;
  26968. this.query(this.jobInfo, this.selectValue);
  26969. this.changeLoadingStyle();
  26970. this.isQuery = true;
  26971. },
  26972. changeLoadingStyle: function changeLoadingStyle() {
  26973. var spinDom = this.$el.querySelector('.ant-spin');
  26974. spinDom && (spinDom.style.color = this.getColorStyle(0).color);
  26975. },
  26976. /**
  26977. * 开始查询。
  26978. * @param {iPortalDataParameter|RestDataParameter|RestMapParameter} parameter - 查询配置参数。
  26979. * @param {String} [bounds='mapBounds'] - 查询范围,可选值为 mapBounds(地图全图范围),currentMapBounds(当前地图范围)。
  26980. */
  26981. query: function query(parameter, bounds) {
  26982. this.viewModel.query(parameter, bounds);
  26983. },
  26984. jobButtonClicked: function jobButtonClicked() {
  26985. if (this.resultButton) {
  26986. this.activeTab = 'job';
  26987. this.resultButton.classList.remove('is-active');
  26988. this.jobButton.classList.add('is-active');
  26989. this.jobInfoContainer.classList.remove('hidden');
  26990. this.resultInfoContainer.classList.add('hidden');
  26991. }
  26992. },
  26993. resultButtonClicked: function resultButtonClicked() {
  26994. this.activeTab = 'result';
  26995. this.jobButton.classList.remove('is-active');
  26996. this.resultButton.classList.add('is-active');
  26997. this.resultInfoContainer.classList.remove('hidden');
  26998. this.jobInfoContainer.classList.add('hidden');
  26999. },
  27000. jobInfoClicked: function jobInfoClicked(e) {
  27001. var className = e.target.className;
  27002. var parentNode;
  27003. if (className === 'sm-components-icons-preview' || className === 'sm-component-query__job-info-name' || className === 'sm-components-icons-legend-unfold' || className === 'sm-components-icons-legend-fold') {
  27004. parentNode = e.target.parentNode.parentNode;
  27005. e.stopPropagation();
  27006. } else {
  27007. parentNode = e.target.parentNode;
  27008. e.preventDefault();
  27009. }
  27010. var classList = parentNode.querySelector('.sm-component-query__job-info-body').classList;
  27011. var foldIcon = parentNode.querySelector('.sm-component-query__job-info-header').children[2];
  27012. if (classList.contains('hidden')) {
  27013. classList.remove('hidden');
  27014. foldIcon.classList.add('sm-components-icons-legend-fold');
  27015. foldIcon.classList.remove('sm-components-icons-legend-unfold');
  27016. this.changeSelectInputStyle();
  27017. } else {
  27018. classList.add('hidden');
  27019. foldIcon.classList.add('sm-components-icons-legend-unfold');
  27020. foldIcon.classList.remove('sm-components-icons-legend-fold');
  27021. }
  27022. },
  27023. changeSelectInputStyle: function changeSelectInputStyle() {
  27024. var selectInputList = this.$el.querySelectorAll('.ant-select-selection');
  27025. var _iteratorNormalCompletion2 = true;
  27026. var _didIteratorError2 = false;
  27027. var _iteratorError2 = undefined;
  27028. try {
  27029. for (var _iterator2 = selectInputList[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
  27030. var item = _step2.value;
  27031. item.style.borderColor = this.getTextColor;
  27032. item.style.color = this.getTextColor;
  27033. item.style.backgroundColor = 'transparent';
  27034. }
  27035. } catch (err) {
  27036. _didIteratorError2 = true;
  27037. _iteratorError2 = err;
  27038. } finally {
  27039. try {
  27040. if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
  27041. _iterator2.return();
  27042. }
  27043. } finally {
  27044. if (_didIteratorError2) {
  27045. throw _iteratorError2;
  27046. }
  27047. }
  27048. }
  27049. },
  27050. changeChosenStyle: function changeChosenStyle(visible, e) {
  27051. var _this2 = this;
  27052. setTimeout(function () {
  27053. var optionListContainer = _this2.$el.querySelectorAll('.ant-select-dropdown-content');
  27054. var _iteratorNormalCompletion3 = true;
  27055. var _didIteratorError3 = false;
  27056. var _iteratorError3 = undefined;
  27057. try {
  27058. for (var _iterator3 = optionListContainer[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
  27059. var item = _step3.value;
  27060. item.style.background = _this2.backgroundData;
  27061. }
  27062. } catch (err) {
  27063. _didIteratorError3 = true;
  27064. _iteratorError3 = err;
  27065. } finally {
  27066. try {
  27067. if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
  27068. _iterator3.return();
  27069. }
  27070. } finally {
  27071. if (_didIteratorError3) {
  27072. throw _iteratorError3;
  27073. }
  27074. }
  27075. }
  27076. var optionList = _this2.$el.querySelectorAll('.ant-select-dropdown-menu-item');
  27077. var _iteratorNormalCompletion4 = true;
  27078. var _didIteratorError4 = false;
  27079. var _iteratorError4 = undefined;
  27080. try {
  27081. var _loop = function _loop() {
  27082. var item = _step4.value;
  27083. if (item.classList.contains('ant-select-dropdown-menu-item-selected')) {
  27084. item.style.color = _this2.getColorStyle(0).color;
  27085. item.style.background = _this2.backgroundData;
  27086. } else {
  27087. item.style.color = _this2.textColorsData;
  27088. item.style.background = 'transparent';
  27089. }
  27090. item.addEventListener('mouseover', function () {
  27091. item.style.color = _this2.getColorStyle(0).color;
  27092. });
  27093. item.addEventListener('mouseout', function () {
  27094. !item.classList.contains('ant-select-dropdown-menu-item-selected') && (item.style.color = _this2.textColorsData);
  27095. });
  27096. };
  27097. for (var _iterator4 = optionList[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
  27098. _loop();
  27099. }
  27100. } catch (err) {
  27101. _didIteratorError4 = true;
  27102. _iteratorError4 = err;
  27103. } finally {
  27104. try {
  27105. if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
  27106. _iterator4.return();
  27107. }
  27108. } finally {
  27109. if (_didIteratorError4) {
  27110. throw _iteratorError4;
  27111. }
  27112. }
  27113. }
  27114. }, 0);
  27115. },
  27116. changeChosenResultStyle: function changeChosenResultStyle(e) {
  27117. var target = e.target;
  27118. target.style.color = this.getColorStyle(0).color;
  27119. },
  27120. resetChosenResultStyle: function resetChosenResultStyle(e) {
  27121. var target = e.target;
  27122. target.style.color = this.getTextColor;
  27123. },
  27124. changeResultPopupArrowStyle: function changeResultPopupArrowStyle() {
  27125. var searchResultPopupArrow = this.popup && this.popup['_tip'];
  27126. if (searchResultPopupArrow) {
  27127. searchResultPopupArrow.style.borderTopColor = this.popupBackground;
  27128. }
  27129. },
  27130. queryResultListClicked: function queryResultListClicked(e) {
  27131. this.popup && this.popup.remove() && (this.popup = null);
  27132. var filter = e.target.innerHTML;
  27133. var feature = this.viewModel.getFilterFeature(filter.split(':')[1].trim());
  27134. this.addPopup(feature);
  27135. },
  27136. registerEvents: function registerEvents() {
  27137. var _this3 = this;
  27138. this.viewModel.on('querysucceeded', function (e) {
  27139. _this3.isQuery = false;
  27140. _this3.$el.querySelector('.sm-component-query__no-result').classList.remove('hidden');
  27141. _this3.queryResult = e.result;
  27142. _this3.viewModel.getPopupFeature();
  27143. _this3.addPopupToFeature();
  27144. _this3.jobButton.classList.remove('disabled');
  27145. /**
  27146. * @event querySucceeded
  27147. * @desc 查询成功后触发。
  27148. * @property {Object} e - 事件对象。
  27149. */
  27150. _this3.$emit('query-succeeded', e);
  27151. });
  27152. this.viewModel.on('queryfailed', function (e) {
  27153. _this3.isQuery = false;
  27154. _this3.$el.querySelector('.sm-component-query__no-result').classList.remove('hidden');
  27155. _this3.clearResult();
  27156. _this3.$message.warning(e.message.toString());
  27157. _this3.jobButton.classList.remove('disabled');
  27158. /**
  27159. * @event queryFailed
  27160. * @desc 查询失败后触发。
  27161. * @property {Object} e - 事件对象。
  27162. */
  27163. _this3.$emit('query-failed', e);
  27164. });
  27165. },
  27166. addPopupToFeature: function addPopupToFeature() {
  27167. var _this4 = this;
  27168. this.viewModel.on('getfeatureinfosucceeded', function (e) {
  27169. var featuerInfo = e.featureInfo;
  27170. _this4.addPopup(featuerInfo);
  27171. });
  27172. },
  27173. addPopup: function addPopup(featuerInfo) {
  27174. var _this5 = this;
  27175. this.popup && this.popup.remove() && (this.popup = null);
  27176. if (featuerInfo.info.length >= 1) {
  27177. var state = {
  27178. columns: [{
  27179. title: this.$t('query.attribute'),
  27180. dataIndex: 'attribute',
  27181. width: 80
  27182. }, {
  27183. title: this.$t('query.attributeValue'),
  27184. dataIndex: 'attributeValue',
  27185. width: 150
  27186. }],
  27187. data: featuerInfo.info
  27188. };
  27189. this.tablePopupProps = _objectSpread({}, state);
  27190. this.$nextTick(function () {
  27191. _this5.popup = _this5.viewModel.addPopup(featuerInfo.coordinates, _this5.$refs.queryTablePopup.$el);
  27192. _this5.changeResultPopupArrowStyle();
  27193. });
  27194. }
  27195. },
  27196. changeHoverStyle: function changeHoverStyle(e) {
  27197. var target = e.target;
  27198. target.style.color = this.getColorStyle(0).color;
  27199. },
  27200. resetHoverStyle: function resetHoverStyle(e) {
  27201. var target = e.target;
  27202. target.style.color = this.getTextColorStyle.color;
  27203. },
  27204. getPopupContainer: function getPopupContainer(triggerNode) {
  27205. return triggerNode.parentNode;
  27206. },
  27207. clearResult: function clearResult() {
  27208. this.queryResult = null;
  27209. this.popup && this.popup.remove() && (this.popup = null);
  27210. this.jobInfo = null;
  27211. this.viewModel && this.viewModel.removed();
  27212. },
  27213. getInfoOfSmid: function getInfoOfSmid(properties) {
  27214. return "SmID\uFF1A".concat((0, _util.getValueCaseInsensitive)(properties, 'smid'));
  27215. }
  27216. }
  27217. };
  27218. exports.default = _default2;
  27219. /***/ }),
  27220. /***/ "5f3d":
  27221. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  27222. "use strict";
  27223. __webpack_require__.r(__webpack_exports__);
  27224. /* harmony import */ var _Text_vue_vue_type_template_id_5e2ac717___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("9243");
  27225. /* harmony import */ var _Text_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("e736");
  27226. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Text_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Text_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  27227. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  27228. /* normalize component */
  27229. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  27230. _Text_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  27231. _Text_vue_vue_type_template_id_5e2ac717___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  27232. _Text_vue_vue_type_template_id_5e2ac717___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  27233. false,
  27234. null,
  27235. null,
  27236. null
  27237. )
  27238. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  27239. /***/ }),
  27240. /***/ "5f86":
  27241. /***/ (function(module, exports, __webpack_require__) {
  27242. "use strict";
  27243. var _interopRequireDefault = __webpack_require__("8e6d");
  27244. Object.defineProperty(exports, "__esModule", {
  27245. value: true
  27246. });
  27247. exports.default = void 0;
  27248. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  27249. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  27250. var _GraphThemeLayerViewModel = _interopRequireDefault(__webpack_require__("5941"));
  27251. var _default2 = {
  27252. name: 'SmGraphThemeLayer',
  27253. mixins: [_mapGetter.default, _layer.default],
  27254. props: {
  27255. chartsType: {
  27256. type: String,
  27257. required: true
  27258. },
  27259. layerName: {
  27260. type: String
  27261. },
  27262. options: {
  27263. type: Object,
  27264. default: function _default() {
  27265. return {};
  27266. }
  27267. },
  27268. data: {
  27269. type: Object,
  27270. required: true
  27271. }
  27272. },
  27273. watch: {
  27274. data: {
  27275. handler: function handler(val) {
  27276. this.viewModel && this.viewModel.setData(val);
  27277. },
  27278. deep: true
  27279. },
  27280. options: {
  27281. handler: function handler(val) {
  27282. this.viewModel && this.viewModel.setOptions(val);
  27283. },
  27284. deep: true
  27285. },
  27286. chartsType: function chartsType(val) {
  27287. this.viewModel && this.viewModel.setChartsType(val);
  27288. },
  27289. layerName: function layerName(val) {
  27290. this.viewModel && this.viewModel.setLayerName(val);
  27291. }
  27292. },
  27293. created: function created() {
  27294. this.viewModel = new _GraphThemeLayerViewModel.default(this.$props);
  27295. },
  27296. loaded: function loaded() {
  27297. this.$emit('load', this.viewModel.themeLayer, this.map);
  27298. },
  27299. render: function render() {}
  27300. };
  27301. exports.default = _default2;
  27302. /***/ }),
  27303. /***/ "5f9f":
  27304. /***/ (function(module, exports, __webpack_require__) {
  27305. /* WEBPACK VAR INJECTION */(function(global, module) {/**
  27306. * Lodash (Custom Build) <https://lodash.com/>
  27307. * Build: `lodash modularize exports="npm" -o ./`
  27308. * Copyright JS Foundation and other contributors <https://js.foundation/>
  27309. * Released under MIT license <https://lodash.com/license>
  27310. * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  27311. * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  27312. */
  27313. /** Used as the size to enable large array optimizations. */
  27314. var LARGE_ARRAY_SIZE = 200;
  27315. /** Used to stand-in for `undefined` hash values. */
  27316. var HASH_UNDEFINED = '__lodash_hash_undefined__';
  27317. /** Used to compose bitmasks for value comparisons. */
  27318. var COMPARE_PARTIAL_FLAG = 1,
  27319. COMPARE_UNORDERED_FLAG = 2;
  27320. /** Used as references for various `Number` constants. */
  27321. var MAX_SAFE_INTEGER = 9007199254740991;
  27322. /** `Object#toString` result references. */
  27323. var argsTag = '[object Arguments]',
  27324. arrayTag = '[object Array]',
  27325. asyncTag = '[object AsyncFunction]',
  27326. boolTag = '[object Boolean]',
  27327. dateTag = '[object Date]',
  27328. errorTag = '[object Error]',
  27329. funcTag = '[object Function]',
  27330. genTag = '[object GeneratorFunction]',
  27331. mapTag = '[object Map]',
  27332. numberTag = '[object Number]',
  27333. nullTag = '[object Null]',
  27334. objectTag = '[object Object]',
  27335. promiseTag = '[object Promise]',
  27336. proxyTag = '[object Proxy]',
  27337. regexpTag = '[object RegExp]',
  27338. setTag = '[object Set]',
  27339. stringTag = '[object String]',
  27340. symbolTag = '[object Symbol]',
  27341. undefinedTag = '[object Undefined]',
  27342. weakMapTag = '[object WeakMap]';
  27343. var arrayBufferTag = '[object ArrayBuffer]',
  27344. dataViewTag = '[object DataView]',
  27345. float32Tag = '[object Float32Array]',
  27346. float64Tag = '[object Float64Array]',
  27347. int8Tag = '[object Int8Array]',
  27348. int16Tag = '[object Int16Array]',
  27349. int32Tag = '[object Int32Array]',
  27350. uint8Tag = '[object Uint8Array]',
  27351. uint8ClampedTag = '[object Uint8ClampedArray]',
  27352. uint16Tag = '[object Uint16Array]',
  27353. uint32Tag = '[object Uint32Array]';
  27354. /**
  27355. * Used to match `RegExp`
  27356. * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
  27357. */
  27358. var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
  27359. /** Used to detect host constructors (Safari). */
  27360. var reIsHostCtor = /^\[object .+?Constructor\]$/;
  27361. /** Used to detect unsigned integer values. */
  27362. var reIsUint = /^(?:0|[1-9]\d*)$/;
  27363. /** Used to identify `toStringTag` values of typed arrays. */
  27364. var typedArrayTags = {};
  27365. typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
  27366. typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
  27367. typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
  27368. typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
  27369. typedArrayTags[uint32Tag] = true;
  27370. typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
  27371. typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
  27372. typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
  27373. typedArrayTags[errorTag] = typedArrayTags[funcTag] =
  27374. typedArrayTags[mapTag] = typedArrayTags[numberTag] =
  27375. typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
  27376. typedArrayTags[setTag] = typedArrayTags[stringTag] =
  27377. typedArrayTags[weakMapTag] = false;
  27378. /** Detect free variable `global` from Node.js. */
  27379. var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
  27380. /** Detect free variable `self`. */
  27381. var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
  27382. /** Used as a reference to the global object. */
  27383. var root = freeGlobal || freeSelf || Function('return this')();
  27384. /** Detect free variable `exports`. */
  27385. var freeExports = true && exports && !exports.nodeType && exports;
  27386. /** Detect free variable `module`. */
  27387. var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
  27388. /** Detect the popular CommonJS extension `module.exports`. */
  27389. var moduleExports = freeModule && freeModule.exports === freeExports;
  27390. /** Detect free variable `process` from Node.js. */
  27391. var freeProcess = moduleExports && freeGlobal.process;
  27392. /** Used to access faster Node.js helpers. */
  27393. var nodeUtil = (function() {
  27394. try {
  27395. return freeProcess && freeProcess.binding && freeProcess.binding('util');
  27396. } catch (e) {}
  27397. }());
  27398. /* Node.js helper references. */
  27399. var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
  27400. /**
  27401. * A specialized version of `_.filter` for arrays without support for
  27402. * iteratee shorthands.
  27403. *
  27404. * @private
  27405. * @param {Array} [array] The array to iterate over.
  27406. * @param {Function} predicate The function invoked per iteration.
  27407. * @returns {Array} Returns the new filtered array.
  27408. */
  27409. function arrayFilter(array, predicate) {
  27410. var index = -1,
  27411. length = array == null ? 0 : array.length,
  27412. resIndex = 0,
  27413. result = [];
  27414. while (++index < length) {
  27415. var value = array[index];
  27416. if (predicate(value, index, array)) {
  27417. result[resIndex++] = value;
  27418. }
  27419. }
  27420. return result;
  27421. }
  27422. /**
  27423. * Appends the elements of `values` to `array`.
  27424. *
  27425. * @private
  27426. * @param {Array} array The array to modify.
  27427. * @param {Array} values The values to append.
  27428. * @returns {Array} Returns `array`.
  27429. */
  27430. function arrayPush(array, values) {
  27431. var index = -1,
  27432. length = values.length,
  27433. offset = array.length;
  27434. while (++index < length) {
  27435. array[offset + index] = values[index];
  27436. }
  27437. return array;
  27438. }
  27439. /**
  27440. * A specialized version of `_.some` for arrays without support for iteratee
  27441. * shorthands.
  27442. *
  27443. * @private
  27444. * @param {Array} [array] The array to iterate over.
  27445. * @param {Function} predicate The function invoked per iteration.
  27446. * @returns {boolean} Returns `true` if any element passes the predicate check,
  27447. * else `false`.
  27448. */
  27449. function arraySome(array, predicate) {
  27450. var index = -1,
  27451. length = array == null ? 0 : array.length;
  27452. while (++index < length) {
  27453. if (predicate(array[index], index, array)) {
  27454. return true;
  27455. }
  27456. }
  27457. return false;
  27458. }
  27459. /**
  27460. * The base implementation of `_.times` without support for iteratee shorthands
  27461. * or max array length checks.
  27462. *
  27463. * @private
  27464. * @param {number} n The number of times to invoke `iteratee`.
  27465. * @param {Function} iteratee The function invoked per iteration.
  27466. * @returns {Array} Returns the array of results.
  27467. */
  27468. function baseTimes(n, iteratee) {
  27469. var index = -1,
  27470. result = Array(n);
  27471. while (++index < n) {
  27472. result[index] = iteratee(index);
  27473. }
  27474. return result;
  27475. }
  27476. /**
  27477. * The base implementation of `_.unary` without support for storing metadata.
  27478. *
  27479. * @private
  27480. * @param {Function} func The function to cap arguments for.
  27481. * @returns {Function} Returns the new capped function.
  27482. */
  27483. function baseUnary(func) {
  27484. return function(value) {
  27485. return func(value);
  27486. };
  27487. }
  27488. /**
  27489. * Checks if a `cache` value for `key` exists.
  27490. *
  27491. * @private
  27492. * @param {Object} cache The cache to query.
  27493. * @param {string} key The key of the entry to check.
  27494. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  27495. */
  27496. function cacheHas(cache, key) {
  27497. return cache.has(key);
  27498. }
  27499. /**
  27500. * Gets the value at `key` of `object`.
  27501. *
  27502. * @private
  27503. * @param {Object} [object] The object to query.
  27504. * @param {string} key The key of the property to get.
  27505. * @returns {*} Returns the property value.
  27506. */
  27507. function getValue(object, key) {
  27508. return object == null ? undefined : object[key];
  27509. }
  27510. /**
  27511. * Converts `map` to its key-value pairs.
  27512. *
  27513. * @private
  27514. * @param {Object} map The map to convert.
  27515. * @returns {Array} Returns the key-value pairs.
  27516. */
  27517. function mapToArray(map) {
  27518. var index = -1,
  27519. result = Array(map.size);
  27520. map.forEach(function(value, key) {
  27521. result[++index] = [key, value];
  27522. });
  27523. return result;
  27524. }
  27525. /**
  27526. * Creates a unary function that invokes `func` with its argument transformed.
  27527. *
  27528. * @private
  27529. * @param {Function} func The function to wrap.
  27530. * @param {Function} transform The argument transform.
  27531. * @returns {Function} Returns the new function.
  27532. */
  27533. function overArg(func, transform) {
  27534. return function(arg) {
  27535. return func(transform(arg));
  27536. };
  27537. }
  27538. /**
  27539. * Converts `set` to an array of its values.
  27540. *
  27541. * @private
  27542. * @param {Object} set The set to convert.
  27543. * @returns {Array} Returns the values.
  27544. */
  27545. function setToArray(set) {
  27546. var index = -1,
  27547. result = Array(set.size);
  27548. set.forEach(function(value) {
  27549. result[++index] = value;
  27550. });
  27551. return result;
  27552. }
  27553. /** Used for built-in method references. */
  27554. var arrayProto = Array.prototype,
  27555. funcProto = Function.prototype,
  27556. objectProto = Object.prototype;
  27557. /** Used to detect overreaching core-js shims. */
  27558. var coreJsData = root['__core-js_shared__'];
  27559. /** Used to resolve the decompiled source of functions. */
  27560. var funcToString = funcProto.toString;
  27561. /** Used to check objects for own properties. */
  27562. var hasOwnProperty = objectProto.hasOwnProperty;
  27563. /** Used to detect methods masquerading as native. */
  27564. var maskSrcKey = (function() {
  27565. var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
  27566. return uid ? ('Symbol(src)_1.' + uid) : '';
  27567. }());
  27568. /**
  27569. * Used to resolve the
  27570. * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
  27571. * of values.
  27572. */
  27573. var nativeObjectToString = objectProto.toString;
  27574. /** Used to detect if a method is native. */
  27575. var reIsNative = RegExp('^' +
  27576. funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
  27577. .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
  27578. );
  27579. /** Built-in value references. */
  27580. var Buffer = moduleExports ? root.Buffer : undefined,
  27581. Symbol = root.Symbol,
  27582. Uint8Array = root.Uint8Array,
  27583. propertyIsEnumerable = objectProto.propertyIsEnumerable,
  27584. splice = arrayProto.splice,
  27585. symToStringTag = Symbol ? Symbol.toStringTag : undefined;
  27586. /* Built-in method references for those with the same name as other `lodash` methods. */
  27587. var nativeGetSymbols = Object.getOwnPropertySymbols,
  27588. nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
  27589. nativeKeys = overArg(Object.keys, Object);
  27590. /* Built-in method references that are verified to be native. */
  27591. var DataView = getNative(root, 'DataView'),
  27592. Map = getNative(root, 'Map'),
  27593. Promise = getNative(root, 'Promise'),
  27594. Set = getNative(root, 'Set'),
  27595. WeakMap = getNative(root, 'WeakMap'),
  27596. nativeCreate = getNative(Object, 'create');
  27597. /** Used to detect maps, sets, and weakmaps. */
  27598. var dataViewCtorString = toSource(DataView),
  27599. mapCtorString = toSource(Map),
  27600. promiseCtorString = toSource(Promise),
  27601. setCtorString = toSource(Set),
  27602. weakMapCtorString = toSource(WeakMap);
  27603. /** Used to convert symbols to primitives and strings. */
  27604. var symbolProto = Symbol ? Symbol.prototype : undefined,
  27605. symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
  27606. /**
  27607. * Creates a hash object.
  27608. *
  27609. * @private
  27610. * @constructor
  27611. * @param {Array} [entries] The key-value pairs to cache.
  27612. */
  27613. function Hash(entries) {
  27614. var index = -1,
  27615. length = entries == null ? 0 : entries.length;
  27616. this.clear();
  27617. while (++index < length) {
  27618. var entry = entries[index];
  27619. this.set(entry[0], entry[1]);
  27620. }
  27621. }
  27622. /**
  27623. * Removes all key-value entries from the hash.
  27624. *
  27625. * @private
  27626. * @name clear
  27627. * @memberOf Hash
  27628. */
  27629. function hashClear() {
  27630. this.__data__ = nativeCreate ? nativeCreate(null) : {};
  27631. this.size = 0;
  27632. }
  27633. /**
  27634. * Removes `key` and its value from the hash.
  27635. *
  27636. * @private
  27637. * @name delete
  27638. * @memberOf Hash
  27639. * @param {Object} hash The hash to modify.
  27640. * @param {string} key The key of the value to remove.
  27641. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  27642. */
  27643. function hashDelete(key) {
  27644. var result = this.has(key) && delete this.__data__[key];
  27645. this.size -= result ? 1 : 0;
  27646. return result;
  27647. }
  27648. /**
  27649. * Gets the hash value for `key`.
  27650. *
  27651. * @private
  27652. * @name get
  27653. * @memberOf Hash
  27654. * @param {string} key The key of the value to get.
  27655. * @returns {*} Returns the entry value.
  27656. */
  27657. function hashGet(key) {
  27658. var data = this.__data__;
  27659. if (nativeCreate) {
  27660. var result = data[key];
  27661. return result === HASH_UNDEFINED ? undefined : result;
  27662. }
  27663. return hasOwnProperty.call(data, key) ? data[key] : undefined;
  27664. }
  27665. /**
  27666. * Checks if a hash value for `key` exists.
  27667. *
  27668. * @private
  27669. * @name has
  27670. * @memberOf Hash
  27671. * @param {string} key The key of the entry to check.
  27672. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  27673. */
  27674. function hashHas(key) {
  27675. var data = this.__data__;
  27676. return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
  27677. }
  27678. /**
  27679. * Sets the hash `key` to `value`.
  27680. *
  27681. * @private
  27682. * @name set
  27683. * @memberOf Hash
  27684. * @param {string} key The key of the value to set.
  27685. * @param {*} value The value to set.
  27686. * @returns {Object} Returns the hash instance.
  27687. */
  27688. function hashSet(key, value) {
  27689. var data = this.__data__;
  27690. this.size += this.has(key) ? 0 : 1;
  27691. data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
  27692. return this;
  27693. }
  27694. // Add methods to `Hash`.
  27695. Hash.prototype.clear = hashClear;
  27696. Hash.prototype['delete'] = hashDelete;
  27697. Hash.prototype.get = hashGet;
  27698. Hash.prototype.has = hashHas;
  27699. Hash.prototype.set = hashSet;
  27700. /**
  27701. * Creates an list cache object.
  27702. *
  27703. * @private
  27704. * @constructor
  27705. * @param {Array} [entries] The key-value pairs to cache.
  27706. */
  27707. function ListCache(entries) {
  27708. var index = -1,
  27709. length = entries == null ? 0 : entries.length;
  27710. this.clear();
  27711. while (++index < length) {
  27712. var entry = entries[index];
  27713. this.set(entry[0], entry[1]);
  27714. }
  27715. }
  27716. /**
  27717. * Removes all key-value entries from the list cache.
  27718. *
  27719. * @private
  27720. * @name clear
  27721. * @memberOf ListCache
  27722. */
  27723. function listCacheClear() {
  27724. this.__data__ = [];
  27725. this.size = 0;
  27726. }
  27727. /**
  27728. * Removes `key` and its value from the list cache.
  27729. *
  27730. * @private
  27731. * @name delete
  27732. * @memberOf ListCache
  27733. * @param {string} key The key of the value to remove.
  27734. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  27735. */
  27736. function listCacheDelete(key) {
  27737. var data = this.__data__,
  27738. index = assocIndexOf(data, key);
  27739. if (index < 0) {
  27740. return false;
  27741. }
  27742. var lastIndex = data.length - 1;
  27743. if (index == lastIndex) {
  27744. data.pop();
  27745. } else {
  27746. splice.call(data, index, 1);
  27747. }
  27748. --this.size;
  27749. return true;
  27750. }
  27751. /**
  27752. * Gets the list cache value for `key`.
  27753. *
  27754. * @private
  27755. * @name get
  27756. * @memberOf ListCache
  27757. * @param {string} key The key of the value to get.
  27758. * @returns {*} Returns the entry value.
  27759. */
  27760. function listCacheGet(key) {
  27761. var data = this.__data__,
  27762. index = assocIndexOf(data, key);
  27763. return index < 0 ? undefined : data[index][1];
  27764. }
  27765. /**
  27766. * Checks if a list cache value for `key` exists.
  27767. *
  27768. * @private
  27769. * @name has
  27770. * @memberOf ListCache
  27771. * @param {string} key The key of the entry to check.
  27772. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  27773. */
  27774. function listCacheHas(key) {
  27775. return assocIndexOf(this.__data__, key) > -1;
  27776. }
  27777. /**
  27778. * Sets the list cache `key` to `value`.
  27779. *
  27780. * @private
  27781. * @name set
  27782. * @memberOf ListCache
  27783. * @param {string} key The key of the value to set.
  27784. * @param {*} value The value to set.
  27785. * @returns {Object} Returns the list cache instance.
  27786. */
  27787. function listCacheSet(key, value) {
  27788. var data = this.__data__,
  27789. index = assocIndexOf(data, key);
  27790. if (index < 0) {
  27791. ++this.size;
  27792. data.push([key, value]);
  27793. } else {
  27794. data[index][1] = value;
  27795. }
  27796. return this;
  27797. }
  27798. // Add methods to `ListCache`.
  27799. ListCache.prototype.clear = listCacheClear;
  27800. ListCache.prototype['delete'] = listCacheDelete;
  27801. ListCache.prototype.get = listCacheGet;
  27802. ListCache.prototype.has = listCacheHas;
  27803. ListCache.prototype.set = listCacheSet;
  27804. /**
  27805. * Creates a map cache object to store key-value pairs.
  27806. *
  27807. * @private
  27808. * @constructor
  27809. * @param {Array} [entries] The key-value pairs to cache.
  27810. */
  27811. function MapCache(entries) {
  27812. var index = -1,
  27813. length = entries == null ? 0 : entries.length;
  27814. this.clear();
  27815. while (++index < length) {
  27816. var entry = entries[index];
  27817. this.set(entry[0], entry[1]);
  27818. }
  27819. }
  27820. /**
  27821. * Removes all key-value entries from the map.
  27822. *
  27823. * @private
  27824. * @name clear
  27825. * @memberOf MapCache
  27826. */
  27827. function mapCacheClear() {
  27828. this.size = 0;
  27829. this.__data__ = {
  27830. 'hash': new Hash,
  27831. 'map': new (Map || ListCache),
  27832. 'string': new Hash
  27833. };
  27834. }
  27835. /**
  27836. * Removes `key` and its value from the map.
  27837. *
  27838. * @private
  27839. * @name delete
  27840. * @memberOf MapCache
  27841. * @param {string} key The key of the value to remove.
  27842. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  27843. */
  27844. function mapCacheDelete(key) {
  27845. var result = getMapData(this, key)['delete'](key);
  27846. this.size -= result ? 1 : 0;
  27847. return result;
  27848. }
  27849. /**
  27850. * Gets the map value for `key`.
  27851. *
  27852. * @private
  27853. * @name get
  27854. * @memberOf MapCache
  27855. * @param {string} key The key of the value to get.
  27856. * @returns {*} Returns the entry value.
  27857. */
  27858. function mapCacheGet(key) {
  27859. return getMapData(this, key).get(key);
  27860. }
  27861. /**
  27862. * Checks if a map value for `key` exists.
  27863. *
  27864. * @private
  27865. * @name has
  27866. * @memberOf MapCache
  27867. * @param {string} key The key of the entry to check.
  27868. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  27869. */
  27870. function mapCacheHas(key) {
  27871. return getMapData(this, key).has(key);
  27872. }
  27873. /**
  27874. * Sets the map `key` to `value`.
  27875. *
  27876. * @private
  27877. * @name set
  27878. * @memberOf MapCache
  27879. * @param {string} key The key of the value to set.
  27880. * @param {*} value The value to set.
  27881. * @returns {Object} Returns the map cache instance.
  27882. */
  27883. function mapCacheSet(key, value) {
  27884. var data = getMapData(this, key),
  27885. size = data.size;
  27886. data.set(key, value);
  27887. this.size += data.size == size ? 0 : 1;
  27888. return this;
  27889. }
  27890. // Add methods to `MapCache`.
  27891. MapCache.prototype.clear = mapCacheClear;
  27892. MapCache.prototype['delete'] = mapCacheDelete;
  27893. MapCache.prototype.get = mapCacheGet;
  27894. MapCache.prototype.has = mapCacheHas;
  27895. MapCache.prototype.set = mapCacheSet;
  27896. /**
  27897. *
  27898. * Creates an array cache object to store unique values.
  27899. *
  27900. * @private
  27901. * @constructor
  27902. * @param {Array} [values] The values to cache.
  27903. */
  27904. function SetCache(values) {
  27905. var index = -1,
  27906. length = values == null ? 0 : values.length;
  27907. this.__data__ = new MapCache;
  27908. while (++index < length) {
  27909. this.add(values[index]);
  27910. }
  27911. }
  27912. /**
  27913. * Adds `value` to the array cache.
  27914. *
  27915. * @private
  27916. * @name add
  27917. * @memberOf SetCache
  27918. * @alias push
  27919. * @param {*} value The value to cache.
  27920. * @returns {Object} Returns the cache instance.
  27921. */
  27922. function setCacheAdd(value) {
  27923. this.__data__.set(value, HASH_UNDEFINED);
  27924. return this;
  27925. }
  27926. /**
  27927. * Checks if `value` is in the array cache.
  27928. *
  27929. * @private
  27930. * @name has
  27931. * @memberOf SetCache
  27932. * @param {*} value The value to search for.
  27933. * @returns {number} Returns `true` if `value` is found, else `false`.
  27934. */
  27935. function setCacheHas(value) {
  27936. return this.__data__.has(value);
  27937. }
  27938. // Add methods to `SetCache`.
  27939. SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
  27940. SetCache.prototype.has = setCacheHas;
  27941. /**
  27942. * Creates a stack cache object to store key-value pairs.
  27943. *
  27944. * @private
  27945. * @constructor
  27946. * @param {Array} [entries] The key-value pairs to cache.
  27947. */
  27948. function Stack(entries) {
  27949. var data = this.__data__ = new ListCache(entries);
  27950. this.size = data.size;
  27951. }
  27952. /**
  27953. * Removes all key-value entries from the stack.
  27954. *
  27955. * @private
  27956. * @name clear
  27957. * @memberOf Stack
  27958. */
  27959. function stackClear() {
  27960. this.__data__ = new ListCache;
  27961. this.size = 0;
  27962. }
  27963. /**
  27964. * Removes `key` and its value from the stack.
  27965. *
  27966. * @private
  27967. * @name delete
  27968. * @memberOf Stack
  27969. * @param {string} key The key of the value to remove.
  27970. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  27971. */
  27972. function stackDelete(key) {
  27973. var data = this.__data__,
  27974. result = data['delete'](key);
  27975. this.size = data.size;
  27976. return result;
  27977. }
  27978. /**
  27979. * Gets the stack value for `key`.
  27980. *
  27981. * @private
  27982. * @name get
  27983. * @memberOf Stack
  27984. * @param {string} key The key of the value to get.
  27985. * @returns {*} Returns the entry value.
  27986. */
  27987. function stackGet(key) {
  27988. return this.__data__.get(key);
  27989. }
  27990. /**
  27991. * Checks if a stack value for `key` exists.
  27992. *
  27993. * @private
  27994. * @name has
  27995. * @memberOf Stack
  27996. * @param {string} key The key of the entry to check.
  27997. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  27998. */
  27999. function stackHas(key) {
  28000. return this.__data__.has(key);
  28001. }
  28002. /**
  28003. * Sets the stack `key` to `value`.
  28004. *
  28005. * @private
  28006. * @name set
  28007. * @memberOf Stack
  28008. * @param {string} key The key of the value to set.
  28009. * @param {*} value The value to set.
  28010. * @returns {Object} Returns the stack cache instance.
  28011. */
  28012. function stackSet(key, value) {
  28013. var data = this.__data__;
  28014. if (data instanceof ListCache) {
  28015. var pairs = data.__data__;
  28016. if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
  28017. pairs.push([key, value]);
  28018. this.size = ++data.size;
  28019. return this;
  28020. }
  28021. data = this.__data__ = new MapCache(pairs);
  28022. }
  28023. data.set(key, value);
  28024. this.size = data.size;
  28025. return this;
  28026. }
  28027. // Add methods to `Stack`.
  28028. Stack.prototype.clear = stackClear;
  28029. Stack.prototype['delete'] = stackDelete;
  28030. Stack.prototype.get = stackGet;
  28031. Stack.prototype.has = stackHas;
  28032. Stack.prototype.set = stackSet;
  28033. /**
  28034. * Creates an array of the enumerable property names of the array-like `value`.
  28035. *
  28036. * @private
  28037. * @param {*} value The value to query.
  28038. * @param {boolean} inherited Specify returning inherited property names.
  28039. * @returns {Array} Returns the array of property names.
  28040. */
  28041. function arrayLikeKeys(value, inherited) {
  28042. var isArr = isArray(value),
  28043. isArg = !isArr && isArguments(value),
  28044. isBuff = !isArr && !isArg && isBuffer(value),
  28045. isType = !isArr && !isArg && !isBuff && isTypedArray(value),
  28046. skipIndexes = isArr || isArg || isBuff || isType,
  28047. result = skipIndexes ? baseTimes(value.length, String) : [],
  28048. length = result.length;
  28049. for (var key in value) {
  28050. if ((inherited || hasOwnProperty.call(value, key)) &&
  28051. !(skipIndexes && (
  28052. // Safari 9 has enumerable `arguments.length` in strict mode.
  28053. key == 'length' ||
  28054. // Node.js 0.10 has enumerable non-index properties on buffers.
  28055. (isBuff && (key == 'offset' || key == 'parent')) ||
  28056. // PhantomJS 2 has enumerable non-index properties on typed arrays.
  28057. (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
  28058. // Skip index properties.
  28059. isIndex(key, length)
  28060. ))) {
  28061. result.push(key);
  28062. }
  28063. }
  28064. return result;
  28065. }
  28066. /**
  28067. * Gets the index at which the `key` is found in `array` of key-value pairs.
  28068. *
  28069. * @private
  28070. * @param {Array} array The array to inspect.
  28071. * @param {*} key The key to search for.
  28072. * @returns {number} Returns the index of the matched value, else `-1`.
  28073. */
  28074. function assocIndexOf(array, key) {
  28075. var length = array.length;
  28076. while (length--) {
  28077. if (eq(array[length][0], key)) {
  28078. return length;
  28079. }
  28080. }
  28081. return -1;
  28082. }
  28083. /**
  28084. * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
  28085. * `keysFunc` and `symbolsFunc` to get the enumerable property names and
  28086. * symbols of `object`.
  28087. *
  28088. * @private
  28089. * @param {Object} object The object to query.
  28090. * @param {Function} keysFunc The function to get the keys of `object`.
  28091. * @param {Function} symbolsFunc The function to get the symbols of `object`.
  28092. * @returns {Array} Returns the array of property names and symbols.
  28093. */
  28094. function baseGetAllKeys(object, keysFunc, symbolsFunc) {
  28095. var result = keysFunc(object);
  28096. return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
  28097. }
  28098. /**
  28099. * The base implementation of `getTag` without fallbacks for buggy environments.
  28100. *
  28101. * @private
  28102. * @param {*} value The value to query.
  28103. * @returns {string} Returns the `toStringTag`.
  28104. */
  28105. function baseGetTag(value) {
  28106. if (value == null) {
  28107. return value === undefined ? undefinedTag : nullTag;
  28108. }
  28109. return (symToStringTag && symToStringTag in Object(value))
  28110. ? getRawTag(value)
  28111. : objectToString(value);
  28112. }
  28113. /**
  28114. * The base implementation of `_.isArguments`.
  28115. *
  28116. * @private
  28117. * @param {*} value The value to check.
  28118. * @returns {boolean} Returns `true` if `value` is an `arguments` object,
  28119. */
  28120. function baseIsArguments(value) {
  28121. return isObjectLike(value) && baseGetTag(value) == argsTag;
  28122. }
  28123. /**
  28124. * The base implementation of `_.isEqual` which supports partial comparisons
  28125. * and tracks traversed objects.
  28126. *
  28127. * @private
  28128. * @param {*} value The value to compare.
  28129. * @param {*} other The other value to compare.
  28130. * @param {boolean} bitmask The bitmask flags.
  28131. * 1 - Unordered comparison
  28132. * 2 - Partial comparison
  28133. * @param {Function} [customizer] The function to customize comparisons.
  28134. * @param {Object} [stack] Tracks traversed `value` and `other` objects.
  28135. * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
  28136. */
  28137. function baseIsEqual(value, other, bitmask, customizer, stack) {
  28138. if (value === other) {
  28139. return true;
  28140. }
  28141. if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
  28142. return value !== value && other !== other;
  28143. }
  28144. return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
  28145. }
  28146. /**
  28147. * A specialized version of `baseIsEqual` for arrays and objects which performs
  28148. * deep comparisons and tracks traversed objects enabling objects with circular
  28149. * references to be compared.
  28150. *
  28151. * @private
  28152. * @param {Object} object The object to compare.
  28153. * @param {Object} other The other object to compare.
  28154. * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
  28155. * @param {Function} customizer The function to customize comparisons.
  28156. * @param {Function} equalFunc The function to determine equivalents of values.
  28157. * @param {Object} [stack] Tracks traversed `object` and `other` objects.
  28158. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
  28159. */
  28160. function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
  28161. var objIsArr = isArray(object),
  28162. othIsArr = isArray(other),
  28163. objTag = objIsArr ? arrayTag : getTag(object),
  28164. othTag = othIsArr ? arrayTag : getTag(other);
  28165. objTag = objTag == argsTag ? objectTag : objTag;
  28166. othTag = othTag == argsTag ? objectTag : othTag;
  28167. var objIsObj = objTag == objectTag,
  28168. othIsObj = othTag == objectTag,
  28169. isSameTag = objTag == othTag;
  28170. if (isSameTag && isBuffer(object)) {
  28171. if (!isBuffer(other)) {
  28172. return false;
  28173. }
  28174. objIsArr = true;
  28175. objIsObj = false;
  28176. }
  28177. if (isSameTag && !objIsObj) {
  28178. stack || (stack = new Stack);
  28179. return (objIsArr || isTypedArray(object))
  28180. ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
  28181. : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
  28182. }
  28183. if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
  28184. var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
  28185. othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
  28186. if (objIsWrapped || othIsWrapped) {
  28187. var objUnwrapped = objIsWrapped ? object.value() : object,
  28188. othUnwrapped = othIsWrapped ? other.value() : other;
  28189. stack || (stack = new Stack);
  28190. return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
  28191. }
  28192. }
  28193. if (!isSameTag) {
  28194. return false;
  28195. }
  28196. stack || (stack = new Stack);
  28197. return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
  28198. }
  28199. /**
  28200. * The base implementation of `_.isNative` without bad shim checks.
  28201. *
  28202. * @private
  28203. * @param {*} value The value to check.
  28204. * @returns {boolean} Returns `true` if `value` is a native function,
  28205. * else `false`.
  28206. */
  28207. function baseIsNative(value) {
  28208. if (!isObject(value) || isMasked(value)) {
  28209. return false;
  28210. }
  28211. var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
  28212. return pattern.test(toSource(value));
  28213. }
  28214. /**
  28215. * The base implementation of `_.isTypedArray` without Node.js optimizations.
  28216. *
  28217. * @private
  28218. * @param {*} value The value to check.
  28219. * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
  28220. */
  28221. function baseIsTypedArray(value) {
  28222. return isObjectLike(value) &&
  28223. isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
  28224. }
  28225. /**
  28226. * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
  28227. *
  28228. * @private
  28229. * @param {Object} object The object to query.
  28230. * @returns {Array} Returns the array of property names.
  28231. */
  28232. function baseKeys(object) {
  28233. if (!isPrototype(object)) {
  28234. return nativeKeys(object);
  28235. }
  28236. var result = [];
  28237. for (var key in Object(object)) {
  28238. if (hasOwnProperty.call(object, key) && key != 'constructor') {
  28239. result.push(key);
  28240. }
  28241. }
  28242. return result;
  28243. }
  28244. /**
  28245. * A specialized version of `baseIsEqualDeep` for arrays with support for
  28246. * partial deep comparisons.
  28247. *
  28248. * @private
  28249. * @param {Array} array The array to compare.
  28250. * @param {Array} other The other array to compare.
  28251. * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
  28252. * @param {Function} customizer The function to customize comparisons.
  28253. * @param {Function} equalFunc The function to determine equivalents of values.
  28254. * @param {Object} stack Tracks traversed `array` and `other` objects.
  28255. * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
  28256. */
  28257. function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
  28258. var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
  28259. arrLength = array.length,
  28260. othLength = other.length;
  28261. if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
  28262. return false;
  28263. }
  28264. // Assume cyclic values are equal.
  28265. var stacked = stack.get(array);
  28266. if (stacked && stack.get(other)) {
  28267. return stacked == other;
  28268. }
  28269. var index = -1,
  28270. result = true,
  28271. seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
  28272. stack.set(array, other);
  28273. stack.set(other, array);
  28274. // Ignore non-index properties.
  28275. while (++index < arrLength) {
  28276. var arrValue = array[index],
  28277. othValue = other[index];
  28278. if (customizer) {
  28279. var compared = isPartial
  28280. ? customizer(othValue, arrValue, index, other, array, stack)
  28281. : customizer(arrValue, othValue, index, array, other, stack);
  28282. }
  28283. if (compared !== undefined) {
  28284. if (compared) {
  28285. continue;
  28286. }
  28287. result = false;
  28288. break;
  28289. }
  28290. // Recursively compare arrays (susceptible to call stack limits).
  28291. if (seen) {
  28292. if (!arraySome(other, function(othValue, othIndex) {
  28293. if (!cacheHas(seen, othIndex) &&
  28294. (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
  28295. return seen.push(othIndex);
  28296. }
  28297. })) {
  28298. result = false;
  28299. break;
  28300. }
  28301. } else if (!(
  28302. arrValue === othValue ||
  28303. equalFunc(arrValue, othValue, bitmask, customizer, stack)
  28304. )) {
  28305. result = false;
  28306. break;
  28307. }
  28308. }
  28309. stack['delete'](array);
  28310. stack['delete'](other);
  28311. return result;
  28312. }
  28313. /**
  28314. * A specialized version of `baseIsEqualDeep` for comparing objects of
  28315. * the same `toStringTag`.
  28316. *
  28317. * **Note:** This function only supports comparing values with tags of
  28318. * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
  28319. *
  28320. * @private
  28321. * @param {Object} object The object to compare.
  28322. * @param {Object} other The other object to compare.
  28323. * @param {string} tag The `toStringTag` of the objects to compare.
  28324. * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
  28325. * @param {Function} customizer The function to customize comparisons.
  28326. * @param {Function} equalFunc The function to determine equivalents of values.
  28327. * @param {Object} stack Tracks traversed `object` and `other` objects.
  28328. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
  28329. */
  28330. function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
  28331. switch (tag) {
  28332. case dataViewTag:
  28333. if ((object.byteLength != other.byteLength) ||
  28334. (object.byteOffset != other.byteOffset)) {
  28335. return false;
  28336. }
  28337. object = object.buffer;
  28338. other = other.buffer;
  28339. case arrayBufferTag:
  28340. if ((object.byteLength != other.byteLength) ||
  28341. !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
  28342. return false;
  28343. }
  28344. return true;
  28345. case boolTag:
  28346. case dateTag:
  28347. case numberTag:
  28348. // Coerce booleans to `1` or `0` and dates to milliseconds.
  28349. // Invalid dates are coerced to `NaN`.
  28350. return eq(+object, +other);
  28351. case errorTag:
  28352. return object.name == other.name && object.message == other.message;
  28353. case regexpTag:
  28354. case stringTag:
  28355. // Coerce regexes to strings and treat strings, primitives and objects,
  28356. // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
  28357. // for more details.
  28358. return object == (other + '');
  28359. case mapTag:
  28360. var convert = mapToArray;
  28361. case setTag:
  28362. var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
  28363. convert || (convert = setToArray);
  28364. if (object.size != other.size && !isPartial) {
  28365. return false;
  28366. }
  28367. // Assume cyclic values are equal.
  28368. var stacked = stack.get(object);
  28369. if (stacked) {
  28370. return stacked == other;
  28371. }
  28372. bitmask |= COMPARE_UNORDERED_FLAG;
  28373. // Recursively compare objects (susceptible to call stack limits).
  28374. stack.set(object, other);
  28375. var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
  28376. stack['delete'](object);
  28377. return result;
  28378. case symbolTag:
  28379. if (symbolValueOf) {
  28380. return symbolValueOf.call(object) == symbolValueOf.call(other);
  28381. }
  28382. }
  28383. return false;
  28384. }
  28385. /**
  28386. * A specialized version of `baseIsEqualDeep` for objects with support for
  28387. * partial deep comparisons.
  28388. *
  28389. * @private
  28390. * @param {Object} object The object to compare.
  28391. * @param {Object} other The other object to compare.
  28392. * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
  28393. * @param {Function} customizer The function to customize comparisons.
  28394. * @param {Function} equalFunc The function to determine equivalents of values.
  28395. * @param {Object} stack Tracks traversed `object` and `other` objects.
  28396. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
  28397. */
  28398. function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
  28399. var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
  28400. objProps = getAllKeys(object),
  28401. objLength = objProps.length,
  28402. othProps = getAllKeys(other),
  28403. othLength = othProps.length;
  28404. if (objLength != othLength && !isPartial) {
  28405. return false;
  28406. }
  28407. var index = objLength;
  28408. while (index--) {
  28409. var key = objProps[index];
  28410. if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
  28411. return false;
  28412. }
  28413. }
  28414. // Assume cyclic values are equal.
  28415. var stacked = stack.get(object);
  28416. if (stacked && stack.get(other)) {
  28417. return stacked == other;
  28418. }
  28419. var result = true;
  28420. stack.set(object, other);
  28421. stack.set(other, object);
  28422. var skipCtor = isPartial;
  28423. while (++index < objLength) {
  28424. key = objProps[index];
  28425. var objValue = object[key],
  28426. othValue = other[key];
  28427. if (customizer) {
  28428. var compared = isPartial
  28429. ? customizer(othValue, objValue, key, other, object, stack)
  28430. : customizer(objValue, othValue, key, object, other, stack);
  28431. }
  28432. // Recursively compare objects (susceptible to call stack limits).
  28433. if (!(compared === undefined
  28434. ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
  28435. : compared
  28436. )) {
  28437. result = false;
  28438. break;
  28439. }
  28440. skipCtor || (skipCtor = key == 'constructor');
  28441. }
  28442. if (result && !skipCtor) {
  28443. var objCtor = object.constructor,
  28444. othCtor = other.constructor;
  28445. // Non `Object` object instances with different constructors are not equal.
  28446. if (objCtor != othCtor &&
  28447. ('constructor' in object && 'constructor' in other) &&
  28448. !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
  28449. typeof othCtor == 'function' && othCtor instanceof othCtor)) {
  28450. result = false;
  28451. }
  28452. }
  28453. stack['delete'](object);
  28454. stack['delete'](other);
  28455. return result;
  28456. }
  28457. /**
  28458. * Creates an array of own enumerable property names and symbols of `object`.
  28459. *
  28460. * @private
  28461. * @param {Object} object The object to query.
  28462. * @returns {Array} Returns the array of property names and symbols.
  28463. */
  28464. function getAllKeys(object) {
  28465. return baseGetAllKeys(object, keys, getSymbols);
  28466. }
  28467. /**
  28468. * Gets the data for `map`.
  28469. *
  28470. * @private
  28471. * @param {Object} map The map to query.
  28472. * @param {string} key The reference key.
  28473. * @returns {*} Returns the map data.
  28474. */
  28475. function getMapData(map, key) {
  28476. var data = map.__data__;
  28477. return isKeyable(key)
  28478. ? data[typeof key == 'string' ? 'string' : 'hash']
  28479. : data.map;
  28480. }
  28481. /**
  28482. * Gets the native function at `key` of `object`.
  28483. *
  28484. * @private
  28485. * @param {Object} object The object to query.
  28486. * @param {string} key The key of the method to get.
  28487. * @returns {*} Returns the function if it's native, else `undefined`.
  28488. */
  28489. function getNative(object, key) {
  28490. var value = getValue(object, key);
  28491. return baseIsNative(value) ? value : undefined;
  28492. }
  28493. /**
  28494. * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
  28495. *
  28496. * @private
  28497. * @param {*} value The value to query.
  28498. * @returns {string} Returns the raw `toStringTag`.
  28499. */
  28500. function getRawTag(value) {
  28501. var isOwn = hasOwnProperty.call(value, symToStringTag),
  28502. tag = value[symToStringTag];
  28503. try {
  28504. value[symToStringTag] = undefined;
  28505. var unmasked = true;
  28506. } catch (e) {}
  28507. var result = nativeObjectToString.call(value);
  28508. if (unmasked) {
  28509. if (isOwn) {
  28510. value[symToStringTag] = tag;
  28511. } else {
  28512. delete value[symToStringTag];
  28513. }
  28514. }
  28515. return result;
  28516. }
  28517. /**
  28518. * Creates an array of the own enumerable symbols of `object`.
  28519. *
  28520. * @private
  28521. * @param {Object} object The object to query.
  28522. * @returns {Array} Returns the array of symbols.
  28523. */
  28524. var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
  28525. if (object == null) {
  28526. return [];
  28527. }
  28528. object = Object(object);
  28529. return arrayFilter(nativeGetSymbols(object), function(symbol) {
  28530. return propertyIsEnumerable.call(object, symbol);
  28531. });
  28532. };
  28533. /**
  28534. * Gets the `toStringTag` of `value`.
  28535. *
  28536. * @private
  28537. * @param {*} value The value to query.
  28538. * @returns {string} Returns the `toStringTag`.
  28539. */
  28540. var getTag = baseGetTag;
  28541. // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
  28542. if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
  28543. (Map && getTag(new Map) != mapTag) ||
  28544. (Promise && getTag(Promise.resolve()) != promiseTag) ||
  28545. (Set && getTag(new Set) != setTag) ||
  28546. (WeakMap && getTag(new WeakMap) != weakMapTag)) {
  28547. getTag = function(value) {
  28548. var result = baseGetTag(value),
  28549. Ctor = result == objectTag ? value.constructor : undefined,
  28550. ctorString = Ctor ? toSource(Ctor) : '';
  28551. if (ctorString) {
  28552. switch (ctorString) {
  28553. case dataViewCtorString: return dataViewTag;
  28554. case mapCtorString: return mapTag;
  28555. case promiseCtorString: return promiseTag;
  28556. case setCtorString: return setTag;
  28557. case weakMapCtorString: return weakMapTag;
  28558. }
  28559. }
  28560. return result;
  28561. };
  28562. }
  28563. /**
  28564. * Checks if `value` is a valid array-like index.
  28565. *
  28566. * @private
  28567. * @param {*} value The value to check.
  28568. * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
  28569. * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
  28570. */
  28571. function isIndex(value, length) {
  28572. length = length == null ? MAX_SAFE_INTEGER : length;
  28573. return !!length &&
  28574. (typeof value == 'number' || reIsUint.test(value)) &&
  28575. (value > -1 && value % 1 == 0 && value < length);
  28576. }
  28577. /**
  28578. * Checks if `value` is suitable for use as unique object key.
  28579. *
  28580. * @private
  28581. * @param {*} value The value to check.
  28582. * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
  28583. */
  28584. function isKeyable(value) {
  28585. var type = typeof value;
  28586. return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
  28587. ? (value !== '__proto__')
  28588. : (value === null);
  28589. }
  28590. /**
  28591. * Checks if `func` has its source masked.
  28592. *
  28593. * @private
  28594. * @param {Function} func The function to check.
  28595. * @returns {boolean} Returns `true` if `func` is masked, else `false`.
  28596. */
  28597. function isMasked(func) {
  28598. return !!maskSrcKey && (maskSrcKey in func);
  28599. }
  28600. /**
  28601. * Checks if `value` is likely a prototype object.
  28602. *
  28603. * @private
  28604. * @param {*} value The value to check.
  28605. * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
  28606. */
  28607. function isPrototype(value) {
  28608. var Ctor = value && value.constructor,
  28609. proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
  28610. return value === proto;
  28611. }
  28612. /**
  28613. * Converts `value` to a string using `Object.prototype.toString`.
  28614. *
  28615. * @private
  28616. * @param {*} value The value to convert.
  28617. * @returns {string} Returns the converted string.
  28618. */
  28619. function objectToString(value) {
  28620. return nativeObjectToString.call(value);
  28621. }
  28622. /**
  28623. * Converts `func` to its source code.
  28624. *
  28625. * @private
  28626. * @param {Function} func The function to convert.
  28627. * @returns {string} Returns the source code.
  28628. */
  28629. function toSource(func) {
  28630. if (func != null) {
  28631. try {
  28632. return funcToString.call(func);
  28633. } catch (e) {}
  28634. try {
  28635. return (func + '');
  28636. } catch (e) {}
  28637. }
  28638. return '';
  28639. }
  28640. /**
  28641. * Performs a
  28642. * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  28643. * comparison between two values to determine if they are equivalent.
  28644. *
  28645. * @static
  28646. * @memberOf _
  28647. * @since 4.0.0
  28648. * @category Lang
  28649. * @param {*} value The value to compare.
  28650. * @param {*} other The other value to compare.
  28651. * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
  28652. * @example
  28653. *
  28654. * var object = { 'a': 1 };
  28655. * var other = { 'a': 1 };
  28656. *
  28657. * _.eq(object, object);
  28658. * // => true
  28659. *
  28660. * _.eq(object, other);
  28661. * // => false
  28662. *
  28663. * _.eq('a', 'a');
  28664. * // => true
  28665. *
  28666. * _.eq('a', Object('a'));
  28667. * // => false
  28668. *
  28669. * _.eq(NaN, NaN);
  28670. * // => true
  28671. */
  28672. function eq(value, other) {
  28673. return value === other || (value !== value && other !== other);
  28674. }
  28675. /**
  28676. * Checks if `value` is likely an `arguments` object.
  28677. *
  28678. * @static
  28679. * @memberOf _
  28680. * @since 0.1.0
  28681. * @category Lang
  28682. * @param {*} value The value to check.
  28683. * @returns {boolean} Returns `true` if `value` is an `arguments` object,
  28684. * else `false`.
  28685. * @example
  28686. *
  28687. * _.isArguments(function() { return arguments; }());
  28688. * // => true
  28689. *
  28690. * _.isArguments([1, 2, 3]);
  28691. * // => false
  28692. */
  28693. var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
  28694. return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
  28695. !propertyIsEnumerable.call(value, 'callee');
  28696. };
  28697. /**
  28698. * Checks if `value` is classified as an `Array` object.
  28699. *
  28700. * @static
  28701. * @memberOf _
  28702. * @since 0.1.0
  28703. * @category Lang
  28704. * @param {*} value The value to check.
  28705. * @returns {boolean} Returns `true` if `value` is an array, else `false`.
  28706. * @example
  28707. *
  28708. * _.isArray([1, 2, 3]);
  28709. * // => true
  28710. *
  28711. * _.isArray(document.body.children);
  28712. * // => false
  28713. *
  28714. * _.isArray('abc');
  28715. * // => false
  28716. *
  28717. * _.isArray(_.noop);
  28718. * // => false
  28719. */
  28720. var isArray = Array.isArray;
  28721. /**
  28722. * Checks if `value` is array-like. A value is considered array-like if it's
  28723. * not a function and has a `value.length` that's an integer greater than or
  28724. * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
  28725. *
  28726. * @static
  28727. * @memberOf _
  28728. * @since 4.0.0
  28729. * @category Lang
  28730. * @param {*} value The value to check.
  28731. * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
  28732. * @example
  28733. *
  28734. * _.isArrayLike([1, 2, 3]);
  28735. * // => true
  28736. *
  28737. * _.isArrayLike(document.body.children);
  28738. * // => true
  28739. *
  28740. * _.isArrayLike('abc');
  28741. * // => true
  28742. *
  28743. * _.isArrayLike(_.noop);
  28744. * // => false
  28745. */
  28746. function isArrayLike(value) {
  28747. return value != null && isLength(value.length) && !isFunction(value);
  28748. }
  28749. /**
  28750. * Checks if `value` is a buffer.
  28751. *
  28752. * @static
  28753. * @memberOf _
  28754. * @since 4.3.0
  28755. * @category Lang
  28756. * @param {*} value The value to check.
  28757. * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
  28758. * @example
  28759. *
  28760. * _.isBuffer(new Buffer(2));
  28761. * // => true
  28762. *
  28763. * _.isBuffer(new Uint8Array(2));
  28764. * // => false
  28765. */
  28766. var isBuffer = nativeIsBuffer || stubFalse;
  28767. /**
  28768. * Performs a deep comparison between two values to determine if they are
  28769. * equivalent.
  28770. *
  28771. * **Note:** This method supports comparing arrays, array buffers, booleans,
  28772. * date objects, error objects, maps, numbers, `Object` objects, regexes,
  28773. * sets, strings, symbols, and typed arrays. `Object` objects are compared
  28774. * by their own, not inherited, enumerable properties. Functions and DOM
  28775. * nodes are compared by strict equality, i.e. `===`.
  28776. *
  28777. * @static
  28778. * @memberOf _
  28779. * @since 0.1.0
  28780. * @category Lang
  28781. * @param {*} value The value to compare.
  28782. * @param {*} other The other value to compare.
  28783. * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
  28784. * @example
  28785. *
  28786. * var object = { 'a': 1 };
  28787. * var other = { 'a': 1 };
  28788. *
  28789. * _.isEqual(object, other);
  28790. * // => true
  28791. *
  28792. * object === other;
  28793. * // => false
  28794. */
  28795. function isEqual(value, other) {
  28796. return baseIsEqual(value, other);
  28797. }
  28798. /**
  28799. * Checks if `value` is classified as a `Function` object.
  28800. *
  28801. * @static
  28802. * @memberOf _
  28803. * @since 0.1.0
  28804. * @category Lang
  28805. * @param {*} value The value to check.
  28806. * @returns {boolean} Returns `true` if `value` is a function, else `false`.
  28807. * @example
  28808. *
  28809. * _.isFunction(_);
  28810. * // => true
  28811. *
  28812. * _.isFunction(/abc/);
  28813. * // => false
  28814. */
  28815. function isFunction(value) {
  28816. if (!isObject(value)) {
  28817. return false;
  28818. }
  28819. // The use of `Object#toString` avoids issues with the `typeof` operator
  28820. // in Safari 9 which returns 'object' for typed arrays and other constructors.
  28821. var tag = baseGetTag(value);
  28822. return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
  28823. }
  28824. /**
  28825. * Checks if `value` is a valid array-like length.
  28826. *
  28827. * **Note:** This method is loosely based on
  28828. * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
  28829. *
  28830. * @static
  28831. * @memberOf _
  28832. * @since 4.0.0
  28833. * @category Lang
  28834. * @param {*} value The value to check.
  28835. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
  28836. * @example
  28837. *
  28838. * _.isLength(3);
  28839. * // => true
  28840. *
  28841. * _.isLength(Number.MIN_VALUE);
  28842. * // => false
  28843. *
  28844. * _.isLength(Infinity);
  28845. * // => false
  28846. *
  28847. * _.isLength('3');
  28848. * // => false
  28849. */
  28850. function isLength(value) {
  28851. return typeof value == 'number' &&
  28852. value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  28853. }
  28854. /**
  28855. * Checks if `value` is the
  28856. * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
  28857. * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
  28858. *
  28859. * @static
  28860. * @memberOf _
  28861. * @since 0.1.0
  28862. * @category Lang
  28863. * @param {*} value The value to check.
  28864. * @returns {boolean} Returns `true` if `value` is an object, else `false`.
  28865. * @example
  28866. *
  28867. * _.isObject({});
  28868. * // => true
  28869. *
  28870. * _.isObject([1, 2, 3]);
  28871. * // => true
  28872. *
  28873. * _.isObject(_.noop);
  28874. * // => true
  28875. *
  28876. * _.isObject(null);
  28877. * // => false
  28878. */
  28879. function isObject(value) {
  28880. var type = typeof value;
  28881. return value != null && (type == 'object' || type == 'function');
  28882. }
  28883. /**
  28884. * Checks if `value` is object-like. A value is object-like if it's not `null`
  28885. * and has a `typeof` result of "object".
  28886. *
  28887. * @static
  28888. * @memberOf _
  28889. * @since 4.0.0
  28890. * @category Lang
  28891. * @param {*} value The value to check.
  28892. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  28893. * @example
  28894. *
  28895. * _.isObjectLike({});
  28896. * // => true
  28897. *
  28898. * _.isObjectLike([1, 2, 3]);
  28899. * // => true
  28900. *
  28901. * _.isObjectLike(_.noop);
  28902. * // => false
  28903. *
  28904. * _.isObjectLike(null);
  28905. * // => false
  28906. */
  28907. function isObjectLike(value) {
  28908. return value != null && typeof value == 'object';
  28909. }
  28910. /**
  28911. * Checks if `value` is classified as a typed array.
  28912. *
  28913. * @static
  28914. * @memberOf _
  28915. * @since 3.0.0
  28916. * @category Lang
  28917. * @param {*} value The value to check.
  28918. * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
  28919. * @example
  28920. *
  28921. * _.isTypedArray(new Uint8Array);
  28922. * // => true
  28923. *
  28924. * _.isTypedArray([]);
  28925. * // => false
  28926. */
  28927. var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
  28928. /**
  28929. * Creates an array of the own enumerable property names of `object`.
  28930. *
  28931. * **Note:** Non-object values are coerced to objects. See the
  28932. * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
  28933. * for more details.
  28934. *
  28935. * @static
  28936. * @since 0.1.0
  28937. * @memberOf _
  28938. * @category Object
  28939. * @param {Object} object The object to query.
  28940. * @returns {Array} Returns the array of property names.
  28941. * @example
  28942. *
  28943. * function Foo() {
  28944. * this.a = 1;
  28945. * this.b = 2;
  28946. * }
  28947. *
  28948. * Foo.prototype.c = 3;
  28949. *
  28950. * _.keys(new Foo);
  28951. * // => ['a', 'b'] (iteration order is not guaranteed)
  28952. *
  28953. * _.keys('hi');
  28954. * // => ['0', '1']
  28955. */
  28956. function keys(object) {
  28957. return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
  28958. }
  28959. /**
  28960. * This method returns a new empty array.
  28961. *
  28962. * @static
  28963. * @memberOf _
  28964. * @since 4.13.0
  28965. * @category Util
  28966. * @returns {Array} Returns the new empty array.
  28967. * @example
  28968. *
  28969. * var arrays = _.times(2, _.stubArray);
  28970. *
  28971. * console.log(arrays);
  28972. * // => [[], []]
  28973. *
  28974. * console.log(arrays[0] === arrays[1]);
  28975. * // => false
  28976. */
  28977. function stubArray() {
  28978. return [];
  28979. }
  28980. /**
  28981. * This method returns `false`.
  28982. *
  28983. * @static
  28984. * @memberOf _
  28985. * @since 4.13.0
  28986. * @category Util
  28987. * @returns {boolean} Returns `false`.
  28988. * @example
  28989. *
  28990. * _.times(2, _.stubFalse);
  28991. * // => [false, false]
  28992. */
  28993. function stubFalse() {
  28994. return false;
  28995. }
  28996. module.exports = isEqual;
  28997. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("698d"), __webpack_require__("f586")(module)))
  28998. /***/ }),
  28999. /***/ "5fdb":
  29000. /***/ (function(module, exports, __webpack_require__) {
  29001. "use strict";
  29002. var _interopRequireDefault = __webpack_require__("8e6d");
  29003. Object.defineProperty(exports, "__esModule", {
  29004. value: true
  29005. });
  29006. exports.default = void 0;
  29007. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  29008. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  29009. var _SourceModel = _interopRequireDefault(__webpack_require__("83e2"));
  29010. var _LayerModel = _interopRequireDefault(__webpack_require__("986c"));
  29011. var SourceListModel =
  29012. /*#__PURE__*/
  29013. function () {
  29014. function SourceListModel(options) {
  29015. (0, _classCallCheck2.default)(this, SourceListModel);
  29016. this.map = options.map;
  29017. this.style = this.map.getStyle();
  29018. this.layers = this.map.getStyle().layers;
  29019. this.overlayLayers = this.map.overlayLayersManager;
  29020. this.detailLayers = null;
  29021. this.sourceList = {};
  29022. this.sourceNames = [];
  29023. this._initLayers();
  29024. this._initSource();
  29025. this.excludeSourceNames = ['tdt-search-', 'tdt-route-', 'smmeasure', 'mapbox-gl-draw'];
  29026. }
  29027. (0, _createClass2.default)(SourceListModel, [{
  29028. key: "getSourceList",
  29029. value: function getSourceList() {
  29030. var sourceList = {};
  29031. for (var key in this.sourceList) {
  29032. if (key && this.excludeSource(key)) {
  29033. sourceList[key] = this.sourceList[key];
  29034. }
  29035. }
  29036. return sourceList;
  29037. }
  29038. }, {
  29039. key: "getSourceNames",
  29040. value: function getSourceNames() {
  29041. var _this = this;
  29042. var names = [];
  29043. this.sourceNames.forEach(function (element) {
  29044. if (element && _this.excludeSource(element)) {
  29045. names.push(element);
  29046. }
  29047. });
  29048. return names;
  29049. }
  29050. }, {
  29051. key: "excludeSource",
  29052. value: function excludeSource(key) {
  29053. for (var i = 0; i < this.excludeSourceNames.length; i++) {
  29054. if (key.indexOf(this.excludeSourceNames[i]) >= 0) {
  29055. return false;
  29056. }
  29057. }
  29058. return true;
  29059. }
  29060. }, {
  29061. key: "getLegendStyle",
  29062. value: function getLegendStyle(sourceName) {
  29063. if (sourceName) {
  29064. return this.sourceList[sourceName] ? this.sourceList[sourceName].style : '';
  29065. }
  29066. var sourceList = Object.values(this.sourceList) || [];
  29067. var styles = sourceList.filter(function (item) {
  29068. return !!item.style;
  29069. });
  29070. return styles;
  29071. }
  29072. }, {
  29073. key: "getLayers",
  29074. value: function getLayers() {
  29075. return this.detailLayers;
  29076. }
  29077. }, {
  29078. key: "getLayersBySourceLayer",
  29079. value: function getLayersBySourceLayer(sourceName, sourceLayer) {
  29080. return this.sourceList[sourceName]['sourceLayerList'][sourceLayer];
  29081. }
  29082. }, {
  29083. key: "getSourceLayersBySource",
  29084. value: function getSourceLayersBySource(sourceName) {
  29085. return this.sourceList[sourceName]['sourceLayerList'];
  29086. }
  29087. }, {
  29088. key: "addSourceStyle",
  29089. value: function addSourceStyle(sourceName, sourceStyle) {
  29090. if (this.sourceList[sourceName]) {
  29091. this.sourceList[sourceName]['style'] = sourceStyle;
  29092. }
  29093. }
  29094. }, {
  29095. key: "_initLayers",
  29096. value: function _initLayers() {
  29097. var _this2 = this;
  29098. this.layers && (this.detailLayers = this.layers.map(function (layer) {
  29099. return _this2.map.getLayer(layer.id);
  29100. }));
  29101. var overLayerList = Object.values(this.overlayLayers);
  29102. overLayerList.forEach(function (overlayer) {
  29103. if (overlayer.id) {
  29104. _this2.detailLayers.push({
  29105. id: overlayer.id,
  29106. visibility: overlayer.visibility ? 'visible' : 'none',
  29107. source: overlayer.id
  29108. });
  29109. }
  29110. });
  29111. }
  29112. }, {
  29113. key: "_initSource",
  29114. value: function _initSource() {
  29115. var _this3 = this;
  29116. this.detailLayers && this.detailLayers.forEach(function (layer) {
  29117. if (!_this3.sourceList[layer['source']]) {
  29118. _this3.sourceList[layer['source']] = new _SourceModel.default({
  29119. source: layer['source']
  29120. });
  29121. _this3.sourceNames.push(layer['source']);
  29122. }
  29123. _this3.sourceList[layer['source']].addLayer(new _LayerModel.default(layer), layer['sourceLayer']);
  29124. });
  29125. }
  29126. }]);
  29127. return SourceListModel;
  29128. }();
  29129. var _default = SourceListModel;
  29130. exports.default = _default;
  29131. /***/ }),
  29132. /***/ "6189":
  29133. /***/ (function(module, exports, __webpack_require__) {
  29134. "use strict";
  29135. var _interopRequireDefault = __webpack_require__("8e6d");
  29136. Object.defineProperty(exports, "__esModule", {
  29137. value: true
  29138. });
  29139. exports.default = void 0;
  29140. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  29141. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  29142. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  29143. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  29144. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  29145. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  29146. __webpack_require__("f240");
  29147. var RangeThemeLayerViewModel =
  29148. /*#__PURE__*/
  29149. function (_mapboxgl$Evented) {
  29150. (0, _inherits2.default)(RangeThemeLayerViewModel, _mapboxgl$Evented);
  29151. function RangeThemeLayerViewModel(themeProps) {
  29152. var _this;
  29153. (0, _classCallCheck2.default)(this, RangeThemeLayerViewModel);
  29154. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(RangeThemeLayerViewModel).call(this));
  29155. var layerName = themeProps.layerName,
  29156. options = themeProps.options,
  29157. layerId = themeProps.layerId,
  29158. data = themeProps.data;
  29159. _this.layerName = layerName || layerId;
  29160. options.id = options.id || layerId;
  29161. _this.options = options;
  29162. _this.layerId = layerId;
  29163. _this.data = data || [];
  29164. return _this;
  29165. }
  29166. (0, _createClass2.default)(RangeThemeLayerViewModel, [{
  29167. key: "setMap",
  29168. value: function setMap(mapInfo) {
  29169. var map = mapInfo.map;
  29170. this.map = map;
  29171. this._init();
  29172. }
  29173. }, {
  29174. key: "setLayerName",
  29175. value: function setLayerName(layerName) {
  29176. this.layerName = layerName;
  29177. this.removed();
  29178. this._init();
  29179. }
  29180. }, {
  29181. key: "setData",
  29182. value: function setData(data) {
  29183. this.data = data;
  29184. this.removed();
  29185. this._init();
  29186. }
  29187. }, {
  29188. key: "setOptions",
  29189. value: function setOptions(options) {
  29190. this.options = options;
  29191. this.removed();
  29192. this._init();
  29193. }
  29194. }, {
  29195. key: "_init",
  29196. value: function _init() {
  29197. this.themeLayer = new _mapboxGlEnhance.default.supermap.RangeThemeLayer(this.layerName, this.options);
  29198. this.map.addLayer(this.themeLayer);
  29199. this.themeLayer.addFeatures(this.data);
  29200. }
  29201. }, {
  29202. key: "removed",
  29203. value: function removed() {
  29204. var map = this.map,
  29205. options = this.options;
  29206. var layerId = options.id;
  29207. if (map && layerId && map.getLayer(layerId)) {
  29208. map.removeLayer(layerId);
  29209. }
  29210. }
  29211. }]);
  29212. return RangeThemeLayerViewModel;
  29213. }(_mapboxGlEnhance.default.Evented);
  29214. exports.default = RangeThemeLayerViewModel;
  29215. /***/ }),
  29216. /***/ "6255":
  29217. /***/ (function(module, exports, __webpack_require__) {
  29218. "use strict";
  29219. var _interopRequireDefault = __webpack_require__("8e6d");
  29220. Object.defineProperty(exports, "__esModule", {
  29221. value: true
  29222. });
  29223. exports.default = void 0;
  29224. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  29225. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  29226. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  29227. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  29228. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  29229. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  29230. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  29231. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  29232. var _SourceListModel = _interopRequireDefault(__webpack_require__("5fdb"));
  29233. var _geometryUtil = __webpack_require__("c599");
  29234. var _labelPoints = _interopRequireDefault(__webpack_require__("5e58"));
  29235. var defaultThemeInfo = {
  29236. field: '确诊',
  29237. identifyField: '省份',
  29238. stroke: {
  29239. 'line-width': 0.7,
  29240. 'line-color': '#696868',
  29241. 'line-opacity': 1
  29242. },
  29243. label: {
  29244. 'text-size': 10,
  29245. 'text-color': 'white',
  29246. 'text-halo-color': '#696868',
  29247. 'text-halo-width': 1
  29248. },
  29249. defaultColor: '#f5f5f5',
  29250. styleGroup: [{
  29251. color: '#fdebcf',
  29252. start: 1,
  29253. end: 9
  29254. }, {
  29255. color: '#f59e83',
  29256. start: 9,
  29257. end: 99
  29258. }, {
  29259. color: '#e55a4e',
  29260. start: 99,
  29261. end: 499
  29262. }, {
  29263. color: '#cb2a2f',
  29264. start: 499,
  29265. end: 999
  29266. }, {
  29267. color: '#811c24',
  29268. start: 999,
  29269. end: 10000
  29270. }, {
  29271. color: '#4f070d',
  29272. start: 10000
  29273. }]
  29274. };
  29275. var Backup_Identify_Field = '地区';
  29276. var WORLD_WIDTH = 360;
  29277. var NcpMapViewModel =
  29278. /*#__PURE__*/
  29279. function (_mapboxgl$Evented) {
  29280. (0, _inherits2.default)(NcpMapViewModel, _mapboxgl$Evented);
  29281. function NcpMapViewModel(target) {
  29282. var _this;
  29283. var dataOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  29284. var mapOptions = arguments.length > 2 ? arguments[2] : undefined;
  29285. (0, _classCallCheck2.default)(this, NcpMapViewModel);
  29286. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(NcpMapViewModel).call(this));
  29287. _this.defaultOverLayerId = '全省确诊人数';
  29288. _this.baseLayerId = '中国地图';
  29289. _this.themeInfo = defaultThemeInfo;
  29290. _this.target = target;
  29291. var url = dataOptions.url,
  29292. name = dataOptions.name,
  29293. proxyUrl = dataOptions.proxyUrl,
  29294. themeUrl = dataOptions.themeUrl;
  29295. _this.dataUrl = url;
  29296. _this.themeUrl = themeUrl;
  29297. _this.proxyUrl = proxyUrl;
  29298. _this.mapOptions = mapOptions || {};
  29299. _this.overLayerId = name || _this.defaultOverLayerId;
  29300. _this.bounds = mapOptions.bounds;
  29301. _this._initWebMap();
  29302. return _this;
  29303. }
  29304. (0, _createClass2.default)(NcpMapViewModel, [{
  29305. key: "_initWebMap",
  29306. value: function _initWebMap() {
  29307. var _this2 = this;
  29308. this._createMap();
  29309. this.map.on('load', function () {
  29310. _this2._handleLayerInfo();
  29311. });
  29312. }
  29313. }, {
  29314. key: "_createMap",
  29315. value: function _createMap() {
  29316. var _this$mapOptions = this.mapOptions,
  29317. center = _this$mapOptions.center,
  29318. zoom = _this$mapOptions.zoom,
  29319. bearing = _this$mapOptions.bearing,
  29320. pitch = _this$mapOptions.pitch,
  29321. _this$mapOptions$rend = _this$mapOptions.renderWorldCopies,
  29322. renderWorldCopies = _this$mapOptions$rend === void 0 ? false : _this$mapOptions$rend,
  29323. interactive = _this$mapOptions.interactive,
  29324. style = _this$mapOptions.style,
  29325. bounds = _this$mapOptions.bounds,
  29326. _this$mapOptions$pres = _this$mapOptions.preserveDrawingBuffer,
  29327. preserveDrawingBuffer = _this$mapOptions$pres === void 0 ? false : _this$mapOptions$pres;
  29328. style.glyphs = 'https://ncov.supermapol.com/statichtml/font/{fontstack}/{range}.pbf';
  29329. this.map = new _mapboxGlEnhance.default.Map({
  29330. container: this.target,
  29331. center: center || {
  29332. lng: 104.93846582803894,
  29333. lat: 33.37080662210445
  29334. },
  29335. zoom: zoom || 3,
  29336. bearing: bearing || 0,
  29337. pitch: pitch || 0,
  29338. bounds: bounds,
  29339. renderWorldCopies: renderWorldCopies,
  29340. preserveDrawingBuffer: preserveDrawingBuffer,
  29341. interactive: interactive === void 0 ? true : interactive,
  29342. style: style || {
  29343. version: 8,
  29344. sources: (0, _defineProperty2.default)({}, this.baseLayerId, {
  29345. type: 'raster',
  29346. tiles: ['https://maptiles.supermapol.com/iserver/services/map_China/rest/maps/China_Dark/zxyTileImage.png?z={z}&x={x}&y={y}'],
  29347. tileSize: 256
  29348. }),
  29349. layers: [{
  29350. id: this.baseLayerId,
  29351. source: this.baseLayerId,
  29352. type: 'raster',
  29353. minzoom: 0,
  29354. maxzoom: 22
  29355. }]
  29356. }
  29357. });
  29358. }
  29359. }, {
  29360. key: "_handleLayerInfo",
  29361. value: function _handleLayerInfo() {
  29362. var _this3 = this;
  29363. if (this.dataUrl) {
  29364. SuperMap.FetchRequest.get(this.dataUrl, null, {
  29365. withoutFormatSuffix: true,
  29366. proxy: this.proxyUrl
  29367. }).then(function (response) {
  29368. return response.json();
  29369. }).then(function (features) {
  29370. _this3.features = (0, _geometryUtil.handleMultyPolygon)(features.features);
  29371. if (_this3.themeUrl) {
  29372. _this3._handleThemeInfo();
  29373. } else {
  29374. _this3._addOverLayer();
  29375. }
  29376. }).catch(function (error) {
  29377. console.log(error);
  29378. _this3.fire('getlayerinfofailed', {
  29379. error: error
  29380. });
  29381. });
  29382. } else {
  29383. this._sendMapToUser();
  29384. }
  29385. }
  29386. }, {
  29387. key: "_creatNewLabelData",
  29388. value: function _creatNewLabelData() {
  29389. var _this4 = this;
  29390. if (this.features.length > 0 && this.features[0].properties[this.themeInfo.identifyField] === undefined) {
  29391. this.themeInfo.identifyField = Backup_Identify_Field;
  29392. }
  29393. var labels = {};
  29394. this.features.forEach(function (feature) {
  29395. labels[feature.properties[_this4.themeInfo.identifyField]] = feature.properties[_this4.themeInfo.field];
  29396. });
  29397. var newFeatures = _labelPoints.default.features.map(function (point) {
  29398. var properties = {};
  29399. properties[_this4.themeInfo.identifyField] = point.properties['省份'];
  29400. properties[_this4.themeInfo.field] = labels[point.properties['省份']];
  29401. point.properties = properties;
  29402. return point;
  29403. });
  29404. return {
  29405. type: 'FeatureCollection',
  29406. features: newFeatures
  29407. };
  29408. }
  29409. }, {
  29410. key: "_handleThemeInfo",
  29411. value: function _handleThemeInfo() {
  29412. var _this5 = this;
  29413. if (this.themeUrl) {
  29414. SuperMap.FetchRequest.get(this.themeUrl, null, {
  29415. withoutFormatSuffix: true,
  29416. proxy: this.proxyUrl
  29417. }).then(function (response) {
  29418. return response.json();
  29419. }).then(function (themeInfo) {
  29420. _this5.themeInfo = Object.assign({}, defaultThemeInfo, themeInfo);
  29421. _this5._addOverLayer();
  29422. }).catch(function (error) {
  29423. console.log(error);
  29424. _this5.fire('getthmeminfofailed', {
  29425. error: error
  29426. });
  29427. _this5.themeInfo = defaultThemeInfo;
  29428. _this5._addOverLayer();
  29429. });
  29430. } else {
  29431. this._sendMapToUser();
  29432. }
  29433. }
  29434. }, {
  29435. key: "_toFillColor",
  29436. value: function _toFillColor(_ref) {
  29437. var styleGroup = _ref.styleGroup,
  29438. field = _ref.field,
  29439. _ref$defaultColor = _ref.defaultColor,
  29440. defaultColor = _ref$defaultColor === void 0 ? '#f5f5f5' : _ref$defaultColor;
  29441. var fillColor = ['case'];
  29442. for (var index = styleGroup.length - 1; index >= 0; index--) {
  29443. var element = styleGroup[index];
  29444. var stop = ['>=', ['to-number', ['get', field], 0], element.start];
  29445. fillColor.push(stop);
  29446. fillColor.push(element.color);
  29447. }
  29448. fillColor.push(defaultColor);
  29449. return fillColor;
  29450. }
  29451. }, {
  29452. key: "_addOverLayer",
  29453. value: function _addOverLayer() {
  29454. if (!this.features) return;
  29455. var sourceData = {
  29456. type: 'FeatureCollection',
  29457. features: this.features
  29458. };
  29459. if (this.map.getSource(this.overLayerId)) {
  29460. var source = this.map.getSource(this.overLayerId);
  29461. source.setData(sourceData);
  29462. var labelData = this._creatNewLabelData();
  29463. this.map.setPaintProperty(this.overLayerId, 'fill-color', this._toFillColor(this.themeInfo));
  29464. this.map.setPaintProperty("".concat(this.overLayerId, "-strokeLine"), 'line-color', this.themeInfo.stroke['line-color']);
  29465. this.map.setPaintProperty("".concat(this.overLayerId, "-strokeLine"), 'line-width', this.themeInfo.stroke['line-width']);
  29466. this.map.setPaintProperty("".concat(this.overLayerId, "-strokeLine"), 'line-opacity', this.themeInfo.stroke['line-opacity']);
  29467. var sourceLabel = this.map.getSource("".concat(this.overLayerId, "-label"));
  29468. sourceLabel.setData(labelData);
  29469. if (this.map.getLayer("".concat(this.overLayerId, "-label"))) {
  29470. this.map.setLayoutProperty("".concat(this.overLayerId, "-label"), 'text-size', this.themeInfo.label['text-size']);
  29471. this.map.setPaintProperty("".concat(this.overLayerId, "-label"), 'text-color', this.themeInfo.label['text-color']);
  29472. this.map.setPaintProperty("".concat(this.overLayerId, "-label"), 'text-halo-color', this.themeInfo.label['text-halo-color']);
  29473. this.map.setPaintProperty("".concat(this.overLayerId, "-label"), 'text-halo-width', this.themeInfo.label['text-halo-width']);
  29474. }
  29475. this.map.setLayoutProperty("".concat(this.overLayerId, "-label"), 'text-field', ['case', ['>', ['to-number', ['get', this.themeInfo.field], 0], 0], ['concat', ['get', this.themeInfo.identifyField], ['get', this.themeInfo.field]], '']);
  29476. } else {
  29477. this.map.addSource(this.overLayerId, {
  29478. type: 'geojson',
  29479. data: sourceData
  29480. });
  29481. this.map.addLayer({
  29482. id: this.overLayerId,
  29483. type: 'fill',
  29484. source: this.overLayerId,
  29485. layout: {},
  29486. paint: {
  29487. 'fill-color': this._toFillColor(this.themeInfo)
  29488. }
  29489. });
  29490. this.map.addLayer({
  29491. id: "".concat(this.overLayerId, "-strokeLine"),
  29492. type: 'line',
  29493. source: this.overLayerId,
  29494. layout: {},
  29495. paint: this.themeInfo.stroke
  29496. });
  29497. var _labelData = this._creatNewLabelData() || {
  29498. type: 'FeatureCollection',
  29499. features: []
  29500. };
  29501. this.map.addSource("".concat(this.overLayerId, "-label"), {
  29502. type: 'geojson',
  29503. data: _labelData
  29504. });
  29505. this.map.addLayer({
  29506. id: "".concat(this.overLayerId, "-label"),
  29507. type: 'symbol',
  29508. source: "".concat(this.overLayerId, "-label"),
  29509. layout: {
  29510. 'text-field': ['case', ['>', ['to-number', ['get', this.themeInfo.field], 0], 0], ['concat', ['get', this.themeInfo.identifyField], ['get', this.themeInfo.field]], ''],
  29511. 'text-font': ['Microsoft YaHei Regular'],
  29512. 'text-size': this.themeInfo.label['text-size'],
  29513. 'text-allow-overlap': true,
  29514. 'text-letter-spacing': 0,
  29515. 'text-max-width': 0
  29516. },
  29517. paint: {
  29518. 'text-color': this.themeInfo.label['text-color'],
  29519. 'text-opacity': 1,
  29520. 'text-halo-color': this.themeInfo.label['text-halo-color'],
  29521. 'text-halo-width': this.themeInfo.label['text-halo-width']
  29522. }
  29523. });
  29524. this._initLegendInfo();
  29525. }
  29526. this._sendMapToUser();
  29527. }
  29528. }, {
  29529. key: "_sendMapToUser",
  29530. value: function _sendMapToUser() {
  29531. this._sourceListModel = new _SourceListModel.default({
  29532. map: this.map
  29533. });
  29534. if (this._legendInfo) {
  29535. this._sourceListModel.addSourceStyle(this.overLayerId, this._legendInfo);
  29536. }
  29537. this.fire('addlayerssucceeded', {
  29538. map: this.map
  29539. });
  29540. }
  29541. }, {
  29542. key: "_clearOverLayer",
  29543. value: function _clearOverLayer() {
  29544. if (this.map && this.map.getLayer(this.overLayerId)) {
  29545. this.map.getLayer(this.overLayerId) && this.map.removeLayer(this.overLayerId);
  29546. this.map.getLayer("".concat(this.overLayerId, "-strokeLine")) && this.map.removeLayer("".concat(this.overLayerId, "-strokeLine"));
  29547. this.map.getLayer("".concat(this.overLayerId, "-label")) && this.map.removeLayer("".concat(this.overLayerId, "-label"));
  29548. this.map.getSource(this.overLayerId) && this.map.removeSource(this.overLayerId);
  29549. this.map.getSource("".concat(this.overLayerId, "-label")) && this.map.removeSource("".concat(this.overLayerId, "-label"));
  29550. }
  29551. }
  29552. }, {
  29553. key: "_restTheme",
  29554. value: function _restTheme() {
  29555. if (this.map && this.map.getLayer(this.overLayerId)) {
  29556. this.themeInfo = defaultThemeInfo;
  29557. this._addOverLayer();
  29558. }
  29559. }
  29560. }, {
  29561. key: "_initLegendInfo",
  29562. value: function _initLegendInfo() {
  29563. this._legendInfo = {
  29564. layerType: 'RANGE',
  29565. featureType: 'POLYGON',
  29566. layerId: this.overLayerId,
  29567. themeField: this.themeInfo.field,
  29568. styleGroup: this.themeInfo.styleGroup,
  29569. integerType: true
  29570. };
  29571. }
  29572. }, {
  29573. key: "centerValid",
  29574. value: function centerValid(center) {
  29575. if (center && (center.length > 0 || (0, _typeof2.default)(center) === _mapboxGlEnhance.default.LngLat || center.lng)) {
  29576. return true;
  29577. }
  29578. return false;
  29579. }
  29580. }, {
  29581. key: "_getResizedZoom",
  29582. value: function _getResizedZoom(bounds, mapContainerStyle) {
  29583. var tileSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 512;
  29584. var worldWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : WORLD_WIDTH;
  29585. var width = mapContainerStyle.width,
  29586. height = mapContainerStyle.height;
  29587. var lngArcLength = Math.abs(bounds.getEast() - bounds.getWest());
  29588. var latArcLength = Math.abs(this._getBoundsRadian(bounds.getSouth()) - this._getBoundsRadian(bounds.getNorth()));
  29589. var lngResizeZoom = +Math.log2(worldWidth / (lngArcLength / parseInt(width) * tileSize)).toFixed(2);
  29590. var latResizeZoom = +Math.log2(worldWidth / (latArcLength / parseInt(height) * tileSize)).toFixed(2);
  29591. if (lngResizeZoom <= latResizeZoom) {
  29592. return lngResizeZoom;
  29593. }
  29594. return latResizeZoom;
  29595. }
  29596. }, {
  29597. key: "_getBoundsRadian",
  29598. value: function _getBoundsRadian(point) {
  29599. return 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + point * Math.PI / 360));
  29600. }
  29601. }, {
  29602. key: "resize",
  29603. value: function resize() {
  29604. var keepBounds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
  29605. this.map && this.map.resize();
  29606. var mapContainerStyle = window.getComputedStyle(document.getElementById(this.target));
  29607. if (keepBounds && this.map && this.bounds && mapContainerStyle) {
  29608. var zoom = this._getResizedZoom(this.bounds, mapContainerStyle);
  29609. if (zoom !== this.map.getZoom()) {
  29610. this.map && this.map.setZoom(zoom);
  29611. }
  29612. }
  29613. }
  29614. }, {
  29615. key: "setProxyUrl",
  29616. value: function setProxyUrl(proxyUrl) {
  29617. this.proxyUrl = proxyUrl;
  29618. this.map && this._handleLayerInfo();
  29619. }
  29620. }, {
  29621. key: "setCenter",
  29622. value: function setCenter(center) {
  29623. if (this.map && this.centerValid(center)) {
  29624. this.mapOptions.center = center;
  29625. this.map.setCenter(center);
  29626. }
  29627. }
  29628. }, {
  29629. key: "setZoom",
  29630. value: function setZoom(zoom) {
  29631. if (this.map) {
  29632. this.mapOptions.zoom = zoom;
  29633. (zoom || zoom === 0) && this.map.setZoom(zoom);
  29634. }
  29635. }
  29636. }, {
  29637. key: "setMaxBounds",
  29638. value: function setMaxBounds(maxBounds) {
  29639. if (this.map) {
  29640. this.mapOptions.maxBounds = maxBounds;
  29641. maxBounds && this.map.setMaxBounds(maxBounds);
  29642. }
  29643. }
  29644. }, {
  29645. key: "setBearing",
  29646. value: function setBearing(bearing) {
  29647. if (this.map) {
  29648. this.mapOptions.bearing = bearing;
  29649. (bearing || bearing === 0) && this.map.setBearing(bearing);
  29650. }
  29651. }
  29652. }, {
  29653. key: "setPitch",
  29654. value: function setPitch(pitch) {
  29655. if (this.map) {
  29656. this.mapOptions.pitch = pitch;
  29657. (pitch || pitch === 0) && this.map.setPitch(pitch);
  29658. }
  29659. }
  29660. }, {
  29661. key: "setRenderWorldCopies",
  29662. value: function setRenderWorldCopies(renderWorldCopies) {
  29663. if (this.map) {
  29664. this.mapOptions.renderWorldCopies = renderWorldCopies;
  29665. renderWorldCopies && this.map.setRenderWorldCopies(renderWorldCopies);
  29666. }
  29667. }
  29668. }, {
  29669. key: "setUrl",
  29670. value: function setUrl(url) {
  29671. if (this.map) {
  29672. this.dataUrl = url;
  29673. url ? this._handleLayerInfo() : this._clearOverLayer();
  29674. }
  29675. }
  29676. }, {
  29677. key: "setThemeUrl",
  29678. value: function setThemeUrl(url) {
  29679. if (this.map) {
  29680. this.themeUrl = url;
  29681. url ? this._handleThemeInfo() : this._restTheme();
  29682. }
  29683. }
  29684. }, {
  29685. key: "setName",
  29686. value: function setName(name) {
  29687. if (this.map) {
  29688. this._clearOverLayer();
  29689. this.overLayerId = name || this.defaultOverLayerId;
  29690. this._addOverLayer();
  29691. }
  29692. }
  29693. }, {
  29694. key: "getSourceListModel",
  29695. get: function get() {
  29696. return this._sourceListModel;
  29697. }
  29698. }]);
  29699. return NcpMapViewModel;
  29700. }(_mapboxGlEnhance.default.Evented);
  29701. exports.default = NcpMapViewModel;
  29702. /***/ }),
  29703. /***/ "62d8":
  29704. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  29705. "use strict";
  29706. __webpack_require__.r(__webpack_exports__);
  29707. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_UniqueThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("183d");
  29708. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_UniqueThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_UniqueThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  29709. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_UniqueThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_UniqueThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  29710. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_UniqueThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  29711. /***/ }),
  29712. /***/ "6375":
  29713. /***/ (function(module, exports, __webpack_require__) {
  29714. "use strict";
  29715. var _interopRequireDefault = __webpack_require__("8e6d");
  29716. Object.defineProperty(exports, "__esModule", {
  29717. value: true
  29718. });
  29719. exports.default = void 0;
  29720. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  29721. var _lang = __webpack_require__("4e21");
  29722. var AddressMatchParameter = function AddressMatchParameter(options) {
  29723. (0, _classCallCheck2.default)(this, AddressMatchParameter);
  29724. this.url = options.url;
  29725. this.name = options.name || (0, _lang.geti18n)().t('commontypes.addressMatch');
  29726. this.proxy = options.proxy;
  29727. };
  29728. exports.default = AddressMatchParameter;
  29729. /***/ }),
  29730. /***/ "63f3":
  29731. /***/ (function(module, exports, __webpack_require__) {
  29732. "use strict";
  29733. Object.defineProperty(exports, "__esModule", {
  29734. value: true
  29735. });
  29736. exports.ArrayExt = exports.FunctionExt = exports.NumberExt = exports.StringExt = void 0;
  29737. /* Copyright© 2000 - 2020 SuperMap Software Co.Ltd. All rights reserved.
  29738. * This program are made available under the terms of the Apache License, Version 2.0
  29739. * which accompanies this distribution and is available at http://www.apache.org/licenses/LICENSE-2.0.html. */
  29740. var StringExt = {
  29741. startsWith: function startsWith(str, sub) {
  29742. return str.indexOf(sub) === 0;
  29743. },
  29744. contains: function contains(str, sub) {
  29745. return str.indexOf(sub) !== -1;
  29746. },
  29747. trim: function trim(str) {
  29748. return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
  29749. },
  29750. camelize: function camelize(str) {
  29751. var oStringList = str.split('-');
  29752. var camelizedString = oStringList[0];
  29753. for (var i = 1, len = oStringList.length; i < len; i++) {
  29754. var s = oStringList[i];
  29755. camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
  29756. }
  29757. return camelizedString;
  29758. },
  29759. format: function format(template, context, args) {
  29760. if (!context) {
  29761. context = window;
  29762. } // Example matching:
  29763. // str = ${foo.bar}
  29764. // match = foo.bar
  29765. var replacer = function replacer(str, match) {
  29766. var replacement; // Loop through all subs. Example: ${a.b.c}
  29767. // 0 -> replacement = context[a];
  29768. // 1 -> replacement = context[a][b];
  29769. // 2 -> replacement = context[a][b][c];
  29770. var subs = match.split(/\.+/);
  29771. for (var i = 0; i < subs.length; i++) {
  29772. if (i === 0) {
  29773. replacement = context;
  29774. }
  29775. replacement = replacement[subs[i]];
  29776. }
  29777. if (typeof replacement === 'function') {
  29778. replacement = args ? replacement.apply(null, args) : replacement();
  29779. } // If replacement is undefined, return the string 'undefined'.
  29780. // This is a workaround for a bugs in browsers not properly
  29781. // dealing with non-participating groups in regular expressions:
  29782. // http://blog.stevenlevithan.com/archives/npcg-javascript
  29783. if (typeof replacement === 'undefined') {
  29784. return 'undefined';
  29785. } else {
  29786. return replacement;
  29787. }
  29788. };
  29789. return template.replace(String.tokenRegEx, replacer);
  29790. },
  29791. /**
  29792. * @member {RegExp} [String.tokenRegEx]
  29793. * @description 寻找带 token 的字符串,默认为 tokenRegEx=/\$\{([\w.]+?)\}/g。
  29794. * @example
  29795. * Examples: ${a}, ${a.b.c}, ${a-b}, ${5}
  29796. */
  29797. tokenRegEx: /\$\{([\w.]+?)\}/g,
  29798. /**
  29799. * @member {RegExp} [String.numberRegEx]
  29800. * @description 判断一个字符串是否只包含一个数值,默认为 numberRegEx=/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/。
  29801. */
  29802. numberRegEx: /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/,
  29803. /**
  29804. * @function String.isNumeric
  29805. * @description 判断一个字符串是否只包含一个数值。
  29806. * @example
  29807. * (code)
  29808. * String.isNumeric("6.02e23") // true
  29809. * String.isNumeric("12 dozen") // false
  29810. * String.isNumeric("4") // true
  29811. * String.isNumeric(" 4 ") // false
  29812. * (end)
  29813. * @returns {boolean} 字符串包含唯一的数值,返回 true;否则返回 false。
  29814. */
  29815. isNumeric: function isNumeric(value) {
  29816. return String.numberRegEx.test(value);
  29817. },
  29818. /**
  29819. * @function String.numericIf
  29820. * @description 把一个看似数值型的字符串转化为一个数值。
  29821. * @returns {(number|string)} 如果能转换为数值则返回数值,否则返回字符串本身。
  29822. */
  29823. numericIf: function numericIf(value) {
  29824. return String.isNumeric(value) ? parseFloat(value) : value;
  29825. }
  29826. };
  29827. /**
  29828. * @name Number
  29829. * @namespace
  29830. * @category BaseTypes Util
  29831. * @description 数值操作的一系列常用扩展函数。
  29832. */
  29833. exports.StringExt = StringExt;
  29834. var NumberExt = {
  29835. decimalSeparator: '.',
  29836. thousandsSeparator: ',',
  29837. limitSigDigs: function limitSigDigs(num, sig) {
  29838. var fig = 0;
  29839. if (sig > 0) {
  29840. fig = parseFloat(num.toPrecision(sig));
  29841. }
  29842. return fig;
  29843. },
  29844. format: function format(num, dec, tsep, dsep) {
  29845. dec = typeof dec !== 'undefined' ? dec : 0;
  29846. tsep = typeof tsep !== 'undefined' ? tsep : Number.thousandsSeparator;
  29847. dsep = typeof dsep !== 'undefined' ? dsep : Number.decimalSeparator;
  29848. if (dec != null) {
  29849. num = parseFloat(num.toFixed(dec));
  29850. }
  29851. var parts = num.toString().split('.');
  29852. if (parts.length === 1 && dec == null) {
  29853. // integer where we do not want to touch the decimals
  29854. dec = 0;
  29855. }
  29856. var integer = parts[0];
  29857. if (tsep) {
  29858. var thousands = /(-?[0-9]+)([0-9]{3})/;
  29859. while (thousands.test(integer)) {
  29860. integer = integer.replace(thousands, '$1' + tsep + '$2');
  29861. }
  29862. }
  29863. var str;
  29864. if (dec === 0) {
  29865. str = integer;
  29866. } else {
  29867. var rem = parts.length > 1 ? parts[1] : '0';
  29868. if (dec != null) {
  29869. rem = rem + new Array(dec - rem.length + 1).join('0');
  29870. }
  29871. str = integer + dsep + rem;
  29872. }
  29873. return str;
  29874. }
  29875. }; // if (!NumberExt.prototype.limitSigDigs) {
  29876. // /**
  29877. // * APIMethod: Number.limitSigDigs
  29878. // * 限制浮点数的有效数字位数.
  29879. // * @param {integer} sig -有效位数。
  29880. // * @returns {integer} 将数字四舍五入到指定数量的有效位数。
  29881. // * 如果传入值 为 null、0、或者是负数, 返回值 0。
  29882. // */
  29883. // NumberExt.prototype.limitSigDigs = function (sig) {
  29884. // return NumberExt.limitSigDigs(this, sig);
  29885. // };
  29886. // }
  29887. exports.NumberExt = NumberExt;
  29888. var FunctionExt = {
  29889. bind: function bind(func, object) {
  29890. // create a reference to all arguments past the second one
  29891. var args = Array.prototype.slice.apply(arguments, [2]);
  29892. return function () {
  29893. // Push on any additional arguments from the actual function call.
  29894. // These will come after those sent to the bind call.
  29895. var newArgs = args.concat(Array.prototype.slice.apply(arguments, [0]));
  29896. return func.apply(object, newArgs);
  29897. };
  29898. },
  29899. bindAsEventListener: function bindAsEventListener(func, object) {
  29900. return function (event) {
  29901. return func.call(object, event || window.event);
  29902. };
  29903. },
  29904. False: function False() {
  29905. return false;
  29906. },
  29907. True: function True() {
  29908. return true;
  29909. },
  29910. Void: function Void() {}
  29911. };
  29912. exports.FunctionExt = FunctionExt;
  29913. var ArrayExt = {
  29914. /**
  29915. * @function Array.filter
  29916. * @description 过滤数组,提供了 ECMA-262 标准中 Array.prototype.filter 函数的扩展。详见:{@link http://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array/filter}
  29917. * @param {Array} array - 要过滤的数组。
  29918. * @param {function} callback - 数组中的每一个元素调用该函数。</br>
  29919. * 如果函数的返回值为 true,该元素将包含在返回的数组中。该函数有三个参数: 数组中的元素,元素的索引,数组自身。</br>
  29920. * 如果设置了可选参数 caller,在调用 callback 时,使用可选参数 caller 设置为 callback 的参数。</br>
  29921. * @param {Object} [caller] - 在调用 callback 时,使用参数 caller 设置为 callback 的参数。
  29922. * @returns {Array} callback 函数返回 true 时的元素将作为返回数组中的元素。
  29923. */
  29924. filter: function filter(array, callback, caller) {
  29925. var selected = [];
  29926. if (Array.prototype.filter) {
  29927. selected = array.filter(callback, caller);
  29928. } else {
  29929. var len = array.length;
  29930. if (typeof callback !== 'function') {
  29931. throw new TypeError();
  29932. }
  29933. for (var i = 0; i < len; i++) {
  29934. if (i in array) {
  29935. var val = array[i];
  29936. if (callback.call(caller, val, i, array)) {
  29937. selected.push(val);
  29938. }
  29939. }
  29940. }
  29941. }
  29942. return selected;
  29943. }
  29944. };
  29945. exports.ArrayExt = ArrayExt;
  29946. /***/ }),
  29947. /***/ "655b":
  29948. /***/ (function(module, exports, __webpack_require__) {
  29949. "use strict";
  29950. var utils = __webpack_require__("d691");
  29951. // Headers whose duplicates are ignored by node
  29952. // c.f. https://nodejs.org/api/http.html#http_message_headers
  29953. var ignoreDuplicateOf = [
  29954. 'age', 'authorization', 'content-length', 'content-type', 'etag',
  29955. 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
  29956. 'last-modified', 'location', 'max-forwards', 'proxy-authorization',
  29957. 'referer', 'retry-after', 'user-agent'
  29958. ];
  29959. /**
  29960. * Parse headers into an object
  29961. *
  29962. * ```
  29963. * Date: Wed, 27 Aug 2014 08:58:49 GMT
  29964. * Content-Type: application/json
  29965. * Connection: keep-alive
  29966. * Transfer-Encoding: chunked
  29967. * ```
  29968. *
  29969. * @param {String} headers Headers needing to be parsed
  29970. * @returns {Object} Headers parsed into an object
  29971. */
  29972. module.exports = function parseHeaders(headers) {
  29973. var parsed = {};
  29974. var key;
  29975. var val;
  29976. var i;
  29977. if (!headers) { return parsed; }
  29978. utils.forEach(headers.split('\n'), function parser(line) {
  29979. i = line.indexOf(':');
  29980. key = utils.trim(line.substr(0, i)).toLowerCase();
  29981. val = utils.trim(line.substr(i + 1));
  29982. if (key) {
  29983. if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
  29984. return;
  29985. }
  29986. if (key === 'set-cookie') {
  29987. parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);
  29988. } else {
  29989. parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
  29990. }
  29991. }
  29992. });
  29993. return parsed;
  29994. };
  29995. /***/ }),
  29996. /***/ "65db":
  29997. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  29998. "use strict";
  29999. __webpack_require__.r(__webpack_exports__);
  30000. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Card_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("b757");
  30001. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Card_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Card_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  30002. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Card_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Card_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  30003. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Card_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  30004. /***/ }),
  30005. /***/ "6608":
  30006. /***/ (function(module, exports, __webpack_require__) {
  30007. "use strict";
  30008. var _interopRequireDefault = __webpack_require__("8e6d");
  30009. Object.defineProperty(exports, "__esModule", {
  30010. value: true
  30011. });
  30012. exports.default = void 0;
  30013. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  30014. var _Pagination = _interopRequireDefault(__webpack_require__("4dd8"));
  30015. //
  30016. //
  30017. //
  30018. //
  30019. //
  30020. //
  30021. //
  30022. //
  30023. //
  30024. //
  30025. //
  30026. //
  30027. //
  30028. //
  30029. //
  30030. //
  30031. //
  30032. //
  30033. //
  30034. //
  30035. //
  30036. //
  30037. //
  30038. //
  30039. //
  30040. //
  30041. //
  30042. //
  30043. //
  30044. //
  30045. //
  30046. //
  30047. //
  30048. //
  30049. //
  30050. //
  30051. //
  30052. //
  30053. //
  30054. //
  30055. //
  30056. //
  30057. //
  30058. //
  30059. //
  30060. //
  30061. //
  30062. //
  30063. //
  30064. //
  30065. //
  30066. //
  30067. var _default = {
  30068. name: 'RouteResult',
  30069. components: {
  30070. Pagination: _Pagination.default
  30071. },
  30072. mixins: [_theme.default],
  30073. props: {
  30074. keyWord: {
  30075. type: String
  30076. },
  30077. from: {
  30078. type: String,
  30079. default: 'Search' // Search Route
  30080. },
  30081. resultBelongTo: {
  30082. type: String
  30083. },
  30084. data: {
  30085. type: Array
  30086. },
  30087. count: {
  30088. type: Number,
  30089. default: 0
  30090. },
  30091. pageSize: {
  30092. type: Number,
  30093. default: 10
  30094. },
  30095. prompt: {
  30096. type: Object
  30097. },
  30098. openPurePoiSearch: {
  30099. // 是否开启纯POI搜索
  30100. type: Boolean,
  30101. default: false
  30102. },
  30103. specifyAdminSearch: {
  30104. // 是否指定行政区查询
  30105. type: Boolean,
  30106. default: false
  30107. },
  30108. mapBound: {
  30109. type: String,
  30110. default: ''
  30111. }
  30112. },
  30113. data: function data() {
  30114. return {
  30115. pageNo: 1
  30116. };
  30117. },
  30118. methods: {
  30119. resetStartPoint: function resetStartPoint(data) {
  30120. this.$emit('reset-start-point', data);
  30121. },
  30122. resetEndPoint: function resetEndPoint(data) {
  30123. this.$emit('reset-end-point', data);
  30124. },
  30125. addPointToMap: function addPointToMap(info, index) {
  30126. if (this.from === 'Search') {
  30127. var center = info.lonlat.split(' ');
  30128. this.$emit('show-point-popup', {
  30129. coordinates: [+center[0], +center[1]],
  30130. data: info
  30131. });
  30132. }
  30133. },
  30134. toggleBuoyActive: function toggleBuoyActive(e, info) {
  30135. var type = e.type,
  30136. target = e.target;
  30137. var parent = target;
  30138. var buoy = parent.querySelector('.buoy-icon');
  30139. var resetPointDom = parent.querySelector('.set-start-point');
  30140. if (type === 'mouseenter') {
  30141. target.style.background = this.getBackground;
  30142. resetPointDom && (resetPointDom.style.display = 'block');
  30143. buoy && buoy.classList.add('buoy-icon-active');
  30144. this.setHighlightIcon(info.hotPointID);
  30145. } else {
  30146. target.style.background = 'inherit';
  30147. resetPointDom && (resetPointDom.style.display = 'none');
  30148. buoy && buoy.classList.remove('buoy-icon-active');
  30149. this.setHighlightIcon();
  30150. }
  30151. },
  30152. setHighlightIcon: function setHighlightIcon(hotPointID) {
  30153. this.$emit('set-highlight-icon', hotPointID || '');
  30154. },
  30155. searchPointsResult: function searchPointsResult(page, pageSize) {
  30156. var params = {
  30157. queryType: '1',
  30158. queryTerminal: 10000,
  30159. start: "".concat((page - 1) * pageSize),
  30160. count: "".concat(pageSize),
  30161. mapBound: this.mapBound
  30162. };
  30163. if (this.openPurePoiSearch) {
  30164. params.queryType = '7';
  30165. }
  30166. if (this.specifyAdminSearch) {
  30167. params.specifyAdminCode = this.prompt.adminCode;
  30168. }
  30169. this.$emit('change-pagination', this.keyWord, params, this.openPurePoiSearch);
  30170. },
  30171. pagiantionChange: function pagiantionChange(_ref) {
  30172. var page = _ref.page,
  30173. pageSize = _ref.pageSize;
  30174. this.pageNo = page;
  30175. this.searchPointsResult(page, pageSize);
  30176. }
  30177. }
  30178. };
  30179. exports.default = _default;
  30180. /***/ }),
  30181. /***/ "66f6":
  30182. /***/ (function(module, exports) {
  30183. function _defineProperties(target, props) {
  30184. for (var i = 0; i < props.length; i++) {
  30185. var descriptor = props[i];
  30186. descriptor.enumerable = descriptor.enumerable || false;
  30187. descriptor.configurable = true;
  30188. if ("value" in descriptor) descriptor.writable = true;
  30189. Object.defineProperty(target, descriptor.key, descriptor);
  30190. }
  30191. }
  30192. function _createClass(Constructor, protoProps, staticProps) {
  30193. if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  30194. if (staticProps) _defineProperties(Constructor, staticProps);
  30195. return Constructor;
  30196. }
  30197. module.exports = _createClass;
  30198. /***/ }),
  30199. /***/ "6704":
  30200. /***/ (function(module, exports, __webpack_require__) {
  30201. var Symbol = __webpack_require__("80e6"),
  30202. getRawTag = __webpack_require__("8330"),
  30203. objectToString = __webpack_require__("089f");
  30204. /** `Object#toString` result references. */
  30205. var nullTag = '[object Null]',
  30206. undefinedTag = '[object Undefined]';
  30207. /** Built-in value references. */
  30208. var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
  30209. /**
  30210. * The base implementation of `getTag` without fallbacks for buggy environments.
  30211. *
  30212. * @private
  30213. * @param {*} value The value to query.
  30214. * @returns {string} Returns the `toStringTag`.
  30215. */
  30216. function baseGetTag(value) {
  30217. if (value == null) {
  30218. return value === undefined ? undefinedTag : nullTag;
  30219. }
  30220. return (symToStringTag && symToStringTag in Object(value))
  30221. ? getRawTag(value)
  30222. : objectToString(value);
  30223. }
  30224. module.exports = baseGetTag;
  30225. /***/ }),
  30226. /***/ "67c2":
  30227. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  30228. "use strict";
  30229. __webpack_require__.r(__webpack_exports__);
  30230. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_DataFlowLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("cfa2");
  30231. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_DataFlowLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_DataFlowLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  30232. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_DataFlowLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_DataFlowLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  30233. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_DataFlowLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  30234. /***/ }),
  30235. /***/ "698d":
  30236. /***/ (function(module, exports) {
  30237. var g;
  30238. // This works in non-strict mode
  30239. g = (function() {
  30240. return this;
  30241. })();
  30242. try {
  30243. // This works if eval is allowed (see CSP)
  30244. g = g || new Function("return this")();
  30245. } catch (e) {
  30246. // This works if the window reference is available
  30247. if (typeof window === "object") g = window;
  30248. }
  30249. // g can still be undefined, but nothing to do about it...
  30250. // We return undefined, instead of nothing here, so it's
  30251. // easier to handle this case. if(!global) { ...}
  30252. module.exports = g;
  30253. /***/ }),
  30254. /***/ "69e7":
  30255. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  30256. "use strict";
  30257. __webpack_require__.r(__webpack_exports__);
  30258. /* harmony import */ var _NcpMap_vue_vue_type_template_id_3a6968da___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("6ac7");
  30259. /* harmony import */ var _NcpMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("26ce");
  30260. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _NcpMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _NcpMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  30261. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  30262. /* normalize component */
  30263. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  30264. _NcpMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__["default"],
  30265. _NcpMap_vue_vue_type_template_id_3a6968da___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  30266. _NcpMap_vue_vue_type_template_id_3a6968da___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  30267. false,
  30268. null,
  30269. null,
  30270. null
  30271. )
  30272. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  30273. /***/ }),
  30274. /***/ "6a7a":
  30275. /***/ (function(module, exports, __webpack_require__) {
  30276. "use strict";
  30277. var _interopRequireDefault = __webpack_require__("8e6d");
  30278. Object.defineProperty(exports, "__esModule", {
  30279. value: true
  30280. });
  30281. exports.default = void 0;
  30282. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  30283. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  30284. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  30285. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  30286. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  30287. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  30288. /**
  30289. * @class ZoomViewModel
  30290. * @description zoom viewModel(缩放控件vm层).
  30291. * @param {Object} map - 地图对象。
  30292. * @fires ZoomViewModel#mouseWheel
  30293. * @extends mapboxgl.Evented
  30294. */
  30295. var ZoomViewModel =
  30296. /*#__PURE__*/
  30297. function (_mapboxgl$Evented) {
  30298. (0, _inherits2.default)(ZoomViewModel, _mapboxgl$Evented);
  30299. function ZoomViewModel() {
  30300. (0, _classCallCheck2.default)(this, ZoomViewModel);
  30301. return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(ZoomViewModel).apply(this, arguments));
  30302. }
  30303. (0, _createClass2.default)(ZoomViewModel, [{
  30304. key: "setMap",
  30305. value: function setMap(mapInfo) {
  30306. var map = mapInfo.map;
  30307. this.map = map || null;
  30308. this._initVM();
  30309. }
  30310. /**
  30311. * @function ZoomViewModel.prototype._initVM
  30312. * @description 初始化vm, 绑定mouseWheel事件
  30313. * @private
  30314. */
  30315. }, {
  30316. key: "_initVM",
  30317. value: function _initVM() {
  30318. var _this = this;
  30319. this.map.on('wheel', function (e) {
  30320. // 触发滚轮事件
  30321. _this._wheelEventFires(e);
  30322. });
  30323. }
  30324. /**
  30325. * @function ZoomViewModel.prototype.zoomIn
  30326. * @description 放大地图。
  30327. */
  30328. }, {
  30329. key: "zoomIn",
  30330. value: function zoomIn() {
  30331. this.map.zoomIn();
  30332. }
  30333. /**
  30334. * @function ZoomViewModel.prototype.zoomOut
  30335. * @description 缩小。
  30336. */
  30337. }, {
  30338. key: "zoomOut",
  30339. value: function zoomOut() {
  30340. this.map.zoomOut();
  30341. }
  30342. /**
  30343. * @function ZoomViewModel.prototype.getMaxZoom
  30344. * @description 获取地图的最大缩放级别。
  30345. */
  30346. }, {
  30347. key: "getMaxZoom",
  30348. value: function getMaxZoom() {
  30349. return this.map.getMaxZoom();
  30350. }
  30351. /**
  30352. * @function ZoomViewModel.prototype.getMinZoom
  30353. * @description 获取地图的最小缩放级别。
  30354. */
  30355. }, {
  30356. key: "getMinZoom",
  30357. value: function getMinZoom() {
  30358. return this.map.getMinZoom();
  30359. }
  30360. /**
  30361. * @function ZoomViewModel.prototype.getZoom
  30362. * @description 获取地图当前的缩放级别。
  30363. */
  30364. }, {
  30365. key: "getZoom",
  30366. value: function getZoom() {
  30367. return this.map.getZoom();
  30368. }
  30369. /**
  30370. * @function ZoomViewModel.prototype._getDatasetInfoSuccess
  30371. * @description 设置地图的缩放级别。
  30372. * @param {Number} zoom - 缩放级别
  30373. */
  30374. }, {
  30375. key: "setZoom",
  30376. value: function setZoom(zoom) {
  30377. this.map.setZoom(zoom);
  30378. }
  30379. /**
  30380. * @function ZoomViewModel.prototype._getDatasetInfoSuccess
  30381. * @description 滚轮事件监听后回调函数fn。
  30382. * @param {Funciton} fn - 回调函数
  30383. */
  30384. }, {
  30385. key: "wheelEventOn",
  30386. value: function wheelEventOn(fn) {
  30387. // 监听vm的滚轮事件,回调函数
  30388. this.on('mouseWheel', function (e) {
  30389. // 滚轮事件的回调fn()
  30390. fn();
  30391. });
  30392. }
  30393. /**
  30394. * @function ZoomViewModel.prototype._wheelEventFires
  30395. * @description 触发vm的mouseWheel事件。
  30396. * @private
  30397. * @param {Object} e - 地图对象
  30398. */
  30399. }, {
  30400. key: "_wheelEventFires",
  30401. value: function _wheelEventFires(e) {
  30402. /**
  30403. * @event ZoomViewModel#mouseWheel
  30404. * @description 鼠标滚轮事件触发。
  30405. * @property {Object} result - 返回的数据。
  30406. */
  30407. // this的指向是viewModel
  30408. this.fire('mouseWheel', {
  30409. result: e
  30410. });
  30411. }
  30412. }, {
  30413. key: "removed",
  30414. value: function removed() {}
  30415. }]);
  30416. return ZoomViewModel;
  30417. }(_mapboxGlEnhance.default.Evented);
  30418. exports.default = ZoomViewModel;
  30419. /***/ }),
  30420. /***/ "6ac7":
  30421. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  30422. "use strict";
  30423. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/ncp-map/NcpMap.vue?vue&type=template&id=3a6968da&
  30424. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-ncp-map",attrs:{"id":_vm.target}},[_vm._t("default"),_vm._v(" "),(_vm.spinning)?_c('a-spin',{attrs:{"size":"large","tip":_vm.$t('webmap.loadingTip'),"spinning":_vm.spinning}}):_vm._e()],2)}
  30425. var staticRenderFns = []
  30426. // CONCATENATED MODULE: ./src/mapboxgl/ncp-map/NcpMap.vue?vue&type=template&id=3a6968da&
  30427. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  30428. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  30429. /***/ }),
  30430. /***/ "6b51":
  30431. /***/ (function(module, exports, __webpack_require__) {
  30432. var setPrototypeOf = __webpack_require__("e1d3");
  30433. function _inherits(subClass, superClass) {
  30434. if (typeof superClass !== "function" && superClass !== null) {
  30435. throw new TypeError("Super expression must either be null or a function");
  30436. }
  30437. subClass.prototype = Object.create(superClass && superClass.prototype, {
  30438. constructor: {
  30439. value: subClass,
  30440. writable: true,
  30441. configurable: true
  30442. }
  30443. });
  30444. if (superClass) setPrototypeOf(subClass, superClass);
  30445. }
  30446. module.exports = _inherits;
  30447. /***/ }),
  30448. /***/ "6b73":
  30449. /***/ (function(module, exports) {
  30450. /*
  30451. Based on rgbcolor.js by Stoyan Stefanov <sstoo@gmail.com>
  30452. http://www.phpied.com/rgb-color-parser-in-javascript/
  30453. */
  30454. module.exports = function(color_string) {
  30455. this.ok = false;
  30456. this.alpha = 1.0;
  30457. // strip any leading #
  30458. if (color_string.charAt(0) == '#') { // remove # if any
  30459. color_string = color_string.substr(1,6);
  30460. }
  30461. color_string = color_string.replace(/ /g,'');
  30462. color_string = color_string.toLowerCase();
  30463. // before getting into regexps, try simple matches
  30464. // and overwrite the input
  30465. var simple_colors = {
  30466. aliceblue: 'f0f8ff',
  30467. antiquewhite: 'faebd7',
  30468. aqua: '00ffff',
  30469. aquamarine: '7fffd4',
  30470. azure: 'f0ffff',
  30471. beige: 'f5f5dc',
  30472. bisque: 'ffe4c4',
  30473. black: '000000',
  30474. blanchedalmond: 'ffebcd',
  30475. blue: '0000ff',
  30476. blueviolet: '8a2be2',
  30477. brown: 'a52a2a',
  30478. burlywood: 'deb887',
  30479. cadetblue: '5f9ea0',
  30480. chartreuse: '7fff00',
  30481. chocolate: 'd2691e',
  30482. coral: 'ff7f50',
  30483. cornflowerblue: '6495ed',
  30484. cornsilk: 'fff8dc',
  30485. crimson: 'dc143c',
  30486. cyan: '00ffff',
  30487. darkblue: '00008b',
  30488. darkcyan: '008b8b',
  30489. darkgoldenrod: 'b8860b',
  30490. darkgray: 'a9a9a9',
  30491. darkgreen: '006400',
  30492. darkkhaki: 'bdb76b',
  30493. darkmagenta: '8b008b',
  30494. darkolivegreen: '556b2f',
  30495. darkorange: 'ff8c00',
  30496. darkorchid: '9932cc',
  30497. darkred: '8b0000',
  30498. darksalmon: 'e9967a',
  30499. darkseagreen: '8fbc8f',
  30500. darkslateblue: '483d8b',
  30501. darkslategray: '2f4f4f',
  30502. darkturquoise: '00ced1',
  30503. darkviolet: '9400d3',
  30504. deeppink: 'ff1493',
  30505. deepskyblue: '00bfff',
  30506. dimgray: '696969',
  30507. dodgerblue: '1e90ff',
  30508. feldspar: 'd19275',
  30509. firebrick: 'b22222',
  30510. floralwhite: 'fffaf0',
  30511. forestgreen: '228b22',
  30512. fuchsia: 'ff00ff',
  30513. gainsboro: 'dcdcdc',
  30514. ghostwhite: 'f8f8ff',
  30515. gold: 'ffd700',
  30516. goldenrod: 'daa520',
  30517. gray: '808080',
  30518. green: '008000',
  30519. greenyellow: 'adff2f',
  30520. honeydew: 'f0fff0',
  30521. hotpink: 'ff69b4',
  30522. indianred : 'cd5c5c',
  30523. indigo : '4b0082',
  30524. ivory: 'fffff0',
  30525. khaki: 'f0e68c',
  30526. lavender: 'e6e6fa',
  30527. lavenderblush: 'fff0f5',
  30528. lawngreen: '7cfc00',
  30529. lemonchiffon: 'fffacd',
  30530. lightblue: 'add8e6',
  30531. lightcoral: 'f08080',
  30532. lightcyan: 'e0ffff',
  30533. lightgoldenrodyellow: 'fafad2',
  30534. lightgrey: 'd3d3d3',
  30535. lightgreen: '90ee90',
  30536. lightpink: 'ffb6c1',
  30537. lightsalmon: 'ffa07a',
  30538. lightseagreen: '20b2aa',
  30539. lightskyblue: '87cefa',
  30540. lightslateblue: '8470ff',
  30541. lightslategray: '778899',
  30542. lightsteelblue: 'b0c4de',
  30543. lightyellow: 'ffffe0',
  30544. lime: '00ff00',
  30545. limegreen: '32cd32',
  30546. linen: 'faf0e6',
  30547. magenta: 'ff00ff',
  30548. maroon: '800000',
  30549. mediumaquamarine: '66cdaa',
  30550. mediumblue: '0000cd',
  30551. mediumorchid: 'ba55d3',
  30552. mediumpurple: '9370d8',
  30553. mediumseagreen: '3cb371',
  30554. mediumslateblue: '7b68ee',
  30555. mediumspringgreen: '00fa9a',
  30556. mediumturquoise: '48d1cc',
  30557. mediumvioletred: 'c71585',
  30558. midnightblue: '191970',
  30559. mintcream: 'f5fffa',
  30560. mistyrose: 'ffe4e1',
  30561. moccasin: 'ffe4b5',
  30562. navajowhite: 'ffdead',
  30563. navy: '000080',
  30564. oldlace: 'fdf5e6',
  30565. olive: '808000',
  30566. olivedrab: '6b8e23',
  30567. orange: 'ffa500',
  30568. orangered: 'ff4500',
  30569. orchid: 'da70d6',
  30570. palegoldenrod: 'eee8aa',
  30571. palegreen: '98fb98',
  30572. paleturquoise: 'afeeee',
  30573. palevioletred: 'd87093',
  30574. papayawhip: 'ffefd5',
  30575. peachpuff: 'ffdab9',
  30576. peru: 'cd853f',
  30577. pink: 'ffc0cb',
  30578. plum: 'dda0dd',
  30579. powderblue: 'b0e0e6',
  30580. purple: '800080',
  30581. rebeccapurple: '663399',
  30582. red: 'ff0000',
  30583. rosybrown: 'bc8f8f',
  30584. royalblue: '4169e1',
  30585. saddlebrown: '8b4513',
  30586. salmon: 'fa8072',
  30587. sandybrown: 'f4a460',
  30588. seagreen: '2e8b57',
  30589. seashell: 'fff5ee',
  30590. sienna: 'a0522d',
  30591. silver: 'c0c0c0',
  30592. skyblue: '87ceeb',
  30593. slateblue: '6a5acd',
  30594. slategray: '708090',
  30595. snow: 'fffafa',
  30596. springgreen: '00ff7f',
  30597. steelblue: '4682b4',
  30598. tan: 'd2b48c',
  30599. teal: '008080',
  30600. thistle: 'd8bfd8',
  30601. tomato: 'ff6347',
  30602. turquoise: '40e0d0',
  30603. violet: 'ee82ee',
  30604. violetred: 'd02090',
  30605. wheat: 'f5deb3',
  30606. white: 'ffffff',
  30607. whitesmoke: 'f5f5f5',
  30608. yellow: 'ffff00',
  30609. yellowgreen: '9acd32'
  30610. };
  30611. color_string = simple_colors[color_string] || color_string;
  30612. // emd of simple type-in colors
  30613. // array of color definition objects
  30614. var color_defs = [
  30615. {
  30616. re: /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*((?:\d?\.)?\d)\)$/,
  30617. example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],
  30618. process: function (bits){
  30619. return [
  30620. parseInt(bits[1]),
  30621. parseInt(bits[2]),
  30622. parseInt(bits[3]),
  30623. parseFloat(bits[4])
  30624. ];
  30625. }
  30626. },
  30627. {
  30628. re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
  30629. example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
  30630. process: function (bits){
  30631. return [
  30632. parseInt(bits[1]),
  30633. parseInt(bits[2]),
  30634. parseInt(bits[3])
  30635. ];
  30636. }
  30637. },
  30638. {
  30639. re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
  30640. example: ['#00ff00', '336699'],
  30641. process: function (bits){
  30642. return [
  30643. parseInt(bits[1], 16),
  30644. parseInt(bits[2], 16),
  30645. parseInt(bits[3], 16)
  30646. ];
  30647. }
  30648. },
  30649. {
  30650. re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
  30651. example: ['#fb0', 'f0f'],
  30652. process: function (bits){
  30653. return [
  30654. parseInt(bits[1] + bits[1], 16),
  30655. parseInt(bits[2] + bits[2], 16),
  30656. parseInt(bits[3] + bits[3], 16)
  30657. ];
  30658. }
  30659. }
  30660. ];
  30661. // search through the definitions to find a match
  30662. for (var i = 0; i < color_defs.length; i++) {
  30663. var re = color_defs[i].re;
  30664. var processor = color_defs[i].process;
  30665. var bits = re.exec(color_string);
  30666. if (bits) {
  30667. var channels = processor(bits);
  30668. this.r = channels[0];
  30669. this.g = channels[1];
  30670. this.b = channels[2];
  30671. if (channels.length > 3) {
  30672. this.alpha = channels[3];
  30673. }
  30674. this.ok = true;
  30675. }
  30676. }
  30677. // validate/cleanup values
  30678. this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
  30679. this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
  30680. this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
  30681. this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);
  30682. // some getters
  30683. this.toRGB = function () {
  30684. return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
  30685. }
  30686. this.toRGBA = function () {
  30687. return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';
  30688. }
  30689. this.toHex = function () {
  30690. var r = this.r.toString(16);
  30691. var g = this.g.toString(16);
  30692. var b = this.b.toString(16);
  30693. if (r.length == 1) r = '0' + r;
  30694. if (g.length == 1) g = '0' + g;
  30695. if (b.length == 1) b = '0' + b;
  30696. return '#' + r + g + b;
  30697. }
  30698. // help
  30699. this.getHelpXML = function () {
  30700. var examples = new Array();
  30701. // add regexps
  30702. for (var i = 0; i < color_defs.length; i++) {
  30703. var example = color_defs[i].example;
  30704. for (var j = 0; j < example.length; j++) {
  30705. examples[examples.length] = example[j];
  30706. }
  30707. }
  30708. // add type-in colors
  30709. for (var sc in simple_colors) {
  30710. examples[examples.length] = sc;
  30711. }
  30712. var xml = document.createElement('ul');
  30713. xml.setAttribute('id', 'rgbcolor-examples');
  30714. for (var i = 0; i < examples.length; i++) {
  30715. try {
  30716. var list_item = document.createElement('li');
  30717. var list_color = new RGBColor(examples[i]);
  30718. var example_div = document.createElement('div');
  30719. example_div.style.cssText =
  30720. 'margin: 3px; '
  30721. + 'border: 1px solid black; '
  30722. + 'background:' + list_color.toHex() + '; '
  30723. + 'color:' + list_color.toHex()
  30724. ;
  30725. example_div.appendChild(document.createTextNode('test'));
  30726. var list_item_value = document.createTextNode(
  30727. ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()
  30728. );
  30729. list_item.appendChild(example_div);
  30730. list_item.appendChild(list_item_value);
  30731. xml.appendChild(list_item);
  30732. } catch(e){}
  30733. }
  30734. return xml;
  30735. }
  30736. }
  30737. /***/ }),
  30738. /***/ "6b99":
  30739. /***/ (function(module, exports, __webpack_require__) {
  30740. "use strict";
  30741. var _interopRequireDefault = __webpack_require__("8e6d");
  30742. Object.defineProperty(exports, "__esModule", {
  30743. value: true
  30744. });
  30745. exports.default = void 0;
  30746. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  30747. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  30748. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  30749. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  30750. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  30751. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  30752. var _NcpMapViewModel = _interopRequireDefault(__webpack_require__("6255"));
  30753. var _mapEvent = _interopRequireDefault(__webpack_require__("d3e9"));
  30754. var _mapEvents = _interopRequireDefault(__webpack_require__("9f21"));
  30755. var _vmUpdater = _interopRequireDefault(__webpack_require__("3a49"));
  30756. var _vuePropertyDecorator = __webpack_require__("e22c");
  30757. var _resizeDetector = __webpack_require__("e0f2");
  30758. var _debounce = _interopRequireDefault(__webpack_require__("331f"));
  30759. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  30760. var c = arguments.length,
  30761. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  30762. d;
  30763. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  30764. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  30765. }
  30766. return c > 3 && r && Object.defineProperty(target, key, r), r;
  30767. };
  30768. var SmNcpMap =
  30769. /*#__PURE__*/
  30770. function (_Mixins) {
  30771. (0, _inherits2.default)(SmNcpMap, _Mixins);
  30772. function SmNcpMap() {
  30773. var _this;
  30774. (0, _classCallCheck2.default)(this, SmNcpMap);
  30775. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(SmNcpMap).apply(this, arguments));
  30776. _this.spinning = true;
  30777. _this.autoresize = true;
  30778. return _this;
  30779. }
  30780. (0, _createClass2.default)(SmNcpMap, [{
  30781. key: "mounted",
  30782. value: function mounted() {
  30783. this.initializeWebMap();
  30784. this.registerEvents();
  30785. }
  30786. }, {
  30787. key: "beforeDestroy",
  30788. value: function beforeDestroy() {
  30789. this.destory();
  30790. _mapEvent.default.$options.deleteMap(this.target);
  30791. _mapEvent.default.$options.deleteWebMap(this.target);
  30792. }
  30793. }, {
  30794. key: "load",
  30795. value: function load(value) {
  30796. return value;
  30797. }
  30798. }, {
  30799. key: "getLayerFailed",
  30800. value: function getLayerFailed(value) {
  30801. return value;
  30802. }
  30803. }, {
  30804. key: "getThemeFailed",
  30805. value: function getThemeFailed(value) {
  30806. return value;
  30807. }
  30808. }, {
  30809. key: "initializeWebMap",
  30810. value: function initializeWebMap() {
  30811. var _this2 = this;
  30812. this.viewModel = new _NcpMapViewModel.default(this.target, this.dataOptions, this.mapOptions);
  30813. if (this.autoresize) {
  30814. this.__resizeHandler = (0, _debounce.default)(function () {
  30815. _this2.resize();
  30816. }, 100, {
  30817. leading: true
  30818. });
  30819. (0, _resizeDetector.addListener)(this.$el, this.__resizeHandler);
  30820. }
  30821. }
  30822. }, {
  30823. key: "resize",
  30824. value: function resize() {
  30825. if (this.viewModel && this.viewModel.resize) {
  30826. this.viewModel.resize(this.keepBounds);
  30827. }
  30828. }
  30829. }, {
  30830. key: "registerEvents",
  30831. value: function registerEvents() {
  30832. var _this3 = this;
  30833. this.viewModel.on('addlayerssucceeded', function (e) {
  30834. _this3.spinning = false;
  30835. _mapEvent.default.$options.setMap(_this3.target, e.map);
  30836. _this3.viewModel && _mapEvent.default.$options.setWebMap(_this3.target, _this3.viewModel);
  30837. _mapEvent.default.$emit('load-map', e.map, _this3.target);
  30838. e.map.resize();
  30839. _this3.map = e.map;
  30840. _this3.bindMapEvents();
  30841. _this3.load({
  30842. map: e.map
  30843. });
  30844. });
  30845. this.viewModel.on('getlayerinfofailed', function (e) {
  30846. _this3.getLayerFailed({
  30847. error: e.error
  30848. });
  30849. _this3.$message.error(_this3.$t('webmap.getLayerInfoFailed'));
  30850. _this3.spinning = false;
  30851. });
  30852. this.viewModel.on('getthmeminfofailed', function (e) {
  30853. _this3.getThemeFailed({
  30854. error: e.error
  30855. });
  30856. _this3.$message.warning(_this3.$t('webmap.getLayerInfoFailed'));
  30857. _this3.spinning = false;
  30858. });
  30859. }
  30860. }, {
  30861. key: "destory",
  30862. value: function destory() {
  30863. if (this.autoresize) {
  30864. (0, _resizeDetector.removeListener)(this.$el, this.__resizeHandler);
  30865. }
  30866. }
  30867. }, {
  30868. key: "getMapTarget",
  30869. get: function get() {
  30870. return this.target;
  30871. }
  30872. }]);
  30873. return SmNcpMap;
  30874. }((0, _vuePropertyDecorator.Mixins)(_vmUpdater.default, _mapEvents.default));
  30875. __decorate([(0, _vuePropertyDecorator.Provide)()], SmNcpMap.prototype, "__resizeHandler", void 0);
  30876. __decorate([(0, _vuePropertyDecorator.Prop)({
  30877. default: 'map'
  30878. })], SmNcpMap.prototype, "target", void 0);
  30879. __decorate([(0, _vuePropertyDecorator.Prop)()], SmNcpMap.prototype, "mapOptions", void 0);
  30880. __decorate([(0, _vuePropertyDecorator.Prop)()], SmNcpMap.prototype, "dataOptions", void 0);
  30881. __decorate([(0, _vuePropertyDecorator.Prop)({
  30882. default: false
  30883. })], SmNcpMap.prototype, "keepBounds", void 0);
  30884. __decorate([(0, _vuePropertyDecorator.Emit)()], SmNcpMap.prototype, "load", null);
  30885. __decorate([(0, _vuePropertyDecorator.Emit)()], SmNcpMap.prototype, "getLayerFailed", null);
  30886. __decorate([(0, _vuePropertyDecorator.Emit)()], SmNcpMap.prototype, "getThemeFailed", null);
  30887. SmNcpMap = __decorate([(0, _vuePropertyDecorator.Component)({
  30888. name: 'SmNcpMap',
  30889. viewModelProps: ['mapOptions.center', 'mapOptions.zoom', 'mapOptions.maxBounds', 'mapOptions.renderWorldCopies', 'mapOptions.bearing', 'mapOptions.pitch', 'dataOptions.url', 'dataOptions.themeUrl', 'dataOptions.name', 'dataOptions.proxyUrl']
  30890. })], SmNcpMap);
  30891. var _default = SmNcpMap;
  30892. exports.default = _default;
  30893. /***/ }),
  30894. /***/ "6d09":
  30895. /***/ (function(module, exports) {
  30896. module.exports = __WEBPACK_EXTERNAL_MODULE__6d09__;
  30897. /***/ }),
  30898. /***/ "6e0d":
  30899. /***/ (function(module, exports, __webpack_require__) {
  30900. "use strict";
  30901. var _interopRequireDefault = __webpack_require__("8e6d");
  30902. Object.defineProperty(exports, "__esModule", {
  30903. value: true
  30904. });
  30905. exports.default = getFeatures;
  30906. var _iServerRestService = _interopRequireDefault(__webpack_require__("e340"));
  30907. var _iPortalDataService = _interopRequireDefault(__webpack_require__("9d60"));
  30908. var _RestService = _interopRequireDefault(__webpack_require__("5bf3"));
  30909. function getFeatures(dataset) {
  30910. var superMapService;
  30911. var params = [];
  30912. var promise = new Promise(function (resolve, reject) {
  30913. var url = dataset.url,
  30914. type = dataset.type,
  30915. geoJSON = dataset.geoJSON,
  30916. maxFeatures = dataset.maxFeatures,
  30917. attributeFilter = dataset.attributeFilter,
  30918. dataName = dataset.dataName,
  30919. layerName = dataset.layerName,
  30920. withCredentials = dataset.withCredentials,
  30921. preferContent = dataset.preferContent,
  30922. epsgCode = dataset.epsgCode;
  30923. if (dataset && (url || geoJSON) && type) {
  30924. var queryInfo = {
  30925. maxFeatures: maxFeatures,
  30926. attributeFilter: attributeFilter
  30927. };
  30928. if (type === 'iServer') {
  30929. var datasetInfo;
  30930. var options = {};
  30931. if (dataset.proxy) {
  30932. options.proxy = dataset.proxy;
  30933. }
  30934. epsgCode && (options.epsgCode = epsgCode);
  30935. superMapService = new _iServerRestService.default(dataset.url, options);
  30936. if (dataName) {
  30937. var arr = dataName[0].split(':');
  30938. datasetInfo = {
  30939. datasetName: arr[1],
  30940. dataSourceName: arr[0],
  30941. dataUrl: url
  30942. };
  30943. } else {
  30944. datasetInfo = {
  30945. mapName: layerName,
  30946. dataUrl: url
  30947. };
  30948. }
  30949. params = [datasetInfo, queryInfo];
  30950. } else if (type === 'iPortal') {
  30951. queryInfo.withCredentials = withCredentials;
  30952. superMapService = new _iPortalDataService.default(url, withCredentials, {
  30953. epsgCode: epsgCode
  30954. });
  30955. params = [queryInfo, !!preferContent];
  30956. } else if (type === 'rest') {
  30957. superMapService = new _RestService.default({
  30958. proxy: dataset.proxy
  30959. });
  30960. params = [url, queryInfo];
  30961. } else if (type === 'geoJSON' && geoJSON) {
  30962. superMapService = new _RestService.default();
  30963. params = [geoJSON, queryInfo];
  30964. }
  30965. }
  30966. if (superMapService) {
  30967. superMapService.on({
  30968. getdatasucceeded: function getdatasucceeded(data) {
  30969. resolve(data);
  30970. },
  30971. getdatafailed: function getdatafailed(e) {
  30972. reject(e);
  30973. }
  30974. });
  30975. superMapService.getData(params[0], params[1]);
  30976. }
  30977. });
  30978. return promise;
  30979. }
  30980. /***/ }),
  30981. /***/ "6e42":
  30982. /***/ (function(module, exports, __webpack_require__) {
  30983. "use strict";
  30984. var _interopRequireDefault = __webpack_require__("8e6d");
  30985. Object.defineProperty(exports, "__esModule", {
  30986. value: true
  30987. });
  30988. exports.default = void 0;
  30989. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  30990. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  30991. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  30992. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  30993. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  30994. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  30995. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  30996. var _SourceListModel = _interopRequireDefault(__webpack_require__("5fdb"));
  30997. var _geometryUtil = __webpack_require__("c599");
  30998. __webpack_require__("f240");
  30999. __webpack_require__("3ef3");
  31000. __webpack_require__("c978");
  31001. var _echarts = _interopRequireDefault(__webpack_require__("f840"));
  31002. var _EchartsLayer = _interopRequireDefault(__webpack_require__("e76e"));
  31003. var _lodash = _interopRequireDefault(__webpack_require__("25a2"));
  31004. var _lang = __webpack_require__("4e21");
  31005. var _WebMapBase2 = _interopRequireDefault(__webpack_require__("d6e6"));
  31006. var _util = __webpack_require__("1448");
  31007. var _epsgDefine = __webpack_require__("1a91");
  31008. var _proj = _interopRequireDefault(__webpack_require__("7319"));
  31009. var WORLD_WIDTH = 360;
  31010. var WebMapViewModel =
  31011. /*#__PURE__*/
  31012. function (_WebMapBase) {
  31013. (0, _inherits2.default)(WebMapViewModel, _WebMapBase);
  31014. function WebMapViewModel(id) {
  31015. var _this;
  31016. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  31017. var mapOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
  31018. style: {
  31019. version: 8,
  31020. sources: {},
  31021. layers: []
  31022. }
  31023. };
  31024. var map = arguments.length > 3 ? arguments[3] : undefined;
  31025. var layerFilter = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function () {
  31026. return true;
  31027. };
  31028. (0, _classCallCheck2.default)(this, WebMapViewModel);
  31029. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(WebMapViewModel).call(this, id, options, mapOptions));
  31030. _this._cacheLayerId = [];
  31031. _this._layerTimerList = [];
  31032. if (typeof id === 'string' || typeof id === 'number') {
  31033. _this.mapId = id;
  31034. } else if (id !== null && (0, _typeof2.default)(id) === 'object') {
  31035. _this.webMapInfo = id;
  31036. }
  31037. if (!_this.mapId && !mapOptions.center && !mapOptions.zoom) {
  31038. mapOptions.center = [0, 0];
  31039. mapOptions.zoom = 0;
  31040. }
  31041. if (_this.centerValid(mapOptions.center)) {
  31042. _this.center = mapOptions.center;
  31043. }
  31044. _this.zoom = mapOptions.zoom;
  31045. _this.bounds = mapOptions.bounds;
  31046. _this.bearing = mapOptions.bearing;
  31047. _this.pitch = mapOptions.pitch;
  31048. _this.rasterTileSize = mapOptions.rasterTileSize || 256;
  31049. _this.layerFilter = layerFilter;
  31050. _this.checkSameLayer = options.checkSameLayer;
  31051. _this._legendList = {};
  31052. if (map) {
  31053. _this.map = map;
  31054. _this._taskID = new Date();
  31055. _this.getMapInfo(_this._taskID);
  31056. } else {
  31057. _this._initWebMap();
  31058. }
  31059. return _this;
  31060. }
  31061. (0, _createClass2.default)(WebMapViewModel, [{
  31062. key: "resize",
  31063. value: function resize() {
  31064. var keepBounds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
  31065. this.map && this.map.resize();
  31066. this.echartsLayerResize();
  31067. var mapContainerStyle = window.getComputedStyle(document.getElementById(this.target));
  31068. if (keepBounds && this.map && this.bounds && mapContainerStyle) {
  31069. var zoom = this._getResizedZoom(this.bounds, mapContainerStyle);
  31070. if (zoom !== this.map.getZoom()) {
  31071. this.map && this.map.setZoom(zoom);
  31072. }
  31073. }
  31074. }
  31075. }, {
  31076. key: "setCrs",
  31077. value: function setCrs(crs) {
  31078. if (this.map) {
  31079. this.mapOptions.crs = crs;
  31080. crs && this.map.setCRS(_mapboxGlEnhance.default.CRS.get(crs));
  31081. }
  31082. }
  31083. }, {
  31084. key: "setCenter",
  31085. value: function setCenter(center) {
  31086. if (this.map && this.centerValid(center)) {
  31087. this.mapOptions.center = center;
  31088. this.map.setCenter(center, {
  31089. from: 'setCenter'
  31090. });
  31091. }
  31092. }
  31093. }, {
  31094. key: "setRenderWorldCopies",
  31095. value: function setRenderWorldCopies(renderWorldCopies) {
  31096. if (this.map) {
  31097. this.mapOptions.renderWorldCopies = renderWorldCopies;
  31098. renderWorldCopies && this.map.setRenderWorldCopies(renderWorldCopies);
  31099. }
  31100. }
  31101. }, {
  31102. key: "setBearing",
  31103. value: function setBearing(bearing) {
  31104. if (this.map) {
  31105. this.mapOptions.bearing = bearing;
  31106. (bearing || bearing === 0) && this.map.setBearing(bearing);
  31107. }
  31108. }
  31109. }, {
  31110. key: "setPitch",
  31111. value: function setPitch(pitch) {
  31112. if (this.map) {
  31113. this.mapOptions.pitch = pitch;
  31114. (pitch || pitch === 0) && this.map.setPitch(pitch);
  31115. }
  31116. }
  31117. }, {
  31118. key: "setStyle",
  31119. value: function setStyle(style) {
  31120. if (this.map) {
  31121. this.mapOptions.style = style;
  31122. style && this.map.setStyle(style);
  31123. }
  31124. }
  31125. }, {
  31126. key: "setRasterTileSize",
  31127. value: function setRasterTileSize(tileSize) {
  31128. var _this2 = this;
  31129. if (this.map) {
  31130. if (tileSize <= 0) {
  31131. return;
  31132. }
  31133. var sources = this.map.getStyle().sources;
  31134. Object.keys(sources).forEach(function (sourceId) {
  31135. if (sources[sourceId].type === 'raster' && sources[sourceId].rasterSource === 'iserver') {
  31136. _this2._updateRasterSource(sourceId, {
  31137. tileSize: tileSize
  31138. });
  31139. }
  31140. });
  31141. }
  31142. }
  31143. }, {
  31144. key: "cleanLayers",
  31145. value: function cleanLayers() {
  31146. var _this3 = this;
  31147. this._taskID = null;
  31148. this._cacheLayerId.forEach(function (layerId) {
  31149. if (_this3.map && _this3.map.getLayer(layerId)) {
  31150. _this3.map.removeLayer(layerId);
  31151. }
  31152. });
  31153. this._cacheLayerId.forEach(function (layerId) {
  31154. if (_this3.map && _this3.map.getSource(layerId)) {
  31155. _this3.map.removeSource(layerId);
  31156. }
  31157. });
  31158. this._cacheLayerId = [];
  31159. }
  31160. }, {
  31161. key: "_initWebMap",
  31162. value: function _initWebMap() {
  31163. this.initWebMap();
  31164. }
  31165. }, {
  31166. key: "_getMapInfo",
  31167. value: function _getMapInfo(mapInfo, _taskID) {
  31168. var _this4 = this;
  31169. var projection = mapInfo.projection;
  31170. this.baseProjection = this._defineProj4(projection);
  31171. if (_mapboxGlEnhance.default.CRS.get(this.baseProjection)) {
  31172. if (this.map) {
  31173. if (this.map.getCRS().epsgCode !== this.baseProjection && !this.ignoreBaseProjection) {
  31174. this.triggerEvent('projectionIsNotMatch', {});
  31175. return;
  31176. }
  31177. this._handleLayerInfo(mapInfo, _taskID);
  31178. } else {
  31179. this._createMap(mapInfo);
  31180. this.map.on('load', function () {
  31181. _this4._handleLayerInfo(mapInfo, _taskID);
  31182. });
  31183. }
  31184. } else {
  31185. throw Error((0, _lang.geti18n)().t('webmap.crsNotSupport'));
  31186. }
  31187. }
  31188. }, {
  31189. key: "_handleLayerInfo",
  31190. value: function _handleLayerInfo(mapInfo, _taskID) {
  31191. mapInfo = this._setLayerID(mapInfo);
  31192. this._layers = [];
  31193. var _mapInfo = mapInfo,
  31194. layers = _mapInfo.layers,
  31195. baseLayer = _mapInfo.baseLayer;
  31196. typeof this.layerFilter === 'function' && this.layerFilter(baseLayer) && this._initBaseLayer(mapInfo);
  31197. if (!layers || layers.length === 0) {
  31198. this._sendMapToUser(0, 0);
  31199. } else {
  31200. this._initOverlayLayers(layers, _taskID);
  31201. }
  31202. }
  31203. }, {
  31204. key: "_createMap",
  31205. value: function _createMap(mapInfo) {
  31206. var _this5 = this;
  31207. if (!mapInfo) {
  31208. this.mapOptions.container = this.target;
  31209. if (!this.mapOptions.transformRequest) {
  31210. this.mapOptions.transformRequest = function (url, resourceType) {
  31211. var urlParam = {
  31212. url: url
  31213. };
  31214. var proxy = '';
  31215. if (typeof _this5.proxy === 'string') {
  31216. var proxyType = 'data';
  31217. if (resourceType === 'Tile') {
  31218. proxyType = 'image';
  31219. }
  31220. proxy = _this5.webMapService.handleProxy(proxyType);
  31221. }
  31222. return {
  31223. url: proxy ? +"".concat(proxy).concat(encodeURIComponent(url)) : url,
  31224. credentials: _this5.webMapService.handleWithCredentials(proxy, url, _this5.withCredentials || false) ? 'include' : 'omit'
  31225. };
  31226. };
  31227. }
  31228. setTimeout(function () {
  31229. var fadeDuration = 0;
  31230. if (_this5.mapOptions.hasOwnProperty('fadeDuration')) {
  31231. fadeDuration = _this5.mapOptions.fadeDuration;
  31232. }
  31233. _this5.map = new _mapboxGlEnhance.default.Map(Object.assign(Object.assign({}, _this5.mapOptions), {
  31234. fadeDuration: fadeDuration
  31235. }));
  31236. _this5.map.on('load', function () {
  31237. _this5.triggerEvent('addlayerssucceeded', {
  31238. map: _this5.map,
  31239. mapparams: {},
  31240. layers: []
  31241. });
  31242. });
  31243. }, 0);
  31244. return;
  31245. }
  31246. var fontFamilys = this._getLabelFontFamily(mapInfo);
  31247. var center = this._getMapCenter(mapInfo);
  31248. var zoom = mapInfo.level || 0;
  31249. var zoomBase = 0;
  31250. var _this$mapOptions = this.mapOptions,
  31251. interactive = _this$mapOptions.interactive,
  31252. bounds = _this$mapOptions.bounds,
  31253. minZoom = _this$mapOptions.minZoom,
  31254. maxZoom = _this$mapOptions.maxZoom;
  31255. if (isNaN(minZoom)) {
  31256. minZoom = mapInfo.minScale ? this._transformScaleToZoom(mapInfo.minScale, _mapboxGlEnhance.default.CRS.get(this.baseProjection)) : 0;
  31257. }
  31258. if (isNaN(maxZoom)) {
  31259. maxZoom = mapInfo.maxScale ? this._transformScaleToZoom(mapInfo.maxScale, _mapboxGlEnhance.default.CRS.get(this.baseProjection)) : 22;
  31260. }
  31261. if (mapInfo.visibleExtent && mapInfo.visibleExtent.length === 4 && !bounds) {
  31262. bounds = [this._unproject([mapInfo.visibleExtent[0], mapInfo.visibleExtent[1]]), this._unproject([mapInfo.visibleExtent[2], mapInfo.visibleExtent[3]])];
  31263. }
  31264. if (!bounds) {
  31265. if (mapInfo.minScale && mapInfo.maxScale) {
  31266. zoomBase = this._transformScaleToZoom(mapInfo.minScale, _mapboxGlEnhance.default.CRS.get(this.baseProjection));
  31267. } else {
  31268. zoomBase = +Math.log2(this._getResolution(_mapboxGlEnhance.default.CRS.get(this.baseProjection).getExtent()) / this._getResolution(mapInfo.extent)).toFixed(2);
  31269. }
  31270. zoom += zoomBase;
  31271. }
  31272. this.map = new _mapboxGlEnhance.default.Map({
  31273. container: this.target,
  31274. center: this.center || center,
  31275. zoom: this.zoom || zoom,
  31276. minZoom: minZoom,
  31277. maxZoom: maxZoom,
  31278. bearing: this.bearing || 0,
  31279. pitch: this.pitch || 0,
  31280. bounds: bounds,
  31281. interactive: interactive === void 0 ? true : interactive,
  31282. style: {
  31283. version: 8,
  31284. sources: {},
  31285. layers: []
  31286. },
  31287. crs: this.baseProjection,
  31288. localIdeographFontFamily: fontFamilys || '',
  31289. renderWorldCopies: false,
  31290. preserveDrawingBuffer: this.mapOptions.preserveDrawingBuffer || false,
  31291. transformRequest: function transformRequest(url, resourceType) {
  31292. if (resourceType === 'Tile') {
  31293. if (_this5.isSuperMapOnline && url.indexOf('http://') === 0) {
  31294. url = "https://www.supermapol.com/apps/viewer/getUrlResource.png?url=".concat(encodeURIComponent(url));
  31295. }
  31296. var proxy = _this5.webMapService.handleProxy('image');
  31297. return {
  31298. url: url,
  31299. credentials: _this5.webMapService.handleWithCredentials(proxy, url, false) ? 'include' : 'omit'
  31300. };
  31301. }
  31302. return {
  31303. url: url
  31304. };
  31305. },
  31306. fadeDuration: 0
  31307. });
  31308. this.triggerEvent('mapinitialized', {
  31309. map: this.map
  31310. });
  31311. }
  31312. }, {
  31313. key: "_createMVTBaseLayer",
  31314. value: function _createMVTBaseLayer(layerInfo) {
  31315. var url = layerInfo.dataSource.url;
  31316. if (url.indexOf('/restjsr/') > -1) {
  31317. url += '/style.json';
  31318. }
  31319. this.map.addStyle(url);
  31320. }
  31321. }, {
  31322. key: "_initBaseLayer",
  31323. value: function _initBaseLayer(mapInfo) {
  31324. var layerInfo = mapInfo.baseLayer || mapInfo;
  31325. var layerType = this.getBaseLayerType(layerInfo);
  31326. var mapUrls = this.getMapurls();
  31327. var url;
  31328. this.baseLayerProxy = this.webMapService.handleProxy('image');
  31329. switch (layerType) {
  31330. case 'TIANDITU':
  31331. this.baseLayerProxy = null;
  31332. this._createTiandituLayer(mapInfo);
  31333. break;
  31334. case 'BING':
  31335. this.baseLayerProxy = null;
  31336. this._createBingLayer(layerInfo.layerID || layerInfo.name);
  31337. break;
  31338. case 'WMS':
  31339. this._createWMSLayer(layerInfo);
  31340. break;
  31341. case 'WMTS':
  31342. this._createWMTSLayer(layerInfo);
  31343. break;
  31344. case 'TILE':
  31345. this._createDynamicTiledLayer(layerInfo);
  31346. break;
  31347. case 'CLOUD':
  31348. case 'XYZ':
  31349. url = mapUrls[layerInfo.layerType];
  31350. this._createXYZLayer(layerInfo, url);
  31351. break;
  31352. case 'BAIDU':
  31353. this.triggerEvent('notsupportbaidumap', {});
  31354. break;
  31355. case 'MAPBOXSTYLE':
  31356. this._createMVTBaseLayer(layerInfo);
  31357. default:
  31358. break;
  31359. }
  31360. }
  31361. }, {
  31362. key: "_initOverlayLayers",
  31363. value: function _initOverlayLayers(layers, _taskID) {
  31364. var _this6 = this;
  31365. if (typeof this.layerFilter === 'function') {
  31366. layers = layers.filter(this.layerFilter);
  31367. }
  31368. this._layers = layers;
  31369. this.layerAdded = 0;
  31370. this.expectLayerLen = layers.length;
  31371. if (this.expectLayerLen > 0) {
  31372. layers.forEach(function (layer, index) {
  31373. var type = _this6.webMapService.getDatasourceType(layer);
  31374. if (type === 'SAMPLE_DATA') {
  31375. _this6._addLayerSucceeded();
  31376. _this6.triggerEvent('getlayerdatasourcefailed', {
  31377. error: 'SAMPLE DATA is not supported',
  31378. layer: layer,
  31379. map: _this6.map
  31380. });
  31381. return;
  31382. }
  31383. if (layer.visibleScale) {
  31384. var _layer$visibleScale = layer.visibleScale,
  31385. minScale = _layer$visibleScale.minScale,
  31386. maxScale = _layer$visibleScale.maxScale;
  31387. layer.minzoom = Math.max(_this6._transformScaleToZoom(minScale), 0);
  31388. layer.maxzoom = Math.min(24, _this6._transformScaleToZoom(maxScale) + 0.0000001);
  31389. }
  31390. if (type === 'tile') {
  31391. _this6._initBaseLayer(layer);
  31392. _this6._addLayerSucceeded();
  31393. if (!!layer.autoUpdateTime) {
  31394. _this6._layerTimerList.push(setInterval(function () {
  31395. _this6._initBaseLayer(layer);
  31396. }, layer.autoUpdateTime));
  31397. }
  31398. } else {
  31399. _this6.getLayerFeatures(layer, _taskID, type);
  31400. if (!!layer.autoUpdateTime) {
  31401. _this6._layerTimerList.push(setInterval(function () {
  31402. _this6.getLayerFeatures(layer, _taskID, type);
  31403. }, layer.autoUpdateTime));
  31404. }
  31405. }
  31406. }, this);
  31407. }
  31408. }
  31409. }, {
  31410. key: "_initOverlayLayer",
  31411. value: function _initOverlayLayer(layerInfo) {
  31412. var features = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
  31413. var mergeByField = arguments.length > 2 ? arguments[2] : undefined;
  31414. var layerID = layerInfo.layerID,
  31415. layerType = layerInfo.layerType,
  31416. visible = layerInfo.visible,
  31417. style = layerInfo.style,
  31418. featureType = layerInfo.featureType,
  31419. labelStyle = layerInfo.labelStyle,
  31420. projection = layerInfo.projection;
  31421. layerInfo.visible = visible ? 'visible' : 'none';
  31422. features = this.mergeFeatures(layerID, features, mergeByField);
  31423. if (layerType === 'restMap') {
  31424. this._createRestMapLayer(features, layerInfo);
  31425. return;
  31426. }
  31427. if (layerType === 'mvt') {
  31428. this._createMvtLayer(features.info, layerInfo, features.featureType);
  31429. return;
  31430. }
  31431. if (features && features[0] && features[0].geometry.type === 'Polygon') {
  31432. features = (0, _geometryUtil.handleMultyPolygon)(features);
  31433. }
  31434. if (features && projection && (projection !== this.baseProjection || projection === 'EPSG:3857')) {
  31435. this._unprojectProjection = this._defineProj4(projection);
  31436. features = this.transformFeatures(features);
  31437. }
  31438. features = this.handleLayerFeatures(features, layerInfo);
  31439. if (layerType === 'VECTOR') {
  31440. if (featureType === 'POINT') {
  31441. if (style.type === 'SYMBOL_POINT') {
  31442. this._createSymbolLayer(layerInfo, features);
  31443. } else {
  31444. this._createGraphicLayer(layerInfo, features);
  31445. }
  31446. } else {
  31447. this._createVectorLayer(layerInfo, features);
  31448. this._addLayerSucceeded();
  31449. }
  31450. } else if (layerType === 'UNIQUE') {
  31451. this._createUniqueLayer(layerInfo, features);
  31452. } else if (layerType === 'RANGE') {
  31453. this._createRangeLayer(layerInfo, features);
  31454. } else if (layerType === 'HEAT') {
  31455. this._createHeatLayer(layerInfo, features);
  31456. } else if (layerType === 'MARKER') {
  31457. this._createMarkerLayer(layerInfo, features);
  31458. } else if (layerType === 'MIGRATION') {
  31459. this._createMigrationLayer(layerInfo, features);
  31460. } else if (layerType === 'RANK_SYMBOL') {
  31461. this._createRankSymbolLayer(layerInfo, features);
  31462. } else if (layerType === 'DATAFLOW_POINT_TRACK' || layerType === 'DATAFLOW_HEAT') {
  31463. this._createDataflowLayer(layerInfo);
  31464. }
  31465. if (labelStyle && labelStyle.labelField && layerType !== 'DATAFLOW_POINT_TRACK') {
  31466. this._addLabelLayer(layerInfo, features, false);
  31467. }
  31468. }
  31469. }, {
  31470. key: "_createTiandituLayer",
  31471. value: function _createTiandituLayer(mapInfo) {
  31472. var tiandituUrls = this._getTiandituUrl(mapInfo);
  31473. var _mapInfo$baseLayer = mapInfo.baseLayer,
  31474. labelLayerVisible = _mapInfo$baseLayer.labelLayerVisible,
  31475. name = _mapInfo$baseLayer.name,
  31476. visible = _mapInfo$baseLayer.visible;
  31477. var isLabel = Boolean(labelLayerVisible);
  31478. var labelUrl = tiandituUrls['labelUrl'];
  31479. var tiandituUrl = tiandituUrls['tiandituUrl'];
  31480. this._addBaselayer(tiandituUrl, name, visible);
  31481. isLabel && this._addBaselayer(labelUrl, "".concat(name, "-label"), visible);
  31482. }
  31483. }, {
  31484. key: "_createWMTSLayer",
  31485. value: function _createWMTSLayer(layerInfo) {
  31486. var _this7 = this;
  31487. this.webMapService.getWmtsInfo(layerInfo, this.map.getCRS().epsgCode).then(function (result) {
  31488. var layerId = layerInfo.layerID || layerInfo.name;
  31489. if (result.isMatched) {
  31490. var wmtsUrl = _this7._getWMTSUrl(Object.assign({}, layerInfo, result));
  31491. _this7._addBaselayer([wmtsUrl], layerId, layerInfo.visible, 0, result.matchMaxZoom, false, result.bounds);
  31492. }
  31493. }, function (error) {
  31494. throw new Error(error);
  31495. }).catch(function (error) {
  31496. _this7.triggerEvent('getmapinfofailed', {
  31497. error: error
  31498. });
  31499. });
  31500. }
  31501. }, {
  31502. key: "_createBingLayer",
  31503. value: function _createBingLayer(layerName) {
  31504. var bingUrl = 'https://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';
  31505. this._addBaselayer([bingUrl], layerName, layerInfo.visible);
  31506. }
  31507. }, {
  31508. key: "_createXYZLayer",
  31509. value: function _createXYZLayer(layerInfo, url) {
  31510. var urlArr = [];
  31511. if (layerInfo.layerType === 'OSM') {
  31512. var res = url.match(/\w\-\w/g)[0];
  31513. var start = res[0];
  31514. var end = res[2];
  31515. var alphabet = '';
  31516. for (var i = 97; i < 123; i++) {
  31517. alphabet += String.fromCharCode(i);
  31518. }
  31519. var alphabetArr = alphabet.split('');
  31520. var startIndex = alphabetArr.indexOf(start);
  31521. var endIndex = alphabetArr.indexOf(end);
  31522. var res3 = alphabetArr.slice(startIndex, endIndex + 1);
  31523. for (var _i = 0; _i < res3.length; _i++) {
  31524. var replaceRes = url.replace(/{\w\-\w}/g, res3[_i]);
  31525. urlArr.push(replaceRes);
  31526. }
  31527. } else if (layerInfo.layerType === 'GOOGLE_CN') {
  31528. var _res = url.match(/\d\-\d/g)[0];
  31529. var _start = parseInt(_res[0]);
  31530. var _end = parseInt(_res[2]);
  31531. for (var _i2 = _start; _i2 <= _end; _i2++) {
  31532. var _replaceRes = url.replace(/{\d\-\d}/g, _i2.toString());
  31533. urlArr.push(_replaceRes);
  31534. }
  31535. } else {
  31536. urlArr = [url];
  31537. }
  31538. var layerId = layerInfo.layerID || layerInfo.name;
  31539. this._addBaselayer(urlArr, layerId, layerInfo.visible);
  31540. }
  31541. }, {
  31542. key: "_createDynamicTiledLayer",
  31543. value: function _createDynamicTiledLayer(layerInfo) {
  31544. var url = layerInfo.url;
  31545. var layerId = layerInfo.layerID || layerInfo.name;
  31546. var minzoom = layerInfo.minzoom,
  31547. maxzoom = layerInfo.maxzoom;
  31548. this._addBaselayer([url], layerId, layerInfo.visible, minzoom, maxzoom, true);
  31549. }
  31550. }, {
  31551. key: "_createWMSLayer",
  31552. value: function _createWMSLayer(layerInfo) {
  31553. var WMSUrl = this._getWMSUrl(layerInfo);
  31554. var layerId = layerInfo.layerID || layerInfo.name;
  31555. this._addBaselayer([WMSUrl], layerId, layerInfo.visible);
  31556. }
  31557. }, {
  31558. key: "_createVectorLayer",
  31559. value: function _createVectorLayer(layerInfo, features) {
  31560. var _this8 = this;
  31561. var type = layerInfo.featureType;
  31562. var layerID = layerInfo.layerID,
  31563. minzoom = layerInfo.minzoom,
  31564. maxzoom = layerInfo.maxzoom,
  31565. style = layerInfo.style,
  31566. visible = layerInfo.visible;
  31567. var layerSource = this.map.getSource(layerID);
  31568. var sourceData = {
  31569. type: 'FeatureCollection',
  31570. features: features
  31571. };
  31572. if (!layerSource) {
  31573. var source = {
  31574. type: 'geojson',
  31575. data: sourceData
  31576. };
  31577. this.map.addSource(layerID, source);
  31578. } else {
  31579. layerSource.setData(sourceData);
  31580. }
  31581. var styleArr = Array.isArray(style) ? style : [style];
  31582. if (styleArr.length === 2) {
  31583. if (styleArr[0].lineDash === 'solid' && styleArr[1].lineDash === 'solid') {
  31584. styleArr[0].strokeWidth = styleArr[1].strokeWidth;
  31585. styleArr[1].strokeWidth = styleArr[1].strokeWidth - 2;
  31586. }
  31587. if (styleArr[0].lineDash === 'solid' && styleArr[1].lineDash === 'dash') {
  31588. styleArr[0].strokeWidth = styleArr[1].strokeWidth;
  31589. styleArr[1].strokeWidth = styleArr[1].strokeWidth * 0.5;
  31590. styleArr[1].lineDash = 'dashrailway';
  31591. }
  31592. }
  31593. styleArr.forEach(function (element, index) {
  31594. var layerStyle = {
  31595. style: _this8._transformStyleToMapBoxGl(element, type),
  31596. layout: {
  31597. visibility: visible
  31598. }
  31599. };
  31600. var newLayerID = index === 0 ? layerID : "".concat(layerID, "-additional-").concat(index);
  31601. _this8._addOverlayToMap(type, layerID, newLayerID, layerStyle, minzoom, maxzoom);
  31602. });
  31603. type === 'POLYGON' && style.strokeColor && this._addStrokeLineForPoly(style, layerID, layerID + '-strokeLine', visible, minzoom, maxzoom);
  31604. }
  31605. }, {
  31606. key: "_getWMSUrl",
  31607. value: function _getWMSUrl(mapInfo) {
  31608. var url = mapInfo.url;
  31609. url = url.split('?')[0];
  31610. var options = {
  31611. service: 'WMS',
  31612. request: 'GetMap',
  31613. layers: mapInfo.layers !== null && (0, _typeof2.default)(mapInfo.layers) === 'object' ? mapInfo.layers.join(',') : mapInfo.layers || '0',
  31614. styles: '',
  31615. format: 'image/png',
  31616. transparent: 'true',
  31617. version: '1.1.1',
  31618. width: 256,
  31619. height: 256,
  31620. srs: this.baseProjection
  31621. };
  31622. url += "".concat(this._getParamString(options, url), "&bbox={bbox-epsg-3857}");
  31623. return url;
  31624. }
  31625. }, {
  31626. key: "_setLayerID",
  31627. value: function _setLayerID(mapInfo) {
  31628. var _this9 = this;
  31629. var sumInfo = {};
  31630. var baseLayer = mapInfo.baseLayer,
  31631. _mapInfo$layers = mapInfo.layers,
  31632. layers = _mapInfo$layers === void 0 ? [] : _mapInfo$layers;
  31633. if (!this.checkSameLayer) {
  31634. var baseInfo = this._generateUniqueLayerId(baseLayer.name, 0);
  31635. baseLayer.name = baseInfo.newId;
  31636. }
  31637. var layerNames = layers.map(function (layer) {
  31638. return layer.name;
  31639. });
  31640. var _layers = layers.map(function (layer, index) {
  31641. if (!(layer.name in sumInfo)) {
  31642. sumInfo[layer.name] = baseLayer.name === layer.name ? 1 : 0;
  31643. }
  31644. var matchFirstIndex = layerNames.indexOf(layer.name);
  31645. var matchLastIndex = layerNames.lastIndexOf(layer.name);
  31646. if (index > matchFirstIndex && index <= matchLastIndex) {
  31647. sumInfo[layer.name] = sumInfo[layer.name] + 1;
  31648. }
  31649. var layerID = !!sumInfo[layer.name] ? "".concat(layer.name, "-").concat(sumInfo[layer.name]) : layer.name;
  31650. if (!_this9.checkSameLayer || layer.layerType !== 'raster') {
  31651. var _this9$_generateUniqu = _this9._generateUniqueLayerId(layerID, sumInfo[layer.name]),
  31652. newId = _this9$_generateUniqu.newId,
  31653. newIndex = _this9$_generateUniqu.newIndex;
  31654. sumInfo[layer.name] = newIndex;
  31655. layerID = newId;
  31656. }
  31657. return Object.assign(layer, {
  31658. layerID: layerID
  31659. });
  31660. });
  31661. mapInfo.layers = _layers;
  31662. mapInfo.baseLayer = baseLayer;
  31663. return mapInfo;
  31664. }
  31665. }, {
  31666. key: "_generateUniqueLayerId",
  31667. value: function _generateUniqueLayerId(newId, index) {
  31668. if (this.map.getLayer(newId)) {
  31669. index++;
  31670. if (newId.match(/-\d+&/gi)) {
  31671. newId = newId.replace(/\d+$/gi, index);
  31672. } else {
  31673. newId = "".concat(newId, "-").concat(index);
  31674. }
  31675. return this._generateUniqueLayerId(newId, index);
  31676. } else {
  31677. return {
  31678. newId: newId,
  31679. newIndex: index
  31680. };
  31681. }
  31682. }
  31683. }, {
  31684. key: "_getResizedZoom",
  31685. value: function _getResizedZoom(bounds, mapContainerStyle) {
  31686. var tileSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 512;
  31687. var worldWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : WORLD_WIDTH;
  31688. var width = mapContainerStyle.width,
  31689. height = mapContainerStyle.height;
  31690. var lngArcLength = Math.abs(bounds.getEast() - bounds.getWest());
  31691. var latArcLength = Math.abs(this._getBoundsRadian(bounds.getSouth()) - this._getBoundsRadian(bounds.getNorth()));
  31692. var lngResizeZoom = +Math.log2(worldWidth / (lngArcLength / parseInt(width) * tileSize)).toFixed(2);
  31693. var latResizeZoom = +Math.log2(worldWidth / (latArcLength / parseInt(height) * tileSize)).toFixed(2);
  31694. if (lngResizeZoom <= latResizeZoom) {
  31695. return lngResizeZoom;
  31696. }
  31697. return latResizeZoom;
  31698. }
  31699. }, {
  31700. key: "_getBoundsRadian",
  31701. value: function _getBoundsRadian(point) {
  31702. return 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + point * Math.PI / 360));
  31703. }
  31704. }, {
  31705. key: "_createRestMapLayer",
  31706. value: function _createRestMapLayer(restMaps, layer) {
  31707. var _this10 = this;
  31708. restMaps.forEach(function (restMapInfo) {
  31709. layer = _this10.getRestMapLayerInfo(restMapInfo, layer);
  31710. _this10._initBaseLayer(layer);
  31711. });
  31712. this._addLayerSucceeded();
  31713. }
  31714. }, {
  31715. key: "_addLayerSucceeded",
  31716. value: function _addLayerSucceeded() {
  31717. this.layerAdded++;
  31718. this._sendMapToUser(this.layerAdded, this.expectLayerLen);
  31719. }
  31720. }, {
  31721. key: "_createDataflowLayer",
  31722. value: function _createDataflowLayer(layerInfo) {
  31723. var dataflowService = new _mapboxGlEnhance.default.supermap.DataFlowService(layerInfo.wsUrl).initSubscribe();
  31724. this._handleDataflowFeaturesCallback = this._handleDataflowFeatures.bind(this, layerInfo);
  31725. dataflowService.on('messageSucceeded', this._handleDataflowFeaturesCallback);
  31726. this._dataflowService = dataflowService;
  31727. }
  31728. }, {
  31729. key: "_handleDataflowFeatures",
  31730. value: function _handleDataflowFeatures(layerInfo, e) {
  31731. var features = JSON.parse(e.data);
  31732. this.triggerEvent('dataflowfeatureupdated', {
  31733. features: features,
  31734. identifyField: layerInfo.identifyField,
  31735. layerID: layerInfo.layerID
  31736. });
  31737. if (layerInfo.filterCondition) {
  31738. var condition = this.replaceFilterCharacter(layerInfo.filterCondition);
  31739. var sql = 'select * from json where (' + condition + ')';
  31740. var filterResult = window['jsonsql'].query(sql, {
  31741. attributes: features.properties
  31742. });
  31743. if (filterResult && filterResult.length > 0) {
  31744. this._addDataflowLayer(layerInfo, features);
  31745. }
  31746. } else {
  31747. this._addDataflowLayer(layerInfo, features);
  31748. }
  31749. }
  31750. }, {
  31751. key: "_getDataFlowRotateStyle",
  31752. value: function _getDataFlowRotateStyle(features, directionField, identifyField) {
  31753. var iconRotateExpression = ['match', ['get', identifyField]];
  31754. features.forEach(function (feature) {
  31755. var value;
  31756. if (directionField !== undefined && directionField !== '未设置' && directionField !== 'None') {
  31757. value = feature.properties[directionField];
  31758. } else {
  31759. value = 0;
  31760. }
  31761. if (value > 360 || value < 0) {
  31762. return null;
  31763. }
  31764. iconRotateExpression.push(feature.properties[identifyField], parseInt(value));
  31765. });
  31766. iconRotateExpression.push(0);
  31767. return iconRotateExpression;
  31768. }
  31769. }, {
  31770. key: "_addDataflowLayer",
  31771. value: function _addDataflowLayer(layerInfo, feature) {
  31772. var layerID = layerInfo.layerID;
  31773. if (layerInfo.layerType === 'DATAFLOW_HEAT') {
  31774. if (!this.map.getSource(layerID)) {
  31775. this._createHeatLayer(layerInfo, [feature]);
  31776. } else {
  31777. this._updateDataFlowFeature(layerID, feature, layerInfo);
  31778. }
  31779. } else {
  31780. var layerStyle = layerInfo.pointStyle;
  31781. layerInfo.style = layerStyle;
  31782. if (!this.map.getSource(layerID)) {
  31783. var iconRotateExpression = this._getDataFlowRotateStyle([feature], layerInfo.directionField, layerInfo.identifyField);
  31784. if (['BASIC_POINT', 'SVG_POINT', 'IMAGE_POINT'].includes(layerStyle.type)) {
  31785. this._createGraphicLayer(layerInfo, [feature], null, iconRotateExpression);
  31786. } else {
  31787. this._createSymbolLayer(layerInfo, [feature], null, iconRotateExpression);
  31788. }
  31789. } else {
  31790. this._updateDataFlowFeature(layerID, feature, layerInfo, 'point');
  31791. }
  31792. if (layerInfo.labelStyle && layerInfo.visible) {
  31793. if (!this.map.getSource(layerID + '-label')) {
  31794. this._addLabelLayer(layerInfo, [feature], true);
  31795. } else {
  31796. this._updateDataFlowFeature(layerID + '-label', feature, layerInfo);
  31797. }
  31798. }
  31799. if (layerInfo.lineStyle && layerInfo.visible) {
  31800. if (!this.map.getSource(layerID + '-line')) {
  31801. var geometry = feature.geometry.coordinates;
  31802. var lineFeature = {
  31803. type: 'Feature',
  31804. properties: feature.properties,
  31805. geometry: {
  31806. type: 'LineString',
  31807. coordinates: [geometry]
  31808. }
  31809. };
  31810. this._createVectorLayer({
  31811. style: layerInfo.lineStyle,
  31812. featureType: 'LINE',
  31813. visible: 'visible',
  31814. layerID: layerID + '-line'
  31815. }, [lineFeature]);
  31816. } else {
  31817. this._updateDataFlowFeature(layerID + '-line', feature, layerInfo, 'line');
  31818. }
  31819. }
  31820. }
  31821. }
  31822. }, {
  31823. key: "_updateDataFlowFeature",
  31824. value: function _updateDataFlowFeature(sourceID, newFeature, layerInfo, type) {
  31825. var identifyField = layerInfo.identifyField,
  31826. maxPointCount = layerInfo.maxPointCount,
  31827. directionField = layerInfo.directionField;
  31828. var features = (0, _lodash.default)(this.map.getSource(sourceID)._data.features);
  31829. var has = false;
  31830. features.map(function (item, index) {
  31831. if (item.properties[identifyField] === newFeature.properties[identifyField]) {
  31832. has = true;
  31833. if (type === 'line') {
  31834. var coordinates = item.geometry.coordinates;
  31835. coordinates.push(newFeature.geometry.coordinates);
  31836. if (maxPointCount && coordinates.length > maxPointCount) {
  31837. coordinates.splice(0, coordinates.length - maxPointCount);
  31838. }
  31839. features[index].geometry.coordinates = coordinates;
  31840. } else {
  31841. features[index] = newFeature;
  31842. }
  31843. }
  31844. });
  31845. if (!has) {
  31846. if (type === 'line') {
  31847. features.push({
  31848. type: 'Feature',
  31849. properties: newFeature.properties,
  31850. geometry: {
  31851. type: 'LineString',
  31852. coordinates: [newFeature.geometry.coordinates]
  31853. }
  31854. });
  31855. } else {
  31856. features.push(newFeature);
  31857. }
  31858. }
  31859. this.map.getSource(sourceID).setData({
  31860. type: 'FeatureCollection',
  31861. features: features
  31862. });
  31863. if (type === 'point') {
  31864. var _type = layerInfo.pointStyle.type;
  31865. var iconRotateExpression = this._getDataFlowRotateStyle(features, directionField, identifyField);
  31866. if (['SVG_POINT', 'IMAGE_POINT'].includes(_type)) {
  31867. this.map.setLayoutProperty(sourceID, 'icon-rotate', iconRotateExpression);
  31868. } else if (_type === 'SYMBOL_POINT') {
  31869. this.map.setLayoutProperty(sourceID, 'text-rotate', iconRotateExpression);
  31870. }
  31871. }
  31872. }
  31873. }, {
  31874. key: "_createMigrationLayer",
  31875. value: function _createMigrationLayer(layerInfo, features) {
  31876. window['echarts'] = _echarts.default;
  31877. var options = this.getEchartsLayerOptions(layerInfo, features, 'GLMap');
  31878. options['GLMap'] = {
  31879. roam: true
  31880. };
  31881. var echartslayer = new _EchartsLayer.default(this.map);
  31882. echartslayer.chart.setOption(options);
  31883. this.echartslayer.push(echartslayer);
  31884. this._addLayerSucceeded();
  31885. }
  31886. }, {
  31887. key: "_createRankSymbolLayer",
  31888. value: function _createRankSymbolLayer(layerInfo, features) {
  31889. var minzoom = layerInfo.minzoom,
  31890. maxzoom = layerInfo.maxzoom;
  31891. var fieldName = layerInfo.themeSetting.themeField;
  31892. var colors = layerInfo.themeSetting.colors;
  31893. var style = layerInfo.style;
  31894. var featureType = layerInfo.featureType;
  31895. var styleSource = this.createRankStyleSource(layerInfo, features);
  31896. var styleGroups = styleSource.styleGroups;
  31897. features = this.getFilterFeatures(layerInfo.filterCondition, features);
  31898. var expression = ['match', ['get', 'index']];
  31899. var colorExpression = ['match', ['get', 'index']];
  31900. for (var index = 0; index < features.length; index++) {
  31901. var row = features[index];
  31902. var tartget = parseFloat(row.properties[fieldName]);
  31903. if (styleGroups) {
  31904. for (var i = 0; i < styleGroups.length; i++) {
  31905. if (styleGroups[i].start <= tartget && tartget < styleGroups[i].end) {
  31906. var radius = style.type === 'SYMBOL_POINT' || style.type === 'IMAGE_POINT' ? style.type === 'SYMBOL_POINT' ? styleGroups[i].radius * 2 : Number.parseFloat((styleGroups[i].radius / style.imageInfo.size.h).toFixed(2)) * 2 : styleGroups[i].radius;
  31907. expression.push(row.properties['index'], radius);
  31908. colorExpression.push(row.properties['index'], styleGroups[i].color);
  31909. break;
  31910. }
  31911. }
  31912. }
  31913. }
  31914. expression.push(1);
  31915. colorExpression.push('rgba(0, 0, 0, 0)');
  31916. this._initLegendConfigInfo(layerInfo, styleGroups);
  31917. if (colors && colors.length > 0) {
  31918. style.fillColor = colorExpression;
  31919. }
  31920. if (style.type === 'SYMBOL_POINT') {
  31921. this._createSymbolLayer(layerInfo, features, expression);
  31922. } else if (style.type === 'IMAGE_POINT') {
  31923. this._createGraphicLayer(layerInfo, features, expression);
  31924. } else {
  31925. var source = {
  31926. type: 'geojson',
  31927. data: {
  31928. type: 'FeatureCollection',
  31929. features: features
  31930. }
  31931. };
  31932. var layerStyle = {
  31933. layout: {
  31934. visibility: layerInfo.visible
  31935. }
  31936. };
  31937. layerStyle.style = this._transformStyleToMapBoxGl(layerInfo.style, featureType, expression, 'circle-radius');
  31938. var layerID = layerInfo.layerID;
  31939. this._addOverlayToMap(featureType, source, layerID, layerStyle, minzoom, maxzoom);
  31940. this._addLayerSucceeded();
  31941. }
  31942. }
  31943. }, {
  31944. key: "_addLabelLayer",
  31945. value: function _addLabelLayer(layerInfo, features) {
  31946. var addSource = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  31947. var labelStyle = layerInfo.labelStyle;
  31948. var backgroundFill = labelStyle.backgroundFill,
  31949. fontFamily = labelStyle.fontFamily;
  31950. var minzoom = layerInfo.minzoom,
  31951. maxzoom = layerInfo.maxzoom;
  31952. var textSize = parseFloat(labelStyle.fontSize || 14);
  31953. backgroundFill = "rgba(".concat(backgroundFill.join(','), ")");
  31954. var textHaloColor = 'rgba(255,255,255,0)';
  31955. if (labelStyle.outlineColor && labelStyle.outlineWidth > 0) {
  31956. textHaloColor = labelStyle.outlineColor;
  31957. } else if (labelStyle.placement !== 'line') {
  31958. textHaloColor = backgroundFill || 'rgba(255,255,255,1)';
  31959. }
  31960. var textHaloWidth = (labelStyle.outlineWidth || 0) / 2;
  31961. if (textHaloWidth === 0 && labelStyle.placement !== 'line' && backgroundFill) {
  31962. textHaloWidth = 4;
  31963. }
  31964. var textAnchor = labelStyle.textAlign || 'center';
  31965. if (labelStyle.textBaseline && labelStyle.textBaseline !== 'middle') {
  31966. textAnchor = "".concat(labelStyle.textBaseline).concat(textAnchor === 'center' ? '' : "-".concat(textAnchor));
  31967. }
  31968. var textOffset = layerInfo.featureType === 'POINT' ? [labelStyle.offsetX / textSize || 0, labelStyle.offsetY / textSize || 0] : [0, 0];
  31969. this._addLayer({
  31970. id: "".concat(layerInfo.layerID, "-label"),
  31971. type: 'symbol',
  31972. source: this.map.getSource(layerInfo.layerID) && !addSource ? layerInfo.layerID : {
  31973. type: 'geojson',
  31974. data: {
  31975. type: 'FeatureCollection',
  31976. features: features
  31977. }
  31978. },
  31979. paint: {
  31980. 'text-color': labelStyle.fill,
  31981. 'text-halo-color': textHaloColor,
  31982. 'text-halo-width': textHaloWidth
  31983. },
  31984. layout: {
  31985. 'text-field': "{".concat(labelStyle.labelField, "}"),
  31986. 'text-size': textSize,
  31987. 'text-offset': textOffset,
  31988. 'text-font': fontFamily ? [fontFamily] : ['DIN Offc Pro Italic', 'Arial Unicode MS Regular'],
  31989. 'symbol-placement': labelStyle.placement === 'line' ? layerInfo.featureType === 'POLYGON' ? 'line' : 'line-center' : 'point',
  31990. 'text-max-angle': layerInfo.featureType === 'POLYGON' ? 40 : 30,
  31991. 'symbol-spacing': layerInfo.featureType === 'POLYGON' ? 200 : 50,
  31992. 'text-anchor': textAnchor,
  31993. 'text-line-height': 1.2,
  31994. visibility: layerInfo.visible
  31995. },
  31996. minzoom: minzoom || 0,
  31997. maxzoom: maxzoom || 22
  31998. });
  31999. }
  32000. }, {
  32001. key: "_createSymbolLayer",
  32002. value: function _createSymbolLayer(layerInfo, features, textSizeExpresion, textRotateExpresion) {
  32003. var target = document.getElementById("".concat(this.target));
  32004. target.classList.add('supermapol-icons-map');
  32005. var layerID = layerInfo.layerID,
  32006. minzoom = layerInfo.minzoom,
  32007. maxzoom = layerInfo.maxzoom,
  32008. style = layerInfo.style;
  32009. var unicode = style.unicode;
  32010. var text = String.fromCharCode(parseInt(unicode.replace(/^&#x/, ''), 16));
  32011. var textSize = textSizeExpresion || style.fontSize && parseFloat(style.fontSize) || 12;
  32012. var rotate = (layerInfo.style['rotation'] || 0) * 180 / Math.PI;
  32013. this._addLayer({
  32014. id: layerID,
  32015. type: 'symbol',
  32016. source: {
  32017. type: 'geojson',
  32018. data: {
  32019. type: 'FeatureCollection',
  32020. features: []
  32021. }
  32022. },
  32023. paint: {
  32024. 'text-color': (0, _util.getColorWithOpacity)(style.fillColor, style.fillOpacity),
  32025. 'text-halo-color': (0, _util.getColorWithOpacity)(style.strokeColor || 'rgba(0,0,0,0)', style.strokeOpacity),
  32026. 'text-halo-width': style.strokeWidth || 0
  32027. },
  32028. layout: {
  32029. 'text-field': text,
  32030. 'text-size': textSize,
  32031. 'text-font': ['DIN Offc Pro Italic', 'Arial Unicode MS Regular'],
  32032. 'text-rotate': textRotateExpresion || rotate || 0,
  32033. 'text-offset': [style.offsetX / 2 || 0, style.offsetY / 2 || 0],
  32034. 'text-allow-overlap': true,
  32035. visibility: layerInfo.visible
  32036. },
  32037. minzoom: minzoom || 0,
  32038. maxzoom: maxzoom || 22
  32039. });
  32040. this.map.getSource(layerID).setData({
  32041. type: 'FeatureCollection',
  32042. features: features
  32043. });
  32044. this._addLayerSucceeded();
  32045. }
  32046. }, {
  32047. key: "_createGraphicLayer",
  32048. value: function _createGraphicLayer(layerInfo, features, iconSizeExpression, iconRotateExpression) {
  32049. var _this11 = this;
  32050. var layerID = layerInfo.layerID,
  32051. minzoom = layerInfo.minzoom,
  32052. maxzoom = layerInfo.maxzoom,
  32053. style = layerInfo.style;
  32054. var source = {
  32055. type: 'geojson',
  32056. data: {
  32057. type: 'FeatureCollection',
  32058. features: features
  32059. }
  32060. };
  32061. var iconID = "imageIcon-".concat(layerID);
  32062. if (style.type === 'IMAGE_POINT') {
  32063. var imageInfo = style.imageInfo;
  32064. this.map.loadImage(imageInfo.url, function (error, image) {
  32065. if (error) {
  32066. console.error(error);
  32067. return;
  32068. }
  32069. var iconSize = Number.parseFloat((style.radius / image.width).toFixed(2)) * 2;
  32070. !_this11.map.hasImage(iconID) && _this11.map.addImage(iconID, image);
  32071. _this11._addLayer({
  32072. id: layerID,
  32073. type: 'symbol',
  32074. source: source,
  32075. layout: {
  32076. 'icon-image': iconID,
  32077. 'icon-anchor': 'bottom-right',
  32078. 'icon-size': iconSizeExpression || iconSize,
  32079. 'icon-allow-overlap': true,
  32080. visibility: layerInfo.visible,
  32081. 'icon-offset': [style.offsetX * image.width || 0, style.offsetY * image.height || 0],
  32082. 'icon-rotate': iconRotateExpression || (layerInfo.style['rotation'] || 0) * 180 / Math.PI
  32083. },
  32084. minzoom: minzoom || 0,
  32085. maxzoom: maxzoom || 22
  32086. });
  32087. _this11._addLayerSucceeded();
  32088. });
  32089. } else if (style.type === 'SVG_POINT') {
  32090. var svgUrl = style.url;
  32091. if (!this._svgDiv) {
  32092. this._svgDiv = document.createElement('div');
  32093. document.body.appendChild(this._svgDiv);
  32094. }
  32095. this.getCanvasFromSVG(svgUrl, this._svgDiv, function (canvas) {
  32096. _this11.handleSvgColor(style, canvas);
  32097. var imgUrl = canvas.toDataURL('img/png');
  32098. imgUrl && _this11.map.loadImage(imgUrl, function (error, image) {
  32099. if (error) {
  32100. console.log(error);
  32101. }
  32102. var iconSize = Number.parseFloat((style.radius / canvas.width).toFixed(2)) * 2;
  32103. !_this11.map.hasImage(iconID) && _this11.map.addImage(iconID, image);
  32104. _this11._addLayer({
  32105. id: layerID,
  32106. type: 'symbol',
  32107. source: source,
  32108. layout: {
  32109. 'icon-image': iconID,
  32110. 'icon-size': iconSizeExpression || iconSize,
  32111. 'icon-anchor': 'bottom-right',
  32112. visibility: layerInfo.visible,
  32113. 'icon-offset': [style.offsetX * canvas.width || 0, style.offsetY * canvas.height || 0],
  32114. 'icon-allow-overlap': true,
  32115. 'icon-rotate': iconRotateExpression || (layerInfo.style['rotation'] || 0) * 180 / Math.PI
  32116. },
  32117. minzoom: minzoom || 0,
  32118. maxzoom: maxzoom || 22
  32119. });
  32120. _this11._addLayerSucceeded();
  32121. });
  32122. });
  32123. } else {
  32124. var layerStyle = {
  32125. style: this._transformStyleToMapBoxGl(style, layerInfo.featureType),
  32126. layout: {
  32127. visibility: layerInfo.visible
  32128. }
  32129. };
  32130. this._addOverlayToMap('POINT', source, layerID, layerStyle, minzoom, maxzoom);
  32131. this._addLayerSucceeded();
  32132. }
  32133. }
  32134. }, {
  32135. key: "_createUniqueLayer",
  32136. value: function _createUniqueLayer(layerInfo, features) {
  32137. var styleGroup = this.getUniqueStyleGroup(layerInfo, features);
  32138. features = this.getFilterFeatures(layerInfo.filterCondition, features);
  32139. var layerID = layerInfo.layerID,
  32140. minzoom = layerInfo.minzoom,
  32141. maxzoom = layerInfo.maxzoom,
  32142. style = layerInfo.style;
  32143. var themeField = layerInfo.themeSetting.themeField;
  32144. Object.keys(features[0].properties).forEach(function (key) {
  32145. key.toLocaleUpperCase() === themeField.toLocaleUpperCase() && (themeField = key);
  32146. });
  32147. var type = layerInfo.featureType;
  32148. var expression = ['match', ['get', 'index']];
  32149. features.forEach(function (row) {
  32150. styleGroup.forEach(function (item) {
  32151. if (item.value === row.properties[themeField]) {
  32152. expression.push(row.properties['index'], item.color);
  32153. }
  32154. });
  32155. });
  32156. expression.push('#ffffff');
  32157. this._initLegendConfigInfo(layerInfo, styleGroup);
  32158. var visible = layerInfo.visible;
  32159. var layerStyle = {
  32160. style: this._transformStyleToMapBoxGl(style, type, expression),
  32161. layout: {
  32162. visibility: visible
  32163. }
  32164. };
  32165. var source = {
  32166. type: 'geojson',
  32167. data: {
  32168. type: 'FeatureCollection',
  32169. features: features
  32170. }
  32171. };
  32172. this._addOverlayToMap(type, source, layerID, layerStyle, minzoom, maxzoom);
  32173. type === 'POLYGON' && style.strokeColor && this._addStrokeLineForPoly(style, layerID, layerID + '-strokeLine', visible, minzoom, maxzoom);
  32174. this._addLayerSucceeded();
  32175. }
  32176. }, {
  32177. key: "_getWMTSUrl",
  32178. value: function _getWMTSUrl(options) {
  32179. if (options.requestEncoding === 'REST' && options.restResourceURL) {
  32180. return options.restResourceURL.replace('{Style}', options.style || '').replace('{TileMatrixSet}', options.tileMatrixSet).replace('{TileRow}', '{y}').replace('{TileCol}', '{x}').replace('{TileMatrix}', '{z}');
  32181. }
  32182. var obj = {
  32183. service: 'WMTS',
  32184. request: 'GetTile',
  32185. version: '1.0.0',
  32186. style: options.style || '',
  32187. layer: options.layer,
  32188. tilematrixSet: options.tileMatrixSet,
  32189. format: 'image/png',
  32190. tilematrix: '{z}',
  32191. tilerow: '{y}',
  32192. tilecol: '{x}'
  32193. };
  32194. return "".concat(options.kvpResourceUrl).concat(this._getParamString(obj, options.kvpResourceUrl));
  32195. }
  32196. }, {
  32197. key: "_createMarkerLayer",
  32198. value: function _createMarkerLayer(layerInfo, features) {
  32199. var _this12 = this;
  32200. var minzoom = layerInfo.minzoom,
  32201. maxzoom = layerInfo.maxzoom;
  32202. var marker_src = {};
  32203. features = features || [];
  32204. features.forEach(function (feature) {
  32205. var defaultStyle = feature.dv_v5_markerStyle;
  32206. var geomType = feature.geometry.type.toUpperCase();
  32207. if (geomType === 'POINT' && defaultStyle.text) {
  32208. geomType = 'TEXT';
  32209. }
  32210. if (geomType === 'POINT' && defaultStyle.src && defaultStyle.src.indexOf('http://') === -1 && defaultStyle.src.indexOf('https://') === -1) {
  32211. defaultStyle.src = _this12.serverUrl + defaultStyle.src;
  32212. }
  32213. if (!marker_src[defaultStyle.src]) {
  32214. marker_src[defaultStyle.src] = defaultStyle;
  32215. }
  32216. });
  32217. var loadImagePromise = function loadImagePromise(src, defaultStyle) {
  32218. return new Promise(function (resolve, reject) {
  32219. if (src.indexOf('svg') < 0) {
  32220. _this12.map.loadImage(src, function (error, image) {
  32221. if (error) {
  32222. console.log(error);
  32223. resolve();
  32224. return;
  32225. }
  32226. !_this12.map.hasImage(src) && _this12.map.addImage(src, image);
  32227. resolve(src);
  32228. });
  32229. } else {
  32230. if (!_this12._svgDiv) {
  32231. _this12._svgDiv = document.createElement('div');
  32232. document.body.appendChild(_this12._svgDiv);
  32233. }
  32234. _this12.getCanvasFromSVG(src, _this12._svgDiv, function (canvas) {
  32235. _this12.handleSvgColor(defaultStyle, canvas);
  32236. _this12.map.loadImage(canvas.toDataURL('img/png'), function (error, image) {
  32237. if (error) {
  32238. console.log(error);
  32239. resolve();
  32240. return;
  32241. }
  32242. !_this12.map.hasImage(src) && _this12.map.addImage(src, image);
  32243. resolve(src);
  32244. });
  32245. });
  32246. }
  32247. });
  32248. };
  32249. var promiseList = [];
  32250. for (var src in marker_src) {
  32251. promiseList.push(loadImagePromise(src, marker_src[src]));
  32252. }
  32253. Promise.all(promiseList).then(function (images) {
  32254. for (var i = 0; i < features.length; i++) {
  32255. var feature = features[i];
  32256. var defaultStyle = feature.dv_v5_markerStyle;
  32257. var geomType = feature.geometry.type.toUpperCase();
  32258. if (geomType === 'POINT' && defaultStyle.text) {
  32259. geomType = 'TEXT';
  32260. }
  32261. var featureInfo = _this12.setFeatureInfo(feature);
  32262. feature.properties['useStyle'] = defaultStyle;
  32263. feature.properties['featureInfo'] = featureInfo;
  32264. var source = {
  32265. type: 'geojson',
  32266. data: feature
  32267. };
  32268. var index = feature.properties.index;
  32269. var layerID = geomType + '-' + index;
  32270. if (geomType === 'POINT' && defaultStyle.src) {
  32271. if (!images.includes(defaultStyle.src)) {
  32272. continue;
  32273. }
  32274. _this12._addLayer({
  32275. id: layerID,
  32276. type: 'symbol',
  32277. source: source,
  32278. layout: {
  32279. 'icon-image': defaultStyle.src,
  32280. 'icon-size': defaultStyle.scale,
  32281. visibility: layerInfo.visible
  32282. },
  32283. minzoom: minzoom || 0,
  32284. maxzoom: maxzoom || 22
  32285. });
  32286. }
  32287. if (!defaultStyle.src) {
  32288. var layeStyle = {
  32289. layout: {}
  32290. };
  32291. if (geomType === 'LINESTRING' && defaultStyle.lineCap) {
  32292. geomType = 'LINE';
  32293. layeStyle.layout = {
  32294. 'line-cap': defaultStyle.lineCap
  32295. };
  32296. }
  32297. var visible = layerInfo.visible;
  32298. layeStyle.layout.visibility = visible;
  32299. layeStyle.style = _this12._transformStyleToMapBoxGl(defaultStyle, geomType);
  32300. _this12._addOverlayToMap(geomType, source, layerID, layeStyle, minzoom, maxzoom);
  32301. geomType === 'POLYGON' && defaultStyle.strokeColor && _this12._addStrokeLineForPoly(defaultStyle, layerID, layerID + '-strokeLine', visible, minzoom, maxzoom);
  32302. }
  32303. }
  32304. _this12._addLayerSucceeded();
  32305. });
  32306. }
  32307. }, {
  32308. key: "_createHeatLayer",
  32309. value: function _createHeatLayer(layerInfo, features) {
  32310. var minzoom = layerInfo.minzoom,
  32311. maxzoom = layerInfo.maxzoom;
  32312. var style = layerInfo.themeSetting;
  32313. var layerOption = {
  32314. gradient: style.colors.slice(),
  32315. radius: parseInt(style.radius)
  32316. };
  32317. var customSettings = style.customSettings;
  32318. for (var i in customSettings) {
  32319. layerOption.gradient[i] = customSettings[i];
  32320. }
  32321. if (style.weight) {
  32322. this._changeWeight(features, style.weight);
  32323. }
  32324. var color = ['interpolate', ['linear'], ['heatmap-density']];
  32325. var length = layerOption.gradient.length;
  32326. var step = parseFloat((1 / length).toFixed(2));
  32327. layerOption.gradient.forEach(function (item, index) {
  32328. color.push(index * step);
  32329. if (index === 0) {
  32330. item = _mapboxGlEnhance.default.supermap.Util.hexToRgba(item, 0);
  32331. }
  32332. color.push(item);
  32333. });
  32334. this._initLegendConfigInfo(layerInfo, layerOption.gradient);
  32335. var paint = {
  32336. 'heatmap-color': color,
  32337. 'heatmap-radius': style.radius + 15,
  32338. 'heatmap-intensity': {
  32339. base: 1,
  32340. stops: [[0, 0.8], [22, 1]]
  32341. }
  32342. };
  32343. if (features[0].weight && features.length >= 4) {
  32344. var weight = [];
  32345. features.forEach(function (item) {
  32346. weight.push(item.weight);
  32347. });
  32348. var max = SuperMap.ArrayStatistic.getMax(weight);
  32349. var min = SuperMap.ArrayStatistic.getMin(weight);
  32350. paint['heatmap-weight'] = ['interpolate', ['linear'], ['get', 'weight'], min, 0, max, 1];
  32351. }
  32352. this._addLayer({
  32353. id: layerInfo.layerID,
  32354. type: 'heatmap',
  32355. source: {
  32356. type: 'geojson',
  32357. data: {
  32358. type: 'FeatureCollection',
  32359. features: features
  32360. }
  32361. },
  32362. paint: paint,
  32363. layout: {
  32364. visibility: layerInfo.visible
  32365. },
  32366. minzoom: minzoom || 0,
  32367. maxzoom: maxzoom || 22
  32368. });
  32369. this._addLayerSucceeded();
  32370. }
  32371. }, {
  32372. key: "_changeWeight",
  32373. value: function _changeWeight(features, weightFeild) {
  32374. this._fieldMaxValue = {};
  32375. this._getMaxValue(features, weightFeild);
  32376. var maxValue = this._fieldMaxValue[weightFeild];
  32377. features.forEach(function (feature) {
  32378. var attributes = feature.properties;
  32379. var value = attributes[weightFeild];
  32380. feature['weight'] = value / maxValue;
  32381. });
  32382. }
  32383. }, {
  32384. key: "_getMaxValue",
  32385. value: function _getMaxValue(features, weightField) {
  32386. var values = [];
  32387. var attributes;
  32388. var field = weightField;
  32389. if (this._fieldMaxValue[field]) {
  32390. return;
  32391. }
  32392. features.forEach(function (feature) {
  32393. attributes = feature.properties;
  32394. attributes && parseFloat(attributes[field]) && values.push(parseFloat(attributes[field]));
  32395. });
  32396. this._fieldMaxValue[field] = SuperMap.ArrayStatistic.getArrayStatistic(values, 'Maximum');
  32397. }
  32398. }, {
  32399. key: "_createRangeLayer",
  32400. value: function _createRangeLayer(layerInfo, features) {
  32401. var fieldName = layerInfo.themeSetting.themeField;
  32402. var featureType = layerInfo.featureType;
  32403. var minzoom = layerInfo.minzoom,
  32404. maxzoom = layerInfo.maxzoom,
  32405. style = layerInfo.style;
  32406. var styleGroups = this.getRangeStyleGroup(layerInfo, features);
  32407. features = this.getFilterFeatures(layerInfo.filterCondition, features);
  32408. var expression = ['match', ['get', 'index']];
  32409. var datas = features.filter(function (row, index, arr) {
  32410. var tartget = parseFloat(row.properties[fieldName]);
  32411. if (!tartget && tartget !== 0) {
  32412. return false;
  32413. }
  32414. if (styleGroups) {
  32415. for (var i = 0; i < styleGroups.length; i++) {
  32416. if (styleGroups[i].start <= tartget && tartget < styleGroups[i].end) {
  32417. expression.push(row.properties['index'], styleGroups[i].color);
  32418. break;
  32419. }
  32420. }
  32421. }
  32422. return true;
  32423. }, this);
  32424. expression.push('rgba(0, 0, 0, 0)');
  32425. var source = {
  32426. type: 'geojson',
  32427. data: {
  32428. type: 'FeatureCollection',
  32429. features: datas
  32430. }
  32431. };
  32432. this._initLegendConfigInfo(layerInfo, styleGroups);
  32433. var layerStyle = {
  32434. layout: {}
  32435. };
  32436. if (featureType === 'LINE' && style.lineCap) {
  32437. layerStyle.layout = {
  32438. 'line-cap': style.lineCap
  32439. };
  32440. }
  32441. var visible = layerInfo.visible;
  32442. layerStyle.layout.visibility = visible;
  32443. layerStyle.style = this._transformStyleToMapBoxGl(style, featureType, expression);
  32444. var layerID = layerInfo.layerID;
  32445. this._addOverlayToMap(featureType, source, layerID, layerStyle, minzoom, maxzoom);
  32446. featureType === 'POLYGON' && style.strokeColor && this._addStrokeLineForPoly(style, layerID, layerID + '-strokeLine', visible, minzoom, maxzoom);
  32447. this._addLayerSucceeded();
  32448. }
  32449. }, {
  32450. key: "_sendMapToUser",
  32451. value: function _sendMapToUser(count, layersLen) {
  32452. var _this13 = this;
  32453. if (count === layersLen) {
  32454. this._sourceListModel = new _SourceListModel.default({
  32455. map: this.map
  32456. });
  32457. for (var layerID in this._legendList) {
  32458. this._sourceListModel.addSourceStyle(layerID, this._legendList[layerID]);
  32459. }
  32460. var exsitLayers = this._layers.filter(function (layer) {
  32461. return !!_this13.map.getLayer(layer.layerID);
  32462. });
  32463. for (var index = exsitLayers.length - 2; index > -1; index--) {
  32464. var targetlayerId = exsitLayers[index].layerID;
  32465. var beforLayerId = exsitLayers[index + 1].layerID;
  32466. this.map.moveLayer(targetlayerId, beforLayerId);
  32467. if (this.map.getLayer("".concat(targetlayerId, "-strokeLine"))) {
  32468. this.map.moveLayer("".concat(targetlayerId, "-strokeLine"), beforLayerId);
  32469. }
  32470. for (var _index = 1; _index < this.expectLayerLen + 1; _index++) {
  32471. if (this.map.getLayer("".concat(targetlayerId, "-additional-").concat(_index))) {
  32472. this.map.moveLayer("".concat(targetlayerId, "-additional-").concat(_index), beforLayerId);
  32473. } else {
  32474. break;
  32475. }
  32476. }
  32477. if (this.map.getLayer("".concat(targetlayerId, "-label"))) {
  32478. this.map.moveLayer("".concat(targetlayerId, "-label"));
  32479. }
  32480. }
  32481. this.triggerEvent('addlayerssucceeded', {
  32482. map: this.map,
  32483. mapparams: this.mapParams,
  32484. layers: this._layers
  32485. });
  32486. }
  32487. }
  32488. }, {
  32489. key: "_getParamString",
  32490. value: function _getParamString(obj, existingUrl) {
  32491. var uppercase = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  32492. var params = [];
  32493. for (var i in obj) {
  32494. params.push((uppercase ? i.toUpperCase() : i) + '=' + obj[i]);
  32495. }
  32496. return (!existingUrl || existingUrl.indexOf('?') === -1 ? '?' : '&') + params.join('&');
  32497. }
  32498. }, {
  32499. key: "_transformStyleToMapBoxGl",
  32500. value: function _transformStyleToMapBoxGl(style, type, expression, expressionType) {
  32501. var transTable = {};
  32502. if ((style.type === 'POINT' || style.type === 'BASIC_POINT' || type === 'POINT') && type !== 'LINE') {
  32503. transTable = {
  32504. fillColor: 'circle-color',
  32505. strokeWidth: 'circle-stroke-width',
  32506. fillOpacity: 'circle-opacity',
  32507. radius: 'circle-radius',
  32508. strokeColor: 'circle-stroke-color',
  32509. strokeOpacity: 'circle-stroke-opacity'
  32510. };
  32511. } else if (['LINE', 'LINESTRING', 'MULTILINESTRING'].includes(type)) {
  32512. transTable = {
  32513. strokeWidth: 'line-width',
  32514. strokeColor: 'line-color',
  32515. strokeOpacity: 'line-opacity'
  32516. };
  32517. } else if (['REGION', 'POLYGON', 'MULTIPOLYGON'].includes(type)) {
  32518. transTable = {
  32519. fillColor: 'fill-color',
  32520. fillOpacity: 'fill-opacity'
  32521. };
  32522. }
  32523. var newObj = {};
  32524. for (var item in style) {
  32525. if (transTable[item]) {
  32526. newObj[transTable[item]] = style[item];
  32527. }
  32528. }
  32529. if (expression) {
  32530. if (expressionType) {
  32531. newObj[expressionType] = expression;
  32532. } else if (newObj['circle-color']) {
  32533. newObj['circle-color'] = expression;
  32534. } else if (newObj['line-color']) {
  32535. newObj['line-color'] = expression;
  32536. } else {
  32537. newObj['fill-color'] = expression;
  32538. }
  32539. }
  32540. if (style.lineDash && style.lineDash !== 'solid' && type === 'LINE') {
  32541. newObj['line-dasharray'] = this.getDashStyle(style.lineDash);
  32542. }
  32543. if (style.type === 'POINT' || style.type === 'BASIC_POINT' || type === 'POINT') {
  32544. var offsetX = style.offsetX || 0;
  32545. var offsetY = style.offsetY || 0;
  32546. newObj['circle-translate'] = [offsetX * style['radius'], offsetY * style['radius']];
  32547. }
  32548. return newObj;
  32549. }
  32550. }, {
  32551. key: "_addOverlayToMap",
  32552. value: function _addOverlayToMap(type, source, layerID, layerStyle, minzoom, maxzoom) {
  32553. var mbglTypeMap = {
  32554. POINT: 'circle',
  32555. LINE: 'line',
  32556. POLYGON: 'fill'
  32557. };
  32558. var mbglType = mbglTypeMap[type];
  32559. if (mbglType === 'circle' || mbglType === 'line' || mbglType === 'fill') {
  32560. this._addLayer({
  32561. id: layerID,
  32562. type: mbglType,
  32563. source: source,
  32564. paint: layerStyle.style,
  32565. layout: layerStyle.layout || {},
  32566. minzoom: minzoom || 0,
  32567. maxzoom: maxzoom || 22
  32568. });
  32569. }
  32570. }
  32571. }, {
  32572. key: "_addBaselayer",
  32573. value: function _addBaselayer(url, layerID) {
  32574. var visibility = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
  32575. var minzoom = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
  32576. var maxzoom = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 22;
  32577. var isIserver = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
  32578. var bounds = arguments.length > 6 ? arguments[6] : undefined;
  32579. var source = {
  32580. type: 'raster',
  32581. tiles: url,
  32582. tileSize: isIserver ? this.rasterTileSize : 256,
  32583. rasterSource: isIserver ? 'iserver' : '',
  32584. prjCoordSys: isIserver ? {
  32585. epsgCode: this.baseProjection.split(':')[1]
  32586. } : '',
  32587. proxy: this.baseLayerProxy
  32588. };
  32589. if (bounds) {
  32590. source.bounds = bounds;
  32591. }
  32592. this._addLayer({
  32593. id: layerID,
  32594. type: 'raster',
  32595. source: source,
  32596. minzoom: minzoom || 0,
  32597. maxzoom: maxzoom || 22,
  32598. layout: {
  32599. visibility: visibility ? 'visible' : 'none'
  32600. }
  32601. });
  32602. this.baseLayerProxy = null;
  32603. }
  32604. }, {
  32605. key: "_addStrokeLineForPoly",
  32606. value: function _addStrokeLineForPoly(style, source, layerID, visible, minzoom, maxzoom) {
  32607. var lineStyle = {
  32608. style: this._transformStyleToMapBoxGl(style, 'LINE'),
  32609. layout: {
  32610. visibility: visible
  32611. }
  32612. };
  32613. this._addOverlayToMap('LINE', source, layerID, lineStyle, minzoom, maxzoom);
  32614. }
  32615. }, {
  32616. key: "_initLegendConfigInfo",
  32617. value: function _initLegendConfigInfo(layerInfo, style) {
  32618. if (!this._legendList[layerInfo.layerID]) {
  32619. this._legendList[layerInfo.layerID] = {
  32620. layerType: layerInfo.layerType,
  32621. featureType: layerInfo.featureType,
  32622. layerId: layerInfo.layerID,
  32623. themeField: layerInfo.layerType === 'HEAT' ? layerInfo.themeSetting.weight : layerInfo.themeSetting.themeField,
  32624. styleGroup: style
  32625. };
  32626. }
  32627. }
  32628. }, {
  32629. key: "_createMvtLayer",
  32630. value: function _createMvtLayer(info, layerInfo, featureType) {
  32631. var style = this._getDataVectorTileStyle(featureType);
  32632. var paint = this._transformStyleToMapBoxGl(style, featureType);
  32633. var url = info.url + '/tileFeature.mvt';
  32634. var origin = _mapboxGlEnhance.default.CRS.get(this.baseProjection).getOrigin();
  32635. var minzoom = layerInfo.minzoom,
  32636. maxzoom = layerInfo.maxzoom;
  32637. url += "?&returnAttributes=true&width=512&height=512&x={x}&y={y}&scale={scale}&origin={x:".concat(origin[0], ",y:").concat(origin[1], "}");
  32638. this._addLayer({
  32639. id: layerInfo.layerID,
  32640. type: style.mbglType,
  32641. source: {
  32642. type: 'vector',
  32643. tiles: [url],
  32644. proxy: this.webMapService.handleProxy('image')
  32645. },
  32646. 'source-layer': "".concat(info.datasetName, "@").concat(info.datasourceName),
  32647. paint: paint,
  32648. layout: {
  32649. visibility: layerInfo.visible ? 'visible' : 'none'
  32650. },
  32651. minzoom: minzoom || 0,
  32652. maxzoom: maxzoom || 22
  32653. });
  32654. this._addLayerSucceeded();
  32655. }
  32656. }, {
  32657. key: "_getDataVectorTileStyle",
  32658. value: function _getDataVectorTileStyle(featureType) {
  32659. var styleParameters = {
  32660. radius: 8,
  32661. fillColor: '#EE4D5A',
  32662. fillOpacity: 0.9,
  32663. strokeColor: '#ffffff',
  32664. strokeWidth: 1,
  32665. strokeOpacity: 1,
  32666. lineDash: 'solid',
  32667. type: 'BASIC_POINT',
  32668. mbglType: 'circle'
  32669. };
  32670. if (['LINE', 'LINESTRING', 'MULTILINESTRING'].includes(featureType)) {
  32671. styleParameters.strokeColor = '#4CC8A3';
  32672. styleParameters.strokeWidth = 2;
  32673. styleParameters.mbglType = 'line';
  32674. } else if (['REGION', 'POLYGON', 'MULTIPOLYGON'].includes(featureType)) {
  32675. styleParameters.fillColor = '#826DBA';
  32676. styleParameters.mbglType = 'fill';
  32677. }
  32678. return styleParameters;
  32679. }
  32680. }, {
  32681. key: "_unproject",
  32682. value: function _unproject(point) {
  32683. var sourceProjection = this._unprojectProjection || this.baseProjection;
  32684. if (sourceProjection === 'EPSG:4326') {
  32685. return point;
  32686. }
  32687. var coor = (0, _proj.default)(sourceProjection, 'EPSG:4326', point);
  32688. var proj = _proj.default.defs(sourceProjection);
  32689. if (proj.axis && proj.axis.indexOf('ne') === 0) {
  32690. coor.reverse();
  32691. }
  32692. return coor;
  32693. }
  32694. }, {
  32695. key: "_getMapCenter",
  32696. value: function _getMapCenter(mapInfo) {
  32697. var center;
  32698. center = mapInfo.center && [mapInfo.center.x, mapInfo.center.y];
  32699. if (!center) {
  32700. center = [0, 0];
  32701. }
  32702. center = this._unproject(center);
  32703. center = new _mapboxGlEnhance.default.LngLat(center[0], center[1]);
  32704. return center;
  32705. }
  32706. }, {
  32707. key: "_getLabelFontFamily",
  32708. value: function _getLabelFontFamily(mapInfo) {
  32709. var fonts = [];
  32710. var layers = mapInfo.layers;
  32711. if (layers && layers.length > 0) {
  32712. layers.forEach(function (layer) {
  32713. layer.labelStyle && fonts.push(layer.labelStyle.fontFamily);
  32714. }, this);
  32715. }
  32716. fonts.push("'supermapol-icons'");
  32717. var fontFamilys = fonts.join(',');
  32718. return fontFamilys;
  32719. }
  32720. }, {
  32721. key: "_getTiandituUrl",
  32722. value: function _getTiandituUrl(mapInfo) {
  32723. var re = /t0/gi;
  32724. var tiandituUrls = {
  32725. tiandituUrl: [],
  32726. labelUrl: []
  32727. };
  32728. var layerType = mapInfo.baseLayer.layerType.split('_')[1].toLowerCase();
  32729. var isLabel = Boolean(mapInfo.baseLayer.labelLayerVisible);
  32730. var url = "https://t0.tianditu.gov.cn/{layer}_{proj}/wmts?tk=".concat(this.tiandituKey);
  32731. var labelUrl = url;
  32732. var layerLabelMap = {
  32733. vec: 'cva',
  32734. ter: 'cta',
  32735. img: 'cia'
  32736. };
  32737. var tilematrixSet = this.baseProjection === 'EPSG:4326' ? 'c' : 'w';
  32738. var options = {
  32739. service: 'WMTS',
  32740. request: 'GetTile',
  32741. style: 'default',
  32742. version: '1.0.0',
  32743. layer: layerType,
  32744. tilematrixSet: tilematrixSet,
  32745. format: 'tiles',
  32746. width: 256,
  32747. height: 256
  32748. };
  32749. url += this._getParamString(options, url) + '&tilematrix={z}&tilerow={y}&tilecol={x}';
  32750. var tiandituUrl = url.replace('{layer}', layerType).replace('{proj}', tilematrixSet);
  32751. var tiandituUrlArr = [];
  32752. for (var i = 0; i < 8; i++) {
  32753. tiandituUrlArr.push(tiandituUrl.replace(re, "t".concat(i)));
  32754. }
  32755. tiandituUrls['tiandituUrl'] = tiandituUrlArr;
  32756. if (isLabel) {
  32757. var labelLayer = layerLabelMap[layerType];
  32758. options.layer = labelLayer;
  32759. labelUrl += this._getParamString(options, labelUrl) + '&tilematrix={z}&tilerow={y}&tilecol={x}';
  32760. labelUrl = labelUrl.replace('{layer}', labelLayer).replace('{proj}', tilematrixSet);
  32761. var labelUrlArr = [];
  32762. for (var _i3 = 0; _i3 < 8; _i3++) {
  32763. labelUrlArr.push(labelUrl.replace(re, "t".concat(_i3)));
  32764. }
  32765. tiandituUrls['labelUrl'] = labelUrlArr;
  32766. }
  32767. return tiandituUrls;
  32768. }
  32769. }, {
  32770. key: "_defineProj4",
  32771. value: function _defineProj4(projection) {
  32772. var epsgCode = projection;
  32773. var epsgValue;
  32774. if (!projection.split(':')[1]) {
  32775. epsgCode = (0, _epsgDefine.toEpsgCode)(projection);
  32776. epsgValue = projection;
  32777. }
  32778. var defaultValue = (0, _epsgDefine.getProjection)(epsgCode);
  32779. var defValue = epsgValue || defaultValue;
  32780. if (!defValue) {
  32781. console.error("".concat(epsgCode, " not define"));
  32782. } else {
  32783. !_proj.default.defs(epsgCode) && _proj.default.defs(epsgCode, defValue);
  32784. !defaultValue && (0, _epsgDefine.registerProjection)(epsgCode, defValue);
  32785. }
  32786. return epsgCode;
  32787. }
  32788. }, {
  32789. key: "_addLayer",
  32790. value: function _addLayer(layerInfo) {
  32791. var _layerInfo = layerInfo,
  32792. id = _layerInfo.id;
  32793. this._cacheLayerId.push(id);
  32794. layerInfo = Object.assign(layerInfo, {
  32795. id: id
  32796. });
  32797. if (this.map.getLayer(id)) {
  32798. if (this.checkSameLayer && this._isSameRasterLayer(id, layerInfo)) return;
  32799. this._updateLayer(layerInfo);
  32800. return;
  32801. }
  32802. this.map.addLayer(layerInfo);
  32803. }
  32804. }, {
  32805. key: "_isSameRasterLayer",
  32806. value: function _isSameRasterLayer(id, layerInfo) {
  32807. var _layerInfo$source = layerInfo.source,
  32808. type = _layerInfo$source.type,
  32809. tiles = _layerInfo$source.tiles;
  32810. if (type === 'raster') {
  32811. var source = this.map.getSource(id);
  32812. if (type === source.type && tiles && source.tiles && tiles[0] === source.tiles[0]) {
  32813. return true;
  32814. }
  32815. }
  32816. return false;
  32817. }
  32818. }, {
  32819. key: "setLayersVisible",
  32820. value: function setLayersVisible(isShow, ignoreIds) {
  32821. var _this14 = this;
  32822. var show = isShow ? 'visible' : 'none';
  32823. if (this._cacheLayerId.length) {
  32824. this._cacheLayerId.forEach(function (layerId) {
  32825. if (ignoreIds && !ignoreIds.includes(layerId) || !ignoreIds) {
  32826. _this14.map.setLayoutProperty(layerId, 'visibility', show);
  32827. }
  32828. });
  32829. }
  32830. }
  32831. }, {
  32832. key: "cleanWebMap",
  32833. value: function cleanWebMap() {
  32834. if (this.map) {
  32835. this.triggerEvent('beforeremovemap', {});
  32836. this.map.remove();
  32837. this.map = null;
  32838. this._legendList = {};
  32839. this._sourceListModel = null;
  32840. this.center = null;
  32841. this.zoom = null;
  32842. this._dataflowService && this._dataflowService.off('messageSucceeded', this._handleDataflowFeaturesCallback);
  32843. this._unprojectProjection = null;
  32844. }
  32845. if (this._layerTimerList.length) {
  32846. this._layerTimerList.forEach(function (timer) {
  32847. clearInterval(timer);
  32848. });
  32849. this._layerTimerList = [];
  32850. }
  32851. }
  32852. }, {
  32853. key: "centerValid",
  32854. value: function centerValid(center) {
  32855. if (center && (center.length > 0 || (0, _typeof2.default)(center) === _mapboxGlEnhance.default.LngLat || center.lng)) {
  32856. return true;
  32857. }
  32858. return false;
  32859. }
  32860. }, {
  32861. key: "_getResolution",
  32862. value: function _getResolution(bounds) {
  32863. var tileSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 512.0;
  32864. if (bounds.leftBottom && bounds.rightTop) {
  32865. return Math.max(bounds.rightTop.x - bounds.leftBottom.x, bounds.rightTop.y - bounds.leftBottom.y) / tileSize;
  32866. }
  32867. return Math.max(bounds[2] - bounds[0], bounds[3] - bounds[1]) / tileSize;
  32868. }
  32869. }, {
  32870. key: "_transformScaleToZoom",
  32871. value: function _transformScaleToZoom(scale, crs) {
  32872. var scale_0 = 295829515.2024169;
  32873. if ((crs || this.map.getCRS()).epsgCode !== 'EPSG:3857') {
  32874. scale_0 = 295295895;
  32875. }
  32876. var scaleDenominator = scale.split(':')[1];
  32877. return Math.min(24, +Math.log2(scale_0 / +scaleDenominator).toFixed(2));
  32878. }
  32879. }, {
  32880. key: "_updateLayer",
  32881. value: function _updateLayer(layerInfo) {
  32882. var _this15 = this;
  32883. var id = layerInfo.id,
  32884. paint = layerInfo.paint,
  32885. _layerInfo$source2 = layerInfo.source,
  32886. type = _layerInfo$source2.type,
  32887. tiles = _layerInfo$source2.tiles,
  32888. data = _layerInfo$source2.data,
  32889. proxy = _layerInfo$source2.proxy;
  32890. var source = this.map.getSource(id);
  32891. if (source) {
  32892. if (type === 'geojson') {
  32893. Object.keys(paint).forEach(function (name) {
  32894. _this15.map.setPaintProperty(id, name, paint[name]);
  32895. });
  32896. source.setData(data);
  32897. } else if (type === 'raster') {
  32898. this._updateRasterSource(id, {
  32899. proxy: proxy,
  32900. tiles: tiles
  32901. });
  32902. }
  32903. }
  32904. }
  32905. }, {
  32906. key: "_updateRasterSource",
  32907. value: function _updateRasterSource(sourceId, options) {
  32908. if (!sourceId) {
  32909. return;
  32910. }
  32911. var source = this.map.getSource(sourceId);
  32912. Object.assign(source, options);
  32913. this.map.style.sourceCaches[sourceId].clearTiles();
  32914. this.map.style.sourceCaches[sourceId].update(this.map.transform);
  32915. this.map.triggerRepaint();
  32916. }
  32917. }, {
  32918. key: "updateOverlayLayer",
  32919. value: function updateOverlayLayer(layerInfo, features, mergeByField) {
  32920. if (features) {
  32921. this._initOverlayLayer(layerInfo, features, mergeByField);
  32922. } else {
  32923. var type = this.webMapService.getDatasourceType(layerInfo);
  32924. this.getLayerFeatures(layerInfo, this._taskID, type);
  32925. }
  32926. }
  32927. }, {
  32928. key: "getSourceListModel",
  32929. get: function get() {
  32930. return this._sourceListModel;
  32931. }
  32932. }]);
  32933. return WebMapViewModel;
  32934. }(_WebMapBase2.default);
  32935. exports.default = WebMapViewModel;
  32936. /***/ }),
  32937. /***/ "6e63":
  32938. /***/ (function(module, exports, __webpack_require__) {
  32939. /* WEBPACK VAR INJECTION */(function(global, module) {/**
  32940. * Lodash (Custom Build) <https://lodash.com/>
  32941. * Build: `lodash modularize exports="npm" -o ./`
  32942. * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
  32943. * Released under MIT license <https://lodash.com/license>
  32944. * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  32945. * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  32946. */
  32947. /** Used as the size to enable large array optimizations. */
  32948. var LARGE_ARRAY_SIZE = 200;
  32949. /** Used to stand-in for `undefined` hash values. */
  32950. var HASH_UNDEFINED = '__lodash_hash_undefined__';
  32951. /** Used to detect hot functions by number of calls within a span of milliseconds. */
  32952. var HOT_COUNT = 800,
  32953. HOT_SPAN = 16;
  32954. /** Used as references for various `Number` constants. */
  32955. var MAX_SAFE_INTEGER = 9007199254740991;
  32956. /** `Object#toString` result references. */
  32957. var argsTag = '[object Arguments]',
  32958. arrayTag = '[object Array]',
  32959. asyncTag = '[object AsyncFunction]',
  32960. boolTag = '[object Boolean]',
  32961. dateTag = '[object Date]',
  32962. errorTag = '[object Error]',
  32963. funcTag = '[object Function]',
  32964. genTag = '[object GeneratorFunction]',
  32965. mapTag = '[object Map]',
  32966. numberTag = '[object Number]',
  32967. nullTag = '[object Null]',
  32968. objectTag = '[object Object]',
  32969. proxyTag = '[object Proxy]',
  32970. regexpTag = '[object RegExp]',
  32971. setTag = '[object Set]',
  32972. stringTag = '[object String]',
  32973. undefinedTag = '[object Undefined]',
  32974. weakMapTag = '[object WeakMap]';
  32975. var arrayBufferTag = '[object ArrayBuffer]',
  32976. dataViewTag = '[object DataView]',
  32977. float32Tag = '[object Float32Array]',
  32978. float64Tag = '[object Float64Array]',
  32979. int8Tag = '[object Int8Array]',
  32980. int16Tag = '[object Int16Array]',
  32981. int32Tag = '[object Int32Array]',
  32982. uint8Tag = '[object Uint8Array]',
  32983. uint8ClampedTag = '[object Uint8ClampedArray]',
  32984. uint16Tag = '[object Uint16Array]',
  32985. uint32Tag = '[object Uint32Array]';
  32986. /**
  32987. * Used to match `RegExp`
  32988. * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
  32989. */
  32990. var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
  32991. /** Used to detect host constructors (Safari). */
  32992. var reIsHostCtor = /^\[object .+?Constructor\]$/;
  32993. /** Used to detect unsigned integer values. */
  32994. var reIsUint = /^(?:0|[1-9]\d*)$/;
  32995. /** Used to identify `toStringTag` values of typed arrays. */
  32996. var typedArrayTags = {};
  32997. typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
  32998. typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
  32999. typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
  33000. typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
  33001. typedArrayTags[uint32Tag] = true;
  33002. typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
  33003. typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
  33004. typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
  33005. typedArrayTags[errorTag] = typedArrayTags[funcTag] =
  33006. typedArrayTags[mapTag] = typedArrayTags[numberTag] =
  33007. typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
  33008. typedArrayTags[setTag] = typedArrayTags[stringTag] =
  33009. typedArrayTags[weakMapTag] = false;
  33010. /** Detect free variable `global` from Node.js. */
  33011. var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
  33012. /** Detect free variable `self`. */
  33013. var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
  33014. /** Used as a reference to the global object. */
  33015. var root = freeGlobal || freeSelf || Function('return this')();
  33016. /** Detect free variable `exports`. */
  33017. var freeExports = true && exports && !exports.nodeType && exports;
  33018. /** Detect free variable `module`. */
  33019. var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
  33020. /** Detect the popular CommonJS extension `module.exports`. */
  33021. var moduleExports = freeModule && freeModule.exports === freeExports;
  33022. /** Detect free variable `process` from Node.js. */
  33023. var freeProcess = moduleExports && freeGlobal.process;
  33024. /** Used to access faster Node.js helpers. */
  33025. var nodeUtil = (function() {
  33026. try {
  33027. // Use `util.types` for Node.js 10+.
  33028. var types = freeModule && freeModule.require && freeModule.require('util').types;
  33029. if (types) {
  33030. return types;
  33031. }
  33032. // Legacy `process.binding('util')` for Node.js < 10.
  33033. return freeProcess && freeProcess.binding && freeProcess.binding('util');
  33034. } catch (e) {}
  33035. }());
  33036. /* Node.js helper references. */
  33037. var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
  33038. /**
  33039. * A faster alternative to `Function#apply`, this function invokes `func`
  33040. * with the `this` binding of `thisArg` and the arguments of `args`.
  33041. *
  33042. * @private
  33043. * @param {Function} func The function to invoke.
  33044. * @param {*} thisArg The `this` binding of `func`.
  33045. * @param {Array} args The arguments to invoke `func` with.
  33046. * @returns {*} Returns the result of `func`.
  33047. */
  33048. function apply(func, thisArg, args) {
  33049. switch (args.length) {
  33050. case 0: return func.call(thisArg);
  33051. case 1: return func.call(thisArg, args[0]);
  33052. case 2: return func.call(thisArg, args[0], args[1]);
  33053. case 3: return func.call(thisArg, args[0], args[1], args[2]);
  33054. }
  33055. return func.apply(thisArg, args);
  33056. }
  33057. /**
  33058. * The base implementation of `_.times` without support for iteratee shorthands
  33059. * or max array length checks.
  33060. *
  33061. * @private
  33062. * @param {number} n The number of times to invoke `iteratee`.
  33063. * @param {Function} iteratee The function invoked per iteration.
  33064. * @returns {Array} Returns the array of results.
  33065. */
  33066. function baseTimes(n, iteratee) {
  33067. var index = -1,
  33068. result = Array(n);
  33069. while (++index < n) {
  33070. result[index] = iteratee(index);
  33071. }
  33072. return result;
  33073. }
  33074. /**
  33075. * The base implementation of `_.unary` without support for storing metadata.
  33076. *
  33077. * @private
  33078. * @param {Function} func The function to cap arguments for.
  33079. * @returns {Function} Returns the new capped function.
  33080. */
  33081. function baseUnary(func) {
  33082. return function(value) {
  33083. return func(value);
  33084. };
  33085. }
  33086. /**
  33087. * Gets the value at `key` of `object`.
  33088. *
  33089. * @private
  33090. * @param {Object} [object] The object to query.
  33091. * @param {string} key The key of the property to get.
  33092. * @returns {*} Returns the property value.
  33093. */
  33094. function getValue(object, key) {
  33095. return object == null ? undefined : object[key];
  33096. }
  33097. /**
  33098. * Creates a unary function that invokes `func` with its argument transformed.
  33099. *
  33100. * @private
  33101. * @param {Function} func The function to wrap.
  33102. * @param {Function} transform The argument transform.
  33103. * @returns {Function} Returns the new function.
  33104. */
  33105. function overArg(func, transform) {
  33106. return function(arg) {
  33107. return func(transform(arg));
  33108. };
  33109. }
  33110. /** Used for built-in method references. */
  33111. var arrayProto = Array.prototype,
  33112. funcProto = Function.prototype,
  33113. objectProto = Object.prototype;
  33114. /** Used to detect overreaching core-js shims. */
  33115. var coreJsData = root['__core-js_shared__'];
  33116. /** Used to resolve the decompiled source of functions. */
  33117. var funcToString = funcProto.toString;
  33118. /** Used to check objects for own properties. */
  33119. var hasOwnProperty = objectProto.hasOwnProperty;
  33120. /** Used to detect methods masquerading as native. */
  33121. var maskSrcKey = (function() {
  33122. var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
  33123. return uid ? ('Symbol(src)_1.' + uid) : '';
  33124. }());
  33125. /**
  33126. * Used to resolve the
  33127. * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
  33128. * of values.
  33129. */
  33130. var nativeObjectToString = objectProto.toString;
  33131. /** Used to infer the `Object` constructor. */
  33132. var objectCtorString = funcToString.call(Object);
  33133. /** Used to detect if a method is native. */
  33134. var reIsNative = RegExp('^' +
  33135. funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
  33136. .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
  33137. );
  33138. /** Built-in value references. */
  33139. var Buffer = moduleExports ? root.Buffer : undefined,
  33140. Symbol = root.Symbol,
  33141. Uint8Array = root.Uint8Array,
  33142. allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
  33143. getPrototype = overArg(Object.getPrototypeOf, Object),
  33144. objectCreate = Object.create,
  33145. propertyIsEnumerable = objectProto.propertyIsEnumerable,
  33146. splice = arrayProto.splice,
  33147. symToStringTag = Symbol ? Symbol.toStringTag : undefined;
  33148. var defineProperty = (function() {
  33149. try {
  33150. var func = getNative(Object, 'defineProperty');
  33151. func({}, '', {});
  33152. return func;
  33153. } catch (e) {}
  33154. }());
  33155. /* Built-in method references for those with the same name as other `lodash` methods. */
  33156. var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
  33157. nativeMax = Math.max,
  33158. nativeNow = Date.now;
  33159. /* Built-in method references that are verified to be native. */
  33160. var Map = getNative(root, 'Map'),
  33161. nativeCreate = getNative(Object, 'create');
  33162. /**
  33163. * The base implementation of `_.create` without support for assigning
  33164. * properties to the created object.
  33165. *
  33166. * @private
  33167. * @param {Object} proto The object to inherit from.
  33168. * @returns {Object} Returns the new object.
  33169. */
  33170. var baseCreate = (function() {
  33171. function object() {}
  33172. return function(proto) {
  33173. if (!isObject(proto)) {
  33174. return {};
  33175. }
  33176. if (objectCreate) {
  33177. return objectCreate(proto);
  33178. }
  33179. object.prototype = proto;
  33180. var result = new object;
  33181. object.prototype = undefined;
  33182. return result;
  33183. };
  33184. }());
  33185. /**
  33186. * Creates a hash object.
  33187. *
  33188. * @private
  33189. * @constructor
  33190. * @param {Array} [entries] The key-value pairs to cache.
  33191. */
  33192. function Hash(entries) {
  33193. var index = -1,
  33194. length = entries == null ? 0 : entries.length;
  33195. this.clear();
  33196. while (++index < length) {
  33197. var entry = entries[index];
  33198. this.set(entry[0], entry[1]);
  33199. }
  33200. }
  33201. /**
  33202. * Removes all key-value entries from the hash.
  33203. *
  33204. * @private
  33205. * @name clear
  33206. * @memberOf Hash
  33207. */
  33208. function hashClear() {
  33209. this.__data__ = nativeCreate ? nativeCreate(null) : {};
  33210. this.size = 0;
  33211. }
  33212. /**
  33213. * Removes `key` and its value from the hash.
  33214. *
  33215. * @private
  33216. * @name delete
  33217. * @memberOf Hash
  33218. * @param {Object} hash The hash to modify.
  33219. * @param {string} key The key of the value to remove.
  33220. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  33221. */
  33222. function hashDelete(key) {
  33223. var result = this.has(key) && delete this.__data__[key];
  33224. this.size -= result ? 1 : 0;
  33225. return result;
  33226. }
  33227. /**
  33228. * Gets the hash value for `key`.
  33229. *
  33230. * @private
  33231. * @name get
  33232. * @memberOf Hash
  33233. * @param {string} key The key of the value to get.
  33234. * @returns {*} Returns the entry value.
  33235. */
  33236. function hashGet(key) {
  33237. var data = this.__data__;
  33238. if (nativeCreate) {
  33239. var result = data[key];
  33240. return result === HASH_UNDEFINED ? undefined : result;
  33241. }
  33242. return hasOwnProperty.call(data, key) ? data[key] : undefined;
  33243. }
  33244. /**
  33245. * Checks if a hash value for `key` exists.
  33246. *
  33247. * @private
  33248. * @name has
  33249. * @memberOf Hash
  33250. * @param {string} key The key of the entry to check.
  33251. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  33252. */
  33253. function hashHas(key) {
  33254. var data = this.__data__;
  33255. return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
  33256. }
  33257. /**
  33258. * Sets the hash `key` to `value`.
  33259. *
  33260. * @private
  33261. * @name set
  33262. * @memberOf Hash
  33263. * @param {string} key The key of the value to set.
  33264. * @param {*} value The value to set.
  33265. * @returns {Object} Returns the hash instance.
  33266. */
  33267. function hashSet(key, value) {
  33268. var data = this.__data__;
  33269. this.size += this.has(key) ? 0 : 1;
  33270. data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
  33271. return this;
  33272. }
  33273. // Add methods to `Hash`.
  33274. Hash.prototype.clear = hashClear;
  33275. Hash.prototype['delete'] = hashDelete;
  33276. Hash.prototype.get = hashGet;
  33277. Hash.prototype.has = hashHas;
  33278. Hash.prototype.set = hashSet;
  33279. /**
  33280. * Creates an list cache object.
  33281. *
  33282. * @private
  33283. * @constructor
  33284. * @param {Array} [entries] The key-value pairs to cache.
  33285. */
  33286. function ListCache(entries) {
  33287. var index = -1,
  33288. length = entries == null ? 0 : entries.length;
  33289. this.clear();
  33290. while (++index < length) {
  33291. var entry = entries[index];
  33292. this.set(entry[0], entry[1]);
  33293. }
  33294. }
  33295. /**
  33296. * Removes all key-value entries from the list cache.
  33297. *
  33298. * @private
  33299. * @name clear
  33300. * @memberOf ListCache
  33301. */
  33302. function listCacheClear() {
  33303. this.__data__ = [];
  33304. this.size = 0;
  33305. }
  33306. /**
  33307. * Removes `key` and its value from the list cache.
  33308. *
  33309. * @private
  33310. * @name delete
  33311. * @memberOf ListCache
  33312. * @param {string} key The key of the value to remove.
  33313. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  33314. */
  33315. function listCacheDelete(key) {
  33316. var data = this.__data__,
  33317. index = assocIndexOf(data, key);
  33318. if (index < 0) {
  33319. return false;
  33320. }
  33321. var lastIndex = data.length - 1;
  33322. if (index == lastIndex) {
  33323. data.pop();
  33324. } else {
  33325. splice.call(data, index, 1);
  33326. }
  33327. --this.size;
  33328. return true;
  33329. }
  33330. /**
  33331. * Gets the list cache value for `key`.
  33332. *
  33333. * @private
  33334. * @name get
  33335. * @memberOf ListCache
  33336. * @param {string} key The key of the value to get.
  33337. * @returns {*} Returns the entry value.
  33338. */
  33339. function listCacheGet(key) {
  33340. var data = this.__data__,
  33341. index = assocIndexOf(data, key);
  33342. return index < 0 ? undefined : data[index][1];
  33343. }
  33344. /**
  33345. * Checks if a list cache value for `key` exists.
  33346. *
  33347. * @private
  33348. * @name has
  33349. * @memberOf ListCache
  33350. * @param {string} key The key of the entry to check.
  33351. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  33352. */
  33353. function listCacheHas(key) {
  33354. return assocIndexOf(this.__data__, key) > -1;
  33355. }
  33356. /**
  33357. * Sets the list cache `key` to `value`.
  33358. *
  33359. * @private
  33360. * @name set
  33361. * @memberOf ListCache
  33362. * @param {string} key The key of the value to set.
  33363. * @param {*} value The value to set.
  33364. * @returns {Object} Returns the list cache instance.
  33365. */
  33366. function listCacheSet(key, value) {
  33367. var data = this.__data__,
  33368. index = assocIndexOf(data, key);
  33369. if (index < 0) {
  33370. ++this.size;
  33371. data.push([key, value]);
  33372. } else {
  33373. data[index][1] = value;
  33374. }
  33375. return this;
  33376. }
  33377. // Add methods to `ListCache`.
  33378. ListCache.prototype.clear = listCacheClear;
  33379. ListCache.prototype['delete'] = listCacheDelete;
  33380. ListCache.prototype.get = listCacheGet;
  33381. ListCache.prototype.has = listCacheHas;
  33382. ListCache.prototype.set = listCacheSet;
  33383. /**
  33384. * Creates a map cache object to store key-value pairs.
  33385. *
  33386. * @private
  33387. * @constructor
  33388. * @param {Array} [entries] The key-value pairs to cache.
  33389. */
  33390. function MapCache(entries) {
  33391. var index = -1,
  33392. length = entries == null ? 0 : entries.length;
  33393. this.clear();
  33394. while (++index < length) {
  33395. var entry = entries[index];
  33396. this.set(entry[0], entry[1]);
  33397. }
  33398. }
  33399. /**
  33400. * Removes all key-value entries from the map.
  33401. *
  33402. * @private
  33403. * @name clear
  33404. * @memberOf MapCache
  33405. */
  33406. function mapCacheClear() {
  33407. this.size = 0;
  33408. this.__data__ = {
  33409. 'hash': new Hash,
  33410. 'map': new (Map || ListCache),
  33411. 'string': new Hash
  33412. };
  33413. }
  33414. /**
  33415. * Removes `key` and its value from the map.
  33416. *
  33417. * @private
  33418. * @name delete
  33419. * @memberOf MapCache
  33420. * @param {string} key The key of the value to remove.
  33421. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  33422. */
  33423. function mapCacheDelete(key) {
  33424. var result = getMapData(this, key)['delete'](key);
  33425. this.size -= result ? 1 : 0;
  33426. return result;
  33427. }
  33428. /**
  33429. * Gets the map value for `key`.
  33430. *
  33431. * @private
  33432. * @name get
  33433. * @memberOf MapCache
  33434. * @param {string} key The key of the value to get.
  33435. * @returns {*} Returns the entry value.
  33436. */
  33437. function mapCacheGet(key) {
  33438. return getMapData(this, key).get(key);
  33439. }
  33440. /**
  33441. * Checks if a map value for `key` exists.
  33442. *
  33443. * @private
  33444. * @name has
  33445. * @memberOf MapCache
  33446. * @param {string} key The key of the entry to check.
  33447. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  33448. */
  33449. function mapCacheHas(key) {
  33450. return getMapData(this, key).has(key);
  33451. }
  33452. /**
  33453. * Sets the map `key` to `value`.
  33454. *
  33455. * @private
  33456. * @name set
  33457. * @memberOf MapCache
  33458. * @param {string} key The key of the value to set.
  33459. * @param {*} value The value to set.
  33460. * @returns {Object} Returns the map cache instance.
  33461. */
  33462. function mapCacheSet(key, value) {
  33463. var data = getMapData(this, key),
  33464. size = data.size;
  33465. data.set(key, value);
  33466. this.size += data.size == size ? 0 : 1;
  33467. return this;
  33468. }
  33469. // Add methods to `MapCache`.
  33470. MapCache.prototype.clear = mapCacheClear;
  33471. MapCache.prototype['delete'] = mapCacheDelete;
  33472. MapCache.prototype.get = mapCacheGet;
  33473. MapCache.prototype.has = mapCacheHas;
  33474. MapCache.prototype.set = mapCacheSet;
  33475. /**
  33476. * Creates a stack cache object to store key-value pairs.
  33477. *
  33478. * @private
  33479. * @constructor
  33480. * @param {Array} [entries] The key-value pairs to cache.
  33481. */
  33482. function Stack(entries) {
  33483. var data = this.__data__ = new ListCache(entries);
  33484. this.size = data.size;
  33485. }
  33486. /**
  33487. * Removes all key-value entries from the stack.
  33488. *
  33489. * @private
  33490. * @name clear
  33491. * @memberOf Stack
  33492. */
  33493. function stackClear() {
  33494. this.__data__ = new ListCache;
  33495. this.size = 0;
  33496. }
  33497. /**
  33498. * Removes `key` and its value from the stack.
  33499. *
  33500. * @private
  33501. * @name delete
  33502. * @memberOf Stack
  33503. * @param {string} key The key of the value to remove.
  33504. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  33505. */
  33506. function stackDelete(key) {
  33507. var data = this.__data__,
  33508. result = data['delete'](key);
  33509. this.size = data.size;
  33510. return result;
  33511. }
  33512. /**
  33513. * Gets the stack value for `key`.
  33514. *
  33515. * @private
  33516. * @name get
  33517. * @memberOf Stack
  33518. * @param {string} key The key of the value to get.
  33519. * @returns {*} Returns the entry value.
  33520. */
  33521. function stackGet(key) {
  33522. return this.__data__.get(key);
  33523. }
  33524. /**
  33525. * Checks if a stack value for `key` exists.
  33526. *
  33527. * @private
  33528. * @name has
  33529. * @memberOf Stack
  33530. * @param {string} key The key of the entry to check.
  33531. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  33532. */
  33533. function stackHas(key) {
  33534. return this.__data__.has(key);
  33535. }
  33536. /**
  33537. * Sets the stack `key` to `value`.
  33538. *
  33539. * @private
  33540. * @name set
  33541. * @memberOf Stack
  33542. * @param {string} key The key of the value to set.
  33543. * @param {*} value The value to set.
  33544. * @returns {Object} Returns the stack cache instance.
  33545. */
  33546. function stackSet(key, value) {
  33547. var data = this.__data__;
  33548. if (data instanceof ListCache) {
  33549. var pairs = data.__data__;
  33550. if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
  33551. pairs.push([key, value]);
  33552. this.size = ++data.size;
  33553. return this;
  33554. }
  33555. data = this.__data__ = new MapCache(pairs);
  33556. }
  33557. data.set(key, value);
  33558. this.size = data.size;
  33559. return this;
  33560. }
  33561. // Add methods to `Stack`.
  33562. Stack.prototype.clear = stackClear;
  33563. Stack.prototype['delete'] = stackDelete;
  33564. Stack.prototype.get = stackGet;
  33565. Stack.prototype.has = stackHas;
  33566. Stack.prototype.set = stackSet;
  33567. /**
  33568. * Creates an array of the enumerable property names of the array-like `value`.
  33569. *
  33570. * @private
  33571. * @param {*} value The value to query.
  33572. * @param {boolean} inherited Specify returning inherited property names.
  33573. * @returns {Array} Returns the array of property names.
  33574. */
  33575. function arrayLikeKeys(value, inherited) {
  33576. var isArr = isArray(value),
  33577. isArg = !isArr && isArguments(value),
  33578. isBuff = !isArr && !isArg && isBuffer(value),
  33579. isType = !isArr && !isArg && !isBuff && isTypedArray(value),
  33580. skipIndexes = isArr || isArg || isBuff || isType,
  33581. result = skipIndexes ? baseTimes(value.length, String) : [],
  33582. length = result.length;
  33583. for (var key in value) {
  33584. if ((inherited || hasOwnProperty.call(value, key)) &&
  33585. !(skipIndexes && (
  33586. // Safari 9 has enumerable `arguments.length` in strict mode.
  33587. key == 'length' ||
  33588. // Node.js 0.10 has enumerable non-index properties on buffers.
  33589. (isBuff && (key == 'offset' || key == 'parent')) ||
  33590. // PhantomJS 2 has enumerable non-index properties on typed arrays.
  33591. (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
  33592. // Skip index properties.
  33593. isIndex(key, length)
  33594. ))) {
  33595. result.push(key);
  33596. }
  33597. }
  33598. return result;
  33599. }
  33600. /**
  33601. * This function is like `assignValue` except that it doesn't assign
  33602. * `undefined` values.
  33603. *
  33604. * @private
  33605. * @param {Object} object The object to modify.
  33606. * @param {string} key The key of the property to assign.
  33607. * @param {*} value The value to assign.
  33608. */
  33609. function assignMergeValue(object, key, value) {
  33610. if ((value !== undefined && !eq(object[key], value)) ||
  33611. (value === undefined && !(key in object))) {
  33612. baseAssignValue(object, key, value);
  33613. }
  33614. }
  33615. /**
  33616. * Assigns `value` to `key` of `object` if the existing value is not equivalent
  33617. * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  33618. * for equality comparisons.
  33619. *
  33620. * @private
  33621. * @param {Object} object The object to modify.
  33622. * @param {string} key The key of the property to assign.
  33623. * @param {*} value The value to assign.
  33624. */
  33625. function assignValue(object, key, value) {
  33626. var objValue = object[key];
  33627. if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
  33628. (value === undefined && !(key in object))) {
  33629. baseAssignValue(object, key, value);
  33630. }
  33631. }
  33632. /**
  33633. * Gets the index at which the `key` is found in `array` of key-value pairs.
  33634. *
  33635. * @private
  33636. * @param {Array} array The array to inspect.
  33637. * @param {*} key The key to search for.
  33638. * @returns {number} Returns the index of the matched value, else `-1`.
  33639. */
  33640. function assocIndexOf(array, key) {
  33641. var length = array.length;
  33642. while (length--) {
  33643. if (eq(array[length][0], key)) {
  33644. return length;
  33645. }
  33646. }
  33647. return -1;
  33648. }
  33649. /**
  33650. * The base implementation of `assignValue` and `assignMergeValue` without
  33651. * value checks.
  33652. *
  33653. * @private
  33654. * @param {Object} object The object to modify.
  33655. * @param {string} key The key of the property to assign.
  33656. * @param {*} value The value to assign.
  33657. */
  33658. function baseAssignValue(object, key, value) {
  33659. if (key == '__proto__' && defineProperty) {
  33660. defineProperty(object, key, {
  33661. 'configurable': true,
  33662. 'enumerable': true,
  33663. 'value': value,
  33664. 'writable': true
  33665. });
  33666. } else {
  33667. object[key] = value;
  33668. }
  33669. }
  33670. /**
  33671. * The base implementation of `baseForOwn` which iterates over `object`
  33672. * properties returned by `keysFunc` and invokes `iteratee` for each property.
  33673. * Iteratee functions may exit iteration early by explicitly returning `false`.
  33674. *
  33675. * @private
  33676. * @param {Object} object The object to iterate over.
  33677. * @param {Function} iteratee The function invoked per iteration.
  33678. * @param {Function} keysFunc The function to get the keys of `object`.
  33679. * @returns {Object} Returns `object`.
  33680. */
  33681. var baseFor = createBaseFor();
  33682. /**
  33683. * The base implementation of `getTag` without fallbacks for buggy environments.
  33684. *
  33685. * @private
  33686. * @param {*} value The value to query.
  33687. * @returns {string} Returns the `toStringTag`.
  33688. */
  33689. function baseGetTag(value) {
  33690. if (value == null) {
  33691. return value === undefined ? undefinedTag : nullTag;
  33692. }
  33693. return (symToStringTag && symToStringTag in Object(value))
  33694. ? getRawTag(value)
  33695. : objectToString(value);
  33696. }
  33697. /**
  33698. * The base implementation of `_.isArguments`.
  33699. *
  33700. * @private
  33701. * @param {*} value The value to check.
  33702. * @returns {boolean} Returns `true` if `value` is an `arguments` object,
  33703. */
  33704. function baseIsArguments(value) {
  33705. return isObjectLike(value) && baseGetTag(value) == argsTag;
  33706. }
  33707. /**
  33708. * The base implementation of `_.isNative` without bad shim checks.
  33709. *
  33710. * @private
  33711. * @param {*} value The value to check.
  33712. * @returns {boolean} Returns `true` if `value` is a native function,
  33713. * else `false`.
  33714. */
  33715. function baseIsNative(value) {
  33716. if (!isObject(value) || isMasked(value)) {
  33717. return false;
  33718. }
  33719. var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
  33720. return pattern.test(toSource(value));
  33721. }
  33722. /**
  33723. * The base implementation of `_.isTypedArray` without Node.js optimizations.
  33724. *
  33725. * @private
  33726. * @param {*} value The value to check.
  33727. * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
  33728. */
  33729. function baseIsTypedArray(value) {
  33730. return isObjectLike(value) &&
  33731. isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
  33732. }
  33733. /**
  33734. * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
  33735. *
  33736. * @private
  33737. * @param {Object} object The object to query.
  33738. * @returns {Array} Returns the array of property names.
  33739. */
  33740. function baseKeysIn(object) {
  33741. if (!isObject(object)) {
  33742. return nativeKeysIn(object);
  33743. }
  33744. var isProto = isPrototype(object),
  33745. result = [];
  33746. for (var key in object) {
  33747. if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
  33748. result.push(key);
  33749. }
  33750. }
  33751. return result;
  33752. }
  33753. /**
  33754. * The base implementation of `_.merge` without support for multiple sources.
  33755. *
  33756. * @private
  33757. * @param {Object} object The destination object.
  33758. * @param {Object} source The source object.
  33759. * @param {number} srcIndex The index of `source`.
  33760. * @param {Function} [customizer] The function to customize merged values.
  33761. * @param {Object} [stack] Tracks traversed source values and their merged
  33762. * counterparts.
  33763. */
  33764. function baseMerge(object, source, srcIndex, customizer, stack) {
  33765. if (object === source) {
  33766. return;
  33767. }
  33768. baseFor(source, function(srcValue, key) {
  33769. stack || (stack = new Stack);
  33770. if (isObject(srcValue)) {
  33771. baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
  33772. }
  33773. else {
  33774. var newValue = customizer
  33775. ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
  33776. : undefined;
  33777. if (newValue === undefined) {
  33778. newValue = srcValue;
  33779. }
  33780. assignMergeValue(object, key, newValue);
  33781. }
  33782. }, keysIn);
  33783. }
  33784. /**
  33785. * A specialized version of `baseMerge` for arrays and objects which performs
  33786. * deep merges and tracks traversed objects enabling objects with circular
  33787. * references to be merged.
  33788. *
  33789. * @private
  33790. * @param {Object} object The destination object.
  33791. * @param {Object} source The source object.
  33792. * @param {string} key The key of the value to merge.
  33793. * @param {number} srcIndex The index of `source`.
  33794. * @param {Function} mergeFunc The function to merge values.
  33795. * @param {Function} [customizer] The function to customize assigned values.
  33796. * @param {Object} [stack] Tracks traversed source values and their merged
  33797. * counterparts.
  33798. */
  33799. function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
  33800. var objValue = safeGet(object, key),
  33801. srcValue = safeGet(source, key),
  33802. stacked = stack.get(srcValue);
  33803. if (stacked) {
  33804. assignMergeValue(object, key, stacked);
  33805. return;
  33806. }
  33807. var newValue = customizer
  33808. ? customizer(objValue, srcValue, (key + ''), object, source, stack)
  33809. : undefined;
  33810. var isCommon = newValue === undefined;
  33811. if (isCommon) {
  33812. var isArr = isArray(srcValue),
  33813. isBuff = !isArr && isBuffer(srcValue),
  33814. isTyped = !isArr && !isBuff && isTypedArray(srcValue);
  33815. newValue = srcValue;
  33816. if (isArr || isBuff || isTyped) {
  33817. if (isArray(objValue)) {
  33818. newValue = objValue;
  33819. }
  33820. else if (isArrayLikeObject(objValue)) {
  33821. newValue = copyArray(objValue);
  33822. }
  33823. else if (isBuff) {
  33824. isCommon = false;
  33825. newValue = cloneBuffer(srcValue, true);
  33826. }
  33827. else if (isTyped) {
  33828. isCommon = false;
  33829. newValue = cloneTypedArray(srcValue, true);
  33830. }
  33831. else {
  33832. newValue = [];
  33833. }
  33834. }
  33835. else if (isPlainObject(srcValue) || isArguments(srcValue)) {
  33836. newValue = objValue;
  33837. if (isArguments(objValue)) {
  33838. newValue = toPlainObject(objValue);
  33839. }
  33840. else if (!isObject(objValue) || isFunction(objValue)) {
  33841. newValue = initCloneObject(srcValue);
  33842. }
  33843. }
  33844. else {
  33845. isCommon = false;
  33846. }
  33847. }
  33848. if (isCommon) {
  33849. // Recursively merge objects and arrays (susceptible to call stack limits).
  33850. stack.set(srcValue, newValue);
  33851. mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
  33852. stack['delete'](srcValue);
  33853. }
  33854. assignMergeValue(object, key, newValue);
  33855. }
  33856. /**
  33857. * The base implementation of `_.rest` which doesn't validate or coerce arguments.
  33858. *
  33859. * @private
  33860. * @param {Function} func The function to apply a rest parameter to.
  33861. * @param {number} [start=func.length-1] The start position of the rest parameter.
  33862. * @returns {Function} Returns the new function.
  33863. */
  33864. function baseRest(func, start) {
  33865. return setToString(overRest(func, start, identity), func + '');
  33866. }
  33867. /**
  33868. * The base implementation of `setToString` without support for hot loop shorting.
  33869. *
  33870. * @private
  33871. * @param {Function} func The function to modify.
  33872. * @param {Function} string The `toString` result.
  33873. * @returns {Function} Returns `func`.
  33874. */
  33875. var baseSetToString = !defineProperty ? identity : function(func, string) {
  33876. return defineProperty(func, 'toString', {
  33877. 'configurable': true,
  33878. 'enumerable': false,
  33879. 'value': constant(string),
  33880. 'writable': true
  33881. });
  33882. };
  33883. /**
  33884. * Creates a clone of `buffer`.
  33885. *
  33886. * @private
  33887. * @param {Buffer} buffer The buffer to clone.
  33888. * @param {boolean} [isDeep] Specify a deep clone.
  33889. * @returns {Buffer} Returns the cloned buffer.
  33890. */
  33891. function cloneBuffer(buffer, isDeep) {
  33892. if (isDeep) {
  33893. return buffer.slice();
  33894. }
  33895. var length = buffer.length,
  33896. result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
  33897. buffer.copy(result);
  33898. return result;
  33899. }
  33900. /**
  33901. * Creates a clone of `arrayBuffer`.
  33902. *
  33903. * @private
  33904. * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
  33905. * @returns {ArrayBuffer} Returns the cloned array buffer.
  33906. */
  33907. function cloneArrayBuffer(arrayBuffer) {
  33908. var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
  33909. new Uint8Array(result).set(new Uint8Array(arrayBuffer));
  33910. return result;
  33911. }
  33912. /**
  33913. * Creates a clone of `typedArray`.
  33914. *
  33915. * @private
  33916. * @param {Object} typedArray The typed array to clone.
  33917. * @param {boolean} [isDeep] Specify a deep clone.
  33918. * @returns {Object} Returns the cloned typed array.
  33919. */
  33920. function cloneTypedArray(typedArray, isDeep) {
  33921. var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
  33922. return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
  33923. }
  33924. /**
  33925. * Copies the values of `source` to `array`.
  33926. *
  33927. * @private
  33928. * @param {Array} source The array to copy values from.
  33929. * @param {Array} [array=[]] The array to copy values to.
  33930. * @returns {Array} Returns `array`.
  33931. */
  33932. function copyArray(source, array) {
  33933. var index = -1,
  33934. length = source.length;
  33935. array || (array = Array(length));
  33936. while (++index < length) {
  33937. array[index] = source[index];
  33938. }
  33939. return array;
  33940. }
  33941. /**
  33942. * Copies properties of `source` to `object`.
  33943. *
  33944. * @private
  33945. * @param {Object} source The object to copy properties from.
  33946. * @param {Array} props The property identifiers to copy.
  33947. * @param {Object} [object={}] The object to copy properties to.
  33948. * @param {Function} [customizer] The function to customize copied values.
  33949. * @returns {Object} Returns `object`.
  33950. */
  33951. function copyObject(source, props, object, customizer) {
  33952. var isNew = !object;
  33953. object || (object = {});
  33954. var index = -1,
  33955. length = props.length;
  33956. while (++index < length) {
  33957. var key = props[index];
  33958. var newValue = customizer
  33959. ? customizer(object[key], source[key], key, object, source)
  33960. : undefined;
  33961. if (newValue === undefined) {
  33962. newValue = source[key];
  33963. }
  33964. if (isNew) {
  33965. baseAssignValue(object, key, newValue);
  33966. } else {
  33967. assignValue(object, key, newValue);
  33968. }
  33969. }
  33970. return object;
  33971. }
  33972. /**
  33973. * Creates a function like `_.assign`.
  33974. *
  33975. * @private
  33976. * @param {Function} assigner The function to assign values.
  33977. * @returns {Function} Returns the new assigner function.
  33978. */
  33979. function createAssigner(assigner) {
  33980. return baseRest(function(object, sources) {
  33981. var index = -1,
  33982. length = sources.length,
  33983. customizer = length > 1 ? sources[length - 1] : undefined,
  33984. guard = length > 2 ? sources[2] : undefined;
  33985. customizer = (assigner.length > 3 && typeof customizer == 'function')
  33986. ? (length--, customizer)
  33987. : undefined;
  33988. if (guard && isIterateeCall(sources[0], sources[1], guard)) {
  33989. customizer = length < 3 ? undefined : customizer;
  33990. length = 1;
  33991. }
  33992. object = Object(object);
  33993. while (++index < length) {
  33994. var source = sources[index];
  33995. if (source) {
  33996. assigner(object, source, index, customizer);
  33997. }
  33998. }
  33999. return object;
  34000. });
  34001. }
  34002. /**
  34003. * Creates a base function for methods like `_.forIn` and `_.forOwn`.
  34004. *
  34005. * @private
  34006. * @param {boolean} [fromRight] Specify iterating from right to left.
  34007. * @returns {Function} Returns the new base function.
  34008. */
  34009. function createBaseFor(fromRight) {
  34010. return function(object, iteratee, keysFunc) {
  34011. var index = -1,
  34012. iterable = Object(object),
  34013. props = keysFunc(object),
  34014. length = props.length;
  34015. while (length--) {
  34016. var key = props[fromRight ? length : ++index];
  34017. if (iteratee(iterable[key], key, iterable) === false) {
  34018. break;
  34019. }
  34020. }
  34021. return object;
  34022. };
  34023. }
  34024. /**
  34025. * Gets the data for `map`.
  34026. *
  34027. * @private
  34028. * @param {Object} map The map to query.
  34029. * @param {string} key The reference key.
  34030. * @returns {*} Returns the map data.
  34031. */
  34032. function getMapData(map, key) {
  34033. var data = map.__data__;
  34034. return isKeyable(key)
  34035. ? data[typeof key == 'string' ? 'string' : 'hash']
  34036. : data.map;
  34037. }
  34038. /**
  34039. * Gets the native function at `key` of `object`.
  34040. *
  34041. * @private
  34042. * @param {Object} object The object to query.
  34043. * @param {string} key The key of the method to get.
  34044. * @returns {*} Returns the function if it's native, else `undefined`.
  34045. */
  34046. function getNative(object, key) {
  34047. var value = getValue(object, key);
  34048. return baseIsNative(value) ? value : undefined;
  34049. }
  34050. /**
  34051. * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
  34052. *
  34053. * @private
  34054. * @param {*} value The value to query.
  34055. * @returns {string} Returns the raw `toStringTag`.
  34056. */
  34057. function getRawTag(value) {
  34058. var isOwn = hasOwnProperty.call(value, symToStringTag),
  34059. tag = value[symToStringTag];
  34060. try {
  34061. value[symToStringTag] = undefined;
  34062. var unmasked = true;
  34063. } catch (e) {}
  34064. var result = nativeObjectToString.call(value);
  34065. if (unmasked) {
  34066. if (isOwn) {
  34067. value[symToStringTag] = tag;
  34068. } else {
  34069. delete value[symToStringTag];
  34070. }
  34071. }
  34072. return result;
  34073. }
  34074. /**
  34075. * Initializes an object clone.
  34076. *
  34077. * @private
  34078. * @param {Object} object The object to clone.
  34079. * @returns {Object} Returns the initialized clone.
  34080. */
  34081. function initCloneObject(object) {
  34082. return (typeof object.constructor == 'function' && !isPrototype(object))
  34083. ? baseCreate(getPrototype(object))
  34084. : {};
  34085. }
  34086. /**
  34087. * Checks if `value` is a valid array-like index.
  34088. *
  34089. * @private
  34090. * @param {*} value The value to check.
  34091. * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
  34092. * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
  34093. */
  34094. function isIndex(value, length) {
  34095. var type = typeof value;
  34096. length = length == null ? MAX_SAFE_INTEGER : length;
  34097. return !!length &&
  34098. (type == 'number' ||
  34099. (type != 'symbol' && reIsUint.test(value))) &&
  34100. (value > -1 && value % 1 == 0 && value < length);
  34101. }
  34102. /**
  34103. * Checks if the given arguments are from an iteratee call.
  34104. *
  34105. * @private
  34106. * @param {*} value The potential iteratee value argument.
  34107. * @param {*} index The potential iteratee index or key argument.
  34108. * @param {*} object The potential iteratee object argument.
  34109. * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
  34110. * else `false`.
  34111. */
  34112. function isIterateeCall(value, index, object) {
  34113. if (!isObject(object)) {
  34114. return false;
  34115. }
  34116. var type = typeof index;
  34117. if (type == 'number'
  34118. ? (isArrayLike(object) && isIndex(index, object.length))
  34119. : (type == 'string' && index in object)
  34120. ) {
  34121. return eq(object[index], value);
  34122. }
  34123. return false;
  34124. }
  34125. /**
  34126. * Checks if `value` is suitable for use as unique object key.
  34127. *
  34128. * @private
  34129. * @param {*} value The value to check.
  34130. * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
  34131. */
  34132. function isKeyable(value) {
  34133. var type = typeof value;
  34134. return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
  34135. ? (value !== '__proto__')
  34136. : (value === null);
  34137. }
  34138. /**
  34139. * Checks if `func` has its source masked.
  34140. *
  34141. * @private
  34142. * @param {Function} func The function to check.
  34143. * @returns {boolean} Returns `true` if `func` is masked, else `false`.
  34144. */
  34145. function isMasked(func) {
  34146. return !!maskSrcKey && (maskSrcKey in func);
  34147. }
  34148. /**
  34149. * Checks if `value` is likely a prototype object.
  34150. *
  34151. * @private
  34152. * @param {*} value The value to check.
  34153. * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
  34154. */
  34155. function isPrototype(value) {
  34156. var Ctor = value && value.constructor,
  34157. proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
  34158. return value === proto;
  34159. }
  34160. /**
  34161. * This function is like
  34162. * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
  34163. * except that it includes inherited enumerable properties.
  34164. *
  34165. * @private
  34166. * @param {Object} object The object to query.
  34167. * @returns {Array} Returns the array of property names.
  34168. */
  34169. function nativeKeysIn(object) {
  34170. var result = [];
  34171. if (object != null) {
  34172. for (var key in Object(object)) {
  34173. result.push(key);
  34174. }
  34175. }
  34176. return result;
  34177. }
  34178. /**
  34179. * Converts `value` to a string using `Object.prototype.toString`.
  34180. *
  34181. * @private
  34182. * @param {*} value The value to convert.
  34183. * @returns {string} Returns the converted string.
  34184. */
  34185. function objectToString(value) {
  34186. return nativeObjectToString.call(value);
  34187. }
  34188. /**
  34189. * A specialized version of `baseRest` which transforms the rest array.
  34190. *
  34191. * @private
  34192. * @param {Function} func The function to apply a rest parameter to.
  34193. * @param {number} [start=func.length-1] The start position of the rest parameter.
  34194. * @param {Function} transform The rest array transform.
  34195. * @returns {Function} Returns the new function.
  34196. */
  34197. function overRest(func, start, transform) {
  34198. start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
  34199. return function() {
  34200. var args = arguments,
  34201. index = -1,
  34202. length = nativeMax(args.length - start, 0),
  34203. array = Array(length);
  34204. while (++index < length) {
  34205. array[index] = args[start + index];
  34206. }
  34207. index = -1;
  34208. var otherArgs = Array(start + 1);
  34209. while (++index < start) {
  34210. otherArgs[index] = args[index];
  34211. }
  34212. otherArgs[start] = transform(array);
  34213. return apply(func, this, otherArgs);
  34214. };
  34215. }
  34216. /**
  34217. * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
  34218. *
  34219. * @private
  34220. * @param {Object} object The object to query.
  34221. * @param {string} key The key of the property to get.
  34222. * @returns {*} Returns the property value.
  34223. */
  34224. function safeGet(object, key) {
  34225. if (key === 'constructor' && typeof object[key] === 'function') {
  34226. return;
  34227. }
  34228. if (key == '__proto__') {
  34229. return;
  34230. }
  34231. return object[key];
  34232. }
  34233. /**
  34234. * Sets the `toString` method of `func` to return `string`.
  34235. *
  34236. * @private
  34237. * @param {Function} func The function to modify.
  34238. * @param {Function} string The `toString` result.
  34239. * @returns {Function} Returns `func`.
  34240. */
  34241. var setToString = shortOut(baseSetToString);
  34242. /**
  34243. * Creates a function that'll short out and invoke `identity` instead
  34244. * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
  34245. * milliseconds.
  34246. *
  34247. * @private
  34248. * @param {Function} func The function to restrict.
  34249. * @returns {Function} Returns the new shortable function.
  34250. */
  34251. function shortOut(func) {
  34252. var count = 0,
  34253. lastCalled = 0;
  34254. return function() {
  34255. var stamp = nativeNow(),
  34256. remaining = HOT_SPAN - (stamp - lastCalled);
  34257. lastCalled = stamp;
  34258. if (remaining > 0) {
  34259. if (++count >= HOT_COUNT) {
  34260. return arguments[0];
  34261. }
  34262. } else {
  34263. count = 0;
  34264. }
  34265. return func.apply(undefined, arguments);
  34266. };
  34267. }
  34268. /**
  34269. * Converts `func` to its source code.
  34270. *
  34271. * @private
  34272. * @param {Function} func The function to convert.
  34273. * @returns {string} Returns the source code.
  34274. */
  34275. function toSource(func) {
  34276. if (func != null) {
  34277. try {
  34278. return funcToString.call(func);
  34279. } catch (e) {}
  34280. try {
  34281. return (func + '');
  34282. } catch (e) {}
  34283. }
  34284. return '';
  34285. }
  34286. /**
  34287. * Performs a
  34288. * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  34289. * comparison between two values to determine if they are equivalent.
  34290. *
  34291. * @static
  34292. * @memberOf _
  34293. * @since 4.0.0
  34294. * @category Lang
  34295. * @param {*} value The value to compare.
  34296. * @param {*} other The other value to compare.
  34297. * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
  34298. * @example
  34299. *
  34300. * var object = { 'a': 1 };
  34301. * var other = { 'a': 1 };
  34302. *
  34303. * _.eq(object, object);
  34304. * // => true
  34305. *
  34306. * _.eq(object, other);
  34307. * // => false
  34308. *
  34309. * _.eq('a', 'a');
  34310. * // => true
  34311. *
  34312. * _.eq('a', Object('a'));
  34313. * // => false
  34314. *
  34315. * _.eq(NaN, NaN);
  34316. * // => true
  34317. */
  34318. function eq(value, other) {
  34319. return value === other || (value !== value && other !== other);
  34320. }
  34321. /**
  34322. * Checks if `value` is likely an `arguments` object.
  34323. *
  34324. * @static
  34325. * @memberOf _
  34326. * @since 0.1.0
  34327. * @category Lang
  34328. * @param {*} value The value to check.
  34329. * @returns {boolean} Returns `true` if `value` is an `arguments` object,
  34330. * else `false`.
  34331. * @example
  34332. *
  34333. * _.isArguments(function() { return arguments; }());
  34334. * // => true
  34335. *
  34336. * _.isArguments([1, 2, 3]);
  34337. * // => false
  34338. */
  34339. var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
  34340. return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
  34341. !propertyIsEnumerable.call(value, 'callee');
  34342. };
  34343. /**
  34344. * Checks if `value` is classified as an `Array` object.
  34345. *
  34346. * @static
  34347. * @memberOf _
  34348. * @since 0.1.0
  34349. * @category Lang
  34350. * @param {*} value The value to check.
  34351. * @returns {boolean} Returns `true` if `value` is an array, else `false`.
  34352. * @example
  34353. *
  34354. * _.isArray([1, 2, 3]);
  34355. * // => true
  34356. *
  34357. * _.isArray(document.body.children);
  34358. * // => false
  34359. *
  34360. * _.isArray('abc');
  34361. * // => false
  34362. *
  34363. * _.isArray(_.noop);
  34364. * // => false
  34365. */
  34366. var isArray = Array.isArray;
  34367. /**
  34368. * Checks if `value` is array-like. A value is considered array-like if it's
  34369. * not a function and has a `value.length` that's an integer greater than or
  34370. * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
  34371. *
  34372. * @static
  34373. * @memberOf _
  34374. * @since 4.0.0
  34375. * @category Lang
  34376. * @param {*} value The value to check.
  34377. * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
  34378. * @example
  34379. *
  34380. * _.isArrayLike([1, 2, 3]);
  34381. * // => true
  34382. *
  34383. * _.isArrayLike(document.body.children);
  34384. * // => true
  34385. *
  34386. * _.isArrayLike('abc');
  34387. * // => true
  34388. *
  34389. * _.isArrayLike(_.noop);
  34390. * // => false
  34391. */
  34392. function isArrayLike(value) {
  34393. return value != null && isLength(value.length) && !isFunction(value);
  34394. }
  34395. /**
  34396. * This method is like `_.isArrayLike` except that it also checks if `value`
  34397. * is an object.
  34398. *
  34399. * @static
  34400. * @memberOf _
  34401. * @since 4.0.0
  34402. * @category Lang
  34403. * @param {*} value The value to check.
  34404. * @returns {boolean} Returns `true` if `value` is an array-like object,
  34405. * else `false`.
  34406. * @example
  34407. *
  34408. * _.isArrayLikeObject([1, 2, 3]);
  34409. * // => true
  34410. *
  34411. * _.isArrayLikeObject(document.body.children);
  34412. * // => true
  34413. *
  34414. * _.isArrayLikeObject('abc');
  34415. * // => false
  34416. *
  34417. * _.isArrayLikeObject(_.noop);
  34418. * // => false
  34419. */
  34420. function isArrayLikeObject(value) {
  34421. return isObjectLike(value) && isArrayLike(value);
  34422. }
  34423. /**
  34424. * Checks if `value` is a buffer.
  34425. *
  34426. * @static
  34427. * @memberOf _
  34428. * @since 4.3.0
  34429. * @category Lang
  34430. * @param {*} value The value to check.
  34431. * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
  34432. * @example
  34433. *
  34434. * _.isBuffer(new Buffer(2));
  34435. * // => true
  34436. *
  34437. * _.isBuffer(new Uint8Array(2));
  34438. * // => false
  34439. */
  34440. var isBuffer = nativeIsBuffer || stubFalse;
  34441. /**
  34442. * Checks if `value` is classified as a `Function` object.
  34443. *
  34444. * @static
  34445. * @memberOf _
  34446. * @since 0.1.0
  34447. * @category Lang
  34448. * @param {*} value The value to check.
  34449. * @returns {boolean} Returns `true` if `value` is a function, else `false`.
  34450. * @example
  34451. *
  34452. * _.isFunction(_);
  34453. * // => true
  34454. *
  34455. * _.isFunction(/abc/);
  34456. * // => false
  34457. */
  34458. function isFunction(value) {
  34459. if (!isObject(value)) {
  34460. return false;
  34461. }
  34462. // The use of `Object#toString` avoids issues with the `typeof` operator
  34463. // in Safari 9 which returns 'object' for typed arrays and other constructors.
  34464. var tag = baseGetTag(value);
  34465. return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
  34466. }
  34467. /**
  34468. * Checks if `value` is a valid array-like length.
  34469. *
  34470. * **Note:** This method is loosely based on
  34471. * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
  34472. *
  34473. * @static
  34474. * @memberOf _
  34475. * @since 4.0.0
  34476. * @category Lang
  34477. * @param {*} value The value to check.
  34478. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
  34479. * @example
  34480. *
  34481. * _.isLength(3);
  34482. * // => true
  34483. *
  34484. * _.isLength(Number.MIN_VALUE);
  34485. * // => false
  34486. *
  34487. * _.isLength(Infinity);
  34488. * // => false
  34489. *
  34490. * _.isLength('3');
  34491. * // => false
  34492. */
  34493. function isLength(value) {
  34494. return typeof value == 'number' &&
  34495. value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  34496. }
  34497. /**
  34498. * Checks if `value` is the
  34499. * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
  34500. * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
  34501. *
  34502. * @static
  34503. * @memberOf _
  34504. * @since 0.1.0
  34505. * @category Lang
  34506. * @param {*} value The value to check.
  34507. * @returns {boolean} Returns `true` if `value` is an object, else `false`.
  34508. * @example
  34509. *
  34510. * _.isObject({});
  34511. * // => true
  34512. *
  34513. * _.isObject([1, 2, 3]);
  34514. * // => true
  34515. *
  34516. * _.isObject(_.noop);
  34517. * // => true
  34518. *
  34519. * _.isObject(null);
  34520. * // => false
  34521. */
  34522. function isObject(value) {
  34523. var type = typeof value;
  34524. return value != null && (type == 'object' || type == 'function');
  34525. }
  34526. /**
  34527. * Checks if `value` is object-like. A value is object-like if it's not `null`
  34528. * and has a `typeof` result of "object".
  34529. *
  34530. * @static
  34531. * @memberOf _
  34532. * @since 4.0.0
  34533. * @category Lang
  34534. * @param {*} value The value to check.
  34535. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  34536. * @example
  34537. *
  34538. * _.isObjectLike({});
  34539. * // => true
  34540. *
  34541. * _.isObjectLike([1, 2, 3]);
  34542. * // => true
  34543. *
  34544. * _.isObjectLike(_.noop);
  34545. * // => false
  34546. *
  34547. * _.isObjectLike(null);
  34548. * // => false
  34549. */
  34550. function isObjectLike(value) {
  34551. return value != null && typeof value == 'object';
  34552. }
  34553. /**
  34554. * Checks if `value` is a plain object, that is, an object created by the
  34555. * `Object` constructor or one with a `[[Prototype]]` of `null`.
  34556. *
  34557. * @static
  34558. * @memberOf _
  34559. * @since 0.8.0
  34560. * @category Lang
  34561. * @param {*} value The value to check.
  34562. * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
  34563. * @example
  34564. *
  34565. * function Foo() {
  34566. * this.a = 1;
  34567. * }
  34568. *
  34569. * _.isPlainObject(new Foo);
  34570. * // => false
  34571. *
  34572. * _.isPlainObject([1, 2, 3]);
  34573. * // => false
  34574. *
  34575. * _.isPlainObject({ 'x': 0, 'y': 0 });
  34576. * // => true
  34577. *
  34578. * _.isPlainObject(Object.create(null));
  34579. * // => true
  34580. */
  34581. function isPlainObject(value) {
  34582. if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
  34583. return false;
  34584. }
  34585. var proto = getPrototype(value);
  34586. if (proto === null) {
  34587. return true;
  34588. }
  34589. var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
  34590. return typeof Ctor == 'function' && Ctor instanceof Ctor &&
  34591. funcToString.call(Ctor) == objectCtorString;
  34592. }
  34593. /**
  34594. * Checks if `value` is classified as a typed array.
  34595. *
  34596. * @static
  34597. * @memberOf _
  34598. * @since 3.0.0
  34599. * @category Lang
  34600. * @param {*} value The value to check.
  34601. * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
  34602. * @example
  34603. *
  34604. * _.isTypedArray(new Uint8Array);
  34605. * // => true
  34606. *
  34607. * _.isTypedArray([]);
  34608. * // => false
  34609. */
  34610. var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
  34611. /**
  34612. * Converts `value` to a plain object flattening inherited enumerable string
  34613. * keyed properties of `value` to own properties of the plain object.
  34614. *
  34615. * @static
  34616. * @memberOf _
  34617. * @since 3.0.0
  34618. * @category Lang
  34619. * @param {*} value The value to convert.
  34620. * @returns {Object} Returns the converted plain object.
  34621. * @example
  34622. *
  34623. * function Foo() {
  34624. * this.b = 2;
  34625. * }
  34626. *
  34627. * Foo.prototype.c = 3;
  34628. *
  34629. * _.assign({ 'a': 1 }, new Foo);
  34630. * // => { 'a': 1, 'b': 2 }
  34631. *
  34632. * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
  34633. * // => { 'a': 1, 'b': 2, 'c': 3 }
  34634. */
  34635. function toPlainObject(value) {
  34636. return copyObject(value, keysIn(value));
  34637. }
  34638. /**
  34639. * Creates an array of the own and inherited enumerable property names of `object`.
  34640. *
  34641. * **Note:** Non-object values are coerced to objects.
  34642. *
  34643. * @static
  34644. * @memberOf _
  34645. * @since 3.0.0
  34646. * @category Object
  34647. * @param {Object} object The object to query.
  34648. * @returns {Array} Returns the array of property names.
  34649. * @example
  34650. *
  34651. * function Foo() {
  34652. * this.a = 1;
  34653. * this.b = 2;
  34654. * }
  34655. *
  34656. * Foo.prototype.c = 3;
  34657. *
  34658. * _.keysIn(new Foo);
  34659. * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
  34660. */
  34661. function keysIn(object) {
  34662. return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
  34663. }
  34664. /**
  34665. * This method is like `_.assign` except that it recursively merges own and
  34666. * inherited enumerable string keyed properties of source objects into the
  34667. * destination object. Source properties that resolve to `undefined` are
  34668. * skipped if a destination value exists. Array and plain object properties
  34669. * are merged recursively. Other objects and value types are overridden by
  34670. * assignment. Source objects are applied from left to right. Subsequent
  34671. * sources overwrite property assignments of previous sources.
  34672. *
  34673. * **Note:** This method mutates `object`.
  34674. *
  34675. * @static
  34676. * @memberOf _
  34677. * @since 0.5.0
  34678. * @category Object
  34679. * @param {Object} object The destination object.
  34680. * @param {...Object} [sources] The source objects.
  34681. * @returns {Object} Returns `object`.
  34682. * @example
  34683. *
  34684. * var object = {
  34685. * 'a': [{ 'b': 2 }, { 'd': 4 }]
  34686. * };
  34687. *
  34688. * var other = {
  34689. * 'a': [{ 'c': 3 }, { 'e': 5 }]
  34690. * };
  34691. *
  34692. * _.merge(object, other);
  34693. * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
  34694. */
  34695. var merge = createAssigner(function(object, source, srcIndex) {
  34696. baseMerge(object, source, srcIndex);
  34697. });
  34698. /**
  34699. * Creates a function that returns `value`.
  34700. *
  34701. * @static
  34702. * @memberOf _
  34703. * @since 2.4.0
  34704. * @category Util
  34705. * @param {*} value The value to return from the new function.
  34706. * @returns {Function} Returns the new constant function.
  34707. * @example
  34708. *
  34709. * var objects = _.times(2, _.constant({ 'a': 1 }));
  34710. *
  34711. * console.log(objects);
  34712. * // => [{ 'a': 1 }, { 'a': 1 }]
  34713. *
  34714. * console.log(objects[0] === objects[1]);
  34715. * // => true
  34716. */
  34717. function constant(value) {
  34718. return function() {
  34719. return value;
  34720. };
  34721. }
  34722. /**
  34723. * This method returns the first argument it receives.
  34724. *
  34725. * @static
  34726. * @since 0.1.0
  34727. * @memberOf _
  34728. * @category Util
  34729. * @param {*} value Any value.
  34730. * @returns {*} Returns `value`.
  34731. * @example
  34732. *
  34733. * var object = { 'a': 1 };
  34734. *
  34735. * console.log(_.identity(object) === object);
  34736. * // => true
  34737. */
  34738. function identity(value) {
  34739. return value;
  34740. }
  34741. /**
  34742. * This method returns `false`.
  34743. *
  34744. * @static
  34745. * @memberOf _
  34746. * @since 4.13.0
  34747. * @category Util
  34748. * @returns {boolean} Returns `false`.
  34749. * @example
  34750. *
  34751. * _.times(2, _.stubFalse);
  34752. * // => [false, false]
  34753. */
  34754. function stubFalse() {
  34755. return false;
  34756. }
  34757. module.exports = merge;
  34758. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("698d"), __webpack_require__("f586")(module)))
  34759. /***/ }),
  34760. /***/ "6ed2":
  34761. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  34762. "use strict";
  34763. __webpack_require__.r(__webpack_exports__);
  34764. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Iframe_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f3da");
  34765. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Iframe_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Iframe_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  34766. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Iframe_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Iframe_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  34767. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Iframe_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  34768. /***/ }),
  34769. /***/ "6edc":
  34770. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  34771. "use strict";
  34772. __webpack_require__.r(__webpack_exports__);
  34773. /* harmony import */ var _GraphThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("d7c1");
  34774. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _GraphThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _GraphThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  34775. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  34776. var render, staticRenderFns
  34777. /* normalize component */
  34778. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  34779. _GraphThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  34780. render,
  34781. staticRenderFns,
  34782. false,
  34783. null,
  34784. null,
  34785. null
  34786. )
  34787. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  34788. /***/ }),
  34789. /***/ "6f2a":
  34790. /***/ (function(module, exports, __webpack_require__) {
  34791. "use strict";
  34792. var _interopRequireDefault = __webpack_require__("8e6d");
  34793. Object.defineProperty(exports, "__esModule", {
  34794. value: true
  34795. });
  34796. Object.defineProperty(exports, "AddressMatchParameter", {
  34797. enumerable: true,
  34798. get: function get() {
  34799. return _AddressMatchParameter.default;
  34800. }
  34801. });
  34802. Object.defineProperty(exports, "iPortalDataParameter", {
  34803. enumerable: true,
  34804. get: function get() {
  34805. return _iPortalDataParameter.default;
  34806. }
  34807. });
  34808. Object.defineProperty(exports, "RestDataParameter", {
  34809. enumerable: true,
  34810. get: function get() {
  34811. return _RestDataParameter.default;
  34812. }
  34813. });
  34814. Object.defineProperty(exports, "RestMapParameter", {
  34815. enumerable: true,
  34816. get: function get() {
  34817. return _RestMapParameter.default;
  34818. }
  34819. });
  34820. Object.defineProperty(exports, "RestParameter", {
  34821. enumerable: true,
  34822. get: function get() {
  34823. return _RestParameter.default;
  34824. }
  34825. });
  34826. Object.defineProperty(exports, "CircleStyle", {
  34827. enumerable: true,
  34828. get: function get() {
  34829. return _CircleStyle.default;
  34830. }
  34831. });
  34832. Object.defineProperty(exports, "FillStyle", {
  34833. enumerable: true,
  34834. get: function get() {
  34835. return _FillStyle.default;
  34836. }
  34837. });
  34838. Object.defineProperty(exports, "LineStyle", {
  34839. enumerable: true,
  34840. get: function get() {
  34841. return _LineStyle.default;
  34842. }
  34843. });
  34844. Object.defineProperty(exports, "HeatMapStyle", {
  34845. enumerable: true,
  34846. get: function get() {
  34847. return _HeatMapStyle.default;
  34848. }
  34849. });
  34850. Object.defineProperty(exports, "SymbolStyle", {
  34851. enumerable: true,
  34852. get: function get() {
  34853. return _SymbolStyle.default;
  34854. }
  34855. });
  34856. var _AddressMatchParameter = _interopRequireDefault(__webpack_require__("6375"));
  34857. var _iPortalDataParameter = _interopRequireDefault(__webpack_require__("c486"));
  34858. var _RestDataParameter = _interopRequireDefault(__webpack_require__("ff4e"));
  34859. var _RestMapParameter = _interopRequireDefault(__webpack_require__("9c55"));
  34860. var _RestParameter = _interopRequireDefault(__webpack_require__("2f66"));
  34861. var _CircleStyle = _interopRequireDefault(__webpack_require__("b27b"));
  34862. var _FillStyle = _interopRequireDefault(__webpack_require__("d040"));
  34863. var _LineStyle = _interopRequireDefault(__webpack_require__("264a"));
  34864. var _HeatMapStyle = _interopRequireDefault(__webpack_require__("03b3"));
  34865. var _SymbolStyle = _interopRequireDefault(__webpack_require__("ca94"));
  34866. /***/ }),
  34867. /***/ "716d":
  34868. /***/ (function(module, exports, __webpack_require__) {
  34869. "use strict";
  34870. var _interopRequireDefault = __webpack_require__("8e6d");
  34871. Object.defineProperty(exports, "__esModule", {
  34872. value: true
  34873. });
  34874. exports.default = void 0;
  34875. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  34876. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  34877. var _RangeThemeLayerViewModel = _interopRequireDefault(__webpack_require__("6189"));
  34878. var _default2 = {
  34879. name: 'SmRangeThemeLayer',
  34880. mixins: [_mapGetter.default, _layer.default],
  34881. props: {
  34882. layerName: {
  34883. type: String
  34884. },
  34885. options: {
  34886. type: Object,
  34887. default: function _default() {
  34888. return {};
  34889. }
  34890. },
  34891. data: {
  34892. type: Array,
  34893. required: true
  34894. }
  34895. },
  34896. watch: {
  34897. data: {
  34898. handler: function handler(val) {
  34899. this.viewModel && this.viewModel.setData(val);
  34900. },
  34901. deep: true
  34902. },
  34903. options: {
  34904. handler: function handler(val) {
  34905. this.viewModel && this.viewModel.setOptions(val);
  34906. },
  34907. deep: true
  34908. },
  34909. layerName: function layerName(val) {
  34910. this.viewModel && this.viewModel.setLayerName(val);
  34911. }
  34912. },
  34913. created: function created() {
  34914. this.viewModel = new _RangeThemeLayerViewModel.default(this.$props);
  34915. },
  34916. loaded: function loaded() {
  34917. this.$emit('load', this.viewModel.themeLayer, this.map);
  34918. },
  34919. render: function render() {}
  34920. };
  34921. exports.default = _default2;
  34922. /***/ }),
  34923. /***/ "717b":
  34924. /***/ (function(module, exports, __webpack_require__) {
  34925. // extracted by mini-css-extract-plugin
  34926. /***/ }),
  34927. /***/ "7319":
  34928. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  34929. "use strict";
  34930. __webpack_require__.r(__webpack_exports__);
  34931. // CONCATENATED MODULE: ./node_modules/proj4/lib/global.js
  34932. /* harmony default export */ var global = (function(defs) {
  34933. defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees");
  34934. defs('EPSG:4269', "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees");
  34935. defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs");
  34936. defs.WGS84 = defs['EPSG:4326'];
  34937. defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857
  34938. defs.GOOGLE = defs['EPSG:3857'];
  34939. defs['EPSG:900913'] = defs['EPSG:3857'];
  34940. defs['EPSG:102113'] = defs['EPSG:3857'];
  34941. });
  34942. // CONCATENATED MODULE: ./node_modules/proj4/lib/constants/values.js
  34943. var PJD_3PARAM = 1;
  34944. var PJD_7PARAM = 2;
  34945. var PJD_WGS84 = 4; // WGS84 or equivalent
  34946. var PJD_NODATUM = 5; // WGS84 or equivalent
  34947. var SEC_TO_RAD = 4.84813681109535993589914102357e-6;
  34948. var HALF_PI = Math.PI/2;
  34949. // ellipoid pj_set_ell.c
  34950. var SIXTH = 0.1666666666666666667;
  34951. /* 1/6 */
  34952. var RA4 = 0.04722222222222222222;
  34953. /* 17/360 */
  34954. var RA6 = 0.02215608465608465608;
  34955. var EPSLN = 1.0e-10;
  34956. // you'd think you could use Number.EPSILON above but that makes
  34957. // Mollweide get into an infinate loop.
  34958. var D2R = 0.01745329251994329577;
  34959. var R2D = 57.29577951308232088;
  34960. var FORTPI = Math.PI/4;
  34961. var TWO_PI = Math.PI * 2;
  34962. // SPI is slightly greater than Math.PI, so values that exceed the -180..180
  34963. // degree range by a tiny amount don't get wrapped. This prevents points that
  34964. // have drifted from their original location along the 180th meridian (due to
  34965. // floating point error) from changing their sign.
  34966. var SPI = 3.14159265359;
  34967. // CONCATENATED MODULE: ./node_modules/proj4/lib/constants/PrimeMeridian.js
  34968. var PrimeMeridian_exports = {};
  34969. PrimeMeridian_exports.greenwich = 0.0; //"0dE",
  34970. PrimeMeridian_exports.lisbon = -9.131906111111; //"9d07'54.862\"W",
  34971. PrimeMeridian_exports.paris = 2.337229166667; //"2d20'14.025\"E",
  34972. PrimeMeridian_exports.bogota = -74.080916666667; //"74d04'51.3\"W",
  34973. PrimeMeridian_exports.madrid = -3.687938888889; //"3d41'16.58\"W",
  34974. PrimeMeridian_exports.rome = 12.452333333333; //"12d27'8.4\"E",
  34975. PrimeMeridian_exports.bern = 7.439583333333; //"7d26'22.5\"E",
  34976. PrimeMeridian_exports.jakarta = 106.807719444444; //"106d48'27.79\"E",
  34977. PrimeMeridian_exports.ferro = -17.666666666667; //"17d40'W",
  34978. PrimeMeridian_exports.brussels = 4.367975; //"4d22'4.71\"E",
  34979. PrimeMeridian_exports.stockholm = 18.058277777778; //"18d3'29.8\"E",
  34980. PrimeMeridian_exports.athens = 23.7163375; //"23d42'58.815\"E",
  34981. PrimeMeridian_exports.oslo = 10.722916666667; //"10d43'22.5\"E"
  34982. // CONCATENATED MODULE: ./node_modules/proj4/lib/constants/units.js
  34983. /* harmony default export */ var units = ({
  34984. ft: {to_meter: 0.3048},
  34985. 'us-ft': {to_meter: 1200 / 3937}
  34986. });
  34987. // CONCATENATED MODULE: ./node_modules/proj4/lib/match.js
  34988. var ignoredChar = /[\s_\-\/\(\)]/g;
  34989. function match(obj, key) {
  34990. if (obj[key]) {
  34991. return obj[key];
  34992. }
  34993. var keys = Object.keys(obj);
  34994. var lkey = key.toLowerCase().replace(ignoredChar, '');
  34995. var i = -1;
  34996. var testkey, processedKey;
  34997. while (++i < keys.length) {
  34998. testkey = keys[i];
  34999. processedKey = testkey.toLowerCase().replace(ignoredChar, '');
  35000. if (processedKey === lkey) {
  35001. return obj[testkey];
  35002. }
  35003. }
  35004. }
  35005. // CONCATENATED MODULE: ./node_modules/proj4/lib/projString.js
  35006. /* harmony default export */ var projString = (function(defData) {
  35007. var self = {};
  35008. var paramObj = defData.split('+').map(function(v) {
  35009. return v.trim();
  35010. }).filter(function(a) {
  35011. return a;
  35012. }).reduce(function(p, a) {
  35013. var split = a.split('=');
  35014. split.push(true);
  35015. p[split[0].toLowerCase()] = split[1];
  35016. return p;
  35017. }, {});
  35018. var paramName, paramVal, paramOutname;
  35019. var params = {
  35020. proj: 'projName',
  35021. datum: 'datumCode',
  35022. rf: function(v) {
  35023. self.rf = parseFloat(v);
  35024. },
  35025. lat_0: function(v) {
  35026. self.lat0 = v * D2R;
  35027. },
  35028. lat_1: function(v) {
  35029. self.lat1 = v * D2R;
  35030. },
  35031. lat_2: function(v) {
  35032. self.lat2 = v * D2R;
  35033. },
  35034. lat_ts: function(v) {
  35035. self.lat_ts = v * D2R;
  35036. },
  35037. lon_0: function(v) {
  35038. self.long0 = v * D2R;
  35039. },
  35040. lon_1: function(v) {
  35041. self.long1 = v * D2R;
  35042. },
  35043. lon_2: function(v) {
  35044. self.long2 = v * D2R;
  35045. },
  35046. alpha: function(v) {
  35047. self.alpha = parseFloat(v) * D2R;
  35048. },
  35049. lonc: function(v) {
  35050. self.longc = v * D2R;
  35051. },
  35052. x_0: function(v) {
  35053. self.x0 = parseFloat(v);
  35054. },
  35055. y_0: function(v) {
  35056. self.y0 = parseFloat(v);
  35057. },
  35058. k_0: function(v) {
  35059. self.k0 = parseFloat(v);
  35060. },
  35061. k: function(v) {
  35062. self.k0 = parseFloat(v);
  35063. },
  35064. a: function(v) {
  35065. self.a = parseFloat(v);
  35066. },
  35067. b: function(v) {
  35068. self.b = parseFloat(v);
  35069. },
  35070. r_a: function() {
  35071. self.R_A = true;
  35072. },
  35073. zone: function(v) {
  35074. self.zone = parseInt(v, 10);
  35075. },
  35076. south: function() {
  35077. self.utmSouth = true;
  35078. },
  35079. towgs84: function(v) {
  35080. self.datum_params = v.split(",").map(function(a) {
  35081. return parseFloat(a);
  35082. });
  35083. },
  35084. to_meter: function(v) {
  35085. self.to_meter = parseFloat(v);
  35086. },
  35087. units: function(v) {
  35088. self.units = v;
  35089. var unit = match(units, v);
  35090. if (unit) {
  35091. self.to_meter = unit.to_meter;
  35092. }
  35093. },
  35094. from_greenwich: function(v) {
  35095. self.from_greenwich = v * D2R;
  35096. },
  35097. pm: function(v) {
  35098. var pm = match(PrimeMeridian_exports, v);
  35099. self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R;
  35100. },
  35101. nadgrids: function(v) {
  35102. if (v === '@null') {
  35103. self.datumCode = 'none';
  35104. }
  35105. else {
  35106. self.nadgrids = v;
  35107. }
  35108. },
  35109. axis: function(v) {
  35110. var legalAxis = "ewnsud";
  35111. if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {
  35112. self.axis = v;
  35113. }
  35114. }
  35115. };
  35116. for (paramName in paramObj) {
  35117. paramVal = paramObj[paramName];
  35118. if (paramName in params) {
  35119. paramOutname = params[paramName];
  35120. if (typeof paramOutname === 'function') {
  35121. paramOutname(paramVal);
  35122. }
  35123. else {
  35124. self[paramOutname] = paramVal;
  35125. }
  35126. }
  35127. else {
  35128. self[paramName] = paramVal;
  35129. }
  35130. }
  35131. if(typeof self.datumCode === 'string' && self.datumCode !== "WGS84"){
  35132. self.datumCode = self.datumCode.toLowerCase();
  35133. }
  35134. return self;
  35135. });
  35136. // CONCATENATED MODULE: ./node_modules/wkt-parser/parser.js
  35137. /* harmony default export */ var parser = (parseString);
  35138. var NEUTRAL = 1;
  35139. var KEYWORD = 2;
  35140. var NUMBER = 3;
  35141. var QUOTED = 4;
  35142. var AFTERQUOTE = 5;
  35143. var ENDED = -1;
  35144. var whitespace = /\s/;
  35145. var latin = /[A-Za-z]/;
  35146. var keyword = /[A-Za-z84]/;
  35147. var endThings = /[,\]]/;
  35148. var digets = /[\d\.E\-\+]/;
  35149. // const ignoredChar = /[\s_\-\/\(\)]/g;
  35150. function Parser(text) {
  35151. if (typeof text !== 'string') {
  35152. throw new Error('not a string');
  35153. }
  35154. this.text = text.trim();
  35155. this.level = 0;
  35156. this.place = 0;
  35157. this.root = null;
  35158. this.stack = [];
  35159. this.currentObject = null;
  35160. this.state = NEUTRAL;
  35161. }
  35162. Parser.prototype.readCharicter = function() {
  35163. var char = this.text[this.place++];
  35164. if (this.state !== QUOTED) {
  35165. while (whitespace.test(char)) {
  35166. if (this.place >= this.text.length) {
  35167. return;
  35168. }
  35169. char = this.text[this.place++];
  35170. }
  35171. }
  35172. switch (this.state) {
  35173. case NEUTRAL:
  35174. return this.neutral(char);
  35175. case KEYWORD:
  35176. return this.keyword(char)
  35177. case QUOTED:
  35178. return this.quoted(char);
  35179. case AFTERQUOTE:
  35180. return this.afterquote(char);
  35181. case NUMBER:
  35182. return this.number(char);
  35183. case ENDED:
  35184. return;
  35185. }
  35186. };
  35187. Parser.prototype.afterquote = function(char) {
  35188. if (char === '"') {
  35189. this.word += '"';
  35190. this.state = QUOTED;
  35191. return;
  35192. }
  35193. if (endThings.test(char)) {
  35194. this.word = this.word.trim();
  35195. this.afterItem(char);
  35196. return;
  35197. }
  35198. throw new Error('havn\'t handled "' +char + '" in afterquote yet, index ' + this.place);
  35199. };
  35200. Parser.prototype.afterItem = function(char) {
  35201. if (char === ',') {
  35202. if (this.word !== null) {
  35203. this.currentObject.push(this.word);
  35204. }
  35205. this.word = null;
  35206. this.state = NEUTRAL;
  35207. return;
  35208. }
  35209. if (char === ']') {
  35210. this.level--;
  35211. if (this.word !== null) {
  35212. this.currentObject.push(this.word);
  35213. this.word = null;
  35214. }
  35215. this.state = NEUTRAL;
  35216. this.currentObject = this.stack.pop();
  35217. if (!this.currentObject) {
  35218. this.state = ENDED;
  35219. }
  35220. return;
  35221. }
  35222. };
  35223. Parser.prototype.number = function(char) {
  35224. if (digets.test(char)) {
  35225. this.word += char;
  35226. return;
  35227. }
  35228. if (endThings.test(char)) {
  35229. this.word = parseFloat(this.word);
  35230. this.afterItem(char);
  35231. return;
  35232. }
  35233. throw new Error('havn\'t handled "' +char + '" in number yet, index ' + this.place);
  35234. };
  35235. Parser.prototype.quoted = function(char) {
  35236. if (char === '"') {
  35237. this.state = AFTERQUOTE;
  35238. return;
  35239. }
  35240. this.word += char;
  35241. return;
  35242. };
  35243. Parser.prototype.keyword = function(char) {
  35244. if (keyword.test(char)) {
  35245. this.word += char;
  35246. return;
  35247. }
  35248. if (char === '[') {
  35249. var newObjects = [];
  35250. newObjects.push(this.word);
  35251. this.level++;
  35252. if (this.root === null) {
  35253. this.root = newObjects;
  35254. } else {
  35255. this.currentObject.push(newObjects);
  35256. }
  35257. this.stack.push(this.currentObject);
  35258. this.currentObject = newObjects;
  35259. this.state = NEUTRAL;
  35260. return;
  35261. }
  35262. if (endThings.test(char)) {
  35263. this.afterItem(char);
  35264. return;
  35265. }
  35266. throw new Error('havn\'t handled "' +char + '" in keyword yet, index ' + this.place);
  35267. };
  35268. Parser.prototype.neutral = function(char) {
  35269. if (latin.test(char)) {
  35270. this.word = char;
  35271. this.state = KEYWORD;
  35272. return;
  35273. }
  35274. if (char === '"') {
  35275. this.word = '';
  35276. this.state = QUOTED;
  35277. return;
  35278. }
  35279. if (digets.test(char)) {
  35280. this.word = char;
  35281. this.state = NUMBER;
  35282. return;
  35283. }
  35284. if (endThings.test(char)) {
  35285. this.afterItem(char);
  35286. return;
  35287. }
  35288. throw new Error('havn\'t handled "' +char + '" in neutral yet, index ' + this.place);
  35289. };
  35290. Parser.prototype.output = function() {
  35291. while (this.place < this.text.length) {
  35292. this.readCharicter();
  35293. }
  35294. if (this.state === ENDED) {
  35295. return this.root;
  35296. }
  35297. throw new Error('unable to parse string "' +this.text + '". State is ' + this.state);
  35298. };
  35299. function parseString(txt) {
  35300. var parser = new Parser(txt);
  35301. return parser.output();
  35302. }
  35303. // CONCATENATED MODULE: ./node_modules/wkt-parser/process.js
  35304. function mapit(obj, key, value) {
  35305. if (Array.isArray(key)) {
  35306. value.unshift(key);
  35307. key = null;
  35308. }
  35309. var thing = key ? {} : obj;
  35310. var out = value.reduce(function(newObj, item) {
  35311. sExpr(item, newObj);
  35312. return newObj
  35313. }, thing);
  35314. if (key) {
  35315. obj[key] = out;
  35316. }
  35317. }
  35318. function sExpr(v, obj) {
  35319. if (!Array.isArray(v)) {
  35320. obj[v] = true;
  35321. return;
  35322. }
  35323. var key = v.shift();
  35324. if (key === 'PARAMETER') {
  35325. key = v.shift();
  35326. }
  35327. if (v.length === 1) {
  35328. if (Array.isArray(v[0])) {
  35329. obj[key] = {};
  35330. sExpr(v[0], obj[key]);
  35331. return;
  35332. }
  35333. obj[key] = v[0];
  35334. return;
  35335. }
  35336. if (!v.length) {
  35337. obj[key] = true;
  35338. return;
  35339. }
  35340. if (key === 'TOWGS84') {
  35341. obj[key] = v;
  35342. return;
  35343. }
  35344. if (!Array.isArray(key)) {
  35345. obj[key] = {};
  35346. }
  35347. var i;
  35348. switch (key) {
  35349. case 'UNIT':
  35350. case 'PRIMEM':
  35351. case 'VERT_DATUM':
  35352. obj[key] = {
  35353. name: v[0].toLowerCase(),
  35354. convert: v[1]
  35355. };
  35356. if (v.length === 3) {
  35357. sExpr(v[2], obj[key]);
  35358. }
  35359. return;
  35360. case 'SPHEROID':
  35361. case 'ELLIPSOID':
  35362. obj[key] = {
  35363. name: v[0],
  35364. a: v[1],
  35365. rf: v[2]
  35366. };
  35367. if (v.length === 4) {
  35368. sExpr(v[3], obj[key]);
  35369. }
  35370. return;
  35371. case 'PROJECTEDCRS':
  35372. case 'PROJCRS':
  35373. case 'GEOGCS':
  35374. case 'GEOCCS':
  35375. case 'PROJCS':
  35376. case 'LOCAL_CS':
  35377. case 'GEODCRS':
  35378. case 'GEODETICCRS':
  35379. case 'GEODETICDATUM':
  35380. case 'EDATUM':
  35381. case 'ENGINEERINGDATUM':
  35382. case 'VERT_CS':
  35383. case 'VERTCRS':
  35384. case 'VERTICALCRS':
  35385. case 'COMPD_CS':
  35386. case 'COMPOUNDCRS':
  35387. case 'ENGINEERINGCRS':
  35388. case 'ENGCRS':
  35389. case 'FITTED_CS':
  35390. case 'LOCAL_DATUM':
  35391. case 'DATUM':
  35392. v[0] = ['name', v[0]];
  35393. mapit(obj, key, v);
  35394. return;
  35395. default:
  35396. i = -1;
  35397. while (++i < v.length) {
  35398. if (!Array.isArray(v[i])) {
  35399. return sExpr(v, obj[key]);
  35400. }
  35401. }
  35402. return mapit(obj, key, v);
  35403. }
  35404. }
  35405. // CONCATENATED MODULE: ./node_modules/wkt-parser/index.js
  35406. var wkt_parser_D2R = 0.01745329251994329577;
  35407. function rename(obj, params) {
  35408. var outName = params[0];
  35409. var inName = params[1];
  35410. if (!(outName in obj) && (inName in obj)) {
  35411. obj[outName] = obj[inName];
  35412. if (params.length === 3) {
  35413. obj[outName] = params[2](obj[outName]);
  35414. }
  35415. }
  35416. }
  35417. function d2r(input) {
  35418. return input * wkt_parser_D2R;
  35419. }
  35420. function cleanWKT(wkt) {
  35421. if (wkt.type === 'GEOGCS') {
  35422. wkt.projName = 'longlat';
  35423. } else if (wkt.type === 'LOCAL_CS') {
  35424. wkt.projName = 'identity';
  35425. wkt.local = true;
  35426. } else {
  35427. if (typeof wkt.PROJECTION === 'object') {
  35428. wkt.projName = Object.keys(wkt.PROJECTION)[0];
  35429. } else {
  35430. wkt.projName = wkt.PROJECTION;
  35431. }
  35432. }
  35433. if (wkt.UNIT) {
  35434. wkt.units = wkt.UNIT.name.toLowerCase();
  35435. if (wkt.units === 'metre') {
  35436. wkt.units = 'meter';
  35437. }
  35438. if (wkt.UNIT.convert) {
  35439. if (wkt.type === 'GEOGCS') {
  35440. if (wkt.DATUM && wkt.DATUM.SPHEROID) {
  35441. wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;
  35442. }
  35443. } else {
  35444. wkt.to_meter = wkt.UNIT.convert;
  35445. }
  35446. }
  35447. }
  35448. var geogcs = wkt.GEOGCS;
  35449. if (wkt.type === 'GEOGCS') {
  35450. geogcs = wkt;
  35451. }
  35452. if (geogcs) {
  35453. //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){
  35454. // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;
  35455. //}
  35456. if (geogcs.DATUM) {
  35457. wkt.datumCode = geogcs.DATUM.name.toLowerCase();
  35458. } else {
  35459. wkt.datumCode = geogcs.name.toLowerCase();
  35460. }
  35461. if (wkt.datumCode.slice(0, 2) === 'd_') {
  35462. wkt.datumCode = wkt.datumCode.slice(2);
  35463. }
  35464. if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {
  35465. wkt.datumCode = 'nzgd49';
  35466. }
  35467. if (wkt.datumCode === 'wgs_1984') {
  35468. if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {
  35469. wkt.sphere = true;
  35470. }
  35471. wkt.datumCode = 'wgs84';
  35472. }
  35473. if (wkt.datumCode.slice(-6) === '_ferro') {
  35474. wkt.datumCode = wkt.datumCode.slice(0, - 6);
  35475. }
  35476. if (wkt.datumCode.slice(-8) === '_jakarta') {
  35477. wkt.datumCode = wkt.datumCode.slice(0, - 8);
  35478. }
  35479. if (~wkt.datumCode.indexOf('belge')) {
  35480. wkt.datumCode = 'rnb72';
  35481. }
  35482. if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {
  35483. wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\_18/, 'clrk');
  35484. if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {
  35485. wkt.ellps = 'intl';
  35486. }
  35487. wkt.a = geogcs.DATUM.SPHEROID.a;
  35488. wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);
  35489. }
  35490. if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {
  35491. wkt.datum_params = geogcs.DATUM.TOWGS84;
  35492. }
  35493. if (~wkt.datumCode.indexOf('osgb_1936')) {
  35494. wkt.datumCode = 'osgb36';
  35495. }
  35496. if (~wkt.datumCode.indexOf('osni_1952')) {
  35497. wkt.datumCode = 'osni52';
  35498. }
  35499. if (~wkt.datumCode.indexOf('tm65')
  35500. || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {
  35501. wkt.datumCode = 'ire65';
  35502. }
  35503. if (wkt.datumCode === 'ch1903+') {
  35504. wkt.datumCode = 'ch1903';
  35505. }
  35506. if (~wkt.datumCode.indexOf('israel')) {
  35507. wkt.datumCode = 'isr93';
  35508. }
  35509. }
  35510. if (wkt.b && !isFinite(wkt.b)) {
  35511. wkt.b = wkt.a;
  35512. }
  35513. function toMeter(input) {
  35514. var ratio = wkt.to_meter || 1;
  35515. return input * ratio;
  35516. }
  35517. var renamer = function(a) {
  35518. return rename(wkt, a);
  35519. };
  35520. var list = [
  35521. ['standard_parallel_1', 'Standard_Parallel_1'],
  35522. ['standard_parallel_2', 'Standard_Parallel_2'],
  35523. ['false_easting', 'False_Easting'],
  35524. ['false_northing', 'False_Northing'],
  35525. ['central_meridian', 'Central_Meridian'],
  35526. ['latitude_of_origin', 'Latitude_Of_Origin'],
  35527. ['latitude_of_origin', 'Central_Parallel'],
  35528. ['scale_factor', 'Scale_Factor'],
  35529. ['k0', 'scale_factor'],
  35530. ['latitude_of_center', 'Latitude_Of_Center'],
  35531. ['latitude_of_center', 'Latitude_of_center'],
  35532. ['lat0', 'latitude_of_center', d2r],
  35533. ['longitude_of_center', 'Longitude_Of_Center'],
  35534. ['longitude_of_center', 'Longitude_of_center'],
  35535. ['longc', 'longitude_of_center', d2r],
  35536. ['x0', 'false_easting', toMeter],
  35537. ['y0', 'false_northing', toMeter],
  35538. ['long0', 'central_meridian', d2r],
  35539. ['lat0', 'latitude_of_origin', d2r],
  35540. ['lat0', 'standard_parallel_1', d2r],
  35541. ['lat1', 'standard_parallel_1', d2r],
  35542. ['lat2', 'standard_parallel_2', d2r],
  35543. ['azimuth', 'Azimuth'],
  35544. ['alpha', 'azimuth', d2r],
  35545. ['srsCode', 'name']
  35546. ];
  35547. list.forEach(renamer);
  35548. if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {
  35549. wkt.long0 = wkt.longc;
  35550. }
  35551. if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {
  35552. wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);
  35553. wkt.lat_ts = wkt.lat1;
  35554. }
  35555. }
  35556. /* harmony default export */ var wkt_parser = (function(wkt) {
  35557. var lisp = parser(wkt);
  35558. var type = lisp.shift();
  35559. var name = lisp.shift();
  35560. lisp.unshift(['name', name]);
  35561. lisp.unshift(['type', type]);
  35562. var obj = {};
  35563. sExpr(lisp, obj);
  35564. cleanWKT(obj);
  35565. return obj;
  35566. });
  35567. // CONCATENATED MODULE: ./node_modules/proj4/lib/defs.js
  35568. function defs(name) {
  35569. /*global console*/
  35570. var that = this;
  35571. if (arguments.length === 2) {
  35572. var def = arguments[1];
  35573. if (typeof def === 'string') {
  35574. if (def.charAt(0) === '+') {
  35575. defs[name] = projString(arguments[1]);
  35576. }
  35577. else {
  35578. defs[name] = wkt_parser(arguments[1]);
  35579. }
  35580. } else {
  35581. defs[name] = def;
  35582. }
  35583. }
  35584. else if (arguments.length === 1) {
  35585. if (Array.isArray(name)) {
  35586. return name.map(function(v) {
  35587. if (Array.isArray(v)) {
  35588. defs.apply(that, v);
  35589. }
  35590. else {
  35591. defs(v);
  35592. }
  35593. });
  35594. }
  35595. else if (typeof name === 'string') {
  35596. if (name in defs) {
  35597. return defs[name];
  35598. }
  35599. }
  35600. else if ('EPSG' in name) {
  35601. defs['EPSG:' + name.EPSG] = name;
  35602. }
  35603. else if ('ESRI' in name) {
  35604. defs['ESRI:' + name.ESRI] = name;
  35605. }
  35606. else if ('IAU2000' in name) {
  35607. defs['IAU2000:' + name.IAU2000] = name;
  35608. }
  35609. else {
  35610. console.log(name);
  35611. }
  35612. return;
  35613. }
  35614. }
  35615. global(defs);
  35616. /* harmony default export */ var lib_defs = (defs);
  35617. // CONCATENATED MODULE: ./node_modules/proj4/lib/parseCode.js
  35618. function testObj(code){
  35619. return typeof code === 'string';
  35620. }
  35621. function testDef(code){
  35622. return code in lib_defs;
  35623. }
  35624. var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];
  35625. function testWKT(code){
  35626. return codeWords.some(function (word) {
  35627. return code.indexOf(word) > -1;
  35628. });
  35629. }
  35630. var codes = ['3857', '900913', '3785', '102113'];
  35631. function checkMercator(item) {
  35632. var auth = match(item, 'authority');
  35633. if (!auth) {
  35634. return;
  35635. }
  35636. var code = match(auth, 'epsg');
  35637. return code && codes.indexOf(code) > -1;
  35638. }
  35639. function checkProjStr(item) {
  35640. var ext = match(item, 'extension');
  35641. if (!ext) {
  35642. return;
  35643. }
  35644. return match(ext, 'proj4');
  35645. }
  35646. function testProj(code){
  35647. return code[0] === '+';
  35648. }
  35649. function parse(code){
  35650. if (testObj(code)) {
  35651. //check to see if this is a WKT string
  35652. if (testDef(code)) {
  35653. return lib_defs[code];
  35654. }
  35655. if (testWKT(code)) {
  35656. var out = wkt_parser(code);
  35657. // test of spetial case, due to this being a very common and often malformed
  35658. if (checkMercator(out)) {
  35659. return lib_defs['EPSG:3857'];
  35660. }
  35661. var maybeProjStr = checkProjStr(out);
  35662. if (maybeProjStr) {
  35663. return projString(maybeProjStr);
  35664. }
  35665. return out;
  35666. }
  35667. if (testProj(code)) {
  35668. return projString(code);
  35669. }
  35670. }else{
  35671. return code;
  35672. }
  35673. }
  35674. /* harmony default export */ var parseCode = (parse);
  35675. // CONCATENATED MODULE: ./node_modules/proj4/lib/extend.js
  35676. /* harmony default export */ var extend = (function(destination, source) {
  35677. destination = destination || {};
  35678. var value, property;
  35679. if (!source) {
  35680. return destination;
  35681. }
  35682. for (property in source) {
  35683. value = source[property];
  35684. if (value !== undefined) {
  35685. destination[property] = value;
  35686. }
  35687. }
  35688. return destination;
  35689. });
  35690. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/msfnz.js
  35691. /* harmony default export */ var msfnz = (function(eccent, sinphi, cosphi) {
  35692. var con = eccent * sinphi;
  35693. return cosphi / (Math.sqrt(1 - con * con));
  35694. });
  35695. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/sign.js
  35696. /* harmony default export */ var sign = (function(x) {
  35697. return x<0 ? -1 : 1;
  35698. });
  35699. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/adjust_lon.js
  35700. /* harmony default export */ var adjust_lon = (function(x) {
  35701. return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));
  35702. });
  35703. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/tsfnz.js
  35704. /* harmony default export */ var tsfnz = (function(eccent, phi, sinphi) {
  35705. var con = eccent * sinphi;
  35706. var com = 0.5 * eccent;
  35707. con = Math.pow(((1 - con) / (1 + con)), com);
  35708. return (Math.tan(0.5 * (HALF_PI - phi)) / con);
  35709. });
  35710. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/phi2z.js
  35711. /* harmony default export */ var phi2z = (function(eccent, ts) {
  35712. var eccnth = 0.5 * eccent;
  35713. var con, dphi;
  35714. var phi = HALF_PI - 2 * Math.atan(ts);
  35715. for (var i = 0; i <= 15; i++) {
  35716. con = eccent * Math.sin(phi);
  35717. dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;
  35718. phi += dphi;
  35719. if (Math.abs(dphi) <= 0.0000000001) {
  35720. return phi;
  35721. }
  35722. }
  35723. //console.log("phi2z has NoConvergence");
  35724. return -9999;
  35725. });
  35726. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/merc.js
  35727. function init() {
  35728. var con = this.b / this.a;
  35729. this.es = 1 - con * con;
  35730. if(!('x0' in this)){
  35731. this.x0 = 0;
  35732. }
  35733. if(!('y0' in this)){
  35734. this.y0 = 0;
  35735. }
  35736. this.e = Math.sqrt(this.es);
  35737. if (this.lat_ts) {
  35738. if (this.sphere) {
  35739. this.k0 = Math.cos(this.lat_ts);
  35740. }
  35741. else {
  35742. this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
  35743. }
  35744. }
  35745. else {
  35746. if (!this.k0) {
  35747. if (this.k) {
  35748. this.k0 = this.k;
  35749. }
  35750. else {
  35751. this.k0 = 1;
  35752. }
  35753. }
  35754. }
  35755. }
  35756. /* Mercator forward equations--mapping lat,long to x,y
  35757. --------------------------------------------------*/
  35758. function forward(p) {
  35759. var lon = p.x;
  35760. var lat = p.y;
  35761. // convert to radians
  35762. if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {
  35763. return null;
  35764. }
  35765. var x, y;
  35766. if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
  35767. return null;
  35768. }
  35769. else {
  35770. if (this.sphere) {
  35771. x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);
  35772. y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));
  35773. }
  35774. else {
  35775. var sinphi = Math.sin(lat);
  35776. var ts = tsfnz(this.e, lat, sinphi);
  35777. x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);
  35778. y = this.y0 - this.a * this.k0 * Math.log(ts);
  35779. }
  35780. p.x = x;
  35781. p.y = y;
  35782. return p;
  35783. }
  35784. }
  35785. /* Mercator inverse equations--mapping x,y to lat/long
  35786. --------------------------------------------------*/
  35787. function inverse(p) {
  35788. var x = p.x - this.x0;
  35789. var y = p.y - this.y0;
  35790. var lon, lat;
  35791. if (this.sphere) {
  35792. lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));
  35793. }
  35794. else {
  35795. var ts = Math.exp(-y / (this.a * this.k0));
  35796. lat = phi2z(this.e, ts);
  35797. if (lat === -9999) {
  35798. return null;
  35799. }
  35800. }
  35801. lon = adjust_lon(this.long0 + x / (this.a * this.k0));
  35802. p.x = lon;
  35803. p.y = lat;
  35804. return p;
  35805. }
  35806. var names = ["Mercator", "Popular Visualisation Pseudo Mercator", "Mercator_1SP", "Mercator_Auxiliary_Sphere", "merc"];
  35807. /* harmony default export */ var merc = ({
  35808. init: init,
  35809. forward: forward,
  35810. inverse: inverse,
  35811. names: names
  35812. });
  35813. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/longlat.js
  35814. function longlat_init() {
  35815. //no-op for longlat
  35816. }
  35817. function identity(pt) {
  35818. return pt;
  35819. }
  35820. var longlat_names = ["longlat", "identity"];
  35821. /* harmony default export */ var longlat = ({
  35822. init: longlat_init,
  35823. forward: identity,
  35824. inverse: identity,
  35825. names: longlat_names
  35826. });
  35827. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections.js
  35828. var projs = [merc, longlat];
  35829. var projections_names = {};
  35830. var projStore = [];
  35831. function add(proj, i) {
  35832. var len = projStore.length;
  35833. if (!proj.names) {
  35834. console.log(i);
  35835. return true;
  35836. }
  35837. projStore[len] = proj;
  35838. proj.names.forEach(function(n) {
  35839. projections_names[n.toLowerCase()] = len;
  35840. });
  35841. return this;
  35842. }
  35843. function get(name) {
  35844. if (!name) {
  35845. return false;
  35846. }
  35847. var n = name.toLowerCase();
  35848. if (typeof projections_names[n] !== 'undefined' && projStore[projections_names[n]]) {
  35849. return projStore[projections_names[n]];
  35850. }
  35851. }
  35852. function start() {
  35853. projs.forEach(add);
  35854. }
  35855. /* harmony default export */ var projections = ({
  35856. start: start,
  35857. add: add,
  35858. get: get
  35859. });
  35860. // CONCATENATED MODULE: ./node_modules/proj4/lib/constants/Ellipsoid.js
  35861. var Ellipsoid_exports = {};
  35862. Ellipsoid_exports.MERIT = {
  35863. a: 6378137.0,
  35864. rf: 298.257,
  35865. ellipseName: "MERIT 1983"
  35866. };
  35867. Ellipsoid_exports.SGS85 = {
  35868. a: 6378136.0,
  35869. rf: 298.257,
  35870. ellipseName: "Soviet Geodetic System 85"
  35871. };
  35872. Ellipsoid_exports.GRS80 = {
  35873. a: 6378137.0,
  35874. rf: 298.257222101,
  35875. ellipseName: "GRS 1980(IUGG, 1980)"
  35876. };
  35877. Ellipsoid_exports.IAU76 = {
  35878. a: 6378140.0,
  35879. rf: 298.257,
  35880. ellipseName: "IAU 1976"
  35881. };
  35882. Ellipsoid_exports.airy = {
  35883. a: 6377563.396,
  35884. b: 6356256.910,
  35885. ellipseName: "Airy 1830"
  35886. };
  35887. Ellipsoid_exports.APL4 = {
  35888. a: 6378137,
  35889. rf: 298.25,
  35890. ellipseName: "Appl. Physics. 1965"
  35891. };
  35892. Ellipsoid_exports.NWL9D = {
  35893. a: 6378145.0,
  35894. rf: 298.25,
  35895. ellipseName: "Naval Weapons Lab., 1965"
  35896. };
  35897. Ellipsoid_exports.mod_airy = {
  35898. a: 6377340.189,
  35899. b: 6356034.446,
  35900. ellipseName: "Modified Airy"
  35901. };
  35902. Ellipsoid_exports.andrae = {
  35903. a: 6377104.43,
  35904. rf: 300.0,
  35905. ellipseName: "Andrae 1876 (Den., Iclnd.)"
  35906. };
  35907. Ellipsoid_exports.aust_SA = {
  35908. a: 6378160.0,
  35909. rf: 298.25,
  35910. ellipseName: "Australian Natl & S. Amer. 1969"
  35911. };
  35912. Ellipsoid_exports.GRS67 = {
  35913. a: 6378160.0,
  35914. rf: 298.2471674270,
  35915. ellipseName: "GRS 67(IUGG 1967)"
  35916. };
  35917. Ellipsoid_exports.bessel = {
  35918. a: 6377397.155,
  35919. rf: 299.1528128,
  35920. ellipseName: "Bessel 1841"
  35921. };
  35922. Ellipsoid_exports.bess_nam = {
  35923. a: 6377483.865,
  35924. rf: 299.1528128,
  35925. ellipseName: "Bessel 1841 (Namibia)"
  35926. };
  35927. Ellipsoid_exports.clrk66 = {
  35928. a: 6378206.4,
  35929. b: 6356583.8,
  35930. ellipseName: "Clarke 1866"
  35931. };
  35932. Ellipsoid_exports.clrk80 = {
  35933. a: 6378249.145,
  35934. rf: 293.4663,
  35935. ellipseName: "Clarke 1880 mod."
  35936. };
  35937. Ellipsoid_exports.clrk58 = {
  35938. a: 6378293.645208759,
  35939. rf: 294.2606763692654,
  35940. ellipseName: "Clarke 1858"
  35941. };
  35942. Ellipsoid_exports.CPM = {
  35943. a: 6375738.7,
  35944. rf: 334.29,
  35945. ellipseName: "Comm. des Poids et Mesures 1799"
  35946. };
  35947. Ellipsoid_exports.delmbr = {
  35948. a: 6376428.0,
  35949. rf: 311.5,
  35950. ellipseName: "Delambre 1810 (Belgium)"
  35951. };
  35952. Ellipsoid_exports.engelis = {
  35953. a: 6378136.05,
  35954. rf: 298.2566,
  35955. ellipseName: "Engelis 1985"
  35956. };
  35957. Ellipsoid_exports.evrst30 = {
  35958. a: 6377276.345,
  35959. rf: 300.8017,
  35960. ellipseName: "Everest 1830"
  35961. };
  35962. Ellipsoid_exports.evrst48 = {
  35963. a: 6377304.063,
  35964. rf: 300.8017,
  35965. ellipseName: "Everest 1948"
  35966. };
  35967. Ellipsoid_exports.evrst56 = {
  35968. a: 6377301.243,
  35969. rf: 300.8017,
  35970. ellipseName: "Everest 1956"
  35971. };
  35972. Ellipsoid_exports.evrst69 = {
  35973. a: 6377295.664,
  35974. rf: 300.8017,
  35975. ellipseName: "Everest 1969"
  35976. };
  35977. Ellipsoid_exports.evrstSS = {
  35978. a: 6377298.556,
  35979. rf: 300.8017,
  35980. ellipseName: "Everest (Sabah & Sarawak)"
  35981. };
  35982. Ellipsoid_exports.fschr60 = {
  35983. a: 6378166.0,
  35984. rf: 298.3,
  35985. ellipseName: "Fischer (Mercury Datum) 1960"
  35986. };
  35987. Ellipsoid_exports.fschr60m = {
  35988. a: 6378155.0,
  35989. rf: 298.3,
  35990. ellipseName: "Fischer 1960"
  35991. };
  35992. Ellipsoid_exports.fschr68 = {
  35993. a: 6378150.0,
  35994. rf: 298.3,
  35995. ellipseName: "Fischer 1968"
  35996. };
  35997. Ellipsoid_exports.helmert = {
  35998. a: 6378200.0,
  35999. rf: 298.3,
  36000. ellipseName: "Helmert 1906"
  36001. };
  36002. Ellipsoid_exports.hough = {
  36003. a: 6378270.0,
  36004. rf: 297.0,
  36005. ellipseName: "Hough"
  36006. };
  36007. Ellipsoid_exports.intl = {
  36008. a: 6378388.0,
  36009. rf: 297.0,
  36010. ellipseName: "International 1909 (Hayford)"
  36011. };
  36012. Ellipsoid_exports.kaula = {
  36013. a: 6378163.0,
  36014. rf: 298.24,
  36015. ellipseName: "Kaula 1961"
  36016. };
  36017. Ellipsoid_exports.lerch = {
  36018. a: 6378139.0,
  36019. rf: 298.257,
  36020. ellipseName: "Lerch 1979"
  36021. };
  36022. Ellipsoid_exports.mprts = {
  36023. a: 6397300.0,
  36024. rf: 191.0,
  36025. ellipseName: "Maupertius 1738"
  36026. };
  36027. Ellipsoid_exports.new_intl = {
  36028. a: 6378157.5,
  36029. b: 6356772.2,
  36030. ellipseName: "New International 1967"
  36031. };
  36032. Ellipsoid_exports.plessis = {
  36033. a: 6376523.0,
  36034. rf: 6355863.0,
  36035. ellipseName: "Plessis 1817 (France)"
  36036. };
  36037. Ellipsoid_exports.krass = {
  36038. a: 6378245.0,
  36039. rf: 298.3,
  36040. ellipseName: "Krassovsky, 1942"
  36041. };
  36042. Ellipsoid_exports.SEasia = {
  36043. a: 6378155.0,
  36044. b: 6356773.3205,
  36045. ellipseName: "Southeast Asia"
  36046. };
  36047. Ellipsoid_exports.walbeck = {
  36048. a: 6376896.0,
  36049. b: 6355834.8467,
  36050. ellipseName: "Walbeck"
  36051. };
  36052. Ellipsoid_exports.WGS60 = {
  36053. a: 6378165.0,
  36054. rf: 298.3,
  36055. ellipseName: "WGS 60"
  36056. };
  36057. Ellipsoid_exports.WGS66 = {
  36058. a: 6378145.0,
  36059. rf: 298.25,
  36060. ellipseName: "WGS 66"
  36061. };
  36062. Ellipsoid_exports.WGS7 = {
  36063. a: 6378135.0,
  36064. rf: 298.26,
  36065. ellipseName: "WGS 72"
  36066. };
  36067. var WGS84 = Ellipsoid_exports.WGS84 = {
  36068. a: 6378137.0,
  36069. rf: 298.257223563,
  36070. ellipseName: "WGS 84"
  36071. };
  36072. Ellipsoid_exports.sphere = {
  36073. a: 6370997.0,
  36074. b: 6370997.0,
  36075. ellipseName: "Normal Sphere (r=6370997)"
  36076. };
  36077. // CONCATENATED MODULE: ./node_modules/proj4/lib/deriveConstants.js
  36078. function eccentricity(a, b, rf, R_A) {
  36079. var a2 = a * a; // used in geocentric
  36080. var b2 = b * b; // used in geocentric
  36081. var es = (a2 - b2) / a2; // e ^ 2
  36082. var e = 0;
  36083. if (R_A) {
  36084. a *= 1 - es * (SIXTH + es * (RA4 + es * RA6));
  36085. a2 = a * a;
  36086. es = 0;
  36087. } else {
  36088. e = Math.sqrt(es); // eccentricity
  36089. }
  36090. var ep2 = (a2 - b2) / b2; // used in geocentric
  36091. return {
  36092. es: es,
  36093. e: e,
  36094. ep2: ep2
  36095. };
  36096. }
  36097. function deriveConstants_sphere(a, b, rf, ellps, sphere) {
  36098. if (!a) { // do we have an ellipsoid?
  36099. var ellipse = match(Ellipsoid_exports, ellps);
  36100. if (!ellipse) {
  36101. ellipse = WGS84;
  36102. }
  36103. a = ellipse.a;
  36104. b = ellipse.b;
  36105. rf = ellipse.rf;
  36106. }
  36107. if (rf && !b) {
  36108. b = (1.0 - 1.0 / rf) * a;
  36109. }
  36110. if (rf === 0 || Math.abs(a - b) < EPSLN) {
  36111. sphere = true;
  36112. b = a;
  36113. }
  36114. return {
  36115. a: a,
  36116. b: b,
  36117. rf: rf,
  36118. sphere: sphere
  36119. };
  36120. }
  36121. // CONCATENATED MODULE: ./node_modules/proj4/lib/constants/Datum.js
  36122. var Datum_exports = {};
  36123. Datum_exports.wgs84 = {
  36124. towgs84: "0,0,0",
  36125. ellipse: "WGS84",
  36126. datumName: "WGS84"
  36127. };
  36128. Datum_exports.ch1903 = {
  36129. towgs84: "674.374,15.056,405.346",
  36130. ellipse: "bessel",
  36131. datumName: "swiss"
  36132. };
  36133. Datum_exports.ggrs87 = {
  36134. towgs84: "-199.87,74.79,246.62",
  36135. ellipse: "GRS80",
  36136. datumName: "Greek_Geodetic_Reference_System_1987"
  36137. };
  36138. Datum_exports.nad83 = {
  36139. towgs84: "0,0,0",
  36140. ellipse: "GRS80",
  36141. datumName: "North_American_Datum_1983"
  36142. };
  36143. Datum_exports.nad27 = {
  36144. nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",
  36145. ellipse: "clrk66",
  36146. datumName: "North_American_Datum_1927"
  36147. };
  36148. Datum_exports.potsdam = {
  36149. towgs84: "606.0,23.0,413.0",
  36150. ellipse: "bessel",
  36151. datumName: "Potsdam Rauenberg 1950 DHDN"
  36152. };
  36153. Datum_exports.carthage = {
  36154. towgs84: "-263.0,6.0,431.0",
  36155. ellipse: "clark80",
  36156. datumName: "Carthage 1934 Tunisia"
  36157. };
  36158. Datum_exports.hermannskogel = {
  36159. towgs84: "653.0,-212.0,449.0",
  36160. ellipse: "bessel",
  36161. datumName: "Hermannskogel"
  36162. };
  36163. Datum_exports.osni52 = {
  36164. towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
  36165. ellipse: "airy",
  36166. datumName: "Irish National"
  36167. };
  36168. Datum_exports.ire65 = {
  36169. towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
  36170. ellipse: "mod_airy",
  36171. datumName: "Ireland 1965"
  36172. };
  36173. Datum_exports.rassadiran = {
  36174. towgs84: "-133.63,-157.5,-158.62",
  36175. ellipse: "intl",
  36176. datumName: "Rassadiran"
  36177. };
  36178. Datum_exports.nzgd49 = {
  36179. towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",
  36180. ellipse: "intl",
  36181. datumName: "New Zealand Geodetic Datum 1949"
  36182. };
  36183. Datum_exports.osgb36 = {
  36184. towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",
  36185. ellipse: "airy",
  36186. datumName: "Airy 1830"
  36187. };
  36188. Datum_exports.s_jtsk = {
  36189. towgs84: "589,76,480",
  36190. ellipse: 'bessel',
  36191. datumName: 'S-JTSK (Ferro)'
  36192. };
  36193. Datum_exports.beduaram = {
  36194. towgs84: '-106,-87,188',
  36195. ellipse: 'clrk80',
  36196. datumName: 'Beduaram'
  36197. };
  36198. Datum_exports.gunung_segara = {
  36199. towgs84: '-403,684,41',
  36200. ellipse: 'bessel',
  36201. datumName: 'Gunung Segara Jakarta'
  36202. };
  36203. Datum_exports.rnb72 = {
  36204. towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",
  36205. ellipse: "intl",
  36206. datumName: "Reseau National Belge 1972"
  36207. };
  36208. // CONCATENATED MODULE: ./node_modules/proj4/lib/datum.js
  36209. function datum(datumCode, datum_params, a, b, es, ep2) {
  36210. var out = {};
  36211. if (datumCode === undefined || datumCode === 'none') {
  36212. out.datum_type = PJD_NODATUM;
  36213. } else {
  36214. out.datum_type = PJD_WGS84;
  36215. }
  36216. if (datum_params) {
  36217. out.datum_params = datum_params.map(parseFloat);
  36218. if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {
  36219. out.datum_type = PJD_3PARAM;
  36220. }
  36221. if (out.datum_params.length > 3) {
  36222. if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {
  36223. out.datum_type = PJD_7PARAM;
  36224. out.datum_params[3] *= SEC_TO_RAD;
  36225. out.datum_params[4] *= SEC_TO_RAD;
  36226. out.datum_params[5] *= SEC_TO_RAD;
  36227. out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0;
  36228. }
  36229. }
  36230. }
  36231. out.a = a; //datum object also uses these values
  36232. out.b = b;
  36233. out.es = es;
  36234. out.ep2 = ep2;
  36235. return out;
  36236. }
  36237. /* harmony default export */ var lib_datum = (datum);
  36238. // CONCATENATED MODULE: ./node_modules/proj4/lib/Proj.js
  36239. function Projection(srsCode,callback) {
  36240. if (!(this instanceof Projection)) {
  36241. return new Projection(srsCode);
  36242. }
  36243. callback = callback || function(error){
  36244. if(error){
  36245. throw error;
  36246. }
  36247. };
  36248. var json = parseCode(srsCode);
  36249. if(typeof json !== 'object'){
  36250. callback(srsCode);
  36251. return;
  36252. }
  36253. var ourProj = Projection.projections.get(json.projName);
  36254. if(!ourProj){
  36255. callback(srsCode);
  36256. return;
  36257. }
  36258. if (json.datumCode && json.datumCode !== 'none') {
  36259. var datumDef = match(Datum_exports, json.datumCode);
  36260. if (datumDef) {
  36261. json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;
  36262. json.ellps = datumDef.ellipse;
  36263. json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;
  36264. }
  36265. }
  36266. json.k0 = json.k0 || 1.0;
  36267. json.axis = json.axis || 'enu';
  36268. json.ellps = json.ellps || 'wgs84';
  36269. var sphere_ = deriveConstants_sphere(json.a, json.b, json.rf, json.ellps, json.sphere);
  36270. var ecc = eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);
  36271. var datumObj = json.datum || lib_datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2);
  36272. extend(this, json); // transfer everything over from the projection because we don't know what we'll need
  36273. extend(this, ourProj); // transfer all the methods from the projection
  36274. // copy the 4 things over we calulated in deriveConstants.sphere
  36275. this.a = sphere_.a;
  36276. this.b = sphere_.b;
  36277. this.rf = sphere_.rf;
  36278. this.sphere = sphere_.sphere;
  36279. // copy the 3 things we calculated in deriveConstants.eccentricity
  36280. this.es = ecc.es;
  36281. this.e = ecc.e;
  36282. this.ep2 = ecc.ep2;
  36283. // add in the datum object
  36284. this.datum = datumObj;
  36285. // init the projection
  36286. this.init();
  36287. // legecy callback from back in the day when it went to spatialreference.org
  36288. callback(null, this);
  36289. }
  36290. Projection.projections = projections;
  36291. Projection.projections.start();
  36292. /* harmony default export */ var Proj = (Projection);
  36293. // CONCATENATED MODULE: ./node_modules/proj4/lib/datumUtils.js
  36294. function compareDatums(source, dest) {
  36295. if (source.datum_type !== dest.datum_type) {
  36296. return false; // false, datums are not equal
  36297. } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) {
  36298. // the tolerance for es is to ensure that GRS80 and WGS84
  36299. // are considered identical
  36300. return false;
  36301. } else if (source.datum_type === PJD_3PARAM) {
  36302. return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]);
  36303. } else if (source.datum_type === PJD_7PARAM) {
  36304. return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]);
  36305. } else {
  36306. return true; // datums are equal
  36307. }
  36308. } // cs_compare_datums()
  36309. /*
  36310. * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates
  36311. * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),
  36312. * according to the current ellipsoid parameters.
  36313. *
  36314. * Latitude : Geodetic latitude in radians (input)
  36315. * Longitude : Geodetic longitude in radians (input)
  36316. * Height : Geodetic height, in meters (input)
  36317. * X : Calculated Geocentric X coordinate, in meters (output)
  36318. * Y : Calculated Geocentric Y coordinate, in meters (output)
  36319. * Z : Calculated Geocentric Z coordinate, in meters (output)
  36320. *
  36321. */
  36322. function geodeticToGeocentric(p, es, a) {
  36323. var Longitude = p.x;
  36324. var Latitude = p.y;
  36325. var Height = p.z ? p.z : 0; //Z value not always supplied
  36326. var Rn; /* Earth radius at location */
  36327. var Sin_Lat; /* Math.sin(Latitude) */
  36328. var Sin2_Lat; /* Square of Math.sin(Latitude) */
  36329. var Cos_Lat; /* Math.cos(Latitude) */
  36330. /*
  36331. ** Don't blow up if Latitude is just a little out of the value
  36332. ** range as it may just be a rounding issue. Also removed longitude
  36333. ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001.
  36334. */
  36335. if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {
  36336. Latitude = -HALF_PI;
  36337. } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {
  36338. Latitude = HALF_PI;
  36339. } else if (Latitude < -HALF_PI) {
  36340. /* Latitude out of range */
  36341. //..reportError('geocent:lat out of range:' + Latitude);
  36342. return { x: -Infinity, y: -Infinity, z: p.z };
  36343. } else if (Latitude > HALF_PI) {
  36344. /* Latitude out of range */
  36345. return { x: Infinity, y: Infinity, z: p.z };
  36346. }
  36347. if (Longitude > Math.PI) {
  36348. Longitude -= (2 * Math.PI);
  36349. }
  36350. Sin_Lat = Math.sin(Latitude);
  36351. Cos_Lat = Math.cos(Latitude);
  36352. Sin2_Lat = Sin_Lat * Sin_Lat;
  36353. Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat));
  36354. return {
  36355. x: (Rn + Height) * Cos_Lat * Math.cos(Longitude),
  36356. y: (Rn + Height) * Cos_Lat * Math.sin(Longitude),
  36357. z: ((Rn * (1 - es)) + Height) * Sin_Lat
  36358. };
  36359. } // cs_geodetic_to_geocentric()
  36360. function geocentricToGeodetic(p, es, a, b) {
  36361. /* local defintions and variables */
  36362. /* end-criterium of loop, accuracy of sin(Latitude) */
  36363. var genau = 1e-12;
  36364. var genau2 = (genau * genau);
  36365. var maxiter = 30;
  36366. var P; /* distance between semi-minor axis and location */
  36367. var RR; /* distance between center and location */
  36368. var CT; /* sin of geocentric latitude */
  36369. var ST; /* cos of geocentric latitude */
  36370. var RX;
  36371. var RK;
  36372. var RN; /* Earth radius at location */
  36373. var CPHI0; /* cos of start or old geodetic latitude in iterations */
  36374. var SPHI0; /* sin of start or old geodetic latitude in iterations */
  36375. var CPHI; /* cos of searched geodetic latitude */
  36376. var SPHI; /* sin of searched geodetic latitude */
  36377. var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */
  36378. var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */
  36379. var X = p.x;
  36380. var Y = p.y;
  36381. var Z = p.z ? p.z : 0.0; //Z value not always supplied
  36382. var Longitude;
  36383. var Latitude;
  36384. var Height;
  36385. P = Math.sqrt(X * X + Y * Y);
  36386. RR = Math.sqrt(X * X + Y * Y + Z * Z);
  36387. /* special cases for latitude and longitude */
  36388. if (P / a < genau) {
  36389. /* special case, if P=0. (X=0., Y=0.) */
  36390. Longitude = 0.0;
  36391. /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis
  36392. * of ellipsoid (=center of mass), Latitude becomes PI/2 */
  36393. if (RR / a < genau) {
  36394. Latitude = HALF_PI;
  36395. Height = -b;
  36396. return {
  36397. x: p.x,
  36398. y: p.y,
  36399. z: p.z
  36400. };
  36401. }
  36402. } else {
  36403. /* ellipsoidal (geodetic) longitude
  36404. * interval: -PI < Longitude <= +PI */
  36405. Longitude = Math.atan2(Y, X);
  36406. }
  36407. /* --------------------------------------------------------------
  36408. * Following iterative algorithm was developped by
  36409. * "Institut for Erdmessung", University of Hannover, July 1988.
  36410. * Internet: www.ife.uni-hannover.de
  36411. * Iterative computation of CPHI,SPHI and Height.
  36412. * Iteration of CPHI and SPHI to 10**-12 radian resp.
  36413. * 2*10**-7 arcsec.
  36414. * --------------------------------------------------------------
  36415. */
  36416. CT = Z / RR;
  36417. ST = P / RR;
  36418. RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST);
  36419. CPHI0 = ST * (1.0 - es) * RX;
  36420. SPHI0 = CT * RX;
  36421. iter = 0;
  36422. /* loop to find sin(Latitude) resp. Latitude
  36423. * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */
  36424. do {
  36425. iter++;
  36426. RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0);
  36427. /* ellipsoidal (geodetic) height */
  36428. Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0);
  36429. RK = es * RN / (RN + Height);
  36430. RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);
  36431. CPHI = ST * (1.0 - RK) * RX;
  36432. SPHI = CT * RX;
  36433. SDPHI = SPHI * CPHI0 - CPHI * SPHI0;
  36434. CPHI0 = CPHI;
  36435. SPHI0 = SPHI;
  36436. }
  36437. while (SDPHI * SDPHI > genau2 && iter < maxiter);
  36438. /* ellipsoidal (geodetic) latitude */
  36439. Latitude = Math.atan(SPHI / Math.abs(CPHI));
  36440. return {
  36441. x: Longitude,
  36442. y: Latitude,
  36443. z: Height
  36444. };
  36445. } // cs_geocentric_to_geodetic()
  36446. /****************************************************************/
  36447. // pj_geocentic_to_wgs84( p )
  36448. // p = point to transform in geocentric coordinates (x,y,z)
  36449. /** point object, nothing fancy, just allows values to be
  36450. passed back and forth by reference rather than by value.
  36451. Other point classes may be used as long as they have
  36452. x and y properties, which will get modified in the transform method.
  36453. */
  36454. function geocentricToWgs84(p, datum_type, datum_params) {
  36455. if (datum_type === PJD_3PARAM) {
  36456. // if( x[io] === HUGE_VAL )
  36457. // continue;
  36458. return {
  36459. x: p.x + datum_params[0],
  36460. y: p.y + datum_params[1],
  36461. z: p.z + datum_params[2],
  36462. };
  36463. } else if (datum_type === PJD_7PARAM) {
  36464. var Dx_BF = datum_params[0];
  36465. var Dy_BF = datum_params[1];
  36466. var Dz_BF = datum_params[2];
  36467. var Rx_BF = datum_params[3];
  36468. var Ry_BF = datum_params[4];
  36469. var Rz_BF = datum_params[5];
  36470. var M_BF = datum_params[6];
  36471. // if( x[io] === HUGE_VAL )
  36472. // continue;
  36473. return {
  36474. x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF,
  36475. y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF,
  36476. z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF
  36477. };
  36478. }
  36479. } // cs_geocentric_to_wgs84
  36480. /****************************************************************/
  36481. // pj_geocentic_from_wgs84()
  36482. // coordinate system definition,
  36483. // point to transform in geocentric coordinates (x,y,z)
  36484. function geocentricFromWgs84(p, datum_type, datum_params) {
  36485. if (datum_type === PJD_3PARAM) {
  36486. //if( x[io] === HUGE_VAL )
  36487. // continue;
  36488. return {
  36489. x: p.x - datum_params[0],
  36490. y: p.y - datum_params[1],
  36491. z: p.z - datum_params[2],
  36492. };
  36493. } else if (datum_type === PJD_7PARAM) {
  36494. var Dx_BF = datum_params[0];
  36495. var Dy_BF = datum_params[1];
  36496. var Dz_BF = datum_params[2];
  36497. var Rx_BF = datum_params[3];
  36498. var Ry_BF = datum_params[4];
  36499. var Rz_BF = datum_params[5];
  36500. var M_BF = datum_params[6];
  36501. var x_tmp = (p.x - Dx_BF) / M_BF;
  36502. var y_tmp = (p.y - Dy_BF) / M_BF;
  36503. var z_tmp = (p.z - Dz_BF) / M_BF;
  36504. //if( x[io] === HUGE_VAL )
  36505. // continue;
  36506. return {
  36507. x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp,
  36508. y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp,
  36509. z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp
  36510. };
  36511. } //cs_geocentric_from_wgs84()
  36512. }
  36513. // CONCATENATED MODULE: ./node_modules/proj4/lib/datum_transform.js
  36514. function checkParams(type) {
  36515. return (type === PJD_3PARAM || type === PJD_7PARAM);
  36516. }
  36517. /* harmony default export */ var datum_transform = (function(source, dest, point) {
  36518. // Short cut if the datums are identical.
  36519. if (compareDatums(source, dest)) {
  36520. return point; // in this case, zero is sucess,
  36521. // whereas cs_compare_datums returns 1 to indicate TRUE
  36522. // confusing, should fix this
  36523. }
  36524. // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest
  36525. if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {
  36526. return point;
  36527. }
  36528. // If this datum requires grid shifts, then apply it to geodetic coordinates.
  36529. // Do we need to go through geocentric coordinates?
  36530. if (source.es === dest.es && source.a === dest.a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) {
  36531. return point;
  36532. }
  36533. // Convert to geocentric coordinates.
  36534. point = geodeticToGeocentric(point, source.es, source.a);
  36535. // Convert between datums
  36536. if (checkParams(source.datum_type)) {
  36537. point = geocentricToWgs84(point, source.datum_type, source.datum_params);
  36538. }
  36539. if (checkParams(dest.datum_type)) {
  36540. point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params);
  36541. }
  36542. return geocentricToGeodetic(point, dest.es, dest.a, dest.b);
  36543. });
  36544. // CONCATENATED MODULE: ./node_modules/proj4/lib/adjust_axis.js
  36545. /* harmony default export */ var adjust_axis = (function(crs, denorm, point) {
  36546. var xin = point.x,
  36547. yin = point.y,
  36548. zin = point.z || 0.0;
  36549. var v, t, i;
  36550. var out = {};
  36551. for (i = 0; i < 3; i++) {
  36552. if (denorm && i === 2 && point.z === undefined) {
  36553. continue;
  36554. }
  36555. if (i === 0) {
  36556. v = xin;
  36557. t = 'x';
  36558. }
  36559. else if (i === 1) {
  36560. v = yin;
  36561. t = 'y';
  36562. }
  36563. else {
  36564. v = zin;
  36565. t = 'z';
  36566. }
  36567. switch (crs.axis[i]) {
  36568. case 'e':
  36569. out[t] = v;
  36570. break;
  36571. case 'w':
  36572. out[t] = -v;
  36573. break;
  36574. case 'n':
  36575. out[t] = v;
  36576. break;
  36577. case 's':
  36578. out[t] = -v;
  36579. break;
  36580. case 'u':
  36581. if (point[t] !== undefined) {
  36582. out.z = v;
  36583. }
  36584. break;
  36585. case 'd':
  36586. if (point[t] !== undefined) {
  36587. out.z = -v;
  36588. }
  36589. break;
  36590. default:
  36591. //console.log("ERROR: unknow axis ("+crs.axis[i]+") - check definition of "+crs.projName);
  36592. return null;
  36593. }
  36594. }
  36595. return out;
  36596. });
  36597. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/toPoint.js
  36598. /* harmony default export */ var toPoint = (function (array){
  36599. var out = {
  36600. x: array[0],
  36601. y: array[1]
  36602. };
  36603. if (array.length>2) {
  36604. out.z = array[2];
  36605. }
  36606. if (array.length>3) {
  36607. out.m = array[3];
  36608. }
  36609. return out;
  36610. });
  36611. // CONCATENATED MODULE: ./node_modules/proj4/lib/checkSanity.js
  36612. /* harmony default export */ var checkSanity = (function (point) {
  36613. checkCoord(point.x);
  36614. checkCoord(point.y);
  36615. });
  36616. function checkCoord(num) {
  36617. if (typeof Number.isFinite === 'function') {
  36618. if (Number.isFinite(num)) {
  36619. return;
  36620. }
  36621. throw new TypeError('coordinates must be finite numbers');
  36622. }
  36623. if (typeof num !== 'number' || num !== num || !isFinite(num)) {
  36624. throw new TypeError('coordinates must be finite numbers');
  36625. }
  36626. }
  36627. // CONCATENATED MODULE: ./node_modules/proj4/lib/transform.js
  36628. function checkNotWGS(source, dest) {
  36629. return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84');
  36630. }
  36631. function transform(source, dest, point) {
  36632. var wgs84;
  36633. if (Array.isArray(point)) {
  36634. point = toPoint(point);
  36635. }
  36636. checkSanity(point);
  36637. // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84
  36638. if (source.datum && dest.datum && checkNotWGS(source, dest)) {
  36639. wgs84 = new Proj('WGS84');
  36640. point = transform(source, wgs84, point);
  36641. source = wgs84;
  36642. }
  36643. // DGR, 2010/11/12
  36644. if (source.axis !== 'enu') {
  36645. point = adjust_axis(source, false, point);
  36646. }
  36647. // Transform source points to long/lat, if they aren't already.
  36648. if (source.projName === 'longlat') {
  36649. point = {
  36650. x: point.x * D2R,
  36651. y: point.y * D2R,
  36652. z: point.z || 0
  36653. };
  36654. } else {
  36655. if (source.to_meter) {
  36656. point = {
  36657. x: point.x * source.to_meter,
  36658. y: point.y * source.to_meter,
  36659. z: point.z || 0
  36660. };
  36661. }
  36662. point = source.inverse(point); // Convert Cartesian to longlat
  36663. }
  36664. // Adjust for the prime meridian if necessary
  36665. if (source.from_greenwich) {
  36666. point.x += source.from_greenwich;
  36667. }
  36668. // Convert datums if needed, and if possible.
  36669. point = datum_transform(source.datum, dest.datum, point);
  36670. // Adjust for the prime meridian if necessary
  36671. if (dest.from_greenwich) {
  36672. point = {
  36673. x: point.x - dest.from_greenwich,
  36674. y: point.y,
  36675. z: point.z || 0
  36676. };
  36677. }
  36678. if (dest.projName === 'longlat') {
  36679. // convert radians to decimal degrees
  36680. point = {
  36681. x: point.x * R2D,
  36682. y: point.y * R2D,
  36683. z: point.z || 0
  36684. };
  36685. } else { // else project
  36686. point = dest.forward(point);
  36687. if (dest.to_meter) {
  36688. point = {
  36689. x: point.x / dest.to_meter,
  36690. y: point.y / dest.to_meter,
  36691. z: point.z || 0
  36692. };
  36693. }
  36694. }
  36695. // DGR, 2010/11/12
  36696. if (dest.axis !== 'enu') {
  36697. return adjust_axis(dest, true, point);
  36698. }
  36699. return point;
  36700. }
  36701. // CONCATENATED MODULE: ./node_modules/proj4/lib/core.js
  36702. var core_wgs84 = Proj('WGS84');
  36703. function transformer(from, to, coords) {
  36704. var transformedArray, out, keys;
  36705. if (Array.isArray(coords)) {
  36706. transformedArray = transform(from, to, coords) || {x: NaN, y: NaN};
  36707. if (coords.length > 2) {
  36708. if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {
  36709. if (typeof transformedArray.z === 'number') {
  36710. return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.splice(3));
  36711. } else {
  36712. return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.splice(3));
  36713. }
  36714. } else {
  36715. return [transformedArray.x, transformedArray.y].concat(coords.splice(2));
  36716. }
  36717. } else {
  36718. return [transformedArray.x, transformedArray.y];
  36719. }
  36720. } else {
  36721. out = transform(from, to, coords);
  36722. keys = Object.keys(coords);
  36723. if (keys.length === 2) {
  36724. return out;
  36725. }
  36726. keys.forEach(function (key) {
  36727. if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {
  36728. if (key === 'x' || key === 'y' || key === 'z') {
  36729. return;
  36730. }
  36731. } else {
  36732. if (key === 'x' || key === 'y') {
  36733. return;
  36734. }
  36735. }
  36736. out[key] = coords[key];
  36737. });
  36738. return out;
  36739. }
  36740. }
  36741. function checkProj(item) {
  36742. if (item instanceof Proj) {
  36743. return item;
  36744. }
  36745. if (item.oProj) {
  36746. return item.oProj;
  36747. }
  36748. return Proj(item);
  36749. }
  36750. function core_proj4(fromProj, toProj, coord) {
  36751. fromProj = checkProj(fromProj);
  36752. var single = false;
  36753. var obj;
  36754. if (typeof toProj === 'undefined') {
  36755. toProj = fromProj;
  36756. fromProj = core_wgs84;
  36757. single = true;
  36758. } else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {
  36759. coord = toProj;
  36760. toProj = fromProj;
  36761. fromProj = core_wgs84;
  36762. single = true;
  36763. }
  36764. toProj = checkProj(toProj);
  36765. if (coord) {
  36766. return transformer(fromProj, toProj, coord);
  36767. } else {
  36768. obj = {
  36769. forward: function (coords) {
  36770. return transformer(fromProj, toProj, coords);
  36771. },
  36772. inverse: function (coords) {
  36773. return transformer(toProj, fromProj, coords);
  36774. }
  36775. };
  36776. if (single) {
  36777. obj.oProj = toProj;
  36778. }
  36779. return obj;
  36780. }
  36781. }
  36782. /* harmony default export */ var core = (core_proj4);
  36783. // CONCATENATED MODULE: ./node_modules/mgrs/mgrs.js
  36784. /**
  36785. * UTM zones are grouped, and assigned to one of a group of 6
  36786. * sets.
  36787. *
  36788. * {int} @private
  36789. */
  36790. var NUM_100K_SETS = 6;
  36791. /**
  36792. * The column letters (for easting) of the lower left value, per
  36793. * set.
  36794. *
  36795. * {string} @private
  36796. */
  36797. var SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';
  36798. /**
  36799. * The row letters (for northing) of the lower left value, per
  36800. * set.
  36801. *
  36802. * {string} @private
  36803. */
  36804. var SET_ORIGIN_ROW_LETTERS = 'AFAFAF';
  36805. var mgrs_A = 65; // A
  36806. var I = 73; // I
  36807. var O = 79; // O
  36808. var mgrs_V = 86; // V
  36809. var mgrs_Z = 90; // Z
  36810. /* harmony default export */ var mgrs = ({
  36811. forward: mgrs_forward,
  36812. inverse: mgrs_inverse,
  36813. toPoint: mgrs_toPoint
  36814. });
  36815. /**
  36816. * Conversion of lat/lon to MGRS.
  36817. *
  36818. * @param {object} ll Object literal with lat and lon properties on a
  36819. * WGS84 ellipsoid.
  36820. * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for
  36821. * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.
  36822. * @return {string} the MGRS string for the given location and accuracy.
  36823. */
  36824. function mgrs_forward(ll, accuracy) {
  36825. accuracy = accuracy || 5; // default accuracy 1m
  36826. return encode(LLtoUTM({
  36827. lat: ll[1],
  36828. lon: ll[0]
  36829. }), accuracy);
  36830. };
  36831. /**
  36832. * Conversion of MGRS to lat/lon.
  36833. *
  36834. * @param {string} mgrs MGRS string.
  36835. * @return {array} An array with left (longitude), bottom (latitude), right
  36836. * (longitude) and top (latitude) values in WGS84, representing the
  36837. * bounding box for the provided MGRS reference.
  36838. */
  36839. function mgrs_inverse(mgrs) {
  36840. var bbox = UTMtoLL(decode(mgrs.toUpperCase()));
  36841. if (bbox.lat && bbox.lon) {
  36842. return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];
  36843. }
  36844. return [bbox.left, bbox.bottom, bbox.right, bbox.top];
  36845. };
  36846. function mgrs_toPoint(mgrs) {
  36847. var bbox = UTMtoLL(decode(mgrs.toUpperCase()));
  36848. if (bbox.lat && bbox.lon) {
  36849. return [bbox.lon, bbox.lat];
  36850. }
  36851. return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];
  36852. };
  36853. /**
  36854. * Conversion from degrees to radians.
  36855. *
  36856. * @private
  36857. * @param {number} deg the angle in degrees.
  36858. * @return {number} the angle in radians.
  36859. */
  36860. function degToRad(deg) {
  36861. return (deg * (Math.PI / 180.0));
  36862. }
  36863. /**
  36864. * Conversion from radians to degrees.
  36865. *
  36866. * @private
  36867. * @param {number} rad the angle in radians.
  36868. * @return {number} the angle in degrees.
  36869. */
  36870. function radToDeg(rad) {
  36871. return (180.0 * (rad / Math.PI));
  36872. }
  36873. /**
  36874. * Converts a set of Longitude and Latitude co-ordinates to UTM
  36875. * using the WGS84 ellipsoid.
  36876. *
  36877. * @private
  36878. * @param {object} ll Object literal with lat and lon properties
  36879. * representing the WGS84 coordinate to be converted.
  36880. * @return {object} Object literal containing the UTM value with easting,
  36881. * northing, zoneNumber and zoneLetter properties, and an optional
  36882. * accuracy property in digits. Returns null if the conversion failed.
  36883. */
  36884. function LLtoUTM(ll) {
  36885. var Lat = ll.lat;
  36886. var Long = ll.lon;
  36887. var a = 6378137.0; //ellip.radius;
  36888. var eccSquared = 0.00669438; //ellip.eccsq;
  36889. var k0 = 0.9996;
  36890. var LongOrigin;
  36891. var eccPrimeSquared;
  36892. var N, T, C, A, M;
  36893. var LatRad = degToRad(Lat);
  36894. var LongRad = degToRad(Long);
  36895. var LongOriginRad;
  36896. var ZoneNumber;
  36897. // (int)
  36898. ZoneNumber = Math.floor((Long + 180) / 6) + 1;
  36899. //Make sure the longitude 180.00 is in Zone 60
  36900. if (Long === 180) {
  36901. ZoneNumber = 60;
  36902. }
  36903. // Special zone for Norway
  36904. if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {
  36905. ZoneNumber = 32;
  36906. }
  36907. // Special zones for Svalbard
  36908. if (Lat >= 72.0 && Lat < 84.0) {
  36909. if (Long >= 0.0 && Long < 9.0) {
  36910. ZoneNumber = 31;
  36911. }
  36912. else if (Long >= 9.0 && Long < 21.0) {
  36913. ZoneNumber = 33;
  36914. }
  36915. else if (Long >= 21.0 && Long < 33.0) {
  36916. ZoneNumber = 35;
  36917. }
  36918. else if (Long >= 33.0 && Long < 42.0) {
  36919. ZoneNumber = 37;
  36920. }
  36921. }
  36922. LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin
  36923. // in middle of
  36924. // zone
  36925. LongOriginRad = degToRad(LongOrigin);
  36926. eccPrimeSquared = (eccSquared) / (1 - eccSquared);
  36927. N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));
  36928. T = Math.tan(LatRad) * Math.tan(LatRad);
  36929. C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);
  36930. A = Math.cos(LatRad) * (LongRad - LongOriginRad);
  36931. M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));
  36932. var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);
  36933. var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));
  36934. if (Lat < 0.0) {
  36935. UTMNorthing += 10000000.0; //10000000 meter offset for
  36936. // southern hemisphere
  36937. }
  36938. return {
  36939. northing: Math.round(UTMNorthing),
  36940. easting: Math.round(UTMEasting),
  36941. zoneNumber: ZoneNumber,
  36942. zoneLetter: getLetterDesignator(Lat)
  36943. };
  36944. }
  36945. /**
  36946. * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience
  36947. * class where the Zone can be specified as a single string eg."60N" which
  36948. * is then broken down into the ZoneNumber and ZoneLetter.
  36949. *
  36950. * @private
  36951. * @param {object} utm An object literal with northing, easting, zoneNumber
  36952. * and zoneLetter properties. If an optional accuracy property is
  36953. * provided (in meters), a bounding box will be returned instead of
  36954. * latitude and longitude.
  36955. * @return {object} An object literal containing either lat and lon values
  36956. * (if no accuracy was provided), or top, right, bottom and left values
  36957. * for the bounding box calculated according to the provided accuracy.
  36958. * Returns null if the conversion failed.
  36959. */
  36960. function UTMtoLL(utm) {
  36961. var UTMNorthing = utm.northing;
  36962. var UTMEasting = utm.easting;
  36963. var zoneLetter = utm.zoneLetter;
  36964. var zoneNumber = utm.zoneNumber;
  36965. // check the ZoneNummber is valid
  36966. if (zoneNumber < 0 || zoneNumber > 60) {
  36967. return null;
  36968. }
  36969. var k0 = 0.9996;
  36970. var a = 6378137.0; //ellip.radius;
  36971. var eccSquared = 0.00669438; //ellip.eccsq;
  36972. var eccPrimeSquared;
  36973. var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));
  36974. var N1, T1, C1, R1, D, M;
  36975. var LongOrigin;
  36976. var mu, phi1Rad;
  36977. // remove 500,000 meter offset for longitude
  36978. var x = UTMEasting - 500000.0;
  36979. var y = UTMNorthing;
  36980. // We must know somehow if we are in the Northern or Southern
  36981. // hemisphere, this is the only time we use the letter So even
  36982. // if the Zone letter isn't exactly correct it should indicate
  36983. // the hemisphere correctly
  36984. if (zoneLetter < 'N') {
  36985. y -= 10000000.0; // remove 10,000,000 meter offset used
  36986. // for southern hemisphere
  36987. }
  36988. // There are 60 zones with zone 1 being at West -180 to -174
  36989. LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin
  36990. // in middle of
  36991. // zone
  36992. eccPrimeSquared = (eccSquared) / (1 - eccSquared);
  36993. M = y / k0;
  36994. mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));
  36995. phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);
  36996. // double phi1 = ProjMath.radToDeg(phi1Rad);
  36997. N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));
  36998. T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);
  36999. C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);
  37000. R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);
  37001. D = x / (N1 * k0);
  37002. var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);
  37003. lat = radToDeg(lat);
  37004. var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);
  37005. lon = LongOrigin + radToDeg(lon);
  37006. var result;
  37007. if (utm.accuracy) {
  37008. var topRight = UTMtoLL({
  37009. northing: utm.northing + utm.accuracy,
  37010. easting: utm.easting + utm.accuracy,
  37011. zoneLetter: utm.zoneLetter,
  37012. zoneNumber: utm.zoneNumber
  37013. });
  37014. result = {
  37015. top: topRight.lat,
  37016. right: topRight.lon,
  37017. bottom: lat,
  37018. left: lon
  37019. };
  37020. }
  37021. else {
  37022. result = {
  37023. lat: lat,
  37024. lon: lon
  37025. };
  37026. }
  37027. return result;
  37028. }
  37029. /**
  37030. * Calculates the MGRS letter designator for the given latitude.
  37031. *
  37032. * @private
  37033. * @param {number} lat The latitude in WGS84 to get the letter designator
  37034. * for.
  37035. * @return {char} The letter designator.
  37036. */
  37037. function getLetterDesignator(lat) {
  37038. //This is here as an error flag to show that the Latitude is
  37039. //outside MGRS limits
  37040. var LetterDesignator = 'Z';
  37041. if ((84 >= lat) && (lat >= 72)) {
  37042. LetterDesignator = 'X';
  37043. }
  37044. else if ((72 > lat) && (lat >= 64)) {
  37045. LetterDesignator = 'W';
  37046. }
  37047. else if ((64 > lat) && (lat >= 56)) {
  37048. LetterDesignator = 'V';
  37049. }
  37050. else if ((56 > lat) && (lat >= 48)) {
  37051. LetterDesignator = 'U';
  37052. }
  37053. else if ((48 > lat) && (lat >= 40)) {
  37054. LetterDesignator = 'T';
  37055. }
  37056. else if ((40 > lat) && (lat >= 32)) {
  37057. LetterDesignator = 'S';
  37058. }
  37059. else if ((32 > lat) && (lat >= 24)) {
  37060. LetterDesignator = 'R';
  37061. }
  37062. else if ((24 > lat) && (lat >= 16)) {
  37063. LetterDesignator = 'Q';
  37064. }
  37065. else if ((16 > lat) && (lat >= 8)) {
  37066. LetterDesignator = 'P';
  37067. }
  37068. else if ((8 > lat) && (lat >= 0)) {
  37069. LetterDesignator = 'N';
  37070. }
  37071. else if ((0 > lat) && (lat >= -8)) {
  37072. LetterDesignator = 'M';
  37073. }
  37074. else if ((-8 > lat) && (lat >= -16)) {
  37075. LetterDesignator = 'L';
  37076. }
  37077. else if ((-16 > lat) && (lat >= -24)) {
  37078. LetterDesignator = 'K';
  37079. }
  37080. else if ((-24 > lat) && (lat >= -32)) {
  37081. LetterDesignator = 'J';
  37082. }
  37083. else if ((-32 > lat) && (lat >= -40)) {
  37084. LetterDesignator = 'H';
  37085. }
  37086. else if ((-40 > lat) && (lat >= -48)) {
  37087. LetterDesignator = 'G';
  37088. }
  37089. else if ((-48 > lat) && (lat >= -56)) {
  37090. LetterDesignator = 'F';
  37091. }
  37092. else if ((-56 > lat) && (lat >= -64)) {
  37093. LetterDesignator = 'E';
  37094. }
  37095. else if ((-64 > lat) && (lat >= -72)) {
  37096. LetterDesignator = 'D';
  37097. }
  37098. else if ((-72 > lat) && (lat >= -80)) {
  37099. LetterDesignator = 'C';
  37100. }
  37101. return LetterDesignator;
  37102. }
  37103. /**
  37104. * Encodes a UTM location as MGRS string.
  37105. *
  37106. * @private
  37107. * @param {object} utm An object literal with easting, northing,
  37108. * zoneLetter, zoneNumber
  37109. * @param {number} accuracy Accuracy in digits (1-5).
  37110. * @return {string} MGRS string for the given UTM location.
  37111. */
  37112. function encode(utm, accuracy) {
  37113. // prepend with leading zeroes
  37114. var seasting = "00000" + utm.easting,
  37115. snorthing = "00000" + utm.northing;
  37116. return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);
  37117. }
  37118. /**
  37119. * Get the two letter 100k designator for a given UTM easting,
  37120. * northing and zone number value.
  37121. *
  37122. * @private
  37123. * @param {number} easting
  37124. * @param {number} northing
  37125. * @param {number} zoneNumber
  37126. * @return the two letter 100k designator for the given UTM location.
  37127. */
  37128. function get100kID(easting, northing, zoneNumber) {
  37129. var setParm = get100kSetForZone(zoneNumber);
  37130. var setColumn = Math.floor(easting / 100000);
  37131. var setRow = Math.floor(northing / 100000) % 20;
  37132. return getLetter100kID(setColumn, setRow, setParm);
  37133. }
  37134. /**
  37135. * Given a UTM zone number, figure out the MGRS 100K set it is in.
  37136. *
  37137. * @private
  37138. * @param {number} i An UTM zone number.
  37139. * @return {number} the 100k set the UTM zone is in.
  37140. */
  37141. function get100kSetForZone(i) {
  37142. var setParm = i % NUM_100K_SETS;
  37143. if (setParm === 0) {
  37144. setParm = NUM_100K_SETS;
  37145. }
  37146. return setParm;
  37147. }
  37148. /**
  37149. * Get the two-letter MGRS 100k designator given information
  37150. * translated from the UTM northing, easting and zone number.
  37151. *
  37152. * @private
  37153. * @param {number} column the column index as it relates to the MGRS
  37154. * 100k set spreadsheet, created from the UTM easting.
  37155. * Values are 1-8.
  37156. * @param {number} row the row index as it relates to the MGRS 100k set
  37157. * spreadsheet, created from the UTM northing value. Values
  37158. * are from 0-19.
  37159. * @param {number} parm the set block, as it relates to the MGRS 100k set
  37160. * spreadsheet, created from the UTM zone. Values are from
  37161. * 1-60.
  37162. * @return two letter MGRS 100k code.
  37163. */
  37164. function getLetter100kID(column, row, parm) {
  37165. // colOrigin and rowOrigin are the letters at the origin of the set
  37166. var index = parm - 1;
  37167. var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);
  37168. var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);
  37169. // colInt and rowInt are the letters to build to return
  37170. var colInt = colOrigin + column - 1;
  37171. var rowInt = rowOrigin + row;
  37172. var rollover = false;
  37173. if (colInt > mgrs_Z) {
  37174. colInt = colInt - mgrs_Z + mgrs_A - 1;
  37175. rollover = true;
  37176. }
  37177. if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {
  37178. colInt++;
  37179. }
  37180. if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {
  37181. colInt++;
  37182. if (colInt === I) {
  37183. colInt++;
  37184. }
  37185. }
  37186. if (colInt > mgrs_Z) {
  37187. colInt = colInt - mgrs_Z + mgrs_A - 1;
  37188. }
  37189. if (rowInt > mgrs_V) {
  37190. rowInt = rowInt - mgrs_V + mgrs_A - 1;
  37191. rollover = true;
  37192. }
  37193. else {
  37194. rollover = false;
  37195. }
  37196. if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {
  37197. rowInt++;
  37198. }
  37199. if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {
  37200. rowInt++;
  37201. if (rowInt === I) {
  37202. rowInt++;
  37203. }
  37204. }
  37205. if (rowInt > mgrs_V) {
  37206. rowInt = rowInt - mgrs_V + mgrs_A - 1;
  37207. }
  37208. var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);
  37209. return twoLetter;
  37210. }
  37211. /**
  37212. * Decode the UTM parameters from a MGRS string.
  37213. *
  37214. * @private
  37215. * @param {string} mgrsString an UPPERCASE coordinate string is expected.
  37216. * @return {object} An object literal with easting, northing, zoneLetter,
  37217. * zoneNumber and accuracy (in meters) properties.
  37218. */
  37219. function decode(mgrsString) {
  37220. if (mgrsString && mgrsString.length === 0) {
  37221. throw ("MGRSPoint coverting from nothing");
  37222. }
  37223. var length = mgrsString.length;
  37224. var hunK = null;
  37225. var sb = "";
  37226. var testChar;
  37227. var i = 0;
  37228. // get Zone number
  37229. while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {
  37230. if (i >= 2) {
  37231. throw ("MGRSPoint bad conversion from: " + mgrsString);
  37232. }
  37233. sb += testChar;
  37234. i++;
  37235. }
  37236. var zoneNumber = parseInt(sb, 10);
  37237. if (i === 0 || i + 3 > length) {
  37238. // A good MGRS string has to be 4-5 digits long,
  37239. // ##AAA/#AAA at least.
  37240. throw ("MGRSPoint bad conversion from: " + mgrsString);
  37241. }
  37242. var zoneLetter = mgrsString.charAt(i++);
  37243. // Should we check the zone letter here? Why not.
  37244. if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {
  37245. throw ("MGRSPoint zone letter " + zoneLetter + " not handled: " + mgrsString);
  37246. }
  37247. hunK = mgrsString.substring(i, i += 2);
  37248. var set = get100kSetForZone(zoneNumber);
  37249. var east100k = getEastingFromChar(hunK.charAt(0), set);
  37250. var north100k = getNorthingFromChar(hunK.charAt(1), set);
  37251. // We have a bug where the northing may be 2000000 too low.
  37252. // How
  37253. // do we know when to roll over?
  37254. while (north100k < getMinNorthing(zoneLetter)) {
  37255. north100k += 2000000;
  37256. }
  37257. // calculate the char index for easting/northing separator
  37258. var remainder = length - i;
  37259. if (remainder % 2 !== 0) {
  37260. throw ("MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters" + mgrsString);
  37261. }
  37262. var sep = remainder / 2;
  37263. var sepEasting = 0.0;
  37264. var sepNorthing = 0.0;
  37265. var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;
  37266. if (sep > 0) {
  37267. accuracyBonus = 100000.0 / Math.pow(10, sep);
  37268. sepEastingString = mgrsString.substring(i, i + sep);
  37269. sepEasting = parseFloat(sepEastingString) * accuracyBonus;
  37270. sepNorthingString = mgrsString.substring(i + sep);
  37271. sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;
  37272. }
  37273. easting = sepEasting + east100k;
  37274. northing = sepNorthing + north100k;
  37275. return {
  37276. easting: easting,
  37277. northing: northing,
  37278. zoneLetter: zoneLetter,
  37279. zoneNumber: zoneNumber,
  37280. accuracy: accuracyBonus
  37281. };
  37282. }
  37283. /**
  37284. * Given the first letter from a two-letter MGRS 100k zone, and given the
  37285. * MGRS table set for the zone number, figure out the easting value that
  37286. * should be added to the other, secondary easting value.
  37287. *
  37288. * @private
  37289. * @param {char} e The first letter from a two-letter MGRS 100´k zone.
  37290. * @param {number} set The MGRS table set for the zone number.
  37291. * @return {number} The easting value for the given letter and set.
  37292. */
  37293. function getEastingFromChar(e, set) {
  37294. // colOrigin is the letter at the origin of the set for the
  37295. // column
  37296. var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);
  37297. var eastingValue = 100000.0;
  37298. var rewindMarker = false;
  37299. while (curCol !== e.charCodeAt(0)) {
  37300. curCol++;
  37301. if (curCol === I) {
  37302. curCol++;
  37303. }
  37304. if (curCol === O) {
  37305. curCol++;
  37306. }
  37307. if (curCol > mgrs_Z) {
  37308. if (rewindMarker) {
  37309. throw ("Bad character: " + e);
  37310. }
  37311. curCol = mgrs_A;
  37312. rewindMarker = true;
  37313. }
  37314. eastingValue += 100000.0;
  37315. }
  37316. return eastingValue;
  37317. }
  37318. /**
  37319. * Given the second letter from a two-letter MGRS 100k zone, and given the
  37320. * MGRS table set for the zone number, figure out the northing value that
  37321. * should be added to the other, secondary northing value. You have to
  37322. * remember that Northings are determined from the equator, and the vertical
  37323. * cycle of letters mean a 2000000 additional northing meters. This happens
  37324. * approx. every 18 degrees of latitude. This method does *NOT* count any
  37325. * additional northings. You have to figure out how many 2000000 meters need
  37326. * to be added for the zone letter of the MGRS coordinate.
  37327. *
  37328. * @private
  37329. * @param {char} n Second letter of the MGRS 100k zone
  37330. * @param {number} set The MGRS table set number, which is dependent on the
  37331. * UTM zone number.
  37332. * @return {number} The northing value for the given letter and set.
  37333. */
  37334. function getNorthingFromChar(n, set) {
  37335. if (n > 'V') {
  37336. throw ("MGRSPoint given invalid Northing " + n);
  37337. }
  37338. // rowOrigin is the letter at the origin of the set for the
  37339. // column
  37340. var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);
  37341. var northingValue = 0.0;
  37342. var rewindMarker = false;
  37343. while (curRow !== n.charCodeAt(0)) {
  37344. curRow++;
  37345. if (curRow === I) {
  37346. curRow++;
  37347. }
  37348. if (curRow === O) {
  37349. curRow++;
  37350. }
  37351. // fixing a bug making whole application hang in this loop
  37352. // when 'n' is a wrong character
  37353. if (curRow > mgrs_V) {
  37354. if (rewindMarker) { // making sure that this loop ends
  37355. throw ("Bad character: " + n);
  37356. }
  37357. curRow = mgrs_A;
  37358. rewindMarker = true;
  37359. }
  37360. northingValue += 100000.0;
  37361. }
  37362. return northingValue;
  37363. }
  37364. /**
  37365. * The function getMinNorthing returns the minimum northing value of a MGRS
  37366. * zone.
  37367. *
  37368. * Ported from Geotrans' c Lattitude_Band_Value structure table.
  37369. *
  37370. * @private
  37371. * @param {char} zoneLetter The MGRS zone to get the min northing for.
  37372. * @return {number}
  37373. */
  37374. function getMinNorthing(zoneLetter) {
  37375. var northing;
  37376. switch (zoneLetter) {
  37377. case 'C':
  37378. northing = 1100000.0;
  37379. break;
  37380. case 'D':
  37381. northing = 2000000.0;
  37382. break;
  37383. case 'E':
  37384. northing = 2800000.0;
  37385. break;
  37386. case 'F':
  37387. northing = 3700000.0;
  37388. break;
  37389. case 'G':
  37390. northing = 4600000.0;
  37391. break;
  37392. case 'H':
  37393. northing = 5500000.0;
  37394. break;
  37395. case 'J':
  37396. northing = 6400000.0;
  37397. break;
  37398. case 'K':
  37399. northing = 7300000.0;
  37400. break;
  37401. case 'L':
  37402. northing = 8200000.0;
  37403. break;
  37404. case 'M':
  37405. northing = 9100000.0;
  37406. break;
  37407. case 'N':
  37408. northing = 0.0;
  37409. break;
  37410. case 'P':
  37411. northing = 800000.0;
  37412. break;
  37413. case 'Q':
  37414. northing = 1700000.0;
  37415. break;
  37416. case 'R':
  37417. northing = 2600000.0;
  37418. break;
  37419. case 'S':
  37420. northing = 3500000.0;
  37421. break;
  37422. case 'T':
  37423. northing = 4400000.0;
  37424. break;
  37425. case 'U':
  37426. northing = 5300000.0;
  37427. break;
  37428. case 'V':
  37429. northing = 6200000.0;
  37430. break;
  37431. case 'W':
  37432. northing = 7000000.0;
  37433. break;
  37434. case 'X':
  37435. northing = 7900000.0;
  37436. break;
  37437. default:
  37438. northing = -1.0;
  37439. }
  37440. if (northing >= 0.0) {
  37441. return northing;
  37442. }
  37443. else {
  37444. throw ("Invalid zone letter: " + zoneLetter);
  37445. }
  37446. }
  37447. // CONCATENATED MODULE: ./node_modules/proj4/lib/Point.js
  37448. function Point(x, y, z) {
  37449. if (!(this instanceof Point)) {
  37450. return new Point(x, y, z);
  37451. }
  37452. if (Array.isArray(x)) {
  37453. this.x = x[0];
  37454. this.y = x[1];
  37455. this.z = x[2] || 0.0;
  37456. } else if(typeof x === 'object') {
  37457. this.x = x.x;
  37458. this.y = x.y;
  37459. this.z = x.z || 0.0;
  37460. } else if (typeof x === 'string' && typeof y === 'undefined') {
  37461. var coords = x.split(',');
  37462. this.x = parseFloat(coords[0], 10);
  37463. this.y = parseFloat(coords[1], 10);
  37464. this.z = parseFloat(coords[2], 10) || 0.0;
  37465. } else {
  37466. this.x = x;
  37467. this.y = y;
  37468. this.z = z || 0.0;
  37469. }
  37470. console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');
  37471. }
  37472. Point.fromMGRS = function(mgrsStr) {
  37473. return new Point(mgrs_toPoint(mgrsStr));
  37474. };
  37475. Point.prototype.toMGRS = function(accuracy) {
  37476. return mgrs_forward([this.x, this.y], accuracy);
  37477. };
  37478. /* harmony default export */ var lib_Point = (Point);
  37479. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/pj_enfn.js
  37480. var C00 = 1;
  37481. var C02 = 0.25;
  37482. var C04 = 0.046875;
  37483. var C06 = 0.01953125;
  37484. var C08 = 0.01068115234375;
  37485. var C22 = 0.75;
  37486. var C44 = 0.46875;
  37487. var C46 = 0.01302083333333333333;
  37488. var C48 = 0.00712076822916666666;
  37489. var C66 = 0.36458333333333333333;
  37490. var C68 = 0.00569661458333333333;
  37491. var C88 = 0.3076171875;
  37492. /* harmony default export */ var pj_enfn = (function(es) {
  37493. var en = [];
  37494. en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));
  37495. en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));
  37496. var t = es * es;
  37497. en[2] = t * (C44 - es * (C46 + es * C48));
  37498. t *= es;
  37499. en[3] = t * (C66 - es * C68);
  37500. en[4] = t * es * C88;
  37501. return en;
  37502. });
  37503. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/pj_mlfn.js
  37504. /* harmony default export */ var pj_mlfn = (function(phi, sphi, cphi, en) {
  37505. cphi *= sphi;
  37506. sphi *= sphi;
  37507. return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));
  37508. });
  37509. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/pj_inv_mlfn.js
  37510. var MAX_ITER = 20;
  37511. /* harmony default export */ var pj_inv_mlfn = (function(arg, es, en) {
  37512. var k = 1 / (1 - es);
  37513. var phi = arg;
  37514. for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */
  37515. var s = Math.sin(phi);
  37516. var t = 1 - es * s * s;
  37517. //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;
  37518. //phi -= t * (t * Math.sqrt(t)) * k;
  37519. t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;
  37520. phi -= t;
  37521. if (Math.abs(t) < EPSLN) {
  37522. return phi;
  37523. }
  37524. }
  37525. //..reportError("cass:pj_inv_mlfn: Convergence error");
  37526. return phi;
  37527. });
  37528. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/tmerc.js
  37529. // Heavily based on this tmerc projection implementation
  37530. // https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js
  37531. function tmerc_init() {
  37532. this.x0 = this.x0 !== undefined ? this.x0 : 0;
  37533. this.y0 = this.y0 !== undefined ? this.y0 : 0;
  37534. this.long0 = this.long0 !== undefined ? this.long0 : 0;
  37535. this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;
  37536. if (this.es) {
  37537. this.en = pj_enfn(this.es);
  37538. this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en);
  37539. }
  37540. }
  37541. /**
  37542. Transverse Mercator Forward - long/lat to x/y
  37543. long/lat in radians
  37544. */
  37545. function tmerc_forward(p) {
  37546. var lon = p.x;
  37547. var lat = p.y;
  37548. var delta_lon = adjust_lon(lon - this.long0);
  37549. var con;
  37550. var x, y;
  37551. var sin_phi = Math.sin(lat);
  37552. var cos_phi = Math.cos(lat);
  37553. if (!this.es) {
  37554. var b = cos_phi * Math.sin(delta_lon);
  37555. if ((Math.abs(Math.abs(b) - 1)) < EPSLN) {
  37556. return (93);
  37557. }
  37558. else {
  37559. x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0;
  37560. y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2));
  37561. b = Math.abs(y);
  37562. if (b >= 1) {
  37563. if ((b - 1) > EPSLN) {
  37564. return (93);
  37565. }
  37566. else {
  37567. y = 0;
  37568. }
  37569. }
  37570. else {
  37571. y = Math.acos(y);
  37572. }
  37573. if (lat < 0) {
  37574. y = -y;
  37575. }
  37576. y = this.a * this.k0 * (y - this.lat0) + this.y0;
  37577. }
  37578. }
  37579. else {
  37580. var al = cos_phi * delta_lon;
  37581. var als = Math.pow(al, 2);
  37582. var c = this.ep2 * Math.pow(cos_phi, 2);
  37583. var cs = Math.pow(c, 2);
  37584. var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0;
  37585. var t = Math.pow(tq, 2);
  37586. var ts = Math.pow(t, 2);
  37587. con = 1 - this.es * Math.pow(sin_phi, 2);
  37588. al = al / Math.sqrt(con);
  37589. var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en);
  37590. x = this.a * (this.k0 * al * (1 +
  37591. als / 6 * (1 - t + c +
  37592. als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c +
  37593. als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) +
  37594. this.x0;
  37595. y = this.a * (this.k0 * (ml - this.ml0 +
  37596. sin_phi * delta_lon * al / 2 * (1 +
  37597. als / 12 * (5 - t + 9 * c + 4 * cs +
  37598. als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c +
  37599. als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) +
  37600. this.y0;
  37601. }
  37602. p.x = x;
  37603. p.y = y;
  37604. return p;
  37605. }
  37606. /**
  37607. Transverse Mercator Inverse - x/y to long/lat
  37608. */
  37609. function tmerc_inverse(p) {
  37610. var con, phi;
  37611. var lat, lon;
  37612. var x = (p.x - this.x0) * (1 / this.a);
  37613. var y = (p.y - this.y0) * (1 / this.a);
  37614. if (!this.es) {
  37615. var f = Math.exp(x / this.k0);
  37616. var g = 0.5 * (f - 1 / f);
  37617. var temp = this.lat0 + y / this.k0;
  37618. var h = Math.cos(temp);
  37619. con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2)));
  37620. lat = Math.asin(con);
  37621. if (y < 0) {
  37622. lat = -lat;
  37623. }
  37624. if ((g === 0) && (h === 0)) {
  37625. lon = 0;
  37626. }
  37627. else {
  37628. lon = adjust_lon(Math.atan2(g, h) + this.long0);
  37629. }
  37630. }
  37631. else { // ellipsoidal form
  37632. con = this.ml0 + y / this.k0;
  37633. phi = pj_inv_mlfn(con, this.es, this.en);
  37634. if (Math.abs(phi) < HALF_PI) {
  37635. var sin_phi = Math.sin(phi);
  37636. var cos_phi = Math.cos(phi);
  37637. var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0;
  37638. var c = this.ep2 * Math.pow(cos_phi, 2);
  37639. var cs = Math.pow(c, 2);
  37640. var t = Math.pow(tan_phi, 2);
  37641. var ts = Math.pow(t, 2);
  37642. con = 1 - this.es * Math.pow(sin_phi, 2);
  37643. var d = x * Math.sqrt(con) / this.k0;
  37644. var ds = Math.pow(d, 2);
  37645. con = con * tan_phi;
  37646. lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 -
  37647. ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs -
  37648. ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c -
  37649. ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t))));
  37650. lon = adjust_lon(this.long0 + (d * (1 -
  37651. ds / 6 * (1 + 2 * t + c -
  37652. ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c -
  37653. ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi));
  37654. }
  37655. else {
  37656. lat = HALF_PI * sign(y);
  37657. lon = 0;
  37658. }
  37659. }
  37660. p.x = lon;
  37661. p.y = lat;
  37662. return p;
  37663. }
  37664. var tmerc_names = ["Transverse_Mercator", "Transverse Mercator", "tmerc"];
  37665. /* harmony default export */ var tmerc = ({
  37666. init: tmerc_init,
  37667. forward: tmerc_forward,
  37668. inverse: tmerc_inverse,
  37669. names: tmerc_names
  37670. });
  37671. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/sinh.js
  37672. /* harmony default export */ var sinh = (function(x) {
  37673. var r = Math.exp(x);
  37674. r = (r - 1 / r) / 2;
  37675. return r;
  37676. });
  37677. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/hypot.js
  37678. /* harmony default export */ var hypot = (function(x, y) {
  37679. x = Math.abs(x);
  37680. y = Math.abs(y);
  37681. var a = Math.max(x, y);
  37682. var b = Math.min(x, y) / (a ? a : 1);
  37683. return a * Math.sqrt(1 + Math.pow(b, 2));
  37684. });
  37685. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/log1py.js
  37686. /* harmony default export */ var log1py = (function(x) {
  37687. var y = 1 + x;
  37688. var z = y - 1;
  37689. return z === 0 ? x : x * Math.log(y) / z;
  37690. });
  37691. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/asinhy.js
  37692. /* harmony default export */ var asinhy = (function(x) {
  37693. var y = Math.abs(x);
  37694. y = log1py(y * (1 + y / (hypot(1, y) + 1)));
  37695. return x < 0 ? -y : y;
  37696. });
  37697. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/gatg.js
  37698. /* harmony default export */ var gatg = (function(pp, B) {
  37699. var cos_2B = 2 * Math.cos(2 * B);
  37700. var i = pp.length - 1;
  37701. var h1 = pp[i];
  37702. var h2 = 0;
  37703. var h;
  37704. while (--i >= 0) {
  37705. h = -h2 + cos_2B * h1 + pp[i];
  37706. h2 = h1;
  37707. h1 = h;
  37708. }
  37709. return (B + h * Math.sin(2 * B));
  37710. });
  37711. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/clens.js
  37712. /* harmony default export */ var clens = (function(pp, arg_r) {
  37713. var r = 2 * Math.cos(arg_r);
  37714. var i = pp.length - 1;
  37715. var hr1 = pp[i];
  37716. var hr2 = 0;
  37717. var hr;
  37718. while (--i >= 0) {
  37719. hr = -hr2 + r * hr1 + pp[i];
  37720. hr2 = hr1;
  37721. hr1 = hr;
  37722. }
  37723. return Math.sin(arg_r) * hr;
  37724. });
  37725. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/cosh.js
  37726. /* harmony default export */ var cosh = (function(x) {
  37727. var r = Math.exp(x);
  37728. r = (r + 1 / r) / 2;
  37729. return r;
  37730. });
  37731. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/clens_cmplx.js
  37732. /* harmony default export */ var clens_cmplx = (function(pp, arg_r, arg_i) {
  37733. var sin_arg_r = Math.sin(arg_r);
  37734. var cos_arg_r = Math.cos(arg_r);
  37735. var sinh_arg_i = sinh(arg_i);
  37736. var cosh_arg_i = cosh(arg_i);
  37737. var r = 2 * cos_arg_r * cosh_arg_i;
  37738. var i = -2 * sin_arg_r * sinh_arg_i;
  37739. var j = pp.length - 1;
  37740. var hr = pp[j];
  37741. var hi1 = 0;
  37742. var hr1 = 0;
  37743. var hi = 0;
  37744. var hr2;
  37745. var hi2;
  37746. while (--j >= 0) {
  37747. hr2 = hr1;
  37748. hi2 = hi1;
  37749. hr1 = hr;
  37750. hi1 = hi;
  37751. hr = -hr2 + r * hr1 - i * hi1 + pp[j];
  37752. hi = -hi2 + i * hr1 + r * hi1;
  37753. }
  37754. r = sin_arg_r * cosh_arg_i;
  37755. i = cos_arg_r * sinh_arg_i;
  37756. return [r * hr - i * hi, r * hi + i * hr];
  37757. });
  37758. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/etmerc.js
  37759. // Heavily based on this etmerc projection implementation
  37760. // https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js
  37761. function etmerc_init() {
  37762. if (this.es === undefined || this.es <= 0) {
  37763. throw new Error('incorrect elliptical usage');
  37764. }
  37765. this.x0 = this.x0 !== undefined ? this.x0 : 0;
  37766. this.y0 = this.y0 !== undefined ? this.y0 : 0;
  37767. this.long0 = this.long0 !== undefined ? this.long0 : 0;
  37768. this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;
  37769. this.cgb = [];
  37770. this.cbg = [];
  37771. this.utg = [];
  37772. this.gtu = [];
  37773. var f = this.es / (1 + Math.sqrt(1 - this.es));
  37774. var n = f / (2 - f);
  37775. var np = n;
  37776. this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 ))))));
  37777. this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725))))));
  37778. np = np * n;
  37779. this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945)))));
  37780. this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945)))));
  37781. np = np * n;
  37782. this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835))));
  37783. this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835))));
  37784. np = np * n;
  37785. this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175)));
  37786. this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175)));
  37787. np = np * n;
  37788. this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237));
  37789. this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185));
  37790. np = np * n;
  37791. this.cgb[5] = np * (601676 / 22275);
  37792. this.cbg[5] = np * (444337 / 155925);
  37793. np = Math.pow(n, 2);
  37794. this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256)));
  37795. this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800))))));
  37796. this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800))))));
  37797. this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720)))));
  37798. this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360)))));
  37799. np = np * n;
  37800. this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 ))));
  37801. this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440))));
  37802. np = np * n;
  37803. this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600)));
  37804. this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600)));
  37805. np = np * n;
  37806. this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680));
  37807. this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840));
  37808. np = np * n;
  37809. this.utg[5] = np * (-20648693 / 638668800);
  37810. this.gtu[5] = np * (212378941 / 319334400);
  37811. var Z = gatg(this.cbg, this.lat0);
  37812. this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z));
  37813. }
  37814. function etmerc_forward(p) {
  37815. var Ce = adjust_lon(p.x - this.long0);
  37816. var Cn = p.y;
  37817. Cn = gatg(this.cbg, Cn);
  37818. var sin_Cn = Math.sin(Cn);
  37819. var cos_Cn = Math.cos(Cn);
  37820. var sin_Ce = Math.sin(Ce);
  37821. var cos_Ce = Math.cos(Ce);
  37822. Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn);
  37823. Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce));
  37824. Ce = asinhy(Math.tan(Ce));
  37825. var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce);
  37826. Cn = Cn + tmp[0];
  37827. Ce = Ce + tmp[1];
  37828. var x;
  37829. var y;
  37830. if (Math.abs(Ce) <= 2.623395162778) {
  37831. x = this.a * (this.Qn * Ce) + this.x0;
  37832. y = this.a * (this.Qn * Cn + this.Zb) + this.y0;
  37833. }
  37834. else {
  37835. x = Infinity;
  37836. y = Infinity;
  37837. }
  37838. p.x = x;
  37839. p.y = y;
  37840. return p;
  37841. }
  37842. function etmerc_inverse(p) {
  37843. var Ce = (p.x - this.x0) * (1 / this.a);
  37844. var Cn = (p.y - this.y0) * (1 / this.a);
  37845. Cn = (Cn - this.Zb) / this.Qn;
  37846. Ce = Ce / this.Qn;
  37847. var lon;
  37848. var lat;
  37849. if (Math.abs(Ce) <= 2.623395162778) {
  37850. var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce);
  37851. Cn = Cn + tmp[0];
  37852. Ce = Ce + tmp[1];
  37853. Ce = Math.atan(sinh(Ce));
  37854. var sin_Cn = Math.sin(Cn);
  37855. var cos_Cn = Math.cos(Cn);
  37856. var sin_Ce = Math.sin(Ce);
  37857. var cos_Ce = Math.cos(Ce);
  37858. Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn));
  37859. Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn);
  37860. lon = adjust_lon(Ce + this.long0);
  37861. lat = gatg(this.cgb, Cn);
  37862. }
  37863. else {
  37864. lon = Infinity;
  37865. lat = Infinity;
  37866. }
  37867. p.x = lon;
  37868. p.y = lat;
  37869. return p;
  37870. }
  37871. var etmerc_names = ["Extended_Transverse_Mercator", "Extended Transverse Mercator", "etmerc"];
  37872. /* harmony default export */ var etmerc = ({
  37873. init: etmerc_init,
  37874. forward: etmerc_forward,
  37875. inverse: etmerc_inverse,
  37876. names: etmerc_names
  37877. });
  37878. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/adjust_zone.js
  37879. /* harmony default export */ var adjust_zone = (function(zone, lon) {
  37880. if (zone === undefined) {
  37881. zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1;
  37882. if (zone < 0) {
  37883. return 0;
  37884. } else if (zone > 60) {
  37885. return 60;
  37886. }
  37887. }
  37888. return zone;
  37889. });
  37890. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/utm.js
  37891. var dependsOn = 'etmerc';
  37892. function utm_init() {
  37893. var zone = adjust_zone(this.zone, this.long0);
  37894. if (zone === undefined) {
  37895. throw new Error('unknown utm zone');
  37896. }
  37897. this.lat0 = 0;
  37898. this.long0 = ((6 * Math.abs(zone)) - 183) * D2R;
  37899. this.x0 = 500000;
  37900. this.y0 = this.utmSouth ? 10000000 : 0;
  37901. this.k0 = 0.9996;
  37902. etmerc.init.apply(this);
  37903. this.forward = etmerc.forward;
  37904. this.inverse = etmerc.inverse;
  37905. }
  37906. var utm_names = ["Universal Transverse Mercator System", "utm"];
  37907. /* harmony default export */ var utm = ({
  37908. init: utm_init,
  37909. names: utm_names,
  37910. dependsOn: dependsOn
  37911. });
  37912. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/srat.js
  37913. /* harmony default export */ var srat = (function(esinp, exp) {
  37914. return (Math.pow((1 - esinp) / (1 + esinp), exp));
  37915. });
  37916. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/gauss.js
  37917. var gauss_MAX_ITER = 20;
  37918. function gauss_init() {
  37919. var sphi = Math.sin(this.lat0);
  37920. var cphi = Math.cos(this.lat0);
  37921. cphi *= cphi;
  37922. this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);
  37923. this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));
  37924. this.phic0 = Math.asin(sphi / this.C);
  37925. this.ratexp = 0.5 * this.C * this.e;
  37926. this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));
  37927. }
  37928. function gauss_forward(p) {
  37929. var lon = p.x;
  37930. var lat = p.y;
  37931. p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;
  37932. p.x = this.C * lon;
  37933. return p;
  37934. }
  37935. function gauss_inverse(p) {
  37936. var DEL_TOL = 1e-14;
  37937. var lon = p.x / this.C;
  37938. var lat = p.y;
  37939. var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);
  37940. for (var i = gauss_MAX_ITER; i > 0; --i) {
  37941. lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;
  37942. if (Math.abs(lat - p.y) < DEL_TOL) {
  37943. break;
  37944. }
  37945. p.y = lat;
  37946. }
  37947. /* convergence failed */
  37948. if (!i) {
  37949. return null;
  37950. }
  37951. p.x = lon;
  37952. p.y = lat;
  37953. return p;
  37954. }
  37955. var gauss_names = ["gauss"];
  37956. /* harmony default export */ var gauss = ({
  37957. init: gauss_init,
  37958. forward: gauss_forward,
  37959. inverse: gauss_inverse,
  37960. names: gauss_names
  37961. });
  37962. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/sterea.js
  37963. function sterea_init() {
  37964. gauss.init.apply(this);
  37965. if (!this.rc) {
  37966. return;
  37967. }
  37968. this.sinc0 = Math.sin(this.phic0);
  37969. this.cosc0 = Math.cos(this.phic0);
  37970. this.R2 = 2 * this.rc;
  37971. if (!this.title) {
  37972. this.title = "Oblique Stereographic Alternative";
  37973. }
  37974. }
  37975. function sterea_forward(p) {
  37976. var sinc, cosc, cosl, k;
  37977. p.x = adjust_lon(p.x - this.long0);
  37978. gauss.forward.apply(this, [p]);
  37979. sinc = Math.sin(p.y);
  37980. cosc = Math.cos(p.y);
  37981. cosl = Math.cos(p.x);
  37982. k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);
  37983. p.x = k * cosc * Math.sin(p.x);
  37984. p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);
  37985. p.x = this.a * p.x + this.x0;
  37986. p.y = this.a * p.y + this.y0;
  37987. return p;
  37988. }
  37989. function sterea_inverse(p) {
  37990. var sinc, cosc, lon, lat, rho;
  37991. p.x = (p.x - this.x0) / this.a;
  37992. p.y = (p.y - this.y0) / this.a;
  37993. p.x /= this.k0;
  37994. p.y /= this.k0;
  37995. if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {
  37996. var c = 2 * Math.atan2(rho, this.R2);
  37997. sinc = Math.sin(c);
  37998. cosc = Math.cos(c);
  37999. lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);
  38000. lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);
  38001. }
  38002. else {
  38003. lat = this.phic0;
  38004. lon = 0;
  38005. }
  38006. p.x = lon;
  38007. p.y = lat;
  38008. gauss.inverse.apply(this, [p]);
  38009. p.x = adjust_lon(p.x + this.long0);
  38010. return p;
  38011. }
  38012. var sterea_names = ["Stereographic_North_Pole", "Oblique_Stereographic", "Polar_Stereographic", "sterea","Oblique Stereographic Alternative","Double_Stereographic"];
  38013. /* harmony default export */ var sterea = ({
  38014. init: sterea_init,
  38015. forward: sterea_forward,
  38016. inverse: sterea_inverse,
  38017. names: sterea_names
  38018. });
  38019. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/stere.js
  38020. function ssfn_(phit, sinphi, eccen) {
  38021. sinphi *= eccen;
  38022. return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));
  38023. }
  38024. function stere_init() {
  38025. this.coslat0 = Math.cos(this.lat0);
  38026. this.sinlat0 = Math.sin(this.lat0);
  38027. if (this.sphere) {
  38028. if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {
  38029. this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));
  38030. }
  38031. }
  38032. else {
  38033. if (Math.abs(this.coslat0) <= EPSLN) {
  38034. if (this.lat0 > 0) {
  38035. //North pole
  38036. //trace('stere:north pole');
  38037. this.con = 1;
  38038. }
  38039. else {
  38040. //South pole
  38041. //trace('stere:south pole');
  38042. this.con = -1;
  38043. }
  38044. }
  38045. this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));
  38046. if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {
  38047. this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));
  38048. }
  38049. this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);
  38050. this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;
  38051. this.cosX0 = Math.cos(this.X0);
  38052. this.sinX0 = Math.sin(this.X0);
  38053. }
  38054. }
  38055. // Stereographic forward equations--mapping lat,long to x,y
  38056. function stere_forward(p) {
  38057. var lon = p.x;
  38058. var lat = p.y;
  38059. var sinlat = Math.sin(lat);
  38060. var coslat = Math.cos(lat);
  38061. var A, X, sinX, cosX, ts, rh;
  38062. var dlon = adjust_lon(lon - this.long0);
  38063. if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {
  38064. //case of the origine point
  38065. //trace('stere:this is the origin point');
  38066. p.x = NaN;
  38067. p.y = NaN;
  38068. return p;
  38069. }
  38070. if (this.sphere) {
  38071. //trace('stere:sphere case');
  38072. A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));
  38073. p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;
  38074. p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;
  38075. return p;
  38076. }
  38077. else {
  38078. X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;
  38079. cosX = Math.cos(X);
  38080. sinX = Math.sin(X);
  38081. if (Math.abs(this.coslat0) <= EPSLN) {
  38082. ts = tsfnz(this.e, lat * this.con, this.con * sinlat);
  38083. rh = 2 * this.a * this.k0 * ts / this.cons;
  38084. p.x = this.x0 + rh * Math.sin(lon - this.long0);
  38085. p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);
  38086. //trace(p.toString());
  38087. return p;
  38088. }
  38089. else if (Math.abs(this.sinlat0) < EPSLN) {
  38090. //Eq
  38091. //trace('stere:equateur');
  38092. A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));
  38093. p.y = A * sinX;
  38094. }
  38095. else {
  38096. //other case
  38097. //trace('stere:normal case');
  38098. A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));
  38099. p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;
  38100. }
  38101. p.x = A * cosX * Math.sin(dlon) + this.x0;
  38102. }
  38103. //trace(p.toString());
  38104. return p;
  38105. }
  38106. //* Stereographic inverse equations--mapping x,y to lat/long
  38107. function stere_inverse(p) {
  38108. p.x -= this.x0;
  38109. p.y -= this.y0;
  38110. var lon, lat, ts, ce, Chi;
  38111. var rh = Math.sqrt(p.x * p.x + p.y * p.y);
  38112. if (this.sphere) {
  38113. var c = 2 * Math.atan(rh / (2 * this.a * this.k0));
  38114. lon = this.long0;
  38115. lat = this.lat0;
  38116. if (rh <= EPSLN) {
  38117. p.x = lon;
  38118. p.y = lat;
  38119. return p;
  38120. }
  38121. lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);
  38122. if (Math.abs(this.coslat0) < EPSLN) {
  38123. if (this.lat0 > 0) {
  38124. lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));
  38125. }
  38126. else {
  38127. lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));
  38128. }
  38129. }
  38130. else {
  38131. lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));
  38132. }
  38133. p.x = lon;
  38134. p.y = lat;
  38135. return p;
  38136. }
  38137. else {
  38138. if (Math.abs(this.coslat0) <= EPSLN) {
  38139. if (rh <= EPSLN) {
  38140. lat = this.lat0;
  38141. lon = this.long0;
  38142. p.x = lon;
  38143. p.y = lat;
  38144. //trace(p.toString());
  38145. return p;
  38146. }
  38147. p.x *= this.con;
  38148. p.y *= this.con;
  38149. ts = rh * this.cons / (2 * this.a * this.k0);
  38150. lat = this.con * phi2z(this.e, ts);
  38151. lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));
  38152. }
  38153. else {
  38154. ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));
  38155. lon = this.long0;
  38156. if (rh <= EPSLN) {
  38157. Chi = this.X0;
  38158. }
  38159. else {
  38160. Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);
  38161. lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));
  38162. }
  38163. lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));
  38164. }
  38165. }
  38166. p.x = lon;
  38167. p.y = lat;
  38168. //trace(p.toString());
  38169. return p;
  38170. }
  38171. var stere_names = ["stere", "Stereographic_South_Pole", "Polar Stereographic (variant B)"];
  38172. /* harmony default export */ var stere = ({
  38173. init: stere_init,
  38174. forward: stere_forward,
  38175. inverse: stere_inverse,
  38176. names: stere_names,
  38177. ssfn_: ssfn_
  38178. });
  38179. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/somerc.js
  38180. /*
  38181. references:
  38182. Formules et constantes pour le Calcul pour la
  38183. projection cylindrique conforme à axe oblique et pour la transformation entre
  38184. des systèmes de référence.
  38185. http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf
  38186. */
  38187. function somerc_init() {
  38188. var phy0 = this.lat0;
  38189. this.lambda0 = this.long0;
  38190. var sinPhy0 = Math.sin(phy0);
  38191. var semiMajorAxis = this.a;
  38192. var invF = this.rf;
  38193. var flattening = 1 / invF;
  38194. var e2 = 2 * flattening - Math.pow(flattening, 2);
  38195. var e = this.e = Math.sqrt(e2);
  38196. this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));
  38197. this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));
  38198. this.b0 = Math.asin(sinPhy0 / this.alpha);
  38199. var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));
  38200. var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));
  38201. var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));
  38202. this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;
  38203. }
  38204. function somerc_forward(p) {
  38205. var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));
  38206. var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));
  38207. var S = -this.alpha * (Sa1 + Sa2) + this.K;
  38208. // spheric latitude
  38209. var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);
  38210. // spheric longitude
  38211. var I = this.alpha * (p.x - this.lambda0);
  38212. // psoeudo equatorial rotation
  38213. var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));
  38214. var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));
  38215. p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;
  38216. p.x = this.R * rotI + this.x0;
  38217. return p;
  38218. }
  38219. function somerc_inverse(p) {
  38220. var Y = p.x - this.x0;
  38221. var X = p.y - this.y0;
  38222. var rotI = Y / this.R;
  38223. var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);
  38224. var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));
  38225. var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));
  38226. var lambda = this.lambda0 + I / this.alpha;
  38227. var S = 0;
  38228. var phy = b;
  38229. var prevPhy = -1000;
  38230. var iteration = 0;
  38231. while (Math.abs(phy - prevPhy) > 0.0000001) {
  38232. if (++iteration > 20) {
  38233. //...reportError("omercFwdInfinity");
  38234. return;
  38235. }
  38236. //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));
  38237. S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));
  38238. prevPhy = phy;
  38239. phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;
  38240. }
  38241. p.x = lambda;
  38242. p.y = phy;
  38243. return p;
  38244. }
  38245. var somerc_names = ["somerc"];
  38246. /* harmony default export */ var somerc = ({
  38247. init: somerc_init,
  38248. forward: somerc_forward,
  38249. inverse: somerc_inverse,
  38250. names: somerc_names
  38251. });
  38252. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/omerc.js
  38253. /* Initialize the Oblique Mercator projection
  38254. ------------------------------------------*/
  38255. function omerc_init() {
  38256. this.no_off = this.no_off || false;
  38257. this.no_rot = this.no_rot || false;
  38258. if (isNaN(this.k0)) {
  38259. this.k0 = 1;
  38260. }
  38261. var sinlat = Math.sin(this.lat0);
  38262. var coslat = Math.cos(this.lat0);
  38263. var con = this.e * sinlat;
  38264. this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4));
  38265. this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con);
  38266. var t0 = tsfnz(this.e, this.lat0, sinlat);
  38267. var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con));
  38268. if (dl * dl < 1) {
  38269. dl = 1;
  38270. }
  38271. var fl;
  38272. var gl;
  38273. if (!isNaN(this.longc)) {
  38274. //Central point and azimuth method
  38275. if (this.lat0 >= 0) {
  38276. fl = dl + Math.sqrt(dl * dl - 1);
  38277. }
  38278. else {
  38279. fl = dl - Math.sqrt(dl * dl - 1);
  38280. }
  38281. this.el = fl * Math.pow(t0, this.bl);
  38282. gl = 0.5 * (fl - 1 / fl);
  38283. this.gamma0 = Math.asin(Math.sin(this.alpha) / dl);
  38284. this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl;
  38285. }
  38286. else {
  38287. //2 points method
  38288. var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1));
  38289. var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2));
  38290. if (this.lat0 >= 0) {
  38291. this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);
  38292. }
  38293. else {
  38294. this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);
  38295. }
  38296. var hl = Math.pow(t1, this.bl);
  38297. var ll = Math.pow(t2, this.bl);
  38298. fl = this.el / hl;
  38299. gl = 0.5 * (fl - 1 / fl);
  38300. var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl);
  38301. var pl = (ll - hl) / (ll + hl);
  38302. var dlon12 = adjust_lon(this.long1 - this.long2);
  38303. this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl;
  38304. this.long0 = adjust_lon(this.long0);
  38305. var dlon10 = adjust_lon(this.long1 - this.long0);
  38306. this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl);
  38307. this.alpha = Math.asin(dl * Math.sin(this.gamma0));
  38308. }
  38309. if (this.no_off) {
  38310. this.uc = 0;
  38311. }
  38312. else {
  38313. if (this.lat0 >= 0) {
  38314. this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));
  38315. }
  38316. else {
  38317. this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));
  38318. }
  38319. }
  38320. }
  38321. /* Oblique Mercator forward equations--mapping lat,long to x,y
  38322. ----------------------------------------------------------*/
  38323. function omerc_forward(p) {
  38324. var lon = p.x;
  38325. var lat = p.y;
  38326. var dlon = adjust_lon(lon - this.long0);
  38327. var us, vs;
  38328. var con;
  38329. if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
  38330. if (lat > 0) {
  38331. con = -1;
  38332. }
  38333. else {
  38334. con = 1;
  38335. }
  38336. vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5));
  38337. us = -1 * con * HALF_PI * this.al / this.bl;
  38338. }
  38339. else {
  38340. var t = tsfnz(this.e, lat, Math.sin(lat));
  38341. var ql = this.el / Math.pow(t, this.bl);
  38342. var sl = 0.5 * (ql - 1 / ql);
  38343. var tl = 0.5 * (ql + 1 / ql);
  38344. var vl = Math.sin(this.bl * (dlon));
  38345. var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl;
  38346. if (Math.abs(Math.abs(ul) - 1) <= EPSLN) {
  38347. vs = Number.POSITIVE_INFINITY;
  38348. }
  38349. else {
  38350. vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl;
  38351. }
  38352. if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) {
  38353. us = this.al * this.bl * (dlon);
  38354. }
  38355. else {
  38356. us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl;
  38357. }
  38358. }
  38359. if (this.no_rot) {
  38360. p.x = this.x0 + us;
  38361. p.y = this.y0 + vs;
  38362. }
  38363. else {
  38364. us -= this.uc;
  38365. p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha);
  38366. p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha);
  38367. }
  38368. return p;
  38369. }
  38370. function omerc_inverse(p) {
  38371. var us, vs;
  38372. if (this.no_rot) {
  38373. vs = p.y - this.y0;
  38374. us = p.x - this.x0;
  38375. }
  38376. else {
  38377. vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha);
  38378. us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha);
  38379. us += this.uc;
  38380. }
  38381. var qp = Math.exp(-1 * this.bl * vs / this.al);
  38382. var sp = 0.5 * (qp - 1 / qp);
  38383. var tp = 0.5 * (qp + 1 / qp);
  38384. var vp = Math.sin(this.bl * us / this.al);
  38385. var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp;
  38386. var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl);
  38387. if (Math.abs(up - 1) < EPSLN) {
  38388. p.x = this.long0;
  38389. p.y = HALF_PI;
  38390. }
  38391. else if (Math.abs(up + 1) < EPSLN) {
  38392. p.x = this.long0;
  38393. p.y = -1 * HALF_PI;
  38394. }
  38395. else {
  38396. p.y = phi2z(this.e, ts);
  38397. p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl);
  38398. }
  38399. return p;
  38400. }
  38401. var omerc_names = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "omerc"];
  38402. /* harmony default export */ var omerc = ({
  38403. init: omerc_init,
  38404. forward: omerc_forward,
  38405. inverse: omerc_inverse,
  38406. names: omerc_names
  38407. });
  38408. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/lcc.js
  38409. function lcc_init() {
  38410. // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north
  38411. //double c_lat; /* center latitude */
  38412. //double c_lon; /* center longitude */
  38413. //double lat1; /* first standard parallel */
  38414. //double lat2; /* second standard parallel */
  38415. //double r_maj; /* major axis */
  38416. //double r_min; /* minor axis */
  38417. //double false_east; /* x offset in meters */
  38418. //double false_north; /* y offset in meters */
  38419. if (!this.lat2) {
  38420. this.lat2 = this.lat1;
  38421. } //if lat2 is not defined
  38422. if (!this.k0) {
  38423. this.k0 = 1;
  38424. }
  38425. this.x0 = this.x0 || 0;
  38426. this.y0 = this.y0 || 0;
  38427. // Standard Parallels cannot be equal and on opposite sides of the equator
  38428. if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
  38429. return;
  38430. }
  38431. var temp = this.b / this.a;
  38432. this.e = Math.sqrt(1 - temp * temp);
  38433. var sin1 = Math.sin(this.lat1);
  38434. var cos1 = Math.cos(this.lat1);
  38435. var ms1 = msfnz(this.e, sin1, cos1);
  38436. var ts1 = tsfnz(this.e, this.lat1, sin1);
  38437. var sin2 = Math.sin(this.lat2);
  38438. var cos2 = Math.cos(this.lat2);
  38439. var ms2 = msfnz(this.e, sin2, cos2);
  38440. var ts2 = tsfnz(this.e, this.lat2, sin2);
  38441. var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));
  38442. if (Math.abs(this.lat1 - this.lat2) > EPSLN) {
  38443. this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);
  38444. }
  38445. else {
  38446. this.ns = sin1;
  38447. }
  38448. if (isNaN(this.ns)) {
  38449. this.ns = sin1;
  38450. }
  38451. this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));
  38452. this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);
  38453. if (!this.title) {
  38454. this.title = "Lambert Conformal Conic";
  38455. }
  38456. }
  38457. // Lambert Conformal conic forward equations--mapping lat,long to x,y
  38458. // -----------------------------------------------------------------
  38459. function lcc_forward(p) {
  38460. var lon = p.x;
  38461. var lat = p.y;
  38462. // singular cases :
  38463. if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {
  38464. lat = sign(lat) * (HALF_PI - 2 * EPSLN);
  38465. }
  38466. var con = Math.abs(Math.abs(lat) - HALF_PI);
  38467. var ts, rh1;
  38468. if (con > EPSLN) {
  38469. ts = tsfnz(this.e, lat, Math.sin(lat));
  38470. rh1 = this.a * this.f0 * Math.pow(ts, this.ns);
  38471. }
  38472. else {
  38473. con = lat * this.ns;
  38474. if (con <= 0) {
  38475. return null;
  38476. }
  38477. rh1 = 0;
  38478. }
  38479. var theta = this.ns * adjust_lon(lon - this.long0);
  38480. p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;
  38481. p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;
  38482. return p;
  38483. }
  38484. // Lambert Conformal Conic inverse equations--mapping x,y to lat/long
  38485. // -----------------------------------------------------------------
  38486. function lcc_inverse(p) {
  38487. var rh1, con, ts;
  38488. var lat, lon;
  38489. var x = (p.x - this.x0) / this.k0;
  38490. var y = (this.rh - (p.y - this.y0) / this.k0);
  38491. if (this.ns > 0) {
  38492. rh1 = Math.sqrt(x * x + y * y);
  38493. con = 1;
  38494. }
  38495. else {
  38496. rh1 = -Math.sqrt(x * x + y * y);
  38497. con = -1;
  38498. }
  38499. var theta = 0;
  38500. if (rh1 !== 0) {
  38501. theta = Math.atan2((con * x), (con * y));
  38502. }
  38503. if ((rh1 !== 0) || (this.ns > 0)) {
  38504. con = 1 / this.ns;
  38505. ts = Math.pow((rh1 / (this.a * this.f0)), con);
  38506. lat = phi2z(this.e, ts);
  38507. if (lat === -9999) {
  38508. return null;
  38509. }
  38510. }
  38511. else {
  38512. lat = -HALF_PI;
  38513. }
  38514. lon = adjust_lon(theta / this.ns + this.long0);
  38515. p.x = lon;
  38516. p.y = lat;
  38517. return p;
  38518. }
  38519. var lcc_names = ["Lambert Tangential Conformal Conic Projection", "Lambert_Conformal_Conic", "Lambert_Conformal_Conic_2SP", "lcc"];
  38520. /* harmony default export */ var lcc = ({
  38521. init: lcc_init,
  38522. forward: lcc_forward,
  38523. inverse: lcc_inverse,
  38524. names: lcc_names
  38525. });
  38526. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/krovak.js
  38527. function krovak_init() {
  38528. this.a = 6377397.155;
  38529. this.es = 0.006674372230614;
  38530. this.e = Math.sqrt(this.es);
  38531. if (!this.lat0) {
  38532. this.lat0 = 0.863937979737193;
  38533. }
  38534. if (!this.long0) {
  38535. this.long0 = 0.7417649320975901 - 0.308341501185665;
  38536. }
  38537. /* if scale not set default to 0.9999 */
  38538. if (!this.k0) {
  38539. this.k0 = 0.9999;
  38540. }
  38541. this.s45 = 0.785398163397448; /* 45 */
  38542. this.s90 = 2 * this.s45;
  38543. this.fi0 = this.lat0;
  38544. this.e2 = this.es;
  38545. this.e = Math.sqrt(this.e2);
  38546. this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));
  38547. this.uq = 1.04216856380474;
  38548. this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);
  38549. this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);
  38550. this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;
  38551. this.k1 = this.k0;
  38552. this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));
  38553. this.s0 = 1.37008346281555;
  38554. this.n = Math.sin(this.s0);
  38555. this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);
  38556. this.ad = this.s90 - this.uq;
  38557. }
  38558. /* ellipsoid */
  38559. /* calculate xy from lat/lon */
  38560. /* Constants, identical to inverse transform function */
  38561. function krovak_forward(p) {
  38562. var gfi, u, deltav, s, d, eps, ro;
  38563. var lon = p.x;
  38564. var lat = p.y;
  38565. var delta_lon = adjust_lon(lon - this.long0);
  38566. /* Transformation */
  38567. gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));
  38568. u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);
  38569. deltav = -delta_lon * this.alfa;
  38570. s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));
  38571. d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));
  38572. eps = this.n * d;
  38573. ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);
  38574. p.y = ro * Math.cos(eps) / 1;
  38575. p.x = ro * Math.sin(eps) / 1;
  38576. if (!this.czech) {
  38577. p.y *= -1;
  38578. p.x *= -1;
  38579. }
  38580. return (p);
  38581. }
  38582. /* calculate lat/lon from xy */
  38583. function krovak_inverse(p) {
  38584. var u, deltav, s, d, eps, ro, fi1;
  38585. var ok;
  38586. /* Transformation */
  38587. /* revert y, x*/
  38588. var tmp = p.x;
  38589. p.x = p.y;
  38590. p.y = tmp;
  38591. if (!this.czech) {
  38592. p.y *= -1;
  38593. p.x *= -1;
  38594. }
  38595. ro = Math.sqrt(p.x * p.x + p.y * p.y);
  38596. eps = Math.atan2(p.y, p.x);
  38597. d = eps / Math.sin(this.s0);
  38598. s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);
  38599. u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));
  38600. deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));
  38601. p.x = this.long0 - deltav / this.alfa;
  38602. fi1 = u;
  38603. ok = 0;
  38604. var iter = 0;
  38605. do {
  38606. p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);
  38607. if (Math.abs(fi1 - p.y) < 0.0000000001) {
  38608. ok = 1;
  38609. }
  38610. fi1 = p.y;
  38611. iter += 1;
  38612. } while (ok === 0 && iter < 15);
  38613. if (iter >= 15) {
  38614. return null;
  38615. }
  38616. return (p);
  38617. }
  38618. var krovak_names = ["Krovak", "krovak"];
  38619. /* harmony default export */ var krovak = ({
  38620. init: krovak_init,
  38621. forward: krovak_forward,
  38622. inverse: krovak_inverse,
  38623. names: krovak_names
  38624. });
  38625. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/mlfn.js
  38626. /* harmony default export */ var mlfn = (function(e0, e1, e2, e3, phi) {
  38627. return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));
  38628. });
  38629. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/e0fn.js
  38630. /* harmony default export */ var e0fn = (function(x) {
  38631. return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));
  38632. });
  38633. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/e1fn.js
  38634. /* harmony default export */ var e1fn = (function(x) {
  38635. return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));
  38636. });
  38637. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/e2fn.js
  38638. /* harmony default export */ var e2fn = (function(x) {
  38639. return (0.05859375 * x * x * (1 + 0.75 * x));
  38640. });
  38641. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/e3fn.js
  38642. /* harmony default export */ var e3fn = (function(x) {
  38643. return (x * x * x * (35 / 3072));
  38644. });
  38645. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/gN.js
  38646. /* harmony default export */ var gN = (function(a, e, sinphi) {
  38647. var temp = e * sinphi;
  38648. return a / Math.sqrt(1 - temp * temp);
  38649. });
  38650. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/adjust_lat.js
  38651. /* harmony default export */ var adjust_lat = (function(x) {
  38652. return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));
  38653. });
  38654. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/imlfn.js
  38655. /* harmony default export */ var imlfn = (function(ml, e0, e1, e2, e3) {
  38656. var phi;
  38657. var dphi;
  38658. phi = ml / e0;
  38659. for (var i = 0; i < 15; i++) {
  38660. dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));
  38661. phi += dphi;
  38662. if (Math.abs(dphi) <= 0.0000000001) {
  38663. return phi;
  38664. }
  38665. }
  38666. //..reportError("IMLFN-CONV:Latitude failed to converge after 15 iterations");
  38667. return NaN;
  38668. });
  38669. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/cass.js
  38670. function cass_init() {
  38671. if (!this.sphere) {
  38672. this.e0 = e0fn(this.es);
  38673. this.e1 = e1fn(this.es);
  38674. this.e2 = e2fn(this.es);
  38675. this.e3 = e3fn(this.es);
  38676. this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
  38677. }
  38678. }
  38679. /* Cassini forward equations--mapping lat,long to x,y
  38680. -----------------------------------------------------------------------*/
  38681. function cass_forward(p) {
  38682. /* Forward equations
  38683. -----------------*/
  38684. var x, y;
  38685. var lam = p.x;
  38686. var phi = p.y;
  38687. lam = adjust_lon(lam - this.long0);
  38688. if (this.sphere) {
  38689. x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));
  38690. y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);
  38691. }
  38692. else {
  38693. //ellipsoid
  38694. var sinphi = Math.sin(phi);
  38695. var cosphi = Math.cos(phi);
  38696. var nl = gN(this.a, this.e, sinphi);
  38697. var tl = Math.tan(phi) * Math.tan(phi);
  38698. var al = lam * Math.cos(phi);
  38699. var asq = al * al;
  38700. var cl = this.es * cosphi * cosphi / (1 - this.es);
  38701. var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);
  38702. x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));
  38703. y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);
  38704. }
  38705. p.x = x + this.x0;
  38706. p.y = y + this.y0;
  38707. return p;
  38708. }
  38709. /* Inverse equations
  38710. -----------------*/
  38711. function cass_inverse(p) {
  38712. p.x -= this.x0;
  38713. p.y -= this.y0;
  38714. var x = p.x / this.a;
  38715. var y = p.y / this.a;
  38716. var phi, lam;
  38717. if (this.sphere) {
  38718. var dd = y + this.lat0;
  38719. phi = Math.asin(Math.sin(dd) * Math.cos(x));
  38720. lam = Math.atan2(Math.tan(x), Math.cos(dd));
  38721. }
  38722. else {
  38723. /* ellipsoid */
  38724. var ml1 = this.ml0 / this.a + y;
  38725. var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);
  38726. if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {
  38727. p.x = this.long0;
  38728. p.y = HALF_PI;
  38729. if (y < 0) {
  38730. p.y *= -1;
  38731. }
  38732. return p;
  38733. }
  38734. var nl1 = gN(this.a, this.e, Math.sin(phi1));
  38735. var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);
  38736. var tl1 = Math.pow(Math.tan(phi1), 2);
  38737. var dl = x * this.a / nl1;
  38738. var dsq = dl * dl;
  38739. phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);
  38740. lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);
  38741. }
  38742. p.x = adjust_lon(lam + this.long0);
  38743. p.y = adjust_lat(phi);
  38744. return p;
  38745. }
  38746. var cass_names = ["Cassini", "Cassini_Soldner", "cass"];
  38747. /* harmony default export */ var cass = ({
  38748. init: cass_init,
  38749. forward: cass_forward,
  38750. inverse: cass_inverse,
  38751. names: cass_names
  38752. });
  38753. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/qsfnz.js
  38754. /* harmony default export */ var qsfnz = (function(eccent, sinphi) {
  38755. var con;
  38756. if (eccent > 1.0e-7) {
  38757. con = eccent * sinphi;
  38758. return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));
  38759. }
  38760. else {
  38761. return (2 * sinphi);
  38762. }
  38763. });
  38764. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/laea.js
  38765. /*
  38766. reference
  38767. "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder,
  38768. The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.
  38769. */
  38770. var S_POLE = 1;
  38771. var N_POLE = 2;
  38772. var EQUIT = 3;
  38773. var OBLIQ = 4;
  38774. /* Initialize the Lambert Azimuthal Equal Area projection
  38775. ------------------------------------------------------*/
  38776. function laea_init() {
  38777. var t = Math.abs(this.lat0);
  38778. if (Math.abs(t - HALF_PI) < EPSLN) {
  38779. this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;
  38780. }
  38781. else if (Math.abs(t) < EPSLN) {
  38782. this.mode = this.EQUIT;
  38783. }
  38784. else {
  38785. this.mode = this.OBLIQ;
  38786. }
  38787. if (this.es > 0) {
  38788. var sinphi;
  38789. this.qp = qsfnz(this.e, 1);
  38790. this.mmf = 0.5 / (1 - this.es);
  38791. this.apa = authset(this.es);
  38792. switch (this.mode) {
  38793. case this.N_POLE:
  38794. this.dd = 1;
  38795. break;
  38796. case this.S_POLE:
  38797. this.dd = 1;
  38798. break;
  38799. case this.EQUIT:
  38800. this.rq = Math.sqrt(0.5 * this.qp);
  38801. this.dd = 1 / this.rq;
  38802. this.xmf = 1;
  38803. this.ymf = 0.5 * this.qp;
  38804. break;
  38805. case this.OBLIQ:
  38806. this.rq = Math.sqrt(0.5 * this.qp);
  38807. sinphi = Math.sin(this.lat0);
  38808. this.sinb1 = qsfnz(this.e, sinphi) / this.qp;
  38809. this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);
  38810. this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);
  38811. this.ymf = (this.xmf = this.rq) / this.dd;
  38812. this.xmf *= this.dd;
  38813. break;
  38814. }
  38815. }
  38816. else {
  38817. if (this.mode === this.OBLIQ) {
  38818. this.sinph0 = Math.sin(this.lat0);
  38819. this.cosph0 = Math.cos(this.lat0);
  38820. }
  38821. }
  38822. }
  38823. /* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y
  38824. -----------------------------------------------------------------------*/
  38825. function laea_forward(p) {
  38826. /* Forward equations
  38827. -----------------*/
  38828. var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;
  38829. var lam = p.x;
  38830. var phi = p.y;
  38831. lam = adjust_lon(lam - this.long0);
  38832. if (this.sphere) {
  38833. sinphi = Math.sin(phi);
  38834. cosphi = Math.cos(phi);
  38835. coslam = Math.cos(lam);
  38836. if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
  38837. y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;
  38838. if (y <= EPSLN) {
  38839. return null;
  38840. }
  38841. y = Math.sqrt(2 / y);
  38842. x = y * cosphi * Math.sin(lam);
  38843. y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;
  38844. }
  38845. else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
  38846. if (this.mode === this.N_POLE) {
  38847. coslam = -coslam;
  38848. }
  38849. if (Math.abs(phi + this.phi0) < EPSLN) {
  38850. return null;
  38851. }
  38852. y = FORTPI - phi * 0.5;
  38853. y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));
  38854. x = y * Math.sin(lam);
  38855. y *= coslam;
  38856. }
  38857. }
  38858. else {
  38859. sinb = 0;
  38860. cosb = 0;
  38861. b = 0;
  38862. coslam = Math.cos(lam);
  38863. sinlam = Math.sin(lam);
  38864. sinphi = Math.sin(phi);
  38865. q = qsfnz(this.e, sinphi);
  38866. if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
  38867. sinb = q / this.qp;
  38868. cosb = Math.sqrt(1 - sinb * sinb);
  38869. }
  38870. switch (this.mode) {
  38871. case this.OBLIQ:
  38872. b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;
  38873. break;
  38874. case this.EQUIT:
  38875. b = 1 + cosb * coslam;
  38876. break;
  38877. case this.N_POLE:
  38878. b = HALF_PI + phi;
  38879. q = this.qp - q;
  38880. break;
  38881. case this.S_POLE:
  38882. b = phi - HALF_PI;
  38883. q = this.qp + q;
  38884. break;
  38885. }
  38886. if (Math.abs(b) < EPSLN) {
  38887. return null;
  38888. }
  38889. switch (this.mode) {
  38890. case this.OBLIQ:
  38891. case this.EQUIT:
  38892. b = Math.sqrt(2 / b);
  38893. if (this.mode === this.OBLIQ) {
  38894. y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);
  38895. }
  38896. else {
  38897. y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;
  38898. }
  38899. x = this.xmf * b * cosb * sinlam;
  38900. break;
  38901. case this.N_POLE:
  38902. case this.S_POLE:
  38903. if (q >= 0) {
  38904. x = (b = Math.sqrt(q)) * sinlam;
  38905. y = coslam * ((this.mode === this.S_POLE) ? b : -b);
  38906. }
  38907. else {
  38908. x = y = 0;
  38909. }
  38910. break;
  38911. }
  38912. }
  38913. p.x = this.a * x + this.x0;
  38914. p.y = this.a * y + this.y0;
  38915. return p;
  38916. }
  38917. /* Inverse equations
  38918. -----------------*/
  38919. function laea_inverse(p) {
  38920. p.x -= this.x0;
  38921. p.y -= this.y0;
  38922. var x = p.x / this.a;
  38923. var y = p.y / this.a;
  38924. var lam, phi, cCe, sCe, q, rho, ab;
  38925. if (this.sphere) {
  38926. var cosz = 0,
  38927. rh, sinz = 0;
  38928. rh = Math.sqrt(x * x + y * y);
  38929. phi = rh * 0.5;
  38930. if (phi > 1) {
  38931. return null;
  38932. }
  38933. phi = 2 * Math.asin(phi);
  38934. if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
  38935. sinz = Math.sin(phi);
  38936. cosz = Math.cos(phi);
  38937. }
  38938. switch (this.mode) {
  38939. case this.EQUIT:
  38940. phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);
  38941. x *= sinz;
  38942. y = cosz * rh;
  38943. break;
  38944. case this.OBLIQ:
  38945. phi = (Math.abs(rh) <= EPSLN) ? this.phi0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);
  38946. x *= sinz * this.cosph0;
  38947. y = (cosz - Math.sin(phi) * this.sinph0) * rh;
  38948. break;
  38949. case this.N_POLE:
  38950. y = -y;
  38951. phi = HALF_PI - phi;
  38952. break;
  38953. case this.S_POLE:
  38954. phi -= HALF_PI;
  38955. break;
  38956. }
  38957. lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);
  38958. }
  38959. else {
  38960. ab = 0;
  38961. if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
  38962. x /= this.dd;
  38963. y *= this.dd;
  38964. rho = Math.sqrt(x * x + y * y);
  38965. if (rho < EPSLN) {
  38966. p.x = 0;
  38967. p.y = this.phi0;
  38968. return p;
  38969. }
  38970. sCe = 2 * Math.asin(0.5 * rho / this.rq);
  38971. cCe = Math.cos(sCe);
  38972. x *= (sCe = Math.sin(sCe));
  38973. if (this.mode === this.OBLIQ) {
  38974. ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;
  38975. q = this.qp * ab;
  38976. y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;
  38977. }
  38978. else {
  38979. ab = y * sCe / rho;
  38980. q = this.qp * ab;
  38981. y = rho * cCe;
  38982. }
  38983. }
  38984. else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
  38985. if (this.mode === this.N_POLE) {
  38986. y = -y;
  38987. }
  38988. q = (x * x + y * y);
  38989. if (!q) {
  38990. p.x = 0;
  38991. p.y = this.phi0;
  38992. return p;
  38993. }
  38994. ab = 1 - q / this.qp;
  38995. if (this.mode === this.S_POLE) {
  38996. ab = -ab;
  38997. }
  38998. }
  38999. lam = Math.atan2(x, y);
  39000. phi = authlat(Math.asin(ab), this.apa);
  39001. }
  39002. p.x = adjust_lon(this.long0 + lam);
  39003. p.y = phi;
  39004. return p;
  39005. }
  39006. /* determine latitude from authalic latitude */
  39007. var P00 = 0.33333333333333333333;
  39008. var P01 = 0.17222222222222222222;
  39009. var P02 = 0.10257936507936507936;
  39010. var P10 = 0.06388888888888888888;
  39011. var P11 = 0.06640211640211640211;
  39012. var P20 = 0.01641501294219154443;
  39013. function authset(es) {
  39014. var t;
  39015. var APA = [];
  39016. APA[0] = es * P00;
  39017. t = es * es;
  39018. APA[0] += t * P01;
  39019. APA[1] = t * P10;
  39020. t *= es;
  39021. APA[0] += t * P02;
  39022. APA[1] += t * P11;
  39023. APA[2] = t * P20;
  39024. return APA;
  39025. }
  39026. function authlat(beta, APA) {
  39027. var t = beta + beta;
  39028. return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));
  39029. }
  39030. var laea_names = ["Lambert Azimuthal Equal Area", "Lambert_Azimuthal_Equal_Area", "laea"];
  39031. /* harmony default export */ var laea = ({
  39032. init: laea_init,
  39033. forward: laea_forward,
  39034. inverse: laea_inverse,
  39035. names: laea_names,
  39036. S_POLE: S_POLE,
  39037. N_POLE: N_POLE,
  39038. EQUIT: EQUIT,
  39039. OBLIQ: OBLIQ
  39040. });
  39041. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/asinz.js
  39042. /* harmony default export */ var asinz = (function(x) {
  39043. if (Math.abs(x) > 1) {
  39044. x = (x > 1) ? 1 : -1;
  39045. }
  39046. return Math.asin(x);
  39047. });
  39048. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/aea.js
  39049. function aea_init() {
  39050. if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
  39051. return;
  39052. }
  39053. this.temp = this.b / this.a;
  39054. this.es = 1 - Math.pow(this.temp, 2);
  39055. this.e3 = Math.sqrt(this.es);
  39056. this.sin_po = Math.sin(this.lat1);
  39057. this.cos_po = Math.cos(this.lat1);
  39058. this.t1 = this.sin_po;
  39059. this.con = this.sin_po;
  39060. this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);
  39061. this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);
  39062. this.sin_po = Math.sin(this.lat2);
  39063. this.cos_po = Math.cos(this.lat2);
  39064. this.t2 = this.sin_po;
  39065. this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);
  39066. this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);
  39067. this.sin_po = Math.sin(this.lat0);
  39068. this.cos_po = Math.cos(this.lat0);
  39069. this.t3 = this.sin_po;
  39070. this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);
  39071. if (Math.abs(this.lat1 - this.lat2) > EPSLN) {
  39072. this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);
  39073. }
  39074. else {
  39075. this.ns0 = this.con;
  39076. }
  39077. this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;
  39078. this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;
  39079. }
  39080. /* Albers Conical Equal Area forward equations--mapping lat,long to x,y
  39081. -------------------------------------------------------------------*/
  39082. function aea_forward(p) {
  39083. var lon = p.x;
  39084. var lat = p.y;
  39085. this.sin_phi = Math.sin(lat);
  39086. this.cos_phi = Math.cos(lat);
  39087. var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);
  39088. var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;
  39089. var theta = this.ns0 * adjust_lon(lon - this.long0);
  39090. var x = rh1 * Math.sin(theta) + this.x0;
  39091. var y = this.rh - rh1 * Math.cos(theta) + this.y0;
  39092. p.x = x;
  39093. p.y = y;
  39094. return p;
  39095. }
  39096. function aea_inverse(p) {
  39097. var rh1, qs, con, theta, lon, lat;
  39098. p.x -= this.x0;
  39099. p.y = this.rh - p.y + this.y0;
  39100. if (this.ns0 >= 0) {
  39101. rh1 = Math.sqrt(p.x * p.x + p.y * p.y);
  39102. con = 1;
  39103. }
  39104. else {
  39105. rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);
  39106. con = -1;
  39107. }
  39108. theta = 0;
  39109. if (rh1 !== 0) {
  39110. theta = Math.atan2(con * p.x, con * p.y);
  39111. }
  39112. con = rh1 * this.ns0 / this.a;
  39113. if (this.sphere) {
  39114. lat = Math.asin((this.c - con * con) / (2 * this.ns0));
  39115. }
  39116. else {
  39117. qs = (this.c - con * con) / this.ns0;
  39118. lat = this.phi1z(this.e3, qs);
  39119. }
  39120. lon = adjust_lon(theta / this.ns0 + this.long0);
  39121. p.x = lon;
  39122. p.y = lat;
  39123. return p;
  39124. }
  39125. /* Function to compute phi1, the latitude for the inverse of the
  39126. Albers Conical Equal-Area projection.
  39127. -------------------------------------------*/
  39128. function phi1z(eccent, qs) {
  39129. var sinphi, cosphi, con, com, dphi;
  39130. var phi = asinz(0.5 * qs);
  39131. if (eccent < EPSLN) {
  39132. return phi;
  39133. }
  39134. var eccnts = eccent * eccent;
  39135. for (var i = 1; i <= 25; i++) {
  39136. sinphi = Math.sin(phi);
  39137. cosphi = Math.cos(phi);
  39138. con = eccent * sinphi;
  39139. com = 1 - con * con;
  39140. dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));
  39141. phi = phi + dphi;
  39142. if (Math.abs(dphi) <= 1e-7) {
  39143. return phi;
  39144. }
  39145. }
  39146. return null;
  39147. }
  39148. var aea_names = ["Albers_Conic_Equal_Area", "Albers", "aea"];
  39149. /* harmony default export */ var aea = ({
  39150. init: aea_init,
  39151. forward: aea_forward,
  39152. inverse: aea_inverse,
  39153. names: aea_names,
  39154. phi1z: phi1z
  39155. });
  39156. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/gnom.js
  39157. /*
  39158. reference:
  39159. Wolfram Mathworld "Gnomonic Projection"
  39160. http://mathworld.wolfram.com/GnomonicProjection.html
  39161. Accessed: 12th November 2009
  39162. */
  39163. function gnom_init() {
  39164. /* Place parameters in static storage for common use
  39165. -------------------------------------------------*/
  39166. this.sin_p14 = Math.sin(this.lat0);
  39167. this.cos_p14 = Math.cos(this.lat0);
  39168. // Approximation for projecting points to the horizon (infinity)
  39169. this.infinity_dist = 1000 * this.a;
  39170. this.rc = 1;
  39171. }
  39172. /* Gnomonic forward equations--mapping lat,long to x,y
  39173. ---------------------------------------------------*/
  39174. function gnom_forward(p) {
  39175. var sinphi, cosphi; /* sin and cos value */
  39176. var dlon; /* delta longitude value */
  39177. var coslon; /* cos of longitude */
  39178. var ksp; /* scale factor */
  39179. var g;
  39180. var x, y;
  39181. var lon = p.x;
  39182. var lat = p.y;
  39183. /* Forward equations
  39184. -----------------*/
  39185. dlon = adjust_lon(lon - this.long0);
  39186. sinphi = Math.sin(lat);
  39187. cosphi = Math.cos(lat);
  39188. coslon = Math.cos(dlon);
  39189. g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;
  39190. ksp = 1;
  39191. if ((g > 0) || (Math.abs(g) <= EPSLN)) {
  39192. x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;
  39193. y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;
  39194. }
  39195. else {
  39196. // Point is in the opposing hemisphere and is unprojectable
  39197. // We still need to return a reasonable point, so we project
  39198. // to infinity, on a bearing
  39199. // equivalent to the northern hemisphere equivalent
  39200. // This is a reasonable approximation for short shapes and lines that
  39201. // straddle the horizon.
  39202. x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);
  39203. y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);
  39204. }
  39205. p.x = x;
  39206. p.y = y;
  39207. return p;
  39208. }
  39209. function gnom_inverse(p) {
  39210. var rh; /* Rho */
  39211. var sinc, cosc;
  39212. var c;
  39213. var lon, lat;
  39214. /* Inverse equations
  39215. -----------------*/
  39216. p.x = (p.x - this.x0) / this.a;
  39217. p.y = (p.y - this.y0) / this.a;
  39218. p.x /= this.k0;
  39219. p.y /= this.k0;
  39220. if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {
  39221. c = Math.atan2(rh, this.rc);
  39222. sinc = Math.sin(c);
  39223. cosc = Math.cos(c);
  39224. lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);
  39225. lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);
  39226. lon = adjust_lon(this.long0 + lon);
  39227. }
  39228. else {
  39229. lat = this.phic0;
  39230. lon = 0;
  39231. }
  39232. p.x = lon;
  39233. p.y = lat;
  39234. return p;
  39235. }
  39236. var gnom_names = ["gnom"];
  39237. /* harmony default export */ var gnom = ({
  39238. init: gnom_init,
  39239. forward: gnom_forward,
  39240. inverse: gnom_inverse,
  39241. names: gnom_names
  39242. });
  39243. // CONCATENATED MODULE: ./node_modules/proj4/lib/common/iqsfnz.js
  39244. /* harmony default export */ var iqsfnz = (function(eccent, q) {
  39245. var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));
  39246. if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {
  39247. if (q < 0) {
  39248. return (-1 * HALF_PI);
  39249. }
  39250. else {
  39251. return HALF_PI;
  39252. }
  39253. }
  39254. //var phi = 0.5* q/(1-eccent*eccent);
  39255. var phi = Math.asin(0.5 * q);
  39256. var dphi;
  39257. var sin_phi;
  39258. var cos_phi;
  39259. var con;
  39260. for (var i = 0; i < 30; i++) {
  39261. sin_phi = Math.sin(phi);
  39262. cos_phi = Math.cos(phi);
  39263. con = eccent * sin_phi;
  39264. dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));
  39265. phi += dphi;
  39266. if (Math.abs(dphi) <= 0.0000000001) {
  39267. return phi;
  39268. }
  39269. }
  39270. //console.log("IQSFN-CONV:Latitude failed to converge after 30 iterations");
  39271. return NaN;
  39272. });
  39273. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/cea.js
  39274. /*
  39275. reference:
  39276. "Cartographic Projection Procedures for the UNIX Environment-
  39277. A User's Manual" by Gerald I. Evenden,
  39278. USGS Open File Report 90-284and Release 4 Interim Reports (2003)
  39279. */
  39280. function cea_init() {
  39281. //no-op
  39282. if (!this.sphere) {
  39283. this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
  39284. }
  39285. }
  39286. /* Cylindrical Equal Area forward equations--mapping lat,long to x,y
  39287. ------------------------------------------------------------*/
  39288. function cea_forward(p) {
  39289. var lon = p.x;
  39290. var lat = p.y;
  39291. var x, y;
  39292. /* Forward equations
  39293. -----------------*/
  39294. var dlon = adjust_lon(lon - this.long0);
  39295. if (this.sphere) {
  39296. x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);
  39297. y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);
  39298. }
  39299. else {
  39300. var qs = qsfnz(this.e, Math.sin(lat));
  39301. x = this.x0 + this.a * this.k0 * dlon;
  39302. y = this.y0 + this.a * qs * 0.5 / this.k0;
  39303. }
  39304. p.x = x;
  39305. p.y = y;
  39306. return p;
  39307. }
  39308. /* Cylindrical Equal Area inverse equations--mapping x,y to lat/long
  39309. ------------------------------------------------------------*/
  39310. function cea_inverse(p) {
  39311. p.x -= this.x0;
  39312. p.y -= this.y0;
  39313. var lon, lat;
  39314. if (this.sphere) {
  39315. lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));
  39316. lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));
  39317. }
  39318. else {
  39319. lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);
  39320. lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));
  39321. }
  39322. p.x = lon;
  39323. p.y = lat;
  39324. return p;
  39325. }
  39326. var cea_names = ["cea"];
  39327. /* harmony default export */ var cea = ({
  39328. init: cea_init,
  39329. forward: cea_forward,
  39330. inverse: cea_inverse,
  39331. names: cea_names
  39332. });
  39333. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/eqc.js
  39334. function eqc_init() {
  39335. this.x0 = this.x0 || 0;
  39336. this.y0 = this.y0 || 0;
  39337. this.lat0 = this.lat0 || 0;
  39338. this.long0 = this.long0 || 0;
  39339. this.lat_ts = this.lat_ts || 0;
  39340. this.title = this.title || "Equidistant Cylindrical (Plate Carre)";
  39341. this.rc = Math.cos(this.lat_ts);
  39342. }
  39343. // forward equations--mapping lat,long to x,y
  39344. // -----------------------------------------------------------------
  39345. function eqc_forward(p) {
  39346. var lon = p.x;
  39347. var lat = p.y;
  39348. var dlon = adjust_lon(lon - this.long0);
  39349. var dlat = adjust_lat(lat - this.lat0);
  39350. p.x = this.x0 + (this.a * dlon * this.rc);
  39351. p.y = this.y0 + (this.a * dlat);
  39352. return p;
  39353. }
  39354. // inverse equations--mapping x,y to lat/long
  39355. // -----------------------------------------------------------------
  39356. function eqc_inverse(p) {
  39357. var x = p.x;
  39358. var y = p.y;
  39359. p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));
  39360. p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));
  39361. return p;
  39362. }
  39363. var eqc_names = ["Equirectangular", "Equidistant_Cylindrical", "eqc"];
  39364. /* harmony default export */ var eqc = ({
  39365. init: eqc_init,
  39366. forward: eqc_forward,
  39367. inverse: eqc_inverse,
  39368. names: eqc_names
  39369. });
  39370. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/poly.js
  39371. var poly_MAX_ITER = 20;
  39372. function poly_init() {
  39373. /* Place parameters in static storage for common use
  39374. -------------------------------------------------*/
  39375. this.temp = this.b / this.a;
  39376. this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles
  39377. this.e = Math.sqrt(this.es);
  39378. this.e0 = e0fn(this.es);
  39379. this.e1 = e1fn(this.es);
  39380. this.e2 = e2fn(this.es);
  39381. this.e3 = e3fn(this.es);
  39382. this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas
  39383. }
  39384. /* Polyconic forward equations--mapping lat,long to x,y
  39385. ---------------------------------------------------*/
  39386. function poly_forward(p) {
  39387. var lon = p.x;
  39388. var lat = p.y;
  39389. var x, y, el;
  39390. var dlon = adjust_lon(lon - this.long0);
  39391. el = dlon * Math.sin(lat);
  39392. if (this.sphere) {
  39393. if (Math.abs(lat) <= EPSLN) {
  39394. x = this.a * dlon;
  39395. y = -1 * this.a * this.lat0;
  39396. }
  39397. else {
  39398. x = this.a * Math.sin(el) / Math.tan(lat);
  39399. y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));
  39400. }
  39401. }
  39402. else {
  39403. if (Math.abs(lat) <= EPSLN) {
  39404. x = this.a * dlon;
  39405. y = -1 * this.ml0;
  39406. }
  39407. else {
  39408. var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);
  39409. x = nl * Math.sin(el);
  39410. y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));
  39411. }
  39412. }
  39413. p.x = x + this.x0;
  39414. p.y = y + this.y0;
  39415. return p;
  39416. }
  39417. /* Inverse equations
  39418. -----------------*/
  39419. function poly_inverse(p) {
  39420. var lon, lat, x, y, i;
  39421. var al, bl;
  39422. var phi, dphi;
  39423. x = p.x - this.x0;
  39424. y = p.y - this.y0;
  39425. if (this.sphere) {
  39426. if (Math.abs(y + this.a * this.lat0) <= EPSLN) {
  39427. lon = adjust_lon(x / this.a + this.long0);
  39428. lat = 0;
  39429. }
  39430. else {
  39431. al = this.lat0 + y / this.a;
  39432. bl = x * x / this.a / this.a + al * al;
  39433. phi = al;
  39434. var tanphi;
  39435. for (i = poly_MAX_ITER; i; --i) {
  39436. tanphi = Math.tan(phi);
  39437. dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);
  39438. phi += dphi;
  39439. if (Math.abs(dphi) <= EPSLN) {
  39440. lat = phi;
  39441. break;
  39442. }
  39443. }
  39444. lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));
  39445. }
  39446. }
  39447. else {
  39448. if (Math.abs(y + this.ml0) <= EPSLN) {
  39449. lat = 0;
  39450. lon = adjust_lon(this.long0 + x / this.a);
  39451. }
  39452. else {
  39453. al = (this.ml0 + y) / this.a;
  39454. bl = x * x / this.a / this.a + al * al;
  39455. phi = al;
  39456. var cl, mln, mlnp, ma;
  39457. var con;
  39458. for (i = poly_MAX_ITER; i; --i) {
  39459. con = this.e * Math.sin(phi);
  39460. cl = Math.sqrt(1 - con * con) * Math.tan(phi);
  39461. mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);
  39462. mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);
  39463. ma = mln / this.a;
  39464. dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);
  39465. phi -= dphi;
  39466. if (Math.abs(dphi) <= EPSLN) {
  39467. lat = phi;
  39468. break;
  39469. }
  39470. }
  39471. //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);
  39472. cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);
  39473. lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));
  39474. }
  39475. }
  39476. p.x = lon;
  39477. p.y = lat;
  39478. return p;
  39479. }
  39480. var poly_names = ["Polyconic", "poly"];
  39481. /* harmony default export */ var poly = ({
  39482. init: poly_init,
  39483. forward: poly_forward,
  39484. inverse: poly_inverse,
  39485. names: poly_names
  39486. });
  39487. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/nzmg.js
  39488. /*
  39489. reference
  39490. Department of Land and Survey Technical Circular 1973/32
  39491. http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf
  39492. OSG Technical Report 4.1
  39493. http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf
  39494. */
  39495. /**
  39496. * iterations: Number of iterations to refine inverse transform.
  39497. * 0 -> km accuracy
  39498. * 1 -> m accuracy -- suitable for most mapping applications
  39499. * 2 -> mm accuracy
  39500. */
  39501. var iterations = 1;
  39502. function nzmg_init() {
  39503. this.A = [];
  39504. this.A[1] = 0.6399175073;
  39505. this.A[2] = -0.1358797613;
  39506. this.A[3] = 0.063294409;
  39507. this.A[4] = -0.02526853;
  39508. this.A[5] = 0.0117879;
  39509. this.A[6] = -0.0055161;
  39510. this.A[7] = 0.0026906;
  39511. this.A[8] = -0.001333;
  39512. this.A[9] = 0.00067;
  39513. this.A[10] = -0.00034;
  39514. this.B_re = [];
  39515. this.B_im = [];
  39516. this.B_re[1] = 0.7557853228;
  39517. this.B_im[1] = 0;
  39518. this.B_re[2] = 0.249204646;
  39519. this.B_im[2] = 0.003371507;
  39520. this.B_re[3] = -0.001541739;
  39521. this.B_im[3] = 0.041058560;
  39522. this.B_re[4] = -0.10162907;
  39523. this.B_im[4] = 0.01727609;
  39524. this.B_re[5] = -0.26623489;
  39525. this.B_im[5] = -0.36249218;
  39526. this.B_re[6] = -0.6870983;
  39527. this.B_im[6] = -1.1651967;
  39528. this.C_re = [];
  39529. this.C_im = [];
  39530. this.C_re[1] = 1.3231270439;
  39531. this.C_im[1] = 0;
  39532. this.C_re[2] = -0.577245789;
  39533. this.C_im[2] = -0.007809598;
  39534. this.C_re[3] = 0.508307513;
  39535. this.C_im[3] = -0.112208952;
  39536. this.C_re[4] = -0.15094762;
  39537. this.C_im[4] = 0.18200602;
  39538. this.C_re[5] = 1.01418179;
  39539. this.C_im[5] = 1.64497696;
  39540. this.C_re[6] = 1.9660549;
  39541. this.C_im[6] = 2.5127645;
  39542. this.D = [];
  39543. this.D[1] = 1.5627014243;
  39544. this.D[2] = 0.5185406398;
  39545. this.D[3] = -0.03333098;
  39546. this.D[4] = -0.1052906;
  39547. this.D[5] = -0.0368594;
  39548. this.D[6] = 0.007317;
  39549. this.D[7] = 0.01220;
  39550. this.D[8] = 0.00394;
  39551. this.D[9] = -0.0013;
  39552. }
  39553. /**
  39554. New Zealand Map Grid Forward - long/lat to x/y
  39555. long/lat in radians
  39556. */
  39557. function nzmg_forward(p) {
  39558. var n;
  39559. var lon = p.x;
  39560. var lat = p.y;
  39561. var delta_lat = lat - this.lat0;
  39562. var delta_lon = lon - this.long0;
  39563. // 1. Calculate d_phi and d_psi ... // and d_lambda
  39564. // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.
  39565. var d_phi = delta_lat / SEC_TO_RAD * 1E-5;
  39566. var d_lambda = delta_lon;
  39567. var d_phi_n = 1; // d_phi^0
  39568. var d_psi = 0;
  39569. for (n = 1; n <= 10; n++) {
  39570. d_phi_n = d_phi_n * d_phi;
  39571. d_psi = d_psi + this.A[n] * d_phi_n;
  39572. }
  39573. // 2. Calculate theta
  39574. var th_re = d_psi;
  39575. var th_im = d_lambda;
  39576. // 3. Calculate z
  39577. var th_n_re = 1;
  39578. var th_n_im = 0; // theta^0
  39579. var th_n_re1;
  39580. var th_n_im1;
  39581. var z_re = 0;
  39582. var z_im = 0;
  39583. for (n = 1; n <= 6; n++) {
  39584. th_n_re1 = th_n_re * th_re - th_n_im * th_im;
  39585. th_n_im1 = th_n_im * th_re + th_n_re * th_im;
  39586. th_n_re = th_n_re1;
  39587. th_n_im = th_n_im1;
  39588. z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;
  39589. z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;
  39590. }
  39591. // 4. Calculate easting and northing
  39592. p.x = (z_im * this.a) + this.x0;
  39593. p.y = (z_re * this.a) + this.y0;
  39594. return p;
  39595. }
  39596. /**
  39597. New Zealand Map Grid Inverse - x/y to long/lat
  39598. */
  39599. function nzmg_inverse(p) {
  39600. var n;
  39601. var x = p.x;
  39602. var y = p.y;
  39603. var delta_x = x - this.x0;
  39604. var delta_y = y - this.y0;
  39605. // 1. Calculate z
  39606. var z_re = delta_y / this.a;
  39607. var z_im = delta_x / this.a;
  39608. // 2a. Calculate theta - first approximation gives km accuracy
  39609. var z_n_re = 1;
  39610. var z_n_im = 0; // z^0
  39611. var z_n_re1;
  39612. var z_n_im1;
  39613. var th_re = 0;
  39614. var th_im = 0;
  39615. for (n = 1; n <= 6; n++) {
  39616. z_n_re1 = z_n_re * z_re - z_n_im * z_im;
  39617. z_n_im1 = z_n_im * z_re + z_n_re * z_im;
  39618. z_n_re = z_n_re1;
  39619. z_n_im = z_n_im1;
  39620. th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;
  39621. th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;
  39622. }
  39623. // 2b. Iterate to refine the accuracy of the calculation
  39624. // 0 iterations gives km accuracy
  39625. // 1 iteration gives m accuracy -- good enough for most mapping applications
  39626. // 2 iterations bives mm accuracy
  39627. for (var i = 0; i < this.iterations; i++) {
  39628. var th_n_re = th_re;
  39629. var th_n_im = th_im;
  39630. var th_n_re1;
  39631. var th_n_im1;
  39632. var num_re = z_re;
  39633. var num_im = z_im;
  39634. for (n = 2; n <= 6; n++) {
  39635. th_n_re1 = th_n_re * th_re - th_n_im * th_im;
  39636. th_n_im1 = th_n_im * th_re + th_n_re * th_im;
  39637. th_n_re = th_n_re1;
  39638. th_n_im = th_n_im1;
  39639. num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);
  39640. num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);
  39641. }
  39642. th_n_re = 1;
  39643. th_n_im = 0;
  39644. var den_re = this.B_re[1];
  39645. var den_im = this.B_im[1];
  39646. for (n = 2; n <= 6; n++) {
  39647. th_n_re1 = th_n_re * th_re - th_n_im * th_im;
  39648. th_n_im1 = th_n_im * th_re + th_n_re * th_im;
  39649. th_n_re = th_n_re1;
  39650. th_n_im = th_n_im1;
  39651. den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);
  39652. den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);
  39653. }
  39654. // Complex division
  39655. var den2 = den_re * den_re + den_im * den_im;
  39656. th_re = (num_re * den_re + num_im * den_im) / den2;
  39657. th_im = (num_im * den_re - num_re * den_im) / den2;
  39658. }
  39659. // 3. Calculate d_phi ... // and d_lambda
  39660. var d_psi = th_re;
  39661. var d_lambda = th_im;
  39662. var d_psi_n = 1; // d_psi^0
  39663. var d_phi = 0;
  39664. for (n = 1; n <= 9; n++) {
  39665. d_psi_n = d_psi_n * d_psi;
  39666. d_phi = d_phi + this.D[n] * d_psi_n;
  39667. }
  39668. // 4. Calculate latitude and longitude
  39669. // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.
  39670. var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);
  39671. var lon = this.long0 + d_lambda;
  39672. p.x = lon;
  39673. p.y = lat;
  39674. return p;
  39675. }
  39676. var nzmg_names = ["New_Zealand_Map_Grid", "nzmg"];
  39677. /* harmony default export */ var nzmg = ({
  39678. init: nzmg_init,
  39679. forward: nzmg_forward,
  39680. inverse: nzmg_inverse,
  39681. names: nzmg_names
  39682. });
  39683. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/mill.js
  39684. /*
  39685. reference
  39686. "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder,
  39687. The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.
  39688. */
  39689. /* Initialize the Miller Cylindrical projection
  39690. -------------------------------------------*/
  39691. function mill_init() {
  39692. //no-op
  39693. }
  39694. /* Miller Cylindrical forward equations--mapping lat,long to x,y
  39695. ------------------------------------------------------------*/
  39696. function mill_forward(p) {
  39697. var lon = p.x;
  39698. var lat = p.y;
  39699. /* Forward equations
  39700. -----------------*/
  39701. var dlon = adjust_lon(lon - this.long0);
  39702. var x = this.x0 + this.a * dlon;
  39703. var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;
  39704. p.x = x;
  39705. p.y = y;
  39706. return p;
  39707. }
  39708. /* Miller Cylindrical inverse equations--mapping x,y to lat/long
  39709. ------------------------------------------------------------*/
  39710. function mill_inverse(p) {
  39711. p.x -= this.x0;
  39712. p.y -= this.y0;
  39713. var lon = adjust_lon(this.long0 + p.x / this.a);
  39714. var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);
  39715. p.x = lon;
  39716. p.y = lat;
  39717. return p;
  39718. }
  39719. var mill_names = ["Miller_Cylindrical", "mill"];
  39720. /* harmony default export */ var mill = ({
  39721. init: mill_init,
  39722. forward: mill_forward,
  39723. inverse: mill_inverse,
  39724. names: mill_names
  39725. });
  39726. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/sinu.js
  39727. var sinu_MAX_ITER = 20;
  39728. function sinu_init() {
  39729. /* Place parameters in static storage for common use
  39730. -------------------------------------------------*/
  39731. if (!this.sphere) {
  39732. this.en = pj_enfn(this.es);
  39733. }
  39734. else {
  39735. this.n = 1;
  39736. this.m = 0;
  39737. this.es = 0;
  39738. this.C_y = Math.sqrt((this.m + 1) / this.n);
  39739. this.C_x = this.C_y / (this.m + 1);
  39740. }
  39741. }
  39742. /* Sinusoidal forward equations--mapping lat,long to x,y
  39743. -----------------------------------------------------*/
  39744. function sinu_forward(p) {
  39745. var x, y;
  39746. var lon = p.x;
  39747. var lat = p.y;
  39748. /* Forward equations
  39749. -----------------*/
  39750. lon = adjust_lon(lon - this.long0);
  39751. if (this.sphere) {
  39752. if (!this.m) {
  39753. lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;
  39754. }
  39755. else {
  39756. var k = this.n * Math.sin(lat);
  39757. for (var i = sinu_MAX_ITER; i; --i) {
  39758. var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));
  39759. lat -= V;
  39760. if (Math.abs(V) < EPSLN) {
  39761. break;
  39762. }
  39763. }
  39764. }
  39765. x = this.a * this.C_x * lon * (this.m + Math.cos(lat));
  39766. y = this.a * this.C_y * lat;
  39767. }
  39768. else {
  39769. var s = Math.sin(lat);
  39770. var c = Math.cos(lat);
  39771. y = this.a * pj_mlfn(lat, s, c, this.en);
  39772. x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);
  39773. }
  39774. p.x = x;
  39775. p.y = y;
  39776. return p;
  39777. }
  39778. function sinu_inverse(p) {
  39779. var lat, temp, lon, s;
  39780. p.x -= this.x0;
  39781. lon = p.x / this.a;
  39782. p.y -= this.y0;
  39783. lat = p.y / this.a;
  39784. if (this.sphere) {
  39785. lat /= this.C_y;
  39786. lon = lon / (this.C_x * (this.m + Math.cos(lat)));
  39787. if (this.m) {
  39788. lat = asinz((this.m * lat + Math.sin(lat)) / this.n);
  39789. }
  39790. else if (this.n !== 1) {
  39791. lat = asinz(Math.sin(lat) / this.n);
  39792. }
  39793. lon = adjust_lon(lon + this.long0);
  39794. lat = adjust_lat(lat);
  39795. }
  39796. else {
  39797. lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);
  39798. s = Math.abs(lat);
  39799. if (s < HALF_PI) {
  39800. s = Math.sin(lat);
  39801. temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));
  39802. //temp = this.long0 + p.x / (this.a * Math.cos(lat));
  39803. lon = adjust_lon(temp);
  39804. }
  39805. else if ((s - EPSLN) < HALF_PI) {
  39806. lon = this.long0;
  39807. }
  39808. }
  39809. p.x = lon;
  39810. p.y = lat;
  39811. return p;
  39812. }
  39813. var sinu_names = ["Sinusoidal", "sinu"];
  39814. /* harmony default export */ var sinu = ({
  39815. init: sinu_init,
  39816. forward: sinu_forward,
  39817. inverse: sinu_inverse,
  39818. names: sinu_names
  39819. });
  39820. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/moll.js
  39821. function moll_init() {}
  39822. /* Mollweide forward equations--mapping lat,long to x,y
  39823. ----------------------------------------------------*/
  39824. function moll_forward(p) {
  39825. /* Forward equations
  39826. -----------------*/
  39827. var lon = p.x;
  39828. var lat = p.y;
  39829. var delta_lon = adjust_lon(lon - this.long0);
  39830. var theta = lat;
  39831. var con = Math.PI * Math.sin(lat);
  39832. /* Iterate using the Newton-Raphson method to find theta
  39833. -----------------------------------------------------*/
  39834. while (true) {
  39835. var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));
  39836. theta += delta_theta;
  39837. if (Math.abs(delta_theta) < EPSLN) {
  39838. break;
  39839. }
  39840. }
  39841. theta /= 2;
  39842. /* If the latitude is 90 deg, force the x coordinate to be "0 + false easting"
  39843. this is done here because of precision problems with "cos(theta)"
  39844. --------------------------------------------------------------------------*/
  39845. if (Math.PI / 2 - Math.abs(lat) < EPSLN) {
  39846. delta_lon = 0;
  39847. }
  39848. var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;
  39849. var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;
  39850. p.x = x;
  39851. p.y = y;
  39852. return p;
  39853. }
  39854. function moll_inverse(p) {
  39855. var theta;
  39856. var arg;
  39857. /* Inverse equations
  39858. -----------------*/
  39859. p.x -= this.x0;
  39860. p.y -= this.y0;
  39861. arg = p.y / (1.4142135623731 * this.a);
  39862. /* Because of division by zero problems, 'arg' can not be 1. Therefore
  39863. a number very close to one is used instead.
  39864. -------------------------------------------------------------------*/
  39865. if (Math.abs(arg) > 0.999999999999) {
  39866. arg = 0.999999999999;
  39867. }
  39868. theta = Math.asin(arg);
  39869. var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));
  39870. if (lon < (-Math.PI)) {
  39871. lon = -Math.PI;
  39872. }
  39873. if (lon > Math.PI) {
  39874. lon = Math.PI;
  39875. }
  39876. arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;
  39877. if (Math.abs(arg) > 1) {
  39878. arg = 1;
  39879. }
  39880. var lat = Math.asin(arg);
  39881. p.x = lon;
  39882. p.y = lat;
  39883. return p;
  39884. }
  39885. var moll_names = ["Mollweide", "moll"];
  39886. /* harmony default export */ var moll = ({
  39887. init: moll_init,
  39888. forward: moll_forward,
  39889. inverse: moll_inverse,
  39890. names: moll_names
  39891. });
  39892. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/eqdc.js
  39893. function eqdc_init() {
  39894. /* Place parameters in static storage for common use
  39895. -------------------------------------------------*/
  39896. // Standard Parallels cannot be equal and on opposite sides of the equator
  39897. if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
  39898. return;
  39899. }
  39900. this.lat2 = this.lat2 || this.lat1;
  39901. this.temp = this.b / this.a;
  39902. this.es = 1 - Math.pow(this.temp, 2);
  39903. this.e = Math.sqrt(this.es);
  39904. this.e0 = e0fn(this.es);
  39905. this.e1 = e1fn(this.es);
  39906. this.e2 = e2fn(this.es);
  39907. this.e3 = e3fn(this.es);
  39908. this.sinphi = Math.sin(this.lat1);
  39909. this.cosphi = Math.cos(this.lat1);
  39910. this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);
  39911. this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);
  39912. if (Math.abs(this.lat1 - this.lat2) < EPSLN) {
  39913. this.ns = this.sinphi;
  39914. }
  39915. else {
  39916. this.sinphi = Math.sin(this.lat2);
  39917. this.cosphi = Math.cos(this.lat2);
  39918. this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);
  39919. this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);
  39920. this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);
  39921. }
  39922. this.g = this.ml1 + this.ms1 / this.ns;
  39923. this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
  39924. this.rh = this.a * (this.g - this.ml0);
  39925. }
  39926. /* Equidistant Conic forward equations--mapping lat,long to x,y
  39927. -----------------------------------------------------------*/
  39928. function eqdc_forward(p) {
  39929. var lon = p.x;
  39930. var lat = p.y;
  39931. var rh1;
  39932. /* Forward equations
  39933. -----------------*/
  39934. if (this.sphere) {
  39935. rh1 = this.a * (this.g - lat);
  39936. }
  39937. else {
  39938. var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);
  39939. rh1 = this.a * (this.g - ml);
  39940. }
  39941. var theta = this.ns * adjust_lon(lon - this.long0);
  39942. var x = this.x0 + rh1 * Math.sin(theta);
  39943. var y = this.y0 + this.rh - rh1 * Math.cos(theta);
  39944. p.x = x;
  39945. p.y = y;
  39946. return p;
  39947. }
  39948. /* Inverse equations
  39949. -----------------*/
  39950. function eqdc_inverse(p) {
  39951. p.x -= this.x0;
  39952. p.y = this.rh - p.y + this.y0;
  39953. var con, rh1, lat, lon;
  39954. if (this.ns >= 0) {
  39955. rh1 = Math.sqrt(p.x * p.x + p.y * p.y);
  39956. con = 1;
  39957. }
  39958. else {
  39959. rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);
  39960. con = -1;
  39961. }
  39962. var theta = 0;
  39963. if (rh1 !== 0) {
  39964. theta = Math.atan2(con * p.x, con * p.y);
  39965. }
  39966. if (this.sphere) {
  39967. lon = adjust_lon(this.long0 + theta / this.ns);
  39968. lat = adjust_lat(this.g - rh1 / this.a);
  39969. p.x = lon;
  39970. p.y = lat;
  39971. return p;
  39972. }
  39973. else {
  39974. var ml = this.g - rh1 / this.a;
  39975. lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);
  39976. lon = adjust_lon(this.long0 + theta / this.ns);
  39977. p.x = lon;
  39978. p.y = lat;
  39979. return p;
  39980. }
  39981. }
  39982. var eqdc_names = ["Equidistant_Conic", "eqdc"];
  39983. /* harmony default export */ var eqdc = ({
  39984. init: eqdc_init,
  39985. forward: eqdc_forward,
  39986. inverse: eqdc_inverse,
  39987. names: eqdc_names
  39988. });
  39989. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/vandg.js
  39990. /* Initialize the Van Der Grinten projection
  39991. ----------------------------------------*/
  39992. function vandg_init() {
  39993. //this.R = 6370997; //Radius of earth
  39994. this.R = this.a;
  39995. }
  39996. function vandg_forward(p) {
  39997. var lon = p.x;
  39998. var lat = p.y;
  39999. /* Forward equations
  40000. -----------------*/
  40001. var dlon = adjust_lon(lon - this.long0);
  40002. var x, y;
  40003. if (Math.abs(lat) <= EPSLN) {
  40004. x = this.x0 + this.R * dlon;
  40005. y = this.y0;
  40006. }
  40007. var theta = asinz(2 * Math.abs(lat / Math.PI));
  40008. if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {
  40009. x = this.x0;
  40010. if (lat >= 0) {
  40011. y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);
  40012. }
  40013. else {
  40014. y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);
  40015. }
  40016. // return(OK);
  40017. }
  40018. var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));
  40019. var asq = al * al;
  40020. var sinth = Math.sin(theta);
  40021. var costh = Math.cos(theta);
  40022. var g = costh / (sinth + costh - 1);
  40023. var gsq = g * g;
  40024. var m = g * (2 / sinth - 1);
  40025. var msq = m * m;
  40026. var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);
  40027. if (dlon < 0) {
  40028. con = -con;
  40029. }
  40030. x = this.x0 + con;
  40031. //con = Math.abs(con / (Math.PI * this.R));
  40032. var q = asq + g;
  40033. con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);
  40034. if (lat >= 0) {
  40035. //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);
  40036. y = this.y0 + con;
  40037. }
  40038. else {
  40039. //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);
  40040. y = this.y0 - con;
  40041. }
  40042. p.x = x;
  40043. p.y = y;
  40044. return p;
  40045. }
  40046. /* Van Der Grinten inverse equations--mapping x,y to lat/long
  40047. ---------------------------------------------------------*/
  40048. function vandg_inverse(p) {
  40049. var lon, lat;
  40050. var xx, yy, xys, c1, c2, c3;
  40051. var a1;
  40052. var m1;
  40053. var con;
  40054. var th1;
  40055. var d;
  40056. /* inverse equations
  40057. -----------------*/
  40058. p.x -= this.x0;
  40059. p.y -= this.y0;
  40060. con = Math.PI * this.R;
  40061. xx = p.x / con;
  40062. yy = p.y / con;
  40063. xys = xx * xx + yy * yy;
  40064. c1 = -Math.abs(yy) * (1 + xys);
  40065. c2 = c1 - 2 * yy * yy + xx * xx;
  40066. c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;
  40067. d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;
  40068. a1 = (c1 - c2 * c2 / 3 / c3) / c3;
  40069. m1 = 2 * Math.sqrt(-a1 / 3);
  40070. con = ((3 * d) / a1) / m1;
  40071. if (Math.abs(con) > 1) {
  40072. if (con >= 0) {
  40073. con = 1;
  40074. }
  40075. else {
  40076. con = -1;
  40077. }
  40078. }
  40079. th1 = Math.acos(con) / 3;
  40080. if (p.y >= 0) {
  40081. lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;
  40082. }
  40083. else {
  40084. lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;
  40085. }
  40086. if (Math.abs(xx) < EPSLN) {
  40087. lon = this.long0;
  40088. }
  40089. else {
  40090. lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);
  40091. }
  40092. p.x = lon;
  40093. p.y = lat;
  40094. return p;
  40095. }
  40096. var vandg_names = ["Van_der_Grinten_I", "VanDerGrinten", "vandg"];
  40097. /* harmony default export */ var vandg = ({
  40098. init: vandg_init,
  40099. forward: vandg_forward,
  40100. inverse: vandg_inverse,
  40101. names: vandg_names
  40102. });
  40103. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/aeqd.js
  40104. function aeqd_init() {
  40105. this.sin_p12 = Math.sin(this.lat0);
  40106. this.cos_p12 = Math.cos(this.lat0);
  40107. }
  40108. function aeqd_forward(p) {
  40109. var lon = p.x;
  40110. var lat = p.y;
  40111. var sinphi = Math.sin(p.y);
  40112. var cosphi = Math.cos(p.y);
  40113. var dlon = adjust_lon(lon - this.long0);
  40114. var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;
  40115. if (this.sphere) {
  40116. if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
  40117. //North Pole case
  40118. p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);
  40119. p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);
  40120. return p;
  40121. }
  40122. else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
  40123. //South Pole case
  40124. p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);
  40125. p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);
  40126. return p;
  40127. }
  40128. else {
  40129. //default case
  40130. cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);
  40131. c = Math.acos(cos_c);
  40132. kp = c / Math.sin(c);
  40133. p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);
  40134. p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));
  40135. return p;
  40136. }
  40137. }
  40138. else {
  40139. e0 = e0fn(this.es);
  40140. e1 = e1fn(this.es);
  40141. e2 = e2fn(this.es);
  40142. e3 = e3fn(this.es);
  40143. if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
  40144. //North Pole case
  40145. Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
  40146. Ml = this.a * mlfn(e0, e1, e2, e3, lat);
  40147. p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);
  40148. p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);
  40149. return p;
  40150. }
  40151. else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
  40152. //South Pole case
  40153. Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
  40154. Ml = this.a * mlfn(e0, e1, e2, e3, lat);
  40155. p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);
  40156. p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);
  40157. return p;
  40158. }
  40159. else {
  40160. //Default case
  40161. tanphi = sinphi / cosphi;
  40162. Nl1 = gN(this.a, this.e, this.sin_p12);
  40163. Nl = gN(this.a, this.e, sinphi);
  40164. psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));
  40165. Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));
  40166. if (Az === 0) {
  40167. s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));
  40168. }
  40169. else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {
  40170. s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));
  40171. }
  40172. else {
  40173. s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));
  40174. }
  40175. G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);
  40176. H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);
  40177. GH = G * H;
  40178. Hs = H * H;
  40179. s2 = s * s;
  40180. s3 = s2 * s;
  40181. s4 = s3 * s;
  40182. s5 = s4 * s;
  40183. c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);
  40184. p.x = this.x0 + c * Math.sin(Az);
  40185. p.y = this.y0 + c * Math.cos(Az);
  40186. return p;
  40187. }
  40188. }
  40189. }
  40190. function aeqd_inverse(p) {
  40191. p.x -= this.x0;
  40192. p.y -= this.y0;
  40193. var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F;
  40194. if (this.sphere) {
  40195. rh = Math.sqrt(p.x * p.x + p.y * p.y);
  40196. if (rh > (2 * HALF_PI * this.a)) {
  40197. return;
  40198. }
  40199. z = rh / this.a;
  40200. sinz = Math.sin(z);
  40201. cosz = Math.cos(z);
  40202. lon = this.long0;
  40203. if (Math.abs(rh) <= EPSLN) {
  40204. lat = this.lat0;
  40205. }
  40206. else {
  40207. lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);
  40208. con = Math.abs(this.lat0) - HALF_PI;
  40209. if (Math.abs(con) <= EPSLN) {
  40210. if (this.lat0 >= 0) {
  40211. lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));
  40212. }
  40213. else {
  40214. lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));
  40215. }
  40216. }
  40217. else {
  40218. /*con = cosz - this.sin_p12 * Math.sin(lat);
  40219. if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {
  40220. //no-op, just keep the lon value as is
  40221. } else {
  40222. var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));
  40223. lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));
  40224. }*/
  40225. lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));
  40226. }
  40227. }
  40228. p.x = lon;
  40229. p.y = lat;
  40230. return p;
  40231. }
  40232. else {
  40233. e0 = e0fn(this.es);
  40234. e1 = e1fn(this.es);
  40235. e2 = e2fn(this.es);
  40236. e3 = e3fn(this.es);
  40237. if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
  40238. //North pole case
  40239. Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
  40240. rh = Math.sqrt(p.x * p.x + p.y * p.y);
  40241. M = Mlp - rh;
  40242. lat = imlfn(M / this.a, e0, e1, e2, e3);
  40243. lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));
  40244. p.x = lon;
  40245. p.y = lat;
  40246. return p;
  40247. }
  40248. else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
  40249. //South pole case
  40250. Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
  40251. rh = Math.sqrt(p.x * p.x + p.y * p.y);
  40252. M = rh - Mlp;
  40253. lat = imlfn(M / this.a, e0, e1, e2, e3);
  40254. lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));
  40255. p.x = lon;
  40256. p.y = lat;
  40257. return p;
  40258. }
  40259. else {
  40260. //default case
  40261. rh = Math.sqrt(p.x * p.x + p.y * p.y);
  40262. Az = Math.atan2(p.x, p.y);
  40263. N1 = gN(this.a, this.e, this.sin_p12);
  40264. cosAz = Math.cos(Az);
  40265. tmp = this.e * this.cos_p12 * cosAz;
  40266. A = -tmp * tmp / (1 - this.es);
  40267. B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);
  40268. D = rh / N1;
  40269. Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;
  40270. F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;
  40271. psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);
  40272. lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));
  40273. lat = Math.atan((1 - this.es * F * this.sin_p12 / Math.sin(psi)) * Math.tan(psi) / (1 - this.es));
  40274. p.x = lon;
  40275. p.y = lat;
  40276. return p;
  40277. }
  40278. }
  40279. }
  40280. var aeqd_names = ["Azimuthal_Equidistant", "aeqd"];
  40281. /* harmony default export */ var aeqd = ({
  40282. init: aeqd_init,
  40283. forward: aeqd_forward,
  40284. inverse: aeqd_inverse,
  40285. names: aeqd_names
  40286. });
  40287. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/ortho.js
  40288. function ortho_init() {
  40289. //double temp; /* temporary variable */
  40290. /* Place parameters in static storage for common use
  40291. -------------------------------------------------*/
  40292. this.sin_p14 = Math.sin(this.lat0);
  40293. this.cos_p14 = Math.cos(this.lat0);
  40294. }
  40295. /* Orthographic forward equations--mapping lat,long to x,y
  40296. ---------------------------------------------------*/
  40297. function ortho_forward(p) {
  40298. var sinphi, cosphi; /* sin and cos value */
  40299. var dlon; /* delta longitude value */
  40300. var coslon; /* cos of longitude */
  40301. var ksp; /* scale factor */
  40302. var g, x, y;
  40303. var lon = p.x;
  40304. var lat = p.y;
  40305. /* Forward equations
  40306. -----------------*/
  40307. dlon = adjust_lon(lon - this.long0);
  40308. sinphi = Math.sin(lat);
  40309. cosphi = Math.cos(lat);
  40310. coslon = Math.cos(dlon);
  40311. g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;
  40312. ksp = 1;
  40313. if ((g > 0) || (Math.abs(g) <= EPSLN)) {
  40314. x = this.a * ksp * cosphi * Math.sin(dlon);
  40315. y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);
  40316. }
  40317. p.x = x;
  40318. p.y = y;
  40319. return p;
  40320. }
  40321. function ortho_inverse(p) {
  40322. var rh; /* height above ellipsoid */
  40323. var z; /* angle */
  40324. var sinz, cosz; /* sin of z and cos of z */
  40325. var con;
  40326. var lon, lat;
  40327. /* Inverse equations
  40328. -----------------*/
  40329. p.x -= this.x0;
  40330. p.y -= this.y0;
  40331. rh = Math.sqrt(p.x * p.x + p.y * p.y);
  40332. z = asinz(rh / this.a);
  40333. sinz = Math.sin(z);
  40334. cosz = Math.cos(z);
  40335. lon = this.long0;
  40336. if (Math.abs(rh) <= EPSLN) {
  40337. lat = this.lat0;
  40338. p.x = lon;
  40339. p.y = lat;
  40340. return p;
  40341. }
  40342. lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh);
  40343. con = Math.abs(this.lat0) - HALF_PI;
  40344. if (Math.abs(con) <= EPSLN) {
  40345. if (this.lat0 >= 0) {
  40346. lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));
  40347. }
  40348. else {
  40349. lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));
  40350. }
  40351. p.x = lon;
  40352. p.y = lat;
  40353. return p;
  40354. }
  40355. lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz));
  40356. p.x = lon;
  40357. p.y = lat;
  40358. return p;
  40359. }
  40360. var ortho_names = ["ortho"];
  40361. /* harmony default export */ var ortho = ({
  40362. init: ortho_init,
  40363. forward: ortho_forward,
  40364. inverse: ortho_inverse,
  40365. names: ortho_names
  40366. });
  40367. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/qsc.js
  40368. // QSC projection rewritten from the original PROJ4
  40369. // https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c
  40370. /* constants */
  40371. var FACE_ENUM = {
  40372. FRONT: 1,
  40373. RIGHT: 2,
  40374. BACK: 3,
  40375. LEFT: 4,
  40376. TOP: 5,
  40377. BOTTOM: 6
  40378. };
  40379. var AREA_ENUM = {
  40380. AREA_0: 1,
  40381. AREA_1: 2,
  40382. AREA_2: 3,
  40383. AREA_3: 4
  40384. };
  40385. function qsc_init() {
  40386. this.x0 = this.x0 || 0;
  40387. this.y0 = this.y0 || 0;
  40388. this.lat0 = this.lat0 || 0;
  40389. this.long0 = this.long0 || 0;
  40390. this.lat_ts = this.lat_ts || 0;
  40391. this.title = this.title || "Quadrilateralized Spherical Cube";
  40392. /* Determine the cube face from the center of projection. */
  40393. if (this.lat0 >= HALF_PI - FORTPI / 2.0) {
  40394. this.face = FACE_ENUM.TOP;
  40395. } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) {
  40396. this.face = FACE_ENUM.BOTTOM;
  40397. } else if (Math.abs(this.long0) <= FORTPI) {
  40398. this.face = FACE_ENUM.FRONT;
  40399. } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) {
  40400. this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT;
  40401. } else {
  40402. this.face = FACE_ENUM.BACK;
  40403. }
  40404. /* Fill in useful values for the ellipsoid <-> sphere shift
  40405. * described in [LK12]. */
  40406. if (this.es !== 0) {
  40407. this.one_minus_f = 1 - (this.a - this.b) / this.a;
  40408. this.one_minus_f_squared = this.one_minus_f * this.one_minus_f;
  40409. }
  40410. }
  40411. // QSC forward equations--mapping lat,long to x,y
  40412. // -----------------------------------------------------------------
  40413. function qsc_forward(p) {
  40414. var xy = {x: 0, y: 0};
  40415. var lat, lon;
  40416. var theta, phi;
  40417. var t, mu;
  40418. /* nu; */
  40419. var area = {value: 0};
  40420. // move lon according to projection's lon
  40421. p.x -= this.long0;
  40422. /* Convert the geodetic latitude to a geocentric latitude.
  40423. * This corresponds to the shift from the ellipsoid to the sphere
  40424. * described in [LK12]. */
  40425. if (this.es !== 0) {//if (P->es != 0) {
  40426. lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y));
  40427. } else {
  40428. lat = p.y;
  40429. }
  40430. /* Convert the input lat, lon into theta, phi as used by QSC.
  40431. * This depends on the cube face and the area on it.
  40432. * For the top and bottom face, we can compute theta and phi
  40433. * directly from phi, lam. For the other faces, we must use
  40434. * unit sphere cartesian coordinates as an intermediate step. */
  40435. lon = p.x; //lon = lp.lam;
  40436. if (this.face === FACE_ENUM.TOP) {
  40437. phi = HALF_PI - lat;
  40438. if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {
  40439. area.value = AREA_ENUM.AREA_0;
  40440. theta = lon - HALF_PI;
  40441. } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) {
  40442. area.value = AREA_ENUM.AREA_1;
  40443. theta = (lon > 0.0 ? lon - SPI : lon + SPI);
  40444. } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) {
  40445. area.value = AREA_ENUM.AREA_2;
  40446. theta = lon + HALF_PI;
  40447. } else {
  40448. area.value = AREA_ENUM.AREA_3;
  40449. theta = lon;
  40450. }
  40451. } else if (this.face === FACE_ENUM.BOTTOM) {
  40452. phi = HALF_PI + lat;
  40453. if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {
  40454. area.value = AREA_ENUM.AREA_0;
  40455. theta = -lon + HALF_PI;
  40456. } else if (lon < FORTPI && lon >= -FORTPI) {
  40457. area.value = AREA_ENUM.AREA_1;
  40458. theta = -lon;
  40459. } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) {
  40460. area.value = AREA_ENUM.AREA_2;
  40461. theta = -lon - HALF_PI;
  40462. } else {
  40463. area.value = AREA_ENUM.AREA_3;
  40464. theta = (lon > 0.0 ? -lon + SPI : -lon - SPI);
  40465. }
  40466. } else {
  40467. var q, r, s;
  40468. var sinlat, coslat;
  40469. var sinlon, coslon;
  40470. if (this.face === FACE_ENUM.RIGHT) {
  40471. lon = qsc_shift_lon_origin(lon, +HALF_PI);
  40472. } else if (this.face === FACE_ENUM.BACK) {
  40473. lon = qsc_shift_lon_origin(lon, +SPI);
  40474. } else if (this.face === FACE_ENUM.LEFT) {
  40475. lon = qsc_shift_lon_origin(lon, -HALF_PI);
  40476. }
  40477. sinlat = Math.sin(lat);
  40478. coslat = Math.cos(lat);
  40479. sinlon = Math.sin(lon);
  40480. coslon = Math.cos(lon);
  40481. q = coslat * coslon;
  40482. r = coslat * sinlon;
  40483. s = sinlat;
  40484. if (this.face === FACE_ENUM.FRONT) {
  40485. phi = Math.acos(q);
  40486. theta = qsc_fwd_equat_face_theta(phi, s, r, area);
  40487. } else if (this.face === FACE_ENUM.RIGHT) {
  40488. phi = Math.acos(r);
  40489. theta = qsc_fwd_equat_face_theta(phi, s, -q, area);
  40490. } else if (this.face === FACE_ENUM.BACK) {
  40491. phi = Math.acos(-q);
  40492. theta = qsc_fwd_equat_face_theta(phi, s, -r, area);
  40493. } else if (this.face === FACE_ENUM.LEFT) {
  40494. phi = Math.acos(-r);
  40495. theta = qsc_fwd_equat_face_theta(phi, s, q, area);
  40496. } else {
  40497. /* Impossible */
  40498. phi = theta = 0;
  40499. area.value = AREA_ENUM.AREA_0;
  40500. }
  40501. }
  40502. /* Compute mu and nu for the area of definition.
  40503. * For mu, see Eq. (3-21) in [OL76], but note the typos:
  40504. * compare with Eq. (3-14). For nu, see Eq. (3-38). */
  40505. mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI));
  40506. t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta)))));
  40507. /* Apply the result to the real area. */
  40508. if (area.value === AREA_ENUM.AREA_1) {
  40509. mu += HALF_PI;
  40510. } else if (area.value === AREA_ENUM.AREA_2) {
  40511. mu += SPI;
  40512. } else if (area.value === AREA_ENUM.AREA_3) {
  40513. mu += 1.5 * SPI;
  40514. }
  40515. /* Now compute x, y from mu and nu */
  40516. xy.x = t * Math.cos(mu);
  40517. xy.y = t * Math.sin(mu);
  40518. xy.x = xy.x * this.a + this.x0;
  40519. xy.y = xy.y * this.a + this.y0;
  40520. p.x = xy.x;
  40521. p.y = xy.y;
  40522. return p;
  40523. }
  40524. // QSC inverse equations--mapping x,y to lat/long
  40525. // -----------------------------------------------------------------
  40526. function qsc_inverse(p) {
  40527. var lp = {lam: 0, phi: 0};
  40528. var mu, nu, cosmu, tannu;
  40529. var tantheta, theta, cosphi, phi;
  40530. var t;
  40531. var area = {value: 0};
  40532. /* de-offset */
  40533. p.x = (p.x - this.x0) / this.a;
  40534. p.y = (p.y - this.y0) / this.a;
  40535. /* Convert the input x, y to the mu and nu angles as used by QSC.
  40536. * This depends on the area of the cube face. */
  40537. nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y));
  40538. mu = Math.atan2(p.y, p.x);
  40539. if (p.x >= 0.0 && p.x >= Math.abs(p.y)) {
  40540. area.value = AREA_ENUM.AREA_0;
  40541. } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) {
  40542. area.value = AREA_ENUM.AREA_1;
  40543. mu -= HALF_PI;
  40544. } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) {
  40545. area.value = AREA_ENUM.AREA_2;
  40546. mu = (mu < 0.0 ? mu + SPI : mu - SPI);
  40547. } else {
  40548. area.value = AREA_ENUM.AREA_3;
  40549. mu += HALF_PI;
  40550. }
  40551. /* Compute phi and theta for the area of definition.
  40552. * The inverse projection is not described in the original paper, but some
  40553. * good hints can be found here (as of 2011-12-14):
  40554. * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302
  40555. * (search for "Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>") */
  40556. t = (SPI / 12) * Math.tan(mu);
  40557. tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2)));
  40558. theta = Math.atan(tantheta);
  40559. cosmu = Math.cos(mu);
  40560. tannu = Math.tan(nu);
  40561. cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta))));
  40562. if (cosphi < -1) {
  40563. cosphi = -1;
  40564. } else if (cosphi > +1) {
  40565. cosphi = +1;
  40566. }
  40567. /* Apply the result to the real area on the cube face.
  40568. * For the top and bottom face, we can compute phi and lam directly.
  40569. * For the other faces, we must use unit sphere cartesian coordinates
  40570. * as an intermediate step. */
  40571. if (this.face === FACE_ENUM.TOP) {
  40572. phi = Math.acos(cosphi);
  40573. lp.phi = HALF_PI - phi;
  40574. if (area.value === AREA_ENUM.AREA_0) {
  40575. lp.lam = theta + HALF_PI;
  40576. } else if (area.value === AREA_ENUM.AREA_1) {
  40577. lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI);
  40578. } else if (area.value === AREA_ENUM.AREA_2) {
  40579. lp.lam = theta - HALF_PI;
  40580. } else /* area.value == AREA_ENUM.AREA_3 */ {
  40581. lp.lam = theta;
  40582. }
  40583. } else if (this.face === FACE_ENUM.BOTTOM) {
  40584. phi = Math.acos(cosphi);
  40585. lp.phi = phi - HALF_PI;
  40586. if (area.value === AREA_ENUM.AREA_0) {
  40587. lp.lam = -theta + HALF_PI;
  40588. } else if (area.value === AREA_ENUM.AREA_1) {
  40589. lp.lam = -theta;
  40590. } else if (area.value === AREA_ENUM.AREA_2) {
  40591. lp.lam = -theta - HALF_PI;
  40592. } else /* area.value == AREA_ENUM.AREA_3 */ {
  40593. lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI);
  40594. }
  40595. } else {
  40596. /* Compute phi and lam via cartesian unit sphere coordinates. */
  40597. var q, r, s;
  40598. q = cosphi;
  40599. t = q * q;
  40600. if (t >= 1) {
  40601. s = 0;
  40602. } else {
  40603. s = Math.sqrt(1 - t) * Math.sin(theta);
  40604. }
  40605. t += s * s;
  40606. if (t >= 1) {
  40607. r = 0;
  40608. } else {
  40609. r = Math.sqrt(1 - t);
  40610. }
  40611. /* Rotate q,r,s into the correct area. */
  40612. if (area.value === AREA_ENUM.AREA_1) {
  40613. t = r;
  40614. r = -s;
  40615. s = t;
  40616. } else if (area.value === AREA_ENUM.AREA_2) {
  40617. r = -r;
  40618. s = -s;
  40619. } else if (area.value === AREA_ENUM.AREA_3) {
  40620. t = r;
  40621. r = s;
  40622. s = -t;
  40623. }
  40624. /* Rotate q,r,s into the correct cube face. */
  40625. if (this.face === FACE_ENUM.RIGHT) {
  40626. t = q;
  40627. q = -r;
  40628. r = t;
  40629. } else if (this.face === FACE_ENUM.BACK) {
  40630. q = -q;
  40631. r = -r;
  40632. } else if (this.face === FACE_ENUM.LEFT) {
  40633. t = q;
  40634. q = r;
  40635. r = -t;
  40636. }
  40637. /* Now compute phi and lam from the unit sphere coordinates. */
  40638. lp.phi = Math.acos(-s) - HALF_PI;
  40639. lp.lam = Math.atan2(r, q);
  40640. if (this.face === FACE_ENUM.RIGHT) {
  40641. lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI);
  40642. } else if (this.face === FACE_ENUM.BACK) {
  40643. lp.lam = qsc_shift_lon_origin(lp.lam, -SPI);
  40644. } else if (this.face === FACE_ENUM.LEFT) {
  40645. lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI);
  40646. }
  40647. }
  40648. /* Apply the shift from the sphere to the ellipsoid as described
  40649. * in [LK12]. */
  40650. if (this.es !== 0) {
  40651. var invert_sign;
  40652. var tanphi, xa;
  40653. invert_sign = (lp.phi < 0 ? 1 : 0);
  40654. tanphi = Math.tan(lp.phi);
  40655. xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared);
  40656. lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa));
  40657. if (invert_sign) {
  40658. lp.phi = -lp.phi;
  40659. }
  40660. }
  40661. lp.lam += this.long0;
  40662. p.x = lp.lam;
  40663. p.y = lp.phi;
  40664. return p;
  40665. }
  40666. /* Helper function for forward projection: compute the theta angle
  40667. * and determine the area number. */
  40668. function qsc_fwd_equat_face_theta(phi, y, x, area) {
  40669. var theta;
  40670. if (phi < EPSLN) {
  40671. area.value = AREA_ENUM.AREA_0;
  40672. theta = 0.0;
  40673. } else {
  40674. theta = Math.atan2(y, x);
  40675. if (Math.abs(theta) <= FORTPI) {
  40676. area.value = AREA_ENUM.AREA_0;
  40677. } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) {
  40678. area.value = AREA_ENUM.AREA_1;
  40679. theta -= HALF_PI;
  40680. } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) {
  40681. area.value = AREA_ENUM.AREA_2;
  40682. theta = (theta >= 0.0 ? theta - SPI : theta + SPI);
  40683. } else {
  40684. area.value = AREA_ENUM.AREA_3;
  40685. theta += HALF_PI;
  40686. }
  40687. }
  40688. return theta;
  40689. }
  40690. /* Helper function: shift the longitude. */
  40691. function qsc_shift_lon_origin(lon, offset) {
  40692. var slon = lon + offset;
  40693. if (slon < -SPI) {
  40694. slon += TWO_PI;
  40695. } else if (slon > +SPI) {
  40696. slon -= TWO_PI;
  40697. }
  40698. return slon;
  40699. }
  40700. var qsc_names = ["Quadrilateralized Spherical Cube", "Quadrilateralized_Spherical_Cube", "qsc"];
  40701. /* harmony default export */ var qsc = ({
  40702. init: qsc_init,
  40703. forward: qsc_forward,
  40704. inverse: qsc_inverse,
  40705. names: qsc_names
  40706. });
  40707. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/robin.js
  40708. // Robinson projection
  40709. // Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c
  40710. // Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039
  40711. var COEFS_X = [
  40712. [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06],
  40713. [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06],
  40714. [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07],
  40715. [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06],
  40716. [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06],
  40717. [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08],
  40718. [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06],
  40719. [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06],
  40720. [0.9216, -0.00467746, -0.00010457, 4.81243e-06],
  40721. [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06],
  40722. [0.8679, -0.00609363, -0.000113898, 3.32484e-06],
  40723. [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07],
  40724. [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07],
  40725. [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06],
  40726. [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06],
  40727. [0.6732, -0.00986209, -0.000199569, 1.91974e-05],
  40728. [0.6213, -0.010418, 8.83923e-05, 6.24051e-06],
  40729. [0.5722, -0.00906601, 0.000182, 6.24051e-06],
  40730. [0.5322, -0.00677797, 0.000275608, 6.24051e-06]
  40731. ];
  40732. var COEFS_Y = [
  40733. [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11],
  40734. [0.0620, 0.0124, -1.26793e-09, 4.22642e-10],
  40735. [0.1240, 0.0124, 5.07171e-09, -1.60604e-09],
  40736. [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09],
  40737. [0.2480, 0.0124002, 7.10039e-08, -2.24e-08],
  40738. [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08],
  40739. [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07],
  40740. [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07],
  40741. [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07],
  40742. [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07],
  40743. [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07],
  40744. [0.6769, 0.011713, -3.20223e-05, -5.16405e-07],
  40745. [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07],
  40746. [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06],
  40747. [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09],
  40748. [0.8936, 0.00969686, -6.4636e-05, -8.547e-06],
  40749. [0.9394, 0.00840947, -0.000192841, -4.2106e-06],
  40750. [0.9761, 0.00616527, -0.000256, -4.2106e-06],
  40751. [1.0000, 0.00328947, -0.000319159, -4.2106e-06]
  40752. ];
  40753. var FXC = 0.8487;
  40754. var FYC = 1.3523;
  40755. var C1 = R2D/5; // rad to 5-degree interval
  40756. var RC1 = 1/C1;
  40757. var NODES = 18;
  40758. var poly3_val = function(coefs, x) {
  40759. return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3]));
  40760. };
  40761. var poly3_der = function(coefs, x) {
  40762. return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]);
  40763. };
  40764. function newton_rapshon(f_df, start, max_err, iters) {
  40765. var x = start;
  40766. for (; iters; --iters) {
  40767. var upd = f_df(x);
  40768. x -= upd;
  40769. if (Math.abs(upd) < max_err) {
  40770. break;
  40771. }
  40772. }
  40773. return x;
  40774. }
  40775. function robin_init() {
  40776. this.x0 = this.x0 || 0;
  40777. this.y0 = this.y0 || 0;
  40778. this.long0 = this.long0 || 0;
  40779. this.es = 0;
  40780. this.title = this.title || "Robinson";
  40781. }
  40782. function robin_forward(ll) {
  40783. var lon = adjust_lon(ll.x - this.long0);
  40784. var dphi = Math.abs(ll.y);
  40785. var i = Math.floor(dphi * C1);
  40786. if (i < 0) {
  40787. i = 0;
  40788. } else if (i >= NODES) {
  40789. i = NODES - 1;
  40790. }
  40791. dphi = R2D * (dphi - RC1 * i);
  40792. var xy = {
  40793. x: poly3_val(COEFS_X[i], dphi) * lon,
  40794. y: poly3_val(COEFS_Y[i], dphi)
  40795. };
  40796. if (ll.y < 0) {
  40797. xy.y = -xy.y;
  40798. }
  40799. xy.x = xy.x * this.a * FXC + this.x0;
  40800. xy.y = xy.y * this.a * FYC + this.y0;
  40801. return xy;
  40802. }
  40803. function robin_inverse(xy) {
  40804. var ll = {
  40805. x: (xy.x - this.x0) / (this.a * FXC),
  40806. y: Math.abs(xy.y - this.y0) / (this.a * FYC)
  40807. };
  40808. if (ll.y >= 1) { // pathologic case
  40809. ll.x /= COEFS_X[NODES][0];
  40810. ll.y = xy.y < 0 ? -HALF_PI : HALF_PI;
  40811. } else {
  40812. // find table interval
  40813. var i = Math.floor(ll.y * NODES);
  40814. if (i < 0) {
  40815. i = 0;
  40816. } else if (i >= NODES) {
  40817. i = NODES - 1;
  40818. }
  40819. for (;;) {
  40820. if (COEFS_Y[i][0] > ll.y) {
  40821. --i;
  40822. } else if (COEFS_Y[i+1][0] <= ll.y) {
  40823. ++i;
  40824. } else {
  40825. break;
  40826. }
  40827. }
  40828. // linear interpolation in 5 degree interval
  40829. var coefs = COEFS_Y[i];
  40830. var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]);
  40831. // find t so that poly3_val(coefs, t) = ll.y
  40832. t = newton_rapshon(function(x) {
  40833. return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x);
  40834. }, t, EPSLN, 100);
  40835. ll.x /= poly3_val(COEFS_X[i], t);
  40836. ll.y = (5 * i + t) * D2R;
  40837. if (xy.y < 0) {
  40838. ll.y = -ll.y;
  40839. }
  40840. }
  40841. ll.x = adjust_lon(ll.x + this.long0);
  40842. return ll;
  40843. }
  40844. var robin_names = ["Robinson", "robin"];
  40845. /* harmony default export */ var robin = ({
  40846. init: robin_init,
  40847. forward: robin_forward,
  40848. inverse: robin_inverse,
  40849. names: robin_names
  40850. });
  40851. // CONCATENATED MODULE: ./node_modules/proj4/lib/projections/geocent.js
  40852. function geocent_init() {
  40853. this.name = 'geocent';
  40854. }
  40855. function geocent_forward(p) {
  40856. var point = geodeticToGeocentric(p, this.es, this.a);
  40857. return point;
  40858. }
  40859. function geocent_inverse(p) {
  40860. var point = geocentricToGeodetic(p, this.es, this.a, this.b);
  40861. return point;
  40862. }
  40863. var geocent_names = ["Geocentric", 'geocentric', "geocent", "Geocent"];
  40864. /* harmony default export */ var geocent = ({
  40865. init: geocent_init,
  40866. forward: geocent_forward,
  40867. inverse: geocent_inverse,
  40868. names: geocent_names
  40869. });
  40870. // CONCATENATED MODULE: ./node_modules/proj4/projs.js
  40871. /* harmony default export */ var proj4_projs = (function(proj4){
  40872. proj4.Proj.projections.add(tmerc);
  40873. proj4.Proj.projections.add(etmerc);
  40874. proj4.Proj.projections.add(utm);
  40875. proj4.Proj.projections.add(sterea);
  40876. proj4.Proj.projections.add(stere);
  40877. proj4.Proj.projections.add(somerc);
  40878. proj4.Proj.projections.add(omerc);
  40879. proj4.Proj.projections.add(lcc);
  40880. proj4.Proj.projections.add(krovak);
  40881. proj4.Proj.projections.add(cass);
  40882. proj4.Proj.projections.add(laea);
  40883. proj4.Proj.projections.add(aea);
  40884. proj4.Proj.projections.add(gnom);
  40885. proj4.Proj.projections.add(cea);
  40886. proj4.Proj.projections.add(eqc);
  40887. proj4.Proj.projections.add(poly);
  40888. proj4.Proj.projections.add(nzmg);
  40889. proj4.Proj.projections.add(mill);
  40890. proj4.Proj.projections.add(sinu);
  40891. proj4.Proj.projections.add(moll);
  40892. proj4.Proj.projections.add(eqdc);
  40893. proj4.Proj.projections.add(vandg);
  40894. proj4.Proj.projections.add(aeqd);
  40895. proj4.Proj.projections.add(ortho);
  40896. proj4.Proj.projections.add(qsc);
  40897. proj4.Proj.projections.add(robin);
  40898. proj4.Proj.projections.add(geocent);
  40899. });
  40900. // CONCATENATED MODULE: ./node_modules/proj4/lib/index.js
  40901. core.defaultDatum = 'WGS84'; //default datum
  40902. core.Proj = Proj;
  40903. core.WGS84 = new core.Proj('WGS84');
  40904. core.Point = lib_Point;
  40905. core.toPoint = toPoint;
  40906. core.defs = lib_defs;
  40907. core.transform = transform;
  40908. core.mgrs = mgrs;
  40909. core.version = '__VERSION__';
  40910. proj4_projs(core);
  40911. /* harmony default export */ var lib = __webpack_exports__["default"] = (core);
  40912. /***/ }),
  40913. /***/ "743a":
  40914. /***/ (function(module, exports, __webpack_require__) {
  40915. // extracted by mini-css-extract-plugin
  40916. /***/ }),
  40917. /***/ "74c0":
  40918. /***/ (function(module, exports, __webpack_require__) {
  40919. "use strict";
  40920. /*<replacement>*/
  40921. var pna = __webpack_require__("3e48");
  40922. /*</replacement>*/
  40923. // undocumented cb() API, needed for core, not for public API
  40924. function destroy(err, cb) {
  40925. var _this = this;
  40926. var readableDestroyed = this._readableState && this._readableState.destroyed;
  40927. var writableDestroyed = this._writableState && this._writableState.destroyed;
  40928. if (readableDestroyed || writableDestroyed) {
  40929. if (cb) {
  40930. cb(err);
  40931. } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
  40932. pna.nextTick(emitErrorNT, this, err);
  40933. }
  40934. return this;
  40935. }
  40936. // we set destroyed to true before firing error callbacks in order
  40937. // to make it re-entrance safe in case destroy() is called within callbacks
  40938. if (this._readableState) {
  40939. this._readableState.destroyed = true;
  40940. }
  40941. // if this is a duplex stream mark the writable part as destroyed as well
  40942. if (this._writableState) {
  40943. this._writableState.destroyed = true;
  40944. }
  40945. this._destroy(err || null, function (err) {
  40946. if (!cb && err) {
  40947. pna.nextTick(emitErrorNT, _this, err);
  40948. if (_this._writableState) {
  40949. _this._writableState.errorEmitted = true;
  40950. }
  40951. } else if (cb) {
  40952. cb(err);
  40953. }
  40954. });
  40955. return this;
  40956. }
  40957. function undestroy() {
  40958. if (this._readableState) {
  40959. this._readableState.destroyed = false;
  40960. this._readableState.reading = false;
  40961. this._readableState.ended = false;
  40962. this._readableState.endEmitted = false;
  40963. }
  40964. if (this._writableState) {
  40965. this._writableState.destroyed = false;
  40966. this._writableState.ended = false;
  40967. this._writableState.ending = false;
  40968. this._writableState.finished = false;
  40969. this._writableState.errorEmitted = false;
  40970. }
  40971. }
  40972. function emitErrorNT(self, err) {
  40973. self.emit('error', err);
  40974. }
  40975. module.exports = {
  40976. destroy: destroy,
  40977. undestroy: undestroy
  40978. };
  40979. /***/ }),
  40980. /***/ "755f":
  40981. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  40982. "use strict";
  40983. __webpack_require__.r(__webpack_exports__);
  40984. /* harmony import */ var _Pan_vue_vue_type_template_id_c352d4ec___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("5595");
  40985. /* harmony import */ var _Pan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("bd80");
  40986. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Pan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Pan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  40987. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  40988. /* normalize component */
  40989. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  40990. _Pan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  40991. _Pan_vue_vue_type_template_id_c352d4ec___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  40992. _Pan_vue_vue_type_template_id_c352d4ec___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  40993. false,
  40994. null,
  40995. null,
  40996. null
  40997. )
  40998. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  40999. /***/ }),
  41000. /***/ "764e":
  41001. /***/ (function(module, exports, __webpack_require__) {
  41002. "use strict";
  41003. /* WEBPACK VAR INJECTION */(function(process) {
  41004. var utils = __webpack_require__("d691");
  41005. var normalizeHeaderName = __webpack_require__("f0fa");
  41006. var DEFAULT_CONTENT_TYPE = {
  41007. 'Content-Type': 'application/x-www-form-urlencoded'
  41008. };
  41009. function setContentTypeIfUnset(headers, value) {
  41010. if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
  41011. headers['Content-Type'] = value;
  41012. }
  41013. }
  41014. function getDefaultAdapter() {
  41015. var adapter;
  41016. // Only Node.JS has a process variable that is of [[Class]] process
  41017. if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {
  41018. // For node use HTTP adapter
  41019. adapter = __webpack_require__("8c7a");
  41020. } else if (typeof XMLHttpRequest !== 'undefined') {
  41021. // For browsers use XHR adapter
  41022. adapter = __webpack_require__("8c7a");
  41023. }
  41024. return adapter;
  41025. }
  41026. var defaults = {
  41027. adapter: getDefaultAdapter(),
  41028. transformRequest: [function transformRequest(data, headers) {
  41029. normalizeHeaderName(headers, 'Accept');
  41030. normalizeHeaderName(headers, 'Content-Type');
  41031. if (utils.isFormData(data) ||
  41032. utils.isArrayBuffer(data) ||
  41033. utils.isBuffer(data) ||
  41034. utils.isStream(data) ||
  41035. utils.isFile(data) ||
  41036. utils.isBlob(data)
  41037. ) {
  41038. return data;
  41039. }
  41040. if (utils.isArrayBufferView(data)) {
  41041. return data.buffer;
  41042. }
  41043. if (utils.isURLSearchParams(data)) {
  41044. setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
  41045. return data.toString();
  41046. }
  41047. if (utils.isObject(data)) {
  41048. setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
  41049. return JSON.stringify(data);
  41050. }
  41051. return data;
  41052. }],
  41053. transformResponse: [function transformResponse(data) {
  41054. /*eslint no-param-reassign:0*/
  41055. if (typeof data === 'string') {
  41056. try {
  41057. data = JSON.parse(data);
  41058. } catch (e) { /* Ignore */ }
  41059. }
  41060. return data;
  41061. }],
  41062. /**
  41063. * A timeout in milliseconds to abort a request. If set to 0 (default) a
  41064. * timeout is not created.
  41065. */
  41066. timeout: 0,
  41067. xsrfCookieName: 'XSRF-TOKEN',
  41068. xsrfHeaderName: 'X-XSRF-TOKEN',
  41069. maxContentLength: -1,
  41070. validateStatus: function validateStatus(status) {
  41071. return status >= 200 && status < 300;
  41072. }
  41073. };
  41074. defaults.headers = {
  41075. common: {
  41076. 'Accept': 'application/json, text/plain, */*'
  41077. }
  41078. };
  41079. utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
  41080. defaults.headers[method] = {};
  41081. });
  41082. utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
  41083. defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
  41084. });
  41085. module.exports = defaults;
  41086. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("f2ac")))
  41087. /***/ }),
  41088. /***/ "7690":
  41089. /***/ (function(module, exports, __webpack_require__) {
  41090. "use strict";
  41091. var _interopRequireDefault = __webpack_require__("8e6d");
  41092. Object.defineProperty(exports, "__esModule", {
  41093. value: true
  41094. });
  41095. exports.default = void 0;
  41096. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  41097. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  41098. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  41099. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  41100. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  41101. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  41102. var _vuePropertyDecorator = __webpack_require__("e22c");
  41103. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  41104. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  41105. var _vmUpdater = _interopRequireDefault(__webpack_require__("3a49"));
  41106. var _FireLayerViewModel = _interopRequireDefault(__webpack_require__("035f"));
  41107. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  41108. var c = arguments.length,
  41109. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  41110. d;
  41111. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  41112. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  41113. }
  41114. return c > 3 && r && Object.defineProperty(target, key, r), r;
  41115. };
  41116. var FireLayer =
  41117. /*#__PURE__*/
  41118. function (_Mixins) {
  41119. (0, _inherits2.default)(FireLayer, _Mixins);
  41120. function FireLayer() {
  41121. (0, _classCallCheck2.default)(this, FireLayer);
  41122. return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(FireLayer).apply(this, arguments));
  41123. }
  41124. (0, _createClass2.default)(FireLayer, [{
  41125. key: "created",
  41126. value: function created() {
  41127. this.viewModel = new _FireLayerViewModel.default(this.features, this.modelScale, this.layerId);
  41128. }
  41129. }, {
  41130. key: "render",
  41131. value: function render() {}
  41132. }]);
  41133. return FireLayer;
  41134. }((0, _vuePropertyDecorator.Mixins)(_mapGetter.default, _layer.default, _vmUpdater.default));
  41135. __decorate([(0, _vuePropertyDecorator.Prop)()], FireLayer.prototype, "features", void 0);
  41136. __decorate([(0, _vuePropertyDecorator.Prop)({
  41137. default: 5.41843220338983e-6
  41138. })], FireLayer.prototype, "modelScale", void 0);
  41139. FireLayer = __decorate([(0, _vuePropertyDecorator.Component)({
  41140. name: 'SmFireLayer',
  41141. viewModelProps: ['features', 'modelScale']
  41142. })], FireLayer);
  41143. var _default = FireLayer;
  41144. exports.default = _default;
  41145. /***/ }),
  41146. /***/ "76b8":
  41147. /***/ (function(module, exports, __webpack_require__) {
  41148. "use strict";
  41149. var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
  41150. /**
  41151. * Copyright Marc J. Schmidt. See the LICENSE file at the top-level
  41152. * directory of this distribution and at
  41153. * https://github.com/marcj/css-element-queries/blob/master/LICENSE.
  41154. */
  41155. (function (root, factory) {
  41156. if (true) {
  41157. !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
  41158. __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
  41159. (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
  41160. __WEBPACK_AMD_DEFINE_FACTORY__),
  41161. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  41162. } else {}
  41163. }(typeof window !== 'undefined' ? window : this, function () {
  41164. // Make sure it does not throw in a SSR (Server Side Rendering) situation
  41165. if (typeof window === "undefined") {
  41166. return null;
  41167. }
  41168. // https://github.com/Semantic-Org/Semantic-UI/issues/3855
  41169. // https://github.com/marcj/css-element-queries/issues/257
  41170. var globalWindow = typeof window != 'undefined' && window.Math == Math
  41171. ? window
  41172. : typeof self != 'undefined' && self.Math == Math
  41173. ? self
  41174. : Function('return this')();
  41175. // Only used for the dirty checking, so the event callback count is limited to max 1 call per fps per sensor.
  41176. // In combination with the event based resize sensor this saves cpu time, because the sensor is too fast and
  41177. // would generate too many unnecessary events.
  41178. var requestAnimationFrame = globalWindow.requestAnimationFrame ||
  41179. globalWindow.mozRequestAnimationFrame ||
  41180. globalWindow.webkitRequestAnimationFrame ||
  41181. function (fn) {
  41182. return globalWindow.setTimeout(fn, 20);
  41183. };
  41184. var cancelAnimationFrame = globalWindow.cancelAnimationFrame ||
  41185. globalWindow.mozCancelAnimationFrame ||
  41186. globalWindow.webkitCancelAnimationFrame ||
  41187. function (timer) {
  41188. globalWindow.clearTimeout(timer);
  41189. };
  41190. /**
  41191. * Iterate over each of the provided element(s).
  41192. *
  41193. * @param {HTMLElement|HTMLElement[]} elements
  41194. * @param {Function} callback
  41195. */
  41196. function forEachElement(elements, callback){
  41197. var elementsType = Object.prototype.toString.call(elements);
  41198. var isCollectionTyped = ('[object Array]' === elementsType
  41199. || ('[object NodeList]' === elementsType)
  41200. || ('[object HTMLCollection]' === elementsType)
  41201. || ('[object Object]' === elementsType)
  41202. || ('undefined' !== typeof jQuery && elements instanceof jQuery) //jquery
  41203. || ('undefined' !== typeof Elements && elements instanceof Elements) //mootools
  41204. );
  41205. var i = 0, j = elements.length;
  41206. if (isCollectionTyped) {
  41207. for (; i < j; i++) {
  41208. callback(elements[i]);
  41209. }
  41210. } else {
  41211. callback(elements);
  41212. }
  41213. }
  41214. /**
  41215. * Get element size
  41216. * @param {HTMLElement} element
  41217. * @returns {Object} {width, height}
  41218. */
  41219. function getElementSize(element) {
  41220. if (!element.getBoundingClientRect) {
  41221. return {
  41222. width: element.offsetWidth,
  41223. height: element.offsetHeight
  41224. }
  41225. }
  41226. var rect = element.getBoundingClientRect();
  41227. return {
  41228. width: Math.round(rect.width),
  41229. height: Math.round(rect.height)
  41230. }
  41231. }
  41232. /**
  41233. * Apply CSS styles to element.
  41234. *
  41235. * @param {HTMLElement} element
  41236. * @param {Object} style
  41237. */
  41238. function setStyle(element, style) {
  41239. Object.keys(style).forEach(function(key) {
  41240. element.style[key] = style[key];
  41241. });
  41242. }
  41243. /**
  41244. * Class for dimension change detection.
  41245. *
  41246. * @param {Element|Element[]|Elements|jQuery} element
  41247. * @param {Function} callback
  41248. *
  41249. * @constructor
  41250. */
  41251. var ResizeSensor = function(element, callback) {
  41252. //Is used when checking in reset() only for invisible elements
  41253. var lastAnimationFrameForInvisibleCheck = 0;
  41254. /**
  41255. *
  41256. * @constructor
  41257. */
  41258. function EventQueue() {
  41259. var q = [];
  41260. this.add = function(ev) {
  41261. q.push(ev);
  41262. };
  41263. var i, j;
  41264. this.call = function(sizeInfo) {
  41265. for (i = 0, j = q.length; i < j; i++) {
  41266. q[i].call(this, sizeInfo);
  41267. }
  41268. };
  41269. this.remove = function(ev) {
  41270. var newQueue = [];
  41271. for(i = 0, j = q.length; i < j; i++) {
  41272. if(q[i] !== ev) newQueue.push(q[i]);
  41273. }
  41274. q = newQueue;
  41275. };
  41276. this.length = function() {
  41277. return q.length;
  41278. }
  41279. }
  41280. /**
  41281. *
  41282. * @param {HTMLElement} element
  41283. * @param {Function} resized
  41284. */
  41285. function attachResizeEvent(element, resized) {
  41286. if (!element) return;
  41287. if (element.resizedAttached) {
  41288. element.resizedAttached.add(resized);
  41289. return;
  41290. }
  41291. element.resizedAttached = new EventQueue();
  41292. element.resizedAttached.add(resized);
  41293. element.resizeSensor = document.createElement('div');
  41294. element.resizeSensor.dir = 'ltr';
  41295. element.resizeSensor.className = 'resize-sensor';
  41296. var style = {
  41297. pointerEvents: 'none',
  41298. position: 'absolute',
  41299. left: '0px',
  41300. top: '0px',
  41301. right: '0px',
  41302. bottom: '0px',
  41303. overflow: 'hidden',
  41304. zIndex: '-1',
  41305. visibility: 'hidden',
  41306. maxWidth: '100%'
  41307. };
  41308. var styleChild = {
  41309. position: 'absolute',
  41310. left: '0px',
  41311. top: '0px',
  41312. transition: '0s',
  41313. };
  41314. setStyle(element.resizeSensor, style);
  41315. var expand = document.createElement('div');
  41316. expand.className = 'resize-sensor-expand';
  41317. setStyle(expand, style);
  41318. var expandChild = document.createElement('div');
  41319. setStyle(expandChild, styleChild);
  41320. expand.appendChild(expandChild);
  41321. var shrink = document.createElement('div');
  41322. shrink.className = 'resize-sensor-shrink';
  41323. setStyle(shrink, style);
  41324. var shrinkChild = document.createElement('div');
  41325. setStyle(shrinkChild, styleChild);
  41326. setStyle(shrinkChild, { width: '200%', height: '200%' });
  41327. shrink.appendChild(shrinkChild);
  41328. element.resizeSensor.appendChild(expand);
  41329. element.resizeSensor.appendChild(shrink);
  41330. element.appendChild(element.resizeSensor);
  41331. var computedStyle = window.getComputedStyle(element);
  41332. var position = computedStyle ? computedStyle.getPropertyValue('position') : null;
  41333. if ('absolute' !== position && 'relative' !== position && 'fixed' !== position && 'sticky' !== position) {
  41334. element.style.position = 'relative';
  41335. }
  41336. var dirty = false;
  41337. //last request animation frame id used in onscroll event
  41338. var rafId = 0;
  41339. var size = getElementSize(element);
  41340. var lastWidth = 0;
  41341. var lastHeight = 0;
  41342. var initialHiddenCheck = true;
  41343. lastAnimationFrameForInvisibleCheck = 0;
  41344. var resetExpandShrink = function () {
  41345. var width = element.offsetWidth;
  41346. var height = element.offsetHeight;
  41347. expandChild.style.width = (width + 10) + 'px';
  41348. expandChild.style.height = (height + 10) + 'px';
  41349. expand.scrollLeft = width + 10;
  41350. expand.scrollTop = height + 10;
  41351. shrink.scrollLeft = width + 10;
  41352. shrink.scrollTop = height + 10;
  41353. };
  41354. var reset = function() {
  41355. // Check if element is hidden
  41356. if (initialHiddenCheck) {
  41357. var invisible = element.offsetWidth === 0 && element.offsetHeight === 0;
  41358. if (invisible) {
  41359. // Check in next frame
  41360. if (!lastAnimationFrameForInvisibleCheck){
  41361. lastAnimationFrameForInvisibleCheck = requestAnimationFrame(function(){
  41362. lastAnimationFrameForInvisibleCheck = 0;
  41363. reset();
  41364. });
  41365. }
  41366. return;
  41367. } else {
  41368. // Stop checking
  41369. initialHiddenCheck = false;
  41370. }
  41371. }
  41372. resetExpandShrink();
  41373. };
  41374. element.resizeSensor.resetSensor = reset;
  41375. var onResized = function() {
  41376. rafId = 0;
  41377. if (!dirty) return;
  41378. lastWidth = size.width;
  41379. lastHeight = size.height;
  41380. if (element.resizedAttached) {
  41381. element.resizedAttached.call(size);
  41382. }
  41383. };
  41384. var onScroll = function() {
  41385. size = getElementSize(element);
  41386. dirty = size.width !== lastWidth || size.height !== lastHeight;
  41387. if (dirty && !rafId) {
  41388. rafId = requestAnimationFrame(onResized);
  41389. }
  41390. reset();
  41391. };
  41392. var addEvent = function(el, name, cb) {
  41393. if (el.attachEvent) {
  41394. el.attachEvent('on' + name, cb);
  41395. } else {
  41396. el.addEventListener(name, cb);
  41397. }
  41398. };
  41399. addEvent(expand, 'scroll', onScroll);
  41400. addEvent(shrink, 'scroll', onScroll);
  41401. // Fix for custom Elements and invisible elements
  41402. lastAnimationFrameForInvisibleCheck = requestAnimationFrame(function(){
  41403. lastAnimationFrameForInvisibleCheck = 0;
  41404. reset();
  41405. });
  41406. }
  41407. forEachElement(element, function(elem){
  41408. attachResizeEvent(elem, callback);
  41409. });
  41410. this.detach = function(ev) {
  41411. // clean up the unfinished animation frame to prevent a potential endless requestAnimationFrame of reset
  41412. if (!lastAnimationFrameForInvisibleCheck) {
  41413. cancelAnimationFrame(lastAnimationFrameForInvisibleCheck);
  41414. lastAnimationFrameForInvisibleCheck = 0;
  41415. }
  41416. ResizeSensor.detach(element, ev);
  41417. };
  41418. this.reset = function() {
  41419. element.resizeSensor.resetSensor();
  41420. };
  41421. };
  41422. ResizeSensor.reset = function(element) {
  41423. forEachElement(element, function(elem){
  41424. elem.resizeSensor.resetSensor();
  41425. });
  41426. };
  41427. ResizeSensor.detach = function(element, ev) {
  41428. forEachElement(element, function(elem){
  41429. if (!elem) return;
  41430. if(elem.resizedAttached && typeof ev === "function"){
  41431. elem.resizedAttached.remove(ev);
  41432. if(elem.resizedAttached.length()) return;
  41433. }
  41434. if (elem.resizeSensor) {
  41435. if (elem.contains(elem.resizeSensor)) {
  41436. elem.removeChild(elem.resizeSensor);
  41437. }
  41438. delete elem.resizeSensor;
  41439. delete elem.resizedAttached;
  41440. }
  41441. });
  41442. };
  41443. if (typeof MutationObserver !== "undefined") {
  41444. var observer = new MutationObserver(function (mutations) {
  41445. for (var i in mutations) {
  41446. if (mutations.hasOwnProperty(i)) {
  41447. var items = mutations[i].addedNodes;
  41448. for (var j = 0; j < items.length; j++) {
  41449. if (items[j].resizeSensor) {
  41450. ResizeSensor.reset(items[j]);
  41451. }
  41452. }
  41453. }
  41454. }
  41455. });
  41456. document.addEventListener("DOMContentLoaded", function (event) {
  41457. observer.observe(document.body, {
  41458. childList: true,
  41459. subtree: true,
  41460. });
  41461. });
  41462. }
  41463. return ResizeSensor;
  41464. }));
  41465. /***/ }),
  41466. /***/ "7711":
  41467. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  41468. "use strict";
  41469. __webpack_require__.r(__webpack_exports__);
  41470. /* harmony import */ var _RanksymbolThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("4d11");
  41471. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _RanksymbolThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _RanksymbolThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  41472. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  41473. var render, staticRenderFns
  41474. /* normalize component */
  41475. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  41476. _RanksymbolThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  41477. render,
  41478. staticRenderFns,
  41479. false,
  41480. null,
  41481. null,
  41482. null
  41483. )
  41484. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  41485. /***/ }),
  41486. /***/ "7754":
  41487. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  41488. "use strict";
  41489. __webpack_require__.r(__webpack_exports__);
  41490. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Measure_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("0f59");
  41491. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Measure_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Measure_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  41492. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Measure_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Measure_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  41493. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Measure_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  41494. /***/ }),
  41495. /***/ "77c4":
  41496. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  41497. "use strict";
  41498. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/indicator/CountTo.vue?vue&type=template&id=c61b74f4&
  41499. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',_vm._l((_vm.numDataList),function(numVale,index){return _c('div',{key:index,staticClass:"sm-component-count-to__numItem",style:([_vm.calNumBackground(numVale),_vm.numInterval,_vm.numStyle])},[_c('span',[_vm._v(_vm._s(numVale))])])}),0)}
  41500. var staticRenderFns = []
  41501. // CONCATENATED MODULE: ./src/common/indicator/CountTo.vue?vue&type=template&id=c61b74f4&
  41502. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  41503. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  41504. /***/ }),
  41505. /***/ "78f6":
  41506. /***/ (function(module, exports, __webpack_require__) {
  41507. "use strict";
  41508. var _interopRequireDefault = __webpack_require__("8e6d");
  41509. Object.defineProperty(exports, "__esModule", {
  41510. value: true
  41511. });
  41512. exports.default = void 0;
  41513. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  41514. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  41515. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  41516. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  41517. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  41518. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  41519. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  41520. var _lodash = _interopRequireDefault(__webpack_require__("25a2"));
  41521. /**
  41522. * @class MiniMapViewModel
  41523. * @description mini map viewModel.
  41524. * @param {Object} parentMap - 外层 Map。
  41525. * @param {Object} miniMap - 内层 Map。
  41526. * @fires MiniMapViewModel#minimapmousedown
  41527. * @fires MiniMapViewModel#minimapmousemove
  41528. * @fires MiniMapViewModel#minimapmouseup
  41529. * @fires MiniMapViewModel#minimapupdated
  41530. * @extends mapboxgl.Evented
  41531. */
  41532. var MiniMapViewModel =
  41533. /*#__PURE__*/
  41534. function (_mapboxgl$Evented) {
  41535. (0, _inherits2.default)(MiniMapViewModel, _mapboxgl$Evented);
  41536. function MiniMapViewModel() {
  41537. var _this2;
  41538. (0, _classCallCheck2.default)(this, MiniMapViewModel);
  41539. _this2 = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(MiniMapViewModel).call(this));
  41540. _this2.options = {
  41541. id: 'mapboxgl-minimap',
  41542. zoomAdjust: null,
  41543. bounds: 'parent',
  41544. lineColor: '#08F',
  41545. lineWidth: 1,
  41546. lineOpacity: 1,
  41547. fillColor: '#F80',
  41548. fillOpacity: 0.25,
  41549. dragPan: false,
  41550. scrollZoom: false,
  41551. boxZoom: false,
  41552. dragRotate: false,
  41553. keyboard: false,
  41554. doubleClickZoom: false,
  41555. touchZoomRotate: false
  41556. };
  41557. _this2._ticking = false;
  41558. _this2._lastMouseMoveEvent = null;
  41559. _this2._isDragging = false;
  41560. _this2._isCursorOverFeature = false;
  41561. _this2._previousPoint = [0, 0];
  41562. _this2._currentPoint = [0, 0];
  41563. _this2._trackingRectCoordinates = [[[], [], [], [], []]];
  41564. return _this2;
  41565. }
  41566. (0, _createClass2.default)(MiniMapViewModel, [{
  41567. key: "setMap",
  41568. value: function setMap(mapInfo) {
  41569. var map = mapInfo.map;
  41570. this._parentMap = map;
  41571. }
  41572. }, {
  41573. key: "setContainer",
  41574. value: function setContainer(container) {
  41575. this._container = container;
  41576. this._updateFn = this._update.bind(this);
  41577. this._setStyleFn = this._setStyle.bind(this);
  41578. this._mouseMoveFn = this._mouseMove.bind(this);
  41579. this._mouseDownFn = this._mouseDown.bind(this);
  41580. this._mouseUpFn = this._mouseUp.bind(this);
  41581. this.initializeMiniMap();
  41582. }
  41583. }, {
  41584. key: "initializeMiniMap",
  41585. value: function initializeMiniMap() {
  41586. var _this3 = this;
  41587. var _this = this;
  41588. this._miniMap = new _mapboxGlEnhance.default.Map({
  41589. attributionControl: false,
  41590. container: _this._container,
  41591. style: (0, _lodash.default)(_this._parentMap.getStyle()),
  41592. zoom: 1,
  41593. crs: this._parentMap.getCRS(),
  41594. center: [0, 0],
  41595. renderWorldCopies: false,
  41596. localIdeographFontFamily: this._parentMap._localIdeographFontFamily
  41597. });
  41598. this._miniMap.on('load', function () {
  41599. _this3.fire('minimaploaded', {
  41600. miniMap: _this3._miniMap
  41601. });
  41602. _this3._miniMap.resize();
  41603. _this3.loadMiniMap();
  41604. window.minimap = _this3._miniMap;
  41605. });
  41606. }
  41607. }, {
  41608. key: "loadMiniMap",
  41609. value: function loadMiniMap() {
  41610. var opts = this.options;
  41611. var parentMap = this._parentMap;
  41612. var miniMap = this._miniMap;
  41613. var interactions = ['dragPan', 'scrollZoom', 'boxZoom', 'dragRotate', 'keyboard', 'doubleClickZoom', 'touchZoomRotate'];
  41614. interactions.forEach(function (i) {
  41615. if (opts[i] !== true) {
  41616. miniMap[i].disable();
  41617. }
  41618. });
  41619. if (typeof opts.zoomAdjust === 'function') {
  41620. this.options.zoomAdjust = opts.zoomAdjust.bind(this);
  41621. } else if (opts.zoomAdjust === null) {
  41622. this.options.zoomAdjust = this._zoomAdjust.bind(this);
  41623. }
  41624. if (opts.bounds === 'parent') {
  41625. opts.bounds = parentMap.getBounds();
  41626. }
  41627. if ((0, _typeof2.default)(opts.bounds) === 'object') {
  41628. miniMap.fitBounds(opts.bounds, {
  41629. duration: 50
  41630. });
  41631. }
  41632. var bounds = miniMap.getBounds();
  41633. this._convertBoundsToPoints(bounds);
  41634. this._addRectLayers();
  41635. this._update();
  41636. parentMap.on('move', this._updateFn);
  41637. parentMap.on('styledata', this._setStyleFn);
  41638. miniMap.on('mousemove', this._mouseMoveFn);
  41639. miniMap.on('mousedown', this._mouseDownFn);
  41640. miniMap.on('mouseup', this._mouseUpFn);
  41641. this._miniMapCanvas = miniMap.getCanvasContainer();
  41642. this._miniMapCanvas.addEventListener('wheel', this._preventDefault);
  41643. this._miniMapCanvas.addEventListener('mousewheel', this._preventDefault);
  41644. }
  41645. }, {
  41646. key: "resize",
  41647. value: function resize() {
  41648. this._miniMap && this._miniMap.resize();
  41649. }
  41650. }, {
  41651. key: "_mouseDown",
  41652. value: function _mouseDown(e) {
  41653. if (this._isCursorOverFeature) {
  41654. this._isDragging = true;
  41655. this._previousPoint = this._currentPoint;
  41656. this._currentPoint = [e.lngLat.lng, e.lngLat.lat];
  41657. }
  41658. /**
  41659. * @event MiniMapViewModel#minimapmouseuped
  41660. * @description 鹰眼图按下后触发。
  41661. * @property {Object} result - 返回的数据。
  41662. */
  41663. this.fire('minimapmousedown', {
  41664. result: e
  41665. });
  41666. }
  41667. }, {
  41668. key: "_mouseMove",
  41669. value: function _mouseMove(e) {
  41670. this._ticking = false;
  41671. var miniMap = this._miniMap;
  41672. var features = miniMap.queryRenderedFeatures(e.point, {
  41673. layers: ['trackingRectFill']
  41674. });
  41675. if (!(this._isCursorOverFeature && features.length > 0)) {
  41676. this._isCursorOverFeature = features.length > 0;
  41677. this._miniMapCanvas.style.cursor = this._isCursorOverFeature ? 'move' : '';
  41678. }
  41679. if (this._isDragging) {
  41680. this._previousPoint = this._currentPoint;
  41681. this._currentPoint = [e.lngLat.lng, e.lngLat.lat];
  41682. var offset = [this._previousPoint[0] - this._currentPoint[0], this._previousPoint[1] - this._currentPoint[1]];
  41683. var newBounds = this._moveTrackingRect(offset);
  41684. this._parentMap.fitBounds(newBounds, {
  41685. duration: 80,
  41686. noMoveStart: true
  41687. });
  41688. }
  41689. /**
  41690. * @event MiniMapViewModel#minimapmousemove
  41691. * @description 鹰眼图移动后触发。
  41692. * @property {Object} result - 返回的数据。
  41693. */
  41694. this.fire('minimapmousemoved', {
  41695. result: e
  41696. });
  41697. }
  41698. }, {
  41699. key: "_mouseUp",
  41700. value: function _mouseUp(e) {
  41701. this._isDragging = false;
  41702. this._ticking = false;
  41703. /**
  41704. * @event MiniMapViewModel#minimapmouseup
  41705. * @description 鹰眼图点击后触发。
  41706. * @property {Object} result - 返回的数据。
  41707. */
  41708. this.fire('minimapmouseup', {
  41709. result: e
  41710. });
  41711. }
  41712. }, {
  41713. key: "_moveTrackingRect",
  41714. value: function _moveTrackingRect(offset) {
  41715. var source = this._trackingRect;
  41716. var data = source._data;
  41717. var bounds = data.properties.bounds;
  41718. if (bounds) {
  41719. bounds._ne.lat -= offset[1];
  41720. bounds._ne.lng -= offset[0];
  41721. bounds._sw.lat -= offset[1];
  41722. bounds._sw.lng -= offset[0];
  41723. this._convertBoundsToPoints(bounds);
  41724. source.setData(data);
  41725. return bounds;
  41726. }
  41727. }
  41728. }, {
  41729. key: "_setTrackingRectBounds",
  41730. value: function _setTrackingRectBounds(bounds) {
  41731. var source = this._trackingRect;
  41732. var data = source._data;
  41733. data.properties.bounds = bounds;
  41734. this._convertBoundsToPoints(bounds);
  41735. source.setData(data);
  41736. }
  41737. }, {
  41738. key: "_convertBoundsToPoints",
  41739. value: function _convertBoundsToPoints(bounds) {
  41740. var ne = bounds._ne;
  41741. var sw = bounds._sw;
  41742. var trc = this._trackingRectCoordinates;
  41743. ne = this._handleBounds(ne);
  41744. sw = this._handleBounds(sw);
  41745. trc[0][0][0] = ne.lng;
  41746. trc[0][0][1] = ne.lat;
  41747. trc[0][1][0] = sw.lng;
  41748. trc[0][1][1] = ne.lat;
  41749. trc[0][2][0] = sw.lng;
  41750. trc[0][2][1] = sw.lat;
  41751. trc[0][3][0] = ne.lng;
  41752. trc[0][3][1] = sw.lat;
  41753. trc[0][4][0] = ne.lng;
  41754. trc[0][4][1] = ne.lat;
  41755. }
  41756. }, {
  41757. key: "_update",
  41758. value: function _update(e) {
  41759. if (this._isDragging) {
  41760. return;
  41761. }
  41762. var parentBounds = this._parentMap.getBounds();
  41763. this._setTrackingRectBounds(parentBounds);
  41764. if (typeof this.options.zoomAdjust === 'function') {
  41765. this.options.zoomAdjust();
  41766. }
  41767. /**
  41768. * @event MiniMapViewModel#minimapmouseuped
  41769. * @description 鹰眼图更新后触发。
  41770. * @property {Object} result - 返回的数据。
  41771. */
  41772. this.fire('minimapupdated', {
  41773. result: e
  41774. });
  41775. }
  41776. }, {
  41777. key: "_zoomAdjust",
  41778. value: function _zoomAdjust() {
  41779. var miniMap = this._miniMap;
  41780. var parentMap = this._parentMap;
  41781. var parentZoom = parseFloat(parentMap.getZoom());
  41782. miniMap.setCenter(parentMap.getCenter());
  41783. var targetZoom = parentZoom - 5 > 0 ? parentZoom - 5 : 1;
  41784. miniMap.setZoom(targetZoom);
  41785. }
  41786. }, {
  41787. key: "_preventDefault",
  41788. value: function _preventDefault(e) {
  41789. e.preventDefault();
  41790. }
  41791. }, {
  41792. key: "_handleBounds",
  41793. value: function _handleBounds(latlng) {
  41794. if (latlng.lng > 180) {
  41795. latlng.lng = 180;
  41796. } else if (latlng.lng < -180) {
  41797. latlng.lng = -180;
  41798. }
  41799. if (latlng.lat > 90) {
  41800. latlng.lat = 90;
  41801. } else if (latlng.lat < -90) {
  41802. latlng.lat = -90;
  41803. }
  41804. return latlng;
  41805. }
  41806. }, {
  41807. key: "_setStyle",
  41808. value: function _setStyle() {
  41809. this._miniMap.setStyle(this._parentMap.getStyle(), {
  41810. localIdeographFontFamily: this._parentMap._localIdeographFontFamily
  41811. });
  41812. this._miniMap.setCRS(this._parentMap.getCRS());
  41813. this._addRectLayers();
  41814. this._update();
  41815. }
  41816. }, {
  41817. key: "_addRectLayers",
  41818. value: function _addRectLayers() {
  41819. var opts = this.options;
  41820. this._miniMap.addSource('trackingRect', {
  41821. type: 'geojson',
  41822. data: {
  41823. type: 'Feature',
  41824. properties: {
  41825. name: 'trackingRect'
  41826. },
  41827. geometry: {
  41828. type: 'Polygon',
  41829. coordinates: this._trackingRectCoordinates
  41830. }
  41831. }
  41832. });
  41833. this._miniMap.addLayer({
  41834. id: 'trackingRectOutline',
  41835. type: 'line',
  41836. source: 'trackingRect',
  41837. layout: {},
  41838. paint: {
  41839. 'line-color': opts.lineColor,
  41840. 'line-width': opts.lineWidth,
  41841. 'line-opacity': opts.lineOpacity
  41842. }
  41843. });
  41844. this._miniMap.addLayer({
  41845. id: 'trackingRectFill',
  41846. type: 'fill',
  41847. source: 'trackingRect',
  41848. layout: {},
  41849. paint: {
  41850. 'fill-color': opts.fillColor,
  41851. 'fill-opacity': opts.fillOpacity
  41852. }
  41853. });
  41854. this._trackingRect = this._miniMap.getSource('trackingRect');
  41855. }
  41856. }, {
  41857. key: "removed",
  41858. value: function removed() {
  41859. var parentMap = this._parentMap;
  41860. var miniMap = this._miniMap;
  41861. parentMap && parentMap.off('move', this._updateFn);
  41862. parentMap && parentMap.off('styledata', this._setStyleFn);
  41863. miniMap && miniMap.off('mousemove', this._mouseMoveFn);
  41864. miniMap && miniMap.off('mousedown', this._mouseDownFn);
  41865. miniMap && miniMap.off('mouseup', this._mouseUpFn);
  41866. miniMap && miniMap.remove();
  41867. }
  41868. }]);
  41869. return MiniMapViewModel;
  41870. }(_mapboxGlEnhance.default.Evented);
  41871. exports.default = MiniMapViewModel;
  41872. /***/ }),
  41873. /***/ "7a27":
  41874. /***/ (function(module, exports, __webpack_require__) {
  41875. "use strict";
  41876. var _interopRequireDefault = __webpack_require__("8e6d");
  41877. Object.defineProperty(exports, "__esModule", {
  41878. value: true
  41879. });
  41880. exports.default = void 0;
  41881. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  41882. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  41883. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  41884. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  41885. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  41886. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  41887. var _lodash = _interopRequireDefault(__webpack_require__("25a2"));
  41888. __webpack_require__("f240");
  41889. /**
  41890. * @class DataFlowLayerViewModel
  41891. * @category ViewModel
  41892. * @classdesc 数据流图层组件功能类。
  41893. * @param {mapboxgl.Map} map - mapboxgl map 对象。
  41894. * @param {String} serviceUrl - 数据流服务地址。
  41895. * @param {Object} [options] - 可选参数。
  41896. * @param {String} [options.layerId] - 图层 ID。
  41897. * @param {Object} [options.layerStyle] - 指定图层样式。
  41898. * @param {GeoJSONObject} [options.geometry] - 指定几何范围,该范围内的要素才能被订阅。
  41899. * @param {String} [options.excludeField] - 排除字段。
  41900. * @param {Object} [options.styleOptions] - style OPtion
  41901. * @fires DataFlowLayerViewModel#subscribesucceeded
  41902. * @fires DataFlowLayerViewModel#subscribefailed
  41903. * @fires DataFlowLayerViewModel#dataUpdated
  41904. */
  41905. var DataFlowLayerViewModel =
  41906. /*#__PURE__*/
  41907. function (_mapboxgl$Evented) {
  41908. (0, _inherits2.default)(DataFlowLayerViewModel, _mapboxgl$Evented);
  41909. function DataFlowLayerViewModel(serviceUrl, options) {
  41910. var _this;
  41911. (0, _classCallCheck2.default)(this, DataFlowLayerViewModel);
  41912. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(DataFlowLayerViewModel).call(this));
  41913. _this.options = options || {};
  41914. _this.serviceUrl = serviceUrl;
  41915. _this.sourceID = options.layerId || 'dataFlow' + new Date().getTime();
  41916. _this.layerStyle = options.layerStyle || {};
  41917. return _this;
  41918. }
  41919. (0, _createClass2.default)(DataFlowLayerViewModel, [{
  41920. key: "setMap",
  41921. value: function setMap(mapInfo) {
  41922. var map = mapInfo.map;
  41923. if (!map) {
  41924. throw new Error('map is requierd');
  41925. }
  41926. this.map = map;
  41927. if (this.options.registerToken) {
  41928. SuperMap.SecurityManager.registerToken(this.serviceUrl, this.options.registerToken);
  41929. }
  41930. this._initializeDataFlow();
  41931. }
  41932. }, {
  41933. key: "setLaterStyle",
  41934. value: function setLaterStyle(layerStyle) {
  41935. this.layerStyle = layerStyle;
  41936. }
  41937. /**
  41938. * @function DataFlowLayerViewModel.prototype.setExcludeField
  41939. * @description 设置唯一字段。
  41940. * @param {string} excludeField - 唯一字段。
  41941. */
  41942. }, {
  41943. key: "setExcludeField",
  41944. value: function setExcludeField(excludeField) {
  41945. this.dataService.setExcludeField(excludeField);
  41946. this.options.excludeField = excludeField;
  41947. return this;
  41948. }
  41949. /**
  41950. * @function DataFlowLayerViewModel.prototype.setGeometry
  41951. * @description 设置集合要素。
  41952. * @param {GeoJSONObject} geometry - 待设置的 GeoJSON 几何要素对象。
  41953. */
  41954. }, {
  41955. key: "setGeometry",
  41956. value: function setGeometry(geometry) {
  41957. this.dataService.setGeometry(geometry);
  41958. this.options.geometry = geometry;
  41959. return this;
  41960. }
  41961. }, {
  41962. key: "_initializeDataFlow",
  41963. value: function _initializeDataFlow() {
  41964. var _this2 = this;
  41965. var dataService = new _mapboxGlEnhance.default.supermap.DataFlowService(this.serviceUrl, {
  41966. geometry: this.options.geometry,
  41967. excludeField: this.options.excludeField
  41968. }).initSubscribe();
  41969. dataService.on('subscribeSocketConnected', function (e) {
  41970. /**
  41971. * @event DataFlowLayerViewModel#subscribesucceeded
  41972. * @description 数据订阅成功后触发。
  41973. * @property {Object} e - 事件对象。
  41974. */
  41975. _this2.fire('subscribesucceeded', e);
  41976. });
  41977. dataService.on('subscribeSocketError', function (e) {
  41978. /**
  41979. * @event DataFlowLayerViewModel#subscribefailed
  41980. * @description 数据订阅失败后触发。
  41981. * @property {Object} e - 事件对象。
  41982. */
  41983. _this2.fire('subscribefailed', e);
  41984. });
  41985. dataService.on('messageSucceeded', function (msg) {
  41986. _this2._addLayer(msg);
  41987. });
  41988. this.dataService = dataService;
  41989. }
  41990. }, {
  41991. key: "_addLayer",
  41992. value: function _addLayer(msg) {
  41993. if (!msg.featureResult) {
  41994. return;
  41995. }
  41996. var feature = msg.featureResult;
  41997. var type = feature.geometry.type;
  41998. var layerStyle = this.layerStyle;
  41999. if (!this.map.getSource(this.sourceID)) {
  42000. this.map.addSource(this.sourceID, {
  42001. type: 'geojson',
  42002. data: {
  42003. type: 'FeatureCollection',
  42004. features: [feature]
  42005. }
  42006. });
  42007. if (type === 'Point') {
  42008. var pointType = 'circle';
  42009. var pointPaint = {
  42010. 'circle-radius': 6,
  42011. 'circle-color': 'red'
  42012. };
  42013. if (layerStyle.symbol) {
  42014. pointType = 'symbol';
  42015. pointPaint = {};
  42016. }
  42017. this.map.addLayer({
  42018. id: this.sourceID,
  42019. type: pointType,
  42020. source: this.sourceID,
  42021. paint: layerStyle[pointType] && layerStyle[pointType].paint || pointPaint,
  42022. layout: layerStyle[pointType] && layerStyle[pointType].layout || {}
  42023. });
  42024. } else if (type === 'MultiPolygon' || type === 'Polygon') {
  42025. this.map.addLayer({
  42026. id: this.sourceID,
  42027. type: 'fill',
  42028. paint: layerStyle.fill && layerStyle.fill.paint || {
  42029. 'fill-color': 'red',
  42030. 'fill-opacity': 1
  42031. },
  42032. layout: layerStyle.fill && layerStyle.fill.layout || {},
  42033. source: this.sourceID
  42034. });
  42035. } else if (type === 'LineString' || type === 'Line' || type === 'MultiLineString') {
  42036. this.map.addLayer({
  42037. id: this.sourceID,
  42038. type: 'line',
  42039. paint: layerStyle.line && layerStyle.line.paint || {
  42040. 'line-width': 5,
  42041. 'line-color': 'red',
  42042. 'line-opacity': 1
  42043. },
  42044. layout: layerStyle.line && layerStyle.line.layout || {},
  42045. source: this.sourceID
  42046. });
  42047. }
  42048. } else {
  42049. // update layer
  42050. var features = (0, _lodash.default)(this.map.getSource(this.sourceID)._data.features);
  42051. var has = false;
  42052. features.map(function (item, index) {
  42053. if (item.properties.id === feature.properties.id) {
  42054. has = true;
  42055. features[index] = feature;
  42056. }
  42057. });
  42058. if (!has) {
  42059. features.push(feature);
  42060. }
  42061. this.map.getSource(this.sourceID).setData({
  42062. type: 'FeatureCollection',
  42063. features: features
  42064. });
  42065. /**
  42066. * @event DataFlowLayerViewModel#dataUpdated
  42067. * @description 数据更新成功后触发。
  42068. * @property {GeoJSONObject} data - 更新的数据。
  42069. * @property {mapboxgl.Map} map - MapBoxGL Map 对象。
  42070. */
  42071. this.fire('dataupdated', {
  42072. data: feature,
  42073. map: this.map
  42074. });
  42075. }
  42076. }
  42077. }, {
  42078. key: "removed",
  42079. value: function removed() {
  42080. var map = this.map,
  42081. sourceID = this.sourceID;
  42082. if (map && sourceID && map.getSource(sourceID)) {
  42083. map.getLayer(sourceID) && map.removeLayer(sourceID);
  42084. map.removeSource(sourceID);
  42085. }
  42086. }
  42087. }]);
  42088. return DataFlowLayerViewModel;
  42089. }(_mapboxGlEnhance.default.Evented);
  42090. exports.default = DataFlowLayerViewModel;
  42091. /***/ }),
  42092. /***/ "7ae5":
  42093. /***/ (function(module, exports) {
  42094. function _typeof(obj) {
  42095. if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
  42096. module.exports = _typeof = function _typeof(obj) {
  42097. return typeof obj;
  42098. };
  42099. } else {
  42100. module.exports = _typeof = function _typeof(obj) {
  42101. return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  42102. };
  42103. }
  42104. return _typeof(obj);
  42105. }
  42106. module.exports = _typeof;
  42107. /***/ }),
  42108. /***/ "7b98":
  42109. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  42110. "use strict";
  42111. __webpack_require__.r(__webpack_exports__);
  42112. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_WebMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("0fd2");
  42113. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_WebMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_WebMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__);
  42114. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_WebMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_WebMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  42115. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_WebMap_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default.a);
  42116. /***/ }),
  42117. /***/ "7cfc":
  42118. /***/ (function(module, exports, __webpack_require__) {
  42119. /**
  42120. * Copyright (c) 2014-present, Facebook, Inc.
  42121. *
  42122. * This source code is licensed under the MIT license found in the
  42123. * LICENSE file in the root directory of this source tree.
  42124. */
  42125. var runtime = (function (exports) {
  42126. "use strict";
  42127. var Op = Object.prototype;
  42128. var hasOwn = Op.hasOwnProperty;
  42129. var undefined; // More compressible than void 0.
  42130. var $Symbol = typeof Symbol === "function" ? Symbol : {};
  42131. var iteratorSymbol = $Symbol.iterator || "@@iterator";
  42132. var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
  42133. var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
  42134. function wrap(innerFn, outerFn, self, tryLocsList) {
  42135. // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
  42136. var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
  42137. var generator = Object.create(protoGenerator.prototype);
  42138. var context = new Context(tryLocsList || []);
  42139. // The ._invoke method unifies the implementations of the .next,
  42140. // .throw, and .return methods.
  42141. generator._invoke = makeInvokeMethod(innerFn, self, context);
  42142. return generator;
  42143. }
  42144. exports.wrap = wrap;
  42145. // Try/catch helper to minimize deoptimizations. Returns a completion
  42146. // record like context.tryEntries[i].completion. This interface could
  42147. // have been (and was previously) designed to take a closure to be
  42148. // invoked without arguments, but in all the cases we care about we
  42149. // already have an existing method we want to call, so there's no need
  42150. // to create a new function object. We can even get away with assuming
  42151. // the method takes exactly one argument, since that happens to be true
  42152. // in every case, so we don't have to touch the arguments object. The
  42153. // only additional allocation required is the completion record, which
  42154. // has a stable shape and so hopefully should be cheap to allocate.
  42155. function tryCatch(fn, obj, arg) {
  42156. try {
  42157. return { type: "normal", arg: fn.call(obj, arg) };
  42158. } catch (err) {
  42159. return { type: "throw", arg: err };
  42160. }
  42161. }
  42162. var GenStateSuspendedStart = "suspendedStart";
  42163. var GenStateSuspendedYield = "suspendedYield";
  42164. var GenStateExecuting = "executing";
  42165. var GenStateCompleted = "completed";
  42166. // Returning this object from the innerFn has the same effect as
  42167. // breaking out of the dispatch switch statement.
  42168. var ContinueSentinel = {};
  42169. // Dummy constructor functions that we use as the .constructor and
  42170. // .constructor.prototype properties for functions that return Generator
  42171. // objects. For full spec compliance, you may wish to configure your
  42172. // minifier not to mangle the names of these two functions.
  42173. function Generator() {}
  42174. function GeneratorFunction() {}
  42175. function GeneratorFunctionPrototype() {}
  42176. // This is a polyfill for %IteratorPrototype% for environments that
  42177. // don't natively support it.
  42178. var IteratorPrototype = {};
  42179. IteratorPrototype[iteratorSymbol] = function () {
  42180. return this;
  42181. };
  42182. var getProto = Object.getPrototypeOf;
  42183. var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
  42184. if (NativeIteratorPrototype &&
  42185. NativeIteratorPrototype !== Op &&
  42186. hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
  42187. // This environment has a native %IteratorPrototype%; use it instead
  42188. // of the polyfill.
  42189. IteratorPrototype = NativeIteratorPrototype;
  42190. }
  42191. var Gp = GeneratorFunctionPrototype.prototype =
  42192. Generator.prototype = Object.create(IteratorPrototype);
  42193. GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
  42194. GeneratorFunctionPrototype.constructor = GeneratorFunction;
  42195. GeneratorFunctionPrototype[toStringTagSymbol] =
  42196. GeneratorFunction.displayName = "GeneratorFunction";
  42197. // Helper for defining the .next, .throw, and .return methods of the
  42198. // Iterator interface in terms of a single ._invoke method.
  42199. function defineIteratorMethods(prototype) {
  42200. ["next", "throw", "return"].forEach(function(method) {
  42201. prototype[method] = function(arg) {
  42202. return this._invoke(method, arg);
  42203. };
  42204. });
  42205. }
  42206. exports.isGeneratorFunction = function(genFun) {
  42207. var ctor = typeof genFun === "function" && genFun.constructor;
  42208. return ctor
  42209. ? ctor === GeneratorFunction ||
  42210. // For the native GeneratorFunction constructor, the best we can
  42211. // do is to check its .name property.
  42212. (ctor.displayName || ctor.name) === "GeneratorFunction"
  42213. : false;
  42214. };
  42215. exports.mark = function(genFun) {
  42216. if (Object.setPrototypeOf) {
  42217. Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
  42218. } else {
  42219. genFun.__proto__ = GeneratorFunctionPrototype;
  42220. if (!(toStringTagSymbol in genFun)) {
  42221. genFun[toStringTagSymbol] = "GeneratorFunction";
  42222. }
  42223. }
  42224. genFun.prototype = Object.create(Gp);
  42225. return genFun;
  42226. };
  42227. // Within the body of any async function, `await x` is transformed to
  42228. // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
  42229. // `hasOwn.call(value, "__await")` to determine if the yielded value is
  42230. // meant to be awaited.
  42231. exports.awrap = function(arg) {
  42232. return { __await: arg };
  42233. };
  42234. function AsyncIterator(generator) {
  42235. function invoke(method, arg, resolve, reject) {
  42236. var record = tryCatch(generator[method], generator, arg);
  42237. if (record.type === "throw") {
  42238. reject(record.arg);
  42239. } else {
  42240. var result = record.arg;
  42241. var value = result.value;
  42242. if (value &&
  42243. typeof value === "object" &&
  42244. hasOwn.call(value, "__await")) {
  42245. return Promise.resolve(value.__await).then(function(value) {
  42246. invoke("next", value, resolve, reject);
  42247. }, function(err) {
  42248. invoke("throw", err, resolve, reject);
  42249. });
  42250. }
  42251. return Promise.resolve(value).then(function(unwrapped) {
  42252. // When a yielded Promise is resolved, its final value becomes
  42253. // the .value of the Promise<{value,done}> result for the
  42254. // current iteration.
  42255. result.value = unwrapped;
  42256. resolve(result);
  42257. }, function(error) {
  42258. // If a rejected Promise was yielded, throw the rejection back
  42259. // into the async generator function so it can be handled there.
  42260. return invoke("throw", error, resolve, reject);
  42261. });
  42262. }
  42263. }
  42264. var previousPromise;
  42265. function enqueue(method, arg) {
  42266. function callInvokeWithMethodAndArg() {
  42267. return new Promise(function(resolve, reject) {
  42268. invoke(method, arg, resolve, reject);
  42269. });
  42270. }
  42271. return previousPromise =
  42272. // If enqueue has been called before, then we want to wait until
  42273. // all previous Promises have been resolved before calling invoke,
  42274. // so that results are always delivered in the correct order. If
  42275. // enqueue has not been called before, then it is important to
  42276. // call invoke immediately, without waiting on a callback to fire,
  42277. // so that the async generator function has the opportunity to do
  42278. // any necessary setup in a predictable way. This predictability
  42279. // is why the Promise constructor synchronously invokes its
  42280. // executor callback, and why async functions synchronously
  42281. // execute code before the first await. Since we implement simple
  42282. // async functions in terms of async generators, it is especially
  42283. // important to get this right, even though it requires care.
  42284. previousPromise ? previousPromise.then(
  42285. callInvokeWithMethodAndArg,
  42286. // Avoid propagating failures to Promises returned by later
  42287. // invocations of the iterator.
  42288. callInvokeWithMethodAndArg
  42289. ) : callInvokeWithMethodAndArg();
  42290. }
  42291. // Define the unified helper method that is used to implement .next,
  42292. // .throw, and .return (see defineIteratorMethods).
  42293. this._invoke = enqueue;
  42294. }
  42295. defineIteratorMethods(AsyncIterator.prototype);
  42296. AsyncIterator.prototype[asyncIteratorSymbol] = function () {
  42297. return this;
  42298. };
  42299. exports.AsyncIterator = AsyncIterator;
  42300. // Note that simple async functions are implemented on top of
  42301. // AsyncIterator objects; they just return a Promise for the value of
  42302. // the final result produced by the iterator.
  42303. exports.async = function(innerFn, outerFn, self, tryLocsList) {
  42304. var iter = new AsyncIterator(
  42305. wrap(innerFn, outerFn, self, tryLocsList)
  42306. );
  42307. return exports.isGeneratorFunction(outerFn)
  42308. ? iter // If outerFn is a generator, return the full iterator.
  42309. : iter.next().then(function(result) {
  42310. return result.done ? result.value : iter.next();
  42311. });
  42312. };
  42313. function makeInvokeMethod(innerFn, self, context) {
  42314. var state = GenStateSuspendedStart;
  42315. return function invoke(method, arg) {
  42316. if (state === GenStateExecuting) {
  42317. throw new Error("Generator is already running");
  42318. }
  42319. if (state === GenStateCompleted) {
  42320. if (method === "throw") {
  42321. throw arg;
  42322. }
  42323. // Be forgiving, per 25.3.3.3.3 of the spec:
  42324. // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
  42325. return doneResult();
  42326. }
  42327. context.method = method;
  42328. context.arg = arg;
  42329. while (true) {
  42330. var delegate = context.delegate;
  42331. if (delegate) {
  42332. var delegateResult = maybeInvokeDelegate(delegate, context);
  42333. if (delegateResult) {
  42334. if (delegateResult === ContinueSentinel) continue;
  42335. return delegateResult;
  42336. }
  42337. }
  42338. if (context.method === "next") {
  42339. // Setting context._sent for legacy support of Babel's
  42340. // function.sent implementation.
  42341. context.sent = context._sent = context.arg;
  42342. } else if (context.method === "throw") {
  42343. if (state === GenStateSuspendedStart) {
  42344. state = GenStateCompleted;
  42345. throw context.arg;
  42346. }
  42347. context.dispatchException(context.arg);
  42348. } else if (context.method === "return") {
  42349. context.abrupt("return", context.arg);
  42350. }
  42351. state = GenStateExecuting;
  42352. var record = tryCatch(innerFn, self, context);
  42353. if (record.type === "normal") {
  42354. // If an exception is thrown from innerFn, we leave state ===
  42355. // GenStateExecuting and loop back for another invocation.
  42356. state = context.done
  42357. ? GenStateCompleted
  42358. : GenStateSuspendedYield;
  42359. if (record.arg === ContinueSentinel) {
  42360. continue;
  42361. }
  42362. return {
  42363. value: record.arg,
  42364. done: context.done
  42365. };
  42366. } else if (record.type === "throw") {
  42367. state = GenStateCompleted;
  42368. // Dispatch the exception by looping back around to the
  42369. // context.dispatchException(context.arg) call above.
  42370. context.method = "throw";
  42371. context.arg = record.arg;
  42372. }
  42373. }
  42374. };
  42375. }
  42376. // Call delegate.iterator[context.method](context.arg) and handle the
  42377. // result, either by returning a { value, done } result from the
  42378. // delegate iterator, or by modifying context.method and context.arg,
  42379. // setting context.delegate to null, and returning the ContinueSentinel.
  42380. function maybeInvokeDelegate(delegate, context) {
  42381. var method = delegate.iterator[context.method];
  42382. if (method === undefined) {
  42383. // A .throw or .return when the delegate iterator has no .throw
  42384. // method always terminates the yield* loop.
  42385. context.delegate = null;
  42386. if (context.method === "throw") {
  42387. // Note: ["return"] must be used for ES3 parsing compatibility.
  42388. if (delegate.iterator["return"]) {
  42389. // If the delegate iterator has a return method, give it a
  42390. // chance to clean up.
  42391. context.method = "return";
  42392. context.arg = undefined;
  42393. maybeInvokeDelegate(delegate, context);
  42394. if (context.method === "throw") {
  42395. // If maybeInvokeDelegate(context) changed context.method from
  42396. // "return" to "throw", let that override the TypeError below.
  42397. return ContinueSentinel;
  42398. }
  42399. }
  42400. context.method = "throw";
  42401. context.arg = new TypeError(
  42402. "The iterator does not provide a 'throw' method");
  42403. }
  42404. return ContinueSentinel;
  42405. }
  42406. var record = tryCatch(method, delegate.iterator, context.arg);
  42407. if (record.type === "throw") {
  42408. context.method = "throw";
  42409. context.arg = record.arg;
  42410. context.delegate = null;
  42411. return ContinueSentinel;
  42412. }
  42413. var info = record.arg;
  42414. if (! info) {
  42415. context.method = "throw";
  42416. context.arg = new TypeError("iterator result is not an object");
  42417. context.delegate = null;
  42418. return ContinueSentinel;
  42419. }
  42420. if (info.done) {
  42421. // Assign the result of the finished delegate to the temporary
  42422. // variable specified by delegate.resultName (see delegateYield).
  42423. context[delegate.resultName] = info.value;
  42424. // Resume execution at the desired location (see delegateYield).
  42425. context.next = delegate.nextLoc;
  42426. // If context.method was "throw" but the delegate handled the
  42427. // exception, let the outer generator proceed normally. If
  42428. // context.method was "next", forget context.arg since it has been
  42429. // "consumed" by the delegate iterator. If context.method was
  42430. // "return", allow the original .return call to continue in the
  42431. // outer generator.
  42432. if (context.method !== "return") {
  42433. context.method = "next";
  42434. context.arg = undefined;
  42435. }
  42436. } else {
  42437. // Re-yield the result returned by the delegate method.
  42438. return info;
  42439. }
  42440. // The delegate iterator is finished, so forget it and continue with
  42441. // the outer generator.
  42442. context.delegate = null;
  42443. return ContinueSentinel;
  42444. }
  42445. // Define Generator.prototype.{next,throw,return} in terms of the
  42446. // unified ._invoke helper method.
  42447. defineIteratorMethods(Gp);
  42448. Gp[toStringTagSymbol] = "Generator";
  42449. // A Generator should always return itself as the iterator object when the
  42450. // @@iterator function is called on it. Some browsers' implementations of the
  42451. // iterator prototype chain incorrectly implement this, causing the Generator
  42452. // object to not be returned from this call. This ensures that doesn't happen.
  42453. // See https://github.com/facebook/regenerator/issues/274 for more details.
  42454. Gp[iteratorSymbol] = function() {
  42455. return this;
  42456. };
  42457. Gp.toString = function() {
  42458. return "[object Generator]";
  42459. };
  42460. function pushTryEntry(locs) {
  42461. var entry = { tryLoc: locs[0] };
  42462. if (1 in locs) {
  42463. entry.catchLoc = locs[1];
  42464. }
  42465. if (2 in locs) {
  42466. entry.finallyLoc = locs[2];
  42467. entry.afterLoc = locs[3];
  42468. }
  42469. this.tryEntries.push(entry);
  42470. }
  42471. function resetTryEntry(entry) {
  42472. var record = entry.completion || {};
  42473. record.type = "normal";
  42474. delete record.arg;
  42475. entry.completion = record;
  42476. }
  42477. function Context(tryLocsList) {
  42478. // The root entry object (effectively a try statement without a catch
  42479. // or a finally block) gives us a place to store values thrown from
  42480. // locations where there is no enclosing try statement.
  42481. this.tryEntries = [{ tryLoc: "root" }];
  42482. tryLocsList.forEach(pushTryEntry, this);
  42483. this.reset(true);
  42484. }
  42485. exports.keys = function(object) {
  42486. var keys = [];
  42487. for (var key in object) {
  42488. keys.push(key);
  42489. }
  42490. keys.reverse();
  42491. // Rather than returning an object with a next method, we keep
  42492. // things simple and return the next function itself.
  42493. return function next() {
  42494. while (keys.length) {
  42495. var key = keys.pop();
  42496. if (key in object) {
  42497. next.value = key;
  42498. next.done = false;
  42499. return next;
  42500. }
  42501. }
  42502. // To avoid creating an additional object, we just hang the .value
  42503. // and .done properties off the next function object itself. This
  42504. // also ensures that the minifier will not anonymize the function.
  42505. next.done = true;
  42506. return next;
  42507. };
  42508. };
  42509. function values(iterable) {
  42510. if (iterable) {
  42511. var iteratorMethod = iterable[iteratorSymbol];
  42512. if (iteratorMethod) {
  42513. return iteratorMethod.call(iterable);
  42514. }
  42515. if (typeof iterable.next === "function") {
  42516. return iterable;
  42517. }
  42518. if (!isNaN(iterable.length)) {
  42519. var i = -1, next = function next() {
  42520. while (++i < iterable.length) {
  42521. if (hasOwn.call(iterable, i)) {
  42522. next.value = iterable[i];
  42523. next.done = false;
  42524. return next;
  42525. }
  42526. }
  42527. next.value = undefined;
  42528. next.done = true;
  42529. return next;
  42530. };
  42531. return next.next = next;
  42532. }
  42533. }
  42534. // Return an iterator with no values.
  42535. return { next: doneResult };
  42536. }
  42537. exports.values = values;
  42538. function doneResult() {
  42539. return { value: undefined, done: true };
  42540. }
  42541. Context.prototype = {
  42542. constructor: Context,
  42543. reset: function(skipTempReset) {
  42544. this.prev = 0;
  42545. this.next = 0;
  42546. // Resetting context._sent for legacy support of Babel's
  42547. // function.sent implementation.
  42548. this.sent = this._sent = undefined;
  42549. this.done = false;
  42550. this.delegate = null;
  42551. this.method = "next";
  42552. this.arg = undefined;
  42553. this.tryEntries.forEach(resetTryEntry);
  42554. if (!skipTempReset) {
  42555. for (var name in this) {
  42556. // Not sure about the optimal order of these conditions:
  42557. if (name.charAt(0) === "t" &&
  42558. hasOwn.call(this, name) &&
  42559. !isNaN(+name.slice(1))) {
  42560. this[name] = undefined;
  42561. }
  42562. }
  42563. }
  42564. },
  42565. stop: function() {
  42566. this.done = true;
  42567. var rootEntry = this.tryEntries[0];
  42568. var rootRecord = rootEntry.completion;
  42569. if (rootRecord.type === "throw") {
  42570. throw rootRecord.arg;
  42571. }
  42572. return this.rval;
  42573. },
  42574. dispatchException: function(exception) {
  42575. if (this.done) {
  42576. throw exception;
  42577. }
  42578. var context = this;
  42579. function handle(loc, caught) {
  42580. record.type = "throw";
  42581. record.arg = exception;
  42582. context.next = loc;
  42583. if (caught) {
  42584. // If the dispatched exception was caught by a catch block,
  42585. // then let that catch block handle the exception normally.
  42586. context.method = "next";
  42587. context.arg = undefined;
  42588. }
  42589. return !! caught;
  42590. }
  42591. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  42592. var entry = this.tryEntries[i];
  42593. var record = entry.completion;
  42594. if (entry.tryLoc === "root") {
  42595. // Exception thrown outside of any try block that could handle
  42596. // it, so set the completion value of the entire function to
  42597. // throw the exception.
  42598. return handle("end");
  42599. }
  42600. if (entry.tryLoc <= this.prev) {
  42601. var hasCatch = hasOwn.call(entry, "catchLoc");
  42602. var hasFinally = hasOwn.call(entry, "finallyLoc");
  42603. if (hasCatch && hasFinally) {
  42604. if (this.prev < entry.catchLoc) {
  42605. return handle(entry.catchLoc, true);
  42606. } else if (this.prev < entry.finallyLoc) {
  42607. return handle(entry.finallyLoc);
  42608. }
  42609. } else if (hasCatch) {
  42610. if (this.prev < entry.catchLoc) {
  42611. return handle(entry.catchLoc, true);
  42612. }
  42613. } else if (hasFinally) {
  42614. if (this.prev < entry.finallyLoc) {
  42615. return handle(entry.finallyLoc);
  42616. }
  42617. } else {
  42618. throw new Error("try statement without catch or finally");
  42619. }
  42620. }
  42621. }
  42622. },
  42623. abrupt: function(type, arg) {
  42624. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  42625. var entry = this.tryEntries[i];
  42626. if (entry.tryLoc <= this.prev &&
  42627. hasOwn.call(entry, "finallyLoc") &&
  42628. this.prev < entry.finallyLoc) {
  42629. var finallyEntry = entry;
  42630. break;
  42631. }
  42632. }
  42633. if (finallyEntry &&
  42634. (type === "break" ||
  42635. type === "continue") &&
  42636. finallyEntry.tryLoc <= arg &&
  42637. arg <= finallyEntry.finallyLoc) {
  42638. // Ignore the finally entry if control is not jumping to a
  42639. // location outside the try/catch block.
  42640. finallyEntry = null;
  42641. }
  42642. var record = finallyEntry ? finallyEntry.completion : {};
  42643. record.type = type;
  42644. record.arg = arg;
  42645. if (finallyEntry) {
  42646. this.method = "next";
  42647. this.next = finallyEntry.finallyLoc;
  42648. return ContinueSentinel;
  42649. }
  42650. return this.complete(record);
  42651. },
  42652. complete: function(record, afterLoc) {
  42653. if (record.type === "throw") {
  42654. throw record.arg;
  42655. }
  42656. if (record.type === "break" ||
  42657. record.type === "continue") {
  42658. this.next = record.arg;
  42659. } else if (record.type === "return") {
  42660. this.rval = this.arg = record.arg;
  42661. this.method = "return";
  42662. this.next = "end";
  42663. } else if (record.type === "normal" && afterLoc) {
  42664. this.next = afterLoc;
  42665. }
  42666. return ContinueSentinel;
  42667. },
  42668. finish: function(finallyLoc) {
  42669. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  42670. var entry = this.tryEntries[i];
  42671. if (entry.finallyLoc === finallyLoc) {
  42672. this.complete(entry.completion, entry.afterLoc);
  42673. resetTryEntry(entry);
  42674. return ContinueSentinel;
  42675. }
  42676. }
  42677. },
  42678. "catch": function(tryLoc) {
  42679. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  42680. var entry = this.tryEntries[i];
  42681. if (entry.tryLoc === tryLoc) {
  42682. var record = entry.completion;
  42683. if (record.type === "throw") {
  42684. var thrown = record.arg;
  42685. resetTryEntry(entry);
  42686. }
  42687. return thrown;
  42688. }
  42689. }
  42690. // The context.catch method must only be called with a location
  42691. // argument that corresponds to a known catch block.
  42692. throw new Error("illegal catch attempt");
  42693. },
  42694. delegateYield: function(iterable, resultName, nextLoc) {
  42695. this.delegate = {
  42696. iterator: values(iterable),
  42697. resultName: resultName,
  42698. nextLoc: nextLoc
  42699. };
  42700. if (this.method === "next") {
  42701. // Deliberately forget the last sent value so that we don't
  42702. // accidentally pass it on to the delegate.
  42703. this.arg = undefined;
  42704. }
  42705. return ContinueSentinel;
  42706. }
  42707. };
  42708. // Regardless of whether this script is executing as a CommonJS module
  42709. // or not, return the runtime object so that we can declare the variable
  42710. // regeneratorRuntime in the outer scope, which allows this module to be
  42711. // injected easily by `bin/regenerator --include-runtime script.js`.
  42712. return exports;
  42713. }(
  42714. // If this script is executing as a CommonJS module, use module.exports
  42715. // as the regeneratorRuntime namespace. Otherwise create a new empty
  42716. // object. Either way, the resulting object will be used to initialize
  42717. // the regeneratorRuntime variable at the top of this file.
  42718. true ? module.exports : undefined
  42719. ));
  42720. try {
  42721. regeneratorRuntime = runtime;
  42722. } catch (accidentalStrictMode) {
  42723. // This module should not be running in strict mode, so the above
  42724. // assignment should always work unless something is misconfigured. Just
  42725. // in case runtime.js accidentally runs in strict mode, we can escape
  42726. // strict mode using a global Function call. This could conceivably fail
  42727. // if a Content Security Policy forbids using Function, but in that case
  42728. // the proper solution is to fix the accidental strict mode problem. If
  42729. // you've misconfigured your bundler to force strict mode and applied a
  42730. // CSP to forbid Function, and you're not willing to fix either of those
  42731. // problems, please detail your unique predicament in a GitHub issue.
  42732. Function("r", "regeneratorRuntime = r")(runtime);
  42733. }
  42734. /***/ }),
  42735. /***/ "7d80":
  42736. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  42737. "use strict";
  42738. __webpack_require__.r(__webpack_exports__);
  42739. /* harmony import */ var _DeckglLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("cedf");
  42740. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _DeckglLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _DeckglLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  42741. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  42742. var render, staticRenderFns
  42743. /* normalize component */
  42744. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  42745. _DeckglLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  42746. render,
  42747. staticRenderFns,
  42748. false,
  42749. null,
  42750. null,
  42751. null
  42752. )
  42753. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  42754. /***/ }),
  42755. /***/ "7de9":
  42756. /***/ (function(module, exports) {
  42757. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhYAAAD+CAYAAABmz0wVAAAABGdBTUEAALGPC/xhBQAADVFJREFUeAHt2zFuEwEARFGCOExuRoGoEF3KtFSIIpyC43AbUIpIabzJSpaYT16aWNn1ZvzGxcgr33z9+evPOz8ECBAgQIAAgWsIGBbXUHQNAgQIECBA4HFTvMdAgAABAgQIELiWgGFxLUnXIUCAAAECBN4ZFt4EBAgQIECAwNUEDIurUboQAQIECBAgYFh4DxAgQIAAAQJXE/hwdKVvt598FfUIyDECBAgQIPAGBb78/nFz6WUfDovHJx09+dJF/Z0AAQIECBD4PwVe+tDBrZD/s3evigABAgQI/BOBFz+xeEr1+f7BbZEnDL8JECBAgMAbE/h+9/Hi7Y/nFK8eFo9Peu1Fn/8DjwkQIECAAIG2wJkPF9wKaXctPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpAcNiqg5hCBAgQIBAW8CwaPcnPQECBAgQmBIwLKbqEIYAAQIECLQFDIt2f9ITIECAAIEpgQ9n0ny+f/hz5nznEiBAgAABAm9L4NXD4vvdx5u3RePVEiBAgAABAmcF3Ao5K+Z8AgQIECBA4KLAi59YfLv95PbHRT4HCBAgQIAAgecCh8Piy+8fbn881/KYAAECBAgQOBRwK+SQx0ECBAgQIEDgjIBhcUbLuQQIECBAgMChgGFxyOMgAQIECBAgcEbAsDij5VwCBAgQIEDgUMCwOORxkAABAgQIEDgjcPP15y9fJz0j5lwCBAgQIEDgosBfCPklARb6dIIAAAAASUVORK5CYII="
  42758. /***/ }),
  42759. /***/ "7e38":
  42760. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  42761. "use strict";
  42762. __webpack_require__.r(__webpack_exports__);
  42763. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MiniMap_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8216");
  42764. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MiniMap_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MiniMap_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  42765. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MiniMap_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MiniMap_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  42766. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_MiniMap_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  42767. /***/ }),
  42768. /***/ "7fd4":
  42769. /***/ (function(module, exports, __webpack_require__) {
  42770. "use strict";
  42771. Object.defineProperty(exports, "__esModule", {
  42772. value: true
  42773. });
  42774. exports.default = void 0;
  42775. var _default = {
  42776. dateTimeFormat: {
  42777. date: {
  42778. year: 'numeric',
  42779. month: 'short',
  42780. day: 'numeric'
  42781. },
  42782. date_second: {
  42783. year: 'numeric',
  42784. month: 'short',
  42785. day: 'numeric',
  42786. hour: 'numeric',
  42787. minute: 'numeric',
  42788. second: 'numeric'
  42789. },
  42790. date_second_week: {
  42791. year: 'numeric',
  42792. month: 'short',
  42793. day: 'numeric',
  42794. weekday: 'long',
  42795. hour: 'numeric',
  42796. minute: 'numeric',
  42797. second: 'numeric'
  42798. }
  42799. },
  42800. // messageTemplate
  42801. warning: {
  42802. unsupportedVideoAddress: 'The video address is illegal',
  42803. unavailableVideo: 'This video is temporarily unavailable, please try again later',
  42804. mapNotLoaded: 'The associated map has not been loaded yet, please wait for a second',
  42805. unassociatedMap: 'You need to configure the associated map!'
  42806. },
  42807. success: {},
  42808. info: {
  42809. loading: 'Loading...',
  42810. pressEscToExit: 'Press the ESC key or click the close button to exit'
  42811. },
  42812. unit: {
  42813. kilometers: 'km',
  42814. miles: 'mi',
  42815. meters: 'm',
  42816. yards: 'yd',
  42817. feet: 'ft',
  42818. squarekilometers: 'sq km',
  42819. squaremiles: 'sq mi',
  42820. squaremeters: 'sq m',
  42821. squareyards: 'sq yd',
  42822. squarefeet: 'sq ft'
  42823. },
  42824. error: {},
  42825. commontypes: {
  42826. restData: 'SuperMap Rest Data Service',
  42827. restMap: 'SuperMap Rest Map Service',
  42828. addressMatch: 'SuperMap Address Matching Service',
  42829. iportalData: 'SuperMap iPortal Data',
  42830. onlineLocalSearch: 'SuperMap Online Local Search'
  42831. },
  42832. // 微件
  42833. timeText: {
  42834. Year: 'year',
  42835. Month: 'month',
  42836. Day: 'd',
  42837. hour: 'h',
  42838. minute: 'min',
  42839. second: 's'
  42840. },
  42841. zoom: {},
  42842. chart: {
  42843. unSupportedData: 'The current data does not support linkage with the map'
  42844. },
  42845. layerList: {
  42846. title: 'Layer'
  42847. },
  42848. miniMap: {},
  42849. pan: {},
  42850. scale: {},
  42851. webmap: {
  42852. loadingTip: 'Map is loading...',
  42853. crsNotSupport: 'The coordinate system of the current map is not supported!',
  42854. TileMatrixSetNotSuppport: 'Incoming TileMatrixSet is not supported!',
  42855. getLayerInfoFailed: 'Failed to get layer information!',
  42856. getThemeInfoFailed: 'Failed to get theme information!',
  42857. crsnotsupport: 'Unsupported coordinate system!',
  42858. baiduMapNotSupport: 'Baidu maps is not supported yet!',
  42859. sampleDataNotSupport: 'Sample datas is not supported yet!',
  42860. mvtNotSupport: 'Vector tile layers is not supported yet!'
  42861. },
  42862. legend: {
  42863. themeField: 'Thematic Field',
  42864. title: 'Legend',
  42865. top: 'Highest',
  42866. bottom: 'Lowest',
  42867. noMatchLayer: 'No matching layer'
  42868. },
  42869. measure: {
  42870. mapMeasure: 'Measure',
  42871. measureResult: 'Measurement Result',
  42872. distance: 'Distance',
  42873. area: 'Area',
  42874. delete: 'Empty',
  42875. selectPlaceholder: 'Please Select',
  42876. startingPoint: 'Starting Point'
  42877. },
  42878. search: {
  42879. noResult: 'The query result is empty!',
  42880. noKey: 'The search keyword cannot be empty. Please enter the search condition.',
  42881. inputPlaceHolder: 'Find an address or location',
  42882. attribute: 'Attribute',
  42883. attributeValue: 'Attribute Value',
  42884. setSearchSource: 'Please set the search source!',
  42885. address: 'Address',
  42886. null: 'Null',
  42887. illegalFeature: 'Features must contain legal coordinates!'
  42888. },
  42889. query: {
  42890. query: 'Query',
  42891. queryJob: 'Task',
  42892. queryResult: 'Result',
  42893. attributeCondition: 'Attribute Condition',
  42894. spatialFilter: 'Spatial Filter',
  42895. mapBounds: 'Query within the whole map extent',
  42896. currentMapBounds: 'Query within current viewbound',
  42897. applicate: 'Apply',
  42898. noResult: 'No Result',
  42899. resultAlreadyExists: 'The current query result already exists!',
  42900. querying: 'Querying...',
  42901. attribute: 'Attribute',
  42902. attributeValue: 'Attribute Value',
  42903. noResults: 'The query result is empty!',
  42904. queryFailed: 'Query failed!',
  42905. seviceNotSupport: 'This service does not support queries!'
  42906. },
  42907. identify: {
  42908. layerNotExit: "The layer '{layer}' does not exist in the map's style",
  42909. noData: 'no Data'
  42910. },
  42911. openFile: {
  42912. fileSizeExceeded: "The file size is too big! The file size can't exceed 10M!",
  42913. fileTypeUnsupported: 'This file format is not supported!',
  42914. openFileFail: 'File open failed!',
  42915. openFileSuccess: 'File open succeeded!',
  42916. selectFile: 'Select File',
  42917. openEmptyFile: 'The opened file is empty!',
  42918. openFile: 'Open File'
  42919. },
  42920. draw: {
  42921. draw: 'Draw'
  42922. },
  42923. indicator: {
  42924. title: 'Indicator Title',
  42925. unit: 'Unit'
  42926. },
  42927. layerManager: {
  42928. title: 'Layer Manager'
  42929. },
  42930. tdtResults: {
  42931. on: 'on ',
  42932. station: ' station',
  42933. total: 'total',
  42934. about: 'about ',
  42935. // pagination
  42936. homePage: 'Home',
  42937. prevPage: 'Previous',
  42938. nextPage: 'Next',
  42939. // nothingResult
  42940. searchNoResult: 'No related results were found',
  42941. youCanTry: 'You can try',
  42942. enterCorrect: 'Check if the input is correct',
  42943. enterOtherKeyWords: 'Enter another keyword to search',
  42944. onTdtMap: 'On the map of the sky',
  42945. addThisAddress: 'Add this address',
  42946. uWantTo: 'Are you looking for',
  42947. // pointResults
  42948. totalFind: 'found',
  42949. piecesResults: 'result',
  42950. phone: 'Tell',
  42951. address: 'Address',
  42952. setStartPonint: 'Set as starting point',
  42953. setEndPonint: 'Set as end point',
  42954. // routePlan
  42955. totalMiles: 'total mileage',
  42956. distance: 'About {distance} km',
  42957. showDetails: 'Show full details',
  42958. switchTimes: 'Transfer {switchTimes} times',
  42959. noSwitch: 'No transfer',
  42960. walk: 'Walk to',
  42961. getOff: 'get off',
  42962. getOn: 'boarding',
  42963. take: 'take ',
  42964. noSearchResults: 'No line information was found',
  42965. fastRoute: 'Fastest line',
  42966. shortRoute: 'Shortest line',
  42967. walkRoute: 'Less high speed',
  42968. fast: 'Faster',
  42969. noSubway: 'No subway',
  42970. lessSwitch: 'Less transfer',
  42971. lessWalk: 'Less walking',
  42972. // staticResult
  42973. cityHadResults: 'The following cities have results, please choose',
  42974. moreCity: 'More cities',
  42975. // LineResult
  42976. allFound: 'Found for you',
  42977. piecesBusRoute: 'bus route',
  42978. showDetail: 'Expand details',
  42979. busEndTime: 'First and last bus time',
  42980. relateAdress: 'Click here to see the location of "{keyWord}"',
  42981. // areaResult
  42982. switchTo: 'Switched to'
  42983. },
  42984. tdtRoute: {
  42985. title: 'Route',
  42986. clearRoute: 'Clear route',
  42987. pleaseEnterStartPoint: 'Please enter the starting address',
  42988. pleaseEnterEndPoint: 'Please enter the destination address',
  42989. search: 'Search',
  42990. startPoint: 'Starting address',
  42991. endPoint: 'Destination address',
  42992. mapLoadedFiled: 'Map failed to load',
  42993. busEndTime: 'First and last bus time',
  42994. about: 'about ',
  42995. station: ' station',
  42996. total: 'total',
  42997. hour: ' hour',
  42998. minutes: ' minutes'
  42999. },
  43000. tdtSearch: {
  43001. phone: 'Tell',
  43002. address: 'Address',
  43003. noData: 'No data',
  43004. transport: 'traffic'
  43005. },
  43006. tdtMapSwitcher: {
  43007. title: 'Map Switcher',
  43008. image: 'image',
  43009. vector: 'vector',
  43010. terrain: 'terrain',
  43011. placeName: 'placeName',
  43012. TiandituVec: 'TiandituVecLayer',
  43013. TiandituTer: 'TiandituTerLayer',
  43014. TiandituImg: 'TiandituImgLayer',
  43015. TiandituCva: 'TiandituCvaLabel',
  43016. TiandituCta: 'TiandituCtaLabel',
  43017. TiandituCia: 'TiandituCiaLabel'
  43018. },
  43019. // layer
  43020. dataFlow: {
  43021. dataSubscriptionFailed: 'Data subscription failed!'
  43022. },
  43023. animateMarkerlayer: {
  43024. unsupportedData: 'The data is not supported, please reset the data!'
  43025. }
  43026. };
  43027. exports.default = _default;
  43028. /***/ }),
  43029. /***/ "804a":
  43030. /***/ (function(module, exports, __webpack_require__) {
  43031. "use strict";
  43032. var _interopRequireDefault = __webpack_require__("8e6d");
  43033. Object.defineProperty(exports, "__esModule", {
  43034. value: true
  43035. });
  43036. exports.default = void 0;
  43037. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  43038. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  43039. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  43040. var _ScaleViewModel = _interopRequireDefault(__webpack_require__("ad16"));
  43041. //
  43042. //
  43043. //
  43044. //
  43045. //
  43046. //
  43047. //
  43048. //
  43049. var _default = {
  43050. name: 'SmScale',
  43051. mixins: [_mapGetter.default, _theme.default, _control.default],
  43052. props: {
  43053. unit: {
  43054. type: String,
  43055. default: 'metric',
  43056. validator: function validator(value) {
  43057. return ['imperial', 'metric', 'nautical'].includes(value);
  43058. }
  43059. },
  43060. maxWidth: {
  43061. type: Number,
  43062. default: 100
  43063. }
  43064. },
  43065. data: function data() {
  43066. return {
  43067. content: null
  43068. };
  43069. },
  43070. watch: {
  43071. unit: function unit() {
  43072. this.viewModel && this.viewModel.setUnit(this.unit);
  43073. },
  43074. maxWidth: function maxWidth() {
  43075. this.viewModel && this.viewModel.setMaxWidth(this.maxWidth);
  43076. }
  43077. },
  43078. created: function created() {
  43079. this.viewModel = new _ScaleViewModel.default();
  43080. this.viewModel.on('scaleupdated', this.scaleUpdatedFn);
  43081. },
  43082. methods: {
  43083. scaleUpdatedFn: function scaleUpdatedFn(e) {
  43084. this.content = e.containerContent;
  43085. this.$el.style.width = e.containerWidth;
  43086. }
  43087. },
  43088. beforeDestory: function beforeDestory() {
  43089. this.viewModel.off('scaleupdated', this.scaleUpdatedFn);
  43090. }
  43091. };
  43092. exports.default = _default;
  43093. /***/ }),
  43094. /***/ "80e6":
  43095. /***/ (function(module, exports, __webpack_require__) {
  43096. var root = __webpack_require__("18ca");
  43097. /** Built-in value references. */
  43098. var Symbol = root.Symbol;
  43099. module.exports = Symbol;
  43100. /***/ }),
  43101. /***/ "8156":
  43102. /***/ (function(module, exports, __webpack_require__) {
  43103. "use strict";
  43104. var _interopRequireDefault = __webpack_require__("8e6d");
  43105. Object.defineProperty(exports, "__esModule", {
  43106. value: true
  43107. });
  43108. exports.default = void 0;
  43109. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  43110. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  43111. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  43112. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  43113. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  43114. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  43115. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  43116. var _vuePropertyDecorator = __webpack_require__("e22c");
  43117. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  43118. var c = arguments.length,
  43119. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  43120. d;
  43121. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  43122. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  43123. }
  43124. return c > 3 && r && Object.defineProperty(target, key, r), r;
  43125. };
  43126. var Timer =
  43127. /*#__PURE__*/
  43128. function (_Vue) {
  43129. (0, _inherits2.default)(Timer, _Vue);
  43130. function Timer() {
  43131. var _this;
  43132. (0, _classCallCheck2.default)(this, Timer);
  43133. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Timer).apply(this, arguments));
  43134. _this.timer = null;
  43135. return _this;
  43136. }
  43137. (0, _createClass2.default)(Timer, [{
  43138. key: "onStartTimingChange",
  43139. value: function onStartTimingChange(newValue) {
  43140. if (newValue) {
  43141. this._start();
  43142. } else {
  43143. this._close();
  43144. }
  43145. }
  43146. }, {
  43147. key: "onFrequencyChange",
  43148. value: function onFrequencyChange() {
  43149. if (this.startTiming) {
  43150. this.resetTimer();
  43151. }
  43152. }
  43153. }, {
  43154. key: "_start",
  43155. value: function _start() {
  43156. var _this2 = this;
  43157. var time = 1000 * this.frequency || 3000;
  43158. this.startTimer();
  43159. this.timer = setInterval(function () {
  43160. _this2.timing();
  43161. }, time);
  43162. }
  43163. }, {
  43164. key: "_close",
  43165. value: function _close() {
  43166. if (this.timer) {
  43167. clearInterval(this.timer);
  43168. this.timer = null;
  43169. }
  43170. this.closeTimer();
  43171. }
  43172. }, {
  43173. key: "startTimer",
  43174. value: function startTimer() {}
  43175. }, {
  43176. key: "timing",
  43177. value: function timing() {}
  43178. }, {
  43179. key: "closeTimer",
  43180. value: function closeTimer() {}
  43181. }, {
  43182. key: "resetTimer",
  43183. value: function resetTimer() {
  43184. this._close();
  43185. this._start();
  43186. }
  43187. }, {
  43188. key: "beforeDestroy",
  43189. value: function beforeDestroy() {
  43190. this.startTiming && this._close();
  43191. }
  43192. }]);
  43193. return Timer;
  43194. }(_vue.default);
  43195. __decorate([(0, _vuePropertyDecorator.Prop)({
  43196. default: false
  43197. })], Timer.prototype, "startTiming", void 0);
  43198. __decorate([(0, _vuePropertyDecorator.Prop)({
  43199. default: 3
  43200. })], Timer.prototype, "frequency", void 0);
  43201. __decorate([(0, _vuePropertyDecorator.Watch)('startTiming', {
  43202. immediate: true
  43203. })], Timer.prototype, "onStartTimingChange", null);
  43204. __decorate([(0, _vuePropertyDecorator.Watch)('frequency')], Timer.prototype, "onFrequencyChange", null);
  43205. Timer = __decorate([_vuePropertyDecorator.Component], Timer);
  43206. var _default = Timer;
  43207. exports.default = _default;
  43208. /***/ }),
  43209. /***/ "8216":
  43210. /***/ (function(module, exports, __webpack_require__) {
  43211. "use strict";
  43212. var _interopRequireDefault = __webpack_require__("8e6d");
  43213. Object.defineProperty(exports, "__esModule", {
  43214. value: true
  43215. });
  43216. exports.default = void 0;
  43217. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  43218. var _MiniMapViewModel = _interopRequireDefault(__webpack_require__("78f6"));
  43219. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  43220. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  43221. var _card = _interopRequireDefault(__webpack_require__("333c"));
  43222. //
  43223. //
  43224. //
  43225. //
  43226. //
  43227. //
  43228. //
  43229. //
  43230. //
  43231. //
  43232. //
  43233. //
  43234. //
  43235. //
  43236. //
  43237. //
  43238. //
  43239. //
  43240. //
  43241. var _default = {
  43242. name: 'SmMiniMap',
  43243. mixins: [_mapGetter.default, _control.default, _card.default, _theme.default],
  43244. props: {
  43245. collapsed: {
  43246. type: Boolean,
  43247. // 是否折叠
  43248. default: true
  43249. },
  43250. iconClass: {
  43251. type: String,
  43252. default: 'sm-components-icons-return'
  43253. },
  43254. autoRotate: {
  43255. type: Boolean,
  43256. default: true
  43257. }
  43258. },
  43259. data: function data() {
  43260. return {
  43261. spinning: true
  43262. };
  43263. },
  43264. created: function created() {
  43265. this.miniMap && this.miniMap.remove();
  43266. this.viewModel = new _MiniMapViewModel.default();
  43267. this.viewModel.on('minimaploaded', this.minimapLoadedFn);
  43268. },
  43269. beforeDestory: function beforeDestory() {
  43270. this.viewModel.off('minimaploaded', this.minimapLoadedFn);
  43271. },
  43272. loaded: function loaded() {
  43273. this.viewModel && this.viewModel.setContainer(this.$el.querySelector('#miniMap') || this.$el);
  43274. },
  43275. methods: {
  43276. handleMinimapResize: function handleMinimapResize(state) {
  43277. var _this = this;
  43278. this.$nextTick(function () {
  43279. state && _this.resize();
  43280. });
  43281. },
  43282. resize: function resize() {
  43283. if (this.viewModel && this.viewModel.resize) {
  43284. this.viewModel.resize();
  43285. }
  43286. },
  43287. minimapLoadedFn: function minimapLoadedFn(e) {
  43288. this.miniMap = e.miniMap;
  43289. this.spinning = false;
  43290. }
  43291. }
  43292. };
  43293. exports.default = _default;
  43294. /***/ }),
  43295. /***/ "821b":
  43296. /***/ (function(module, exports, __webpack_require__) {
  43297. "use strict";
  43298. var __importDefault = (this && this.__importDefault) || function (mod) {
  43299. return (mod && mod.__esModule) ? mod : { "default": mod };
  43300. }
  43301. Object.defineProperty(exports, "__esModule", { value: true });
  43302. var distance_1 = __importDefault(__webpack_require__("cdcc"));
  43303. var meta_1 = __webpack_require__("49c0");
  43304. /**
  43305. * Takes a {@link GeoJSON} and measures its length in the specified units, {@link (Multi)Point}'s distance are ignored.
  43306. *
  43307. * @name length
  43308. * @param {Feature<LineString|MultiLineString>} geojson GeoJSON to measure
  43309. * @param {Object} [options={}] Optional parameters
  43310. * @param {string} [options.units=kilometers] can be degrees, radians, miles, or kilometers
  43311. * @returns {number} length of GeoJSON
  43312. * @example
  43313. * var line = turf.lineString([[115, -32], [131, -22], [143, -25], [150, -34]]);
  43314. * var length = turf.length(line, {units: 'miles'});
  43315. *
  43316. * //addToMap
  43317. * var addToMap = [line];
  43318. * line.properties.distance = length;
  43319. */
  43320. function length(geojson, options) {
  43321. if (options === void 0) { options = {}; }
  43322. // Calculate distance from 2-vertex line segments
  43323. return meta_1.segmentReduce(geojson, function (previousValue, segment) {
  43324. var coords = segment.geometry.coordinates;
  43325. return previousValue + distance_1.default(coords[0], coords[1], options);
  43326. }, 0);
  43327. }
  43328. exports.default = length;
  43329. /***/ }),
  43330. /***/ "8275":
  43331. /***/ (function(module, exports) {
  43332. module.exports = __WEBPACK_EXTERNAL_MODULE__8275__;
  43333. /***/ }),
  43334. /***/ "827d":
  43335. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  43336. "use strict";
  43337. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/time-text/TimeText.vue?vue&type=template&id=6da009bc&
  43338. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-time-text",style:([_vm.fontStyle, _vm.getBackgroundStyle, _vm.getTextColorStyle])},[_c('span',[_vm._v(_vm._s(_vm.time))])])}
  43339. var staticRenderFns = []
  43340. // CONCATENATED MODULE: ./src/common/time-text/TimeText.vue?vue&type=template&id=6da009bc&
  43341. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  43342. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  43343. /***/ }),
  43344. /***/ "830f":
  43345. /***/ (function(module, exports) {
  43346. function _nonIterableRest() {
  43347. throw new TypeError("Invalid attempt to destructure non-iterable instance");
  43348. }
  43349. module.exports = _nonIterableRest;
  43350. /***/ }),
  43351. /***/ "8330":
  43352. /***/ (function(module, exports, __webpack_require__) {
  43353. var Symbol = __webpack_require__("80e6");
  43354. /** Used for built-in method references. */
  43355. var objectProto = Object.prototype;
  43356. /** Used to check objects for own properties. */
  43357. var hasOwnProperty = objectProto.hasOwnProperty;
  43358. /**
  43359. * Used to resolve the
  43360. * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
  43361. * of values.
  43362. */
  43363. var nativeObjectToString = objectProto.toString;
  43364. /** Built-in value references. */
  43365. var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
  43366. /**
  43367. * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
  43368. *
  43369. * @private
  43370. * @param {*} value The value to query.
  43371. * @returns {string} Returns the raw `toStringTag`.
  43372. */
  43373. function getRawTag(value) {
  43374. var isOwn = hasOwnProperty.call(value, symToStringTag),
  43375. tag = value[symToStringTag];
  43376. try {
  43377. value[symToStringTag] = undefined;
  43378. var unmasked = true;
  43379. } catch (e) {}
  43380. var result = nativeObjectToString.call(value);
  43381. if (unmasked) {
  43382. if (isOwn) {
  43383. value[symToStringTag] = tag;
  43384. } else {
  43385. delete value[symToStringTag];
  43386. }
  43387. }
  43388. return result;
  43389. }
  43390. module.exports = getRawTag;
  43391. /***/ }),
  43392. /***/ "8377":
  43393. /***/ (function(module, exports, __webpack_require__) {
  43394. var _typeof = __webpack_require__("7ae5");
  43395. var assertThisInitialized = __webpack_require__("27f6");
  43396. function _possibleConstructorReturn(self, call) {
  43397. if (call && (_typeof(call) === "object" || typeof call === "function")) {
  43398. return call;
  43399. }
  43400. return assertThisInitialized(self);
  43401. }
  43402. module.exports = _possibleConstructorReturn;
  43403. /***/ }),
  43404. /***/ "8385":
  43405. /***/ (function(module, exports, __webpack_require__) {
  43406. "use strict";
  43407. var _interopRequireDefault = __webpack_require__("8e6d");
  43408. Object.defineProperty(exports, "__esModule", {
  43409. value: true
  43410. });
  43411. exports.default = void 0;
  43412. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  43413. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  43414. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  43415. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  43416. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  43417. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  43418. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  43419. var _lodash = _interopRequireDefault(__webpack_require__("25a2"));
  43420. var _center = _interopRequireDefault(__webpack_require__("cf46"));
  43421. __webpack_require__("f240");
  43422. var _iPortalDataService = _interopRequireDefault(__webpack_require__("9d60"));
  43423. var _iServerRestService = _interopRequireDefault(__webpack_require__("e340"));
  43424. var _lang = __webpack_require__("4e21");
  43425. var _util = __webpack_require__("1448");
  43426. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  43427. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  43428. /**
  43429. * @class SearchViewModel
  43430. * @classdesc 数据搜索功能类。
  43431. * @category ViewModel
  43432. * @param {mapboxgl.Map} map - mapboxgl map 对象。
  43433. * @param {Object} [options] - 可选参数。
  43434. * @param {Object} [options.maxFeatures=8] - 最多可返回的要素数量,最大值为 100。
  43435. * @param {Array.<string>} [options.layerNames] - 地图图层搜索配置,如:'['UNIQUE-民航数']'。
  43436. * @param {Array.<string>} [options.restMap] - iServer 地图服务搜索配置。
  43437. * @param {string} options.restMap.url - 地图服务地址。
  43438. * @param {string} options.restMap.layerName - 搜索图层名。
  43439. * @param {string} [options.restMap.name] - 搜索结果名称。
  43440. * @param {Array.<string>} [options.restData] - iServer 数据服务搜索配置。
  43441. * @param {string} options.restData.url - 数据服务地址。
  43442. * @param {Array} options.restData.dataName - 搜索数据集名数组。
  43443. * @param {string} [options.restData.name] - 搜索结果名称。
  43444. * @param {Array.<string>} [options.iportalData] - iPortal 数据搜索配置。
  43445. * @param {string} options.iportalData.url - 数据地址。
  43446. * @param {string} [options.iportalData.name] - 搜索结果名称。
  43447. * @param {Array.<string>} [options.addressMatch] - iServer 地址匹配服务搜索配置。
  43448. * @param {string} options.addressMatch.url - 地址匹配服务地址。
  43449. * @param {string} [options.addressMatch.name] - 搜索结果名称。
  43450. * @param {Object} [options.onlineLocalSearch] - online 本地搜索配置。
  43451. * @param {Boolean} [options.onlineLocalSearch.enable=true] - 是否开启 online 本地搜索。
  43452. * @fires SearchViewModel#searchsucceeded
  43453. * @fires SearchViewModel#searchfailed
  43454. */
  43455. var SearchViewModel =
  43456. /*#__PURE__*/
  43457. function (_mapboxgl$Evented) {
  43458. (0, _inherits2.default)(SearchViewModel, _mapboxgl$Evented);
  43459. function SearchViewModel(options) {
  43460. var _this;
  43461. (0, _classCallCheck2.default)(this, SearchViewModel);
  43462. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(SearchViewModel).call(this));
  43463. _this.options = options || {};
  43464. _this.searchTaskId = 0;
  43465. _this.options.cityGeoCodingConfig = {
  43466. addressUrl: 'https://www.supermapol.com/iserver/services/localsearch/rest/searchdatas/China/poiinfos',
  43467. key: options.onlineLocalSearch.key || 'fvV2osxwuZWlY0wJb8FEb2i5'
  43468. };
  43469. _this.searchtType = ['layerNames', 'onlineLocalSearch', 'restMap', 'restData', 'iportalData', 'addressMatch'];
  43470. _this.markerList = [];
  43471. _this.popupList = [];
  43472. _this.errorSourceList = {};
  43473. return _this;
  43474. }
  43475. (0, _createClass2.default)(SearchViewModel, [{
  43476. key: "setMap",
  43477. value: function setMap(mapInfo) {
  43478. var map = mapInfo.map;
  43479. this.map = map;
  43480. }
  43481. /**
  43482. * @function SearchViewModel.prototype.search
  43483. * @description 开始搜索。
  43484. * @param {String} keyWord - 搜索关键字。
  43485. */
  43486. }, {
  43487. key: "search",
  43488. value: function search(keyWord) {
  43489. var _this2 = this;
  43490. this.searchCount = 0;
  43491. this.searchResult = {};
  43492. this.errorSourceList = {};
  43493. this.keyWord = keyWord;
  43494. this.maxFeatures = parseInt(this.options.maxFeatures) >= 100 ? 100 : parseInt(this.options.maxFeatures) || 8;
  43495. this.searchtType.forEach(function (item) {
  43496. if (_this2.options[item]) {
  43497. if (item === 'onlineLocalSearch' && _this2.options[item].enable) {
  43498. _this2.searchCount += 1;
  43499. } else if (item !== 'onlineLocalSearch') {
  43500. var len = _this2.options[item].length;
  43501. _this2.searchCount += len;
  43502. }
  43503. }
  43504. }, this);
  43505. var _this$options = _objectSpread({}, this.options),
  43506. layerNames = _this$options.layerNames,
  43507. onlineLocalSearch = _this$options.onlineLocalSearch,
  43508. restMap = _this$options.restMap,
  43509. restData = _this$options.restData,
  43510. iportalData = _this$options.iportalData,
  43511. addressMatch = _this$options.addressMatch;
  43512. layerNames && this._searchFromLayer(layerNames);
  43513. onlineLocalSearch.enable && this._searchFromPOI(onlineLocalSearch);
  43514. restMap && this._searchFromRestMap(restMap);
  43515. restData && this._searchFromRestData(restData);
  43516. iportalData && this._searchFromIportal(iportalData);
  43517. addressMatch && this._searchFromAddressMatch(addressMatch);
  43518. return this.searchTaskId;
  43519. }
  43520. /**
  43521. * @function SearchViewModel.prototype.getFeatureInfo
  43522. * @description 获取搜索结果的要素信息。
  43523. * @param {String} searchKey - 搜索关键字。
  43524. * @param {String} data - 过滤数据。
  43525. */
  43526. }, {
  43527. key: "getFeatureInfo",
  43528. value: function getFeatureInfo(searchKey, data) {
  43529. var resultRender = this.options.resultRender;
  43530. this.keyWord = searchKey;
  43531. this._reset();
  43532. this.fire('search-selected-info' + this.searchTaskId, {
  43533. data: data
  43534. });
  43535. if (resultRender) {
  43536. return;
  43537. }
  43538. this._showResultToMap(data);
  43539. }
  43540. }, {
  43541. key: "_showResultToMap",
  43542. value: function _showResultToMap(feature) {
  43543. var geometry = feature.geometry || {};
  43544. if (!this.options.alwaysCenter && (geometry.type === 'MultiPolygon' || geometry.type === 'Polygon')) {
  43545. this._addPolygon(feature);
  43546. } else if (!this.options.alwaysCenter && geometry.type === 'LineString') {
  43547. this._addLine(feature);
  43548. } else {
  43549. this._addPoint(feature);
  43550. }
  43551. }
  43552. }, {
  43553. key: "_addPoint",
  43554. value: function _addPoint(feature) {
  43555. var properties = feature.properties || feature;
  43556. var geometry = feature.geometry || [feature.location.x, feature.location.y];
  43557. var pointData = {
  43558. coordinates: null,
  43559. info: []
  43560. };
  43561. var propertiesValue = properties.address || feature.filterAttribute.filterAttributeValue || properties.name;
  43562. if (geometry.type === 'MultiPolygon' || geometry.type === 'Polygon' || geometry.type === 'LineString') {
  43563. pointData.coordinates = (0, _util.getFeatureCenter)(feature);
  43564. } else {
  43565. pointData.coordinates = geometry.coordinates || geometry;
  43566. }
  43567. if (!pointData.coordinates || !pointData.coordinates.length || pointData.coordinates.find(function (item) {
  43568. return isNaN(+item);
  43569. })) {
  43570. this.fire('addfeaturefailed' + this.searchTaskId, {
  43571. error: (0, _lang.geti18n)().t('search.illegalFeature')
  43572. });
  43573. return;
  43574. }
  43575. if (this.keyWord.indexOf(':') < 0) {
  43576. pointData.info.push({
  43577. attribute: (0, _lang.geti18n)().t('search.address'),
  43578. attributeValue: propertiesValue
  43579. });
  43580. } else {
  43581. for (var key in properties) {
  43582. properties[key] && pointData.info.push({
  43583. attribute: key,
  43584. attributeValue: properties[key]
  43585. });
  43586. }
  43587. }
  43588. this.fire('set-popup-content' + this.searchTaskId, {
  43589. popupData: pointData
  43590. });
  43591. }
  43592. }, {
  43593. key: "_addLine",
  43594. value: function _addLine() {
  43595. console.log('draw line here');
  43596. }
  43597. }, {
  43598. key: "_addPolygon",
  43599. value: function _addPolygon(feature) {
  43600. if (feature && this.map) {
  43601. var center = (0, _center.default)(feature).geometry.coordinates;
  43602. var source = this.map.getSource('searchResultLayer');
  43603. var sourceData = feature;
  43604. if (source) {
  43605. source.setData(sourceData);
  43606. } else {
  43607. this.map.addLayer({
  43608. id: 'searchResultLayer',
  43609. type: 'fill',
  43610. source: {
  43611. type: 'geojson',
  43612. data: sourceData
  43613. },
  43614. layout: {},
  43615. paint: {
  43616. 'fill-color': 'rgb(255, 0, 0)',
  43617. 'fill-opacity': 0.8
  43618. }
  43619. });
  43620. }
  43621. this.map.easeTo({
  43622. center: center
  43623. });
  43624. }
  43625. }
  43626. /**
  43627. * @function SearchViewModel.prototype.addMarker
  43628. * @description 向地图上添加 Marker。
  43629. * @param {Array} coordinates - 坐标数组。
  43630. * @param {HTMLElement} popupContainer - 弹窗 DOM 对象。
  43631. * @param {Function} callback - 弹窗生成后的回调事件。
  43632. */
  43633. }, {
  43634. key: "setPopupContent",
  43635. value: function setPopupContent(coordinates, popupContainer, callback) {
  43636. popupContainer.style.display = 'block';
  43637. var popup = new _mapboxGlEnhance.default.Popup({
  43638. className: 'sm-mapboxgl-tabel-popup sm-component-search-result-popup',
  43639. closeOnClick: true,
  43640. anchor: 'bottom'
  43641. });
  43642. var marker = new _mapboxGlEnhance.default.Marker();
  43643. this.popupList.push(popup);
  43644. this.markerList.push(marker);
  43645. popup.setLngLat(coordinates).setDOMContent(popupContainer).addTo(this.map);
  43646. popup.on('open', function () {
  43647. callback && callback();
  43648. });
  43649. marker.setLngLat(coordinates).setPopup(popup).addTo(this.map);
  43650. this.map.flyTo({
  43651. center: coordinates
  43652. });
  43653. }
  43654. }, {
  43655. key: "_searchFromLayer",
  43656. value: function _searchFromLayer(layerNames) {
  43657. var _this3 = this;
  43658. setTimeout(function () {
  43659. layerNames.forEach(function (sourceName) {
  43660. var source = _this3.map.getSource(sourceName);
  43661. if (source) {
  43662. var features = (0, _lodash.default)(source._data.features);
  43663. var resultFeature = _this3._getFeaturesByKeyWord(_this3.keyWord, features);
  43664. var results = resultFeature.slice(0, _this3.maxFeatures);
  43665. _this3._searchFeaturesSucceed(results, sourceName);
  43666. } else {
  43667. _this3._searchFeaturesFailed("The ".concat(sourceName, " does not exist"), sourceName);
  43668. }
  43669. }, _this3);
  43670. }, 0);
  43671. }
  43672. }, {
  43673. key: "_searchFeaturesFailed",
  43674. value: function _searchFeaturesFailed(error, sourceName) {
  43675. error && console.log(error);
  43676. if (this.errorSourceList[sourceName]) return;
  43677. this.searchCount--;
  43678. this.errorSourceList[sourceName] = sourceName;
  43679. /**
  43680. * @event SearchViewModel#searchfailed
  43681. * @description 搜索失败后触发。
  43682. * @property {Object} e - 事件对象。
  43683. */
  43684. this.searchCount === 0 && this.fire('searchfailed' + this.searchTaskId, {
  43685. error: error,
  43686. sourceName: sourceName
  43687. }) && (this.searchTaskId += 1);
  43688. }
  43689. }, {
  43690. key: "_searchFeaturesSucceed",
  43691. value: function _searchFeaturesSucceed(resultFeature, sourceName) {
  43692. if (this.errorSourceList[sourceName]) {
  43693. delete this.errorSourceList[sourceName];
  43694. }
  43695. if (resultFeature.length > 0) {
  43696. var result = {
  43697. source: sourceName,
  43698. result: resultFeature
  43699. };
  43700. this.searchResult[sourceName] = result;
  43701. }
  43702. var resultList = [];
  43703. for (var key in this.searchResult) {
  43704. resultList.push(this.searchResult[key]);
  43705. }
  43706. /**
  43707. * @event SearchViewModel#searchsucceeded
  43708. * @description 搜索成功后触发。
  43709. * @property {Object} e - 事件对象。
  43710. */
  43711. this.fire('searchsucceeded' + this.searchTaskId, {
  43712. result: resultList
  43713. }) && (this.searchTaskId += 1);
  43714. }
  43715. }, {
  43716. key: "_searchFromPOI",
  43717. value: function _searchFromPOI(onlineLocalSearch) {
  43718. var _this4 = this;
  43719. var sourceName = 'Online 本地搜索';
  43720. this.geoCodeParam = {
  43721. pageSize: this.options.pageSize || 10,
  43722. pageNum: this.options.pageNum || 1,
  43723. city: onlineLocalSearch.city
  43724. };
  43725. this.geoCodeParam.keyWords = this.keyWord;
  43726. var url = this._getSearchUrl(this.geoCodeParam);
  43727. SuperMap.FetchRequest.get(url).then(function (response) {
  43728. return response.json();
  43729. }).then(function (geocodingResult) {
  43730. if (geocodingResult.error) {
  43731. _this4._searchFeaturesFailed(geocodingResult.error, sourceName);
  43732. return;
  43733. }
  43734. if (geocodingResult.poiInfos && geocodingResult.poiInfos.length === 0) {
  43735. _this4._searchFeaturesSucceed([], sourceName);
  43736. return;
  43737. }
  43738. if (geocodingResult.poiInfos) {
  43739. var geoJsonResult = _this4._dataToGeoJson(geocodingResult.poiInfos, _this4.geoCodeParam);
  43740. _this4._searchFeaturesSucceed(geoJsonResult.slice(0, _this4.maxFeatures), sourceName);
  43741. }
  43742. }).catch(function (error) {
  43743. _this4._searchFeaturesFailed(error, sourceName);
  43744. });
  43745. }
  43746. }, {
  43747. key: "_searchFromRestMap",
  43748. value: function _searchFromRestMap(restMaps) {
  43749. var _this5 = this;
  43750. var sourceName = 'Rest Map Search';
  43751. restMaps.forEach(function (restMap) {
  43752. var options = {};
  43753. if (restMap.proxy) {
  43754. options.proxy = restMap.proxy;
  43755. }
  43756. restMap.epsgCode && (options.epsgCode = restMap.epsgCode);
  43757. var iserverService = new _iServerRestService.default(restMap.url, options);
  43758. iserverService.on({
  43759. getdatafailed: function getdatafailed(e) {
  43760. _this5._searchFeaturesFailed('', restMap.name || sourceName);
  43761. },
  43762. featureisempty: function featureisempty(e) {
  43763. _this5._searchFeaturesSucceed([], restMap.name || sourceName);
  43764. },
  43765. getdatasucceeded: function getdatasucceeded(e) {
  43766. if (e.features) {
  43767. var resultFeatures = _this5._getFeaturesByKeyWord(_this5.keyWord, e.features);
  43768. _this5._searchFeaturesSucceed(resultFeatures, restMap.name || sourceName);
  43769. }
  43770. }
  43771. });
  43772. iserverService.getMapFeatures({
  43773. dataUrl: restMap.url,
  43774. mapName: restMap.layerName
  43775. }, {
  43776. maxFeatures: _this5.maxFeatures,
  43777. keyWord: _this5.keyWord
  43778. });
  43779. }, this);
  43780. }
  43781. }, {
  43782. key: "_searchFromRestData",
  43783. value: function _searchFromRestData(restDatas) {
  43784. var _this6 = this;
  43785. var sourceName = 'Rest Data Search';
  43786. restDatas.forEach(function (restData) {
  43787. var options = {};
  43788. if (restData.proxy) {
  43789. options.proxy = restData.proxy;
  43790. }
  43791. restData.epsgCode && (options.epsgCode = restData.epsgCode);
  43792. var iserverService = new _iServerRestService.default(restData.url, options);
  43793. iserverService.on({
  43794. getdatafailed: function getdatafailed(e) {
  43795. _this6._searchFeaturesFailed('', restData.name || sourceName);
  43796. },
  43797. featureisempty: function featureisempty(e) {
  43798. _this6._searchFeaturesSucceed([], restData.name || sourceName);
  43799. },
  43800. getdatasucceeded: function getdatasucceeded(e) {
  43801. if (e.features && e.features.length > 0) {
  43802. var resultFeatures = _this6._getFeaturesByKeyWord(_this6.keyWord, e.features);
  43803. _this6._searchFeaturesSucceed(resultFeatures, restData.name || sourceName);
  43804. }
  43805. }
  43806. });
  43807. var dataSourceName = restData.dataName[0].split(':')[0];
  43808. var datasetName = restData.dataName[0].split(':')[1];
  43809. iserverService.getDataFeatures({
  43810. datasetName: datasetName,
  43811. dataSourceName: dataSourceName,
  43812. dataUrl: restData.url
  43813. }, {
  43814. maxFeatures: _this6.maxFeatures,
  43815. keyWord: _this6.keyWord
  43816. });
  43817. }, this);
  43818. }
  43819. }, {
  43820. key: "_searchFromIportal",
  43821. value: function _searchFromIportal(iportalDatas) {
  43822. var _this7 = this;
  43823. var sourceName = 'Iportal Search';
  43824. iportalDatas.forEach(function (iportal) {
  43825. var iPortalService = new _iPortalDataService.default(iportal.url, iportal.withCredentials || false, {
  43826. epsgCode: iportal.epsgCode
  43827. });
  43828. iPortalService.on({
  43829. getdatafailed: function getdatafailed(e) {
  43830. _this7._searchFeaturesFailed('', iportal.name || sourceName);
  43831. },
  43832. featureisempty: function featureisempty(e) {
  43833. _this7._searchFeaturesSucceed([], iportal.name || sourceName);
  43834. },
  43835. getdatasucceeded: function getdatasucceeded(e) {
  43836. if (e.features) {
  43837. var resultFeatures = _this7._getFeaturesByKeyWord(_this7.keyWord, e.features);
  43838. _this7._searchFeaturesSucceed(resultFeatures, iportal.name || sourceName);
  43839. }
  43840. }
  43841. });
  43842. iPortalService.getData({
  43843. keyWord: _this7.keyWord
  43844. });
  43845. }, this);
  43846. }
  43847. }, {
  43848. key: "_searchFromAddressMatch",
  43849. value: function _searchFromAddressMatch(addressMatches) {
  43850. var _this8 = this;
  43851. var sourceName = 'Address Match Search';
  43852. addressMatches.forEach(function (addressMatch) {
  43853. var options = {};
  43854. if (addressMatch.proxy) {
  43855. options.proxy = addressMatch.proxy;
  43856. }
  43857. _this8.addressMatchService = new _mapboxGlEnhance.default.supermap.AddressMatchService(addressMatch.url, options);
  43858. var parm = {
  43859. address: _this8.keyWord,
  43860. fromIndex: 0,
  43861. toIndex: _this8.maxFeatures,
  43862. maxReturn: _this8.maxFeatures,
  43863. prjCoordSys: '{epsgcode:4326}'
  43864. };
  43865. var geoCodeParam = new SuperMap.GeoCodingParameter(parm);
  43866. _this8.addressMatchService.code(geoCodeParam, function (e) {
  43867. if (e.result) {
  43868. _this8._searchFeaturesSucceed(e.result, addressMatch.name || sourceName);
  43869. } else {
  43870. _this8._searchFeaturesFailed('', addressMatch.name || sourceName);
  43871. }
  43872. });
  43873. }, this);
  43874. }
  43875. }, {
  43876. key: "_dataToGeoJson",
  43877. value: function _dataToGeoJson(data, geoCodeParam) {
  43878. var features = [];
  43879. for (var i = 0; i < data.length; i++) {
  43880. var feature = {
  43881. type: 'Feature',
  43882. geometry: {
  43883. type: 'Point',
  43884. coordinates: [data[i].location.x, data[i].location.y]
  43885. },
  43886. properties: {
  43887. name: data[i].name || geoCodeParam.keyWords,
  43888. address: data[i].formatedAddress || data[i].address
  43889. },
  43890. filterAttribute: {
  43891. filterAttributeName: data[i].name || geoCodeParam.keyWords,
  43892. filterAttributeValue: data[i].formatedAddress || data[i].address || (0, _lang.geti18n)().t('search.null')
  43893. },
  43894. filterVal: "".concat(data[i].name || geoCodeParam.keyWords, "\uFF1A").concat(data[i].formatedAddress || data[i].address || (0, _lang.geti18n)().t('search.null'))
  43895. };
  43896. features.push(feature);
  43897. }
  43898. return features;
  43899. }
  43900. }, {
  43901. key: "_getSearchUrl",
  43902. value: function _getSearchUrl(geoCodeParam) {
  43903. var url = this.options.cityGeoCodingConfig.addressUrl + ".json?keywords=".concat(geoCodeParam.keyWords, "&city=").concat(geoCodeParam.city || '北京市', "&pageSize=").concat(geoCodeParam.pageSize, "&pageNum=").concat(geoCodeParam.pageNum, "&key=").concat(this.options.cityGeoCodingConfig.key);
  43904. return url;
  43905. }
  43906. }, {
  43907. key: "_getFeaturesByKeyWord",
  43908. value: function _getFeaturesByKeyWord(keyWord, features) {
  43909. var _this9 = this;
  43910. var resultFeatures = [];
  43911. var keyReg = new RegExp(keyWord.toLowerCase());
  43912. var operatingAttributeNames = this._getAttributeNames(features);
  43913. features.forEach(function (feature) {
  43914. if (!feature.properties) {
  43915. return null;
  43916. }
  43917. var fAttr = feature.properties;
  43918. operatingAttributeNames.forEach(function (attributeName) {
  43919. if (fAttr[attributeName] && keyReg.test(fAttr[attributeName].toString().toLowerCase())) {
  43920. var filterAttributeName = attributeName;
  43921. var filterAttributeValue = fAttr[attributeName] || (0, _lang.geti18n)().t('search.null');
  43922. if (!feature.filterAttribute) {
  43923. feature.filterAttribute = {
  43924. filterAttributeName: filterAttributeName,
  43925. filterAttributeValue: filterAttributeValue
  43926. };
  43927. feature.filterVal = "".concat(filterAttributeName, "\uFF1A").concat(filterAttributeValue);
  43928. resultFeatures.push(feature);
  43929. }
  43930. }
  43931. }, _this9);
  43932. });
  43933. return resultFeatures;
  43934. }
  43935. }, {
  43936. key: "_getAttributeNames",
  43937. value: function _getAttributeNames(features) {
  43938. var attributeNames = [];
  43939. var properties = features[0].properties;
  43940. properties && Object.keys(properties).forEach(function (field) {
  43941. attributeNames.push(field);
  43942. }, this);
  43943. return attributeNames;
  43944. }
  43945. }, {
  43946. key: "_clearMarkers",
  43947. value: function _clearMarkers() {
  43948. if (this.markerList.length) {
  43949. this.markerList.forEach(function (marker) {
  43950. marker && marker.remove();
  43951. });
  43952. this.markerList = [];
  43953. }
  43954. }
  43955. }, {
  43956. key: "_clearPopups",
  43957. value: function _clearPopups() {
  43958. if (this.popupList.length) {
  43959. this.popupList.forEach(function (popup) {
  43960. popup && popup.remove();
  43961. });
  43962. this.popupList = [];
  43963. }
  43964. }
  43965. }, {
  43966. key: "_clearSearchResultLayer",
  43967. value: function _clearSearchResultLayer() {
  43968. if (this.map && this.map.getLayer('searchResultLayer')) {
  43969. this.map.removeLayer('searchResultLayer');
  43970. this.map.removeSource('searchResultLayer');
  43971. }
  43972. }
  43973. }, {
  43974. key: "_resetSearchSourceData",
  43975. value: function _resetSearchSourceData() {
  43976. if (this.map && this.map.getSource('searchResultLayer')) {
  43977. this.map.getSource('searchResultLayer').setData({
  43978. type: 'FeatureCollection',
  43979. features: []
  43980. });
  43981. }
  43982. }
  43983. }, {
  43984. key: "_reset",
  43985. value: function _reset() {
  43986. this._resetSearchSourceData();
  43987. this._clearMarkers();
  43988. this._clearPopups();
  43989. }
  43990. }, {
  43991. key: "removed",
  43992. value: function removed() {
  43993. this.searchTaskId = 0;
  43994. this.searchResult = {};
  43995. this.errorSourceList = {};
  43996. if (!this.options.resultRender) {
  43997. this._clearSearchResultLayer();
  43998. this._clearMarkers();
  43999. this._clearPopups();
  44000. }
  44001. }
  44002. }]);
  44003. return SearchViewModel;
  44004. }(_mapboxGlEnhance.default.Evented);
  44005. exports.default = SearchViewModel;
  44006. /***/ }),
  44007. /***/ "83e2":
  44008. /***/ (function(module, exports, __webpack_require__) {
  44009. "use strict";
  44010. var _interopRequireDefault = __webpack_require__("8e6d");
  44011. Object.defineProperty(exports, "__esModule", {
  44012. value: true
  44013. });
  44014. exports.default = void 0;
  44015. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  44016. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  44017. var SourceModel =
  44018. /*#__PURE__*/
  44019. function () {
  44020. function SourceModel(options) {
  44021. (0, _classCallCheck2.default)(this, SourceModel);
  44022. this.id = options.source;
  44023. this.sourceLayerList = {};
  44024. this.layers = [];
  44025. this.type = null;
  44026. }
  44027. (0, _createClass2.default)(SourceModel, [{
  44028. key: "addLayer",
  44029. value: function addLayer(layer, sourceLayer) {
  44030. if (sourceLayer) {
  44031. if (!this.sourceLayerList[sourceLayer]) {
  44032. this.sourceLayerList[sourceLayer] = [];
  44033. }
  44034. this.sourceLayerList[sourceLayer].push(layer);
  44035. } else {
  44036. this.sourceLayerList = undefined;
  44037. }
  44038. this.layers.push(layer);
  44039. this.type = layer.type;
  44040. if ([layer.visibility, this.visibility].includes('visible')) {
  44041. this.visibility = 'visible';
  44042. } else {
  44043. this.visibility = 'none';
  44044. }
  44045. }
  44046. }]);
  44047. return SourceModel;
  44048. }();
  44049. var _default = SourceModel;
  44050. exports.default = _default;
  44051. /***/ }),
  44052. /***/ "849c":
  44053. /***/ (function(module, exports, __webpack_require__) {
  44054. module.exports = __webpack_require__("7cfc");
  44055. /***/ }),
  44056. /***/ "8537":
  44057. /***/ (function(module, exports, __webpack_require__) {
  44058. "use strict";
  44059. var _interopRequireDefault = __webpack_require__("8e6d");
  44060. Object.defineProperty(exports, "__esModule", {
  44061. value: true
  44062. });
  44063. exports.default = void 0;
  44064. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  44065. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  44066. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  44067. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  44068. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  44069. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  44070. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  44071. var _vuePropertyDecorator = __webpack_require__("e22c");
  44072. __webpack_require__("717b");
  44073. var _vueVideoPlayer = __webpack_require__("dfae");
  44074. var _lodash = _interopRequireDefault(__webpack_require__("25a2"));
  44075. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  44076. var c = arguments.length,
  44077. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  44078. d;
  44079. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  44080. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  44081. }
  44082. return c > 3 && r && Object.defineProperty(target, key, r), r;
  44083. };
  44084. var SmVideoPlayer =
  44085. /*#__PURE__*/
  44086. function (_Vue) {
  44087. (0, _inherits2.default)(SmVideoPlayer, _Vue);
  44088. function SmVideoPlayer() {
  44089. var _this;
  44090. (0, _classCallCheck2.default)(this, SmVideoPlayer);
  44091. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(SmVideoPlayer).apply(this, arguments));
  44092. _this.isFirst = true;
  44093. _this.modalVisible = false;
  44094. _this.playerOptions = {};
  44095. _this.modalPlayerOptions = {};
  44096. return _this;
  44097. }
  44098. (0, _createClass2.default)(SmVideoPlayer, [{
  44099. key: "modalVisibleChanged",
  44100. value: function modalVisibleChanged() {
  44101. if (this.modalVisible && this.modalVideoPlayer) {
  44102. this.modalVideoPlayer.currentTime(0);
  44103. this.modalVideoPlayer.play();
  44104. }
  44105. }
  44106. }, {
  44107. key: "urlChanged",
  44108. value: function urlChanged() {
  44109. this.handlePlayerOptions();
  44110. }
  44111. }, {
  44112. key: "optionsChanged",
  44113. value: function optionsChanged() {
  44114. this.handlePlayerOptions();
  44115. }
  44116. }, {
  44117. key: "created",
  44118. value: function created() {
  44119. this.handlePlayerOptions();
  44120. }
  44121. }, {
  44122. key: "handlePlayerOptions",
  44123. value: function handlePlayerOptions() {
  44124. if (!this.url) {
  44125. return;
  44126. }
  44127. if (!this.checkUrl(this.url)) {
  44128. this.$message.warning(this.$t('warning.unsupportedVideoAddress'), 1);
  44129. if (this.playerOptions.sources) {
  44130. this.playerOptions.sources[0].src = '';
  44131. this.modalPlayerOptions.sources[0].src = '';
  44132. }
  44133. return;
  44134. }
  44135. var sourcesType = this.url.split('.');
  44136. var commonOptions = {
  44137. height: '100%',
  44138. autoplay: this.options.autoplay !== null ? this.options.autoplay : false,
  44139. muted: this.options.muted !== null ? this.options.muted : true,
  44140. loop: this.options.loop !== null ? this.options.loop : false,
  44141. fluid: false,
  44142. language: 'zh-CN',
  44143. playbackRates: [0.7, 1.0, 1.5, 2.0],
  44144. sources: [{
  44145. type: "video/".concat(sourcesType[sourcesType.length - 1]),
  44146. src: "".concat(this.options.autoplay && !this.options.popupToPlay ? this.url : this.url + '#t=0.8')
  44147. }],
  44148. preload: 'metadata',
  44149. poster: '',
  44150. controlBar: {
  44151. timeDivider: false,
  44152. durationDisplay: false,
  44153. remainingTimeDisplay: false,
  44154. fullscreenToggle: true
  44155. },
  44156. notSupportedMessage: this.$t('warning.unavailableVideo')
  44157. };
  44158. this.playerOptions = (0, _lodash.default)(commonOptions);
  44159. this.modalPlayerOptions = (0, _lodash.default)(commonOptions);
  44160. this.modalPlayerOptions.sources[0].src = this.url;
  44161. this.modalPlayerOptions.autoplay = true;
  44162. this.modalPlayerOptions.preload = 'none';
  44163. this.modalPlayerOptions.height = '600';
  44164. }
  44165. }, {
  44166. key: "onPlayerPlay",
  44167. value: function onPlayerPlay(player) {
  44168. if (!this.checkUrl(this.url)) {
  44169. return;
  44170. }
  44171. if (this.isFirst && this.options.popupToPlay) {
  44172. this.$message.info(this.$t('info.pressEscToExit'), 3);
  44173. }
  44174. if (this.isFirst && !this.options.popupToPlay && !this.options.autoplay) {
  44175. player.currentTime(0);
  44176. this.isFirst = false;
  44177. }
  44178. if (this.options.popupToPlay) {
  44179. player.pause();
  44180. player.currentTime(1);
  44181. player.controlBar.el_.style.visibility = 'hidden';
  44182. this.modalVisible = true;
  44183. } else {
  44184. this.handleControlBar(player);
  44185. }
  44186. }
  44187. }, {
  44188. key: "onModalPlayerPlay",
  44189. value: function onModalPlayerPlay(player) {
  44190. this.handleControlBar(player);
  44191. }
  44192. }, {
  44193. key: "onModalPlayerLoadeddata",
  44194. value: function onModalPlayerLoadeddata(player) {
  44195. this.modalVideoPlayer = player;
  44196. player.play();
  44197. this.handleControlBar(player);
  44198. }
  44199. }, {
  44200. key: "onPlayerEnded",
  44201. value: function onPlayerEnded(player) {
  44202. if (!this.options.autoplay && !this.options.popupToPlay) {
  44203. player.currentTime(1);
  44204. this.isFirst = true;
  44205. }
  44206. }
  44207. }, {
  44208. key: "onPlayerLoadeddata",
  44209. value: function onPlayerLoadeddata(player) {
  44210. if (!this.checkUrl(this.url)) {
  44211. return;
  44212. }
  44213. this.options.popupToPlay && player.pause();
  44214. !this.options.popupToPlay && this.options.autoplay && player.play();
  44215. }
  44216. }, {
  44217. key: "handleControlBar",
  44218. value: function handleControlBar(player) {
  44219. var isControlBarShow = this.options.controlBar === null ? true : this.options.controlBar;
  44220. if (isControlBarShow) {
  44221. player.controlBar.el_.style.visibility = 'visible';
  44222. } else {
  44223. player.controlBar.el_.style.visibility = 'hidden';
  44224. }
  44225. }
  44226. }, {
  44227. key: "checkUrl",
  44228. value: function checkUrl(url) {
  44229. var match;
  44230. if (url === '' || !this.isMatchUrl(url) || url.indexOf('ogg') < 0 && url.indexOf('mp4') < 0 && url.indexOf('webm') < 0) {
  44231. match = false;
  44232. } else {
  44233. match = true;
  44234. }
  44235. return match;
  44236. }
  44237. }, {
  44238. key: "isMatchUrl",
  44239. value: function isMatchUrl(str) {
  44240. var reg = new RegExp('(https?|http|file|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]');
  44241. return reg.test(str);
  44242. }
  44243. }, {
  44244. key: "player",
  44245. get: function get() {
  44246. return this.$refs.videoPlayer.player;
  44247. }
  44248. }]);
  44249. return SmVideoPlayer;
  44250. }(_vue.default);
  44251. __decorate([(0, _vuePropertyDecorator.Prop)()], SmVideoPlayer.prototype, "url", void 0);
  44252. __decorate([(0, _vuePropertyDecorator.Prop)({
  44253. default: function _default() {
  44254. return {
  44255. muted: true,
  44256. loop: false,
  44257. popupToPlay: false,
  44258. autoplay: false,
  44259. controlBar: true
  44260. };
  44261. }
  44262. })], SmVideoPlayer.prototype, "options", void 0);
  44263. __decorate([(0, _vuePropertyDecorator.Watch)('modalVisible')], SmVideoPlayer.prototype, "modalVisibleChanged", null);
  44264. __decorate([(0, _vuePropertyDecorator.Watch)('url')], SmVideoPlayer.prototype, "urlChanged", null);
  44265. __decorate([(0, _vuePropertyDecorator.Watch)('options')], SmVideoPlayer.prototype, "optionsChanged", null);
  44266. SmVideoPlayer = __decorate([(0, _vuePropertyDecorator.Component)({
  44267. name: 'SmVideoPlayer',
  44268. components: {
  44269. videoPlayer: _vueVideoPlayer.videoPlayer
  44270. }
  44271. })], SmVideoPlayer);
  44272. var _default2 = SmVideoPlayer;
  44273. exports.default = _default2;
  44274. /***/ }),
  44275. /***/ "869f":
  44276. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  44277. "use strict";
  44278. __webpack_require__.r(__webpack_exports__);
  44279. /* harmony import */ var _HeatmapLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("531a");
  44280. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HeatmapLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HeatmapLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  44281. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  44282. var render, staticRenderFns
  44283. /* normalize component */
  44284. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  44285. _HeatmapLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  44286. render,
  44287. staticRenderFns,
  44288. false,
  44289. null,
  44290. null,
  44291. null
  44292. )
  44293. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  44294. /***/ }),
  44295. /***/ "86b3":
  44296. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  44297. "use strict";
  44298. __webpack_require__.r(__webpack_exports__);
  44299. /* harmony import */ var _StatisticsResult_vue_vue_type_template_id_511ff01e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("c832");
  44300. /* harmony import */ var _StatisticsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("4362");
  44301. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _StatisticsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _StatisticsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  44302. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  44303. /* normalize component */
  44304. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  44305. _StatisticsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  44306. _StatisticsResult_vue_vue_type_template_id_511ff01e___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  44307. _StatisticsResult_vue_vue_type_template_id_511ff01e___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  44308. false,
  44309. null,
  44310. null,
  44311. null
  44312. )
  44313. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  44314. /***/ }),
  44315. /***/ "875b":
  44316. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  44317. "use strict";
  44318. __webpack_require__.r(__webpack_exports__);
  44319. /* harmony import */ var _GeojsonLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8876");
  44320. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _GeojsonLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _GeojsonLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  44321. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  44322. var render, staticRenderFns
  44323. /* normalize component */
  44324. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  44325. _GeojsonLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  44326. render,
  44327. staticRenderFns,
  44328. false,
  44329. null,
  44330. null,
  44331. null
  44332. )
  44333. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  44334. /***/ }),
  44335. /***/ "8876":
  44336. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  44337. "use strict";
  44338. __webpack_require__.r(__webpack_exports__);
  44339. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_GeojsonLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("e21b");
  44340. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_GeojsonLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_GeojsonLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  44341. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_GeojsonLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_GeojsonLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  44342. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_GeojsonLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  44343. /***/ }),
  44344. /***/ "890a":
  44345. /***/ (function(module, exports, __webpack_require__) {
  44346. // extracted by mini-css-extract-plugin
  44347. /***/ }),
  44348. /***/ "89fc":
  44349. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  44350. "use strict";
  44351. __webpack_require__.r(__webpack_exports__);
  44352. /* harmony import */ var _EchartsLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("dd21");
  44353. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _EchartsLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _EchartsLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  44354. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  44355. var render, staticRenderFns
  44356. /* normalize component */
  44357. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  44358. _EchartsLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  44359. render,
  44360. staticRenderFns,
  44361. false,
  44362. null,
  44363. null,
  44364. null
  44365. )
  44366. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  44367. /***/ }),
  44368. /***/ "8afa":
  44369. /***/ (function(module, exports, __webpack_require__) {
  44370. "use strict";
  44371. module.exports = {
  44372. "aliceblue": [240, 248, 255],
  44373. "antiquewhite": [250, 235, 215],
  44374. "aqua": [0, 255, 255],
  44375. "aquamarine": [127, 255, 212],
  44376. "azure": [240, 255, 255],
  44377. "beige": [245, 245, 220],
  44378. "bisque": [255, 228, 196],
  44379. "black": [0, 0, 0],
  44380. "blanchedalmond": [255, 235, 205],
  44381. "blue": [0, 0, 255],
  44382. "blueviolet": [138, 43, 226],
  44383. "brown": [165, 42, 42],
  44384. "burlywood": [222, 184, 135],
  44385. "cadetblue": [95, 158, 160],
  44386. "chartreuse": [127, 255, 0],
  44387. "chocolate": [210, 105, 30],
  44388. "coral": [255, 127, 80],
  44389. "cornflowerblue": [100, 149, 237],
  44390. "cornsilk": [255, 248, 220],
  44391. "crimson": [220, 20, 60],
  44392. "cyan": [0, 255, 255],
  44393. "darkblue": [0, 0, 139],
  44394. "darkcyan": [0, 139, 139],
  44395. "darkgoldenrod": [184, 134, 11],
  44396. "darkgray": [169, 169, 169],
  44397. "darkgreen": [0, 100, 0],
  44398. "darkgrey": [169, 169, 169],
  44399. "darkkhaki": [189, 183, 107],
  44400. "darkmagenta": [139, 0, 139],
  44401. "darkolivegreen": [85, 107, 47],
  44402. "darkorange": [255, 140, 0],
  44403. "darkorchid": [153, 50, 204],
  44404. "darkred": [139, 0, 0],
  44405. "darksalmon": [233, 150, 122],
  44406. "darkseagreen": [143, 188, 143],
  44407. "darkslateblue": [72, 61, 139],
  44408. "darkslategray": [47, 79, 79],
  44409. "darkslategrey": [47, 79, 79],
  44410. "darkturquoise": [0, 206, 209],
  44411. "darkviolet": [148, 0, 211],
  44412. "deeppink": [255, 20, 147],
  44413. "deepskyblue": [0, 191, 255],
  44414. "dimgray": [105, 105, 105],
  44415. "dimgrey": [105, 105, 105],
  44416. "dodgerblue": [30, 144, 255],
  44417. "firebrick": [178, 34, 34],
  44418. "floralwhite": [255, 250, 240],
  44419. "forestgreen": [34, 139, 34],
  44420. "fuchsia": [255, 0, 255],
  44421. "gainsboro": [220, 220, 220],
  44422. "ghostwhite": [248, 248, 255],
  44423. "gold": [255, 215, 0],
  44424. "goldenrod": [218, 165, 32],
  44425. "gray": [128, 128, 128],
  44426. "green": [0, 128, 0],
  44427. "greenyellow": [173, 255, 47],
  44428. "grey": [128, 128, 128],
  44429. "honeydew": [240, 255, 240],
  44430. "hotpink": [255, 105, 180],
  44431. "indianred": [205, 92, 92],
  44432. "indigo": [75, 0, 130],
  44433. "ivory": [255, 255, 240],
  44434. "khaki": [240, 230, 140],
  44435. "lavender": [230, 230, 250],
  44436. "lavenderblush": [255, 240, 245],
  44437. "lawngreen": [124, 252, 0],
  44438. "lemonchiffon": [255, 250, 205],
  44439. "lightblue": [173, 216, 230],
  44440. "lightcoral": [240, 128, 128],
  44441. "lightcyan": [224, 255, 255],
  44442. "lightgoldenrodyellow": [250, 250, 210],
  44443. "lightgray": [211, 211, 211],
  44444. "lightgreen": [144, 238, 144],
  44445. "lightgrey": [211, 211, 211],
  44446. "lightpink": [255, 182, 193],
  44447. "lightsalmon": [255, 160, 122],
  44448. "lightseagreen": [32, 178, 170],
  44449. "lightskyblue": [135, 206, 250],
  44450. "lightslategray": [119, 136, 153],
  44451. "lightslategrey": [119, 136, 153],
  44452. "lightsteelblue": [176, 196, 222],
  44453. "lightyellow": [255, 255, 224],
  44454. "lime": [0, 255, 0],
  44455. "limegreen": [50, 205, 50],
  44456. "linen": [250, 240, 230],
  44457. "magenta": [255, 0, 255],
  44458. "maroon": [128, 0, 0],
  44459. "mediumaquamarine": [102, 205, 170],
  44460. "mediumblue": [0, 0, 205],
  44461. "mediumorchid": [186, 85, 211],
  44462. "mediumpurple": [147, 112, 219],
  44463. "mediumseagreen": [60, 179, 113],
  44464. "mediumslateblue": [123, 104, 238],
  44465. "mediumspringgreen": [0, 250, 154],
  44466. "mediumturquoise": [72, 209, 204],
  44467. "mediumvioletred": [199, 21, 133],
  44468. "midnightblue": [25, 25, 112],
  44469. "mintcream": [245, 255, 250],
  44470. "mistyrose": [255, 228, 225],
  44471. "moccasin": [255, 228, 181],
  44472. "navajowhite": [255, 222, 173],
  44473. "navy": [0, 0, 128],
  44474. "oldlace": [253, 245, 230],
  44475. "olive": [128, 128, 0],
  44476. "olivedrab": [107, 142, 35],
  44477. "orange": [255, 165, 0],
  44478. "orangered": [255, 69, 0],
  44479. "orchid": [218, 112, 214],
  44480. "palegoldenrod": [238, 232, 170],
  44481. "palegreen": [152, 251, 152],
  44482. "paleturquoise": [175, 238, 238],
  44483. "palevioletred": [219, 112, 147],
  44484. "papayawhip": [255, 239, 213],
  44485. "peachpuff": [255, 218, 185],
  44486. "peru": [205, 133, 63],
  44487. "pink": [255, 192, 203],
  44488. "plum": [221, 160, 221],
  44489. "powderblue": [176, 224, 230],
  44490. "purple": [128, 0, 128],
  44491. "rebeccapurple": [102, 51, 153],
  44492. "red": [255, 0, 0],
  44493. "rosybrown": [188, 143, 143],
  44494. "royalblue": [65, 105, 225],
  44495. "saddlebrown": [139, 69, 19],
  44496. "salmon": [250, 128, 114],
  44497. "sandybrown": [244, 164, 96],
  44498. "seagreen": [46, 139, 87],
  44499. "seashell": [255, 245, 238],
  44500. "sienna": [160, 82, 45],
  44501. "silver": [192, 192, 192],
  44502. "skyblue": [135, 206, 235],
  44503. "slateblue": [106, 90, 205],
  44504. "slategray": [112, 128, 144],
  44505. "slategrey": [112, 128, 144],
  44506. "snow": [255, 250, 250],
  44507. "springgreen": [0, 255, 127],
  44508. "steelblue": [70, 130, 180],
  44509. "tan": [210, 180, 140],
  44510. "teal": [0, 128, 128],
  44511. "thistle": [216, 191, 216],
  44512. "tomato": [255, 99, 71],
  44513. "turquoise": [64, 224, 208],
  44514. "violet": [238, 130, 238],
  44515. "wheat": [245, 222, 179],
  44516. "white": [255, 255, 255],
  44517. "whitesmoke": [245, 245, 245],
  44518. "yellow": [255, 255, 0],
  44519. "yellowgreen": [154, 205, 50]
  44520. };
  44521. /***/ }),
  44522. /***/ "8b18":
  44523. /***/ (function(module, exports, __webpack_require__) {
  44524. "use strict";
  44525. var _interopRequireDefault = __webpack_require__("8e6d");
  44526. Object.defineProperty(exports, "__esModule", {
  44527. value: true
  44528. });
  44529. exports.default = void 0;
  44530. var _vueCountTo = _interopRequireDefault(__webpack_require__("4849"));
  44531. var _util = __webpack_require__("1448");
  44532. //
  44533. //
  44534. //
  44535. //
  44536. //
  44537. //
  44538. //
  44539. //
  44540. //
  44541. //
  44542. //
  44543. //
  44544. //
  44545. var _default2 = {
  44546. name: 'SmCountTo',
  44547. extends: _vueCountTo.default,
  44548. props: {
  44549. fontSize: {
  44550. type: [String, Number]
  44551. },
  44552. numBackground: {
  44553. type: Object,
  44554. default: function _default() {
  44555. return {
  44556. color: 'rgba(0, 0, 0, 0)',
  44557. image: '',
  44558. padding: 0
  44559. };
  44560. }
  44561. },
  44562. numSpacing: {
  44563. type: Number,
  44564. default: 0
  44565. },
  44566. separatorBackground: {
  44567. type: Boolean,
  44568. default: false
  44569. }
  44570. },
  44571. computed: {
  44572. calNumBackground: function calNumBackground() {
  44573. var _this = this;
  44574. return function (value) {
  44575. if (!_this.numBackground) {
  44576. return {};
  44577. }
  44578. if (value && !_this.separatorBackground && (value === _this.separator || value === _this.decimal)) {
  44579. return {};
  44580. }
  44581. var reg = /\d+(\.\d+)?([a-z]+)/gi;
  44582. var fontUnit = _this.fontSize ? _this.fontSize.replace(reg, '$2') : '';
  44583. var styleObj = {
  44584. backgroundColor: _this.numBackground.color,
  44585. padding: _this.numBackground.padding
  44586. };
  44587. if (_this.numBackground.image) {
  44588. styleObj = Object.assign(styleObj, {
  44589. backgroundImage: "url(".concat(_this.numBackground.image, ")"),
  44590. backgroundSize: '100% 100%'
  44591. });
  44592. }
  44593. if (_this.numBackground.image || !(0, _util.isTransparent)(_this.numBackground.color)) {
  44594. styleObj = Object.assign(styleObj, {
  44595. textIndent: "".concat(parseFloat(_this.fontSize) * 0.16).concat(fontUnit),
  44596. letterSpacing: "".concat(parseFloat(_this.fontSize) * 0.16).concat(fontUnit)
  44597. });
  44598. } else {
  44599. styleObj = Object.assign(styleObj, {
  44600. textIndent: "".concat(parseFloat(_this.fontSize) * 0.06).concat(fontUnit),
  44601. letterSpacing: "".concat(parseFloat(_this.fontSize) * 0.06).concat(fontUnit)
  44602. });
  44603. }
  44604. return styleObj;
  44605. };
  44606. },
  44607. numInterval: function numInterval() {
  44608. return {
  44609. marginRight: "".concat(this.numSpacing, "px")
  44610. };
  44611. },
  44612. numStyle: function numStyle() {
  44613. return {
  44614. fontSize: this.fontSize
  44615. };
  44616. },
  44617. numDataList: function numDataList() {
  44618. return this.displayValue.split('').map(function (num) {
  44619. return num;
  44620. });
  44621. }
  44622. },
  44623. watch: {
  44624. separator: function separator() {
  44625. this.start();
  44626. },
  44627. decimals: function decimals() {
  44628. this.start();
  44629. }
  44630. }
  44631. };
  44632. exports.default = _default2;
  44633. /***/ }),
  44634. /***/ "8b5b":
  44635. /***/ (function(module, exports) {
  44636. module.exports = __WEBPACK_EXTERNAL_MODULE__8b5b__;
  44637. /***/ }),
  44638. /***/ "8bd2":
  44639. /***/ (function(module, exports, __webpack_require__) {
  44640. "use strict";
  44641. /**
  44642. * Syntactic sugar for invoking a function and expanding an array for arguments.
  44643. *
  44644. * Common use case would be to use `Function.prototype.apply`.
  44645. *
  44646. * ```js
  44647. * function f(x, y, z) {}
  44648. * var args = [1, 2, 3];
  44649. * f.apply(null, args);
  44650. * ```
  44651. *
  44652. * With `spread` this example can be re-written.
  44653. *
  44654. * ```js
  44655. * spread(function(x, y, z) {})([1, 2, 3]);
  44656. * ```
  44657. *
  44658. * @param {Function} callback
  44659. * @returns {Function}
  44660. */
  44661. module.exports = function spread(callback) {
  44662. return function wrap(arr) {
  44663. return callback.apply(null, arr);
  44664. };
  44665. };
  44666. /***/ }),
  44667. /***/ "8c7a":
  44668. /***/ (function(module, exports, __webpack_require__) {
  44669. "use strict";
  44670. var utils = __webpack_require__("d691");
  44671. var settle = __webpack_require__("1942");
  44672. var buildURL = __webpack_require__("9c18");
  44673. var parseHeaders = __webpack_require__("655b");
  44674. var isURLSameOrigin = __webpack_require__("f1c2");
  44675. var createError = __webpack_require__("ff2e");
  44676. module.exports = function xhrAdapter(config) {
  44677. return new Promise(function dispatchXhrRequest(resolve, reject) {
  44678. var requestData = config.data;
  44679. var requestHeaders = config.headers;
  44680. if (utils.isFormData(requestData)) {
  44681. delete requestHeaders['Content-Type']; // Let the browser set it
  44682. }
  44683. var request = new XMLHttpRequest();
  44684. // HTTP basic authentication
  44685. if (config.auth) {
  44686. var username = config.auth.username || '';
  44687. var password = config.auth.password || '';
  44688. requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
  44689. }
  44690. request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);
  44691. // Set the request timeout in MS
  44692. request.timeout = config.timeout;
  44693. // Listen for ready state
  44694. request.onreadystatechange = function handleLoad() {
  44695. if (!request || request.readyState !== 4) {
  44696. return;
  44697. }
  44698. // The request errored out and we didn't get a response, this will be
  44699. // handled by onerror instead
  44700. // With one exception: request that using file: protocol, most browsers
  44701. // will return status as 0 even though it's a successful request
  44702. if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
  44703. return;
  44704. }
  44705. // Prepare the response
  44706. var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
  44707. var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;
  44708. var response = {
  44709. data: responseData,
  44710. status: request.status,
  44711. statusText: request.statusText,
  44712. headers: responseHeaders,
  44713. config: config,
  44714. request: request
  44715. };
  44716. settle(resolve, reject, response);
  44717. // Clean up request
  44718. request = null;
  44719. };
  44720. // Handle browser request cancellation (as opposed to a manual cancellation)
  44721. request.onabort = function handleAbort() {
  44722. if (!request) {
  44723. return;
  44724. }
  44725. reject(createError('Request aborted', config, 'ECONNABORTED', request));
  44726. // Clean up request
  44727. request = null;
  44728. };
  44729. // Handle low level network errors
  44730. request.onerror = function handleError() {
  44731. // Real errors are hidden from us by the browser
  44732. // onerror should only fire if it's a network error
  44733. reject(createError('Network Error', config, null, request));
  44734. // Clean up request
  44735. request = null;
  44736. };
  44737. // Handle timeout
  44738. request.ontimeout = function handleTimeout() {
  44739. reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',
  44740. request));
  44741. // Clean up request
  44742. request = null;
  44743. };
  44744. // Add xsrf header
  44745. // This is only done if running in a standard browser environment.
  44746. // Specifically not if we're in a web worker, or react-native.
  44747. if (utils.isStandardBrowserEnv()) {
  44748. var cookies = __webpack_require__("bbf9");
  44749. // Add xsrf header
  44750. var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?
  44751. cookies.read(config.xsrfCookieName) :
  44752. undefined;
  44753. if (xsrfValue) {
  44754. requestHeaders[config.xsrfHeaderName] = xsrfValue;
  44755. }
  44756. }
  44757. // Add headers to the request
  44758. if ('setRequestHeader' in request) {
  44759. utils.forEach(requestHeaders, function setRequestHeader(val, key) {
  44760. if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
  44761. // Remove Content-Type if data is undefined
  44762. delete requestHeaders[key];
  44763. } else {
  44764. // Otherwise add header to the request
  44765. request.setRequestHeader(key, val);
  44766. }
  44767. });
  44768. }
  44769. // Add withCredentials to request if needed
  44770. if (config.withCredentials) {
  44771. request.withCredentials = true;
  44772. }
  44773. // Add responseType to request if needed
  44774. if (config.responseType) {
  44775. try {
  44776. request.responseType = config.responseType;
  44777. } catch (e) {
  44778. // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.
  44779. // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.
  44780. if (config.responseType !== 'json') {
  44781. throw e;
  44782. }
  44783. }
  44784. }
  44785. // Handle progress if needed
  44786. if (typeof config.onDownloadProgress === 'function') {
  44787. request.addEventListener('progress', config.onDownloadProgress);
  44788. }
  44789. // Not all browsers support upload events
  44790. if (typeof config.onUploadProgress === 'function' && request.upload) {
  44791. request.upload.addEventListener('progress', config.onUploadProgress);
  44792. }
  44793. if (config.cancelToken) {
  44794. // Handle cancellation
  44795. config.cancelToken.promise.then(function onCanceled(cancel) {
  44796. if (!request) {
  44797. return;
  44798. }
  44799. request.abort();
  44800. reject(cancel);
  44801. // Clean up request
  44802. request = null;
  44803. });
  44804. }
  44805. if (requestData === undefined) {
  44806. requestData = null;
  44807. }
  44808. // Send the request
  44809. request.send(requestData);
  44810. });
  44811. };
  44812. /***/ }),
  44813. /***/ "8ca6":
  44814. /***/ (function(module, exports, __webpack_require__) {
  44815. "use strict";
  44816. var _interopRequireDefault = __webpack_require__("8e6d");
  44817. Object.defineProperty(exports, "__esModule", {
  44818. value: true
  44819. });
  44820. exports.default = void 0;
  44821. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  44822. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  44823. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  44824. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  44825. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  44826. var _Marker2 = _interopRequireDefault(__webpack_require__("4361"));
  44827. var BreathingApertureMarker =
  44828. /*#__PURE__*/
  44829. function (_Marker) {
  44830. (0, _inherits2.default)(BreathingApertureMarker, _Marker);
  44831. function BreathingApertureMarker(features) {
  44832. var _this;
  44833. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  44834. (0, _classCallCheck2.default)(this, BreathingApertureMarker);
  44835. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BreathingApertureMarker).call(this, features, options));
  44836. _this.features && _this._createMarker();
  44837. return _this;
  44838. }
  44839. (0, _createClass2.default)(BreathingApertureMarker, [{
  44840. key: "setMarkersWidth",
  44841. value: function setMarkersWidth(width) {
  44842. this.options.width = width;
  44843. var pulse = document.getElementsByClassName('sm-component-animate-marker__pulse');
  44844. for (var i = 0; i < pulse.length; i++) {
  44845. this._setBreathingApertureWidth(pulse[i].style);
  44846. }
  44847. }
  44848. }, {
  44849. key: "setMarkersColors",
  44850. value: function setMarkersColors(colors) {
  44851. this.options.colors = colors;
  44852. if (colors && colors.length && colors.length > 0) {
  44853. var dot = document.getElementsByClassName('sm-component-animate-marker__dot-point');
  44854. for (var i = 0; i < dot.length; i++) {
  44855. dot[i].style.background = this.options.colors[0];
  44856. }
  44857. var pulse = document.getElementsByClassName('sm-component-animate-marker__pulse');
  44858. for (var _i = 0; _i < pulse.length; _i++) {
  44859. var style = pulse[_i].style;
  44860. style.borderColor = this.options.colors[0];
  44861. style.boxShadow = "0 0 12px ".concat(this.options.colors[1], ", 0 0 20px ").concat(this.options.colors[1], " inset");
  44862. }
  44863. }
  44864. }
  44865. }, {
  44866. key: "_createMarker",
  44867. value: function _createMarker() {
  44868. var _this2 = this;
  44869. this.features.features.forEach(function (point) {
  44870. var markerContainer = document.createElement('div');
  44871. markerContainer.className = 'sm-component-animate-marker--breathing-aperture';
  44872. var dot = document.createElement('span');
  44873. dot.className = 'sm-component-animate-marker__dot-point';
  44874. var colors;
  44875. if (_this2.options.colors && _this2.options.colors.length && _this2.options.colors.length > 0) {
  44876. colors = _this2.options.colors;
  44877. }
  44878. colors && (dot.style.background = colors[0]);
  44879. markerContainer.appendChild(dot);
  44880. var childElements = _this2._createMakerElement(3, 'span', ['sm-component-animate-marker__delay', 'sm-component-animate-marker__pulse']);
  44881. childElements.forEach(function (element) {
  44882. if (colors) {
  44883. element.style.borderColor = colors[0];
  44884. element.style.boxShadow = "0 0 12px ".concat(colors[1], ", 0 0 20px ").concat(colors[1], " inset");
  44885. }
  44886. _this2._setBreathingApertureWidth(element.style);
  44887. markerContainer.appendChild(element);
  44888. });
  44889. var nameContainer = _this2._getTextContainer(point, 'breathing-aperture-name');
  44890. markerContainer.appendChild(nameContainer);
  44891. _this2.markersElement.push(markerContainer);
  44892. }, this);
  44893. }
  44894. }, {
  44895. key: "_setBreathingApertureWidth",
  44896. value: function _setBreathingApertureWidth(style) {
  44897. var width = this.options.width;
  44898. if (width) {
  44899. style.width = width + 'px';
  44900. style.height = width + 'px';
  44901. style.top = -width / 2 + 'px';
  44902. style.left = -width / 2 + 'px';
  44903. style.borderRadius = width / 2 + 'px';
  44904. }
  44905. }
  44906. }, {
  44907. key: "_createMakerElement",
  44908. value: function _createMakerElement(length, type, classNames) {
  44909. var markerElements = [];
  44910. for (var i = 1; i < length + 1; i++) {
  44911. var element = document.createElement(type);
  44912. element.className = "".concat(classNames[0], "-0").concat(i, " ").concat(classNames[1]);
  44913. markerElements.push(element);
  44914. }
  44915. return markerElements;
  44916. }
  44917. }]);
  44918. return BreathingApertureMarker;
  44919. }(_Marker2.default);
  44920. exports.default = BreathingApertureMarker;
  44921. /***/ }),
  44922. /***/ "8d32":
  44923. /***/ (function(module, exports, __webpack_require__) {
  44924. /* WEBPACK VAR INJECTION */(function(global) {
  44925. /**
  44926. * Module exports.
  44927. */
  44928. module.exports = deprecate;
  44929. /**
  44930. * Mark that a method should not be used.
  44931. * Returns a modified function which warns once by default.
  44932. *
  44933. * If `localStorage.noDeprecation = true` is set, then it is a no-op.
  44934. *
  44935. * If `localStorage.throwDeprecation = true` is set, then deprecated functions
  44936. * will throw an Error when invoked.
  44937. *
  44938. * If `localStorage.traceDeprecation = true` is set, then deprecated functions
  44939. * will invoke `console.trace()` instead of `console.error()`.
  44940. *
  44941. * @param {Function} fn - the function to deprecate
  44942. * @param {String} msg - the string to print to the console when `fn` is invoked
  44943. * @returns {Function} a new "deprecated" version of `fn`
  44944. * @api public
  44945. */
  44946. function deprecate (fn, msg) {
  44947. if (config('noDeprecation')) {
  44948. return fn;
  44949. }
  44950. var warned = false;
  44951. function deprecated() {
  44952. if (!warned) {
  44953. if (config('throwDeprecation')) {
  44954. throw new Error(msg);
  44955. } else if (config('traceDeprecation')) {
  44956. console.trace(msg);
  44957. } else {
  44958. console.warn(msg);
  44959. }
  44960. warned = true;
  44961. }
  44962. return fn.apply(this, arguments);
  44963. }
  44964. return deprecated;
  44965. }
  44966. /**
  44967. * Checks `localStorage` for boolean values for the given `name`.
  44968. *
  44969. * @param {String} name
  44970. * @returns {Boolean}
  44971. * @api private
  44972. */
  44973. function config (name) {
  44974. // accessing global.localStorage can trigger a DOMException in sandboxed iframes
  44975. try {
  44976. if (!global.localStorage) return false;
  44977. } catch (_) {
  44978. return false;
  44979. }
  44980. var val = global.localStorage[name];
  44981. if (null == val) return false;
  44982. return String(val).toLowerCase() === 'true';
  44983. }
  44984. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("698d")))
  44985. /***/ }),
  44986. /***/ "8e6d":
  44987. /***/ (function(module, exports) {
  44988. function _interopRequireDefault(obj) {
  44989. return obj && obj.__esModule ? obj : {
  44990. "default": obj
  44991. };
  44992. }
  44993. module.exports = _interopRequireDefault;
  44994. /***/ }),
  44995. /***/ "8f69":
  44996. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  44997. "use strict";
  44998. __webpack_require__.r(__webpack_exports__);
  44999. /* harmony import */ var _Query_vue_vue_type_template_id_3cfc42a0___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f582");
  45000. /* harmony import */ var _Query_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("a006");
  45001. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Query_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Query_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  45002. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  45003. /* normalize component */
  45004. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  45005. _Query_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  45006. _Query_vue_vue_type_template_id_3cfc42a0___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  45007. _Query_vue_vue_type_template_id_3cfc42a0___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  45008. false,
  45009. null,
  45010. null,
  45011. null
  45012. )
  45013. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  45014. /***/ }),
  45015. /***/ "8ff5":
  45016. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  45017. "use strict";
  45018. __webpack_require__.r(__webpack_exports__);
  45019. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Chart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("bb45");
  45020. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Chart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Chart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  45021. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Chart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Chart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  45022. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Chart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  45023. /***/ }),
  45024. /***/ "908c":
  45025. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  45026. "use strict";
  45027. __webpack_require__.r(__webpack_exports__);
  45028. /* harmony import */ var _LiquidFill_vue_vue_type_template_id_8aedaae4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("238e");
  45029. /* harmony import */ var _LiquidFill_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("2bec");
  45030. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _LiquidFill_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _LiquidFill_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  45031. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  45032. /* normalize component */
  45033. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  45034. _LiquidFill_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  45035. _LiquidFill_vue_vue_type_template_id_8aedaae4___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  45036. _LiquidFill_vue_vue_type_template_id_8aedaae4___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  45037. false,
  45038. null,
  45039. null,
  45040. null
  45041. )
  45042. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  45043. /***/ }),
  45044. /***/ "9104":
  45045. /***/ (function(module, exports, __webpack_require__) {
  45046. "use strict";
  45047. var _interopRequireDefault = __webpack_require__("8e6d");
  45048. Object.defineProperty(exports, "__esModule", {
  45049. value: true
  45050. });
  45051. exports.default = void 0;
  45052. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  45053. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  45054. var _mapboxGlDraw = _interopRequireDefault(__webpack_require__("fc22"));
  45055. var _mapEvent = _interopRequireDefault(__webpack_require__("d3e9"));
  45056. var _lodash = _interopRequireDefault(__webpack_require__("2fc1"));
  45057. var _lodash2 = _interopRequireDefault(__webpack_require__("5f9f"));
  45058. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  45059. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  45060. /**
  45061. * drawList 结构为 { [mapTarget1]: [draw1], [mapTarget2]: [draw2] }
  45062. * drawStates 结构如下,每个地图上必须保证只有一个组件的绘画状态为true
  45063. * {
  45064. * [mapTarget1]: {[component1]: true/false, [component2]: true/false},
  45065. * [mapTarget2]: {[component1]: true/false, [component2]: true/false}
  45066. * }
  45067. */
  45068. var _default = new _vue.default({
  45069. mapList: {},
  45070. drawList: {},
  45071. drawStates: {},
  45072. _createDraw: function _createDraw(mapTarget) {
  45073. var drawOptions = {
  45074. displayControlsDefault: false,
  45075. touchEnabled: false,
  45076. boxSelect: false,
  45077. modes: _objectSpread({}, _mapboxGlDraw.default.modes, {
  45078. simple_select: (0, _lodash.default)(_mapboxGlDraw.default.modes.simple_select, {
  45079. dragMove: function dragMove() {},
  45080. clickOnVertex: function clickOnVertex() {},
  45081. clickOnFeature: function clickOnFeature(state, e) {
  45082. var _this = this;
  45083. this.stopExtendedInteractions(state);
  45084. var isShiftClick = e.originalEvent && e.originalEvent.shiftKey;
  45085. var selectedFeatureIds = this.getSelectedIds();
  45086. var featureId = e.featureTarget.properties.id;
  45087. var isFeatureSelected = this.isSelected(featureId); // Shift-click on an unselected feature
  45088. if (!isFeatureSelected && !isShiftClick) {
  45089. // Make it the only selected feature
  45090. selectedFeatureIds.forEach(function (id) {
  45091. return _this.doRender(id);
  45092. });
  45093. this.setSelected(featureId);
  45094. } // No matter what, re-render the clicked feature
  45095. this.doRender(featureId);
  45096. }
  45097. }),
  45098. direct_select: (0, _lodash.default)(_mapboxGlDraw.default.modes.direct_select, {
  45099. dragFeature: function dragFeature() {}
  45100. })
  45101. }),
  45102. styles: [// line stroke
  45103. {
  45104. id: 'draw-line-static',
  45105. type: 'line',
  45106. filter: ['any', ['==', 'active', 'false'], ['all', ['==', 'active', 'true'], ['==', 'mode', 'simple_select']]],
  45107. layout: {
  45108. 'line-cap': 'round',
  45109. 'line-join': 'round'
  45110. },
  45111. paint: {
  45112. 'line-color': '#f75564',
  45113. 'line-width': 3
  45114. }
  45115. }, {
  45116. id: 'draw-line-hover',
  45117. type: 'line',
  45118. filter: ['all', ['==', '$type', 'LineString'], ['==', 'id', '']],
  45119. layout: {
  45120. 'line-cap': 'round',
  45121. 'line-join': 'round'
  45122. },
  45123. paint: {
  45124. 'line-color': '#f75564',
  45125. 'line-width': 33,
  45126. 'line-opacity': 0.2
  45127. }
  45128. }, {
  45129. id: 'draw-line-drawing',
  45130. type: 'line',
  45131. filter: ['all', ['==', 'active', 'true'], ['!=', 'mode', 'simple_select']],
  45132. layout: {
  45133. 'line-cap': 'round',
  45134. 'line-join': 'round'
  45135. },
  45136. paint: {
  45137. 'line-color': '#f75564',
  45138. 'line-dasharray': [0.4, 2],
  45139. 'line-width': 3
  45140. }
  45141. }, {
  45142. id: 'draw-line-dashed',
  45143. type: 'line',
  45144. filter: ['all', ['==', 'id', '']],
  45145. layout: {
  45146. 'line-cap': 'round',
  45147. 'line-join': 'round'
  45148. },
  45149. paint: {
  45150. 'line-color': '#f75564',
  45151. 'line-dasharray': [0.4, 2],
  45152. 'line-width': 3
  45153. }
  45154. }, // polygon fill
  45155. {
  45156. id: 'draw-polygon-static',
  45157. type: 'fill',
  45158. filter: ['all', ['==', '$type', 'Polygon']],
  45159. paint: {
  45160. 'fill-color': '#f75564',
  45161. 'fill-outline-color': '#f75564',
  45162. 'fill-opacity': 0.4
  45163. }
  45164. }, // vertex point halos
  45165. {
  45166. id: 'draw-vertex-halo-active',
  45167. type: 'circle',
  45168. filter: ['all', ['==', '$type', 'Point'], ['==', 'meta', 'vertex']],
  45169. paint: {
  45170. 'circle-radius': 6,
  45171. 'circle-color': '#FFF'
  45172. }
  45173. }, // vertex points
  45174. {
  45175. id: 'draw-vertex-active',
  45176. type: 'circle',
  45177. filter: ['all', ['==', '$type', 'Point'], ['==', 'meta', 'vertex']],
  45178. paint: {
  45179. 'circle-radius': 4,
  45180. 'circle-color': '#f75564'
  45181. }
  45182. }, // point
  45183. {
  45184. id: 'draw-point-static',
  45185. type: 'circle',
  45186. filter: ['all', ['==', '$type', 'Point'], ['==', 'meta', 'feature']],
  45187. paint: {
  45188. 'circle-radius': 6,
  45189. 'circle-color': '#f75564'
  45190. }
  45191. }]
  45192. };
  45193. var draw = new _mapboxGlDraw.default(drawOptions);
  45194. this.drawList[mapTarget] = draw;
  45195. return draw;
  45196. },
  45197. getDraw: function getDraw(mapTarget) {
  45198. var create = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
  45199. var draw = this.drawList[mapTarget];
  45200. var map = _mapEvent.default.$options.getMap(mapTarget);
  45201. var prevMap = this.mapList[mapTarget];
  45202. var isSame = (0, _lodash2.default)(map, prevMap);
  45203. if (map && !isSame && create) {
  45204. draw = this._createDraw(mapTarget);
  45205. draw.onAdd(map);
  45206. this.mapList[mapTarget] = map;
  45207. }
  45208. return draw;
  45209. },
  45210. getDrawingState: function getDrawingState(mapTarget, componentName) {
  45211. return this.drawStates[mapTarget] && this.drawStates[mapTarget][componentName];
  45212. },
  45213. setDrawingState: function setDrawingState(mapTarget, componentName, drawing) {
  45214. this.drawStates[mapTarget] = this.drawStates[mapTarget] || {};
  45215. if (drawing) {
  45216. for (var key in this.drawStates[mapTarget]) {
  45217. this.drawStates[mapTarget][key] = false;
  45218. }
  45219. }
  45220. this.drawStates[mapTarget][componentName] = drawing;
  45221. },
  45222. deleteDrawingState: function deleteDrawingState(mapTarget, componentName) {
  45223. var mapDrawStates = this.drawStates[mapTarget];
  45224. if (mapDrawStates) {
  45225. if (componentName in mapDrawStates) {
  45226. delete mapDrawStates[componentName];
  45227. } // 如果当前map上有关draw的组件都销毁 则把当前map上的draw图层销毁 同时把组件状态也销毁
  45228. var componentsLen = Object.keys(this.drawStates[mapTarget]).length;
  45229. if (!componentsLen) {
  45230. this.deleteDrawOfMap(mapTarget);
  45231. }
  45232. }
  45233. },
  45234. deleteDrawOfMap: function deleteDrawOfMap(mapTarget) {
  45235. var draw = this.getDraw(mapTarget, false);
  45236. var map = this.mapList[mapTarget];
  45237. if (draw && map) {
  45238. draw.onRemove(map);
  45239. delete this.drawList[mapTarget];
  45240. delete this.mapList[mapTarget];
  45241. delete this.drawStates[mapTarget];
  45242. }
  45243. }
  45244. });
  45245. exports.default = _default;
  45246. /***/ }),
  45247. /***/ "9106":
  45248. /***/ (function(module, exports) {
  45249. /*
  45250. StackBlur - a fast almost Gaussian Blur For Canvas
  45251. Version: 0.5
  45252. Author: Mario Klingemann
  45253. Contact: mario@quasimondo.com
  45254. Website: http://www.quasimondo.com/StackBlurForCanvas
  45255. Twitter: @quasimondo
  45256. In case you find this class useful - especially in commercial projects -
  45257. I am not totally unhappy for a small donation to my PayPal account
  45258. mario@quasimondo.de
  45259. Or support me on flattr:
  45260. https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript
  45261. Copyright (c) 2010 Mario Klingemann
  45262. Permission is hereby granted, free of charge, to any person
  45263. obtaining a copy of this software and associated documentation
  45264. files (the "Software"), to deal in the Software without
  45265. restriction, including without limitation the rights to use,
  45266. copy, modify, merge, publish, distribute, sublicense, and/or sell
  45267. copies of the Software, and to permit persons to whom the
  45268. Software is furnished to do so, subject to the following
  45269. conditions:
  45270. The above copyright notice and this permission notice shall be
  45271. included in all copies or substantial portions of the Software.
  45272. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  45273. EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
  45274. OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  45275. NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  45276. HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  45277. WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  45278. FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  45279. OTHER DEALINGS IN THE SOFTWARE.
  45280. */
  45281. var mul_table = [
  45282. 512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,
  45283. 454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,
  45284. 482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,
  45285. 437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,
  45286. 497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,
  45287. 320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,
  45288. 446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,
  45289. 329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,
  45290. 505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,
  45291. 399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,
  45292. 324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,
  45293. 268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,
  45294. 451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,
  45295. 385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,
  45296. 332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,
  45297. 289,287,285,282,280,278,275,273,271,269,267,265,263,261,259];
  45298. var shg_table = [
  45299. 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17,
  45300. 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19,
  45301. 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20,
  45302. 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,
  45303. 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
  45304. 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,
  45305. 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  45306. 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23,
  45307. 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
  45308. 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
  45309. 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
  45310. 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
  45311. 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
  45312. 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
  45313. 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
  45314. 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 ];
  45315. function processImage(img, canvas, radius, blurAlphaChannel)
  45316. {
  45317. if (typeof(img) == 'string') {
  45318. var img = document.getElementById(img);
  45319. }
  45320. else if (typeof HTMLImageElement !== 'undefined' && !img instanceof HTMLImageElement) {
  45321. return;
  45322. }
  45323. var w = img.naturalWidth;
  45324. var h = img.naturalHeight;
  45325. if (typeof(canvas) == 'string') {
  45326. var canvas = document.getElementById(canvas);
  45327. }
  45328. else if (typeof HTMLCanvasElement !== 'undefined' && !canvas instanceof HTMLCanvasElement) {
  45329. return;
  45330. }
  45331. canvas.style.width = w + 'px';
  45332. canvas.style.height = h + 'px';
  45333. canvas.width = w;
  45334. canvas.height = h;
  45335. var context = canvas.getContext('2d');
  45336. context.clearRect(0, 0, w, h);
  45337. context.drawImage(img, 0, 0);
  45338. if (isNaN(radius) || radius < 1) return;
  45339. if (blurAlphaChannel)
  45340. processCanvasRGBA(canvas, 0, 0, w, h, radius);
  45341. else
  45342. processCanvasRGB(canvas, 0, 0, w, h, radius);
  45343. }
  45344. function getImageDataFromCanvas(canvas, top_x, top_y, width, height)
  45345. {
  45346. if (typeof(canvas) == 'string')
  45347. var canvas = document.getElementById(canvas);
  45348. else if (typeof HTMLCanvasElement !== 'undefined' && !canvas instanceof HTMLCanvasElement)
  45349. return;
  45350. var context = canvas.getContext('2d');
  45351. var imageData;
  45352. try {
  45353. try {
  45354. imageData = context.getImageData(top_x, top_y, width, height);
  45355. } catch(e) {
  45356. throw new Error("unable to access local image data: " + e);
  45357. return;
  45358. }
  45359. } catch(e) {
  45360. throw new Error("unable to access image data: " + e);
  45361. }
  45362. return imageData;
  45363. }
  45364. function processCanvasRGBA(canvas, top_x, top_y, width, height, radius)
  45365. {
  45366. if (isNaN(radius) || radius < 1) return;
  45367. radius |= 0;
  45368. var imageData = getImageDataFromCanvas(canvas, top_x, top_y, width, height);
  45369. imageData = processImageDataRGBA(imageData, top_x, top_y, width, height, radius);
  45370. canvas.getContext('2d').putImageData(imageData, top_x, top_y);
  45371. }
  45372. function processImageDataRGBA(imageData, top_x, top_y, width, height, radius)
  45373. {
  45374. var pixels = imageData.data;
  45375. var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum,
  45376. r_out_sum, g_out_sum, b_out_sum, a_out_sum,
  45377. r_in_sum, g_in_sum, b_in_sum, a_in_sum,
  45378. pr, pg, pb, pa, rbs;
  45379. var div = radius + radius + 1;
  45380. var w4 = width << 2;
  45381. var widthMinus1 = width - 1;
  45382. var heightMinus1 = height - 1;
  45383. var radiusPlus1 = radius + 1;
  45384. var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;
  45385. var stackStart = new BlurStack();
  45386. var stack = stackStart;
  45387. for (i = 1; i < div; i++)
  45388. {
  45389. stack = stack.next = new BlurStack();
  45390. if (i == radiusPlus1) var stackEnd = stack;
  45391. }
  45392. stack.next = stackStart;
  45393. var stackIn = null;
  45394. var stackOut = null;
  45395. yw = yi = 0;
  45396. var mul_sum = mul_table[radius];
  45397. var shg_sum = shg_table[radius];
  45398. for (y = 0; y < height; y++)
  45399. {
  45400. r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0;
  45401. r_out_sum = radiusPlus1 * (pr = pixels[yi]);
  45402. g_out_sum = radiusPlus1 * (pg = pixels[yi+1]);
  45403. b_out_sum = radiusPlus1 * (pb = pixels[yi+2]);
  45404. a_out_sum = radiusPlus1 * (pa = pixels[yi+3]);
  45405. r_sum += sumFactor * pr;
  45406. g_sum += sumFactor * pg;
  45407. b_sum += sumFactor * pb;
  45408. a_sum += sumFactor * pa;
  45409. stack = stackStart;
  45410. for (i = 0; i < radiusPlus1; i++)
  45411. {
  45412. stack.r = pr;
  45413. stack.g = pg;
  45414. stack.b = pb;
  45415. stack.a = pa;
  45416. stack = stack.next;
  45417. }
  45418. for (i = 1; i < radiusPlus1; i++)
  45419. {
  45420. p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);
  45421. r_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);
  45422. g_sum += (stack.g = (pg = pixels[p+1])) * rbs;
  45423. b_sum += (stack.b = (pb = pixels[p+2])) * rbs;
  45424. a_sum += (stack.a = (pa = pixels[p+3])) * rbs;
  45425. r_in_sum += pr;
  45426. g_in_sum += pg;
  45427. b_in_sum += pb;
  45428. a_in_sum += pa;
  45429. stack = stack.next;
  45430. }
  45431. stackIn = stackStart;
  45432. stackOut = stackEnd;
  45433. for (x = 0; x < width; x++)
  45434. {
  45435. pixels[yi+3] = pa = (a_sum * mul_sum) >> shg_sum;
  45436. if (pa != 0)
  45437. {
  45438. pa = 255 / pa;
  45439. pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;
  45440. pixels[yi+1] = ((g_sum * mul_sum) >> shg_sum) * pa;
  45441. pixels[yi+2] = ((b_sum * mul_sum) >> shg_sum) * pa;
  45442. } else {
  45443. pixels[yi] = pixels[yi+1] = pixels[yi+2] = 0;
  45444. }
  45445. r_sum -= r_out_sum;
  45446. g_sum -= g_out_sum;
  45447. b_sum -= b_out_sum;
  45448. a_sum -= a_out_sum;
  45449. r_out_sum -= stackIn.r;
  45450. g_out_sum -= stackIn.g;
  45451. b_out_sum -= stackIn.b;
  45452. a_out_sum -= stackIn.a;
  45453. p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;
  45454. r_in_sum += (stackIn.r = pixels[p]);
  45455. g_in_sum += (stackIn.g = pixels[p+1]);
  45456. b_in_sum += (stackIn.b = pixels[p+2]);
  45457. a_in_sum += (stackIn.a = pixels[p+3]);
  45458. r_sum += r_in_sum;
  45459. g_sum += g_in_sum;
  45460. b_sum += b_in_sum;
  45461. a_sum += a_in_sum;
  45462. stackIn = stackIn.next;
  45463. r_out_sum += (pr = stackOut.r);
  45464. g_out_sum += (pg = stackOut.g);
  45465. b_out_sum += (pb = stackOut.b);
  45466. a_out_sum += (pa = stackOut.a);
  45467. r_in_sum -= pr;
  45468. g_in_sum -= pg;
  45469. b_in_sum -= pb;
  45470. a_in_sum -= pa;
  45471. stackOut = stackOut.next;
  45472. yi += 4;
  45473. }
  45474. yw += width;
  45475. }
  45476. for (x = 0; x < width; x++)
  45477. {
  45478. g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0;
  45479. yi = x << 2;
  45480. r_out_sum = radiusPlus1 * (pr = pixels[yi]);
  45481. g_out_sum = radiusPlus1 * (pg = pixels[yi+1]);
  45482. b_out_sum = radiusPlus1 * (pb = pixels[yi+2]);
  45483. a_out_sum = radiusPlus1 * (pa = pixels[yi+3]);
  45484. r_sum += sumFactor * pr;
  45485. g_sum += sumFactor * pg;
  45486. b_sum += sumFactor * pb;
  45487. a_sum += sumFactor * pa;
  45488. stack = stackStart;
  45489. for (i = 0; i < radiusPlus1; i++)
  45490. {
  45491. stack.r = pr;
  45492. stack.g = pg;
  45493. stack.b = pb;
  45494. stack.a = pa;
  45495. stack = stack.next;
  45496. }
  45497. yp = width;
  45498. for (i = 1; i <= radius; i++)
  45499. {
  45500. yi = (yp + x) << 2;
  45501. r_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);
  45502. g_sum += (stack.g = (pg = pixels[yi+1])) * rbs;
  45503. b_sum += (stack.b = (pb = pixels[yi+2])) * rbs;
  45504. a_sum += (stack.a = (pa = pixels[yi+3])) * rbs;
  45505. r_in_sum += pr;
  45506. g_in_sum += pg;
  45507. b_in_sum += pb;
  45508. a_in_sum += pa;
  45509. stack = stack.next;
  45510. if(i < heightMinus1)
  45511. {
  45512. yp += width;
  45513. }
  45514. }
  45515. yi = x;
  45516. stackIn = stackStart;
  45517. stackOut = stackEnd;
  45518. for (y = 0; y < height; y++)
  45519. {
  45520. p = yi << 2;
  45521. pixels[p+3] = pa = (a_sum * mul_sum) >> shg_sum;
  45522. if (pa > 0)
  45523. {
  45524. pa = 255 / pa;
  45525. pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;
  45526. pixels[p+1] = ((g_sum * mul_sum) >> shg_sum) * pa;
  45527. pixels[p+2] = ((b_sum * mul_sum) >> shg_sum) * pa;
  45528. } else {
  45529. pixels[p] = pixels[p+1] = pixels[p+2] = 0;
  45530. }
  45531. r_sum -= r_out_sum;
  45532. g_sum -= g_out_sum;
  45533. b_sum -= b_out_sum;
  45534. a_sum -= a_out_sum;
  45535. r_out_sum -= stackIn.r;
  45536. g_out_sum -= stackIn.g;
  45537. b_out_sum -= stackIn.b;
  45538. a_out_sum -= stackIn.a;
  45539. p = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;
  45540. r_sum += (r_in_sum += (stackIn.r = pixels[p]));
  45541. g_sum += (g_in_sum += (stackIn.g = pixels[p+1]));
  45542. b_sum += (b_in_sum += (stackIn.b = pixels[p+2]));
  45543. a_sum += (a_in_sum += (stackIn.a = pixels[p+3]));
  45544. stackIn = stackIn.next;
  45545. r_out_sum += (pr = stackOut.r);
  45546. g_out_sum += (pg = stackOut.g);
  45547. b_out_sum += (pb = stackOut.b);
  45548. a_out_sum += (pa = stackOut.a);
  45549. r_in_sum -= pr;
  45550. g_in_sum -= pg;
  45551. b_in_sum -= pb;
  45552. a_in_sum -= pa;
  45553. stackOut = stackOut.next;
  45554. yi += width;
  45555. }
  45556. }
  45557. return imageData;
  45558. }
  45559. function processCanvasRGB(canvas, top_x, top_y, width, height, radius)
  45560. {
  45561. if (isNaN(radius) || radius < 1) return;
  45562. radius |= 0;
  45563. var imageData = getImageDataFromCanvas(canvas, top_x, top_y, width, height);
  45564. imageData = processImageDataRGB(imageData, top_x, top_y, width, height, radius);
  45565. canvas.getContext('2d').putImageData(imageData, top_x, top_y);
  45566. }
  45567. function processImageDataRGB(imageData, top_x, top_y, width, height, radius)
  45568. {
  45569. var pixels = imageData.data;
  45570. var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum,
  45571. r_out_sum, g_out_sum, b_out_sum,
  45572. r_in_sum, g_in_sum, b_in_sum,
  45573. pr, pg, pb, rbs;
  45574. var div = radius + radius + 1;
  45575. var w4 = width << 2;
  45576. var widthMinus1 = width - 1;
  45577. var heightMinus1 = height - 1;
  45578. var radiusPlus1 = radius + 1;
  45579. var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;
  45580. var stackStart = new BlurStack();
  45581. var stack = stackStart;
  45582. for (i = 1; i < div; i++)
  45583. {
  45584. stack = stack.next = new BlurStack();
  45585. if (i == radiusPlus1) var stackEnd = stack;
  45586. }
  45587. stack.next = stackStart;
  45588. var stackIn = null;
  45589. var stackOut = null;
  45590. yw = yi = 0;
  45591. var mul_sum = mul_table[radius];
  45592. var shg_sum = shg_table[radius];
  45593. for (y = 0; y < height; y++)
  45594. {
  45595. r_in_sum = g_in_sum = b_in_sum = r_sum = g_sum = b_sum = 0;
  45596. r_out_sum = radiusPlus1 * (pr = pixels[yi]);
  45597. g_out_sum = radiusPlus1 * (pg = pixels[yi+1]);
  45598. b_out_sum = radiusPlus1 * (pb = pixels[yi+2]);
  45599. r_sum += sumFactor * pr;
  45600. g_sum += sumFactor * pg;
  45601. b_sum += sumFactor * pb;
  45602. stack = stackStart;
  45603. for (i = 0; i < radiusPlus1; i++)
  45604. {
  45605. stack.r = pr;
  45606. stack.g = pg;
  45607. stack.b = pb;
  45608. stack = stack.next;
  45609. }
  45610. for (i = 1; i < radiusPlus1; i++)
  45611. {
  45612. p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);
  45613. r_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);
  45614. g_sum += (stack.g = (pg = pixels[p+1])) * rbs;
  45615. b_sum += (stack.b = (pb = pixels[p+2])) * rbs;
  45616. r_in_sum += pr;
  45617. g_in_sum += pg;
  45618. b_in_sum += pb;
  45619. stack = stack.next;
  45620. }
  45621. stackIn = stackStart;
  45622. stackOut = stackEnd;
  45623. for (x = 0; x < width; x++)
  45624. {
  45625. pixels[yi] = (r_sum * mul_sum) >> shg_sum;
  45626. pixels[yi+1] = (g_sum * mul_sum) >> shg_sum;
  45627. pixels[yi+2] = (b_sum * mul_sum) >> shg_sum;
  45628. r_sum -= r_out_sum;
  45629. g_sum -= g_out_sum;
  45630. b_sum -= b_out_sum;
  45631. r_out_sum -= stackIn.r;
  45632. g_out_sum -= stackIn.g;
  45633. b_out_sum -= stackIn.b;
  45634. p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;
  45635. r_in_sum += (stackIn.r = pixels[p]);
  45636. g_in_sum += (stackIn.g = pixels[p+1]);
  45637. b_in_sum += (stackIn.b = pixels[p+2]);
  45638. r_sum += r_in_sum;
  45639. g_sum += g_in_sum;
  45640. b_sum += b_in_sum;
  45641. stackIn = stackIn.next;
  45642. r_out_sum += (pr = stackOut.r);
  45643. g_out_sum += (pg = stackOut.g);
  45644. b_out_sum += (pb = stackOut.b);
  45645. r_in_sum -= pr;
  45646. g_in_sum -= pg;
  45647. b_in_sum -= pb;
  45648. stackOut = stackOut.next;
  45649. yi += 4;
  45650. }
  45651. yw += width;
  45652. }
  45653. for (x = 0; x < width; x++)
  45654. {
  45655. g_in_sum = b_in_sum = r_in_sum = g_sum = b_sum = r_sum = 0;
  45656. yi = x << 2;
  45657. r_out_sum = radiusPlus1 * (pr = pixels[yi]);
  45658. g_out_sum = radiusPlus1 * (pg = pixels[yi+1]);
  45659. b_out_sum = radiusPlus1 * (pb = pixels[yi+2]);
  45660. r_sum += sumFactor * pr;
  45661. g_sum += sumFactor * pg;
  45662. b_sum += sumFactor * pb;
  45663. stack = stackStart;
  45664. for (i = 0; i < radiusPlus1; i++)
  45665. {
  45666. stack.r = pr;
  45667. stack.g = pg;
  45668. stack.b = pb;
  45669. stack = stack.next;
  45670. }
  45671. yp = width;
  45672. for (i = 1; i <= radius; i++)
  45673. {
  45674. yi = (yp + x) << 2;
  45675. r_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);
  45676. g_sum += (stack.g = (pg = pixels[yi+1])) * rbs;
  45677. b_sum += (stack.b = (pb = pixels[yi+2])) * rbs;
  45678. r_in_sum += pr;
  45679. g_in_sum += pg;
  45680. b_in_sum += pb;
  45681. stack = stack.next;
  45682. if(i < heightMinus1)
  45683. {
  45684. yp += width;
  45685. }
  45686. }
  45687. yi = x;
  45688. stackIn = stackStart;
  45689. stackOut = stackEnd;
  45690. for (y = 0; y < height; y++)
  45691. {
  45692. p = yi << 2;
  45693. pixels[p] = (r_sum * mul_sum) >> shg_sum;
  45694. pixels[p+1] = (g_sum * mul_sum) >> shg_sum;
  45695. pixels[p+2] = (b_sum * mul_sum) >> shg_sum;
  45696. r_sum -= r_out_sum;
  45697. g_sum -= g_out_sum;
  45698. b_sum -= b_out_sum;
  45699. r_out_sum -= stackIn.r;
  45700. g_out_sum -= stackIn.g;
  45701. b_out_sum -= stackIn.b;
  45702. p = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;
  45703. r_sum += (r_in_sum += (stackIn.r = pixels[p]));
  45704. g_sum += (g_in_sum += (stackIn.g = pixels[p+1]));
  45705. b_sum += (b_in_sum += (stackIn.b = pixels[p+2]));
  45706. stackIn = stackIn.next;
  45707. r_out_sum += (pr = stackOut.r);
  45708. g_out_sum += (pg = stackOut.g);
  45709. b_out_sum += (pb = stackOut.b);
  45710. r_in_sum -= pr;
  45711. g_in_sum -= pg;
  45712. b_in_sum -= pb;
  45713. stackOut = stackOut.next;
  45714. yi += width;
  45715. }
  45716. }
  45717. return imageData;
  45718. }
  45719. function BlurStack()
  45720. {
  45721. this.r = 0;
  45722. this.g = 0;
  45723. this.b = 0;
  45724. this.a = 0;
  45725. this.next = null;
  45726. }
  45727. module.exports = {
  45728. image: processImage,
  45729. canvasRGBA: processCanvasRGBA,
  45730. canvasRGB: processCanvasRGB,
  45731. imageDataRGBA: processImageDataRGBA,
  45732. imageDataRGB: processImageDataRGB
  45733. };
  45734. /***/ }),
  45735. /***/ "9107":
  45736. /***/ (function(module, exports, __webpack_require__) {
  45737. /* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.
  45738. //
  45739. // Permission is hereby granted, free of charge, to any person obtaining a
  45740. // copy of this software and associated documentation files (the
  45741. // "Software"), to deal in the Software without restriction, including
  45742. // without limitation the rights to use, copy, modify, merge, publish,
  45743. // distribute, sublicense, and/or sell copies of the Software, and to permit
  45744. // persons to whom the Software is furnished to do so, subject to the
  45745. // following conditions:
  45746. //
  45747. // The above copyright notice and this permission notice shall be included
  45748. // in all copies or substantial portions of the Software.
  45749. //
  45750. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  45751. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  45752. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  45753. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  45754. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  45755. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  45756. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  45757. // NOTE: These type checking functions intentionally don't use `instanceof`
  45758. // because it is fragile and can be easily faked with `Object.create()`.
  45759. function isArray(arg) {
  45760. if (Array.isArray) {
  45761. return Array.isArray(arg);
  45762. }
  45763. return objectToString(arg) === '[object Array]';
  45764. }
  45765. exports.isArray = isArray;
  45766. function isBoolean(arg) {
  45767. return typeof arg === 'boolean';
  45768. }
  45769. exports.isBoolean = isBoolean;
  45770. function isNull(arg) {
  45771. return arg === null;
  45772. }
  45773. exports.isNull = isNull;
  45774. function isNullOrUndefined(arg) {
  45775. return arg == null;
  45776. }
  45777. exports.isNullOrUndefined = isNullOrUndefined;
  45778. function isNumber(arg) {
  45779. return typeof arg === 'number';
  45780. }
  45781. exports.isNumber = isNumber;
  45782. function isString(arg) {
  45783. return typeof arg === 'string';
  45784. }
  45785. exports.isString = isString;
  45786. function isSymbol(arg) {
  45787. return typeof arg === 'symbol';
  45788. }
  45789. exports.isSymbol = isSymbol;
  45790. function isUndefined(arg) {
  45791. return arg === void 0;
  45792. }
  45793. exports.isUndefined = isUndefined;
  45794. function isRegExp(re) {
  45795. return objectToString(re) === '[object RegExp]';
  45796. }
  45797. exports.isRegExp = isRegExp;
  45798. function isObject(arg) {
  45799. return typeof arg === 'object' && arg !== null;
  45800. }
  45801. exports.isObject = isObject;
  45802. function isDate(d) {
  45803. return objectToString(d) === '[object Date]';
  45804. }
  45805. exports.isDate = isDate;
  45806. function isError(e) {
  45807. return (objectToString(e) === '[object Error]' || e instanceof Error);
  45808. }
  45809. exports.isError = isError;
  45810. function isFunction(arg) {
  45811. return typeof arg === 'function';
  45812. }
  45813. exports.isFunction = isFunction;
  45814. function isPrimitive(arg) {
  45815. return arg === null ||
  45816. typeof arg === 'boolean' ||
  45817. typeof arg === 'number' ||
  45818. typeof arg === 'string' ||
  45819. typeof arg === 'symbol' || // ES6 symbol
  45820. typeof arg === 'undefined';
  45821. }
  45822. exports.isPrimitive = isPrimitive;
  45823. exports.isBuffer = Buffer.isBuffer;
  45824. function objectToString(o) {
  45825. return Object.prototype.toString.call(o);
  45826. }
  45827. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("3be6").Buffer))
  45828. /***/ }),
  45829. /***/ "9243":
  45830. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  45831. "use strict";
  45832. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/text/Text.vue?vue&type=template&id=5e2ac717&
  45833. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-text",style:([_vm.customStyle, _vm.getBackgroundStyle, _vm.getTextColorStyle])},[(_vm.href)?_c('span',[_c('a',{staticClass:"sm-component-text__href",style:([_vm.getTextColorStyle]),attrs:{"target":_vm.target,"href":_vm.href}},[_vm._v(_vm._s(_vm.finalValue))])]):_c('span',{staticClass:"sm-component-text__span"},[_vm._v(_vm._s(_vm.finalValue))])])}
  45834. var staticRenderFns = []
  45835. // CONCATENATED MODULE: ./src/common/text/Text.vue?vue&type=template&id=5e2ac717&
  45836. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  45837. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  45838. /***/ }),
  45839. /***/ "9259":
  45840. /***/ (function(module, exports, __webpack_require__) {
  45841. "use strict";
  45842. var _interopRequireDefault = __webpack_require__("8e6d");
  45843. Object.defineProperty(exports, "__esModule", {
  45844. value: true
  45845. });
  45846. exports.default = void 0;
  45847. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  45848. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  45849. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  45850. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  45851. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  45852. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  45853. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  45854. var _vuePropertyDecorator = __webpack_require__("e22c");
  45855. var _globalEvent = _interopRequireDefault(__webpack_require__("fb6a"));
  45856. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  45857. var c = arguments.length,
  45858. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  45859. d;
  45860. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  45861. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  45862. }
  45863. return c > 3 && r && Object.defineProperty(target, key, r), r;
  45864. };
  45865. var Theme =
  45866. /*#__PURE__*/
  45867. function (_Vue) {
  45868. (0, _inherits2.default)(Theme, _Vue);
  45869. function Theme() {
  45870. var _this;
  45871. (0, _classCallCheck2.default)(this, Theme);
  45872. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Theme).apply(this, arguments));
  45873. _this.backgroundData = '';
  45874. _this.textColorsData = '';
  45875. _this.colorGroupsData = [];
  45876. return _this;
  45877. }
  45878. (0, _createClass2.default)(Theme, [{
  45879. key: "backgroundChanged",
  45880. value: function backgroundChanged(newValue) {
  45881. this.backgroundData = newValue;
  45882. }
  45883. }, {
  45884. key: "textColorChanged",
  45885. value: function textColorChanged(newValue) {
  45886. this.textColorsData = newValue;
  45887. }
  45888. }, {
  45889. key: "colorGroupChanged",
  45890. value: function colorGroupChanged(newValue) {
  45891. this.colorGroupsData = newValue;
  45892. }
  45893. }, {
  45894. key: "created",
  45895. value: function created() {
  45896. var theme = _globalEvent.default.$options.theme;
  45897. this.backgroundData = this.background || theme && theme.background;
  45898. this.textColorsData = this.textColor || theme && theme.textColor;
  45899. this.colorGroupsData = this.colorGroup || theme && theme.colorGroup;
  45900. }
  45901. }, {
  45902. key: "themeStyleChanged",
  45903. value: function themeStyleChanged(value) {
  45904. return value;
  45905. }
  45906. }, {
  45907. key: "mounted",
  45908. value: function mounted() {
  45909. var _this2 = this;
  45910. _globalEvent.default.$on('change-theme', function (themeStyle) {
  45911. _this2.backgroundData = themeStyle.background;
  45912. _this2.textColorsData = themeStyle.textColor;
  45913. _this2.colorGroupsData = themeStyle.colorGroup;
  45914. _this2.themeStyleChanged();
  45915. });
  45916. }
  45917. }, {
  45918. key: "getBackgroundStyle",
  45919. get: function get() {
  45920. return {
  45921. background: this.backgroundData
  45922. };
  45923. }
  45924. }, {
  45925. key: "getTextColorStyle",
  45926. get: function get() {
  45927. return {
  45928. color: this.textColorsData
  45929. };
  45930. }
  45931. }, {
  45932. key: "getBackground",
  45933. get: function get() {
  45934. return this.backgroundData;
  45935. }
  45936. }, {
  45937. key: "getTextColor",
  45938. get: function get() {
  45939. return this.textColorsData;
  45940. }
  45941. }, {
  45942. key: "getColorStyle",
  45943. get: function get() {
  45944. return function (index) {
  45945. return {
  45946. color: this.colorGroupsData[index]
  45947. };
  45948. };
  45949. }
  45950. }, {
  45951. key: "getColor",
  45952. get: function get() {
  45953. return function (index) {
  45954. return this.colorGroupsData[index];
  45955. };
  45956. }
  45957. }]);
  45958. return Theme;
  45959. }(_vue.default);
  45960. __decorate([(0, _vuePropertyDecorator.Prop)()], Theme.prototype, "background", void 0);
  45961. __decorate([(0, _vuePropertyDecorator.Prop)()], Theme.prototype, "textColor", void 0);
  45962. __decorate([(0, _vuePropertyDecorator.Prop)()], Theme.prototype, "colorGroup", void 0);
  45963. __decorate([(0, _vuePropertyDecorator.Watch)('background')], Theme.prototype, "backgroundChanged", null);
  45964. __decorate([(0, _vuePropertyDecorator.Watch)('textColor')], Theme.prototype, "textColorChanged", null);
  45965. __decorate([(0, _vuePropertyDecorator.Watch)('colorGroup')], Theme.prototype, "colorGroupChanged", null);
  45966. __decorate([(0, _vuePropertyDecorator.Emit)()], Theme.prototype, "themeStyleChanged", null);
  45967. Theme = __decorate([_vuePropertyDecorator.Component], Theme);
  45968. var _default = Theme;
  45969. exports.default = _default;
  45970. /***/ }),
  45971. /***/ "9270":
  45972. /***/ (function(module, exports, __webpack_require__) {
  45973. "use strict";
  45974. var _interopRequireDefault = __webpack_require__("8e6d");
  45975. Object.defineProperty(exports, "__esModule", {
  45976. value: true
  45977. });
  45978. exports.Pixel = void 0;
  45979. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  45980. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  45981. /* Copyright© 2000 - 2020 SuperMap Software Co.Ltd. All rights reserved.
  45982. * This program are made available under the terms of the Apache License, Version 2.0
  45983. * which accompanies this distribution and is available at http://www.apache.org/licenses/LICENSE-2.0.html. */
  45984. /**
  45985. * @class Pixel
  45986. * @category BaseTypes Geometry
  45987. * @classdesc 此类用 x,y 坐标描绘屏幕坐标(像素点)。
  45988. * @param {number} [x=0.0] - x 坐标。
  45989. * @param {number} [y=0.0] - y 坐标。
  45990. * @param {Pixel.Mode} [mode=Pixel.Mode.LeftTop] - 坐标模式。
  45991. *
  45992. * @example
  45993. * //单独创建一个对象
  45994. * var pixcel = new Pixel(100,50);
  45995. *
  45996. * //依据 size 创建
  45997. * var size = new Size(21,25);
  45998. * var offset = new Pixel(-(size.w/2), -size.h);
  45999. */
  46000. var Pixel =
  46001. /*#__PURE__*/
  46002. function () {
  46003. function Pixel(x, y, mode) {
  46004. (0, _classCallCheck2.default)(this, Pixel);
  46005. /**
  46006. * @member {number} [Pixel.prototype.x=0.0]
  46007. * @description x 坐标。
  46008. */
  46009. this.x = x ? parseFloat(x) : 0.0;
  46010. /**
  46011. * @member {number} [Pixel.prototype.y=0.0]
  46012. * @description y 坐标。
  46013. */
  46014. this.y = y ? parseFloat(y) : 0.0;
  46015. /**
  46016. * @member {Pixel.Mode} [Pixel.prototype.mode=Pixel.Mode.LeftTop]
  46017. * @description 坐标模式,有左上、右上、右下、左下这几种模式,分别表示相对于左上角、右上角、右下角、左下角的坐标。
  46018. */
  46019. this.mode = mode;
  46020. this.CLASS_NAME = 'Pixel';
  46021. /**
  46022. * @enum Pixel.Mode
  46023. * @readonly
  46024. * @description 模式。
  46025. * @type {string}
  46026. */
  46027. Pixel.Mode = {
  46028. /** 左上模式。 */
  46029. LeftTop: 'lefttop',
  46030. /** 右上模式。 */
  46031. RightTop: 'righttop',
  46032. /** 右下模式。 */
  46033. RightBottom: 'rightbottom',
  46034. /** 左下模式。 */
  46035. LeftBottom: 'leftbottom'
  46036. };
  46037. }
  46038. /**
  46039. * @function Pixel.prototype.toString
  46040. * @description 返回此对象的字符串形式。
  46041. * @example
  46042. *
  46043. * var pixcel = new Pixel(100,50);
  46044. * var str = pixcel.toString();
  46045. *
  46046. * @returns {string} 例如: "x=200.4,y=242.2"
  46047. */
  46048. (0, _createClass2.default)(Pixel, [{
  46049. key: "toString",
  46050. value: function toString() {
  46051. return 'x=' + this.x + ',y=' + this.y;
  46052. }
  46053. /**
  46054. * @function Pixel.prototype.clone
  46055. * @description 克隆当前的 pixel 对象。
  46056. * @example
  46057. * var pixcel = new Pixel(100,50);
  46058. * var pixcel2 = pixcel.clone();
  46059. * @returns {Pixel} 返回一个新的与当前 pixel 对象有相同 x、y 坐标的 pixel 对象。
  46060. */
  46061. }, {
  46062. key: "clone",
  46063. value: function clone() {
  46064. return new Pixel(this.x, this.y, this.mode);
  46065. }
  46066. /**
  46067. * @function Pixel.prototype.equals
  46068. * @description 比较两 pixel 是否相等。
  46069. * @example
  46070. * var pixcel = new Pixel(100,50);
  46071. * var pixcel2 = new Pixel(100,50);
  46072. * var isEquals = pixcel.equals(pixcel2);
  46073. *
  46074. * @param {Pixel} px - 用于比较相等的 pixel 对象。
  46075. * @returns {boolean} 如果传入的像素点和当前像素点相同返回 true,如果不同或传入参数为 NULL 则返回 false。
  46076. */
  46077. }, {
  46078. key: "equals",
  46079. value: function equals(px) {
  46080. var equals = false;
  46081. if (px != null) {
  46082. equals = this.x === px.x && this.y === px.y || isNaN(this.x) && isNaN(this.y) && isNaN(px.x) && isNaN(px.y);
  46083. }
  46084. return equals;
  46085. }
  46086. /**
  46087. * @function Pixel.prototype.distanceTo
  46088. * @description 返回两个 pixel 的距离。
  46089. * @example
  46090. * var pixcel = new Pixel(100,50);
  46091. * var pixcel2 = new Pixel(110,30);
  46092. * var distance = pixcel.distanceTo(pixcel2);
  46093. *
  46094. * @param {Pixel} px - 用于计算的一个 pixel。
  46095. * @returns {float} 作为参数传入的像素与当前像素点的距离。
  46096. */
  46097. }, {
  46098. key: "distanceTo",
  46099. value: function distanceTo(px) {
  46100. return Math.sqrt(Math.pow(this.x - px.x, 2) + Math.pow(this.y - px.y, 2));
  46101. }
  46102. /**
  46103. * @function Pixel.prototype.add
  46104. * @description 在原来像素坐标基础上,x 值加上传入的 x 参数,y 值加上传入的 y 参数。
  46105. * @example
  46106. * var pixcel = new Pixel(100,50);
  46107. * //pixcel2是新的对象
  46108. * var pixcel2 = pixcel.add(20,30);
  46109. *
  46110. * @param {number} x - 传入的 x 值。
  46111. * @param {number} y - 传入的 y 值。
  46112. * @returns {Pixel} 返回一个新的 pixel 对象,该 pixel 是由当前的 pixel 与传入的 x,y 相加得到。
  46113. */
  46114. }, {
  46115. key: "add",
  46116. value: function add(x, y) {
  46117. if (x == null || y == null) {
  46118. throw new TypeError('Pixel.add cannot receive null values');
  46119. }
  46120. return new Pixel(this.x + x, this.y + y);
  46121. }
  46122. /**
  46123. * @function Pixel.prototype.offset
  46124. * @description 通过传入的 {@link Pixel} 参数对原屏幕坐标进行偏移。
  46125. * @example
  46126. * var pixcel = new Pixel(100,50);
  46127. * var pixcel2 = new Pixel(130,20);
  46128. * //pixcel3 是新的对象
  46129. * var pixcel3 = pixcel.offset(pixcel2);
  46130. *
  46131. * @param {Pixel} px - 传入的 <Pixel> 对象。
  46132. * @returns {Pixel} 返回一个新的 pixel,该 pixel 是由当前的 pixel 对象的 x,y 值与传入的 Pixel 对象的 x,y 值相加得到。
  46133. */
  46134. }, {
  46135. key: "offset",
  46136. value: function offset(px) {
  46137. var newPx = this.clone();
  46138. if (px) {
  46139. newPx = this.add(px.x, px.y);
  46140. }
  46141. return newPx;
  46142. }
  46143. /**
  46144. *
  46145. * @function Pixel.prototype.destroy
  46146. * @description 销毁此对象。销毁后此对象的所有属性为 null,而不是初始值。
  46147. * @example
  46148. * var pixcel = new Pixel(100,50);
  46149. * pixcel.destroy();
  46150. */
  46151. }, {
  46152. key: "destroy",
  46153. value: function destroy() {
  46154. this.x = null;
  46155. this.y = null;
  46156. this.mode = null;
  46157. }
  46158. }]);
  46159. return Pixel;
  46160. }();
  46161. exports.Pixel = Pixel;
  46162. /***/ }),
  46163. /***/ "92a1":
  46164. /***/ (function(module, exports, __webpack_require__) {
  46165. // Copyright Joyent, Inc. and other Node contributors.
  46166. //
  46167. // Permission is hereby granted, free of charge, to any person obtaining a
  46168. // copy of this software and associated documentation files (the
  46169. // "Software"), to deal in the Software without restriction, including
  46170. // without limitation the rights to use, copy, modify, merge, publish,
  46171. // distribute, sublicense, and/or sell copies of the Software, and to permit
  46172. // persons to whom the Software is furnished to do so, subject to the
  46173. // following conditions:
  46174. //
  46175. // The above copyright notice and this permission notice shall be included
  46176. // in all copies or substantial portions of the Software.
  46177. //
  46178. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  46179. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  46180. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  46181. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  46182. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  46183. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  46184. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  46185. module.exports = Stream;
  46186. var EE = __webpack_require__("0956").EventEmitter;
  46187. var inherits = __webpack_require__("fe04");
  46188. inherits(Stream, EE);
  46189. Stream.Readable = __webpack_require__("bbe9");
  46190. Stream.Writable = __webpack_require__("f29e");
  46191. Stream.Duplex = __webpack_require__("5648");
  46192. Stream.Transform = __webpack_require__("4366");
  46193. Stream.PassThrough = __webpack_require__("0640");
  46194. // Backwards-compat with node 0.4.x
  46195. Stream.Stream = Stream;
  46196. // old-style streams. Note that the pipe method (the only relevant
  46197. // part of this class) is overridden in the Readable class.
  46198. function Stream() {
  46199. EE.call(this);
  46200. }
  46201. Stream.prototype.pipe = function(dest, options) {
  46202. var source = this;
  46203. function ondata(chunk) {
  46204. if (dest.writable) {
  46205. if (false === dest.write(chunk) && source.pause) {
  46206. source.pause();
  46207. }
  46208. }
  46209. }
  46210. source.on('data', ondata);
  46211. function ondrain() {
  46212. if (source.readable && source.resume) {
  46213. source.resume();
  46214. }
  46215. }
  46216. dest.on('drain', ondrain);
  46217. // If the 'end' option is not supplied, dest.end() will be called when
  46218. // source gets the 'end' or 'close' events. Only dest.end() once.
  46219. if (!dest._isStdio && (!options || options.end !== false)) {
  46220. source.on('end', onend);
  46221. source.on('close', onclose);
  46222. }
  46223. var didOnEnd = false;
  46224. function onend() {
  46225. if (didOnEnd) return;
  46226. didOnEnd = true;
  46227. dest.end();
  46228. }
  46229. function onclose() {
  46230. if (didOnEnd) return;
  46231. didOnEnd = true;
  46232. if (typeof dest.destroy === 'function') dest.destroy();
  46233. }
  46234. // don't leave dangling pipes when there are errors.
  46235. function onerror(er) {
  46236. cleanup();
  46237. if (EE.listenerCount(this, 'error') === 0) {
  46238. throw er; // Unhandled stream error in pipe.
  46239. }
  46240. }
  46241. source.on('error', onerror);
  46242. dest.on('error', onerror);
  46243. // remove all the event listeners that were added.
  46244. function cleanup() {
  46245. source.removeListener('data', ondata);
  46246. dest.removeListener('drain', ondrain);
  46247. source.removeListener('end', onend);
  46248. source.removeListener('close', onclose);
  46249. source.removeListener('error', onerror);
  46250. dest.removeListener('error', onerror);
  46251. source.removeListener('end', cleanup);
  46252. source.removeListener('close', cleanup);
  46253. dest.removeListener('close', cleanup);
  46254. }
  46255. source.on('end', cleanup);
  46256. source.on('close', cleanup);
  46257. dest.on('close', cleanup);
  46258. dest.emit('pipe', source);
  46259. // Allow for unix-like usage: A.pipe(B).pipe(C)
  46260. return dest;
  46261. };
  46262. /***/ }),
  46263. /***/ "9482":
  46264. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  46265. "use strict";
  46266. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/tdt/mapSwitcher/TdtMapSwitcher.vue?vue&type=template&id=7115d558&
  46267. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('sm-card',{directives:[{name:"show",rawName:"v-show",value:(_vm.isShow),expression:"isShow"}],staticClass:"sm-component-map-switch",attrs:{"icon-class":_vm.iconClass,"icon-position":_vm.position,"header-name":_vm.headerName,"auto-rotate":_vm.autoRotate,"collapsed":_vm.collapsed,"background":_vm.background,"textColor":_vm.textColor}},[_c('div',{staticClass:"sm-component-map-switch__panel",style:([_vm.getBackgroundStyle, _vm.getTextColorStyle])},[_c('div',{staticClass:"sm-component-map-switch__layers-wrap"},[_c('div',{staticClass:"sm-component-map-switch__content-holder"},[_c('div',{staticClass:"sm-component-map-switch__layers"},[_c('div',{staticClass:"layer-item map-item",on:{"click":function($event){return _vm.changeBaseLayer('vec')}}},[_c('div',{staticClass:"sm-component-map-switch__layer-name"},[_vm._v(_vm._s(_vm.$t('tdtMapSwitcher.vector')))])]),_vm._v(" "),_c('div',{staticClass:"layer-item image-item",on:{"click":function($event){return _vm.changeBaseLayer('img')}}},[_c('div',{staticClass:"sm-component-map-switch__layer-name"},[_vm._v(_vm._s(_vm.$t('tdtMapSwitcher.image')))])]),_vm._v(" "),_c('div',{staticClass:"layer-item landform-item",on:{"click":function($event){return _vm.changeBaseLayer('ter')}}},[_c('div',{staticClass:"sm-component-map-switch__layer-name"},[_vm._v(_vm._s(_vm.$t('tdtMapSwitcher.terrain')))])])]),_vm._v(" "),(_vm.currentSelect)?_c('div',{staticClass:"sm-component-map-switch__labelSetting"},[_c('span',[_vm._v(_vm._s(_vm.$t('tdtMapSwitcher.placeName')))]),_vm._v(" "),_c('a-checkbox',{attrs:{"checked":_vm.labelChecked},on:{"change":function($event){return _vm.togglerLabelLayer($event.target.checked)}}})],1):_vm._e()])])])])}
  46268. var staticRenderFns = []
  46269. // CONCATENATED MODULE: ./src/mapboxgl/tdt/mapSwitcher/TdtMapSwitcher.vue?vue&type=template&id=7115d558&
  46270. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  46271. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  46272. /***/ }),
  46273. /***/ "952a":
  46274. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  46275. "use strict";
  46276. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/web-map/control/measure/Measure.vue?vue&type=template&id=6f042706&
  46277. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('sm-card',{directives:[{name:"show",rawName:"v-show",value:(_vm.isShow),expression:"isShow"}],staticClass:"sm-component-measure",attrs:{"icon-class":_vm.iconClass,"icon-position":_vm.position,"header-name":_vm.headerName || _vm.$t('measure.mapMeasure'),"auto-rotate":_vm.autoRotate,"collapsed":_vm.collapsed,"background":_vm.background,"textColor":_vm.textColor}},[_c('div',{staticClass:"sm-component-measure__panel",style:([_vm.getBackgroundStyle, _vm.getTextColorStyle])},[_c('div',{staticClass:"sm-component-measure__panelContent"},[_vm._l((_vm.modeGroups),function(group){return _c('span',{directives:[{name:"show",rawName:"v-show",value:(group.mode !== 'delete' || (!_vm.continueDraw && group.mode === 'delete')),expression:"group.mode !== 'delete' || (!continueDraw && group.mode === 'delete')"}],key:group.mode,staticClass:"sm-component-measure__modeIcon",style:(_vm.activeMode === group.mode ? _vm.getColorStyle(0) : ''),attrs:{"title":group.title},on:{"click":function($event){return _vm.changeMeasureMode(group.mode)}}},[_c('i',{class:group.iconClass})])}),_vm._v(" "),_c('a-select',{directives:[{name:"show",rawName:"v-show",value:(_vm.getDistanceSelect),expression:"getDistanceSelect"}],staticClass:"sm-component-measure__unit",attrs:{"placeholder":_vm.$t('measure.selectPlaceholder'),"get-popup-container":_vm.getPopupContainer},on:{"change":_vm.updateUnit,"dropdownVisibleChange":_vm.changeChosenStyle},model:{value:(_vm.activeDistanceUnit),callback:function ($$v) {_vm.activeDistanceUnit=$$v},expression:"activeDistanceUnit"}},_vm._l((_vm.getUnitOptions),function(value,key,index){return _c('a-select-option',{key:index,attrs:{"title":value,"value":key}},[_vm._v("\n "+_vm._s(value)+"\n ")])}),1),_vm._v(" "),_c('a-select',{directives:[{name:"show",rawName:"v-show",value:(_vm.getAreaSelect),expression:"getAreaSelect"}],staticClass:"sm-component-measure__unit",attrs:{"placeholder":_vm.$t('measure.selectPlaceholder'),"get-popup-container":_vm.getPopupContainer},on:{"change":_vm.updateUnit,"dropdownVisibleChange":_vm.changeChosenStyle},model:{value:(_vm.activeAreaUnit),callback:function ($$v) {_vm.activeAreaUnit=$$v},expression:"activeAreaUnit"}},_vm._l((_vm.getUnitOptions),function(value,key,index){return _c('a-select-option',{key:index,attrs:{"title":value,"value":key}},[_vm._v("\n "+_vm._s(value)+"\n ")])}),1),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(!_vm.showUnitSelect && _vm.activeMode),expression:"!showUnitSelect && activeMode"}],staticClass:"sm-component-measure__unit sm-component-measure__default"},[_vm._v("\n "+_vm._s(_vm.getUnitLabel)+"\n ")])],2),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.getResult),expression:"getResult"}],staticClass:"sm-component-measure__calculateResult",style:(_vm.getTextColorStyle)},[_c('div',{staticClass:"sm-component-measure__calcuTitle"},[_vm._v(_vm._s(_vm.$t('measure.measureResult')))]),_vm._v(" "),_c('div',{staticClass:"sm-component-measure__result"},[_vm._v(_vm._s(_vm.getResult))])])])])}
  46278. var staticRenderFns = []
  46279. // CONCATENATED MODULE: ./src/mapboxgl/web-map/control/measure/Measure.vue?vue&type=template&id=6f042706&
  46280. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  46281. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  46282. /***/ }),
  46283. /***/ "95d0":
  46284. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  46285. "use strict";
  46286. __webpack_require__.r(__webpack_exports__);
  46287. /* harmony import */ var _AnimateMarkerLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("e8d5");
  46288. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _AnimateMarkerLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _AnimateMarkerLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  46289. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  46290. var render, staticRenderFns
  46291. /* normalize component */
  46292. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  46293. _AnimateMarkerLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__["default"],
  46294. render,
  46295. staticRenderFns,
  46296. false,
  46297. null,
  46298. null,
  46299. null
  46300. )
  46301. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  46302. /***/ }),
  46303. /***/ "9711":
  46304. /***/ (function(module, exports, __webpack_require__) {
  46305. "use strict";
  46306. exports.byteLength = byteLength
  46307. exports.toByteArray = toByteArray
  46308. exports.fromByteArray = fromByteArray
  46309. var lookup = []
  46310. var revLookup = []
  46311. var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
  46312. var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  46313. for (var i = 0, len = code.length; i < len; ++i) {
  46314. lookup[i] = code[i]
  46315. revLookup[code.charCodeAt(i)] = i
  46316. }
  46317. // Support decoding URL-safe base64 strings, as Node.js does.
  46318. // See: https://en.wikipedia.org/wiki/Base64#URL_applications
  46319. revLookup['-'.charCodeAt(0)] = 62
  46320. revLookup['_'.charCodeAt(0)] = 63
  46321. function getLens (b64) {
  46322. var len = b64.length
  46323. if (len % 4 > 0) {
  46324. throw new Error('Invalid string. Length must be a multiple of 4')
  46325. }
  46326. // Trim off extra bytes after placeholder bytes are found
  46327. // See: https://github.com/beatgammit/base64-js/issues/42
  46328. var validLen = b64.indexOf('=')
  46329. if (validLen === -1) validLen = len
  46330. var placeHoldersLen = validLen === len
  46331. ? 0
  46332. : 4 - (validLen % 4)
  46333. return [validLen, placeHoldersLen]
  46334. }
  46335. // base64 is 4/3 + up to two characters of the original data
  46336. function byteLength (b64) {
  46337. var lens = getLens(b64)
  46338. var validLen = lens[0]
  46339. var placeHoldersLen = lens[1]
  46340. return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
  46341. }
  46342. function _byteLength (b64, validLen, placeHoldersLen) {
  46343. return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
  46344. }
  46345. function toByteArray (b64) {
  46346. var tmp
  46347. var lens = getLens(b64)
  46348. var validLen = lens[0]
  46349. var placeHoldersLen = lens[1]
  46350. var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
  46351. var curByte = 0
  46352. // if there are placeholders, only get up to the last complete 4 chars
  46353. var len = placeHoldersLen > 0
  46354. ? validLen - 4
  46355. : validLen
  46356. var i
  46357. for (i = 0; i < len; i += 4) {
  46358. tmp =
  46359. (revLookup[b64.charCodeAt(i)] << 18) |
  46360. (revLookup[b64.charCodeAt(i + 1)] << 12) |
  46361. (revLookup[b64.charCodeAt(i + 2)] << 6) |
  46362. revLookup[b64.charCodeAt(i + 3)]
  46363. arr[curByte++] = (tmp >> 16) & 0xFF
  46364. arr[curByte++] = (tmp >> 8) & 0xFF
  46365. arr[curByte++] = tmp & 0xFF
  46366. }
  46367. if (placeHoldersLen === 2) {
  46368. tmp =
  46369. (revLookup[b64.charCodeAt(i)] << 2) |
  46370. (revLookup[b64.charCodeAt(i + 1)] >> 4)
  46371. arr[curByte++] = tmp & 0xFF
  46372. }
  46373. if (placeHoldersLen === 1) {
  46374. tmp =
  46375. (revLookup[b64.charCodeAt(i)] << 10) |
  46376. (revLookup[b64.charCodeAt(i + 1)] << 4) |
  46377. (revLookup[b64.charCodeAt(i + 2)] >> 2)
  46378. arr[curByte++] = (tmp >> 8) & 0xFF
  46379. arr[curByte++] = tmp & 0xFF
  46380. }
  46381. return arr
  46382. }
  46383. function tripletToBase64 (num) {
  46384. return lookup[num >> 18 & 0x3F] +
  46385. lookup[num >> 12 & 0x3F] +
  46386. lookup[num >> 6 & 0x3F] +
  46387. lookup[num & 0x3F]
  46388. }
  46389. function encodeChunk (uint8, start, end) {
  46390. var tmp
  46391. var output = []
  46392. for (var i = start; i < end; i += 3) {
  46393. tmp =
  46394. ((uint8[i] << 16) & 0xFF0000) +
  46395. ((uint8[i + 1] << 8) & 0xFF00) +
  46396. (uint8[i + 2] & 0xFF)
  46397. output.push(tripletToBase64(tmp))
  46398. }
  46399. return output.join('')
  46400. }
  46401. function fromByteArray (uint8) {
  46402. var tmp
  46403. var len = uint8.length
  46404. var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
  46405. var parts = []
  46406. var maxChunkLength = 16383 // must be multiple of 3
  46407. // go through the array every three bytes, we'll deal with trailing stuff later
  46408. for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
  46409. parts.push(encodeChunk(
  46410. uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
  46411. ))
  46412. }
  46413. // pad the end with zeros, but make sure to not forget the extra bytes
  46414. if (extraBytes === 1) {
  46415. tmp = uint8[len - 1]
  46416. parts.push(
  46417. lookup[tmp >> 2] +
  46418. lookup[(tmp << 4) & 0x3F] +
  46419. '=='
  46420. )
  46421. } else if (extraBytes === 2) {
  46422. tmp = (uint8[len - 2] << 8) + uint8[len - 1]
  46423. parts.push(
  46424. lookup[tmp >> 10] +
  46425. lookup[(tmp >> 4) & 0x3F] +
  46426. lookup[(tmp << 2) & 0x3F] +
  46427. '='
  46428. )
  46429. }
  46430. return parts.join('')
  46431. }
  46432. /***/ }),
  46433. /***/ "97dd":
  46434. /***/ (function(module, exports, __webpack_require__) {
  46435. "use strict";
  46436. var _interopRequireDefault = __webpack_require__("8e6d");
  46437. Object.defineProperty(exports, "__esModule", {
  46438. value: true
  46439. });
  46440. exports.default = void 0;
  46441. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  46442. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  46443. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  46444. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  46445. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  46446. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  46447. var _SourceListModel = _interopRequireDefault(__webpack_require__("5fdb"));
  46448. /**
  46449. * @class LayerListViewModel
  46450. * @description LayerList viewModel.
  46451. * @param {Object} map - map实例对象。
  46452. * @fires layersUpdated - 图层更新
  46453. * @extends mapboxgl.Evented
  46454. */
  46455. var LayerListViewModel =
  46456. /*#__PURE__*/
  46457. function (_mapboxgl$Evented) {
  46458. (0, _inherits2.default)(LayerListViewModel, _mapboxgl$Evented);
  46459. function LayerListViewModel() {
  46460. var _this;
  46461. (0, _classCallCheck2.default)(this, LayerListViewModel);
  46462. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(LayerListViewModel).call(this));
  46463. _this.sourceList = {};
  46464. _this.sourceNames = [];
  46465. return _this;
  46466. }
  46467. (0, _createClass2.default)(LayerListViewModel, [{
  46468. key: "_updateLayers",
  46469. value: function _updateLayers(data) {
  46470. this.fire('layersUpdated');
  46471. }
  46472. }, {
  46473. key: "setMap",
  46474. value: function setMap(mapInfo) {
  46475. var map = mapInfo.map;
  46476. this.map = map;
  46477. this.updateFn = this._updateLayers.bind(this);
  46478. this.map.on('styledata', this.updateFn);
  46479. }
  46480. }, {
  46481. key: "initLayerList",
  46482. value: function initLayerList() {
  46483. this.sourceListModel = new _SourceListModel.default({
  46484. map: this.map
  46485. });
  46486. this.sourceList = this.sourceListModel.getSourceList();
  46487. this.sourceNames = this.sourceListModel.getSourceNames().reverse();
  46488. return this.sourceList;
  46489. }
  46490. }, {
  46491. key: "getSourceNames",
  46492. value: function getSourceNames() {
  46493. return this.sourceNames;
  46494. }
  46495. }, {
  46496. key: "changeLayerVisible",
  46497. value: function changeLayerVisible(sourcelayer, sourceName, visibility) {
  46498. var _this2 = this;
  46499. this.sourceListModel.getLayersBySourceLayer(sourceName, sourcelayer).forEach(function (layer) {
  46500. _this2.map.setLayoutProperty(layer.id, 'visibility', _this2.changeVisibility(visibility));
  46501. });
  46502. }
  46503. }, {
  46504. key: "changeVisibility",
  46505. value: function changeVisibility(visibility) {
  46506. return visibility === 'visible' ? 'none' : 'visible';
  46507. }
  46508. }, {
  46509. key: "changeLayerGroupVisibility",
  46510. value: function changeLayerGroupVisibility(sourceName, visibility) {
  46511. var _this3 = this;
  46512. var sourceLayers = this.sourceListModel.getSourceLayersBySource(sourceName);
  46513. if (sourceLayers) {
  46514. for (var sourcelayer in sourceLayers) {
  46515. sourceLayers[sourcelayer].forEach(function (layer) {
  46516. _this3.map.setLayoutProperty(layer.id, 'visibility', _this3.changeVisibility(visibility));
  46517. });
  46518. }
  46519. } else {
  46520. var _iteratorNormalCompletion = true;
  46521. var _didIteratorError = false;
  46522. var _iteratorError = undefined;
  46523. try {
  46524. for (var _iterator = this.sourceList[sourceName]['layers'][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  46525. var layer = _step.value;
  46526. this.map.setLayoutProperty(layer.id, 'visibility', this.changeVisibility(visibility));
  46527. }
  46528. } catch (err) {
  46529. _didIteratorError = true;
  46530. _iteratorError = err;
  46531. } finally {
  46532. try {
  46533. if (!_iteratorNormalCompletion && _iterator.return != null) {
  46534. _iterator.return();
  46535. }
  46536. } finally {
  46537. if (_didIteratorError) {
  46538. throw _iteratorError;
  46539. }
  46540. }
  46541. }
  46542. }
  46543. }
  46544. }, {
  46545. key: "removed",
  46546. value: function removed() {
  46547. this.sourceList = {};
  46548. this.sourceNames = [];
  46549. this.map.off('styledata', this.updateFn);
  46550. }
  46551. }]);
  46552. return LayerListViewModel;
  46553. }(_mapboxGlEnhance.default.Evented);
  46554. var _default = LayerListViewModel;
  46555. exports.default = _default;
  46556. /***/ }),
  46557. /***/ "9832":
  46558. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  46559. "use strict";
  46560. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/tdt/search/TdtSearch.vue?vue&type=template&id=7b37535d&
  46561. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-search sm-component-tdtSearch",style:(_vm.getTextColorStyle)},[(_vm.showIcon && _vm.mode === 'control')?_c('div',{staticClass:"sm-component-search__toggle-icon",style:([{ '--icon-color--hover': _vm.colorGroupsData[0] }, _vm.getBackgroundStyle]),on:{"click":function($event){_vm.showSearch = !_vm.showSearch;
  46562. _vm.showIcon = !_vm.showIcon;}}},[_c('i',{staticClass:"sm-component-tdtSearch__pointer sm-components-icons-preview"})]):_vm._e(),_vm._v(" "),_c('transition',{attrs:{"name":"sm-component-zoom-in"},on:{"after-leave":function($event){_vm.showIcon = !_vm.showIcon}}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.showSearch || _vm.mode === 'toolBar'),expression:"showSearch || mode === 'toolBar'"}],staticClass:"sm-component-search__content sm-component-tdtSearch__content",style:([{ 'transform-origin': _vm.position.includes('left') ? 'top left' : 'top right' }, _vm.getBackgroundStyle])},[_c('div',{staticClass:"sm-component-search__input"},[(_vm.mode === 'control')?_c('div',{staticClass:"sm-component-search__arrow-icon",style:({ float: _vm.position.includes('left') ? 'right' : 'left' }),on:{"click":function($event){_vm.showSearch = !_vm.showSearch}}},[_c('a-icon',{attrs:{"type":_vm.position.includes('left') ? 'double-left' : 'double-right'}})],1):_vm._e(),_vm._v(" "),_c('div',{class:['sm-component-search__search-icon', { right: _vm.position.includes('right') }],style:([_vm.getBackgroundStyle, _vm.getColorStyle(0)]),on:{"click":_vm.searchButtonClicked}},[(_vm.prefixType === 'search')?_c('i',{staticClass:"sm-component-tdtSearch__pointer sm-components-icons-preview"}):_c('a-icon',{attrs:{"type":_vm.prefixType}})],1),_vm._v(" "),_c('a-input',{class:['sm-component-search__a-input', { 'toolBar-input': _vm.mode === 'toolBar' }],style:([_vm.getBackgroundStyle]),attrs:{"placeholder":_vm.$t('search.inputPlaceHolder')},on:{"input":_vm.searchInput,"compositionstart":function($event){_vm.isInputing = true},"compositionend":function($event){_vm.isInputing = false},"pressEnter":_vm.searchButtonClicked,"mouseenter":function($event){_vm.isHover = !_vm.isHover},"mouseleave":function($event){_vm.isHover = !_vm.isHover},"keyup":_vm.changeResultHover},model:{value:(_vm.searchKey),callback:function ($$v) {_vm.searchKey=$$v},expression:"searchKey"}},[_c('a-icon',{directives:[{name:"show",rawName:"v-show",value:(_vm.searchKey),expression:"searchKey"}],staticClass:"sm-component-tdtSearch__pointer",style:(_vm.getColorStyle(0)),attrs:{"slot":"suffix","type":"close-circle"},on:{"click":_vm.inputValueCleared,"mouseenter":function($event){_vm.isHover = !_vm.isHover},"mouseleave":function($event){_vm.isHover = !_vm.isHover}},slot:"suffix"})],1)],1),_vm._v(" "),_c('div',{style:([_vm.getBackgroundStyle])},[(_vm.resultSuggestions)?_c('div',{staticClass:"sm-component-search__result"},[_c('ul',{staticClass:"sm-component-tdtSearch__suggestions"},_vm._l((_vm.searchResult),function(item,i){return _c('li',{key:i,class:{ active: _vm.hoverIndex === i },attrs:{"title":item.name},on:{"click":function($event){return _vm.searchResultListClicked(item.name)},"mouseenter":_vm.changeChosenResultStyle,"mouseleave":_vm.resetChosenResultStyle}},[_c('span',{staticClass:"name"},[_vm._v(_vm._s(item.name))]),_vm._v(" "),(_vm.showAddress(item.name, item.address))?_c('span',{staticClass:"address"},[_vm._v(_vm._s(item.address))]):_vm._e()])}),0)]):_c(_vm.componentId,_vm._g(_vm._b({tag:"component"},'component',_vm.componentProps,false),_vm.componentListeners))],1)])])],1)}
  46563. var staticRenderFns = []
  46564. // CONCATENATED MODULE: ./src/mapboxgl/tdt/search/TdtSearch.vue?vue&type=template&id=7b37535d&
  46565. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  46566. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  46567. /***/ }),
  46568. /***/ "986c":
  46569. /***/ (function(module, exports, __webpack_require__) {
  46570. "use strict";
  46571. var _interopRequireDefault = __webpack_require__("8e6d");
  46572. Object.defineProperty(exports, "__esModule", {
  46573. value: true
  46574. });
  46575. exports.default = void 0;
  46576. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  46577. /**
  46578. * @class LayerModel
  46579. * @description 图层数据模型。
  46580. * @param {Object} options - 图层参数。
  46581. * @param {String} [options.id] - 图层 ID。
  46582. * @param {Number} [options.maxzoom] - 最大缩放级别。
  46583. * @param {Number} [options.minzoom] - 最小缩放级别。
  46584. * @param {GeoJSONObject} [options.source] - 数据源。
  46585. * @param {String} [options.type] - 图层类型。
  46586. * @param {String} [options.visibility] - 图层是否可见。
  46587. * @category Model
  46588. */
  46589. var LayerModel = function LayerModel() {
  46590. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  46591. (0, _classCallCheck2.default)(this, LayerModel);
  46592. this.id = options.id;
  46593. this.maxzoom = options.maxzoom;
  46594. this.minzoom = options.minzoom;
  46595. this.source = options.source;
  46596. this.sourceLayer = options.sourceLayer;
  46597. this.type = options.type;
  46598. this.visibility = options.visibility || 'visible';
  46599. };
  46600. var _default = LayerModel;
  46601. exports.default = _default;
  46602. /***/ }),
  46603. /***/ "98c2":
  46604. /***/ (function(module, exports, __webpack_require__) {
  46605. var sax = __webpack_require__("ea23");
  46606. var expat /*= require('node-expat');*/ = { on: function () { }, parse: function () { } };
  46607. var helper = __webpack_require__("cabd");
  46608. var isArray = __webpack_require__("df2e").isArray;
  46609. var options;
  46610. var pureJsParser = true;
  46611. var currentElement;
  46612. function validateOptions(userOptions) {
  46613. options = helper.copyOptions(userOptions);
  46614. helper.ensureFlagExists('ignoreDeclaration', options);
  46615. helper.ensureFlagExists('ignoreInstruction', options);
  46616. helper.ensureFlagExists('ignoreAttributes', options);
  46617. helper.ensureFlagExists('ignoreText', options);
  46618. helper.ensureFlagExists('ignoreComment', options);
  46619. helper.ensureFlagExists('ignoreCdata', options);
  46620. helper.ensureFlagExists('ignoreDoctype', options);
  46621. helper.ensureFlagExists('compact', options);
  46622. helper.ensureFlagExists('alwaysChildren', options);
  46623. helper.ensureFlagExists('addParent', options);
  46624. helper.ensureFlagExists('trim', options);
  46625. helper.ensureFlagExists('nativeType', options);
  46626. helper.ensureFlagExists('nativeTypeAttributes', options);
  46627. helper.ensureFlagExists('sanitize', options);
  46628. helper.ensureFlagExists('instructionHasAttributes', options);
  46629. helper.ensureFlagExists('captureSpacesBetweenElements', options);
  46630. helper.ensureAlwaysArrayExists(options);
  46631. helper.ensureKeyExists('declaration', options);
  46632. helper.ensureKeyExists('instruction', options);
  46633. helper.ensureKeyExists('attributes', options);
  46634. helper.ensureKeyExists('text', options);
  46635. helper.ensureKeyExists('comment', options);
  46636. helper.ensureKeyExists('cdata', options);
  46637. helper.ensureKeyExists('doctype', options);
  46638. helper.ensureKeyExists('type', options);
  46639. helper.ensureKeyExists('name', options);
  46640. helper.ensureKeyExists('elements', options);
  46641. helper.ensureKeyExists('parent', options);
  46642. helper.checkFnExists('doctype', options);
  46643. helper.checkFnExists('instruction', options);
  46644. helper.checkFnExists('cdata', options);
  46645. helper.checkFnExists('comment', options);
  46646. helper.checkFnExists('text', options);
  46647. helper.checkFnExists('instructionName', options);
  46648. helper.checkFnExists('elementName', options);
  46649. helper.checkFnExists('attributeName', options);
  46650. helper.checkFnExists('attributeValue', options);
  46651. helper.checkFnExists('attributes', options);
  46652. return options;
  46653. }
  46654. function nativeType(value) {
  46655. var nValue = Number(value);
  46656. if (!isNaN(nValue)) {
  46657. return nValue;
  46658. }
  46659. var bValue = value.toLowerCase();
  46660. if (bValue === 'true') {
  46661. return true;
  46662. } else if (bValue === 'false') {
  46663. return false;
  46664. }
  46665. return value;
  46666. }
  46667. function addField(type, value) {
  46668. var key;
  46669. if (options.compact) {
  46670. if (
  46671. !currentElement[options[type + 'Key']] &&
  46672. (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(options[type + 'Key']) !== -1 : options.alwaysArray)
  46673. ) {
  46674. currentElement[options[type + 'Key']] = [];
  46675. }
  46676. if (currentElement[options[type + 'Key']] && !isArray(currentElement[options[type + 'Key']])) {
  46677. currentElement[options[type + 'Key']] = [currentElement[options[type + 'Key']]];
  46678. }
  46679. if (type + 'Fn' in options && typeof value === 'string') {
  46680. value = options[type + 'Fn'](value, currentElement);
  46681. }
  46682. if (type === 'instruction' && ('instructionFn' in options || 'instructionNameFn' in options)) {
  46683. for (key in value) {
  46684. if (value.hasOwnProperty(key)) {
  46685. if ('instructionFn' in options) {
  46686. value[key] = options.instructionFn(value[key], key, currentElement);
  46687. } else {
  46688. var temp = value[key];
  46689. delete value[key];
  46690. value[options.instructionNameFn(key, temp, currentElement)] = temp;
  46691. }
  46692. }
  46693. }
  46694. }
  46695. if (isArray(currentElement[options[type + 'Key']])) {
  46696. currentElement[options[type + 'Key']].push(value);
  46697. } else {
  46698. currentElement[options[type + 'Key']] = value;
  46699. }
  46700. } else {
  46701. if (!currentElement[options.elementsKey]) {
  46702. currentElement[options.elementsKey] = [];
  46703. }
  46704. var element = {};
  46705. element[options.typeKey] = type;
  46706. if (type === 'instruction') {
  46707. for (key in value) {
  46708. if (value.hasOwnProperty(key)) {
  46709. break;
  46710. }
  46711. }
  46712. element[options.nameKey] = 'instructionNameFn' in options ? options.instructionNameFn(key, value, currentElement) : key;
  46713. if (options.instructionHasAttributes) {
  46714. element[options.attributesKey] = value[key][options.attributesKey];
  46715. if ('instructionFn' in options) {
  46716. element[options.attributesKey] = options.instructionFn(element[options.attributesKey], key, currentElement);
  46717. }
  46718. } else {
  46719. if ('instructionFn' in options) {
  46720. value[key] = options.instructionFn(value[key], key, currentElement);
  46721. }
  46722. element[options.instructionKey] = value[key];
  46723. }
  46724. } else {
  46725. if (type + 'Fn' in options) {
  46726. value = options[type + 'Fn'](value, currentElement);
  46727. }
  46728. element[options[type + 'Key']] = value;
  46729. }
  46730. if (options.addParent) {
  46731. element[options.parentKey] = currentElement;
  46732. }
  46733. currentElement[options.elementsKey].push(element);
  46734. }
  46735. }
  46736. function manipulateAttributes(attributes) {
  46737. if ('attributesFn' in options && attributes) {
  46738. attributes = options.attributesFn(attributes, currentElement);
  46739. }
  46740. if ((options.trim || 'attributeValueFn' in options || 'attributeNameFn' in options || options.nativeTypeAttributes) && attributes) {
  46741. var key;
  46742. for (key in attributes) {
  46743. if (attributes.hasOwnProperty(key)) {
  46744. if (options.trim) attributes[key] = attributes[key].trim();
  46745. if (options.nativeTypeAttributes) {
  46746. attributes[key] = nativeType(attributes[key]);
  46747. }
  46748. if ('attributeValueFn' in options) attributes[key] = options.attributeValueFn(attributes[key], key, currentElement);
  46749. if ('attributeNameFn' in options) {
  46750. var temp = attributes[key];
  46751. delete attributes[key];
  46752. attributes[options.attributeNameFn(key, attributes[key], currentElement)] = temp;
  46753. }
  46754. }
  46755. }
  46756. }
  46757. return attributes;
  46758. }
  46759. function onInstruction(instruction) {
  46760. var attributes = {};
  46761. if (instruction.body && (instruction.name.toLowerCase() === 'xml' || options.instructionHasAttributes)) {
  46762. var attrsRegExp = /([\w:-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|(\w+))\s*/g;
  46763. var match;
  46764. while ((match = attrsRegExp.exec(instruction.body)) !== null) {
  46765. attributes[match[1]] = match[2] || match[3] || match[4];
  46766. }
  46767. attributes = manipulateAttributes(attributes);
  46768. }
  46769. if (instruction.name.toLowerCase() === 'xml') {
  46770. if (options.ignoreDeclaration) {
  46771. return;
  46772. }
  46773. currentElement[options.declarationKey] = {};
  46774. if (Object.keys(attributes).length) {
  46775. currentElement[options.declarationKey][options.attributesKey] = attributes;
  46776. }
  46777. if (options.addParent) {
  46778. currentElement[options.declarationKey][options.parentKey] = currentElement;
  46779. }
  46780. } else {
  46781. if (options.ignoreInstruction) {
  46782. return;
  46783. }
  46784. if (options.trim) {
  46785. instruction.body = instruction.body.trim();
  46786. }
  46787. var value = {};
  46788. if (options.instructionHasAttributes && Object.keys(attributes).length) {
  46789. value[instruction.name] = {};
  46790. value[instruction.name][options.attributesKey] = attributes;
  46791. } else {
  46792. value[instruction.name] = instruction.body;
  46793. }
  46794. addField('instruction', value);
  46795. }
  46796. }
  46797. function onStartElement(name, attributes) {
  46798. var element;
  46799. if (typeof name === 'object') {
  46800. attributes = name.attributes;
  46801. name = name.name;
  46802. }
  46803. attributes = manipulateAttributes(attributes);
  46804. if ('elementNameFn' in options) {
  46805. name = options.elementNameFn(name, currentElement);
  46806. }
  46807. if (options.compact) {
  46808. element = {};
  46809. if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {
  46810. element[options.attributesKey] = {};
  46811. var key;
  46812. for (key in attributes) {
  46813. if (attributes.hasOwnProperty(key)) {
  46814. element[options.attributesKey][key] = attributes[key];
  46815. }
  46816. }
  46817. }
  46818. if (
  46819. !(name in currentElement) &&
  46820. (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(name) !== -1 : options.alwaysArray)
  46821. ) {
  46822. currentElement[name] = [];
  46823. }
  46824. if (currentElement[name] && !isArray(currentElement[name])) {
  46825. currentElement[name] = [currentElement[name]];
  46826. }
  46827. if (isArray(currentElement[name])) {
  46828. currentElement[name].push(element);
  46829. } else {
  46830. currentElement[name] = element;
  46831. }
  46832. } else {
  46833. if (!currentElement[options.elementsKey]) {
  46834. currentElement[options.elementsKey] = [];
  46835. }
  46836. element = {};
  46837. element[options.typeKey] = 'element';
  46838. element[options.nameKey] = name;
  46839. if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {
  46840. element[options.attributesKey] = attributes;
  46841. }
  46842. if (options.alwaysChildren) {
  46843. element[options.elementsKey] = [];
  46844. }
  46845. currentElement[options.elementsKey].push(element);
  46846. }
  46847. element[options.parentKey] = currentElement; // will be deleted in onEndElement() if !options.addParent
  46848. currentElement = element;
  46849. }
  46850. function onText(text) {
  46851. if (options.ignoreText) {
  46852. return;
  46853. }
  46854. if (!text.trim() && !options.captureSpacesBetweenElements) {
  46855. return;
  46856. }
  46857. if (options.trim) {
  46858. text = text.trim();
  46859. }
  46860. if (options.nativeType) {
  46861. text = nativeType(text);
  46862. }
  46863. if (options.sanitize) {
  46864. text = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
  46865. }
  46866. addField('text', text);
  46867. }
  46868. function onComment(comment) {
  46869. if (options.ignoreComment) {
  46870. return;
  46871. }
  46872. if (options.trim) {
  46873. comment = comment.trim();
  46874. }
  46875. addField('comment', comment);
  46876. }
  46877. function onEndElement(name) {
  46878. var parentElement = currentElement[options.parentKey];
  46879. if (!options.addParent) {
  46880. delete currentElement[options.parentKey];
  46881. }
  46882. currentElement = parentElement;
  46883. }
  46884. function onCdata(cdata) {
  46885. if (options.ignoreCdata) {
  46886. return;
  46887. }
  46888. if (options.trim) {
  46889. cdata = cdata.trim();
  46890. }
  46891. addField('cdata', cdata);
  46892. }
  46893. function onDoctype(doctype) {
  46894. if (options.ignoreDoctype) {
  46895. return;
  46896. }
  46897. doctype = doctype.replace(/^ /, '');
  46898. if (options.trim) {
  46899. doctype = doctype.trim();
  46900. }
  46901. addField('doctype', doctype);
  46902. }
  46903. function onError(error) {
  46904. error.note = error; //console.error(error);
  46905. }
  46906. module.exports = function (xml, userOptions) {
  46907. var parser = pureJsParser ? sax.parser(true, {}) : parser = new expat.Parser('UTF-8');
  46908. var result = {};
  46909. currentElement = result;
  46910. options = validateOptions(userOptions);
  46911. if (pureJsParser) {
  46912. parser.opt = {strictEntities: true};
  46913. parser.onopentag = onStartElement;
  46914. parser.ontext = onText;
  46915. parser.oncomment = onComment;
  46916. parser.onclosetag = onEndElement;
  46917. parser.onerror = onError;
  46918. parser.oncdata = onCdata;
  46919. parser.ondoctype = onDoctype;
  46920. parser.onprocessinginstruction = onInstruction;
  46921. } else {
  46922. parser.on('startElement', onStartElement);
  46923. parser.on('text', onText);
  46924. parser.on('comment', onComment);
  46925. parser.on('endElement', onEndElement);
  46926. parser.on('error', onError);
  46927. //parser.on('startCdata', onStartCdata);
  46928. //parser.on('endCdata', onEndCdata);
  46929. //parser.on('entityDecl', onEntityDecl);
  46930. }
  46931. if (pureJsParser) {
  46932. parser.write(xml).close();
  46933. } else {
  46934. if (!parser.parse(xml)) {
  46935. throw new Error('XML parsing error: ' + parser.getError());
  46936. }
  46937. }
  46938. if (result[options.elementsKey]) {
  46939. var temp = result[options.elementsKey];
  46940. delete result[options.elementsKey];
  46941. result[options.elementsKey] = temp;
  46942. delete result.text;
  46943. }
  46944. return result;
  46945. };
  46946. /***/ }),
  46947. /***/ "99ae":
  46948. /***/ (function(module, exports, __webpack_require__) {
  46949. "use strict";
  46950. Object.defineProperty(exports, "__esModule", {
  46951. value: true
  46952. });
  46953. exports.default = void 0;
  46954. var _default = {
  46955. dateTimeFormat: {
  46956. date: {
  46957. year: 'numeric',
  46958. month: 'short',
  46959. day: 'numeric'
  46960. },
  46961. date_second: {
  46962. year: 'numeric',
  46963. month: 'short',
  46964. day: 'numeric',
  46965. hour: 'numeric',
  46966. minute: 'numeric',
  46967. second: 'numeric'
  46968. },
  46969. date_second_week: {
  46970. year: 'numeric',
  46971. month: 'short',
  46972. day: 'numeric',
  46973. weekday: 'long',
  46974. hour: 'numeric',
  46975. minute: 'numeric',
  46976. second: 'numeric'
  46977. }
  46978. },
  46979. // messageTemplate
  46980. warning: {
  46981. unsupportedVideoAddress: '视频地址不合法',
  46982. unavailableVideo: '此视频暂无法播放,请稍后再试',
  46983. mapNotLoaded: '关联的地图尚未加载完整,请稍后',
  46984. unassociatedMap: '您需要配置关联地图!'
  46985. },
  46986. success: {},
  46987. info: {
  46988. loading: '加载中',
  46989. pressEscToExit: '按下 ESC 键或点击关闭按钮退出'
  46990. },
  46991. unit: {
  46992. kilometers: '千米',
  46993. miles: '英里',
  46994. meters: '米',
  46995. yards: '码',
  46996. feet: '英尺',
  46997. squarekilometers: '平方千米',
  46998. squaremiles: '平方英里',
  46999. squaremeters: '平方米',
  47000. squareyards: '平方码',
  47001. squarefeet: '平方英尺'
  47002. },
  47003. error: {},
  47004. commontypes: {
  47005. restData: 'SuperMap Rest 数据服务',
  47006. restMap: 'SuperMap Rest 地图服务',
  47007. addressMatch: 'SuperMap 地址匹配服务',
  47008. iportalData: 'SuperMap iPortal 数据',
  47009. onlineLocalSearch: 'SuperMap Online 本地搜索'
  47010. },
  47011. // 组件
  47012. timeText: {
  47013. Year: '年',
  47014. Month: '月',
  47015. Day: '日',
  47016. hour: '时',
  47017. minute: '分',
  47018. second: '秒'
  47019. },
  47020. zoom: {},
  47021. chart: {
  47022. unSupportedData: '当前数据不支持与地图联动'
  47023. },
  47024. layerList: {
  47025. title: '图层'
  47026. },
  47027. miniMap: {},
  47028. pan: {},
  47029. scale: {},
  47030. webmap: {
  47031. loadingTip: '地图加载中...',
  47032. crsNotSupport: '不支持当前地图的坐标系!',
  47033. TileMatrixSetNotSuppport: '不支持传入的 TileMatrixSet!',
  47034. getLayerInfoFailed: '获取图层信息失败!',
  47035. getThemeInfoFailed: '获取图层样式信息失败!',
  47036. crsnotsupport: '不支持的坐标系!',
  47037. baiduMapNotSupport: '暂不支持加载百度地图!',
  47038. sampleDataNotSupport: '暂不支持加载示例数据!',
  47039. mvtNotSupport: '暂不支持加载矢量瓦片图层!'
  47040. },
  47041. legend: {
  47042. themeField: '专题字段',
  47043. title: '图例',
  47044. top: '最高',
  47045. bottom: '最低',
  47046. noMatchLayer: '没有匹配的图层'
  47047. },
  47048. measure: {
  47049. mapMeasure: '量算',
  47050. measureResult: '测量结果',
  47051. distance: '距离',
  47052. area: '面积',
  47053. delete: '清空',
  47054. selectPlaceholder: '请选择',
  47055. startingPoint: '起点'
  47056. },
  47057. search: {
  47058. noResult: '查询结果为空!',
  47059. noKey: '搜索关键字不能为空,请输入搜索条件。',
  47060. inputPlaceHolder: '查找地址或地点',
  47061. attribute: '属性',
  47062. attributeValue: '属性值',
  47063. setSearchSource: '请设置搜索源!',
  47064. address: '地址',
  47065. null: '空',
  47066. illegalFeature: '要素必须包含合法的坐标!'
  47067. },
  47068. query: {
  47069. query: '查询',
  47070. queryJob: '任务',
  47071. queryResult: '结果',
  47072. attributeCondition: '属性条件',
  47073. spatialFilter: '空间过滤器',
  47074. mapBounds: '返回地图全图范围的要素',
  47075. currentMapBounds: '返回当前地图范围内的要素',
  47076. applicate: '应用',
  47077. noResult: '无结果',
  47078. resultAlreadyExists: '当前查询结果已经存在!',
  47079. querying: '查询中',
  47080. attribute: '属性',
  47081. attributeValue: '属性值',
  47082. noResults: '查询结果为空!',
  47083. queryFailed: '查询失败!',
  47084. seviceNotSupport: '此服务不支持查询!'
  47085. },
  47086. identify: {
  47087. layerNotExit: "地图上不存在该图层: '{layer}'",
  47088. noData: '无数据'
  47089. },
  47090. openFile: {
  47091. fileSizeExceeded: '文件大小超限!文件大小不得超过 10M!',
  47092. fileTypeUnsupported: '不支持该文件格式!',
  47093. openFileFail: '打开文件失败!',
  47094. openFileSuccess: '打开文件成功!',
  47095. selectFile: '选择文件',
  47096. openEmptyFile: '打开文件为空!',
  47097. openFile: '打开文件'
  47098. },
  47099. draw: {
  47100. draw: '绘制'
  47101. },
  47102. indicator: {
  47103. title: '指标标题',
  47104. unit: '单位'
  47105. },
  47106. layerManager: {
  47107. title: '图层管理'
  47108. },
  47109. tdtResults: {
  47110. on: '在',
  47111. station: '站',
  47112. total: '共',
  47113. about: '约',
  47114. // pagination
  47115. homePage: '首页',
  47116. prevPage: '上一页',
  47117. nextPage: '下一页',
  47118. // nothingResult
  47119. searchNoResult: '没有查询到相关结果',
  47120. youCanTry: '您可以尝试',
  47121. enterCorrect: '检查输入是否正确',
  47122. enterOtherKeyWords: '输入其他关键字进行搜索',
  47123. onTdtMap: '在天地图上',
  47124. addThisAddress: '添加该地点',
  47125. uWantTo: '您是否要找',
  47126. // pointResults
  47127. totalFind: '共找到',
  47128. piecesResults: '条结果',
  47129. phone: '电话',
  47130. address: '地址',
  47131. setStartPonint: '设为起点',
  47132. setEndPonint: '设为终点',
  47133. // routePlan
  47134. totalMiles: '总里程',
  47135. distance: '约{distance}公里',
  47136. showDetails: '显示全部详情',
  47137. switchTimes: '换乘{switchTimes}次',
  47138. noSwitch: '无换乘',
  47139. walk: '步行至',
  47140. getOff: '下车',
  47141. getOn: '上车',
  47142. take: '乘坐',
  47143. noSearchResults: '没有查询到线路信息',
  47144. fastRoute: '最快线路',
  47145. shortRoute: '最短线路',
  47146. walkRoute: '少走高速',
  47147. fast: '较快捷',
  47148. noSubway: '不坐地铁',
  47149. lessSwitch: '少换乘',
  47150. lessWalk: '少步行',
  47151. // staticResult
  47152. cityHadResults: '以下城市有结果,请您选择',
  47153. moreCity: '更多城市',
  47154. // LineResult
  47155. allFound: '共为您找到',
  47156. piecesBusRoute: '条公交线路',
  47157. showDetail: '展开详情',
  47158. busEndTime: '首末车时间',
  47159. relateAdress: '点击此处查看 "{keyWord}" 的相关地点',
  47160. // areaResult
  47161. switchTo: '已切换到'
  47162. },
  47163. tdtRoute: {
  47164. title: '路线',
  47165. clearRoute: '清除路线',
  47166. pleaseEnterStartPoint: '请输入起点',
  47167. pleaseEnterEndPoint: '请输入终点',
  47168. search: '搜索',
  47169. startPoint: '起点',
  47170. endPoint: '终点',
  47171. mapLoadedFiled: '地图加载失败',
  47172. busEndTime: '首末车时间',
  47173. about: '约',
  47174. station: '站',
  47175. total: '共',
  47176. hour: '小时',
  47177. minutes: '分钟'
  47178. },
  47179. tdtSearch: {
  47180. phone: '电话',
  47181. address: '地址',
  47182. noData: '暂无',
  47183. transport: '交通'
  47184. },
  47185. tdtMapSwitcher: {
  47186. title: '地图切换',
  47187. image: '影像',
  47188. vector: '矢量',
  47189. terrain: '地形',
  47190. placeName: '地名',
  47191. TiandituVec: '天地图矢量底图',
  47192. TiandituTer: '天地图地形底图',
  47193. TiandituImg: '天地图影像底图',
  47194. TiandituCva: '天地图矢量注记',
  47195. TiandituCta: '天地图地形注记',
  47196. TiandituCia: '天地图影像注记'
  47197. },
  47198. // layer
  47199. dataFlow: {
  47200. dataSubscriptionFailed: '数据订阅失败!'
  47201. },
  47202. animateMarkerlayer: {
  47203. unsupportedData: '当前图层不支持该数据,请重新传入数据!'
  47204. }
  47205. };
  47206. exports.default = _default;
  47207. /***/ }),
  47208. /***/ "9b6b":
  47209. /***/ (function(module, exports, __webpack_require__) {
  47210. "use strict";
  47211. var _interopRequireDefault = __webpack_require__("8e6d");
  47212. Object.defineProperty(exports, "__esModule", {
  47213. value: true
  47214. });
  47215. exports.default = void 0;
  47216. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  47217. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  47218. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  47219. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  47220. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  47221. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  47222. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  47223. var _vuePropertyDecorator = __webpack_require__("e22c");
  47224. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  47225. var _CompareViewModel = _interopRequireDefault(__webpack_require__("e9cf"));
  47226. var _debounce = _interopRequireDefault(__webpack_require__("331f"));
  47227. var _resizeDetector = __webpack_require__("e0f2");
  47228. __webpack_require__("890a");
  47229. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  47230. var c = arguments.length,
  47231. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  47232. d;
  47233. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  47234. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  47235. }
  47236. return c > 3 && r && Object.defineProperty(target, key, r), r;
  47237. };
  47238. var Compare =
  47239. /*#__PURE__*/
  47240. function (_Mixins) {
  47241. (0, _inherits2.default)(Compare, _Mixins);
  47242. function Compare() {
  47243. (0, _classCallCheck2.default)(this, Compare);
  47244. return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Compare).apply(this, arguments));
  47245. }
  47246. (0, _createClass2.default)(Compare, [{
  47247. key: "additionalOptionsWatcher",
  47248. value: function additionalOptionsWatcher() {
  47249. this.handleOptionsChange();
  47250. }
  47251. }, {
  47252. key: "compareSwipeLineStyleWatcher",
  47253. value: function compareSwipeLineStyleWatcher(next, prev) {
  47254. var style = this.diffStyle(next, prev);
  47255. style && this.setSwipeLineStyle();
  47256. }
  47257. }, {
  47258. key: "compareSwipeSlideStyleWatcher",
  47259. value: function compareSwipeSlideStyleWatcher(next, prev) {
  47260. var style = this.diffStyle(next, prev);
  47261. style && this.setSwipeStyle(style);
  47262. }
  47263. }, {
  47264. key: "created",
  47265. value: function created() {
  47266. this.viewModel = new _CompareViewModel.default();
  47267. }
  47268. }, {
  47269. key: "mounted",
  47270. value: function mounted() {
  47271. this.$on('theme-style-changed', this.handleThemeStyleChanged);
  47272. if (this.autoresize) {
  47273. this.resizeHandler = (0, _debounce.default)(this.resize, 300, {
  47274. leading: true
  47275. });
  47276. (0, _resizeDetector.addListener)(this.$el, this.resizeHandler);
  47277. }
  47278. }
  47279. }, {
  47280. key: "beforeDestroy",
  47281. value: function beforeDestroy() {
  47282. this.viewModel.removed();
  47283. if (this.autoresize) {
  47284. (0, _resizeDetector.removeListener)(this.$el, this.resizeHandler);
  47285. }
  47286. }
  47287. }, {
  47288. key: "initSwipeStyle",
  47289. value: function initSwipeStyle() {
  47290. this.setSwipeLineStyle();
  47291. this.setSwipeStyle();
  47292. }
  47293. }, {
  47294. key: "resize",
  47295. value: function resize() {
  47296. this.handleOptionsChange();
  47297. }
  47298. }, {
  47299. key: "diffStyle",
  47300. value: function diffStyle(nextStyle, prevStyle) {
  47301. var diff;
  47302. for (var key in nextStyle) {
  47303. if (nextStyle[key] !== prevStyle[key]) {
  47304. diff = diff || {};
  47305. diff[key] = nextStyle[key];
  47306. }
  47307. }
  47308. return diff;
  47309. }
  47310. }, {
  47311. key: "setSwipeStyle",
  47312. value: function setSwipeStyle() {
  47313. var style = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.compareSwipeSlideStyle;
  47314. var swipeDom = this.$el.querySelector('.mapboxgl-compare > div');
  47315. this.setStyle(swipeDom, style);
  47316. }
  47317. }, {
  47318. key: "setSwipeLineStyle",
  47319. value: function setSwipeLineStyle() {
  47320. var style = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.compareSwipeLineStyle;
  47321. var swipeLineDom = this.$el.querySelector('.mapboxgl-compare');
  47322. this.setStyle(swipeLineDom, style);
  47323. }
  47324. }, {
  47325. key: "setStyle",
  47326. value: function setStyle(dom, style) {
  47327. if (dom) {
  47328. for (var key in style) {
  47329. var value = style[key];
  47330. dom.style[key] = value;
  47331. }
  47332. }
  47333. }
  47334. }, {
  47335. key: "handleThemeStyleChanged",
  47336. value: function handleThemeStyleChanged() {
  47337. this.setSwipeStyle({
  47338. backgroundColor: this.colorGroupsData && this.colorGroupsData[0]
  47339. });
  47340. }
  47341. }, {
  47342. key: "handleOptionsChange",
  47343. value: function handleOptionsChange() {
  47344. var options = {
  47345. beforeMap: this.beforeMapInstance,
  47346. afterMap: this.afterMapInstance,
  47347. target: this.target,
  47348. options: {
  47349. orientation: this.orientation,
  47350. mousemove: this.mousemove
  47351. }
  47352. };
  47353. if (options.beforeMap && options.afterMap) {
  47354. var beforeZoom = options.beforeMap.getZoom();
  47355. var beforeCenter = options.beforeMap.getCenter();
  47356. var beforeBearing = options.beforeMap.getBearing();
  47357. var beforePitch = options.beforeMap.getPitch();
  47358. if (beforeZoom !== options.afterMap.getZoom()) {
  47359. options.afterMap.setZoom(beforeZoom);
  47360. }
  47361. if (beforeCenter.toString() !== options.afterMap.getCenter().toString()) {
  47362. options.afterMap.setCenter(beforeCenter);
  47363. }
  47364. if (beforeBearing !== options.afterMap.getBearing()) {
  47365. options.afterMap.setBearing(beforeBearing);
  47366. }
  47367. if (beforePitch !== options.afterMap.getPitch()) {
  47368. options.afterMap.setPitch(beforePitch);
  47369. }
  47370. this.viewModel.init(options);
  47371. this.$nextTick(this.initSwipeStyle);
  47372. }
  47373. }
  47374. }, {
  47375. key: "setBeforeMap",
  47376. value: function setBeforeMap(params) {
  47377. this.beforeMapInstance = params.map;
  47378. this.handleOptionsChange();
  47379. }
  47380. }, {
  47381. key: "setAfterMap",
  47382. value: function setAfterMap(params) {
  47383. this.afterMapInstance = params.map;
  47384. this.handleOptionsChange();
  47385. }
  47386. }, {
  47387. key: "render",
  47388. value: function render(h) {
  47389. var children;
  47390. if (this.beforeMapOptions && this.afterMapOptions) {
  47391. children = [h(_vue.default.component('SmWebMap'), {
  47392. props: this.beforeMapOptions,
  47393. on: {
  47394. load: this.setBeforeMap
  47395. }
  47396. }), h(_vue.default.component('SmWebMap'), {
  47397. props: this.afterMapOptions,
  47398. on: {
  47399. load: this.setAfterMap
  47400. }
  47401. })];
  47402. } else if (this.$slots.beforeMap && this.$slots.afterMap) {
  47403. var beforePrevListeners = this.$slots.beforeMap[0].componentOptions.listeners;
  47404. this.$slots.beforeMap[0].componentOptions.listeners = Object.assign({}, beforePrevListeners, {
  47405. load: this.setBeforeMap
  47406. });
  47407. var afterPrevListeners = this.$slots.afterMap[0].componentOptions.listeners;
  47408. this.$slots.afterMap[0].componentOptions.listeners = Object.assign({}, afterPrevListeners, {
  47409. load: this.setAfterMap
  47410. });
  47411. children = [this.$slots.beforeMap, this.$slots.afterMap];
  47412. }
  47413. return h('div', {
  47414. class: 'sm-component-compare',
  47415. attrs: {
  47416. id: this.target
  47417. }
  47418. }, children);
  47419. }
  47420. }, {
  47421. key: "additionalOptions",
  47422. get: function get() {
  47423. return {
  47424. orientation: this.orientation,
  47425. mousemove: this.mousemove
  47426. };
  47427. }
  47428. }, {
  47429. key: "compareSwipeLineStyle",
  47430. get: function get() {
  47431. var style = {
  47432. backgroundColor: this.textColor
  47433. };
  47434. var sizeFieldName = 'width';
  47435. if (this.orientation === 'horizontal') {
  47436. sizeFieldName = 'height';
  47437. }
  47438. style[sizeFieldName] = "".concat(this.lineSize, "px");
  47439. return style;
  47440. }
  47441. }, {
  47442. key: "compareSwipeSlideStyle",
  47443. get: function get() {
  47444. return {
  47445. backgroundColor: this.slideBackground,
  47446. color: this.textColor,
  47447. width: "".concat(this.slideSize, "px"),
  47448. height: "".concat(this.slideSize, "px"),
  47449. borderWidth: "".concat(this.lineSize, "px")
  47450. };
  47451. }
  47452. }]);
  47453. return Compare;
  47454. }((0, _vuePropertyDecorator.Mixins)(_theme.default));
  47455. __decorate([(0, _vuePropertyDecorator.Prop)({
  47456. default: 'comparison-container'
  47457. })], Compare.prototype, "target", void 0);
  47458. __decorate([(0, _vuePropertyDecorator.Prop)({
  47459. default: 'vertical'
  47460. })], Compare.prototype, "orientation", void 0);
  47461. __decorate([(0, _vuePropertyDecorator.Prop)({
  47462. default: false
  47463. })], Compare.prototype, "mousemove", void 0);
  47464. __decorate([(0, _vuePropertyDecorator.Prop)()], Compare.prototype, "beforeMapOptions", void 0);
  47465. __decorate([(0, _vuePropertyDecorator.Prop)()], Compare.prototype, "afterMapOptions", void 0);
  47466. __decorate([(0, _vuePropertyDecorator.Prop)({
  47467. default: 2
  47468. })], Compare.prototype, "lineSize", void 0);
  47469. __decorate([(0, _vuePropertyDecorator.Prop)({
  47470. default: 60
  47471. })], Compare.prototype, "slideSize", void 0);
  47472. __decorate([(0, _vuePropertyDecorator.Prop)()], Compare.prototype, "slideBackground", void 0);
  47473. __decorate([(0, _vuePropertyDecorator.Prop)({
  47474. default: true
  47475. })], Compare.prototype, "autoresize", void 0);
  47476. __decorate([(0, _vuePropertyDecorator.Watch)('additionalOptions')], Compare.prototype, "additionalOptionsWatcher", null);
  47477. __decorate([(0, _vuePropertyDecorator.Watch)('compareSwipeLineStyle')], Compare.prototype, "compareSwipeLineStyleWatcher", null);
  47478. __decorate([(0, _vuePropertyDecorator.Watch)('compareSwipeSlideStyle')], Compare.prototype, "compareSwipeSlideStyleWatcher", null);
  47479. Compare = __decorate([(0, _vuePropertyDecorator.Component)({
  47480. name: 'SmCompare'
  47481. })], Compare);
  47482. var _default = Compare;
  47483. exports.default = _default;
  47484. /***/ }),
  47485. /***/ "9b76":
  47486. /***/ (function(module, exports, __webpack_require__) {
  47487. "use strict";
  47488. var _interopRequireDefault = __webpack_require__("8e6d");
  47489. Object.defineProperty(exports, "__esModule", {
  47490. value: true
  47491. });
  47492. exports.default = void 0;
  47493. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  47494. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  47495. var _card = _interopRequireDefault(__webpack_require__("333c"));
  47496. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  47497. var _LayerManagerViewModel = _interopRequireDefault(__webpack_require__("9eb2"));
  47498. var _lodash = _interopRequireDefault(__webpack_require__("f344"));
  47499. var _lodash2 = _interopRequireDefault(__webpack_require__("25a2"));
  47500. var _lodash3 = _interopRequireDefault(__webpack_require__("5f9f"));
  47501. //
  47502. //
  47503. //
  47504. //
  47505. //
  47506. //
  47507. //
  47508. //
  47509. //
  47510. //
  47511. //
  47512. //
  47513. //
  47514. //
  47515. //
  47516. //
  47517. //
  47518. //
  47519. //
  47520. //
  47521. //
  47522. //
  47523. //
  47524. //
  47525. //
  47526. //
  47527. //
  47528. //
  47529. //
  47530. //
  47531. //
  47532. //
  47533. //
  47534. //
  47535. //
  47536. //
  47537. var _default2 = {
  47538. name: 'SmLayerManager',
  47539. mixins: [_theme.default, _control.default, _mapGetter.default, _card.default],
  47540. props: {
  47541. collapsed: {
  47542. type: Boolean,
  47543. // 是否折叠
  47544. default: true
  47545. },
  47546. iconClass: {
  47547. type: String,
  47548. default: 'sm-components-icons-layer-style'
  47549. },
  47550. headerName: {
  47551. type: String,
  47552. default: function _default() {
  47553. return this.$t('layerManager.title');
  47554. }
  47555. },
  47556. layers: {
  47557. type: Array
  47558. },
  47559. replaceFields: {
  47560. type: Object,
  47561. default: function _default() {
  47562. return {
  47563. children: 'children',
  47564. title: 'title',
  47565. key: 'key'
  47566. };
  47567. }
  47568. },
  47569. defaultExpandAll: {
  47570. type: Boolean,
  47571. default: false
  47572. }
  47573. },
  47574. data: function data() {
  47575. return {
  47576. treeData: null,
  47577. checkedKeys: [],
  47578. mapIsLoad: false
  47579. };
  47580. },
  47581. watch: {
  47582. layers: {
  47583. handler: function handler(newVal, oldVal) {
  47584. if (oldVal && !(0, _lodash3.default)(newVal, oldVal)) {
  47585. this.cleanStatus();
  47586. }
  47587. this.treeData = (0, _lodash2.default)(newVal);
  47588. this.insertProperty(this.treeData);
  47589. },
  47590. deep: true,
  47591. immediate: true
  47592. },
  47593. textColorsData: {
  47594. handler: function handler() {
  47595. this.changeCheckBoxStyle();
  47596. this.changeArrowStyle();
  47597. }
  47598. }
  47599. },
  47600. created: function created() {
  47601. this.viewModel = new _LayerManagerViewModel.default();
  47602. },
  47603. mounted: function mounted() {
  47604. this.changeCheckBoxStyle();
  47605. this.changeArrowStyle();
  47606. },
  47607. methods: {
  47608. checkNode: function checkNode(key, e) {
  47609. var _this = this;
  47610. this.changeCheckBoxStyle();
  47611. this.changeArrowStyle();
  47612. this.checkedKeys = key;
  47613. if (e.checked) {
  47614. e.checkedNodes && e.checkedNodes.length && e.checkedNodes.forEach(function (node) {
  47615. var mapInfo = node.data.props.mapInfo;
  47616. if (mapInfo && mapInfo.serverUrl) {
  47617. var nodeKey = node.key;
  47618. if (mapInfo.mapId) {
  47619. var serverUrl = mapInfo.serverUrl,
  47620. mapId = mapInfo.mapId,
  47621. withCredentials = mapInfo.withCredentials,
  47622. layerFilter = mapInfo.layerFilter;
  47623. _this.addLayer({
  47624. nodeKey: nodeKey,
  47625. serverUrl: serverUrl,
  47626. mapId: mapId,
  47627. withCredentials: withCredentials,
  47628. layerFilter: layerFilter
  47629. });
  47630. } else {
  47631. _this.addIServerLayer(mapInfo.serverUrl, nodeKey);
  47632. }
  47633. }
  47634. });
  47635. } else {
  47636. var data = e.node.dataRef;
  47637. this.viewModel.removeLayerLoop(data);
  47638. }
  47639. },
  47640. expandNode: function expandNode() {
  47641. this.changeCheckBoxStyle();
  47642. this.changeArrowStyle();
  47643. },
  47644. addLayer: function addLayer(_ref) {
  47645. var nodeKey = _ref.nodeKey,
  47646. serverUrl = _ref.serverUrl,
  47647. mapId = _ref.mapId,
  47648. withCredentials = _ref.withCredentials,
  47649. layerFilter = _ref.layerFilter;
  47650. if (!this.mapIsLoad) {
  47651. return;
  47652. }
  47653. this.viewModel.addLayer({
  47654. nodeKey: nodeKey,
  47655. serverUrl: serverUrl,
  47656. mapId: mapId,
  47657. withCredentials: withCredentials,
  47658. layerFilter: layerFilter
  47659. });
  47660. },
  47661. removeLayer: function removeLayer(nodeKey) {
  47662. if (!this.mapIsLoad) {
  47663. return;
  47664. }
  47665. this.viewModel.removeLayer(nodeKey);
  47666. },
  47667. addIServerLayer: function addIServerLayer(serverUrl, nodeKey) {
  47668. if (!this.mapIsLoad) {
  47669. return;
  47670. }
  47671. this.viewModel.addIServerLayer(serverUrl, nodeKey);
  47672. },
  47673. removeIServerLayer: function removeIServerLayer(nodeKey) {
  47674. if (!this.mapIsLoad) {
  47675. return;
  47676. }
  47677. this.viewModel.removeIServerLayer(nodeKey);
  47678. },
  47679. changeCheckBoxStyle: function changeCheckBoxStyle() {
  47680. var _this2 = this;
  47681. setTimeout(function () {
  47682. var checkBoxsList = _this2.$el.querySelectorAll('.ant-tree-checkbox');
  47683. var _iteratorNormalCompletion = true;
  47684. var _didIteratorError = false;
  47685. var _iteratorError = undefined;
  47686. try {
  47687. for (var _iterator = checkBoxsList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  47688. var item = _step.value;
  47689. var childrens = item.childNodes;
  47690. var checkbox = childrens[0];
  47691. if (item.classList.contains('ant-tree-checkbox-checked')) {
  47692. checkbox.style.borderColor = _this2.getColor(0);
  47693. checkbox.style.backgroundColor = _this2.getColor(0);
  47694. } else {
  47695. checkbox.style.borderColor = '#DCDFE6';
  47696. checkbox.style.backgroundColor = '#fff';
  47697. }
  47698. }
  47699. } catch (err) {
  47700. _didIteratorError = true;
  47701. _iteratorError = err;
  47702. } finally {
  47703. try {
  47704. if (!_iteratorNormalCompletion && _iterator.return != null) {
  47705. _iterator.return();
  47706. }
  47707. } finally {
  47708. if (_didIteratorError) {
  47709. throw _iteratorError;
  47710. }
  47711. }
  47712. }
  47713. }, 0);
  47714. },
  47715. changeArrowStyle: function changeArrowStyle() {
  47716. var _this3 = this;
  47717. setTimeout(function () {
  47718. var switcherList = _this3.$el.querySelectorAll('.ant-tree-switcher');
  47719. if (switcherList.length) {
  47720. switcherList.forEach(function (switcher) {
  47721. switcher.style.color = _this3.getTextColor;
  47722. });
  47723. }
  47724. }, 0);
  47725. },
  47726. insertProperty: function insertProperty(layers) {
  47727. this.eachNode(layers, function (node, parentNode) {
  47728. // 为没有传key的节点生成key
  47729. if (!node.key) {
  47730. node.key = (0, _lodash.default)('key_');
  47731. }
  47732. node.selectable = false; // 如果没有mapInfo就禁用掉checkbox
  47733. if (!node.children && !node.mapInfo) {
  47734. node.disableCheckbox = true;
  47735. node.disabled = true;
  47736. } else if (!node.children && node.mapInfo) {
  47737. node.disableCheckbox && (node.disableCheckbox = false);
  47738. node.disabled && (node.disabled = false);
  47739. }
  47740. if (!node['scopedSlots']) {
  47741. if (node.children) {
  47742. node['scopedSlots'] = {
  47743. title: 'title'
  47744. };
  47745. } else {
  47746. node['scopedSlots'] = {
  47747. title: 'title',
  47748. mapInfo: 'mapInfo'
  47749. };
  47750. }
  47751. }
  47752. });
  47753. },
  47754. eachNode: function eachNode(datas, callback) {
  47755. for (var i = 0; i < datas.length; i++) {
  47756. callback(datas[i], datas);
  47757. if (datas[i].children) {
  47758. this.eachNode(datas[i].children, callback);
  47759. }
  47760. }
  47761. return datas;
  47762. },
  47763. cleanStatus: function cleanStatus() {
  47764. var _this4 = this;
  47765. if (this.checkedKeys.length) {
  47766. this.checkedKeys.forEach(function (key) {
  47767. _this4.removeLayer(key);
  47768. _this4.removeIServerLayer(key);
  47769. });
  47770. }
  47771. this.checkedKeys = [];
  47772. this.changeCheckBoxStyle();
  47773. this.changeArrowStyle();
  47774. }
  47775. },
  47776. loaded: function loaded() {
  47777. this.mapIsLoad = true;
  47778. },
  47779. removed: function removed() {
  47780. this.cleanStatus();
  47781. }
  47782. };
  47783. exports.default = _default2;
  47784. /***/ }),
  47785. /***/ "9baa":
  47786. /***/ (function(module, exports, __webpack_require__) {
  47787. "use strict";
  47788. var _interopRequireDefault = __webpack_require__("8e6d");
  47789. Object.defineProperty(exports, "__esModule", {
  47790. value: true
  47791. });
  47792. exports.default = void 0;
  47793. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  47794. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  47795. var _ClusterLayerViewModel = _interopRequireDefault(__webpack_require__("f83e"));
  47796. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  47797. var _CircleStyle = _interopRequireDefault(__webpack_require__("b27b"));
  47798. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  47799. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  47800. var _default2 = {
  47801. name: 'SmClusterLayer',
  47802. mixins: [_mapGetter.default, _layer.default],
  47803. props: {
  47804. data: {
  47805. type: Object,
  47806. required: true
  47807. },
  47808. radius: {
  47809. type: Number,
  47810. default: 50
  47811. },
  47812. clusteredPointStyle: {
  47813. type: Object,
  47814. default: function _default() {
  47815. return new _CircleStyle.default({
  47816. 'circle-color': ['step', ['get', 'point_count'], '#51bbd6', 100, '#f1f075', 750, '#f28cb1'],
  47817. 'circle-radius': ['step', ['get', 'point_count'], 20, 100, 30, 750, 40]
  47818. });
  47819. }
  47820. },
  47821. unclusteredPointStyle: {
  47822. type: Object,
  47823. default: function _default() {
  47824. return new _CircleStyle.default({
  47825. 'circle-color': '#11b4da',
  47826. 'circle-radius': 4,
  47827. 'circle-stroke-width': 1,
  47828. 'circle-stroke-color': '#fff'
  47829. });
  47830. }
  47831. },
  47832. clusteredPointTextLayout: {
  47833. type: Object
  47834. }
  47835. },
  47836. watch: {
  47837. data: function data(newVal, oldVal) {
  47838. if (this.viewModel) {
  47839. this.viewModel.setData(this.data);
  47840. }
  47841. },
  47842. clusteredPointStyle: function clusteredPointStyle() {
  47843. this.viewModel && this.viewModel.setClusteredPointStyle(this.clusteredPointStyle);
  47844. },
  47845. unclusteredPointStyle: function unclusteredPointStyle() {
  47846. this.viewModel && this.viewModel.setUnclusteredPointStyle(this.unclusteredPointStyle);
  47847. },
  47848. clusteredPointTextLayout: function clusteredPointTextLayout() {
  47849. this.viewModel && this.viewModel.setClusteredPointTextLayout(this.clusteredPointTextLayout);
  47850. }
  47851. },
  47852. created: function created() {
  47853. var options = JSON.parse(JSON.stringify(this.$props));
  47854. delete options.data;
  47855. this.viewModel = new _ClusterLayerViewModel.default(this.data, _objectSpread({}, options));
  47856. },
  47857. render: function render() {}
  47858. };
  47859. exports.default = _default2;
  47860. /***/ }),
  47861. /***/ "9bd6":
  47862. /***/ (function(module, exports, __webpack_require__) {
  47863. "use strict";
  47864. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  47865. var Buffer = __webpack_require__("54da").Buffer;
  47866. var util = __webpack_require__(2);
  47867. function copyBuffer(src, target, offset) {
  47868. src.copy(target, offset);
  47869. }
  47870. module.exports = function () {
  47871. function BufferList() {
  47872. _classCallCheck(this, BufferList);
  47873. this.head = null;
  47874. this.tail = null;
  47875. this.length = 0;
  47876. }
  47877. BufferList.prototype.push = function push(v) {
  47878. var entry = { data: v, next: null };
  47879. if (this.length > 0) this.tail.next = entry;else this.head = entry;
  47880. this.tail = entry;
  47881. ++this.length;
  47882. };
  47883. BufferList.prototype.unshift = function unshift(v) {
  47884. var entry = { data: v, next: this.head };
  47885. if (this.length === 0) this.tail = entry;
  47886. this.head = entry;
  47887. ++this.length;
  47888. };
  47889. BufferList.prototype.shift = function shift() {
  47890. if (this.length === 0) return;
  47891. var ret = this.head.data;
  47892. if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
  47893. --this.length;
  47894. return ret;
  47895. };
  47896. BufferList.prototype.clear = function clear() {
  47897. this.head = this.tail = null;
  47898. this.length = 0;
  47899. };
  47900. BufferList.prototype.join = function join(s) {
  47901. if (this.length === 0) return '';
  47902. var p = this.head;
  47903. var ret = '' + p.data;
  47904. while (p = p.next) {
  47905. ret += s + p.data;
  47906. }return ret;
  47907. };
  47908. BufferList.prototype.concat = function concat(n) {
  47909. if (this.length === 0) return Buffer.alloc(0);
  47910. if (this.length === 1) return this.head.data;
  47911. var ret = Buffer.allocUnsafe(n >>> 0);
  47912. var p = this.head;
  47913. var i = 0;
  47914. while (p) {
  47915. copyBuffer(p.data, ret, i);
  47916. i += p.data.length;
  47917. p = p.next;
  47918. }
  47919. return ret;
  47920. };
  47921. return BufferList;
  47922. }();
  47923. if (util && util.inspect && util.inspect.custom) {
  47924. module.exports.prototype[util.inspect.custom] = function () {
  47925. var obj = util.inspect({ length: this.length });
  47926. return this.constructor.name + ' ' + obj;
  47927. };
  47928. }
  47929. /***/ }),
  47930. /***/ "9c18":
  47931. /***/ (function(module, exports, __webpack_require__) {
  47932. "use strict";
  47933. var utils = __webpack_require__("d691");
  47934. function encode(val) {
  47935. return encodeURIComponent(val).
  47936. replace(/%40/gi, '@').
  47937. replace(/%3A/gi, ':').
  47938. replace(/%24/g, '$').
  47939. replace(/%2C/gi, ',').
  47940. replace(/%20/g, '+').
  47941. replace(/%5B/gi, '[').
  47942. replace(/%5D/gi, ']');
  47943. }
  47944. /**
  47945. * Build a URL by appending params to the end
  47946. *
  47947. * @param {string} url The base of the url (e.g., http://www.google.com)
  47948. * @param {object} [params] The params to be appended
  47949. * @returns {string} The formatted url
  47950. */
  47951. module.exports = function buildURL(url, params, paramsSerializer) {
  47952. /*eslint no-param-reassign:0*/
  47953. if (!params) {
  47954. return url;
  47955. }
  47956. var serializedParams;
  47957. if (paramsSerializer) {
  47958. serializedParams = paramsSerializer(params);
  47959. } else if (utils.isURLSearchParams(params)) {
  47960. serializedParams = params.toString();
  47961. } else {
  47962. var parts = [];
  47963. utils.forEach(params, function serialize(val, key) {
  47964. if (val === null || typeof val === 'undefined') {
  47965. return;
  47966. }
  47967. if (utils.isArray(val)) {
  47968. key = key + '[]';
  47969. } else {
  47970. val = [val];
  47971. }
  47972. utils.forEach(val, function parseValue(v) {
  47973. if (utils.isDate(v)) {
  47974. v = v.toISOString();
  47975. } else if (utils.isObject(v)) {
  47976. v = JSON.stringify(v);
  47977. }
  47978. parts.push(encode(key) + '=' + encode(v));
  47979. });
  47980. });
  47981. serializedParams = parts.join('&');
  47982. }
  47983. if (serializedParams) {
  47984. var hashmarkIndex = url.indexOf('#');
  47985. if (hashmarkIndex !== -1) {
  47986. url = url.slice(0, hashmarkIndex);
  47987. }
  47988. url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
  47989. }
  47990. return url;
  47991. };
  47992. /***/ }),
  47993. /***/ "9c55":
  47994. /***/ (function(module, exports, __webpack_require__) {
  47995. "use strict";
  47996. var _interopRequireDefault = __webpack_require__("8e6d");
  47997. Object.defineProperty(exports, "__esModule", {
  47998. value: true
  47999. });
  48000. exports.default = void 0;
  48001. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  48002. var _lang = __webpack_require__("4e21");
  48003. var RestMapParameter = function RestMapParameter(options) {
  48004. (0, _classCallCheck2.default)(this, RestMapParameter);
  48005. this.type = 'iServer';
  48006. this.url = options.url;
  48007. this.layerName = options.layerName;
  48008. this.attributeFilter = options.attributeFilter || null;
  48009. this.maxFeatures = options.maxFeatures || 20;
  48010. this.name = options.name || (0, _lang.geti18n)().t('commontypes.restMap');
  48011. this.proxy = options.proxy;
  48012. };
  48013. exports.default = RestMapParameter;
  48014. /***/ }),
  48015. /***/ "9c77":
  48016. /***/ (function(module, exports, __webpack_require__) {
  48017. "use strict";
  48018. /* WEBPACK VAR INJECTION */(function(process, global) {// Copyright Joyent, Inc. and other Node contributors.
  48019. //
  48020. // Permission is hereby granted, free of charge, to any person obtaining a
  48021. // copy of this software and associated documentation files (the
  48022. // "Software"), to deal in the Software without restriction, including
  48023. // without limitation the rights to use, copy, modify, merge, publish,
  48024. // distribute, sublicense, and/or sell copies of the Software, and to permit
  48025. // persons to whom the Software is furnished to do so, subject to the
  48026. // following conditions:
  48027. //
  48028. // The above copyright notice and this permission notice shall be included
  48029. // in all copies or substantial portions of the Software.
  48030. //
  48031. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  48032. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  48033. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  48034. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  48035. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  48036. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  48037. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  48038. // A bit simpler than readable streams.
  48039. // Implement an async ._write(chunk, encoding, cb), and it'll handle all
  48040. // the drain event emission and buffering.
  48041. /*<replacement>*/
  48042. var pna = __webpack_require__("3e48");
  48043. /*</replacement>*/
  48044. module.exports = Writable;
  48045. /* <replacement> */
  48046. function WriteReq(chunk, encoding, cb) {
  48047. this.chunk = chunk;
  48048. this.encoding = encoding;
  48049. this.callback = cb;
  48050. this.next = null;
  48051. }
  48052. // It seems a linked list but it is not
  48053. // there will be only 2 of these for each stream
  48054. function CorkedRequest(state) {
  48055. var _this = this;
  48056. this.next = null;
  48057. this.entry = null;
  48058. this.finish = function () {
  48059. onCorkedFinish(_this, state);
  48060. };
  48061. }
  48062. /* </replacement> */
  48063. /*<replacement>*/
  48064. var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
  48065. /*</replacement>*/
  48066. /*<replacement>*/
  48067. var Duplex;
  48068. /*</replacement>*/
  48069. Writable.WritableState = WritableState;
  48070. /*<replacement>*/
  48071. var util = __webpack_require__("9107");
  48072. util.inherits = __webpack_require__("fe04");
  48073. /*</replacement>*/
  48074. /*<replacement>*/
  48075. var internalUtil = {
  48076. deprecate: __webpack_require__("8d32")
  48077. };
  48078. /*</replacement>*/
  48079. /*<replacement>*/
  48080. var Stream = __webpack_require__("5e89");
  48081. /*</replacement>*/
  48082. /*<replacement>*/
  48083. var Buffer = __webpack_require__("54da").Buffer;
  48084. var OurUint8Array = global.Uint8Array || function () {};
  48085. function _uint8ArrayToBuffer(chunk) {
  48086. return Buffer.from(chunk);
  48087. }
  48088. function _isUint8Array(obj) {
  48089. return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
  48090. }
  48091. /*</replacement>*/
  48092. var destroyImpl = __webpack_require__("74c0");
  48093. util.inherits(Writable, Stream);
  48094. function nop() {}
  48095. function WritableState(options, stream) {
  48096. Duplex = Duplex || __webpack_require__("d711");
  48097. options = options || {};
  48098. // Duplex streams are both readable and writable, but share
  48099. // the same options object.
  48100. // However, some cases require setting options to different
  48101. // values for the readable and the writable sides of the duplex stream.
  48102. // These options can be provided separately as readableXXX and writableXXX.
  48103. var isDuplex = stream instanceof Duplex;
  48104. // object stream flag to indicate whether or not this stream
  48105. // contains buffers or objects.
  48106. this.objectMode = !!options.objectMode;
  48107. if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
  48108. // the point at which write() starts returning false
  48109. // Note: 0 is a valid value, means that we always return false if
  48110. // the entire buffer is not flushed immediately on write()
  48111. var hwm = options.highWaterMark;
  48112. var writableHwm = options.writableHighWaterMark;
  48113. var defaultHwm = this.objectMode ? 16 : 16 * 1024;
  48114. if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;
  48115. // cast to ints.
  48116. this.highWaterMark = Math.floor(this.highWaterMark);
  48117. // if _final has been called
  48118. this.finalCalled = false;
  48119. // drain event flag.
  48120. this.needDrain = false;
  48121. // at the start of calling end()
  48122. this.ending = false;
  48123. // when end() has been called, and returned
  48124. this.ended = false;
  48125. // when 'finish' is emitted
  48126. this.finished = false;
  48127. // has it been destroyed
  48128. this.destroyed = false;
  48129. // should we decode strings into buffers before passing to _write?
  48130. // this is here so that some node-core streams can optimize string
  48131. // handling at a lower level.
  48132. var noDecode = options.decodeStrings === false;
  48133. this.decodeStrings = !noDecode;
  48134. // Crypto is kind of old and crusty. Historically, its default string
  48135. // encoding is 'binary' so we have to make this configurable.
  48136. // Everything else in the universe uses 'utf8', though.
  48137. this.defaultEncoding = options.defaultEncoding || 'utf8';
  48138. // not an actual buffer we keep track of, but a measurement
  48139. // of how much we're waiting to get pushed to some underlying
  48140. // socket or file.
  48141. this.length = 0;
  48142. // a flag to see when we're in the middle of a write.
  48143. this.writing = false;
  48144. // when true all writes will be buffered until .uncork() call
  48145. this.corked = 0;
  48146. // a flag to be able to tell if the onwrite cb is called immediately,
  48147. // or on a later tick. We set this to true at first, because any
  48148. // actions that shouldn't happen until "later" should generally also
  48149. // not happen before the first write call.
  48150. this.sync = true;
  48151. // a flag to know if we're processing previously buffered items, which
  48152. // may call the _write() callback in the same tick, so that we don't
  48153. // end up in an overlapped onwrite situation.
  48154. this.bufferProcessing = false;
  48155. // the callback that's passed to _write(chunk,cb)
  48156. this.onwrite = function (er) {
  48157. onwrite(stream, er);
  48158. };
  48159. // the callback that the user supplies to write(chunk,encoding,cb)
  48160. this.writecb = null;
  48161. // the amount that is being written when _write is called.
  48162. this.writelen = 0;
  48163. this.bufferedRequest = null;
  48164. this.lastBufferedRequest = null;
  48165. // number of pending user-supplied write callbacks
  48166. // this must be 0 before 'finish' can be emitted
  48167. this.pendingcb = 0;
  48168. // emit prefinish if the only thing we're waiting for is _write cbs
  48169. // This is relevant for synchronous Transform streams
  48170. this.prefinished = false;
  48171. // True if the error was already emitted and should not be thrown again
  48172. this.errorEmitted = false;
  48173. // count buffered requests
  48174. this.bufferedRequestCount = 0;
  48175. // allocate the first CorkedRequest, there is always
  48176. // one allocated and free to use, and we maintain at most two
  48177. this.corkedRequestsFree = new CorkedRequest(this);
  48178. }
  48179. WritableState.prototype.getBuffer = function getBuffer() {
  48180. var current = this.bufferedRequest;
  48181. var out = [];
  48182. while (current) {
  48183. out.push(current);
  48184. current = current.next;
  48185. }
  48186. return out;
  48187. };
  48188. (function () {
  48189. try {
  48190. Object.defineProperty(WritableState.prototype, 'buffer', {
  48191. get: internalUtil.deprecate(function () {
  48192. return this.getBuffer();
  48193. }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
  48194. });
  48195. } catch (_) {}
  48196. })();
  48197. // Test _writableState for inheritance to account for Duplex streams,
  48198. // whose prototype chain only points to Readable.
  48199. var realHasInstance;
  48200. if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
  48201. realHasInstance = Function.prototype[Symbol.hasInstance];
  48202. Object.defineProperty(Writable, Symbol.hasInstance, {
  48203. value: function (object) {
  48204. if (realHasInstance.call(this, object)) return true;
  48205. if (this !== Writable) return false;
  48206. return object && object._writableState instanceof WritableState;
  48207. }
  48208. });
  48209. } else {
  48210. realHasInstance = function (object) {
  48211. return object instanceof this;
  48212. };
  48213. }
  48214. function Writable(options) {
  48215. Duplex = Duplex || __webpack_require__("d711");
  48216. // Writable ctor is applied to Duplexes, too.
  48217. // `realHasInstance` is necessary because using plain `instanceof`
  48218. // would return false, as no `_writableState` property is attached.
  48219. // Trying to use the custom `instanceof` for Writable here will also break the
  48220. // Node.js LazyTransform implementation, which has a non-trivial getter for
  48221. // `_writableState` that would lead to infinite recursion.
  48222. if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
  48223. return new Writable(options);
  48224. }
  48225. this._writableState = new WritableState(options, this);
  48226. // legacy.
  48227. this.writable = true;
  48228. if (options) {
  48229. if (typeof options.write === 'function') this._write = options.write;
  48230. if (typeof options.writev === 'function') this._writev = options.writev;
  48231. if (typeof options.destroy === 'function') this._destroy = options.destroy;
  48232. if (typeof options.final === 'function') this._final = options.final;
  48233. }
  48234. Stream.call(this);
  48235. }
  48236. // Otherwise people can pipe Writable streams, which is just wrong.
  48237. Writable.prototype.pipe = function () {
  48238. this.emit('error', new Error('Cannot pipe, not readable'));
  48239. };
  48240. function writeAfterEnd(stream, cb) {
  48241. var er = new Error('write after end');
  48242. // TODO: defer error events consistently everywhere, not just the cb
  48243. stream.emit('error', er);
  48244. pna.nextTick(cb, er);
  48245. }
  48246. // Checks that a user-supplied chunk is valid, especially for the particular
  48247. // mode the stream is in. Currently this means that `null` is never accepted
  48248. // and undefined/non-string values are only allowed in object mode.
  48249. function validChunk(stream, state, chunk, cb) {
  48250. var valid = true;
  48251. var er = false;
  48252. if (chunk === null) {
  48253. er = new TypeError('May not write null values to stream');
  48254. } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
  48255. er = new TypeError('Invalid non-string/buffer chunk');
  48256. }
  48257. if (er) {
  48258. stream.emit('error', er);
  48259. pna.nextTick(cb, er);
  48260. valid = false;
  48261. }
  48262. return valid;
  48263. }
  48264. Writable.prototype.write = function (chunk, encoding, cb) {
  48265. var state = this._writableState;
  48266. var ret = false;
  48267. var isBuf = !state.objectMode && _isUint8Array(chunk);
  48268. if (isBuf && !Buffer.isBuffer(chunk)) {
  48269. chunk = _uint8ArrayToBuffer(chunk);
  48270. }
  48271. if (typeof encoding === 'function') {
  48272. cb = encoding;
  48273. encoding = null;
  48274. }
  48275. if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
  48276. if (typeof cb !== 'function') cb = nop;
  48277. if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
  48278. state.pendingcb++;
  48279. ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
  48280. }
  48281. return ret;
  48282. };
  48283. Writable.prototype.cork = function () {
  48284. var state = this._writableState;
  48285. state.corked++;
  48286. };
  48287. Writable.prototype.uncork = function () {
  48288. var state = this._writableState;
  48289. if (state.corked) {
  48290. state.corked--;
  48291. if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
  48292. }
  48293. };
  48294. Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
  48295. // node::ParseEncoding() requires lower case.
  48296. if (typeof encoding === 'string') encoding = encoding.toLowerCase();
  48297. if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
  48298. this._writableState.defaultEncoding = encoding;
  48299. return this;
  48300. };
  48301. function decodeChunk(state, chunk, encoding) {
  48302. if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
  48303. chunk = Buffer.from(chunk, encoding);
  48304. }
  48305. return chunk;
  48306. }
  48307. Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
  48308. // making it explicit this property is not enumerable
  48309. // because otherwise some prototype manipulation in
  48310. // userland will fail
  48311. enumerable: false,
  48312. get: function () {
  48313. return this._writableState.highWaterMark;
  48314. }
  48315. });
  48316. // if we're already writing something, then just put this
  48317. // in the queue, and wait our turn. Otherwise, call _write
  48318. // If we return false, then we need a drain event, so set that flag.
  48319. function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
  48320. if (!isBuf) {
  48321. var newChunk = decodeChunk(state, chunk, encoding);
  48322. if (chunk !== newChunk) {
  48323. isBuf = true;
  48324. encoding = 'buffer';
  48325. chunk = newChunk;
  48326. }
  48327. }
  48328. var len = state.objectMode ? 1 : chunk.length;
  48329. state.length += len;
  48330. var ret = state.length < state.highWaterMark;
  48331. // we must ensure that previous needDrain will not be reset to false.
  48332. if (!ret) state.needDrain = true;
  48333. if (state.writing || state.corked) {
  48334. var last = state.lastBufferedRequest;
  48335. state.lastBufferedRequest = {
  48336. chunk: chunk,
  48337. encoding: encoding,
  48338. isBuf: isBuf,
  48339. callback: cb,
  48340. next: null
  48341. };
  48342. if (last) {
  48343. last.next = state.lastBufferedRequest;
  48344. } else {
  48345. state.bufferedRequest = state.lastBufferedRequest;
  48346. }
  48347. state.bufferedRequestCount += 1;
  48348. } else {
  48349. doWrite(stream, state, false, len, chunk, encoding, cb);
  48350. }
  48351. return ret;
  48352. }
  48353. function doWrite(stream, state, writev, len, chunk, encoding, cb) {
  48354. state.writelen = len;
  48355. state.writecb = cb;
  48356. state.writing = true;
  48357. state.sync = true;
  48358. if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
  48359. state.sync = false;
  48360. }
  48361. function onwriteError(stream, state, sync, er, cb) {
  48362. --state.pendingcb;
  48363. if (sync) {
  48364. // defer the callback if we are being called synchronously
  48365. // to avoid piling up things on the stack
  48366. pna.nextTick(cb, er);
  48367. // this can emit finish, and it will always happen
  48368. // after error
  48369. pna.nextTick(finishMaybe, stream, state);
  48370. stream._writableState.errorEmitted = true;
  48371. stream.emit('error', er);
  48372. } else {
  48373. // the caller expect this to happen before if
  48374. // it is async
  48375. cb(er);
  48376. stream._writableState.errorEmitted = true;
  48377. stream.emit('error', er);
  48378. // this can emit finish, but finish must
  48379. // always follow error
  48380. finishMaybe(stream, state);
  48381. }
  48382. }
  48383. function onwriteStateUpdate(state) {
  48384. state.writing = false;
  48385. state.writecb = null;
  48386. state.length -= state.writelen;
  48387. state.writelen = 0;
  48388. }
  48389. function onwrite(stream, er) {
  48390. var state = stream._writableState;
  48391. var sync = state.sync;
  48392. var cb = state.writecb;
  48393. onwriteStateUpdate(state);
  48394. if (er) onwriteError(stream, state, sync, er, cb);else {
  48395. // Check if we're actually ready to finish, but don't emit yet
  48396. var finished = needFinish(state);
  48397. if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
  48398. clearBuffer(stream, state);
  48399. }
  48400. if (sync) {
  48401. /*<replacement>*/
  48402. asyncWrite(afterWrite, stream, state, finished, cb);
  48403. /*</replacement>*/
  48404. } else {
  48405. afterWrite(stream, state, finished, cb);
  48406. }
  48407. }
  48408. }
  48409. function afterWrite(stream, state, finished, cb) {
  48410. if (!finished) onwriteDrain(stream, state);
  48411. state.pendingcb--;
  48412. cb();
  48413. finishMaybe(stream, state);
  48414. }
  48415. // Must force callback to be called on nextTick, so that we don't
  48416. // emit 'drain' before the write() consumer gets the 'false' return
  48417. // value, and has a chance to attach a 'drain' listener.
  48418. function onwriteDrain(stream, state) {
  48419. if (state.length === 0 && state.needDrain) {
  48420. state.needDrain = false;
  48421. stream.emit('drain');
  48422. }
  48423. }
  48424. // if there's something in the buffer waiting, then process it
  48425. function clearBuffer(stream, state) {
  48426. state.bufferProcessing = true;
  48427. var entry = state.bufferedRequest;
  48428. if (stream._writev && entry && entry.next) {
  48429. // Fast case, write everything using _writev()
  48430. var l = state.bufferedRequestCount;
  48431. var buffer = new Array(l);
  48432. var holder = state.corkedRequestsFree;
  48433. holder.entry = entry;
  48434. var count = 0;
  48435. var allBuffers = true;
  48436. while (entry) {
  48437. buffer[count] = entry;
  48438. if (!entry.isBuf) allBuffers = false;
  48439. entry = entry.next;
  48440. count += 1;
  48441. }
  48442. buffer.allBuffers = allBuffers;
  48443. doWrite(stream, state, true, state.length, buffer, '', holder.finish);
  48444. // doWrite is almost always async, defer these to save a bit of time
  48445. // as the hot path ends with doWrite
  48446. state.pendingcb++;
  48447. state.lastBufferedRequest = null;
  48448. if (holder.next) {
  48449. state.corkedRequestsFree = holder.next;
  48450. holder.next = null;
  48451. } else {
  48452. state.corkedRequestsFree = new CorkedRequest(state);
  48453. }
  48454. state.bufferedRequestCount = 0;
  48455. } else {
  48456. // Slow case, write chunks one-by-one
  48457. while (entry) {
  48458. var chunk = entry.chunk;
  48459. var encoding = entry.encoding;
  48460. var cb = entry.callback;
  48461. var len = state.objectMode ? 1 : chunk.length;
  48462. doWrite(stream, state, false, len, chunk, encoding, cb);
  48463. entry = entry.next;
  48464. state.bufferedRequestCount--;
  48465. // if we didn't call the onwrite immediately, then
  48466. // it means that we need to wait until it does.
  48467. // also, that means that the chunk and cb are currently
  48468. // being processed, so move the buffer counter past them.
  48469. if (state.writing) {
  48470. break;
  48471. }
  48472. }
  48473. if (entry === null) state.lastBufferedRequest = null;
  48474. }
  48475. state.bufferedRequest = entry;
  48476. state.bufferProcessing = false;
  48477. }
  48478. Writable.prototype._write = function (chunk, encoding, cb) {
  48479. cb(new Error('_write() is not implemented'));
  48480. };
  48481. Writable.prototype._writev = null;
  48482. Writable.prototype.end = function (chunk, encoding, cb) {
  48483. var state = this._writableState;
  48484. if (typeof chunk === 'function') {
  48485. cb = chunk;
  48486. chunk = null;
  48487. encoding = null;
  48488. } else if (typeof encoding === 'function') {
  48489. cb = encoding;
  48490. encoding = null;
  48491. }
  48492. if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
  48493. // .end() fully uncorks
  48494. if (state.corked) {
  48495. state.corked = 1;
  48496. this.uncork();
  48497. }
  48498. // ignore unnecessary end() calls.
  48499. if (!state.ending && !state.finished) endWritable(this, state, cb);
  48500. };
  48501. function needFinish(state) {
  48502. return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
  48503. }
  48504. function callFinal(stream, state) {
  48505. stream._final(function (err) {
  48506. state.pendingcb--;
  48507. if (err) {
  48508. stream.emit('error', err);
  48509. }
  48510. state.prefinished = true;
  48511. stream.emit('prefinish');
  48512. finishMaybe(stream, state);
  48513. });
  48514. }
  48515. function prefinish(stream, state) {
  48516. if (!state.prefinished && !state.finalCalled) {
  48517. if (typeof stream._final === 'function') {
  48518. state.pendingcb++;
  48519. state.finalCalled = true;
  48520. pna.nextTick(callFinal, stream, state);
  48521. } else {
  48522. state.prefinished = true;
  48523. stream.emit('prefinish');
  48524. }
  48525. }
  48526. }
  48527. function finishMaybe(stream, state) {
  48528. var need = needFinish(state);
  48529. if (need) {
  48530. prefinish(stream, state);
  48531. if (state.pendingcb === 0) {
  48532. state.finished = true;
  48533. stream.emit('finish');
  48534. }
  48535. }
  48536. return need;
  48537. }
  48538. function endWritable(stream, state, cb) {
  48539. state.ending = true;
  48540. finishMaybe(stream, state);
  48541. if (cb) {
  48542. if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);
  48543. }
  48544. state.ended = true;
  48545. stream.writable = false;
  48546. }
  48547. function onCorkedFinish(corkReq, state, err) {
  48548. var entry = corkReq.entry;
  48549. corkReq.entry = null;
  48550. while (entry) {
  48551. var cb = entry.callback;
  48552. state.pendingcb--;
  48553. cb(err);
  48554. entry = entry.next;
  48555. }
  48556. if (state.corkedRequestsFree) {
  48557. state.corkedRequestsFree.next = corkReq;
  48558. } else {
  48559. state.corkedRequestsFree = corkReq;
  48560. }
  48561. }
  48562. Object.defineProperty(Writable.prototype, 'destroyed', {
  48563. get: function () {
  48564. if (this._writableState === undefined) {
  48565. return false;
  48566. }
  48567. return this._writableState.destroyed;
  48568. },
  48569. set: function (value) {
  48570. // we ignore the value if the stream
  48571. // has not been initialized yet
  48572. if (!this._writableState) {
  48573. return;
  48574. }
  48575. // backward compatibility, the user is explicitly
  48576. // managing destroyed
  48577. this._writableState.destroyed = value;
  48578. }
  48579. });
  48580. Writable.prototype.destroy = destroyImpl.destroy;
  48581. Writable.prototype._undestroy = destroyImpl.undestroy;
  48582. Writable.prototype._destroy = function (err, cb) {
  48583. this.end();
  48584. cb(err);
  48585. };
  48586. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("f2ac"), __webpack_require__("698d")))
  48587. /***/ }),
  48588. /***/ "9cc6":
  48589. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  48590. "use strict";
  48591. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/tdt/results/AreaResult.vue?vue&type=template&id=cea2ca5a&
  48592. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.data)?_c('div',{staticClass:"area-results-container sm-component-tdtAreaResults"},[_c('div',{staticClass:"title"},[_c('i'),_vm._v("\n "+_vm._s(_vm.$t('tdtResults.switchTo'))+"\n "),_c('span',{staticClass:"name"},[_vm._v(_vm._s(_vm.data.name))])])]):_vm._e()}
  48593. var staticRenderFns = []
  48594. // CONCATENATED MODULE: ./src/mapboxgl/tdt/results/AreaResult.vue?vue&type=template&id=cea2ca5a&
  48595. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  48596. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  48597. /***/ }),
  48598. /***/ "9d60":
  48599. /***/ (function(module, exports, __webpack_require__) {
  48600. "use strict";
  48601. var _interopRequireWildcard = __webpack_require__("16ed");
  48602. var _interopRequireDefault = __webpack_require__("8e6d");
  48603. Object.defineProperty(exports, "__esModule", {
  48604. value: true
  48605. });
  48606. exports.default = void 0;
  48607. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  48608. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  48609. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  48610. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  48611. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  48612. var _iServerRestService = _interopRequireWildcard(__webpack_require__("e340"));
  48613. var _util = __webpack_require__("1448");
  48614. var _Events2 = __webpack_require__("e3e2");
  48615. /**
  48616. * @class iPortalDataService
  48617. * @classdesc iPortal 数据请求类。
  48618. * @category BaseTypes Util
  48619. * @param {string} url - iPortal 数据地址。
  48620. * @param {Boolean} [withCredentials=false] - 请求是否携带 cookie。
  48621. * @fires iPortalDataService#getdatasucceeded
  48622. * @fires iPortalDataService#getdatafailed
  48623. * @fires iPortalDataService#featureisempty
  48624. */
  48625. var iPortalDataService =
  48626. /*#__PURE__*/
  48627. function (_Events) {
  48628. (0, _inherits2.default)(iPortalDataService, _Events);
  48629. function iPortalDataService(url, withCredentials) {
  48630. var _this;
  48631. var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  48632. (0, _classCallCheck2.default)(this, iPortalDataService);
  48633. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(iPortalDataService).call(this));
  48634. _this.url = url;
  48635. _this.withCredentials = withCredentials || false;
  48636. _this.epsgCode = options.epsgCode;
  48637. _this.iportalServiceProxyUrl = options.iportalServiceProxyUrl;
  48638. _this.eventTypes = ['getdatasucceeded', 'getdatafailed', 'featureisempty'];
  48639. _this.initSerivce(url);
  48640. return _this;
  48641. }
  48642. (0, _createClass2.default)(iPortalDataService, [{
  48643. key: "initSerivce",
  48644. value: function initSerivce(url) {
  48645. var _this2 = this;
  48646. this.iserverService = new _iServerRestService.default(url, {
  48647. epsgCode: this.epsgCode
  48648. });
  48649. this.iserverService.on({
  48650. getdatasucceeded: function getdatasucceeded(e) {
  48651. /**
  48652. * @event iPortalDataService#getdatasucceeded
  48653. * @description 请求数据成功后触发。
  48654. * @property {Object} e - 事件对象。
  48655. */
  48656. _this2.triggerEvent('getdatasucceeded', e);
  48657. },
  48658. getdatafailed: function getdatafailed(e) {
  48659. /**
  48660. * @event iPortalDataService#getdatafailed
  48661. * @description 请求数据失败后触发。
  48662. * @property {Object} e - 事件对象。
  48663. */
  48664. _this2.triggerEvent('getdatafailed', e);
  48665. },
  48666. featureisempty: function featureisempty(e) {
  48667. /**
  48668. * @event iPortalDataService#featureisempty
  48669. * @description 请求数据为空后触发。
  48670. * @property {Object} e - 事件对象。
  48671. */
  48672. _this2.triggerEvent('featureisempty', e);
  48673. }
  48674. });
  48675. }
  48676. /**
  48677. * @function iPortalDataService.prototype.getData
  48678. * @description 请求数据。
  48679. * @param {Object} queryInfo - 可选参数。
  48680. * @param {Object} [queryInfo.maxFeatures] - 最多可返回的要素数量。
  48681. * @param {Object} [queryInfo.attributeFilter] - 属性过滤条件。
  48682. * @param {Object} [queryInfo.keyWord] - 筛选关键字。
  48683. */
  48684. }, {
  48685. key: "getData",
  48686. value: function getData(queryInfo) {
  48687. var _this3 = this;
  48688. var preferContent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  48689. if (!this.url) {
  48690. return;
  48691. }
  48692. var datasetUrl = this.url;
  48693. if (preferContent) {
  48694. this._getDatafromContent(datasetUrl, queryInfo);
  48695. return;
  48696. }
  48697. SuperMap.FetchRequest.get(datasetUrl, null, {
  48698. withCredentials: this.withCredentials
  48699. }).then(function (response) {
  48700. return response.json();
  48701. }).then(function (data) {
  48702. if (data.succeed === false) {
  48703. // 请求失败
  48704. _this3.triggerEvent('getdatafailed', {
  48705. data: data
  48706. });
  48707. return;
  48708. } // 是否有rest服务
  48709. if (data.dataItemServices && data.dataItemServices.length > 0) {
  48710. var dataItemServices = data.dataItemServices;
  48711. var resultData = dataItemServices.find(function (item) {
  48712. return (item.serviceType === 'RESTDATA' || item.serviceType === 'RESTMAP') && item.serviceStatus === 'PUBLISHED';
  48713. }); // 有rest服务并且address不为空(online的address服务为'')
  48714. if (resultData && resultData.address) {
  48715. // 如果有服务,获取数据源和数据集, 然后请求rest服务
  48716. _this3._getDatafromRest(resultData.serviceType, resultData.address, queryInfo);
  48717. } else {
  48718. _this3._getDatafromContent(datasetUrl, queryInfo);
  48719. }
  48720. } else {
  48721. _this3._getDatafromContent(datasetUrl, queryInfo);
  48722. }
  48723. }).catch(function (error) {
  48724. console.log(error);
  48725. _this3.triggerEvent('getdatafailed', {
  48726. error: error
  48727. });
  48728. });
  48729. }
  48730. }, {
  48731. key: "_getDatafromRest",
  48732. value: function _getDatafromRest(serviceType, address, queryInfo) {
  48733. var _this4 = this;
  48734. if (serviceType === 'RESTDATA') {
  48735. var url = "".concat(address, "/data/datasources");
  48736. var dataSourceName;
  48737. var datasetName; // 请求获取数据源名
  48738. SuperMap.FetchRequest.get(url, null, {
  48739. withCredentials: (0, _util.handleWithCredentials)(url, this.iportalServiceProxyUrl, this.withCredentials)
  48740. }).then(function (response) {
  48741. return response.json();
  48742. }).then(function (data) {
  48743. dataSourceName = data.datasourceNames[0];
  48744. url = "".concat(address, "/data/datasources/").concat(dataSourceName, "/datasets"); // 请求获取数据集名
  48745. SuperMap.FetchRequest.get(url, null, {
  48746. withCredentials: (0, _util.handleWithCredentials)(url, _this4.iportalServiceProxyUrl, _this4.withCredentials)
  48747. }).then(function (response) {
  48748. return response.json();
  48749. }).then(function (data) {
  48750. datasetName = data.datasetNames[0]; // 请求restdata服务
  48751. _this4.iserverService.getDataFeatures({
  48752. datasetName: datasetName,
  48753. dataSourceName: dataSourceName,
  48754. dataUrl: url.split('/datasources')[0]
  48755. }, Object.assign({}, queryInfo, {
  48756. withCredentials: (0, _util.handleWithCredentials)(url, _this4.iportalServiceProxyUrl, _this4.withCredentials)
  48757. }));
  48758. }).catch(function (error) {
  48759. console.log(error);
  48760. _this4.triggerEvent('getdatafailed', {
  48761. error: error
  48762. });
  48763. });
  48764. });
  48765. } else {
  48766. // 如果是地图服务
  48767. var _url = "".concat(address, "/maps");
  48768. var mapName;
  48769. var layerName;
  48770. var path; // 请求获取地图名
  48771. SuperMap.FetchRequest.get(_url, null, {
  48772. withCredentials: (0, _util.handleWithCredentials)(_url, this.iportalServiceProxyUrl, this.withCredentials)
  48773. }).then(function (response) {
  48774. return response.json();
  48775. }).then(function (data) {
  48776. mapName = data[0].name;
  48777. path = data[0].path;
  48778. _url = _url = "".concat(address, "/maps/").concat(mapName, "/layers"); // 请求获取图层名
  48779. SuperMap.FetchRequest.get(_url, null, {
  48780. withCredentials: (0, _util.handleWithCredentials)(_url, _this4.iportalServiceProxyUrl, _this4.withCredentials)
  48781. }).then(function (response) {
  48782. return response.json();
  48783. }).then(function (data) {
  48784. layerName = data[0].subLayers.layers[0].caption; // 请求restmap服务
  48785. _this4.iserverService.getMapFeatures({
  48786. mapName: layerName,
  48787. dataUrl: path
  48788. }, Object.assign({}, queryInfo, {
  48789. withCredentials: (0, _util.handleWithCredentials)(_url, _this4.iportalServiceProxyUrl, _this4.withCredentials)
  48790. }));
  48791. return layerName;
  48792. }).catch(function (error) {
  48793. console.log(error);
  48794. _this4.triggerEvent('getdatafailed', {
  48795. error: error
  48796. });
  48797. });
  48798. }).catch(function (error) {
  48799. console.log(error);
  48800. _this4.triggerEvent('getdatafailed', {
  48801. error: error
  48802. });
  48803. });
  48804. }
  48805. }
  48806. }, {
  48807. key: "_getDatafromContent",
  48808. value: function _getDatafromContent(datasetUrl, queryInfo) {
  48809. var _this5 = this;
  48810. var result = {};
  48811. datasetUrl += '/content.json?pageSize=9999999&currentPage=1'; // 获取图层数据
  48812. SuperMap.FetchRequest.get(datasetUrl, null, {
  48813. withCredentials: this.withCredentials
  48814. }).then(function (response) {
  48815. return response.json();
  48816. }).then(function (data) {
  48817. if (data.succeed === false) {
  48818. // 请求失败
  48819. _this5.triggerEvent('getdatafailed', {
  48820. data: data
  48821. });
  48822. return;
  48823. }
  48824. if (data.type) {
  48825. var features;
  48826. var type = 'FeatureCollection';
  48827. if (data.type === 'JSON' || data.type === 'GEOJSON') {
  48828. data.content = JSON.parse(data.content.trim()); // 如果是json文件 data.content = {type:'fco', features},格式不固定
  48829. if (!data.content.features) {
  48830. features = _this5._json2Feature(data.content, queryInfo);
  48831. }
  48832. features = _this5._formatGeoJSON(features || data.content, queryInfo);
  48833. type = data.content.type;
  48834. } else if (data.type === 'EXCEL' || data.type === 'CSV') {
  48835. features = _this5._excelData2Feature(data.content, queryInfo);
  48836. }
  48837. features = _this5._transformContentFeatures(features);
  48838. result.features = {
  48839. type: type,
  48840. features: features
  48841. };
  48842. _this5.vertified && (result.vertified = _this5.vertified);
  48843. _this5.iserverService._getFeaturesSucceed({
  48844. result: result
  48845. });
  48846. }
  48847. }).catch(function (error) {
  48848. console.log(error);
  48849. _this5.triggerEvent('getdatafailed', {
  48850. error: error
  48851. });
  48852. });
  48853. }
  48854. }, {
  48855. key: "_formatGeoJSON",
  48856. value: function _formatGeoJSON(data, queryInfo) {
  48857. var features = data.features;
  48858. if (queryInfo && queryInfo.maxFeatures > 0) {
  48859. features = features.slice(0, queryInfo.maxFeatures);
  48860. }
  48861. features.forEach(function (row, index) {
  48862. row.properties['index'] = index;
  48863. });
  48864. return features;
  48865. }
  48866. }, {
  48867. key: "_excelData2Feature",
  48868. value: function _excelData2Feature(dataContent, queryInfo) {
  48869. var fieldCaptions = dataContent.colTitles; // 位置属性处理
  48870. var xfieldIndex = -1;
  48871. var yfieldIndex = -1;
  48872. for (var i = 0, _len = fieldCaptions.length; i < _len; i++) {
  48873. if ((0, _util.isXField)(fieldCaptions[i])) {
  48874. xfieldIndex = i;
  48875. }
  48876. if ((0, _util.isYField)(fieldCaptions[i])) {
  48877. yfieldIndex = i;
  48878. }
  48879. } // feature 构建后期支持坐标系 4326/3857
  48880. var features = [];
  48881. var len = dataContent.rows.length;
  48882. if (queryInfo && queryInfo.maxFeatures > 0 && len > queryInfo.maxFeatures) {
  48883. len = queryInfo.maxFeatures;
  48884. }
  48885. for (var _i = 0; _i < len; _i++) {
  48886. var row = dataContent.rows[_i];
  48887. var x = xfieldIndex !== -1 && Number(row[xfieldIndex]);
  48888. var y = yfieldIndex !== -1 && Number(row[yfieldIndex]); // 属性信息
  48889. var attributes = {};
  48890. for (var index in dataContent.colTitles) {
  48891. var key = dataContent.colTitles[index];
  48892. attributes[key] = dataContent.rows[_i][index];
  48893. }
  48894. var feature = {
  48895. type: 'Feature',
  48896. properties: attributes
  48897. };
  48898. if (x && y) {
  48899. attributes['index'] = _i + '';
  48900. feature.geometry = {
  48901. type: 'Point',
  48902. coordinates: [x, y]
  48903. };
  48904. } // 目前csv 只支持处理点,所以先生成点类型的 geojson
  48905. features.push(feature);
  48906. }
  48907. return features;
  48908. }
  48909. }, {
  48910. key: "_json2Feature",
  48911. value: function _json2Feature(dataContent) {
  48912. var content = typeof dataContent === 'string' ? JSON.parse(dataContent) : dataContent;
  48913. var features = [];
  48914. if (content instanceof Array) {
  48915. content.map(function (val) {
  48916. if (val.hasOwnProperty('geometry')) {
  48917. features.push({
  48918. properties: val.properties || val,
  48919. geometry: val.geometry
  48920. });
  48921. } else {
  48922. features.push({
  48923. properties: val
  48924. });
  48925. }
  48926. });
  48927. } else if (content) {
  48928. features = [{
  48929. properties: content
  48930. }];
  48931. }
  48932. return {
  48933. features: features
  48934. };
  48935. } // 转坐标系
  48936. }, {
  48937. key: "_transformContentFeatures",
  48938. value: function _transformContentFeatures(features) {
  48939. var transformedFeatures = features;
  48940. if (features && !!features.length) {
  48941. var epsgCode = (0, _iServerRestService.vertifyEpsgCode)(features[0]);
  48942. transformedFeatures = (0, _iServerRestService.transformFeatures)(epsgCode, features);
  48943. this.vertified = true;
  48944. }
  48945. return transformedFeatures;
  48946. }
  48947. }]);
  48948. return iPortalDataService;
  48949. }(_Events2.Events);
  48950. exports.default = iPortalDataService;
  48951. /***/ }),
  48952. /***/ "9da3":
  48953. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  48954. "use strict";
  48955. __webpack_require__.r(__webpack_exports__);
  48956. /* harmony import */ var _ClusterLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("dc9a");
  48957. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _ClusterLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _ClusterLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  48958. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  48959. var render, staticRenderFns
  48960. /* normalize component */
  48961. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  48962. _ClusterLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  48963. render,
  48964. staticRenderFns,
  48965. false,
  48966. null,
  48967. null,
  48968. null
  48969. )
  48970. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  48971. /***/ }),
  48972. /***/ "9dde":
  48973. /***/ (function(module, exports, __webpack_require__) {
  48974. "use strict";
  48975. Object.defineProperty(exports, "__esModule", {
  48976. value: true
  48977. });
  48978. exports.statisticsFeatures = statisticsFeatures;
  48979. function statisticsFeatures(features, fields, fieldCaptions, fieldTypes) {
  48980. var data = {
  48981. features: features,
  48982. fields: fields || [],
  48983. fieldCaptions: fieldCaptions || [],
  48984. fieldValues: [],
  48985. fieldTypes: fieldTypes
  48986. };
  48987. if (features && !!features.length && !fieldCaptions && !fields) {
  48988. var properties = Object.assign({}, features[0].properties, features[features.length - 1].properties); // 获取每个字段的名字和类型
  48989. for (var attr in properties) {
  48990. data.fieldCaptions.push(attr);
  48991. data.fields.push(attr);
  48992. }
  48993. }
  48994. for (var m in data.fields) {
  48995. var fieldValue = [];
  48996. for (var j in features) {
  48997. var feature = features[j];
  48998. var field = data.fields[m];
  48999. var value = feature.properties[field];
  49000. fieldValue.push(value);
  49001. } // fieldValues [[每个字段的所有要素值],[],[]]
  49002. data.fieldValues.push(fieldValue);
  49003. }
  49004. return data;
  49005. }
  49006. /***/ }),
  49007. /***/ "9e24":
  49008. /***/ (function(module, exports, __webpack_require__) {
  49009. "use strict";
  49010. var _interopRequireDefault = __webpack_require__("8e6d");
  49011. Object.defineProperty(exports, "__esModule", {
  49012. value: true
  49013. });
  49014. exports.default = void 0;
  49015. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  49016. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  49017. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  49018. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  49019. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  49020. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  49021. var _service = __webpack_require__("027a");
  49022. var _xmlJs = _interopRequireDefault(__webpack_require__("fc3a"));
  49023. var _bbox = _interopRequireDefault(__webpack_require__("1164"));
  49024. var _transformScale = _interopRequireDefault(__webpack_require__("f052"));
  49025. var _start = _interopRequireDefault(__webpack_require__("e447"));
  49026. var _dest = _interopRequireDefault(__webpack_require__("2aa4"));
  49027. var _bus = _interopRequireDefault(__webpack_require__("b19c"));
  49028. var _metro = _interopRequireDefault(__webpack_require__("4aed"));
  49029. var _lang = __webpack_require__("4e21");
  49030. var TdtRouteViewModel =
  49031. /*#__PURE__*/
  49032. function (_mapboxgl$Evented) {
  49033. (0, _inherits2.default)(TdtRouteViewModel, _mapboxgl$Evented);
  49034. function TdtRouteViewModel(options) {
  49035. var _this;
  49036. (0, _classCallCheck2.default)(this, TdtRouteViewModel);
  49037. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(TdtRouteViewModel).call(this));
  49038. _this.type = options.type;
  49039. _this.appConfig = _service.config;
  49040. _this.token = options.data.tk;
  49041. _this.data = Object.assign({}, options.data);
  49042. _this.style = 0;
  49043. _this.sourceName = {
  49044. tdtRoutePoints: 'tdt-route-searchRoutePoints',
  49045. tdtDrawRoutes: 'tdt-route-routes'
  49046. };
  49047. return _this;
  49048. }
  49049. (0, _createClass2.default)(TdtRouteViewModel, [{
  49050. key: "setMap",
  49051. value: function setMap(mapInfo) {
  49052. var map = mapInfo.map;
  49053. this.map = map;
  49054. } // 分页的params里面应该有mapBound
  49055. }, {
  49056. key: "searchPoints",
  49057. value: function searchPoints(keyWord, params) {
  49058. var _this2 = this;
  49059. var searchUrl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.data.searchUrl || 'https://api.tianditu.gov.cn/search';
  49060. var map = this.map;
  49061. var commonData = {
  49062. keyWord: keyWord,
  49063. queryType: '7',
  49064. start: '0',
  49065. count: '4',
  49066. level: Math.round(map.getZoom()),
  49067. mapBound: this._toBBoxString()
  49068. };
  49069. return (0, _service.tiandituSearch)(searchUrl, {
  49070. postStr: JSON.stringify(Object.assign({}, commonData, params)),
  49071. type: 'query',
  49072. tk: this.token
  49073. }).then(function (data) {
  49074. var result = _this2._showResultToMap(data);
  49075. return result;
  49076. }).catch(function (error) {
  49077. var err = error.isCancel ? null : error;
  49078. return Promise.reject(err);
  49079. });
  49080. }
  49081. }, {
  49082. key: "search",
  49083. value: function search(orig, dest) {
  49084. var _this3 = this;
  49085. var carUrl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.data.carUrl || 'https://api.tianditu.gov.cn/drive';
  49086. var busUrl = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.data.busUrl || 'https://api.tianditu.gov.cn/transit';
  49087. this._clearMarkers();
  49088. if (!this.map) return Promise.reject(new Error((0, _lang.geti18n)().t('tdtRoute.mapLoadedFiled')));
  49089. this.orig = orig;
  49090. this.dest = dest;
  49091. var type = this.type === 'car' ? 'search' : 'busline';
  49092. var url = this.type === 'car' ? carUrl : busUrl;
  49093. var params = {
  49094. postStr: {
  49095. orig: this.orig && this.orig.join(','),
  49096. dest: this.dest && this.dest.join(','),
  49097. style: this.style,
  49098. mid: '',
  49099. startposition: this.orig && this.orig.join(','),
  49100. endposition: this.dest && this.dest.join(','),
  49101. linetype: 1
  49102. },
  49103. type: type,
  49104. tk: this.token
  49105. };
  49106. if (this.type !== 'car') {
  49107. params.postStr.linetype = this.style === 1 ? 8 : this.style + 1;
  49108. }
  49109. this.addStartMarker();
  49110. this.addDestMarker();
  49111. return (0, _service.request)({
  49112. url: url,
  49113. params: params
  49114. }).then(function (res) {
  49115. if (_this3.type === 'car') {
  49116. var result = _this3._handleXmlData(res);
  49117. var source = _this3.map.getSource(_this3.sourceName.tdtDrawRoutes);
  49118. source ? source.setData(result.features) : _this3._addRouteLayer(result.features);
  49119. source && _this3.setHighlightRoute('');
  49120. var bounds = (0, _bbox.default)((0, _transformScale.default)(result.features, 1.7));
  49121. _this3.map.fitBounds([[bounds[0], bounds[1]], [bounds[2], bounds[3]]], {
  49122. maxZoom: 17
  49123. }); // this.map.flyTo({
  49124. // center: [parseFloat(result.center[0]), parseFloat(result.center[1])],
  49125. // zoom: parseFloat(result.scale)
  49126. // });
  49127. _this3.setHighlightRoute();
  49128. _this3._addMarker();
  49129. _this3.result = result;
  49130. } else {
  49131. var _result = _this3._handleBusLineData(res);
  49132. _this3.result = _result;
  49133. var _source = _this3.map.getSource(_this3.sourceName.tdtDrawRoutes);
  49134. _this3.busFeatures = _this3.result && _this3.result[0].features;
  49135. _source ? _source.setData(_this3.busFeatures) : _this3._addRouteLayer(_this3.busFeatures);
  49136. _this3._addMarker(_this3.busFeatures.features);
  49137. _source && _this3.setHighlightRoute('');
  49138. var _bounds = (0, _bbox.default)((0, _transformScale.default)(_this3.busFeatures, 1.7));
  49139. _this3.map.fitBounds([[_bounds[0], _bounds[1]], [_bounds[2], _bounds[3]]], {
  49140. maxZoom: 17
  49141. }); // this.map.flyTo({
  49142. // center: this.busFeatures.features[0].geometry.coordinates[0],
  49143. // zoom: 9
  49144. // });
  49145. }
  49146. return _this3.result;
  49147. }).catch(function (error) {
  49148. console.log(error);
  49149. _this3.remainPosMarker = true;
  49150. });
  49151. }
  49152. }, {
  49153. key: "_showResultToMap",
  49154. value: function _showResultToMap(data) {
  49155. var type;
  49156. var result;
  49157. var prompt = data.prompt && data.prompt.find(function (item) {
  49158. return +item.type === 4;
  49159. });
  49160. if (data.pois && data.pois.length) {
  49161. type = 'Point';
  49162. result = data.pois;
  49163. var features = this._generatePointsFeatures(result);
  49164. this._addPoints(features);
  49165. } else if (data.statistics) {
  49166. type = 'Statistics';
  49167. result = (0, _service.getStatisticsResult)(data.statistics);
  49168. } else {
  49169. result = data.prompt;
  49170. }
  49171. return {
  49172. type: type,
  49173. result: {
  49174. count: +data.count,
  49175. data: result,
  49176. prompt: ((prompt || {}).admins || [])[0]
  49177. }
  49178. };
  49179. }
  49180. }, {
  49181. key: "_toBBoxString",
  49182. value: function _toBBoxString() {
  49183. return (0, _service.toBBoxString)(this.map);
  49184. }
  49185. }, {
  49186. key: "_generatePointsFeatures",
  49187. value: function _generatePointsFeatures(data) {
  49188. var splitFlag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ' ';
  49189. return (0, _service.generatePointsFeatures)(data, splitFlag);
  49190. }
  49191. }, {
  49192. key: "setSearchStyle",
  49193. value: function setSearchStyle(style) {
  49194. this.style = style;
  49195. }
  49196. }, {
  49197. key: "setSearchType",
  49198. value: function setSearchType(type) {
  49199. this.type = type;
  49200. this.style = 0; // this.search(this.orig, this.dest);
  49201. }
  49202. }, {
  49203. key: "setData",
  49204. value: function setData(data) {
  49205. this.token = data.tk;
  49206. this.data = Object.assign(this.data, data);
  49207. this.style = 0;
  49208. }
  49209. }, {
  49210. key: "setLayerFeatures",
  49211. value: function setLayerFeatures(id, show) {
  49212. var source = this.map.getSource(this.sourceName.tdtDrawRoutes);
  49213. this.busFeatures = this.result[id].features;
  49214. if (show) {
  49215. if (source) {
  49216. this.setHighlightRoute();
  49217. source.setData(this.busFeatures);
  49218. var bounds = (0, _bbox.default)((0, _transformScale.default)(this.busFeatures, 1.7));
  49219. this.map.fitBounds([[bounds[0], bounds[1]], [bounds[2], bounds[3]]], {
  49220. maxZoom: 17
  49221. });
  49222. } else {
  49223. this._addRouteLayer(this.busFeatures);
  49224. }
  49225. this._clearMarkers();
  49226. this.addStartMarker();
  49227. this.addDestMarker();
  49228. this._addMarker(this.result[id].features.features);
  49229. } else {
  49230. this.removed();
  49231. }
  49232. }
  49233. }, {
  49234. key: "removed",
  49235. value: function removed() {
  49236. var source = this.map.getSource(this.sourceName.tdtDrawRoutes);
  49237. source && source.setData({
  49238. type: 'FeatureCollection',
  49239. features: []
  49240. });
  49241. this._clearMarkers();
  49242. this._clearSearchResultLayer();
  49243. }
  49244. }, {
  49245. key: "_clearMarkers",
  49246. value: function _clearMarkers() {
  49247. if (!this.remainPosMarker) {
  49248. this.startMarker && this.startMarker.remove();
  49249. this.destMarker && this.destMarker.remove();
  49250. }
  49251. this.busMarkers && this.busMarkers.forEach(function (marker) {
  49252. marker.remove();
  49253. });
  49254. this.busMarkers = [];
  49255. this.remainPosMarker = false;
  49256. this._resetSearchSourceData();
  49257. }
  49258. }, {
  49259. key: "addStartMarker",
  49260. value: function addStartMarker(coordinates) {
  49261. coordinates && this.startMarker && this.startMarker.remove();
  49262. this.startMarker = this._createCustomMarker(_start.default, coordinates || this.orig, {
  49263. top: '-15px',
  49264. left: '3px',
  49265. width: '29px',
  49266. height: '30px'
  49267. });
  49268. }
  49269. }, {
  49270. key: "addDestMarker",
  49271. value: function addDestMarker(coordinates) {
  49272. coordinates && this.destMarker && this.destMarker.remove();
  49273. this.destMarker = this._createCustomMarker(_dest.default, coordinates || this.dest, {
  49274. top: '-15px',
  49275. left: '3px',
  49276. width: '29px',
  49277. height: '30px'
  49278. });
  49279. }
  49280. }, {
  49281. key: "_addMarker",
  49282. value: function _addMarker(features) {
  49283. var _this4 = this;
  49284. this.busMarkers = [];
  49285. features && features.forEach(function (feature) {
  49286. if (feature.properties.lineName) {
  49287. var coordinate = feature.geometry.coordinates[0];
  49288. var img = feature.properties.type === 'bus' ? _bus.default : _metro.default;
  49289. var marker = _this4._createCustomMarker(img, coordinate, {
  49290. top: '-8px',
  49291. left: '0px',
  49292. width: '24px',
  49293. height: '24px'
  49294. });
  49295. marker.setPopup(new _mapboxGlEnhance.default.Popup({
  49296. closeOnClick: true,
  49297. className: 'route-plan-popup'
  49298. }).setLngLat(coordinate).setHTML("<div class=\"tdt_popup_content\">\n <div class=\"info_container\" popupshow=\"true\">\n <div class=\"title\"><span title=\"".concat(feature.properties.stationStart.name, "\">").concat(feature.properties.stationStart.name, "</span></div>\n <div class=\"props\">\n <p ><span>").concat(feature.properties.direction, "</span></p>\n <p><span >").concat((0, _lang.geti18n)().t('tdtRoute.total')).concat(feature.properties.segmentStationCount).concat((0, _lang.geti18n)().t('tdtRoute.station'), "</span></p>\n <p ><span >").concat((0, _lang.geti18n)().t('tdtRoute.busEndTime'), "\uFF1A</span>\n <span>").concat(feature.properties.SEndTime, "</span></p>\n </div></div></div>")));
  49299. _this4.busMarkers.push(marker);
  49300. }
  49301. });
  49302. }
  49303. }, {
  49304. key: "_createCustomMarker",
  49305. value: function _createCustomMarker(imgUrl, coordinate, style) {
  49306. var el = document.createElement('div');
  49307. el.style.background = "url(".concat(imgUrl, ")");
  49308. el.style.top = style.top;
  49309. el.style.left = style.left;
  49310. el.style.width = style.width;
  49311. el.style.height = style.height;
  49312. return new _mapboxGlEnhance.default.Marker(el).setLngLat(coordinate).addTo(this.map);
  49313. }
  49314. }, {
  49315. key: "_addRouteLayer",
  49316. value: function _addRouteLayer(features) {
  49317. this.map.addSource(this.sourceName.tdtDrawRoutes, {
  49318. type: 'geojson',
  49319. data: features
  49320. });
  49321. this.map.addLayer({
  49322. id: 'routes-plan',
  49323. type: 'line',
  49324. source: this.sourceName.tdtDrawRoutes,
  49325. paint: {
  49326. 'line-width': 8,
  49327. 'line-color': 'rgb(51, 133, 255)',
  49328. 'line-opacity': 0.8
  49329. },
  49330. layout: {
  49331. 'line-cap': 'round'
  49332. },
  49333. filter: ['any', ['all', ['!has', 'hightLightFeture'], ['>', 'id', 0]], ['all', ['==', 'hightLightFeture', false], ['==', 'id', 0]]]
  49334. });
  49335. this.map.addLayer({
  49336. id: 'routes-plan-highlighted',
  49337. type: 'line',
  49338. source: this.sourceName.tdtDrawRoutes,
  49339. paint: {
  49340. 'line-width': 8,
  49341. 'line-color': 'rgb(254, 86, 24)',
  49342. 'line-opacity': 0.8
  49343. },
  49344. layout: {
  49345. 'line-cap': 'round'
  49346. },
  49347. filter: ['==', 'id', '']
  49348. }); // 起始点虚线
  49349. this.map.addLayer({
  49350. id: 'routes-plan-line-dot',
  49351. type: 'line',
  49352. source: this.sourceName.tdtDrawRoutes,
  49353. paint: {
  49354. 'line-width': 3,
  49355. 'line-color': 'rgb(8, 140, 40)',
  49356. 'line-opacity': 0.8,
  49357. 'line-dasharray': [0.6, 1.5]
  49358. },
  49359. layout: {
  49360. 'line-cap': 'round'
  49361. },
  49362. filter: ['all', ['==', 'id', 0], ['has', 'isDashed']]
  49363. });
  49364. }
  49365. }, {
  49366. key: "setHighlightRoute",
  49367. value: function setHighlightRoute(id, parentIndex) {
  49368. if (id || id === 0) {
  49369. var bounds = (0, _bbox.default)((0, _transformScale.default)(this.result.features ? this.result.features.features[id] : this.result[parentIndex].features.features[id], 1.7));
  49370. this.map.fitBounds([[bounds[0], bounds[1]], [bounds[2], bounds[3]]], {
  49371. maxZoom: 17
  49372. });
  49373. this.map.setFilter('routes-plan-highlighted', ['==', 'id', id]);
  49374. } else {
  49375. this.map.setFilter('routes-plan-highlighted', ['==', 'id', '']);
  49376. }
  49377. }
  49378. }, {
  49379. key: "_handleXmlData",
  49380. value: function _handleXmlData(xml) {
  49381. var _this5 = this;
  49382. var data = JSON.parse(_xmlJs.default.xml2json(xml, {
  49383. compact: true,
  49384. spaces: 4
  49385. }));
  49386. var result = data.result;
  49387. var routes = result.simple.item;
  49388. var routesInfo = [];
  49389. var features = [];
  49390. for (var a = result.routes.item, n = 0; n < a.length; n++) {
  49391. routesInfo.push(a[n].strguide._text);
  49392. }
  49393. routes.forEach(function (route, idx) {
  49394. var coordinates = _this5._handleCoordinate(route.streetLatLon._text);
  49395. route._attributes.strguide = {
  49396. strguide: route.strguide._text
  49397. };
  49398. var segmentNumber = route.segmentNumber._text;
  49399. if (segmentNumber.indexOf('-') > -1) {
  49400. segmentNumber = segmentNumber.split('-');
  49401. route._attributes.strguide.routeInfo = routesInfo.slice(segmentNumber[0], parseFloat(segmentNumber[1]) + 1);
  49402. } else {
  49403. route._attributes.strguide.routeInfo = [routesInfo[parseFloat(segmentNumber)]];
  49404. }
  49405. route._attributes.segmentNumber = route.segmentNumber._text;
  49406. route._attributes.id = idx + 1;
  49407. route._attributes.hightLightFeture = true;
  49408. var feature = {
  49409. type: 'Feature',
  49410. geometry: {
  49411. type: 'LineString',
  49412. coordinates: coordinates
  49413. },
  49414. properties: route._attributes
  49415. };
  49416. features.push(feature);
  49417. });
  49418. features.unshift({
  49419. type: 'Feature',
  49420. properties: {
  49421. id: 0,
  49422. hightLightFeture: false
  49423. },
  49424. geometry: {
  49425. type: 'LineString',
  49426. coordinates: this._handleCoordinate(result.routelatlon._text)
  49427. }
  49428. });
  49429. var results = {
  49430. distance: result.distance._text,
  49431. center: result.mapinfo.center._text.split(','),
  49432. scale: result.mapinfo.scale._text,
  49433. routesInfo: routesInfo,
  49434. start: this.orig,
  49435. dest: this.dest,
  49436. features: {
  49437. type: 'FeatureCollection',
  49438. features: features
  49439. }
  49440. };
  49441. return results;
  49442. }
  49443. }, {
  49444. key: "_handleBusLineData",
  49445. value: function _handleBusLineData(data) {
  49446. var _this6 = this;
  49447. var results = [];
  49448. var lines = data.results && data.results[0].lines || [];
  49449. lines.forEach(function (line) {
  49450. var lineName = line.lineName;
  49451. var segments = line.segments;
  49452. var feature = [];
  49453. var distance = 0;
  49454. var time = 0;
  49455. var count = 0;
  49456. var lineNames = [];
  49457. line.lineName.split('|').forEach(function (name) {
  49458. if (name.trim()) {
  49459. var type = name.indexOf('地铁') > -1 ? 'metro' : name.indexOf('路') > -1 || name.indexOf('巴士') > -1 ? 'bus' : 'walk';
  49460. lineNames.push({
  49461. name: name.trim(),
  49462. type: type
  49463. });
  49464. }
  49465. });
  49466. segments.forEach(function (segment, index) {
  49467. segment.segmentType !== 1 && count++;
  49468. var segmentLine = segment.segmentLine[0];
  49469. var linePoint = segmentLine.linePoint,
  49470. SEndTime = segmentLine.SEndTime,
  49471. direction = segmentLine.direction,
  49472. lineName = segmentLine.lineName,
  49473. segmentStationCount = segmentLine.segmentStationCount,
  49474. segmentDistance = segmentLine.segmentDistance,
  49475. segmentTime = segmentLine.segmentTime;
  49476. distance += segmentDistance || 0;
  49477. time += segmentTime || 0;
  49478. var type = !lineName ? 'walk' : lineName.indexOf('地铁') > -1 ? 'metro' : 'bus';
  49479. var properties = {
  49480. SEndTime: SEndTime,
  49481. direction: direction,
  49482. lineName: lineName,
  49483. segmentStationCount: segmentStationCount,
  49484. id: index,
  49485. type: type
  49486. };
  49487. !index && (properties.isDashed = true);
  49488. var coordinates = _this6._handleCoordinate(linePoint);
  49489. segment.stationStart.lonlat = _this6._handleCoordinate(segment.stationStart.lonlat);
  49490. segment.stationEnd.lonlat = _this6._handleCoordinate(segment.stationEnd.lonlat);
  49491. properties.stationStart = segment.stationStart;
  49492. properties.stationEnd = segment.stationEnd;
  49493. feature.push({
  49494. type: 'Feature',
  49495. geometry: {
  49496. type: 'LineString',
  49497. coordinates: coordinates
  49498. },
  49499. properties: properties
  49500. });
  49501. });
  49502. distance = (distance * 0.001).toFixed(2);
  49503. var hour = parseInt(time / 60);
  49504. var minutes = time % 60;
  49505. time = (0, _lang.geti18n)().t('tdtRoute.about');
  49506. hour && (time += "".concat(hour).concat((0, _lang.geti18n)().t('tdtRoute.hour')));
  49507. minutes && (time += "".concat(minutes).concat((0, _lang.geti18n)().t('tdtRoute.minutes')));
  49508. results.push({
  49509. features: {
  49510. type: 'FeatureCollection',
  49511. features: feature
  49512. },
  49513. lineName: lineName,
  49514. lineNames: lineNames,
  49515. distance: distance,
  49516. time: time,
  49517. switchTimes: count === 0 ? 0 : count - 1
  49518. });
  49519. });
  49520. return results;
  49521. }
  49522. }, {
  49523. key: "_handleCoordinate",
  49524. value: function _handleCoordinate(coordinatesString) {
  49525. var coordinates;
  49526. if (coordinatesString.indexOf(';') > -1) {
  49527. var latlng = coordinatesString.split(';');
  49528. coordinates = latlng.slice(0, latlng.length - 1);
  49529. coordinates.forEach(function (item, index) {
  49530. coordinates[index] = [parseFloat(item.split(',')[0]), parseFloat(item.split(',')[1])];
  49531. });
  49532. } else {
  49533. coordinatesString = coordinatesString.split(',');
  49534. coordinates = [parseFloat(coordinatesString[0]), parseFloat(coordinatesString[1])];
  49535. }
  49536. return coordinates;
  49537. }
  49538. }, {
  49539. key: "setHighlightIcon",
  49540. value: function setHighlightIcon(hotPointID) {
  49541. (0, _service.tdtSetHighlightIcon)(this.map, this.sourceName.tdtRoutePoints, hotPointID);
  49542. }
  49543. }, {
  49544. key: "_resetSearchSourceData",
  49545. value: function _resetSearchSourceData() {
  49546. (0, _service.resetSearchSourceData)(this.map, this.sourceName.tdtRoutePoints);
  49547. }
  49548. }, {
  49549. key: "_clearSearchResultLayer",
  49550. value: function _clearSearchResultLayer() {
  49551. (0, _service.clearSearchResultLayer)(this.map, this.sourceName.tdtRoutePoints);
  49552. }
  49553. }, {
  49554. key: "_addPoints",
  49555. value: function _addPoints(features) {
  49556. (0, _service.addPoints)(this.map, this.sourceName.tdtRoutePoints, features);
  49557. }
  49558. }]);
  49559. return TdtRouteViewModel;
  49560. }(_mapboxGlEnhance.default.Evented);
  49561. exports.default = TdtRouteViewModel;
  49562. /***/ }),
  49563. /***/ "9eb2":
  49564. /***/ (function(module, exports, __webpack_require__) {
  49565. "use strict";
  49566. var _interopRequireDefault = __webpack_require__("8e6d");
  49567. Object.defineProperty(exports, "__esModule", {
  49568. value: true
  49569. });
  49570. exports.default = void 0;
  49571. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  49572. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  49573. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  49574. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  49575. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  49576. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  49577. var _WebMapViewModel = _interopRequireDefault(__webpack_require__("6e42"));
  49578. /**
  49579. * @class LayerManageViewModel
  49580. * @description LayerManage viewModel.
  49581. * @param {Object} map - map实例对象。
  49582. * @fires layersUpdated - 图层管理
  49583. * @extends mapboxgl.Evented
  49584. */
  49585. var LayerManageViewModel =
  49586. /*#__PURE__*/
  49587. function (_mapboxgl$Evented) {
  49588. (0, _inherits2.default)(LayerManageViewModel, _mapboxgl$Evented);
  49589. function LayerManageViewModel() {
  49590. var _this;
  49591. (0, _classCallCheck2.default)(this, LayerManageViewModel);
  49592. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(LayerManageViewModel).call(this));
  49593. _this.cacheMaps = {};
  49594. _this.cacheIServerMaps = {};
  49595. _this.readyNext = true; // 是否可以开始实例化下一个vm
  49596. _this.mapQuene = [];
  49597. return _this;
  49598. }
  49599. (0, _createClass2.default)(LayerManageViewModel, [{
  49600. key: "setMap",
  49601. value: function setMap(mapInfo) {
  49602. var map = mapInfo.map,
  49603. mapTarget = mapInfo.mapTarget;
  49604. this.map = map;
  49605. this.mapTarget = mapTarget;
  49606. }
  49607. }, {
  49608. key: "addLayer",
  49609. value: function addLayer() {
  49610. var _this2 = this;
  49611. var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  49612. nodeKey = _ref.nodeKey,
  49613. serverUrl = _ref.serverUrl,
  49614. mapId = _ref.mapId,
  49615. _ref$withCredentials = _ref.withCredentials,
  49616. withCredentials = _ref$withCredentials === void 0 ? false : _ref$withCredentials,
  49617. layerFilter = _ref.layerFilter;
  49618. // 通过唯一key来判断是否已经new了实例,用来过滤选中后父节点再选中导致的重复new实例
  49619. if (this.cacheMaps[nodeKey]) {
  49620. return;
  49621. }
  49622. if (!this.readyNext) {
  49623. this.mapQuene.push({
  49624. nodeKey: nodeKey,
  49625. mapId: mapId,
  49626. serverUrl: serverUrl,
  49627. withCredentials: withCredentials,
  49628. layerFilter: layerFilter
  49629. });
  49630. return;
  49631. }
  49632. this.webMapViewModel = new _WebMapViewModel.default(mapId, {
  49633. serverUrl: serverUrl,
  49634. withCredentials: withCredentials,
  49635. target: this.mapTarget
  49636. }, {}, this.map, layerFilter); // 设置 readyNext 为 false
  49637. this.readyNext = false;
  49638. this.webMapViewModel.on({
  49639. addlayerssucceeded: function addlayerssucceeded(e) {
  49640. // 设置 readyNext 为 true
  49641. // 判断 是否缓存数组里有值,取出最新的,调用this.addLayer();
  49642. _this2.handleNextMap();
  49643. }
  49644. }); // this.webMapViewModel.addWebMap(layerFilter);
  49645. this.cacheMaps[nodeKey] = this.webMapViewModel;
  49646. }
  49647. }, {
  49648. key: "handleNextMap",
  49649. value: function handleNextMap() {
  49650. this.readyNext = true;
  49651. if (this.mapQuene.length) {
  49652. var _this$mapQuene$shift = this.mapQuene.shift(),
  49653. nodeKey = _this$mapQuene$shift.nodeKey,
  49654. serverUrl = _this$mapQuene$shift.serverUrl,
  49655. mapId = _this$mapQuene$shift.mapId,
  49656. withCredentials = _this$mapQuene$shift.withCredentials,
  49657. layerFilter = _this$mapQuene$shift.layerFilter;
  49658. this.addLayer({
  49659. nodeKey: nodeKey,
  49660. serverUrl: serverUrl,
  49661. mapId: mapId,
  49662. withCredentials: withCredentials,
  49663. layerFilter: layerFilter
  49664. });
  49665. }
  49666. }
  49667. }, {
  49668. key: "addIServerLayer",
  49669. value: function addIServerLayer(url, nodeKey) {
  49670. if (this.cacheIServerMaps[nodeKey]) {
  49671. return;
  49672. }
  49673. var epsgCode = this.map.getCRS().epsgCode.split(':')[1];
  49674. this.map.addLayer({
  49675. id: nodeKey,
  49676. type: 'raster',
  49677. source: {
  49678. type: 'raster',
  49679. tiles: [url],
  49680. tileSize: 256,
  49681. rasterSource: 'iserver',
  49682. prjCoordSys: {
  49683. epsgCode: epsgCode
  49684. }
  49685. },
  49686. minzoom: 0,
  49687. maxzoom: 22
  49688. });
  49689. this.cacheIServerMaps[nodeKey] = true;
  49690. }
  49691. }, {
  49692. key: "removeLayer",
  49693. value: function removeLayer(nodeKey) {
  49694. this.handleNextMap();
  49695. if (this.mapQuene.length) {
  49696. var index = this.mapQuene.findIndex(function (map) {
  49697. return map.nodeKey === nodeKey;
  49698. });
  49699. this.mapQuene.splice(index, 1);
  49700. }
  49701. if (this.cacheMaps[nodeKey]) {
  49702. this.cacheMaps[nodeKey].cleanLayers();
  49703. delete this.cacheMaps[nodeKey];
  49704. }
  49705. }
  49706. }, {
  49707. key: "removeIServerLayer",
  49708. value: function removeIServerLayer(nodeKey) {
  49709. if (this.cacheIServerMaps[nodeKey]) {
  49710. delete this.cacheIServerMaps[nodeKey];
  49711. }
  49712. if (this.map && this.map.getLayer(nodeKey)) {
  49713. this.map.removeLayer(nodeKey);
  49714. this.map.removeSource(nodeKey);
  49715. }
  49716. }
  49717. }, {
  49718. key: "eachNode",
  49719. value: function eachNode(datas, callback) {
  49720. for (var i = 0; i < datas.length; i++) {
  49721. callback(datas[i], datas);
  49722. if (datas[i].children) {
  49723. this.eachNode(datas[i].children, callback);
  49724. }
  49725. }
  49726. return datas;
  49727. }
  49728. }, {
  49729. key: "removeLayerLoop",
  49730. value: function removeLayerLoop(data) {
  49731. var _this3 = this;
  49732. if (data.mapInfo) {
  49733. if (data.mapInfo.mapId) {
  49734. this.removeLayer(data.key);
  49735. } else {
  49736. this.removeIServerLayer(data.key);
  49737. }
  49738. }
  49739. if (data.children && data.children.length) {
  49740. data.children.forEach(function (node, index) {
  49741. _this3.removeLayerLoop(data.children[index]);
  49742. });
  49743. }
  49744. }
  49745. }, {
  49746. key: "removed",
  49747. value: function removed() {
  49748. this.cacheMaps = {};
  49749. this.cacheIServerMaps = {};
  49750. }
  49751. }]);
  49752. return LayerManageViewModel;
  49753. }(_mapboxGlEnhance.default.Evented);
  49754. var _default = LayerManageViewModel;
  49755. exports.default = _default;
  49756. /***/ }),
  49757. /***/ "9f21":
  49758. /***/ (function(module, exports, __webpack_require__) {
  49759. "use strict";
  49760. var _interopRequireDefault = __webpack_require__("8e6d");
  49761. Object.defineProperty(exports, "__esModule", {
  49762. value: true
  49763. });
  49764. exports.default = void 0;
  49765. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  49766. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  49767. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  49768. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  49769. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  49770. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  49771. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  49772. var _vuePropertyDecorator = __webpack_require__("e22c");
  49773. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  49774. var c = arguments.length,
  49775. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  49776. d;
  49777. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  49778. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  49779. }
  49780. return c > 3 && r && Object.defineProperty(target, key, r), r;
  49781. };
  49782. var MAP_EVENT_NAMES = ['resize', 'webglcontextlost', 'webglcontextrestored', 'remove', 'contextmenu', 'dblclick', 'click', 'touchcancel', 'touchmove', 'touchend', 'touchstart', 'dataloading', 'mousemove', 'mouseup', 'mousedown', 'mouseenter', 'mouseleave', 'mouseover', 'mouseout', 'sourcedataloading', 'error', 'data', 'styledata', 'sourcedata', 'styledataloading', 'styleimagemissing', 'movestart', 'moveend', 'move', 'render', 'zoom', 'zoomstart', 'zoomend', 'boxzoomstart', 'boxzoomcancel', 'boxzoomend', 'rotate', 'rotatestart', 'rotateend', 'dragend', 'drag', 'dragstart', 'pitch', 'pitchend', 'pitchstart', 'idle', 'wheel'];
  49783. var MapEvents =
  49784. /*#__PURE__*/
  49785. function (_Vue) {
  49786. (0, _inherits2.default)(MapEvents, _Vue);
  49787. function MapEvents() {
  49788. (0, _classCallCheck2.default)(this, MapEvents);
  49789. return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(MapEvents).apply(this, arguments));
  49790. }
  49791. (0, _createClass2.default)(MapEvents, [{
  49792. key: "mapEventCallback",
  49793. value: function mapEventCallback(event) {
  49794. var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  49795. this.emitMapEvent(event.type, Object.assign({
  49796. mapboxEvent: event
  49797. }, data));
  49798. }
  49799. }, {
  49800. key: "bindMapEvents",
  49801. value: function bindMapEvents() {
  49802. var _this = this;
  49803. Object.keys(this.$listeners).forEach(function (eventName) {
  49804. if (MAP_EVENT_NAMES.includes(eventName)) {
  49805. _this.bindMapEvent(eventName, _this.mapEventCallback.bind(_this));
  49806. }
  49807. });
  49808. }
  49809. }, {
  49810. key: "emitMapEvent",
  49811. value: function emitMapEvent(name) {
  49812. var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  49813. this.$emit(name, Object.assign({
  49814. map: this.map,
  49815. component: this
  49816. }, data));
  49817. }
  49818. }, {
  49819. key: "bindMapEvent",
  49820. value: function bindMapEvent(eventName, eventCallback) {
  49821. this.map.on(eventName, eventCallback);
  49822. }
  49823. }]);
  49824. return MapEvents;
  49825. }(_vue.default);
  49826. MapEvents = __decorate([_vuePropertyDecorator.Component], MapEvents);
  49827. var _default = MapEvents;
  49828. exports.default = _default;
  49829. /***/ }),
  49830. /***/ "9f50":
  49831. /***/ (function(module, exports, __webpack_require__) {
  49832. "use strict";
  49833. var _interopRequireDefault = __webpack_require__("8e6d");
  49834. var _interopRequireWildcard = __webpack_require__("16ed");
  49835. Object.defineProperty(exports, "__esModule", {
  49836. value: true
  49837. });
  49838. Object.defineProperty(exports, "EchartsDataService", {
  49839. enumerable: true,
  49840. get: function get() {
  49841. return _EchartsDataService.default;
  49842. }
  49843. });
  49844. Object.defineProperty(exports, "iPortalDataService", {
  49845. enumerable: true,
  49846. get: function get() {
  49847. return _iPortalDataService.default;
  49848. }
  49849. });
  49850. Object.defineProperty(exports, "iServerRestService", {
  49851. enumerable: true,
  49852. get: function get() {
  49853. return _iServerRestService.default;
  49854. }
  49855. });
  49856. exports.Common = void 0;
  49857. var Common = _interopRequireWildcard(__webpack_require__("1448"));
  49858. exports.Common = Common;
  49859. var _EchartsDataService = _interopRequireDefault(__webpack_require__("50c6"));
  49860. var _iPortalDataService = _interopRequireDefault(__webpack_require__("9d60"));
  49861. var _iServerRestService = _interopRequireDefault(__webpack_require__("e340"));
  49862. /***/ }),
  49863. /***/ "a006":
  49864. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  49865. "use strict";
  49866. __webpack_require__.r(__webpack_exports__);
  49867. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Query_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("5f24");
  49868. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Query_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Query_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  49869. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Query_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Query_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  49870. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Query_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  49871. /***/ }),
  49872. /***/ "a00e":
  49873. /***/ (function(module, exports) {
  49874. module.exports = "data:image/png;base64,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"
  49875. /***/ }),
  49876. /***/ "a097":
  49877. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  49878. "use strict";
  49879. __webpack_require__.r(__webpack_exports__);
  49880. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RasterTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("1498");
  49881. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RasterTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RasterTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  49882. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RasterTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RasterTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  49883. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RasterTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  49884. /***/ }),
  49885. /***/ "a11f":
  49886. /***/ (function(module, exports, __webpack_require__) {
  49887. "use strict";
  49888. var _interopRequireDefault = __webpack_require__("8e6d");
  49889. Object.defineProperty(exports, "__esModule", {
  49890. value: true
  49891. });
  49892. exports.default = void 0;
  49893. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  49894. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  49895. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  49896. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  49897. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  49898. var _Marker2 = _interopRequireDefault(__webpack_require__("4361"));
  49899. var RotatingApertureMarker =
  49900. /*#__PURE__*/
  49901. function (_Marker) {
  49902. (0, _inherits2.default)(RotatingApertureMarker, _Marker);
  49903. function RotatingApertureMarker(features) {
  49904. var _this;
  49905. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  49906. (0, _classCallCheck2.default)(this, RotatingApertureMarker);
  49907. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(RotatingApertureMarker).call(this, features, options));
  49908. _this.features && _this._createMarker();
  49909. return _this;
  49910. }
  49911. (0, _createClass2.default)(RotatingApertureMarker, [{
  49912. key: "setMarkersWidth",
  49913. value: function setMarkersWidth(width) {
  49914. this.options.width = width;
  49915. if (!this.options.width || this.options.width < 40) {
  49916. return;
  49917. }
  49918. var dotsMarker = document.getElementsByClassName('sm-component-animate-marker--rotating-aperture');
  49919. for (var i = 0; i < dotsMarker.length; i++) {
  49920. dotsMarker[i].style.setProperty('--container-width', "".concat(this.options.width, "px"));
  49921. var dots1 = dotsMarker[i].children[0];
  49922. var dots2 = dotsMarker[i].children[1];
  49923. var dots3 = dotsMarker[i].children[2];
  49924. dots1.setAttribute('style', this._getDotsStyleObj(this.options.width - 32));
  49925. dots2.setAttribute('style', this._getDotsStyleObj(this.options.width - 16));
  49926. dots3.setAttribute('style', this._getDotsStyleObj(this.options.width));
  49927. }
  49928. }
  49929. }, {
  49930. key: "setMarkersColors",
  49931. value: function setMarkersColors(colors) {
  49932. this.options.colors = colors;
  49933. if (colors && colors.length && colors.length > 0) {
  49934. var dotsMarker = document.getElementsByClassName('sm-component-animate-marker--rotating-aperture');
  49935. for (var i = 0; i < dotsMarker.length; i++) {
  49936. var style = dotsMarker[i].style;
  49937. style.setProperty('--light-color', this.options.colors[1]);
  49938. style.setProperty('--color', this.options.colors[0]);
  49939. style.setProperty('--line-color', this._getColorWithOpacity(this.options.colors[0], 0.2));
  49940. }
  49941. }
  49942. }
  49943. }, {
  49944. key: "_createMarker",
  49945. value: function _createMarker() {
  49946. var _this2 = this;
  49947. this.features.features.forEach(function (point) {
  49948. var width = _this2.options.width && _this2.options.width >= 40 ? _this2.options.width : 50;
  49949. var markerContainer = document.createElement('div');
  49950. markerContainer.className = 'sm-component-animate-marker--rotating-aperture';
  49951. var childElements = _this2._createMakerElement(3, 'div', ['sm-component-animate-marker__dots', 'sm-component-animate-marker__dots']);
  49952. childElements.forEach(function (element, index) {
  49953. var elementWidth;
  49954. index === 0 && (elementWidth = width - 32);
  49955. index === 1 && (elementWidth = width - 16);
  49956. index === 2 && (elementWidth = width);
  49957. element.setAttribute('style', _this2._getDotsStyleObj(elementWidth));
  49958. markerContainer.appendChild(element);
  49959. });
  49960. var nameContainer = _this2._getTextContainer(point, 'rotating-aperture-name');
  49961. markerContainer.appendChild(nameContainer);
  49962. if (_this2.options.colors && _this2.options.colors.length && _this2.options.colors.length > 0 && _this2.options.colors[0].indexOf('rgb') > -1) {
  49963. markerContainer.style.setProperty('--color', _this2.options.colors[0]);
  49964. markerContainer.style.setProperty('--line-color', _this2._getColorWithOpacity(_this2.options.colors[0], 0.2));
  49965. markerContainer.style.setProperty('--light-color', _this2.options.colors[1]);
  49966. }
  49967. markerContainer.style.setProperty('--container-width', width + 'px');
  49968. _this2.markersElement.push(markerContainer);
  49969. }, this);
  49970. }
  49971. }, {
  49972. key: "_createMakerElement",
  49973. value: function _createMakerElement(length, type, classNames) {
  49974. var markerElements = [];
  49975. for (var i = 1; i < length + 1; i++) {
  49976. var element = document.createElement(type);
  49977. element.className = "".concat(classNames[0], "-0").concat(i, " ").concat(classNames[1]);
  49978. markerElements.push(element);
  49979. }
  49980. return markerElements;
  49981. }
  49982. }, {
  49983. key: "_getDotsStyleObj",
  49984. value: function _getDotsStyleObj(width) {
  49985. return "--dots-width: ".concat(width, "px;\n --dots-height: ").concat(width, "px;\n --dots-box-shadow-x: ").concat(width / 2 + 6, "px;\n --dots-box-shadow-x-negative: -").concat(width / 2 + 6, "px;\n --dots-box-shadow-radius1: ").concat(width / 2 - 2, "px;\n --dots-box-shadow-radius1-negative: -").concat(width / 2 - 2, "px;\n --dots-box-shadow-radius2: ").concat(width / 2 - 3, "px;\n --dots-box-shadow-radius2-negative: -").concat(width / 2 - 3, "px;");
  49986. }
  49987. }]);
  49988. return RotatingApertureMarker;
  49989. }(_Marker2.default);
  49990. exports.default = RotatingApertureMarker;
  49991. /***/ }),
  49992. /***/ "a124":
  49993. /***/ (function(module, exports, __webpack_require__) {
  49994. "use strict";
  49995. var _interopRequireDefault = __webpack_require__("8e6d");
  49996. Object.defineProperty(exports, "__esModule", {
  49997. value: true
  49998. });
  49999. exports.default = void 0;
  50000. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  50001. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  50002. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  50003. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  50004. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  50005. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  50006. /**
  50007. * @class LegendViewModel
  50008. * @description Legend viewModel.
  50009. * @param {Object} webmap - webmap实例对象。
  50010. * @extends mapboxgl.Evented
  50011. */
  50012. var LegendViewModel =
  50013. /*#__PURE__*/
  50014. function (_mapboxgl$Evented) {
  50015. (0, _inherits2.default)(LegendViewModel, _mapboxgl$Evented);
  50016. function LegendViewModel(webmap) {
  50017. var _this;
  50018. (0, _classCallCheck2.default)(this, LegendViewModel);
  50019. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(LegendViewModel).call(this, webmap));
  50020. _this.webmap = webmap;
  50021. _this.sourceListModel = _this.webmap ? _this.webmap.getSourceListModel : {};
  50022. return _this;
  50023. }
  50024. (0, _createClass2.default)(LegendViewModel, [{
  50025. key: "getStyle",
  50026. value: function getStyle(layerName) {
  50027. return this.sourceListModel && this.sourceListModel.getLegendStyle(layerName);
  50028. }
  50029. }]);
  50030. return LegendViewModel;
  50031. }(_mapboxGlEnhance.default.Evented);
  50032. var _default = LegendViewModel;
  50033. exports.default = _default;
  50034. /***/ }),
  50035. /***/ "a142":
  50036. /***/ (function(module, exports, __webpack_require__) {
  50037. "use strict";
  50038. var _interopRequireDefault = __webpack_require__("8e6d");
  50039. Object.defineProperty(exports, "__esModule", {
  50040. value: true
  50041. });
  50042. exports.default = void 0;
  50043. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  50044. var _timer = _interopRequireDefault(__webpack_require__("8156"));
  50045. var _RestService = _interopRequireDefault(__webpack_require__("5bf3"));
  50046. var _CountTo = _interopRequireDefault(__webpack_require__("4156"));
  50047. //
  50048. //
  50049. //
  50050. //
  50051. //
  50052. //
  50053. //
  50054. //
  50055. //
  50056. //
  50057. //
  50058. //
  50059. //
  50060. //
  50061. //
  50062. //
  50063. //
  50064. //
  50065. //
  50066. //
  50067. //
  50068. //
  50069. //
  50070. //
  50071. //
  50072. //
  50073. //
  50074. //
  50075. //
  50076. //
  50077. //
  50078. //
  50079. //
  50080. //
  50081. var _default2 = {
  50082. name: 'SmIndicator',
  50083. components: {
  50084. countTo: _CountTo.default
  50085. },
  50086. mixins: [_theme.default, _timer.default],
  50087. props: {
  50088. title: {
  50089. type: String,
  50090. default: function _default() {
  50091. return this.$t('indicator.title');
  50092. }
  50093. },
  50094. unit: {
  50095. type: String,
  50096. default: function _default() {
  50097. return this.$t('indicator.unit');
  50098. }
  50099. },
  50100. indicatorColor: {
  50101. type: String
  50102. },
  50103. // title/unit
  50104. textFontSize: {
  50105. type: [String, Number]
  50106. },
  50107. fontSize: {
  50108. type: [String, Number]
  50109. },
  50110. fontWeight: {
  50111. type: [String, Number],
  50112. default: 'border'
  50113. },
  50114. num: {
  50115. type: [Number, String],
  50116. default: 0
  50117. },
  50118. url: {
  50119. type: String
  50120. },
  50121. proxy: {
  50122. type: String
  50123. },
  50124. animated: {
  50125. type: Boolean,
  50126. default: false
  50127. },
  50128. duration: {
  50129. type: [Number, String],
  50130. default: 1000
  50131. },
  50132. decimals: {
  50133. type: Number,
  50134. default: -1
  50135. },
  50136. mode: {
  50137. type: String,
  50138. default: 'vertical',
  50139. validator: function validator(val) {
  50140. return ['vertical', 'horizontal'];
  50141. }
  50142. },
  50143. separator: {
  50144. type: String,
  50145. default: ','
  50146. },
  50147. numSpacing: {
  50148. type: Number,
  50149. default: 0
  50150. },
  50151. numBackground: {
  50152. type: Object,
  50153. default: function _default() {
  50154. return {
  50155. color: 'rgba(0, 0, 0, 0)',
  50156. image: '',
  50157. padding: 0
  50158. };
  50159. }
  50160. },
  50161. separatorBackground: {
  50162. type: Boolean,
  50163. default: false
  50164. },
  50165. showTitleUnit: {
  50166. type: Boolean,
  50167. default: true
  50168. },
  50169. titleField: String,
  50170. numField: String,
  50171. unitField: String,
  50172. thresholdsStyle: Array
  50173. },
  50174. data: function data() {
  50175. return {
  50176. indicatorColorData: '',
  50177. titleData: this.title,
  50178. unitData: this.unit,
  50179. numData: 0,
  50180. startData: 0,
  50181. indicatorNum: 0
  50182. };
  50183. },
  50184. computed: {
  50185. unit_titleStyle: function unit_titleStyle() {
  50186. return {
  50187. fontSize: this.textFontSize || parseFloat(this.fontSize) * 0.66 + this.fontUnit,
  50188. fontWeight: this.fontWeight
  50189. };
  50190. },
  50191. fontUnit: function fontUnit() {
  50192. var reg = /\d+(\.\d+)?([a-z]+)/gi;
  50193. var fontUnit = this.fontSize ? this.fontSize.replace(reg, '$2') : '';
  50194. return fontUnit;
  50195. },
  50196. indicatorStyle: function indicatorStyle() {
  50197. var _this = this;
  50198. var color = this.indicatorColorData;
  50199. if (!isNaN(this.indicatorNum) && this.thresholdsStyle) {
  50200. var matchStyle = this.thresholdsStyle.find(function (item) {
  50201. var status;
  50202. if (item.min) {
  50203. status = +_this.indicatorNum >= +item.min;
  50204. }
  50205. if (item.max) {
  50206. status = status === void 0 ? true : status;
  50207. status = status && +_this.indicatorNum <= +item.max;
  50208. }
  50209. return status;
  50210. });
  50211. if (matchStyle) {
  50212. color = matchStyle.color;
  50213. }
  50214. }
  50215. var style = {
  50216. color: color
  50217. };
  50218. typeof this.indicatorNum === 'string' && (style.fontSize = parseFloat(this.fontSize) + this.fontUnit);
  50219. return style;
  50220. },
  50221. direction: function direction() {
  50222. return {
  50223. vertical: 'column',
  50224. horizontal: 'row'
  50225. }[this.mode];
  50226. },
  50227. calDecimals: function calDecimals() {
  50228. if (this.decimals > 0) {
  50229. return this.decimals;
  50230. }
  50231. if (this.numData.toString().split('.')[1]) {
  50232. return this.numData.toString().split('.')[1].length;
  50233. }
  50234. return 0;
  50235. }
  50236. },
  50237. watch: {
  50238. url: {
  50239. handler: function handler(val) {
  50240. if (val) {
  50241. this.getData();
  50242. } else {
  50243. this.unitData = this.unit;
  50244. this.changeNumData(this.num);
  50245. this.titleData = this.title;
  50246. this.fetchProperties = null;
  50247. }
  50248. },
  50249. immediate: true
  50250. },
  50251. indicatorColor: function indicatorColor(val) {
  50252. this.indicatorColorData = val;
  50253. },
  50254. proxy: function proxy() {
  50255. this.restService && this.restService.setProxy(this.proxy);
  50256. if (this.url) {
  50257. this.getData();
  50258. }
  50259. }
  50260. },
  50261. mounted: function mounted() {
  50262. var _this2 = this;
  50263. this.$on('theme-style-changed', function () {
  50264. _this2.indicatorColorData = _this2.getColor(0);
  50265. });
  50266. this.indicatorColorData = this.indicatorColor || this.getColor(0);
  50267. this.partsOfPropsWatcher();
  50268. },
  50269. beforeDestroy: function beforeDestroy() {
  50270. this.restService && this.restService.remove('getdatasucceeded');
  50271. },
  50272. methods: {
  50273. partsOfPropsWatcher: function partsOfPropsWatcher() {
  50274. var _this3 = this;
  50275. var propsFields = ['title', 'unit', 'num', 'titleField', 'unitField', 'numField'];
  50276. propsFields.forEach(function (props) {
  50277. _this3.$watch(props, function (next) {
  50278. switch (props) {
  50279. case 'title':
  50280. this.titleData = next;
  50281. break;
  50282. case 'titleField':
  50283. if (this.fetchProperties && this.fetchProperties.hasOwnProperty(next)) {
  50284. this.titleData = this.fetchProperties[this.titleField];
  50285. } else {
  50286. this.titleData = this.title;
  50287. }
  50288. break;
  50289. case 'unit':
  50290. this.unitData = next;
  50291. break;
  50292. case 'unitField':
  50293. if (this.fetchProperties && this.fetchProperties.hasOwnProperty(next)) {
  50294. this.unitData = this.fetchProperties[this.unitField];
  50295. } else {
  50296. this.unitData = this.unit;
  50297. }
  50298. break;
  50299. case 'num':
  50300. this.changeNumData(next);
  50301. break;
  50302. case 'numField':
  50303. if (this.fetchProperties && this.fetchProperties.hasOwnProperty(next)) {
  50304. this.changeNumData(this.fetchProperties[this.numField]);
  50305. } else {
  50306. this.changeNumData(this.num);
  50307. }
  50308. break;
  50309. }
  50310. });
  50311. });
  50312. },
  50313. isNumber: function isNumber(str) {
  50314. return /^\d+$/.test(str);
  50315. },
  50316. timing: function timing() {
  50317. this.getData();
  50318. },
  50319. fetchData: function fetchData(_ref) {
  50320. var features = _ref.features;
  50321. if (features && !!features.length) {
  50322. var properties = features[0].properties;
  50323. this.fetchProperties = properties;
  50324. this.unitData = properties.hasOwnProperty(this.unitField) ? properties[this.unitField] : this.unit;
  50325. properties.hasOwnProperty(this.numField) ? this.changeNumData(properties[this.numField]) : this.changeNumData(this.num);
  50326. this.titleData = properties.hasOwnProperty(this.titleField) ? properties[this.titleField] : this.title;
  50327. }
  50328. },
  50329. getData: function getData() {
  50330. this.getRestService().getData(this.url);
  50331. },
  50332. changeNumData: function changeNumData(newData) {
  50333. var startData = this.animated ? +this.numData : +newData;
  50334. this.startData = isNaN(startData) ? 0 : startData;
  50335. this.numData = +newData;
  50336. this.indicatorNum = newData;
  50337. },
  50338. getRestService: function getRestService() {
  50339. if (!this.restService) {
  50340. this.restService = new _RestService.default({
  50341. proxy: this.proxy
  50342. });
  50343. this.restService.on({
  50344. getdatasucceeded: this.fetchData
  50345. });
  50346. }
  50347. return this.restService;
  50348. }
  50349. }
  50350. };
  50351. exports.default = _default2;
  50352. /***/ }),
  50353. /***/ "a1ea":
  50354. /***/ (function(module, exports, __webpack_require__) {
  50355. "use strict";
  50356. var _interopRequireDefault = __webpack_require__("8e6d");
  50357. Object.defineProperty(exports, "__esModule", {
  50358. value: true
  50359. });
  50360. exports.default = void 0;
  50361. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  50362. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  50363. var _DeckglLayerViewModel = _interopRequireDefault(__webpack_require__("dbea"));
  50364. var LAYER_TYPE_ID_LIST = ['scatter-plot', 'path-layer', 'polygon-layer', 'arc-layer', 'hexagon-layer', 'screen-grid-layer'];
  50365. var _default2 = {
  50366. name: 'SmDeckglLayer',
  50367. mixins: [_mapGetter.default, _layer.default],
  50368. props: {
  50369. layerType: {
  50370. type: String,
  50371. required: true,
  50372. validator: function validator(layerType) {
  50373. var matchIndex = LAYER_TYPE_ID_LIST.findIndex(function (item) {
  50374. return item === layerType;
  50375. });
  50376. return matchIndex > -1;
  50377. }
  50378. },
  50379. options: {
  50380. type: Object,
  50381. default: function _default() {
  50382. return {
  50383. data: []
  50384. };
  50385. }
  50386. }
  50387. },
  50388. watch: {
  50389. options: {
  50390. handler: function handler(val) {
  50391. this.viewModel && this.viewModel.setOptions(val);
  50392. },
  50393. deep: true
  50394. },
  50395. layerType: function layerType(val) {
  50396. this.viewModel && this.viewModel.setLayerType(val);
  50397. }
  50398. },
  50399. created: function created() {
  50400. var _this = this;
  50401. var matchIndex = LAYER_TYPE_ID_LIST.findIndex(function (item) {
  50402. return item === _this.layerType;
  50403. });
  50404. if (matchIndex > -1) {
  50405. this.viewModel = new _DeckglLayerViewModel.default(this.$props);
  50406. }
  50407. },
  50408. render: function render() {}
  50409. };
  50410. exports.default = _default2;
  50411. /***/ }),
  50412. /***/ "a2ee":
  50413. /***/ (function(module, exports, __webpack_require__) {
  50414. "use strict";
  50415. var _interopRequireDefault = __webpack_require__("8e6d");
  50416. Object.defineProperty(exports, "__esModule", {
  50417. value: true
  50418. });
  50419. exports.default = void 0;
  50420. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  50421. var _timer = _interopRequireDefault(__webpack_require__("8156"));
  50422. var _thirdService = _interopRequireDefault(__webpack_require__("c51e"));
  50423. //
  50424. //
  50425. //
  50426. //
  50427. //
  50428. //
  50429. //
  50430. //
  50431. //
  50432. var _default = {
  50433. name: 'SmText',
  50434. mixins: [_theme.default, _timer.default, _thirdService.default],
  50435. props: {
  50436. fontStyle: {
  50437. type: Object
  50438. },
  50439. title: {
  50440. type: String
  50441. },
  50442. href: {
  50443. type: String,
  50444. default: ''
  50445. },
  50446. target: {
  50447. type: String,
  50448. default: '_self'
  50449. }
  50450. },
  50451. data: function data() {
  50452. return {
  50453. finalValue: this.title
  50454. };
  50455. },
  50456. computed: {
  50457. customStyle: function customStyle() {
  50458. var style = Object.assign({}, this.fontStyle);
  50459. if (style.textAlign && !style.justifyContent) {
  50460. var textAlign = style.textAlign;
  50461. style.justifyContent = textAlign === 'left' ? 'flex-start' : textAlign === 'right' ? 'flex-end' : 'center';
  50462. delete style.textAlign;
  50463. }
  50464. return style;
  50465. }
  50466. },
  50467. watch: {
  50468. title: function title(val) {
  50469. this.finalValue = val;
  50470. }
  50471. },
  50472. beforeDestroy: function beforeDestroy() {
  50473. this.restService && this.restService.remove('getdatasucceeded');
  50474. },
  50475. methods: {
  50476. timing: function timing() {
  50477. this.getData();
  50478. }
  50479. }
  50480. };
  50481. exports.default = _default;
  50482. /***/ }),
  50483. /***/ "a440":
  50484. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  50485. "use strict";
  50486. __webpack_require__.r(__webpack_exports__);
  50487. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtMapSwitcher_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f00b");
  50488. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtMapSwitcher_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtMapSwitcher_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  50489. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtMapSwitcher_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtMapSwitcher_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  50490. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtMapSwitcher_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  50491. /***/ }),
  50492. /***/ "a51f":
  50493. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  50494. "use strict";
  50495. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/image/Image.vue?vue&type=template&id=3aa6b84a&
  50496. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-image",style:([_vm.getBackgroundStyle, _vm.getTextColorStyle])},[_c('a',{class:['sm-component-image__link', _vm.realHref ? '': 'sm-component-image__noLink'],attrs:{"href":_vm.realHref,"target":_vm.target}},[(_vm.src)?_c('div',{staticClass:"sm-component-image__content",style:([_vm.repeatStyle,_vm.imgUrl])}):_c('i',{staticClass:"sm-components-icons-x-bmp sm-component-image__defaultImg"})])])}
  50497. var staticRenderFns = []
  50498. // CONCATENATED MODULE: ./src/common/image/Image.vue?vue&type=template&id=3aa6b84a&
  50499. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  50500. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  50501. /***/ }),
  50502. /***/ "a55c":
  50503. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  50504. "use strict";
  50505. __webpack_require__.r(__webpack_exports__);
  50506. /* harmony import */ var _LinesResult_vue_vue_type_template_id_cbe68680___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3e9b");
  50507. /* harmony import */ var _LinesResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("aef2");
  50508. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _LinesResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _LinesResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  50509. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  50510. /* normalize component */
  50511. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  50512. _LinesResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  50513. _LinesResult_vue_vue_type_template_id_cbe68680___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  50514. _LinesResult_vue_vue_type_template_id_cbe68680___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  50515. false,
  50516. null,
  50517. null,
  50518. null
  50519. )
  50520. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  50521. /***/ }),
  50522. /***/ "a587":
  50523. /***/ (function(module, exports) {
  50524. module.exports = __WEBPACK_EXTERNAL_MODULE_a587__;
  50525. /***/ }),
  50526. /***/ "a759":
  50527. /***/ (function(module) {
  50528. module.exports = JSON.parse("{\"border1\":{\"type\":\"1\",\"borderWidth\":[12,12,12,12],\"borderEdge\":{\"top\":12,\"left\":12,\"right\":12,\"bottom\":12}},\"border2\":{\"type\":\"2\",\"borderWidth\":[12,12,12,12],\"borderEdge\":{\"top\":12,\"left\":12,\"right\":12,\"bottom\":12}},\"border3\":{\"type\":\"3\",\"borderWidth\":[19,19,19,19],\"borderEdge\":{\"top\":19,\"left\":19,\"right\":19,\"bottom\":19}},\"border4\":{\"type\":\"4\",\"borderWidth\":[20,40,20,40],\"borderEdge\":{\"top\":20,\"left\":20,\"right\":20,\"bottom\":20}},\"border5\":{\"type\":\"5\",\"borderWidth\":[12,135,12,160],\"borderEdge\":{\"top\":12,\"left\":12,\"right\":12,\"bottom\":12}},\"border6\":{\"type\":\"6\",\"borderWidth\":[12,12,12,12],\"borderEdge\":{\"top\":12,\"left\":12,\"right\":12,\"bottom\":12}},\"border7\":{\"type\":\"7\",\"borderWidth\":[88,138,134,130],\"borderEdge\":{\"top\":30,\"left\":30,\"right\":32,\"bottom\":32}},\"border8\":{\"type\":\"8\",\"borderWidth\":[24,100,24,100],\"borderEdge\":{\"top\":17,\"left\":17,\"right\":17,\"bottom\":17}},\"border9\":{\"type\":\"9\",\"borderWidth\":[100,90,70,75],\"borderEdge\":{\"top\":32,\"left\":32,\"right\":32,\"bottom\":32}},\"border10\":{\"type\":\"10\",\"borderWidth\":[27,104,100,52],\"borderEdge\":{\"top\":27,\"left\":23,\"right\":60,\"bottom\":44}},\"border11\":{\"type\":\"11\",\"borderWidth\":[26,52,26,52],\"borderEdge\":{\"top\":12,\"left\":12,\"right\":12,\"bottom\":12}},\"border12\":{\"type\":\"12\",\"borderWidth\":[109,271,100,180],\"borderEdge\":{\"top\":30,\"left\":12,\"right\":12,\"bottom\":25}},\"border13\":{\"type\":\"13\",\"borderWidth\":[20,24,20,24],\"borderEdge\":{\"top\":20,\"left\":22,\"right\":24,\"bottom\":20}}}");
  50529. /***/ }),
  50530. /***/ "a760":
  50531. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  50532. "use strict";
  50533. __webpack_require__.r(__webpack_exports__);
  50534. /* harmony import */ var _UniqueThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("62d8");
  50535. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _UniqueThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _UniqueThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  50536. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  50537. var render, staticRenderFns
  50538. /* normalize component */
  50539. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  50540. _UniqueThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  50541. render,
  50542. staticRenderFns,
  50543. false,
  50544. null,
  50545. null,
  50546. null
  50547. )
  50548. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  50549. /***/ }),
  50550. /***/ "a79c":
  50551. /***/ (function(module, exports, __webpack_require__) {
  50552. "use strict";
  50553. /**
  50554. * Determines whether the specified URL is absolute
  50555. *
  50556. * @param {string} url The URL to test
  50557. * @returns {boolean} True if the specified URL is absolute, otherwise false
  50558. */
  50559. module.exports = function isAbsoluteURL(url) {
  50560. // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
  50561. // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
  50562. // by any combination of letters, digits, plus, period, or hyphen.
  50563. return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
  50564. };
  50565. /***/ }),
  50566. /***/ "a890":
  50567. /***/ (function(module, exports, __webpack_require__) {
  50568. "use strict";
  50569. var _interopRequireDefault = __webpack_require__("8e6d");
  50570. Object.defineProperty(exports, "__esModule", {
  50571. value: true
  50572. });
  50573. exports.default = void 0;
  50574. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  50575. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  50576. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  50577. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  50578. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  50579. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  50580. var _envelope = _interopRequireDefault(__webpack_require__("0c08"));
  50581. var _bbox = _interopRequireDefault(__webpack_require__("1164"));
  50582. var _transformScale = _interopRequireDefault(__webpack_require__("f052"));
  50583. var AnimateMarkerLayerViewModel =
  50584. /*#__PURE__*/
  50585. function (_mapboxgl$Evented) {
  50586. (0, _inherits2.default)(AnimateMarkerLayerViewModel, _mapboxgl$Evented);
  50587. function AnimateMarkerLayerViewModel(features, markersElement) {
  50588. var _this;
  50589. var fitBounds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
  50590. (0, _classCallCheck2.default)(this, AnimateMarkerLayerViewModel);
  50591. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(AnimateMarkerLayerViewModel).call(this));
  50592. _this.features = features;
  50593. _this.markers = [];
  50594. _this.markersElement = markersElement;
  50595. _this.fitBounds = fitBounds;
  50596. return _this;
  50597. }
  50598. (0, _createClass2.default)(AnimateMarkerLayerViewModel, [{
  50599. key: "setMap",
  50600. value: function setMap(mapInfo) {
  50601. var map = mapInfo.map;
  50602. if (!map) {
  50603. throw new Error('map is requierd');
  50604. }
  50605. this.map = map;
  50606. this.features && this._initalizeMarkerLayer();
  50607. }
  50608. }, {
  50609. key: "setType",
  50610. value: function setType(markersElement) {
  50611. this.markersElement = markersElement;
  50612. this._initalizeMarkerLayer();
  50613. }
  50614. }, {
  50615. key: "setFeatures",
  50616. value: function setFeatures(features, markersElement) {
  50617. this.markersElement = markersElement;
  50618. this.features = features;
  50619. this._initalizeMarkerLayer();
  50620. }
  50621. }, {
  50622. key: "_initalizeMarkerLayer",
  50623. value: function _initalizeMarkerLayer() {
  50624. if (!this.features || JSON.stringify(this.features) === '{}') {
  50625. return;
  50626. }
  50627. this.removed();
  50628. this._createMarker();
  50629. }
  50630. }, {
  50631. key: "_createMarker",
  50632. value: function _createMarker() {
  50633. var _this2 = this;
  50634. if (this.markersElement.length === 0 || !this.map || !this.features || !this.features.features || this.features.features.length === 0) {
  50635. return;
  50636. }
  50637. this.features.features.forEach(function (point, index) {
  50638. var coordinates = point.geometry.coordinates;
  50639. if (coordinates) {
  50640. var marker = new _mapboxGlEnhance.default.Marker(_this2.markersElement[index] || _this2.markersElement[0]).setLngLat(coordinates).addTo(_this2.map);
  50641. _this2.markers.push(marker);
  50642. }
  50643. }, this);
  50644. if (this.fitBounds) {
  50645. var bounds = (0, _bbox.default)((0, _transformScale.default)((0, _envelope.default)(this.features), 1.7));
  50646. this.fitBounds && this.map.fitBounds([[bounds[0], bounds[1]], [bounds[2], bounds[3]]], {
  50647. maxZoom: 17
  50648. });
  50649. }
  50650. }
  50651. }, {
  50652. key: "removed",
  50653. value: function removed() {
  50654. this.markers.length > 0 && this.markers.forEach(function (marker) {
  50655. marker && marker.remove();
  50656. });
  50657. this.markers = [];
  50658. }
  50659. }]);
  50660. return AnimateMarkerLayerViewModel;
  50661. }(_mapboxGlEnhance.default.Evented);
  50662. exports.default = AnimateMarkerLayerViewModel;
  50663. /***/ }),
  50664. /***/ "a9cb":
  50665. /***/ (function(module, exports, __webpack_require__) {
  50666. "use strict";
  50667. var _interopRequireDefault = __webpack_require__("8e6d");
  50668. Object.defineProperty(exports, "__esModule", {
  50669. value: true
  50670. });
  50671. exports.default = void 0;
  50672. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  50673. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  50674. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  50675. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  50676. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  50677. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  50678. __webpack_require__("f240");
  50679. var RanksymbolThemeLayerViewModel =
  50680. /*#__PURE__*/
  50681. function (_mapboxgl$Evented) {
  50682. (0, _inherits2.default)(RanksymbolThemeLayerViewModel, _mapboxgl$Evented);
  50683. function RanksymbolThemeLayerViewModel(themeProps) {
  50684. var _this;
  50685. (0, _classCallCheck2.default)(this, RanksymbolThemeLayerViewModel);
  50686. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(RanksymbolThemeLayerViewModel).call(this));
  50687. var layerName = themeProps.layerName,
  50688. options = themeProps.options,
  50689. symbolType = themeProps.symbolType,
  50690. layerId = themeProps.layerId,
  50691. data = themeProps.data;
  50692. _this.layerName = layerName || layerId;
  50693. _this.symbolType = symbolType || 'Circle';
  50694. options.id = options.id || layerId;
  50695. _this.options = options;
  50696. _this.layerId = layerId;
  50697. _this.data = data || [];
  50698. return _this;
  50699. }
  50700. (0, _createClass2.default)(RanksymbolThemeLayerViewModel, [{
  50701. key: "setMap",
  50702. value: function setMap(mapInfo) {
  50703. var map = mapInfo.map;
  50704. this.map = map;
  50705. this._init();
  50706. }
  50707. }, {
  50708. key: "setLayerName",
  50709. value: function setLayerName(layerName) {
  50710. this.layerName = layerName;
  50711. this.removed();
  50712. this._init();
  50713. }
  50714. }, {
  50715. key: "setSymbolType",
  50716. value: function setSymbolType(symbolType) {
  50717. this.symbolType = symbolType;
  50718. this.removed();
  50719. this._init();
  50720. }
  50721. }, {
  50722. key: "setData",
  50723. value: function setData(data) {
  50724. this.data = data;
  50725. this.removed();
  50726. this._init();
  50727. }
  50728. }, {
  50729. key: "setOptions",
  50730. value: function setOptions(options) {
  50731. this.options = options;
  50732. this.removed();
  50733. this._init();
  50734. }
  50735. }, {
  50736. key: "_init",
  50737. value: function _init() {
  50738. this.themeLayer = new _mapboxGlEnhance.default.supermap.RankSymbolThemeLayer(this.layerName, this.symbolType, this.options);
  50739. this.map.addLayer(this.themeLayer);
  50740. this.themeLayer.addFeatures(this.data);
  50741. }
  50742. }, {
  50743. key: "removed",
  50744. value: function removed() {
  50745. var map = this.map,
  50746. options = this.options;
  50747. var layerId = options.id;
  50748. if (map && layerId && map.getLayer(layerId)) {
  50749. map.removeLayer(layerId);
  50750. }
  50751. }
  50752. }]);
  50753. return RanksymbolThemeLayerViewModel;
  50754. }(_mapboxGlEnhance.default.Evented);
  50755. exports.default = RanksymbolThemeLayerViewModel;
  50756. /***/ }),
  50757. /***/ "ab53":
  50758. /***/ (function(module, exports, __webpack_require__) {
  50759. "use strict";
  50760. var _interopRequireDefault = __webpack_require__("8e6d");
  50761. Object.defineProperty(exports, "__esModule", {
  50762. value: true
  50763. });
  50764. exports.default = void 0;
  50765. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  50766. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  50767. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  50768. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  50769. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  50770. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  50771. var _vuePropertyDecorator = __webpack_require__("e22c");
  50772. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  50773. var _vmUpdater = _interopRequireDefault(__webpack_require__("3a49"));
  50774. var _TrackLayerViewModel = _interopRequireDefault(__webpack_require__("5966"));
  50775. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  50776. var c = arguments.length,
  50777. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  50778. d;
  50779. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  50780. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  50781. }
  50782. return c > 3 && r && Object.defineProperty(target, key, r), r;
  50783. };
  50784. var TrackLayer =
  50785. /*#__PURE__*/
  50786. function (_Mixins) {
  50787. (0, _inherits2.default)(TrackLayer, _Mixins);
  50788. function TrackLayer() {
  50789. (0, _classCallCheck2.default)(this, TrackLayer);
  50790. return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(TrackLayer).apply(this, arguments));
  50791. }
  50792. (0, _createClass2.default)(TrackLayer, [{
  50793. key: "created",
  50794. value: function created() {
  50795. this.viewModel = new _TrackLayerViewModel.default(this.$props);
  50796. }
  50797. }, {
  50798. key: "reset",
  50799. value: function reset() {
  50800. this.viewModel && this.viewModel.reset();
  50801. }
  50802. }, {
  50803. key: "render",
  50804. value: function render() {}
  50805. }]);
  50806. return TrackLayer;
  50807. }((0, _vuePropertyDecorator.Mixins)(_mapGetter.default, _vmUpdater.default));
  50808. __decorate([(0, _vuePropertyDecorator.Prop)()], TrackLayer.prototype, "layerId", void 0);
  50809. __decorate([(0, _vuePropertyDecorator.Prop)()], TrackLayer.prototype, "loaderType", void 0);
  50810. __decorate([(0, _vuePropertyDecorator.Prop)()], TrackLayer.prototype, "url", void 0);
  50811. __decorate([(0, _vuePropertyDecorator.Prop)()], TrackLayer.prototype, "displayLine", void 0);
  50812. __decorate([(0, _vuePropertyDecorator.Prop)()], TrackLayer.prototype, "layerStyle", void 0);
  50813. __decorate([(0, _vuePropertyDecorator.Prop)()], TrackLayer.prototype, "trackPoints", void 0);
  50814. __decorate([(0, _vuePropertyDecorator.Prop)()], TrackLayer.prototype, "position", void 0);
  50815. __decorate([(0, _vuePropertyDecorator.Prop)()], TrackLayer.prototype, "direction", void 0);
  50816. __decorate([(0, _vuePropertyDecorator.Prop)()], TrackLayer.prototype, "unit", void 0);
  50817. __decorate([(0, _vuePropertyDecorator.Prop)()], TrackLayer.prototype, "scale", void 0);
  50818. __decorate([(0, _vuePropertyDecorator.Prop)()], TrackLayer.prototype, "fitBounds", void 0);
  50819. __decorate([(0, _vuePropertyDecorator.Prop)()], TrackLayer.prototype, "followCamera", void 0);
  50820. TrackLayer = __decorate([(0, _vuePropertyDecorator.Component)({
  50821. name: 'SmTrackLayer',
  50822. viewModelProps: ['loaderType', 'url', 'displayLine', 'trackPoints', 'position', 'layerStyle', 'direction', 'unit', 'scale', 'fitBounds', 'followCamera']
  50823. })], TrackLayer);
  50824. var _default = TrackLayer;
  50825. exports.default = _default;
  50826. /***/ }),
  50827. /***/ "ac9e":
  50828. /***/ (function(module, exports, __webpack_require__) {
  50829. "use strict";
  50830. var _interopRequireDefault = __webpack_require__("8e6d");
  50831. Object.defineProperty(exports, "__esModule", {
  50832. value: true
  50833. });
  50834. exports.default = void 0;
  50835. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  50836. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  50837. var _VectorTileLayerViewModel = _interopRequireDefault(__webpack_require__("ad7e"));
  50838. var _default = {
  50839. name: 'SmVectorTileLayer',
  50840. mixins: [_mapGetter.default, _layer.default],
  50841. props: {
  50842. styleOptions: {
  50843. type: [String, Object]
  50844. }
  50845. },
  50846. watch: {
  50847. styleOptions: {
  50848. handler: function handler(val) {
  50849. this.viewModel && this.viewModel.setStyleOptions(val);
  50850. },
  50851. deep: true
  50852. }
  50853. },
  50854. created: function created() {
  50855. this.viewModel = new _VectorTileLayerViewModel.default(this.styleOptions, this.before);
  50856. },
  50857. render: function render() {}
  50858. };
  50859. exports.default = _default;
  50860. /***/ }),
  50861. /***/ "acbb":
  50862. /***/ (function(module, exports) {
  50863. module.exports = __WEBPACK_EXTERNAL_MODULE_acbb__;
  50864. /***/ }),
  50865. /***/ "acc9":
  50866. /***/ (function(module, exports, __webpack_require__) {
  50867. "use strict";
  50868. var _interopRequireDefault = __webpack_require__("8e6d");
  50869. Object.defineProperty(exports, "__esModule", {
  50870. value: true
  50871. });
  50872. exports.default = void 0;
  50873. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  50874. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  50875. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  50876. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  50877. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  50878. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  50879. /**
  50880. * @class HeatMapLayerViewModel
  50881. * @param {mapboxgl.map} map - mapboxgl map 对象。
  50882. * @param {String} data - 热力图数据。
  50883. * @param {Object} options - 可选参数。
  50884. * @param {Object} [options.layerId] - 图层名。
  50885. * @param {Object} [options.layerStyle] - 图层样式配置。
  50886. */
  50887. var HeatMapLayerViewModel =
  50888. /*#__PURE__*/
  50889. function (_mapboxgl$Evented) {
  50890. (0, _inherits2.default)(HeatMapLayerViewModel, _mapboxgl$Evented);
  50891. function HeatMapLayerViewModel(data, options) {
  50892. var _this;
  50893. (0, _classCallCheck2.default)(this, HeatMapLayerViewModel);
  50894. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(HeatMapLayerViewModel).call(this));
  50895. options = options || {};
  50896. _this.data = data;
  50897. _this.layerId = options.layerId || 'heatmap' + new Date().getTime();
  50898. var layerStyle = options.layerStyle;
  50899. _this.paint = layerStyle && layerStyle.paint;
  50900. _this.layout = layerStyle && layerStyle.layout;
  50901. return _this;
  50902. }
  50903. (0, _createClass2.default)(HeatMapLayerViewModel, [{
  50904. key: "setMap",
  50905. value: function setMap(mapInfo) {
  50906. var map = mapInfo.map;
  50907. if (!map) {
  50908. throw new Error('map is requierd');
  50909. }
  50910. this.map = map;
  50911. this._initializeHeatMapLayer();
  50912. }
  50913. }, {
  50914. key: "setData",
  50915. value: function setData(data) {
  50916. this.data = data;
  50917. this.removed();
  50918. this._initializeHeatMapLayer();
  50919. }
  50920. }, {
  50921. key: "setLayerStyle",
  50922. value: function setLayerStyle(layerStyle) {
  50923. this.paint = layerStyle && layerStyle.paint;
  50924. this.layout = layerStyle && layerStyle.layout;
  50925. this.removed();
  50926. this._initializeHeatMapLayer();
  50927. }
  50928. }, {
  50929. key: "_initializeHeatMapLayer",
  50930. value: function _initializeHeatMapLayer() {
  50931. this.map.addSource(this.layerId, {
  50932. type: 'geojson',
  50933. data: this.data
  50934. });
  50935. this.map.addLayer({
  50936. id: this.layerId,
  50937. type: 'heatmap',
  50938. source: this.layerId,
  50939. maxzoom: 9,
  50940. paint: this.paint || {
  50941. 'heatmap-intensity': ['interpolate', ['linear'], ['zoom'], 0, 1, 9, 3],
  50942. 'heatmap-color': ['interpolate', ['linear'], ['heatmap-density'], 0, 'rgba(33,102,172,0)', 0.2, 'rgb(103,169,207)', 0.4, 'rgb(209,229,240)', 0.6, 'rgb(253,219,199)', 0.8, 'rgb(239,138,98)', 1, 'rgb(178,24,43)'],
  50943. 'heatmap-radius': ['interpolate', ['linear'], ['zoom'], 0, 2, 9, 20],
  50944. 'heatmap-opacity': ['interpolate', ['linear'], ['zoom'], 7, 1, 9, 0]
  50945. },
  50946. layout: this.layout || {}
  50947. });
  50948. this.fire('heatmaplayeraddsucceeded', {
  50949. map: this.map
  50950. });
  50951. }
  50952. }, {
  50953. key: "removed",
  50954. value: function removed() {
  50955. var map = this.map,
  50956. layerId = this.layerId;
  50957. if (map && layerId && map.getSource(layerId)) {
  50958. map.getLayer(layerId) && map.removeLayer(layerId);
  50959. map.removeSource(layerId);
  50960. }
  50961. }
  50962. }]);
  50963. return HeatMapLayerViewModel;
  50964. }(_mapboxGlEnhance.default.Evented);
  50965. exports.default = HeatMapLayerViewModel;
  50966. /***/ }),
  50967. /***/ "ad16":
  50968. /***/ (function(module, exports, __webpack_require__) {
  50969. "use strict";
  50970. var _interopRequireDefault = __webpack_require__("8e6d");
  50971. Object.defineProperty(exports, "__esModule", {
  50972. value: true
  50973. });
  50974. exports.default = void 0;
  50975. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  50976. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  50977. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  50978. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  50979. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  50980. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  50981. /**
  50982. * @class ScaleViewModel
  50983. * @description scale viewModel.
  50984. * @param {Object} map - map 对象。
  50985. * @param {Object} options - 可选参数。
  50986. * @param {string} [options.unit='metric] - 比例尺单位。
  50987. * @param {number} [options.maxWidth=100] - 比例尺单位。
  50988. * @fires ScaleViewModel#scaleupdated
  50989. * @extends mapboxgl.Evented
  50990. */
  50991. var ScaleViewModel =
  50992. /*#__PURE__*/
  50993. function (_mapboxgl$Evented) {
  50994. (0, _inherits2.default)(ScaleViewModel, _mapboxgl$Evented);
  50995. function ScaleViewModel(options) {
  50996. var _this;
  50997. (0, _classCallCheck2.default)(this, ScaleViewModel);
  50998. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(ScaleViewModel).call(this));
  50999. options = options || {};
  51000. _this.options = {
  51001. unit: options.unit || 'metric',
  51002. maxWidth: options.maxWidth || 100
  51003. };
  51004. return _this;
  51005. }
  51006. (0, _createClass2.default)(ScaleViewModel, [{
  51007. key: "setMap",
  51008. value: function setMap(mapInfo) {
  51009. var map = mapInfo.map;
  51010. this.map = map;
  51011. this.onMoveEvt = this.onMoveEvt.bind(this);
  51012. this.map.on('move', this.onMoveEvt);
  51013. this.updateScale(this.map, this.options);
  51014. }
  51015. }, {
  51016. key: "onMoveEvt",
  51017. value: function onMoveEvt() {
  51018. this.updateScale(this.map, this.options);
  51019. }
  51020. }, {
  51021. key: "setUnit",
  51022. value: function setUnit(unit) {
  51023. this.options.unit = unit;
  51024. this.updateScale(this.map, this.options);
  51025. }
  51026. }, {
  51027. key: "setMaxWidth",
  51028. value: function setMaxWidth(maxWidth) {
  51029. this.options.maxWidth = maxWidth;
  51030. this.updateScale(this.map, this.options);
  51031. }
  51032. }, {
  51033. key: "updateScale",
  51034. value: function updateScale(map, options) {
  51035. var maxWidth = options && options.maxWidth || 100;
  51036. var y = map._container.clientHeight / 2;
  51037. var maxMeters = this._getDistance(map.unproject([0, y]), map.unproject([maxWidth, y]));
  51038. if (options && options.unit === 'imperial') {
  51039. var maxFeet = 3.2808 * maxMeters;
  51040. if (maxFeet > 5280) {
  51041. var maxMiles = maxFeet / 5280;
  51042. this._setScale(maxWidth, maxMiles, 'mi');
  51043. } else {
  51044. this._setScale(maxWidth, maxFeet, 'ft');
  51045. }
  51046. } else if (options && options.unit === 'nautical') {
  51047. var maxNauticals = maxMeters / 1852;
  51048. this._setScale(maxWidth, maxNauticals, 'nm');
  51049. } else {
  51050. this._setScale(maxWidth, maxMeters, 'm');
  51051. }
  51052. }
  51053. }, {
  51054. key: "removed",
  51055. value: function removed() {
  51056. this.map.off('move', this.onMoveEvt);
  51057. }
  51058. }, {
  51059. key: "_setScale",
  51060. value: function _setScale(maxWidth, maxDistance, unit) {
  51061. var distance = this._getRoundNum(maxDistance);
  51062. var ratio = distance / maxDistance;
  51063. if (unit === 'm' && distance >= 1000) {
  51064. distance = distance / 1000;
  51065. unit = 'km';
  51066. }
  51067. var containerWidth = "".concat(maxWidth * ratio, "px");
  51068. var containerContent = distance + unit;
  51069. /**
  51070. * @event ScaleViewModel#scaleupdated
  51071. * @description scale 更新成功。
  51072. * @property {string} containerWidth - scale width。
  51073. * @property {string} containerContent - scale content。
  51074. */
  51075. this.fire('scaleupdated', {
  51076. containerWidth: containerWidth,
  51077. containerContent: containerContent
  51078. });
  51079. }
  51080. }, {
  51081. key: "_getDistance",
  51082. value: function _getDistance(latlng1, latlng2) {
  51083. var R = 6371000;
  51084. var rad = Math.PI / 180;
  51085. var lat1 = latlng1.lat * rad;
  51086. var lat2 = latlng2.lat * rad;
  51087. var a = Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos((latlng2.lng - latlng1.lng) * rad);
  51088. var maxMeters = R * Math.acos(Math.min(a, 1));
  51089. return maxMeters;
  51090. }
  51091. }, {
  51092. key: "_getDecimalRoundNum",
  51093. value: function _getDecimalRoundNum(d) {
  51094. var multiplier = Math.pow(10, Math.ceil(-Math.log(d) / Math.LN10));
  51095. return Math.round(d * multiplier) / multiplier;
  51096. }
  51097. }, {
  51098. key: "_getRoundNum",
  51099. value: function _getRoundNum(num) {
  51100. var pow10 = Math.pow(10, "".concat(Math.floor(num)).length - 1);
  51101. var d = num / pow10;
  51102. d = d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : d >= 1 ? 1 : this._getDecimalRoundNum(d);
  51103. return pow10 * d;
  51104. }
  51105. }]);
  51106. return ScaleViewModel;
  51107. }(_mapboxGlEnhance.default.Evented);
  51108. exports.default = ScaleViewModel;
  51109. /***/ }),
  51110. /***/ "ad7e":
  51111. /***/ (function(module, exports, __webpack_require__) {
  51112. "use strict";
  51113. var _interopRequireDefault = __webpack_require__("8e6d");
  51114. Object.defineProperty(exports, "__esModule", {
  51115. value: true
  51116. });
  51117. exports.default = void 0;
  51118. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  51119. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  51120. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  51121. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  51122. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  51123. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  51124. __webpack_require__("f240");
  51125. var VectorTileLayerViewModel =
  51126. /*#__PURE__*/
  51127. function (_mapboxgl$Evented) {
  51128. (0, _inherits2.default)(VectorTileLayerViewModel, _mapboxgl$Evented);
  51129. function VectorTileLayerViewModel(styleOptions, before) {
  51130. var _this;
  51131. (0, _classCallCheck2.default)(this, VectorTileLayerViewModel);
  51132. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(VectorTileLayerViewModel).call(this));
  51133. _this.styleOptions = styleOptions;
  51134. _this.before = before;
  51135. return _this;
  51136. }
  51137. (0, _createClass2.default)(VectorTileLayerViewModel, [{
  51138. key: "setMap",
  51139. value: function setMap(mapInfo) {
  51140. var map = mapInfo.map;
  51141. this.map = map;
  51142. this._init();
  51143. }
  51144. }, {
  51145. key: "setStyleOptions",
  51146. value: function setStyleOptions(styleOptions) {
  51147. this.styleOptions = styleOptions;
  51148. this._init();
  51149. }
  51150. }, {
  51151. key: "_init",
  51152. value: function _init() {
  51153. if (this.map.addStyle) {
  51154. this.map.addStyle(this.styleOptions, this.before);
  51155. }
  51156. }
  51157. }]);
  51158. return VectorTileLayerViewModel;
  51159. }(_mapboxGlEnhance.default.Evented);
  51160. exports.default = VectorTileLayerViewModel;
  51161. /***/ }),
  51162. /***/ "adbd":
  51163. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  51164. "use strict";
  51165. __webpack_require__.r(__webpack_exports__);
  51166. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RoutePlan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("cab0");
  51167. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RoutePlan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RoutePlan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  51168. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RoutePlan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RoutePlan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  51169. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RoutePlan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  51170. /***/ }),
  51171. /***/ "ae50":
  51172. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  51173. "use strict";
  51174. __webpack_require__.r(__webpack_exports__);
  51175. /* harmony import */ var _OpenFile_vue_vue_type_template_id_016ba5c1___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ebca");
  51176. /* harmony import */ var _OpenFile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("455a");
  51177. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _OpenFile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _OpenFile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  51178. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  51179. /* normalize component */
  51180. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  51181. _OpenFile_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  51182. _OpenFile_vue_vue_type_template_id_016ba5c1___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  51183. _OpenFile_vue_vue_type_template_id_016ba5c1___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  51184. false,
  51185. null,
  51186. null,
  51187. null
  51188. )
  51189. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  51190. /***/ }),
  51191. /***/ "ae5c":
  51192. /***/ (function(module, exports, __webpack_require__) {
  51193. /* WEBPACK VAR INJECTION */(function(global, module) {/**
  51194. * lodash (Custom Build) <https://lodash.com/>
  51195. * Build: `lodash modularize exports="npm" -o ./`
  51196. * Copyright jQuery Foundation and other contributors <https://jquery.org/>
  51197. * Released under MIT license <https://lodash.com/license>
  51198. * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  51199. * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  51200. */
  51201. /** Used as the size to enable large array optimizations. */
  51202. var LARGE_ARRAY_SIZE = 200;
  51203. /** Used as the `TypeError` message for "Functions" methods. */
  51204. var FUNC_ERROR_TEXT = 'Expected a function';
  51205. /** Used to stand-in for `undefined` hash values. */
  51206. var HASH_UNDEFINED = '__lodash_hash_undefined__';
  51207. /** Used to compose bitmasks for comparison styles. */
  51208. var UNORDERED_COMPARE_FLAG = 1,
  51209. PARTIAL_COMPARE_FLAG = 2;
  51210. /** Used as references for various `Number` constants. */
  51211. var INFINITY = 1 / 0,
  51212. MAX_SAFE_INTEGER = 9007199254740991;
  51213. /** `Object#toString` result references. */
  51214. var argsTag = '[object Arguments]',
  51215. arrayTag = '[object Array]',
  51216. boolTag = '[object Boolean]',
  51217. dateTag = '[object Date]',
  51218. errorTag = '[object Error]',
  51219. funcTag = '[object Function]',
  51220. genTag = '[object GeneratorFunction]',
  51221. mapTag = '[object Map]',
  51222. numberTag = '[object Number]',
  51223. objectTag = '[object Object]',
  51224. promiseTag = '[object Promise]',
  51225. regexpTag = '[object RegExp]',
  51226. setTag = '[object Set]',
  51227. stringTag = '[object String]',
  51228. symbolTag = '[object Symbol]',
  51229. weakMapTag = '[object WeakMap]';
  51230. var arrayBufferTag = '[object ArrayBuffer]',
  51231. dataViewTag = '[object DataView]',
  51232. float32Tag = '[object Float32Array]',
  51233. float64Tag = '[object Float64Array]',
  51234. int8Tag = '[object Int8Array]',
  51235. int16Tag = '[object Int16Array]',
  51236. int32Tag = '[object Int32Array]',
  51237. uint8Tag = '[object Uint8Array]',
  51238. uint8ClampedTag = '[object Uint8ClampedArray]',
  51239. uint16Tag = '[object Uint16Array]',
  51240. uint32Tag = '[object Uint32Array]';
  51241. /** Used to match property names within property paths. */
  51242. var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
  51243. reIsPlainProp = /^\w*$/,
  51244. reLeadingDot = /^\./,
  51245. rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
  51246. /**
  51247. * Used to match `RegExp`
  51248. * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
  51249. */
  51250. var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
  51251. /** Used to match backslashes in property paths. */
  51252. var reEscapeChar = /\\(\\)?/g;
  51253. /** Used to detect host constructors (Safari). */
  51254. var reIsHostCtor = /^\[object .+?Constructor\]$/;
  51255. /** Used to detect unsigned integer values. */
  51256. var reIsUint = /^(?:0|[1-9]\d*)$/;
  51257. /** Used to identify `toStringTag` values of typed arrays. */
  51258. var typedArrayTags = {};
  51259. typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
  51260. typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
  51261. typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
  51262. typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
  51263. typedArrayTags[uint32Tag] = true;
  51264. typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
  51265. typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
  51266. typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
  51267. typedArrayTags[errorTag] = typedArrayTags[funcTag] =
  51268. typedArrayTags[mapTag] = typedArrayTags[numberTag] =
  51269. typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
  51270. typedArrayTags[setTag] = typedArrayTags[stringTag] =
  51271. typedArrayTags[weakMapTag] = false;
  51272. /** Detect free variable `global` from Node.js. */
  51273. var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
  51274. /** Detect free variable `self`. */
  51275. var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
  51276. /** Used as a reference to the global object. */
  51277. var root = freeGlobal || freeSelf || Function('return this')();
  51278. /** Detect free variable `exports`. */
  51279. var freeExports = true && exports && !exports.nodeType && exports;
  51280. /** Detect free variable `module`. */
  51281. var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
  51282. /** Detect the popular CommonJS extension `module.exports`. */
  51283. var moduleExports = freeModule && freeModule.exports === freeExports;
  51284. /** Detect free variable `process` from Node.js. */
  51285. var freeProcess = moduleExports && freeGlobal.process;
  51286. /** Used to access faster Node.js helpers. */
  51287. var nodeUtil = (function() {
  51288. try {
  51289. return freeProcess && freeProcess.binding('util');
  51290. } catch (e) {}
  51291. }());
  51292. /* Node.js helper references. */
  51293. var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
  51294. /**
  51295. * A specialized version of `_.map` for arrays without support for iteratee
  51296. * shorthands.
  51297. *
  51298. * @private
  51299. * @param {Array} [array] The array to iterate over.
  51300. * @param {Function} iteratee The function invoked per iteration.
  51301. * @returns {Array} Returns the new mapped array.
  51302. */
  51303. function arrayMap(array, iteratee) {
  51304. var index = -1,
  51305. length = array ? array.length : 0,
  51306. result = Array(length);
  51307. while (++index < length) {
  51308. result[index] = iteratee(array[index], index, array);
  51309. }
  51310. return result;
  51311. }
  51312. /**
  51313. * A specialized version of `_.some` for arrays without support for iteratee
  51314. * shorthands.
  51315. *
  51316. * @private
  51317. * @param {Array} [array] The array to iterate over.
  51318. * @param {Function} predicate The function invoked per iteration.
  51319. * @returns {boolean} Returns `true` if any element passes the predicate check,
  51320. * else `false`.
  51321. */
  51322. function arraySome(array, predicate) {
  51323. var index = -1,
  51324. length = array ? array.length : 0;
  51325. while (++index < length) {
  51326. if (predicate(array[index], index, array)) {
  51327. return true;
  51328. }
  51329. }
  51330. return false;
  51331. }
  51332. /**
  51333. * The base implementation of `_.property` without support for deep paths.
  51334. *
  51335. * @private
  51336. * @param {string} key The key of the property to get.
  51337. * @returns {Function} Returns the new accessor function.
  51338. */
  51339. function baseProperty(key) {
  51340. return function(object) {
  51341. return object == null ? undefined : object[key];
  51342. };
  51343. }
  51344. /**
  51345. * The base implementation of `_.sortBy` which uses `comparer` to define the
  51346. * sort order of `array` and replaces criteria objects with their corresponding
  51347. * values.
  51348. *
  51349. * @private
  51350. * @param {Array} array The array to sort.
  51351. * @param {Function} comparer The function to define sort order.
  51352. * @returns {Array} Returns `array`.
  51353. */
  51354. function baseSortBy(array, comparer) {
  51355. var length = array.length;
  51356. array.sort(comparer);
  51357. while (length--) {
  51358. array[length] = array[length].value;
  51359. }
  51360. return array;
  51361. }
  51362. /**
  51363. * The base implementation of `_.times` without support for iteratee shorthands
  51364. * or max array length checks.
  51365. *
  51366. * @private
  51367. * @param {number} n The number of times to invoke `iteratee`.
  51368. * @param {Function} iteratee The function invoked per iteration.
  51369. * @returns {Array} Returns the array of results.
  51370. */
  51371. function baseTimes(n, iteratee) {
  51372. var index = -1,
  51373. result = Array(n);
  51374. while (++index < n) {
  51375. result[index] = iteratee(index);
  51376. }
  51377. return result;
  51378. }
  51379. /**
  51380. * The base implementation of `_.unary` without support for storing metadata.
  51381. *
  51382. * @private
  51383. * @param {Function} func The function to cap arguments for.
  51384. * @returns {Function} Returns the new capped function.
  51385. */
  51386. function baseUnary(func) {
  51387. return function(value) {
  51388. return func(value);
  51389. };
  51390. }
  51391. /**
  51392. * Gets the value at `key` of `object`.
  51393. *
  51394. * @private
  51395. * @param {Object} [object] The object to query.
  51396. * @param {string} key The key of the property to get.
  51397. * @returns {*} Returns the property value.
  51398. */
  51399. function getValue(object, key) {
  51400. return object == null ? undefined : object[key];
  51401. }
  51402. /**
  51403. * Checks if `value` is a host object in IE < 9.
  51404. *
  51405. * @private
  51406. * @param {*} value The value to check.
  51407. * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
  51408. */
  51409. function isHostObject(value) {
  51410. // Many host objects are `Object` objects that can coerce to strings
  51411. // despite having improperly defined `toString` methods.
  51412. var result = false;
  51413. if (value != null && typeof value.toString != 'function') {
  51414. try {
  51415. result = !!(value + '');
  51416. } catch (e) {}
  51417. }
  51418. return result;
  51419. }
  51420. /**
  51421. * Converts `map` to its key-value pairs.
  51422. *
  51423. * @private
  51424. * @param {Object} map The map to convert.
  51425. * @returns {Array} Returns the key-value pairs.
  51426. */
  51427. function mapToArray(map) {
  51428. var index = -1,
  51429. result = Array(map.size);
  51430. map.forEach(function(value, key) {
  51431. result[++index] = [key, value];
  51432. });
  51433. return result;
  51434. }
  51435. /**
  51436. * Creates a unary function that invokes `func` with its argument transformed.
  51437. *
  51438. * @private
  51439. * @param {Function} func The function to wrap.
  51440. * @param {Function} transform The argument transform.
  51441. * @returns {Function} Returns the new function.
  51442. */
  51443. function overArg(func, transform) {
  51444. return function(arg) {
  51445. return func(transform(arg));
  51446. };
  51447. }
  51448. /**
  51449. * Converts `set` to an array of its values.
  51450. *
  51451. * @private
  51452. * @param {Object} set The set to convert.
  51453. * @returns {Array} Returns the values.
  51454. */
  51455. function setToArray(set) {
  51456. var index = -1,
  51457. result = Array(set.size);
  51458. set.forEach(function(value) {
  51459. result[++index] = value;
  51460. });
  51461. return result;
  51462. }
  51463. /** Used for built-in method references. */
  51464. var arrayProto = Array.prototype,
  51465. funcProto = Function.prototype,
  51466. objectProto = Object.prototype;
  51467. /** Used to detect overreaching core-js shims. */
  51468. var coreJsData = root['__core-js_shared__'];
  51469. /** Used to detect methods masquerading as native. */
  51470. var maskSrcKey = (function() {
  51471. var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
  51472. return uid ? ('Symbol(src)_1.' + uid) : '';
  51473. }());
  51474. /** Used to resolve the decompiled source of functions. */
  51475. var funcToString = funcProto.toString;
  51476. /** Used to check objects for own properties. */
  51477. var hasOwnProperty = objectProto.hasOwnProperty;
  51478. /**
  51479. * Used to resolve the
  51480. * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
  51481. * of values.
  51482. */
  51483. var objectToString = objectProto.toString;
  51484. /** Used to detect if a method is native. */
  51485. var reIsNative = RegExp('^' +
  51486. funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
  51487. .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
  51488. );
  51489. /** Built-in value references. */
  51490. var Symbol = root.Symbol,
  51491. Uint8Array = root.Uint8Array,
  51492. propertyIsEnumerable = objectProto.propertyIsEnumerable,
  51493. splice = arrayProto.splice;
  51494. /* Built-in method references for those with the same name as other `lodash` methods. */
  51495. var nativeKeys = overArg(Object.keys, Object);
  51496. /* Built-in method references that are verified to be native. */
  51497. var DataView = getNative(root, 'DataView'),
  51498. Map = getNative(root, 'Map'),
  51499. Promise = getNative(root, 'Promise'),
  51500. Set = getNative(root, 'Set'),
  51501. WeakMap = getNative(root, 'WeakMap'),
  51502. nativeCreate = getNative(Object, 'create');
  51503. /** Used to detect maps, sets, and weakmaps. */
  51504. var dataViewCtorString = toSource(DataView),
  51505. mapCtorString = toSource(Map),
  51506. promiseCtorString = toSource(Promise),
  51507. setCtorString = toSource(Set),
  51508. weakMapCtorString = toSource(WeakMap);
  51509. /** Used to convert symbols to primitives and strings. */
  51510. var symbolProto = Symbol ? Symbol.prototype : undefined,
  51511. symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
  51512. symbolToString = symbolProto ? symbolProto.toString : undefined;
  51513. /**
  51514. * Creates a hash object.
  51515. *
  51516. * @private
  51517. * @constructor
  51518. * @param {Array} [entries] The key-value pairs to cache.
  51519. */
  51520. function Hash(entries) {
  51521. var index = -1,
  51522. length = entries ? entries.length : 0;
  51523. this.clear();
  51524. while (++index < length) {
  51525. var entry = entries[index];
  51526. this.set(entry[0], entry[1]);
  51527. }
  51528. }
  51529. /**
  51530. * Removes all key-value entries from the hash.
  51531. *
  51532. * @private
  51533. * @name clear
  51534. * @memberOf Hash
  51535. */
  51536. function hashClear() {
  51537. this.__data__ = nativeCreate ? nativeCreate(null) : {};
  51538. }
  51539. /**
  51540. * Removes `key` and its value from the hash.
  51541. *
  51542. * @private
  51543. * @name delete
  51544. * @memberOf Hash
  51545. * @param {Object} hash The hash to modify.
  51546. * @param {string} key The key of the value to remove.
  51547. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  51548. */
  51549. function hashDelete(key) {
  51550. return this.has(key) && delete this.__data__[key];
  51551. }
  51552. /**
  51553. * Gets the hash value for `key`.
  51554. *
  51555. * @private
  51556. * @name get
  51557. * @memberOf Hash
  51558. * @param {string} key The key of the value to get.
  51559. * @returns {*} Returns the entry value.
  51560. */
  51561. function hashGet(key) {
  51562. var data = this.__data__;
  51563. if (nativeCreate) {
  51564. var result = data[key];
  51565. return result === HASH_UNDEFINED ? undefined : result;
  51566. }
  51567. return hasOwnProperty.call(data, key) ? data[key] : undefined;
  51568. }
  51569. /**
  51570. * Checks if a hash value for `key` exists.
  51571. *
  51572. * @private
  51573. * @name has
  51574. * @memberOf Hash
  51575. * @param {string} key The key of the entry to check.
  51576. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  51577. */
  51578. function hashHas(key) {
  51579. var data = this.__data__;
  51580. return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
  51581. }
  51582. /**
  51583. * Sets the hash `key` to `value`.
  51584. *
  51585. * @private
  51586. * @name set
  51587. * @memberOf Hash
  51588. * @param {string} key The key of the value to set.
  51589. * @param {*} value The value to set.
  51590. * @returns {Object} Returns the hash instance.
  51591. */
  51592. function hashSet(key, value) {
  51593. var data = this.__data__;
  51594. data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
  51595. return this;
  51596. }
  51597. // Add methods to `Hash`.
  51598. Hash.prototype.clear = hashClear;
  51599. Hash.prototype['delete'] = hashDelete;
  51600. Hash.prototype.get = hashGet;
  51601. Hash.prototype.has = hashHas;
  51602. Hash.prototype.set = hashSet;
  51603. /**
  51604. * Creates an list cache object.
  51605. *
  51606. * @private
  51607. * @constructor
  51608. * @param {Array} [entries] The key-value pairs to cache.
  51609. */
  51610. function ListCache(entries) {
  51611. var index = -1,
  51612. length = entries ? entries.length : 0;
  51613. this.clear();
  51614. while (++index < length) {
  51615. var entry = entries[index];
  51616. this.set(entry[0], entry[1]);
  51617. }
  51618. }
  51619. /**
  51620. * Removes all key-value entries from the list cache.
  51621. *
  51622. * @private
  51623. * @name clear
  51624. * @memberOf ListCache
  51625. */
  51626. function listCacheClear() {
  51627. this.__data__ = [];
  51628. }
  51629. /**
  51630. * Removes `key` and its value from the list cache.
  51631. *
  51632. * @private
  51633. * @name delete
  51634. * @memberOf ListCache
  51635. * @param {string} key The key of the value to remove.
  51636. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  51637. */
  51638. function listCacheDelete(key) {
  51639. var data = this.__data__,
  51640. index = assocIndexOf(data, key);
  51641. if (index < 0) {
  51642. return false;
  51643. }
  51644. var lastIndex = data.length - 1;
  51645. if (index == lastIndex) {
  51646. data.pop();
  51647. } else {
  51648. splice.call(data, index, 1);
  51649. }
  51650. return true;
  51651. }
  51652. /**
  51653. * Gets the list cache value for `key`.
  51654. *
  51655. * @private
  51656. * @name get
  51657. * @memberOf ListCache
  51658. * @param {string} key The key of the value to get.
  51659. * @returns {*} Returns the entry value.
  51660. */
  51661. function listCacheGet(key) {
  51662. var data = this.__data__,
  51663. index = assocIndexOf(data, key);
  51664. return index < 0 ? undefined : data[index][1];
  51665. }
  51666. /**
  51667. * Checks if a list cache value for `key` exists.
  51668. *
  51669. * @private
  51670. * @name has
  51671. * @memberOf ListCache
  51672. * @param {string} key The key of the entry to check.
  51673. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  51674. */
  51675. function listCacheHas(key) {
  51676. return assocIndexOf(this.__data__, key) > -1;
  51677. }
  51678. /**
  51679. * Sets the list cache `key` to `value`.
  51680. *
  51681. * @private
  51682. * @name set
  51683. * @memberOf ListCache
  51684. * @param {string} key The key of the value to set.
  51685. * @param {*} value The value to set.
  51686. * @returns {Object} Returns the list cache instance.
  51687. */
  51688. function listCacheSet(key, value) {
  51689. var data = this.__data__,
  51690. index = assocIndexOf(data, key);
  51691. if (index < 0) {
  51692. data.push([key, value]);
  51693. } else {
  51694. data[index][1] = value;
  51695. }
  51696. return this;
  51697. }
  51698. // Add methods to `ListCache`.
  51699. ListCache.prototype.clear = listCacheClear;
  51700. ListCache.prototype['delete'] = listCacheDelete;
  51701. ListCache.prototype.get = listCacheGet;
  51702. ListCache.prototype.has = listCacheHas;
  51703. ListCache.prototype.set = listCacheSet;
  51704. /**
  51705. * Creates a map cache object to store key-value pairs.
  51706. *
  51707. * @private
  51708. * @constructor
  51709. * @param {Array} [entries] The key-value pairs to cache.
  51710. */
  51711. function MapCache(entries) {
  51712. var index = -1,
  51713. length = entries ? entries.length : 0;
  51714. this.clear();
  51715. while (++index < length) {
  51716. var entry = entries[index];
  51717. this.set(entry[0], entry[1]);
  51718. }
  51719. }
  51720. /**
  51721. * Removes all key-value entries from the map.
  51722. *
  51723. * @private
  51724. * @name clear
  51725. * @memberOf MapCache
  51726. */
  51727. function mapCacheClear() {
  51728. this.__data__ = {
  51729. 'hash': new Hash,
  51730. 'map': new (Map || ListCache),
  51731. 'string': new Hash
  51732. };
  51733. }
  51734. /**
  51735. * Removes `key` and its value from the map.
  51736. *
  51737. * @private
  51738. * @name delete
  51739. * @memberOf MapCache
  51740. * @param {string} key The key of the value to remove.
  51741. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  51742. */
  51743. function mapCacheDelete(key) {
  51744. return getMapData(this, key)['delete'](key);
  51745. }
  51746. /**
  51747. * Gets the map value for `key`.
  51748. *
  51749. * @private
  51750. * @name get
  51751. * @memberOf MapCache
  51752. * @param {string} key The key of the value to get.
  51753. * @returns {*} Returns the entry value.
  51754. */
  51755. function mapCacheGet(key) {
  51756. return getMapData(this, key).get(key);
  51757. }
  51758. /**
  51759. * Checks if a map value for `key` exists.
  51760. *
  51761. * @private
  51762. * @name has
  51763. * @memberOf MapCache
  51764. * @param {string} key The key of the entry to check.
  51765. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  51766. */
  51767. function mapCacheHas(key) {
  51768. return getMapData(this, key).has(key);
  51769. }
  51770. /**
  51771. * Sets the map `key` to `value`.
  51772. *
  51773. * @private
  51774. * @name set
  51775. * @memberOf MapCache
  51776. * @param {string} key The key of the value to set.
  51777. * @param {*} value The value to set.
  51778. * @returns {Object} Returns the map cache instance.
  51779. */
  51780. function mapCacheSet(key, value) {
  51781. getMapData(this, key).set(key, value);
  51782. return this;
  51783. }
  51784. // Add methods to `MapCache`.
  51785. MapCache.prototype.clear = mapCacheClear;
  51786. MapCache.prototype['delete'] = mapCacheDelete;
  51787. MapCache.prototype.get = mapCacheGet;
  51788. MapCache.prototype.has = mapCacheHas;
  51789. MapCache.prototype.set = mapCacheSet;
  51790. /**
  51791. *
  51792. * Creates an array cache object to store unique values.
  51793. *
  51794. * @private
  51795. * @constructor
  51796. * @param {Array} [values] The values to cache.
  51797. */
  51798. function SetCache(values) {
  51799. var index = -1,
  51800. length = values ? values.length : 0;
  51801. this.__data__ = new MapCache;
  51802. while (++index < length) {
  51803. this.add(values[index]);
  51804. }
  51805. }
  51806. /**
  51807. * Adds `value` to the array cache.
  51808. *
  51809. * @private
  51810. * @name add
  51811. * @memberOf SetCache
  51812. * @alias push
  51813. * @param {*} value The value to cache.
  51814. * @returns {Object} Returns the cache instance.
  51815. */
  51816. function setCacheAdd(value) {
  51817. this.__data__.set(value, HASH_UNDEFINED);
  51818. return this;
  51819. }
  51820. /**
  51821. * Checks if `value` is in the array cache.
  51822. *
  51823. * @private
  51824. * @name has
  51825. * @memberOf SetCache
  51826. * @param {*} value The value to search for.
  51827. * @returns {number} Returns `true` if `value` is found, else `false`.
  51828. */
  51829. function setCacheHas(value) {
  51830. return this.__data__.has(value);
  51831. }
  51832. // Add methods to `SetCache`.
  51833. SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
  51834. SetCache.prototype.has = setCacheHas;
  51835. /**
  51836. * Creates a stack cache object to store key-value pairs.
  51837. *
  51838. * @private
  51839. * @constructor
  51840. * @param {Array} [entries] The key-value pairs to cache.
  51841. */
  51842. function Stack(entries) {
  51843. this.__data__ = new ListCache(entries);
  51844. }
  51845. /**
  51846. * Removes all key-value entries from the stack.
  51847. *
  51848. * @private
  51849. * @name clear
  51850. * @memberOf Stack
  51851. */
  51852. function stackClear() {
  51853. this.__data__ = new ListCache;
  51854. }
  51855. /**
  51856. * Removes `key` and its value from the stack.
  51857. *
  51858. * @private
  51859. * @name delete
  51860. * @memberOf Stack
  51861. * @param {string} key The key of the value to remove.
  51862. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  51863. */
  51864. function stackDelete(key) {
  51865. return this.__data__['delete'](key);
  51866. }
  51867. /**
  51868. * Gets the stack value for `key`.
  51869. *
  51870. * @private
  51871. * @name get
  51872. * @memberOf Stack
  51873. * @param {string} key The key of the value to get.
  51874. * @returns {*} Returns the entry value.
  51875. */
  51876. function stackGet(key) {
  51877. return this.__data__.get(key);
  51878. }
  51879. /**
  51880. * Checks if a stack value for `key` exists.
  51881. *
  51882. * @private
  51883. * @name has
  51884. * @memberOf Stack
  51885. * @param {string} key The key of the entry to check.
  51886. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  51887. */
  51888. function stackHas(key) {
  51889. return this.__data__.has(key);
  51890. }
  51891. /**
  51892. * Sets the stack `key` to `value`.
  51893. *
  51894. * @private
  51895. * @name set
  51896. * @memberOf Stack
  51897. * @param {string} key The key of the value to set.
  51898. * @param {*} value The value to set.
  51899. * @returns {Object} Returns the stack cache instance.
  51900. */
  51901. function stackSet(key, value) {
  51902. var cache = this.__data__;
  51903. if (cache instanceof ListCache) {
  51904. var pairs = cache.__data__;
  51905. if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
  51906. pairs.push([key, value]);
  51907. return this;
  51908. }
  51909. cache = this.__data__ = new MapCache(pairs);
  51910. }
  51911. cache.set(key, value);
  51912. return this;
  51913. }
  51914. // Add methods to `Stack`.
  51915. Stack.prototype.clear = stackClear;
  51916. Stack.prototype['delete'] = stackDelete;
  51917. Stack.prototype.get = stackGet;
  51918. Stack.prototype.has = stackHas;
  51919. Stack.prototype.set = stackSet;
  51920. /**
  51921. * Creates an array of the enumerable property names of the array-like `value`.
  51922. *
  51923. * @private
  51924. * @param {*} value The value to query.
  51925. * @param {boolean} inherited Specify returning inherited property names.
  51926. * @returns {Array} Returns the array of property names.
  51927. */
  51928. function arrayLikeKeys(value, inherited) {
  51929. // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
  51930. // Safari 9 makes `arguments.length` enumerable in strict mode.
  51931. var result = (isArray(value) || isArguments(value))
  51932. ? baseTimes(value.length, String)
  51933. : [];
  51934. var length = result.length,
  51935. skipIndexes = !!length;
  51936. for (var key in value) {
  51937. if ((inherited || hasOwnProperty.call(value, key)) &&
  51938. !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
  51939. result.push(key);
  51940. }
  51941. }
  51942. return result;
  51943. }
  51944. /**
  51945. * Gets the index at which the `key` is found in `array` of key-value pairs.
  51946. *
  51947. * @private
  51948. * @param {Array} array The array to inspect.
  51949. * @param {*} key The key to search for.
  51950. * @returns {number} Returns the index of the matched value, else `-1`.
  51951. */
  51952. function assocIndexOf(array, key) {
  51953. var length = array.length;
  51954. while (length--) {
  51955. if (eq(array[length][0], key)) {
  51956. return length;
  51957. }
  51958. }
  51959. return -1;
  51960. }
  51961. /**
  51962. * The base implementation of `_.forEach` without support for iteratee shorthands.
  51963. *
  51964. * @private
  51965. * @param {Array|Object} collection The collection to iterate over.
  51966. * @param {Function} iteratee The function invoked per iteration.
  51967. * @returns {Array|Object} Returns `collection`.
  51968. */
  51969. var baseEach = createBaseEach(baseForOwn);
  51970. /**
  51971. * The base implementation of `baseForOwn` which iterates over `object`
  51972. * properties returned by `keysFunc` and invokes `iteratee` for each property.
  51973. * Iteratee functions may exit iteration early by explicitly returning `false`.
  51974. *
  51975. * @private
  51976. * @param {Object} object The object to iterate over.
  51977. * @param {Function} iteratee The function invoked per iteration.
  51978. * @param {Function} keysFunc The function to get the keys of `object`.
  51979. * @returns {Object} Returns `object`.
  51980. */
  51981. var baseFor = createBaseFor();
  51982. /**
  51983. * The base implementation of `_.forOwn` without support for iteratee shorthands.
  51984. *
  51985. * @private
  51986. * @param {Object} object The object to iterate over.
  51987. * @param {Function} iteratee The function invoked per iteration.
  51988. * @returns {Object} Returns `object`.
  51989. */
  51990. function baseForOwn(object, iteratee) {
  51991. return object && baseFor(object, iteratee, keys);
  51992. }
  51993. /**
  51994. * The base implementation of `_.get` without support for default values.
  51995. *
  51996. * @private
  51997. * @param {Object} object The object to query.
  51998. * @param {Array|string} path The path of the property to get.
  51999. * @returns {*} Returns the resolved value.
  52000. */
  52001. function baseGet(object, path) {
  52002. path = isKey(path, object) ? [path] : castPath(path);
  52003. var index = 0,
  52004. length = path.length;
  52005. while (object != null && index < length) {
  52006. object = object[toKey(path[index++])];
  52007. }
  52008. return (index && index == length) ? object : undefined;
  52009. }
  52010. /**
  52011. * The base implementation of `getTag`.
  52012. *
  52013. * @private
  52014. * @param {*} value The value to query.
  52015. * @returns {string} Returns the `toStringTag`.
  52016. */
  52017. function baseGetTag(value) {
  52018. return objectToString.call(value);
  52019. }
  52020. /**
  52021. * The base implementation of `_.hasIn` without support for deep paths.
  52022. *
  52023. * @private
  52024. * @param {Object} [object] The object to query.
  52025. * @param {Array|string} key The key to check.
  52026. * @returns {boolean} Returns `true` if `key` exists, else `false`.
  52027. */
  52028. function baseHasIn(object, key) {
  52029. return object != null && key in Object(object);
  52030. }
  52031. /**
  52032. * The base implementation of `_.isEqual` which supports partial comparisons
  52033. * and tracks traversed objects.
  52034. *
  52035. * @private
  52036. * @param {*} value The value to compare.
  52037. * @param {*} other The other value to compare.
  52038. * @param {Function} [customizer] The function to customize comparisons.
  52039. * @param {boolean} [bitmask] The bitmask of comparison flags.
  52040. * The bitmask may be composed of the following flags:
  52041. * 1 - Unordered comparison
  52042. * 2 - Partial comparison
  52043. * @param {Object} [stack] Tracks traversed `value` and `other` objects.
  52044. * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
  52045. */
  52046. function baseIsEqual(value, other, customizer, bitmask, stack) {
  52047. if (value === other) {
  52048. return true;
  52049. }
  52050. if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
  52051. return value !== value && other !== other;
  52052. }
  52053. return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);
  52054. }
  52055. /**
  52056. * A specialized version of `baseIsEqual` for arrays and objects which performs
  52057. * deep comparisons and tracks traversed objects enabling objects with circular
  52058. * references to be compared.
  52059. *
  52060. * @private
  52061. * @param {Object} object The object to compare.
  52062. * @param {Object} other The other object to compare.
  52063. * @param {Function} equalFunc The function to determine equivalents of values.
  52064. * @param {Function} [customizer] The function to customize comparisons.
  52065. * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`
  52066. * for more details.
  52067. * @param {Object} [stack] Tracks traversed `object` and `other` objects.
  52068. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
  52069. */
  52070. function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
  52071. var objIsArr = isArray(object),
  52072. othIsArr = isArray(other),
  52073. objTag = arrayTag,
  52074. othTag = arrayTag;
  52075. if (!objIsArr) {
  52076. objTag = getTag(object);
  52077. objTag = objTag == argsTag ? objectTag : objTag;
  52078. }
  52079. if (!othIsArr) {
  52080. othTag = getTag(other);
  52081. othTag = othTag == argsTag ? objectTag : othTag;
  52082. }
  52083. var objIsObj = objTag == objectTag && !isHostObject(object),
  52084. othIsObj = othTag == objectTag && !isHostObject(other),
  52085. isSameTag = objTag == othTag;
  52086. if (isSameTag && !objIsObj) {
  52087. stack || (stack = new Stack);
  52088. return (objIsArr || isTypedArray(object))
  52089. ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)
  52090. : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
  52091. }
  52092. if (!(bitmask & PARTIAL_COMPARE_FLAG)) {
  52093. var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
  52094. othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
  52095. if (objIsWrapped || othIsWrapped) {
  52096. var objUnwrapped = objIsWrapped ? object.value() : object,
  52097. othUnwrapped = othIsWrapped ? other.value() : other;
  52098. stack || (stack = new Stack);
  52099. return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);
  52100. }
  52101. }
  52102. if (!isSameTag) {
  52103. return false;
  52104. }
  52105. stack || (stack = new Stack);
  52106. return equalObjects(object, other, equalFunc, customizer, bitmask, stack);
  52107. }
  52108. /**
  52109. * The base implementation of `_.isMatch` without support for iteratee shorthands.
  52110. *
  52111. * @private
  52112. * @param {Object} object The object to inspect.
  52113. * @param {Object} source The object of property values to match.
  52114. * @param {Array} matchData The property names, values, and compare flags to match.
  52115. * @param {Function} [customizer] The function to customize comparisons.
  52116. * @returns {boolean} Returns `true` if `object` is a match, else `false`.
  52117. */
  52118. function baseIsMatch(object, source, matchData, customizer) {
  52119. var index = matchData.length,
  52120. length = index,
  52121. noCustomizer = !customizer;
  52122. if (object == null) {
  52123. return !length;
  52124. }
  52125. object = Object(object);
  52126. while (index--) {
  52127. var data = matchData[index];
  52128. if ((noCustomizer && data[2])
  52129. ? data[1] !== object[data[0]]
  52130. : !(data[0] in object)
  52131. ) {
  52132. return false;
  52133. }
  52134. }
  52135. while (++index < length) {
  52136. data = matchData[index];
  52137. var key = data[0],
  52138. objValue = object[key],
  52139. srcValue = data[1];
  52140. if (noCustomizer && data[2]) {
  52141. if (objValue === undefined && !(key in object)) {
  52142. return false;
  52143. }
  52144. } else {
  52145. var stack = new Stack;
  52146. if (customizer) {
  52147. var result = customizer(objValue, srcValue, key, object, source, stack);
  52148. }
  52149. if (!(result === undefined
  52150. ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)
  52151. : result
  52152. )) {
  52153. return false;
  52154. }
  52155. }
  52156. }
  52157. return true;
  52158. }
  52159. /**
  52160. * The base implementation of `_.isNative` without bad shim checks.
  52161. *
  52162. * @private
  52163. * @param {*} value The value to check.
  52164. * @returns {boolean} Returns `true` if `value` is a native function,
  52165. * else `false`.
  52166. */
  52167. function baseIsNative(value) {
  52168. if (!isObject(value) || isMasked(value)) {
  52169. return false;
  52170. }
  52171. var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
  52172. return pattern.test(toSource(value));
  52173. }
  52174. /**
  52175. * The base implementation of `_.isTypedArray` without Node.js optimizations.
  52176. *
  52177. * @private
  52178. * @param {*} value The value to check.
  52179. * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
  52180. */
  52181. function baseIsTypedArray(value) {
  52182. return isObjectLike(value) &&
  52183. isLength(value.length) && !!typedArrayTags[objectToString.call(value)];
  52184. }
  52185. /**
  52186. * The base implementation of `_.iteratee`.
  52187. *
  52188. * @private
  52189. * @param {*} [value=_.identity] The value to convert to an iteratee.
  52190. * @returns {Function} Returns the iteratee.
  52191. */
  52192. function baseIteratee(value) {
  52193. // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
  52194. // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
  52195. if (typeof value == 'function') {
  52196. return value;
  52197. }
  52198. if (value == null) {
  52199. return identity;
  52200. }
  52201. if (typeof value == 'object') {
  52202. return isArray(value)
  52203. ? baseMatchesProperty(value[0], value[1])
  52204. : baseMatches(value);
  52205. }
  52206. return property(value);
  52207. }
  52208. /**
  52209. * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
  52210. *
  52211. * @private
  52212. * @param {Object} object The object to query.
  52213. * @returns {Array} Returns the array of property names.
  52214. */
  52215. function baseKeys(object) {
  52216. if (!isPrototype(object)) {
  52217. return nativeKeys(object);
  52218. }
  52219. var result = [];
  52220. for (var key in Object(object)) {
  52221. if (hasOwnProperty.call(object, key) && key != 'constructor') {
  52222. result.push(key);
  52223. }
  52224. }
  52225. return result;
  52226. }
  52227. /**
  52228. * The base implementation of `_.map` without support for iteratee shorthands.
  52229. *
  52230. * @private
  52231. * @param {Array|Object} collection The collection to iterate over.
  52232. * @param {Function} iteratee The function invoked per iteration.
  52233. * @returns {Array} Returns the new mapped array.
  52234. */
  52235. function baseMap(collection, iteratee) {
  52236. var index = -1,
  52237. result = isArrayLike(collection) ? Array(collection.length) : [];
  52238. baseEach(collection, function(value, key, collection) {
  52239. result[++index] = iteratee(value, key, collection);
  52240. });
  52241. return result;
  52242. }
  52243. /**
  52244. * The base implementation of `_.matches` which doesn't clone `source`.
  52245. *
  52246. * @private
  52247. * @param {Object} source The object of property values to match.
  52248. * @returns {Function} Returns the new spec function.
  52249. */
  52250. function baseMatches(source) {
  52251. var matchData = getMatchData(source);
  52252. if (matchData.length == 1 && matchData[0][2]) {
  52253. return matchesStrictComparable(matchData[0][0], matchData[0][1]);
  52254. }
  52255. return function(object) {
  52256. return object === source || baseIsMatch(object, source, matchData);
  52257. };
  52258. }
  52259. /**
  52260. * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
  52261. *
  52262. * @private
  52263. * @param {string} path The path of the property to get.
  52264. * @param {*} srcValue The value to match.
  52265. * @returns {Function} Returns the new spec function.
  52266. */
  52267. function baseMatchesProperty(path, srcValue) {
  52268. if (isKey(path) && isStrictComparable(srcValue)) {
  52269. return matchesStrictComparable(toKey(path), srcValue);
  52270. }
  52271. return function(object) {
  52272. var objValue = get(object, path);
  52273. return (objValue === undefined && objValue === srcValue)
  52274. ? hasIn(object, path)
  52275. : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);
  52276. };
  52277. }
  52278. /**
  52279. * The base implementation of `_.orderBy` without param guards.
  52280. *
  52281. * @private
  52282. * @param {Array|Object} collection The collection to iterate over.
  52283. * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
  52284. * @param {string[]} orders The sort orders of `iteratees`.
  52285. * @returns {Array} Returns the new sorted array.
  52286. */
  52287. function baseOrderBy(collection, iteratees, orders) {
  52288. var index = -1;
  52289. iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));
  52290. var result = baseMap(collection, function(value, key, collection) {
  52291. var criteria = arrayMap(iteratees, function(iteratee) {
  52292. return iteratee(value);
  52293. });
  52294. return { 'criteria': criteria, 'index': ++index, 'value': value };
  52295. });
  52296. return baseSortBy(result, function(object, other) {
  52297. return compareMultiple(object, other, orders);
  52298. });
  52299. }
  52300. /**
  52301. * A specialized version of `baseProperty` which supports deep paths.
  52302. *
  52303. * @private
  52304. * @param {Array|string} path The path of the property to get.
  52305. * @returns {Function} Returns the new accessor function.
  52306. */
  52307. function basePropertyDeep(path) {
  52308. return function(object) {
  52309. return baseGet(object, path);
  52310. };
  52311. }
  52312. /**
  52313. * The base implementation of `_.toString` which doesn't convert nullish
  52314. * values to empty strings.
  52315. *
  52316. * @private
  52317. * @param {*} value The value to process.
  52318. * @returns {string} Returns the string.
  52319. */
  52320. function baseToString(value) {
  52321. // Exit early for strings to avoid a performance hit in some environments.
  52322. if (typeof value == 'string') {
  52323. return value;
  52324. }
  52325. if (isSymbol(value)) {
  52326. return symbolToString ? symbolToString.call(value) : '';
  52327. }
  52328. var result = (value + '');
  52329. return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
  52330. }
  52331. /**
  52332. * Casts `value` to a path array if it's not one.
  52333. *
  52334. * @private
  52335. * @param {*} value The value to inspect.
  52336. * @returns {Array} Returns the cast property path array.
  52337. */
  52338. function castPath(value) {
  52339. return isArray(value) ? value : stringToPath(value);
  52340. }
  52341. /**
  52342. * Compares values to sort them in ascending order.
  52343. *
  52344. * @private
  52345. * @param {*} value The value to compare.
  52346. * @param {*} other The other value to compare.
  52347. * @returns {number} Returns the sort order indicator for `value`.
  52348. */
  52349. function compareAscending(value, other) {
  52350. if (value !== other) {
  52351. var valIsDefined = value !== undefined,
  52352. valIsNull = value === null,
  52353. valIsReflexive = value === value,
  52354. valIsSymbol = isSymbol(value);
  52355. var othIsDefined = other !== undefined,
  52356. othIsNull = other === null,
  52357. othIsReflexive = other === other,
  52358. othIsSymbol = isSymbol(other);
  52359. if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
  52360. (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
  52361. (valIsNull && othIsDefined && othIsReflexive) ||
  52362. (!valIsDefined && othIsReflexive) ||
  52363. !valIsReflexive) {
  52364. return 1;
  52365. }
  52366. if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
  52367. (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
  52368. (othIsNull && valIsDefined && valIsReflexive) ||
  52369. (!othIsDefined && valIsReflexive) ||
  52370. !othIsReflexive) {
  52371. return -1;
  52372. }
  52373. }
  52374. return 0;
  52375. }
  52376. /**
  52377. * Used by `_.orderBy` to compare multiple properties of a value to another
  52378. * and stable sort them.
  52379. *
  52380. * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
  52381. * specify an order of "desc" for descending or "asc" for ascending sort order
  52382. * of corresponding values.
  52383. *
  52384. * @private
  52385. * @param {Object} object The object to compare.
  52386. * @param {Object} other The other object to compare.
  52387. * @param {boolean[]|string[]} orders The order to sort by for each property.
  52388. * @returns {number} Returns the sort order indicator for `object`.
  52389. */
  52390. function compareMultiple(object, other, orders) {
  52391. var index = -1,
  52392. objCriteria = object.criteria,
  52393. othCriteria = other.criteria,
  52394. length = objCriteria.length,
  52395. ordersLength = orders.length;
  52396. while (++index < length) {
  52397. var result = compareAscending(objCriteria[index], othCriteria[index]);
  52398. if (result) {
  52399. if (index >= ordersLength) {
  52400. return result;
  52401. }
  52402. var order = orders[index];
  52403. return result * (order == 'desc' ? -1 : 1);
  52404. }
  52405. }
  52406. // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
  52407. // that causes it, under certain circumstances, to provide the same value for
  52408. // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
  52409. // for more details.
  52410. //
  52411. // This also ensures a stable sort in V8 and other engines.
  52412. // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
  52413. return object.index - other.index;
  52414. }
  52415. /**
  52416. * Creates a `baseEach` or `baseEachRight` function.
  52417. *
  52418. * @private
  52419. * @param {Function} eachFunc The function to iterate over a collection.
  52420. * @param {boolean} [fromRight] Specify iterating from right to left.
  52421. * @returns {Function} Returns the new base function.
  52422. */
  52423. function createBaseEach(eachFunc, fromRight) {
  52424. return function(collection, iteratee) {
  52425. if (collection == null) {
  52426. return collection;
  52427. }
  52428. if (!isArrayLike(collection)) {
  52429. return eachFunc(collection, iteratee);
  52430. }
  52431. var length = collection.length,
  52432. index = fromRight ? length : -1,
  52433. iterable = Object(collection);
  52434. while ((fromRight ? index-- : ++index < length)) {
  52435. if (iteratee(iterable[index], index, iterable) === false) {
  52436. break;
  52437. }
  52438. }
  52439. return collection;
  52440. };
  52441. }
  52442. /**
  52443. * Creates a base function for methods like `_.forIn` and `_.forOwn`.
  52444. *
  52445. * @private
  52446. * @param {boolean} [fromRight] Specify iterating from right to left.
  52447. * @returns {Function} Returns the new base function.
  52448. */
  52449. function createBaseFor(fromRight) {
  52450. return function(object, iteratee, keysFunc) {
  52451. var index = -1,
  52452. iterable = Object(object),
  52453. props = keysFunc(object),
  52454. length = props.length;
  52455. while (length--) {
  52456. var key = props[fromRight ? length : ++index];
  52457. if (iteratee(iterable[key], key, iterable) === false) {
  52458. break;
  52459. }
  52460. }
  52461. return object;
  52462. };
  52463. }
  52464. /**
  52465. * A specialized version of `baseIsEqualDeep` for arrays with support for
  52466. * partial deep comparisons.
  52467. *
  52468. * @private
  52469. * @param {Array} array The array to compare.
  52470. * @param {Array} other The other array to compare.
  52471. * @param {Function} equalFunc The function to determine equivalents of values.
  52472. * @param {Function} customizer The function to customize comparisons.
  52473. * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
  52474. * for more details.
  52475. * @param {Object} stack Tracks traversed `array` and `other` objects.
  52476. * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
  52477. */
  52478. function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
  52479. var isPartial = bitmask & PARTIAL_COMPARE_FLAG,
  52480. arrLength = array.length,
  52481. othLength = other.length;
  52482. if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
  52483. return false;
  52484. }
  52485. // Assume cyclic values are equal.
  52486. var stacked = stack.get(array);
  52487. if (stacked && stack.get(other)) {
  52488. return stacked == other;
  52489. }
  52490. var index = -1,
  52491. result = true,
  52492. seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;
  52493. stack.set(array, other);
  52494. stack.set(other, array);
  52495. // Ignore non-index properties.
  52496. while (++index < arrLength) {
  52497. var arrValue = array[index],
  52498. othValue = other[index];
  52499. if (customizer) {
  52500. var compared = isPartial
  52501. ? customizer(othValue, arrValue, index, other, array, stack)
  52502. : customizer(arrValue, othValue, index, array, other, stack);
  52503. }
  52504. if (compared !== undefined) {
  52505. if (compared) {
  52506. continue;
  52507. }
  52508. result = false;
  52509. break;
  52510. }
  52511. // Recursively compare arrays (susceptible to call stack limits).
  52512. if (seen) {
  52513. if (!arraySome(other, function(othValue, othIndex) {
  52514. if (!seen.has(othIndex) &&
  52515. (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
  52516. return seen.add(othIndex);
  52517. }
  52518. })) {
  52519. result = false;
  52520. break;
  52521. }
  52522. } else if (!(
  52523. arrValue === othValue ||
  52524. equalFunc(arrValue, othValue, customizer, bitmask, stack)
  52525. )) {
  52526. result = false;
  52527. break;
  52528. }
  52529. }
  52530. stack['delete'](array);
  52531. stack['delete'](other);
  52532. return result;
  52533. }
  52534. /**
  52535. * A specialized version of `baseIsEqualDeep` for comparing objects of
  52536. * the same `toStringTag`.
  52537. *
  52538. * **Note:** This function only supports comparing values with tags of
  52539. * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
  52540. *
  52541. * @private
  52542. * @param {Object} object The object to compare.
  52543. * @param {Object} other The other object to compare.
  52544. * @param {string} tag The `toStringTag` of the objects to compare.
  52545. * @param {Function} equalFunc The function to determine equivalents of values.
  52546. * @param {Function} customizer The function to customize comparisons.
  52547. * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
  52548. * for more details.
  52549. * @param {Object} stack Tracks traversed `object` and `other` objects.
  52550. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
  52551. */
  52552. function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
  52553. switch (tag) {
  52554. case dataViewTag:
  52555. if ((object.byteLength != other.byteLength) ||
  52556. (object.byteOffset != other.byteOffset)) {
  52557. return false;
  52558. }
  52559. object = object.buffer;
  52560. other = other.buffer;
  52561. case arrayBufferTag:
  52562. if ((object.byteLength != other.byteLength) ||
  52563. !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
  52564. return false;
  52565. }
  52566. return true;
  52567. case boolTag:
  52568. case dateTag:
  52569. case numberTag:
  52570. // Coerce booleans to `1` or `0` and dates to milliseconds.
  52571. // Invalid dates are coerced to `NaN`.
  52572. return eq(+object, +other);
  52573. case errorTag:
  52574. return object.name == other.name && object.message == other.message;
  52575. case regexpTag:
  52576. case stringTag:
  52577. // Coerce regexes to strings and treat strings, primitives and objects,
  52578. // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
  52579. // for more details.
  52580. return object == (other + '');
  52581. case mapTag:
  52582. var convert = mapToArray;
  52583. case setTag:
  52584. var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
  52585. convert || (convert = setToArray);
  52586. if (object.size != other.size && !isPartial) {
  52587. return false;
  52588. }
  52589. // Assume cyclic values are equal.
  52590. var stacked = stack.get(object);
  52591. if (stacked) {
  52592. return stacked == other;
  52593. }
  52594. bitmask |= UNORDERED_COMPARE_FLAG;
  52595. // Recursively compare objects (susceptible to call stack limits).
  52596. stack.set(object, other);
  52597. var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);
  52598. stack['delete'](object);
  52599. return result;
  52600. case symbolTag:
  52601. if (symbolValueOf) {
  52602. return symbolValueOf.call(object) == symbolValueOf.call(other);
  52603. }
  52604. }
  52605. return false;
  52606. }
  52607. /**
  52608. * A specialized version of `baseIsEqualDeep` for objects with support for
  52609. * partial deep comparisons.
  52610. *
  52611. * @private
  52612. * @param {Object} object The object to compare.
  52613. * @param {Object} other The other object to compare.
  52614. * @param {Function} equalFunc The function to determine equivalents of values.
  52615. * @param {Function} customizer The function to customize comparisons.
  52616. * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
  52617. * for more details.
  52618. * @param {Object} stack Tracks traversed `object` and `other` objects.
  52619. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
  52620. */
  52621. function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
  52622. var isPartial = bitmask & PARTIAL_COMPARE_FLAG,
  52623. objProps = keys(object),
  52624. objLength = objProps.length,
  52625. othProps = keys(other),
  52626. othLength = othProps.length;
  52627. if (objLength != othLength && !isPartial) {
  52628. return false;
  52629. }
  52630. var index = objLength;
  52631. while (index--) {
  52632. var key = objProps[index];
  52633. if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
  52634. return false;
  52635. }
  52636. }
  52637. // Assume cyclic values are equal.
  52638. var stacked = stack.get(object);
  52639. if (stacked && stack.get(other)) {
  52640. return stacked == other;
  52641. }
  52642. var result = true;
  52643. stack.set(object, other);
  52644. stack.set(other, object);
  52645. var skipCtor = isPartial;
  52646. while (++index < objLength) {
  52647. key = objProps[index];
  52648. var objValue = object[key],
  52649. othValue = other[key];
  52650. if (customizer) {
  52651. var compared = isPartial
  52652. ? customizer(othValue, objValue, key, other, object, stack)
  52653. : customizer(objValue, othValue, key, object, other, stack);
  52654. }
  52655. // Recursively compare objects (susceptible to call stack limits).
  52656. if (!(compared === undefined
  52657. ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))
  52658. : compared
  52659. )) {
  52660. result = false;
  52661. break;
  52662. }
  52663. skipCtor || (skipCtor = key == 'constructor');
  52664. }
  52665. if (result && !skipCtor) {
  52666. var objCtor = object.constructor,
  52667. othCtor = other.constructor;
  52668. // Non `Object` object instances with different constructors are not equal.
  52669. if (objCtor != othCtor &&
  52670. ('constructor' in object && 'constructor' in other) &&
  52671. !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
  52672. typeof othCtor == 'function' && othCtor instanceof othCtor)) {
  52673. result = false;
  52674. }
  52675. }
  52676. stack['delete'](object);
  52677. stack['delete'](other);
  52678. return result;
  52679. }
  52680. /**
  52681. * Gets the data for `map`.
  52682. *
  52683. * @private
  52684. * @param {Object} map The map to query.
  52685. * @param {string} key The reference key.
  52686. * @returns {*} Returns the map data.
  52687. */
  52688. function getMapData(map, key) {
  52689. var data = map.__data__;
  52690. return isKeyable(key)
  52691. ? data[typeof key == 'string' ? 'string' : 'hash']
  52692. : data.map;
  52693. }
  52694. /**
  52695. * Gets the property names, values, and compare flags of `object`.
  52696. *
  52697. * @private
  52698. * @param {Object} object The object to query.
  52699. * @returns {Array} Returns the match data of `object`.
  52700. */
  52701. function getMatchData(object) {
  52702. var result = keys(object),
  52703. length = result.length;
  52704. while (length--) {
  52705. var key = result[length],
  52706. value = object[key];
  52707. result[length] = [key, value, isStrictComparable(value)];
  52708. }
  52709. return result;
  52710. }
  52711. /**
  52712. * Gets the native function at `key` of `object`.
  52713. *
  52714. * @private
  52715. * @param {Object} object The object to query.
  52716. * @param {string} key The key of the method to get.
  52717. * @returns {*} Returns the function if it's native, else `undefined`.
  52718. */
  52719. function getNative(object, key) {
  52720. var value = getValue(object, key);
  52721. return baseIsNative(value) ? value : undefined;
  52722. }
  52723. /**
  52724. * Gets the `toStringTag` of `value`.
  52725. *
  52726. * @private
  52727. * @param {*} value The value to query.
  52728. * @returns {string} Returns the `toStringTag`.
  52729. */
  52730. var getTag = baseGetTag;
  52731. // Fallback for data views, maps, sets, and weak maps in IE 11,
  52732. // for data views in Edge < 14, and promises in Node.js.
  52733. if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
  52734. (Map && getTag(new Map) != mapTag) ||
  52735. (Promise && getTag(Promise.resolve()) != promiseTag) ||
  52736. (Set && getTag(new Set) != setTag) ||
  52737. (WeakMap && getTag(new WeakMap) != weakMapTag)) {
  52738. getTag = function(value) {
  52739. var result = objectToString.call(value),
  52740. Ctor = result == objectTag ? value.constructor : undefined,
  52741. ctorString = Ctor ? toSource(Ctor) : undefined;
  52742. if (ctorString) {
  52743. switch (ctorString) {
  52744. case dataViewCtorString: return dataViewTag;
  52745. case mapCtorString: return mapTag;
  52746. case promiseCtorString: return promiseTag;
  52747. case setCtorString: return setTag;
  52748. case weakMapCtorString: return weakMapTag;
  52749. }
  52750. }
  52751. return result;
  52752. };
  52753. }
  52754. /**
  52755. * Checks if `path` exists on `object`.
  52756. *
  52757. * @private
  52758. * @param {Object} object The object to query.
  52759. * @param {Array|string} path The path to check.
  52760. * @param {Function} hasFunc The function to check properties.
  52761. * @returns {boolean} Returns `true` if `path` exists, else `false`.
  52762. */
  52763. function hasPath(object, path, hasFunc) {
  52764. path = isKey(path, object) ? [path] : castPath(path);
  52765. var result,
  52766. index = -1,
  52767. length = path.length;
  52768. while (++index < length) {
  52769. var key = toKey(path[index]);
  52770. if (!(result = object != null && hasFunc(object, key))) {
  52771. break;
  52772. }
  52773. object = object[key];
  52774. }
  52775. if (result) {
  52776. return result;
  52777. }
  52778. var length = object ? object.length : 0;
  52779. return !!length && isLength(length) && isIndex(key, length) &&
  52780. (isArray(object) || isArguments(object));
  52781. }
  52782. /**
  52783. * Checks if `value` is a valid array-like index.
  52784. *
  52785. * @private
  52786. * @param {*} value The value to check.
  52787. * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
  52788. * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
  52789. */
  52790. function isIndex(value, length) {
  52791. length = length == null ? MAX_SAFE_INTEGER : length;
  52792. return !!length &&
  52793. (typeof value == 'number' || reIsUint.test(value)) &&
  52794. (value > -1 && value % 1 == 0 && value < length);
  52795. }
  52796. /**
  52797. * Checks if `value` is a property name and not a property path.
  52798. *
  52799. * @private
  52800. * @param {*} value The value to check.
  52801. * @param {Object} [object] The object to query keys on.
  52802. * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
  52803. */
  52804. function isKey(value, object) {
  52805. if (isArray(value)) {
  52806. return false;
  52807. }
  52808. var type = typeof value;
  52809. if (type == 'number' || type == 'symbol' || type == 'boolean' ||
  52810. value == null || isSymbol(value)) {
  52811. return true;
  52812. }
  52813. return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
  52814. (object != null && value in Object(object));
  52815. }
  52816. /**
  52817. * Checks if `value` is suitable for use as unique object key.
  52818. *
  52819. * @private
  52820. * @param {*} value The value to check.
  52821. * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
  52822. */
  52823. function isKeyable(value) {
  52824. var type = typeof value;
  52825. return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
  52826. ? (value !== '__proto__')
  52827. : (value === null);
  52828. }
  52829. /**
  52830. * Checks if `func` has its source masked.
  52831. *
  52832. * @private
  52833. * @param {Function} func The function to check.
  52834. * @returns {boolean} Returns `true` if `func` is masked, else `false`.
  52835. */
  52836. function isMasked(func) {
  52837. return !!maskSrcKey && (maskSrcKey in func);
  52838. }
  52839. /**
  52840. * Checks if `value` is likely a prototype object.
  52841. *
  52842. * @private
  52843. * @param {*} value The value to check.
  52844. * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
  52845. */
  52846. function isPrototype(value) {
  52847. var Ctor = value && value.constructor,
  52848. proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
  52849. return value === proto;
  52850. }
  52851. /**
  52852. * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
  52853. *
  52854. * @private
  52855. * @param {*} value The value to check.
  52856. * @returns {boolean} Returns `true` if `value` if suitable for strict
  52857. * equality comparisons, else `false`.
  52858. */
  52859. function isStrictComparable(value) {
  52860. return value === value && !isObject(value);
  52861. }
  52862. /**
  52863. * A specialized version of `matchesProperty` for source values suitable
  52864. * for strict equality comparisons, i.e. `===`.
  52865. *
  52866. * @private
  52867. * @param {string} key The key of the property to get.
  52868. * @param {*} srcValue The value to match.
  52869. * @returns {Function} Returns the new spec function.
  52870. */
  52871. function matchesStrictComparable(key, srcValue) {
  52872. return function(object) {
  52873. if (object == null) {
  52874. return false;
  52875. }
  52876. return object[key] === srcValue &&
  52877. (srcValue !== undefined || (key in Object(object)));
  52878. };
  52879. }
  52880. /**
  52881. * Converts `string` to a property path array.
  52882. *
  52883. * @private
  52884. * @param {string} string The string to convert.
  52885. * @returns {Array} Returns the property path array.
  52886. */
  52887. var stringToPath = memoize(function(string) {
  52888. string = toString(string);
  52889. var result = [];
  52890. if (reLeadingDot.test(string)) {
  52891. result.push('');
  52892. }
  52893. string.replace(rePropName, function(match, number, quote, string) {
  52894. result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
  52895. });
  52896. return result;
  52897. });
  52898. /**
  52899. * Converts `value` to a string key if it's not a string or symbol.
  52900. *
  52901. * @private
  52902. * @param {*} value The value to inspect.
  52903. * @returns {string|symbol} Returns the key.
  52904. */
  52905. function toKey(value) {
  52906. if (typeof value == 'string' || isSymbol(value)) {
  52907. return value;
  52908. }
  52909. var result = (value + '');
  52910. return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
  52911. }
  52912. /**
  52913. * Converts `func` to its source code.
  52914. *
  52915. * @private
  52916. * @param {Function} func The function to process.
  52917. * @returns {string} Returns the source code.
  52918. */
  52919. function toSource(func) {
  52920. if (func != null) {
  52921. try {
  52922. return funcToString.call(func);
  52923. } catch (e) {}
  52924. try {
  52925. return (func + '');
  52926. } catch (e) {}
  52927. }
  52928. return '';
  52929. }
  52930. /**
  52931. * This method is like `_.sortBy` except that it allows specifying the sort
  52932. * orders of the iteratees to sort by. If `orders` is unspecified, all values
  52933. * are sorted in ascending order. Otherwise, specify an order of "desc" for
  52934. * descending or "asc" for ascending sort order of corresponding values.
  52935. *
  52936. * @static
  52937. * @memberOf _
  52938. * @since 4.0.0
  52939. * @category Collection
  52940. * @param {Array|Object} collection The collection to iterate over.
  52941. * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
  52942. * The iteratees to sort by.
  52943. * @param {string[]} [orders] The sort orders of `iteratees`.
  52944. * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
  52945. * @returns {Array} Returns the new sorted array.
  52946. * @example
  52947. *
  52948. * var users = [
  52949. * { 'user': 'fred', 'age': 48 },
  52950. * { 'user': 'barney', 'age': 34 },
  52951. * { 'user': 'fred', 'age': 40 },
  52952. * { 'user': 'barney', 'age': 36 }
  52953. * ];
  52954. *
  52955. * // Sort by `user` in ascending order and by `age` in descending order.
  52956. * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
  52957. * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
  52958. */
  52959. function orderBy(collection, iteratees, orders, guard) {
  52960. if (collection == null) {
  52961. return [];
  52962. }
  52963. if (!isArray(iteratees)) {
  52964. iteratees = iteratees == null ? [] : [iteratees];
  52965. }
  52966. orders = guard ? undefined : orders;
  52967. if (!isArray(orders)) {
  52968. orders = orders == null ? [] : [orders];
  52969. }
  52970. return baseOrderBy(collection, iteratees, orders);
  52971. }
  52972. /**
  52973. * Creates a function that memoizes the result of `func`. If `resolver` is
  52974. * provided, it determines the cache key for storing the result based on the
  52975. * arguments provided to the memoized function. By default, the first argument
  52976. * provided to the memoized function is used as the map cache key. The `func`
  52977. * is invoked with the `this` binding of the memoized function.
  52978. *
  52979. * **Note:** The cache is exposed as the `cache` property on the memoized
  52980. * function. Its creation may be customized by replacing the `_.memoize.Cache`
  52981. * constructor with one whose instances implement the
  52982. * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
  52983. * method interface of `delete`, `get`, `has`, and `set`.
  52984. *
  52985. * @static
  52986. * @memberOf _
  52987. * @since 0.1.0
  52988. * @category Function
  52989. * @param {Function} func The function to have its output memoized.
  52990. * @param {Function} [resolver] The function to resolve the cache key.
  52991. * @returns {Function} Returns the new memoized function.
  52992. * @example
  52993. *
  52994. * var object = { 'a': 1, 'b': 2 };
  52995. * var other = { 'c': 3, 'd': 4 };
  52996. *
  52997. * var values = _.memoize(_.values);
  52998. * values(object);
  52999. * // => [1, 2]
  53000. *
  53001. * values(other);
  53002. * // => [3, 4]
  53003. *
  53004. * object.a = 2;
  53005. * values(object);
  53006. * // => [1, 2]
  53007. *
  53008. * // Modify the result cache.
  53009. * values.cache.set(object, ['a', 'b']);
  53010. * values(object);
  53011. * // => ['a', 'b']
  53012. *
  53013. * // Replace `_.memoize.Cache`.
  53014. * _.memoize.Cache = WeakMap;
  53015. */
  53016. function memoize(func, resolver) {
  53017. if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
  53018. throw new TypeError(FUNC_ERROR_TEXT);
  53019. }
  53020. var memoized = function() {
  53021. var args = arguments,
  53022. key = resolver ? resolver.apply(this, args) : args[0],
  53023. cache = memoized.cache;
  53024. if (cache.has(key)) {
  53025. return cache.get(key);
  53026. }
  53027. var result = func.apply(this, args);
  53028. memoized.cache = cache.set(key, result);
  53029. return result;
  53030. };
  53031. memoized.cache = new (memoize.Cache || MapCache);
  53032. return memoized;
  53033. }
  53034. // Assign cache to `_.memoize`.
  53035. memoize.Cache = MapCache;
  53036. /**
  53037. * Performs a
  53038. * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  53039. * comparison between two values to determine if they are equivalent.
  53040. *
  53041. * @static
  53042. * @memberOf _
  53043. * @since 4.0.0
  53044. * @category Lang
  53045. * @param {*} value The value to compare.
  53046. * @param {*} other The other value to compare.
  53047. * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
  53048. * @example
  53049. *
  53050. * var object = { 'a': 1 };
  53051. * var other = { 'a': 1 };
  53052. *
  53053. * _.eq(object, object);
  53054. * // => true
  53055. *
  53056. * _.eq(object, other);
  53057. * // => false
  53058. *
  53059. * _.eq('a', 'a');
  53060. * // => true
  53061. *
  53062. * _.eq('a', Object('a'));
  53063. * // => false
  53064. *
  53065. * _.eq(NaN, NaN);
  53066. * // => true
  53067. */
  53068. function eq(value, other) {
  53069. return value === other || (value !== value && other !== other);
  53070. }
  53071. /**
  53072. * Checks if `value` is likely an `arguments` object.
  53073. *
  53074. * @static
  53075. * @memberOf _
  53076. * @since 0.1.0
  53077. * @category Lang
  53078. * @param {*} value The value to check.
  53079. * @returns {boolean} Returns `true` if `value` is an `arguments` object,
  53080. * else `false`.
  53081. * @example
  53082. *
  53083. * _.isArguments(function() { return arguments; }());
  53084. * // => true
  53085. *
  53086. * _.isArguments([1, 2, 3]);
  53087. * // => false
  53088. */
  53089. function isArguments(value) {
  53090. // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
  53091. return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
  53092. (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
  53093. }
  53094. /**
  53095. * Checks if `value` is classified as an `Array` object.
  53096. *
  53097. * @static
  53098. * @memberOf _
  53099. * @since 0.1.0
  53100. * @category Lang
  53101. * @param {*} value The value to check.
  53102. * @returns {boolean} Returns `true` if `value` is an array, else `false`.
  53103. * @example
  53104. *
  53105. * _.isArray([1, 2, 3]);
  53106. * // => true
  53107. *
  53108. * _.isArray(document.body.children);
  53109. * // => false
  53110. *
  53111. * _.isArray('abc');
  53112. * // => false
  53113. *
  53114. * _.isArray(_.noop);
  53115. * // => false
  53116. */
  53117. var isArray = Array.isArray;
  53118. /**
  53119. * Checks if `value` is array-like. A value is considered array-like if it's
  53120. * not a function and has a `value.length` that's an integer greater than or
  53121. * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
  53122. *
  53123. * @static
  53124. * @memberOf _
  53125. * @since 4.0.0
  53126. * @category Lang
  53127. * @param {*} value The value to check.
  53128. * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
  53129. * @example
  53130. *
  53131. * _.isArrayLike([1, 2, 3]);
  53132. * // => true
  53133. *
  53134. * _.isArrayLike(document.body.children);
  53135. * // => true
  53136. *
  53137. * _.isArrayLike('abc');
  53138. * // => true
  53139. *
  53140. * _.isArrayLike(_.noop);
  53141. * // => false
  53142. */
  53143. function isArrayLike(value) {
  53144. return value != null && isLength(value.length) && !isFunction(value);
  53145. }
  53146. /**
  53147. * This method is like `_.isArrayLike` except that it also checks if `value`
  53148. * is an object.
  53149. *
  53150. * @static
  53151. * @memberOf _
  53152. * @since 4.0.0
  53153. * @category Lang
  53154. * @param {*} value The value to check.
  53155. * @returns {boolean} Returns `true` if `value` is an array-like object,
  53156. * else `false`.
  53157. * @example
  53158. *
  53159. * _.isArrayLikeObject([1, 2, 3]);
  53160. * // => true
  53161. *
  53162. * _.isArrayLikeObject(document.body.children);
  53163. * // => true
  53164. *
  53165. * _.isArrayLikeObject('abc');
  53166. * // => false
  53167. *
  53168. * _.isArrayLikeObject(_.noop);
  53169. * // => false
  53170. */
  53171. function isArrayLikeObject(value) {
  53172. return isObjectLike(value) && isArrayLike(value);
  53173. }
  53174. /**
  53175. * Checks if `value` is classified as a `Function` object.
  53176. *
  53177. * @static
  53178. * @memberOf _
  53179. * @since 0.1.0
  53180. * @category Lang
  53181. * @param {*} value The value to check.
  53182. * @returns {boolean} Returns `true` if `value` is a function, else `false`.
  53183. * @example
  53184. *
  53185. * _.isFunction(_);
  53186. * // => true
  53187. *
  53188. * _.isFunction(/abc/);
  53189. * // => false
  53190. */
  53191. function isFunction(value) {
  53192. // The use of `Object#toString` avoids issues with the `typeof` operator
  53193. // in Safari 8-9 which returns 'object' for typed array and other constructors.
  53194. var tag = isObject(value) ? objectToString.call(value) : '';
  53195. return tag == funcTag || tag == genTag;
  53196. }
  53197. /**
  53198. * Checks if `value` is a valid array-like length.
  53199. *
  53200. * **Note:** This method is loosely based on
  53201. * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
  53202. *
  53203. * @static
  53204. * @memberOf _
  53205. * @since 4.0.0
  53206. * @category Lang
  53207. * @param {*} value The value to check.
  53208. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
  53209. * @example
  53210. *
  53211. * _.isLength(3);
  53212. * // => true
  53213. *
  53214. * _.isLength(Number.MIN_VALUE);
  53215. * // => false
  53216. *
  53217. * _.isLength(Infinity);
  53218. * // => false
  53219. *
  53220. * _.isLength('3');
  53221. * // => false
  53222. */
  53223. function isLength(value) {
  53224. return typeof value == 'number' &&
  53225. value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  53226. }
  53227. /**
  53228. * Checks if `value` is the
  53229. * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
  53230. * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
  53231. *
  53232. * @static
  53233. * @memberOf _
  53234. * @since 0.1.0
  53235. * @category Lang
  53236. * @param {*} value The value to check.
  53237. * @returns {boolean} Returns `true` if `value` is an object, else `false`.
  53238. * @example
  53239. *
  53240. * _.isObject({});
  53241. * // => true
  53242. *
  53243. * _.isObject([1, 2, 3]);
  53244. * // => true
  53245. *
  53246. * _.isObject(_.noop);
  53247. * // => true
  53248. *
  53249. * _.isObject(null);
  53250. * // => false
  53251. */
  53252. function isObject(value) {
  53253. var type = typeof value;
  53254. return !!value && (type == 'object' || type == 'function');
  53255. }
  53256. /**
  53257. * Checks if `value` is object-like. A value is object-like if it's not `null`
  53258. * and has a `typeof` result of "object".
  53259. *
  53260. * @static
  53261. * @memberOf _
  53262. * @since 4.0.0
  53263. * @category Lang
  53264. * @param {*} value The value to check.
  53265. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  53266. * @example
  53267. *
  53268. * _.isObjectLike({});
  53269. * // => true
  53270. *
  53271. * _.isObjectLike([1, 2, 3]);
  53272. * // => true
  53273. *
  53274. * _.isObjectLike(_.noop);
  53275. * // => false
  53276. *
  53277. * _.isObjectLike(null);
  53278. * // => false
  53279. */
  53280. function isObjectLike(value) {
  53281. return !!value && typeof value == 'object';
  53282. }
  53283. /**
  53284. * Checks if `value` is classified as a `Symbol` primitive or object.
  53285. *
  53286. * @static
  53287. * @memberOf _
  53288. * @since 4.0.0
  53289. * @category Lang
  53290. * @param {*} value The value to check.
  53291. * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
  53292. * @example
  53293. *
  53294. * _.isSymbol(Symbol.iterator);
  53295. * // => true
  53296. *
  53297. * _.isSymbol('abc');
  53298. * // => false
  53299. */
  53300. function isSymbol(value) {
  53301. return typeof value == 'symbol' ||
  53302. (isObjectLike(value) && objectToString.call(value) == symbolTag);
  53303. }
  53304. /**
  53305. * Checks if `value` is classified as a typed array.
  53306. *
  53307. * @static
  53308. * @memberOf _
  53309. * @since 3.0.0
  53310. * @category Lang
  53311. * @param {*} value The value to check.
  53312. * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
  53313. * @example
  53314. *
  53315. * _.isTypedArray(new Uint8Array);
  53316. * // => true
  53317. *
  53318. * _.isTypedArray([]);
  53319. * // => false
  53320. */
  53321. var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
  53322. /**
  53323. * Converts `value` to a string. An empty string is returned for `null`
  53324. * and `undefined` values. The sign of `-0` is preserved.
  53325. *
  53326. * @static
  53327. * @memberOf _
  53328. * @since 4.0.0
  53329. * @category Lang
  53330. * @param {*} value The value to process.
  53331. * @returns {string} Returns the string.
  53332. * @example
  53333. *
  53334. * _.toString(null);
  53335. * // => ''
  53336. *
  53337. * _.toString(-0);
  53338. * // => '-0'
  53339. *
  53340. * _.toString([1, 2, 3]);
  53341. * // => '1,2,3'
  53342. */
  53343. function toString(value) {
  53344. return value == null ? '' : baseToString(value);
  53345. }
  53346. /**
  53347. * Gets the value at `path` of `object`. If the resolved value is
  53348. * `undefined`, the `defaultValue` is returned in its place.
  53349. *
  53350. * @static
  53351. * @memberOf _
  53352. * @since 3.7.0
  53353. * @category Object
  53354. * @param {Object} object The object to query.
  53355. * @param {Array|string} path The path of the property to get.
  53356. * @param {*} [defaultValue] The value returned for `undefined` resolved values.
  53357. * @returns {*} Returns the resolved value.
  53358. * @example
  53359. *
  53360. * var object = { 'a': [{ 'b': { 'c': 3 } }] };
  53361. *
  53362. * _.get(object, 'a[0].b.c');
  53363. * // => 3
  53364. *
  53365. * _.get(object, ['a', '0', 'b', 'c']);
  53366. * // => 3
  53367. *
  53368. * _.get(object, 'a.b.c', 'default');
  53369. * // => 'default'
  53370. */
  53371. function get(object, path, defaultValue) {
  53372. var result = object == null ? undefined : baseGet(object, path);
  53373. return result === undefined ? defaultValue : result;
  53374. }
  53375. /**
  53376. * Checks if `path` is a direct or inherited property of `object`.
  53377. *
  53378. * @static
  53379. * @memberOf _
  53380. * @since 4.0.0
  53381. * @category Object
  53382. * @param {Object} object The object to query.
  53383. * @param {Array|string} path The path to check.
  53384. * @returns {boolean} Returns `true` if `path` exists, else `false`.
  53385. * @example
  53386. *
  53387. * var object = _.create({ 'a': _.create({ 'b': 2 }) });
  53388. *
  53389. * _.hasIn(object, 'a');
  53390. * // => true
  53391. *
  53392. * _.hasIn(object, 'a.b');
  53393. * // => true
  53394. *
  53395. * _.hasIn(object, ['a', 'b']);
  53396. * // => true
  53397. *
  53398. * _.hasIn(object, 'b');
  53399. * // => false
  53400. */
  53401. function hasIn(object, path) {
  53402. return object != null && hasPath(object, path, baseHasIn);
  53403. }
  53404. /**
  53405. * Creates an array of the own enumerable property names of `object`.
  53406. *
  53407. * **Note:** Non-object values are coerced to objects. See the
  53408. * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
  53409. * for more details.
  53410. *
  53411. * @static
  53412. * @since 0.1.0
  53413. * @memberOf _
  53414. * @category Object
  53415. * @param {Object} object The object to query.
  53416. * @returns {Array} Returns the array of property names.
  53417. * @example
  53418. *
  53419. * function Foo() {
  53420. * this.a = 1;
  53421. * this.b = 2;
  53422. * }
  53423. *
  53424. * Foo.prototype.c = 3;
  53425. *
  53426. * _.keys(new Foo);
  53427. * // => ['a', 'b'] (iteration order is not guaranteed)
  53428. *
  53429. * _.keys('hi');
  53430. * // => ['0', '1']
  53431. */
  53432. function keys(object) {
  53433. return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
  53434. }
  53435. /**
  53436. * This method returns the first argument it receives.
  53437. *
  53438. * @static
  53439. * @since 0.1.0
  53440. * @memberOf _
  53441. * @category Util
  53442. * @param {*} value Any value.
  53443. * @returns {*} Returns `value`.
  53444. * @example
  53445. *
  53446. * var object = { 'a': 1 };
  53447. *
  53448. * console.log(_.identity(object) === object);
  53449. * // => true
  53450. */
  53451. function identity(value) {
  53452. return value;
  53453. }
  53454. /**
  53455. * Creates a function that returns the value at `path` of a given object.
  53456. *
  53457. * @static
  53458. * @memberOf _
  53459. * @since 2.4.0
  53460. * @category Util
  53461. * @param {Array|string} path The path of the property to get.
  53462. * @returns {Function} Returns the new accessor function.
  53463. * @example
  53464. *
  53465. * var objects = [
  53466. * { 'a': { 'b': 2 } },
  53467. * { 'a': { 'b': 1 } }
  53468. * ];
  53469. *
  53470. * _.map(objects, _.property('a.b'));
  53471. * // => [2, 1]
  53472. *
  53473. * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
  53474. * // => [1, 2]
  53475. */
  53476. function property(path) {
  53477. return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
  53478. }
  53479. module.exports = orderBy;
  53480. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("698d"), __webpack_require__("f586")(module)))
  53481. /***/ }),
  53482. /***/ "aef2":
  53483. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  53484. "use strict";
  53485. __webpack_require__.r(__webpack_exports__);
  53486. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LinesResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("0c2c");
  53487. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LinesResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LinesResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  53488. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LinesResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LinesResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  53489. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LinesResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  53490. /***/ }),
  53491. /***/ "b08b":
  53492. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  53493. "use strict";
  53494. __webpack_require__.r(__webpack_exports__);
  53495. /* harmony import */ var _TdtRoute_vue_vue_type_template_id_fb60b3aa___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("282c");
  53496. /* harmony import */ var _TdtRoute_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("d317");
  53497. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _TdtRoute_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _TdtRoute_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  53498. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  53499. /* normalize component */
  53500. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  53501. _TdtRoute_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  53502. _TdtRoute_vue_vue_type_template_id_fb60b3aa___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  53503. _TdtRoute_vue_vue_type_template_id_fb60b3aa___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  53504. false,
  53505. null,
  53506. null,
  53507. null
  53508. )
  53509. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  53510. /***/ }),
  53511. /***/ "b0c3":
  53512. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  53513. "use strict";
  53514. __webpack_require__.r(__webpack_exports__);
  53515. /* harmony import */ var _FireLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("214f");
  53516. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _FireLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _FireLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  53517. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  53518. var render, staticRenderFns
  53519. /* normalize component */
  53520. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  53521. _FireLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__["default"],
  53522. render,
  53523. staticRenderFns,
  53524. false,
  53525. null,
  53526. null,
  53527. null
  53528. )
  53529. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  53530. /***/ }),
  53531. /***/ "b19c":
  53532. /***/ (function(module, exports) {
  53533. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA0ppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTJERDczREIzQjZFMTFFN0I4QThEODlFREQ3REJFMDciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTJERDczREEzQjZFMTFFN0I4QThEODlFREQ3REJFMDciIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3ZTJjNWUyMy0zYjZlLTExZTctYmRlYy1iMDYwNjA4OWNmOTkiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3ZTJjNWUyMy0zYjZlLTExZTctYmRlYy1iMDYwNjA4OWNmOTkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz53uaCnAAAA/FBMVEXq9OJNogp4uEVirCZUpRRNoQn+/v1fqyLs9eVtsjaKwV19u0ygzXtRpA+gzXzN5brp8+D6/PjO5bur04x+u01OogvI4rPB36rp9OFVphX0+fDj8Njx+Oz7/frT6MOKwl7M5LlQow5Qow3C36v7/fl4uETT6MKs1I1gqyOx1pPk8dmw1ZL5/PZZqBrn8t5wtDlWphZlrir3+/Pl8dt1t0Fdqh/o899SpBDH4rLV6cXa68xYpxhuszbg79Tm8t1aqBuLwl/3+/RrsTNcqR7r9eTw9+tztT3S58H9/vyu1ZBosC/B3qnA3qhpsDDU6cRXpxer04tMoQj///////9C4uL+AAAAVHRSTlP//////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT93LRAAABKElEQVR42mySWXeCMBCFEyVAQRAQ1Lq2Wpfafd9r9701M/z//1Igoeacch/ycL9zJjN3hsRChNtTR/sI+WluiLcfucGTf9iuurRPlqC+yt9QSufaZw426Roq+mFbAgzZbASKRkdsmAKijRFgUZbSAHCsJXZ8xxGhfJ8X6uwDIrdi0qR6AkrLL1YSoNMmqVXwP8BKjYTVIlANiWEWAdMgjl8ENtYliBZ/ohKIUnCiiemu5iBL2UEKDvx25jvPrYX8XLT7SOoZiC5vzmS7XjogU7Ni6YAeia0kkskDwHEp0QvA9UREkoTYQzwHaKW9egCviL0sxLjBZujt7Okp2P6edvCWNQoXdcHeldXqymq/lGOwqBuY3a4ZuNRSjkGcjzEYGDbflcavAAMAmzWHpm9+8YcAAAAASUVORK5CYII="
  53534. /***/ }),
  53535. /***/ "b1eb":
  53536. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  53537. "use strict";
  53538. __webpack_require__.r(__webpack_exports__);
  53539. /* harmony import */ var _VideoPlayer_vue_vue_type_template_id_4df6cab8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("c363");
  53540. /* harmony import */ var _VideoPlayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("14f6");
  53541. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _VideoPlayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _VideoPlayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  53542. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  53543. /* normalize component */
  53544. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  53545. _VideoPlayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__["default"],
  53546. _VideoPlayer_vue_vue_type_template_id_4df6cab8___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  53547. _VideoPlayer_vue_vue_type_template_id_4df6cab8___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  53548. false,
  53549. null,
  53550. null,
  53551. null
  53552. )
  53553. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  53554. /***/ }),
  53555. /***/ "b274":
  53556. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  53557. "use strict";
  53558. __webpack_require__.r(__webpack_exports__);
  53559. /* harmony import */ var _Scale_vue_vue_type_template_id_348a4c78___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("4689");
  53560. /* harmony import */ var _Scale_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("3780");
  53561. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Scale_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Scale_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  53562. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  53563. /* normalize component */
  53564. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  53565. _Scale_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  53566. _Scale_vue_vue_type_template_id_348a4c78___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  53567. _Scale_vue_vue_type_template_id_348a4c78___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  53568. false,
  53569. null,
  53570. null,
  53571. null
  53572. )
  53573. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  53574. /***/ }),
  53575. /***/ "b27b":
  53576. /***/ (function(module, exports, __webpack_require__) {
  53577. "use strict";
  53578. var _interopRequireDefault = __webpack_require__("8e6d");
  53579. Object.defineProperty(exports, "__esModule", {
  53580. value: true
  53581. });
  53582. exports.default = void 0;
  53583. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  53584. /**
  53585. * @class CircleStyle
  53586. * @category BaseTypes Style
  53587. * @classdesc 点图层样式类。
  53588. * @param {mapboxgl.LayersCircle} paint - MapboxGL 点图层 Paint 配置。
  53589. * @param {mapboxgl.LayersCircle} layout - MapboxGL 点图层 Layout 配置。
  53590. */
  53591. var CircleStyle = function CircleStyle() {
  53592. var paint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  53593. var layout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  53594. (0, _classCallCheck2.default)(this, CircleStyle);
  53595. this.layout = {
  53596. visibility: 'visible'
  53597. };
  53598. this.paint = {
  53599. 'circle-radius': 6,
  53600. 'circle-color': '#3fb1e3',
  53601. 'circle-opacity': 1,
  53602. 'circle-blur': 0,
  53603. 'circle-translate': [0, 0],
  53604. 'circle-translate-anchor': 'map',
  53605. 'circle-pitch-scale': 'map',
  53606. 'circle-pitch-alignment': 'viewport',
  53607. 'circle-stroke-width': 0,
  53608. 'circle-stroke-color': '#000',
  53609. 'circle-stroke-opacity': 1
  53610. };
  53611. Object.assign(this.paint, paint);
  53612. Object.assign(this.layout, layout);
  53613. };
  53614. exports.default = CircleStyle;
  53615. /***/ }),
  53616. /***/ "b2a7":
  53617. /***/ (function(module, exports, __webpack_require__) {
  53618. "use strict";
  53619. var _interopRequireDefault = __webpack_require__("8e6d");
  53620. Object.defineProperty(exports, "__esModule", {
  53621. value: true
  53622. });
  53623. exports.default = void 0;
  53624. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  53625. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  53626. var _IdentifyViewModel = _interopRequireDefault(__webpack_require__("db4f"));
  53627. var _CircleStyle = _interopRequireDefault(__webpack_require__("b27b"));
  53628. var _FillStyle = _interopRequireDefault(__webpack_require__("d040"));
  53629. var _LineStyle = _interopRequireDefault(__webpack_require__("264a"));
  53630. //
  53631. //
  53632. //
  53633. //
  53634. //
  53635. //
  53636. //
  53637. //
  53638. //
  53639. //
  53640. //
  53641. //
  53642. //
  53643. //
  53644. //
  53645. //
  53646. //
  53647. //
  53648. //
  53649. //
  53650. //
  53651. //
  53652. var _default2 = {
  53653. name: 'SmIdentify',
  53654. mixins: [_mapGetter.default, _theme.default],
  53655. props: {
  53656. layers: {
  53657. type: Array,
  53658. default: function _default() {
  53659. return [];
  53660. }
  53661. },
  53662. fields: {
  53663. type: Array,
  53664. default: function _default() {
  53665. return [];
  53666. }
  53667. },
  53668. clickTolerance: {
  53669. type: Number,
  53670. default: 5
  53671. },
  53672. layerStyle: {
  53673. type: Object,
  53674. default: function _default() {
  53675. return {
  53676. line: {
  53677. paint: new _LineStyle.default({
  53678. 'line-width': 3,
  53679. 'line-color': '#409eff',
  53680. 'line-opacity': 1
  53681. })
  53682. },
  53683. circle: {
  53684. paint: new _CircleStyle.default({
  53685. 'circle-color': '#409eff',
  53686. 'circle-opacity': 0.6,
  53687. 'circle-radius': 8,
  53688. 'circle-stroke-width': 2,
  53689. 'circle-stroke-color': '#409eff',
  53690. 'circle-stroke-opacity': 1
  53691. })
  53692. },
  53693. fill: {
  53694. paint: new _FillStyle.default({
  53695. 'fill-color': '#409eff',
  53696. 'fill-opacity': 0.6,
  53697. 'fill-outline-color': '#409eff'
  53698. })
  53699. },
  53700. stokeLine: {
  53701. paint: new _LineStyle.default({
  53702. 'line-width': 3,
  53703. 'line-color': '#409eff',
  53704. 'line-opacity': 1
  53705. })
  53706. }
  53707. };
  53708. }
  53709. },
  53710. autoResize: {
  53711. type: Boolean,
  53712. default: true
  53713. },
  53714. keyMaxWidth: {
  53715. type: [Number, String],
  53716. default: 110
  53717. },
  53718. valueMaxWidth: {
  53719. type: [Number, String],
  53720. default: 170
  53721. },
  53722. keyWidth: {
  53723. type: [Number, String],
  53724. default: 110
  53725. },
  53726. valueWidth: {
  53727. type: [Number, String],
  53728. default: 170
  53729. }
  53730. },
  53731. data: function data() {
  53732. return {
  53733. isHide: true,
  53734. // 消除style里block
  53735. popupProps: {}
  53736. };
  53737. },
  53738. computed: {
  53739. getWidthStyle: function getWidthStyle() {
  53740. var style = {
  53741. keyWidth: {},
  53742. valueWidth: {}
  53743. };
  53744. if (!this.autoResize) {
  53745. if (this.keyWidth) {
  53746. style.keyWidth.width = this.keyWidth + 'px';
  53747. }
  53748. if (this.valueWidth) {
  53749. style.valueWidth.width = this.valueWidth + 'px';
  53750. }
  53751. return style;
  53752. } else {
  53753. if (this.keyMaxWidth) {
  53754. style.keyWidth.maxWidth = this.keyMaxWidth + 'px';
  53755. }
  53756. if (this.valueMaxWidth) {
  53757. style.valueWidth.maxWidth = this.valueMaxWidth + 'px';
  53758. }
  53759. }
  53760. return style;
  53761. },
  53762. layersOnMap: function layersOnMap() {
  53763. var layersOnMap = [];
  53764. for (var i = 0; i < this.layers.length; i++) {
  53765. if (this.map.getLayer(this.layers[i])) {
  53766. layersOnMap.push(this.layers[i]);
  53767. }
  53768. }
  53769. return layersOnMap;
  53770. }
  53771. },
  53772. watch: {
  53773. layers: {
  53774. handler: function handler(val, oldVal) {
  53775. this.viewModel && this.viewModel.removed(oldVal);
  53776. this.removeCursorEvent(oldVal);
  53777. this.setViewModel();
  53778. }
  53779. },
  53780. layerStyle: function layerStyle() {
  53781. this.setViewModel();
  53782. },
  53783. backgroundData: function backgroundData() {
  53784. this.changeResultPopupArrowStyle();
  53785. }
  53786. },
  53787. loaded: function loaded() {
  53788. var _this = this;
  53789. // 每次地图加载,就要隐藏(md的切换地图)
  53790. this.isHide = true; // this.changeCursorPointer = () => {
  53791. // this.changeCursor('pointer', this.map);
  53792. // console.log('enter');
  53793. // };
  53794. this.changeCursorGrab = function () {
  53795. return _this.changeCursor('grab', _this.map);
  53796. };
  53797. this.setViewModel();
  53798. },
  53799. removed: function removed() {
  53800. var layers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.layersOnMap;
  53801. if (this.map) {
  53802. this.map.off('click', this.sourceMapClickFn);
  53803. this.map.off('mousemove', this.changeCursorPointer);
  53804. this.map.off('mouseleave', this.changeCursorGrab);
  53805. } // 清除旧的高亮的图层
  53806. this.viewModel && this.viewModel.removed();
  53807. },
  53808. beforeDestroy: function beforeDestroy() {
  53809. this.$options.removed.call(this);
  53810. },
  53811. methods: {
  53812. setViewModel: function setViewModel() {
  53813. if (this.layers) {
  53814. this.viewModel = new _IdentifyViewModel.default(this.map, {
  53815. mapTarget: this.getTargetName(),
  53816. layers: this.layers,
  53817. layerStyle: this.layerStyle
  53818. });
  53819. this.map && this.bindMapClick(this.map);
  53820. this.changeClickedLayersCursor(this.layersOnMap);
  53821. }
  53822. },
  53823. // 给图层绑定popup和高亮
  53824. bindMapClick: function bindMapClick(map) {
  53825. map.on('click', this.sourceMapClickFn);
  53826. },
  53827. // 给source中的图层绑定popup
  53828. sourceMapClickFn: function sourceMapClickFn(e) {
  53829. // 如果点击其他的要素,移除之前的高亮
  53830. this.viewModel.removeOverlayer(this.layers); // 获取点中图层的features
  53831. var features = this.bindQueryRenderedFeatures(e);
  53832. if (features[0]) {
  53833. var index = this.layers && this.layers.indexOf(features[0].layer.id);
  53834. var fields;
  53835. if (this.fields instanceof Array) {
  53836. // 如果是二维数组
  53837. fields = this.fields[index]; // 兼容一维数组
  53838. if (typeof fields === 'string') {
  53839. fields = this.fields;
  53840. }
  53841. } else if (this.fields instanceof Object && index === 0) {
  53842. fields = this.fields;
  53843. }
  53844. this.layersMapClickFn(e, fields || [], features[0]);
  53845. }
  53846. },
  53847. // 给layer绑定queryRenderedFeatures
  53848. bindQueryRenderedFeatures: function bindQueryRenderedFeatures(e) {
  53849. var layers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.layersOnMap;
  53850. var map = e.target;
  53851. var bbox = [[e.point.x - this.clickTolerance, e.point.y - this.clickTolerance], [e.point.x + this.clickTolerance, e.point.y + this.clickTolerance]];
  53852. var features = map.queryRenderedFeatures(bbox, {
  53853. layers: layers
  53854. });
  53855. return features;
  53856. },
  53857. // 给点击的图层添加popup和高亮
  53858. layersMapClickFn: function layersMapClickFn(e, fields, feature) {
  53859. var map = e.target; // 添加popup
  53860. this.addPopup(feature, e.lngLat.toArray(), fields); // 高亮过滤(所有字段)
  53861. var filter = ['all'];
  53862. var filterKeys = ['smx', 'smy', 'lon', 'lat', 'longitude', 'latitude', 'x', 'y', 'usestyle', 'featureinfo'];
  53863. feature._vectorTileFeature._keys.forEach(function (key, index) {
  53864. if (filterKeys.indexOf(key.toLowerCase()) === -1 && feature.properties[key] !== undefined) {
  53865. filter.push(['==', key, feature.properties[key]]);
  53866. }
  53867. }); // 添加高亮图层
  53868. this.addOverlayToMap(feature.layer, filter); // 给图层加上高亮
  53869. if (map.getLayer(feature.layer.id + '-identify-SM-highlighted')) {
  53870. map.setFilter(feature.layer.id + '-identify-SM-highlighted', filter);
  53871. }
  53872. },
  53873. // 过滤数据, 添加popup
  53874. addPopup: function addPopup(feature, coordinates, fields) {
  53875. var _this2 = this;
  53876. this.popupProps = {};
  53877. if (feature.properties) {
  53878. // 过滤字段
  53879. if (fields.length > 0) {
  53880. fields.forEach(function (field) {
  53881. if (feature.properties.hasOwnProperty(field)) {
  53882. _this2.popupProps[field] = feature.properties[field];
  53883. }
  53884. });
  53885. } else {
  53886. // 默认是读取layer的全部字段
  53887. this.popupProps = feature.properties;
  53888. } // 添加popup
  53889. this.$nextTick(function () {
  53890. _this2.isHide = false; // 显示内容
  53891. _this2.viewModel.addPopup(coordinates, _this2.$refs.Popup);
  53892. _this2.changeResultPopupArrowStyle();
  53893. });
  53894. }
  53895. },
  53896. // 添加高亮图层
  53897. addOverlayToMap: function addOverlayToMap(layer, filter) {
  53898. // 先移除之前的高亮layer
  53899. this.viewModel.addOverlayToMap(layer, filter);
  53900. },
  53901. // 箭头颜色(适应主题色)
  53902. changeResultPopupArrowStyle: function changeResultPopupArrowStyle() {
  53903. var identifyBottomAnchor = document.querySelector('.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip') || document.querySelector('.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip') || document.querySelector('.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip');
  53904. var identifyTopAnchor = document.querySelector('.mapboxgl-popup-anchor-top .mapboxgl-popup-tip') || document.querySelector('.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip') || document.querySelector('.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip');
  53905. var identifyLeftAnchor = document.querySelector('.mapboxgl-popup-anchor-left .mapboxgl-popup-tip');
  53906. var identifyRightAnchor = document.querySelector('.mapboxgl-popup-anchor-right .mapboxgl-popup-tip');
  53907. identifyTopAnchor && (identifyTopAnchor.style.borderBottomColor = this.backgroundData);
  53908. identifyBottomAnchor && (identifyBottomAnchor.style.borderTopColor = this.backgroundData);
  53909. identifyLeftAnchor && (identifyLeftAnchor.style.borderRightColor = this.backgroundData);
  53910. identifyRightAnchor && (identifyRightAnchor.style.borderLeftColor = this.backgroundData);
  53911. },
  53912. changeClickedLayersCursor: function changeClickedLayersCursor() {
  53913. var _this3 = this;
  53914. var layers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  53915. var map = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.map;
  53916. layers && layers.forEach(function (layer) {
  53917. map.on('mousemove', layer, _this3.changeCursorPointer);
  53918. map.on('mouseleave', layer, _this3.changeCursorGrab);
  53919. });
  53920. },
  53921. changeCursor: function changeCursor() {
  53922. var cursorType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'grab';
  53923. var map = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.map;
  53924. if (map && map.getCanvas()) {
  53925. map.getCanvas().style.cursor = cursorType;
  53926. }
  53927. },
  53928. changeCursorPointer: function changeCursorPointer() {
  53929. this.changeCursor('pointer', this.map);
  53930. },
  53931. removeCursorEvent: function removeCursorEvent() {
  53932. var _this4 = this;
  53933. var layers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.layersOnMap;
  53934. this.map.off('click', this.sourceMapClickFn);
  53935. layers.forEach(function (layer) {
  53936. _this4.map.off('mousemove', layer, _this4.changeCursorPointer);
  53937. _this4.map.off('mouseleave', layer, _this4.changeCursorGrab);
  53938. _this4.changeCursor('grab', _this4.map);
  53939. });
  53940. }
  53941. }
  53942. };
  53943. exports.default = _default2;
  53944. /***/ }),
  53945. /***/ "b397":
  53946. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  53947. "use strict";
  53948. __webpack_require__.r(__webpack_exports__);
  53949. /* harmony import */ var _TablePopup_vue_vue_type_template_id_1c51b447___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3e59");
  53950. /* harmony import */ var _TablePopup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("e4fa");
  53951. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _TablePopup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _TablePopup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  53952. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  53953. /* normalize component */
  53954. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  53955. _TablePopup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  53956. _TablePopup_vue_vue_type_template_id_1c51b447___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  53957. _TablePopup_vue_vue_type_template_id_1c51b447___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  53958. false,
  53959. null,
  53960. null,
  53961. null
  53962. )
  53963. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  53964. /***/ }),
  53965. /***/ "b39e":
  53966. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  53967. "use strict";
  53968. __webpack_require__.r(__webpack_exports__);
  53969. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Search_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("fae1");
  53970. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Search_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Search_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  53971. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Search_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Search_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  53972. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Search_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  53973. /***/ }),
  53974. /***/ "b429":
  53975. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  53976. "use strict";
  53977. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; });
  53978. /* globals __VUE_SSR_CONTEXT__ */
  53979. // IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
  53980. // This module is a runtime utility for cleaner component module output and will
  53981. // be included in the final webpack user bundle.
  53982. function normalizeComponent (
  53983. scriptExports,
  53984. render,
  53985. staticRenderFns,
  53986. functionalTemplate,
  53987. injectStyles,
  53988. scopeId,
  53989. moduleIdentifier, /* server only */
  53990. shadowMode /* vue-cli only */
  53991. ) {
  53992. // Vue.extend constructor export interop
  53993. var options = typeof scriptExports === 'function'
  53994. ? scriptExports.options
  53995. : scriptExports
  53996. // render functions
  53997. if (render) {
  53998. options.render = render
  53999. options.staticRenderFns = staticRenderFns
  54000. options._compiled = true
  54001. }
  54002. // functional template
  54003. if (functionalTemplate) {
  54004. options.functional = true
  54005. }
  54006. // scopedId
  54007. if (scopeId) {
  54008. options._scopeId = 'data-v-' + scopeId
  54009. }
  54010. var hook
  54011. if (moduleIdentifier) { // server build
  54012. hook = function (context) {
  54013. // 2.3 injection
  54014. context =
  54015. context || // cached call
  54016. (this.$vnode && this.$vnode.ssrContext) || // stateful
  54017. (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
  54018. // 2.2 with runInNewContext: true
  54019. if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
  54020. context = __VUE_SSR_CONTEXT__
  54021. }
  54022. // inject component styles
  54023. if (injectStyles) {
  54024. injectStyles.call(this, context)
  54025. }
  54026. // register component module identifier for async chunk inferrence
  54027. if (context && context._registeredComponents) {
  54028. context._registeredComponents.add(moduleIdentifier)
  54029. }
  54030. }
  54031. // used by ssr in case component is cached and beforeCreate
  54032. // never gets called
  54033. options._ssrRegister = hook
  54034. } else if (injectStyles) {
  54035. hook = shadowMode
  54036. ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
  54037. : injectStyles
  54038. }
  54039. if (hook) {
  54040. if (options.functional) {
  54041. // for template-only hot-reload because in that case the render fn doesn't
  54042. // go through the normalizer
  54043. options._injectStyles = hook
  54044. // register for functioal component in vue file
  54045. var originalRender = options.render
  54046. options.render = function renderWithStyleInjection (h, context) {
  54047. hook.call(context)
  54048. return originalRender(h, context)
  54049. }
  54050. } else {
  54051. // inject component registration as beforeCreate hook
  54052. var existing = options.beforeCreate
  54053. options.beforeCreate = existing
  54054. ? [].concat(existing, hook)
  54055. : [hook]
  54056. }
  54057. }
  54058. return {
  54059. exports: scriptExports,
  54060. options: options
  54061. }
  54062. }
  54063. /***/ }),
  54064. /***/ "b45e":
  54065. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  54066. "use strict";
  54067. __webpack_require__.r(__webpack_exports__);
  54068. /* harmony import */ var _NothingResult_vue_vue_type_template_id_00943705___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("56d1");
  54069. /* harmony import */ var _NothingResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("3cdc");
  54070. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _NothingResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _NothingResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  54071. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  54072. /* normalize component */
  54073. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  54074. _NothingResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  54075. _NothingResult_vue_vue_type_template_id_00943705___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  54076. _NothingResult_vue_vue_type_template_id_00943705___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  54077. false,
  54078. null,
  54079. null,
  54080. null
  54081. )
  54082. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  54083. /***/ }),
  54084. /***/ "b556":
  54085. /***/ (function(module, exports, __webpack_require__) {
  54086. "use strict";
  54087. // Copyright Joyent, Inc. and other Node contributors.
  54088. //
  54089. // Permission is hereby granted, free of charge, to any person obtaining a
  54090. // copy of this software and associated documentation files (the
  54091. // "Software"), to deal in the Software without restriction, including
  54092. // without limitation the rights to use, copy, modify, merge, publish,
  54093. // distribute, sublicense, and/or sell copies of the Software, and to permit
  54094. // persons to whom the Software is furnished to do so, subject to the
  54095. // following conditions:
  54096. //
  54097. // The above copyright notice and this permission notice shall be included
  54098. // in all copies or substantial portions of the Software.
  54099. //
  54100. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  54101. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  54102. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  54103. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  54104. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  54105. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  54106. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  54107. // a transform stream is a readable/writable stream where you do
  54108. // something with the data. Sometimes it's called a "filter",
  54109. // but that's not a great name for it, since that implies a thing where
  54110. // some bits pass through, and others are simply ignored. (That would
  54111. // be a valid example of a transform, of course.)
  54112. //
  54113. // While the output is causally related to the input, it's not a
  54114. // necessarily symmetric or synchronous transformation. For example,
  54115. // a zlib stream might take multiple plain-text writes(), and then
  54116. // emit a single compressed chunk some time in the future.
  54117. //
  54118. // Here's how this works:
  54119. //
  54120. // The Transform stream has all the aspects of the readable and writable
  54121. // stream classes. When you write(chunk), that calls _write(chunk,cb)
  54122. // internally, and returns false if there's a lot of pending writes
  54123. // buffered up. When you call read(), that calls _read(n) until
  54124. // there's enough pending readable data buffered up.
  54125. //
  54126. // In a transform stream, the written data is placed in a buffer. When
  54127. // _read(n) is called, it transforms the queued up data, calling the
  54128. // buffered _write cb's as it consumes chunks. If consuming a single
  54129. // written chunk would result in multiple output chunks, then the first
  54130. // outputted bit calls the readcb, and subsequent chunks just go into
  54131. // the read buffer, and will cause it to emit 'readable' if necessary.
  54132. //
  54133. // This way, back-pressure is actually determined by the reading side,
  54134. // since _read has to be called to start processing a new chunk. However,
  54135. // a pathological inflate type of transform can cause excessive buffering
  54136. // here. For example, imagine a stream where every byte of input is
  54137. // interpreted as an integer from 0-255, and then results in that many
  54138. // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
  54139. // 1kb of data being output. In this case, you could write a very small
  54140. // amount of input, and end up with a very large amount of output. In
  54141. // such a pathological inflating mechanism, there'd be no way to tell
  54142. // the system to stop doing the transform. A single 4MB write could
  54143. // cause the system to run out of memory.
  54144. //
  54145. // However, even in such a pathological case, only a single written chunk
  54146. // would be consumed, and then the rest would wait (un-transformed) until
  54147. // the results of the previous transformed chunk were consumed.
  54148. module.exports = Transform;
  54149. var Duplex = __webpack_require__("d711");
  54150. /*<replacement>*/
  54151. var util = __webpack_require__("9107");
  54152. util.inherits = __webpack_require__("fe04");
  54153. /*</replacement>*/
  54154. util.inherits(Transform, Duplex);
  54155. function afterTransform(er, data) {
  54156. var ts = this._transformState;
  54157. ts.transforming = false;
  54158. var cb = ts.writecb;
  54159. if (!cb) {
  54160. return this.emit('error', new Error('write callback called multiple times'));
  54161. }
  54162. ts.writechunk = null;
  54163. ts.writecb = null;
  54164. if (data != null) // single equals check for both `null` and `undefined`
  54165. this.push(data);
  54166. cb(er);
  54167. var rs = this._readableState;
  54168. rs.reading = false;
  54169. if (rs.needReadable || rs.length < rs.highWaterMark) {
  54170. this._read(rs.highWaterMark);
  54171. }
  54172. }
  54173. function Transform(options) {
  54174. if (!(this instanceof Transform)) return new Transform(options);
  54175. Duplex.call(this, options);
  54176. this._transformState = {
  54177. afterTransform: afterTransform.bind(this),
  54178. needTransform: false,
  54179. transforming: false,
  54180. writecb: null,
  54181. writechunk: null,
  54182. writeencoding: null
  54183. };
  54184. // start out asking for a readable event once data is transformed.
  54185. this._readableState.needReadable = true;
  54186. // we have implemented the _read method, and done the other things
  54187. // that Readable wants before the first _read call, so unset the
  54188. // sync guard flag.
  54189. this._readableState.sync = false;
  54190. if (options) {
  54191. if (typeof options.transform === 'function') this._transform = options.transform;
  54192. if (typeof options.flush === 'function') this._flush = options.flush;
  54193. }
  54194. // When the writable side finishes, then flush out anything remaining.
  54195. this.on('prefinish', prefinish);
  54196. }
  54197. function prefinish() {
  54198. var _this = this;
  54199. if (typeof this._flush === 'function') {
  54200. this._flush(function (er, data) {
  54201. done(_this, er, data);
  54202. });
  54203. } else {
  54204. done(this, null, null);
  54205. }
  54206. }
  54207. Transform.prototype.push = function (chunk, encoding) {
  54208. this._transformState.needTransform = false;
  54209. return Duplex.prototype.push.call(this, chunk, encoding);
  54210. };
  54211. // This is the part where you do stuff!
  54212. // override this function in implementation classes.
  54213. // 'chunk' is an input chunk.
  54214. //
  54215. // Call `push(newChunk)` to pass along transformed output
  54216. // to the readable side. You may call 'push' zero or more times.
  54217. //
  54218. // Call `cb(err)` when you are done with this chunk. If you pass
  54219. // an error, then that'll put the hurt on the whole operation. If you
  54220. // never call cb(), then you'll never get another chunk.
  54221. Transform.prototype._transform = function (chunk, encoding, cb) {
  54222. throw new Error('_transform() is not implemented');
  54223. };
  54224. Transform.prototype._write = function (chunk, encoding, cb) {
  54225. var ts = this._transformState;
  54226. ts.writecb = cb;
  54227. ts.writechunk = chunk;
  54228. ts.writeencoding = encoding;
  54229. if (!ts.transforming) {
  54230. var rs = this._readableState;
  54231. if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
  54232. }
  54233. };
  54234. // Doesn't matter what the args are here.
  54235. // _transform does all the work.
  54236. // That we got here means that the readable side wants more data.
  54237. Transform.prototype._read = function (n) {
  54238. var ts = this._transformState;
  54239. if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
  54240. ts.transforming = true;
  54241. this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
  54242. } else {
  54243. // mark that we need a transform, so that any data that comes in
  54244. // will get processed, now that we've asked for it.
  54245. ts.needTransform = true;
  54246. }
  54247. };
  54248. Transform.prototype._destroy = function (err, cb) {
  54249. var _this2 = this;
  54250. Duplex.prototype._destroy.call(this, err, function (err2) {
  54251. cb(err2);
  54252. _this2.emit('close');
  54253. });
  54254. };
  54255. function done(stream, er, data) {
  54256. if (er) return stream.emit('error', er);
  54257. if (data != null) // single equals check for both `null` and `undefined`
  54258. stream.push(data);
  54259. // if there's nothing in the write buffer, then that means
  54260. // that nothing more will ever be provided
  54261. if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');
  54262. if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');
  54263. return stream.push(null);
  54264. }
  54265. /***/ }),
  54266. /***/ "b557":
  54267. /***/ (function(module, exports) {
  54268. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhYAAAD+CAYAAABmz0wVAAAABGdBTUEAALGPC/xhBQAADXRJREFUeAHt3DFulAcYRVEcsRiW4X2wAAqUiobCVHFBQ4UosgD24WWwGyIKSxTDs681lsb5T5pE8z5PPMdIXM0Irj5/v/v56sL/+fj2+urCv0XfHgECBAgQeHaBl/B79l/PruB/QIAAAQIECBxG4Oq+frwrcJifuRdKgAABAgTOLnDfE96xODutJyRAgAABAscVEBbH/dl75QQIECBA4OwCwuLspJ6QAAECBAgcV0BYHPdn75UTIECAAIGzCwiLs5N6QgIECBAgcFyB1w+99C9v3l/833Px0GuwEyBAgAABAucR+PDj2/y7pR4Mi1/fxkNPcp5v1bMQIECAAAEClyzwmDcbfBRyyT9B3xsBAgQIEHhhAo96x+L+Nf19+6+PRe4x/JsAAQIECBxE4OvNu/nxx+8MKSx+feHdzT/Xvz+B/yZAgAABAgT+vwLXt5/uyqvzUUjRckuAAAECBAhMAWExeYwECBAgQIBAERAWRcstAQIECBAgMAWExeQxEiBAgAABAkVAWBQttwQIECBAgMAUEBaTx0iAAAECBAgUAWFRtNwSIECAAAECU0BYTB4jAQIECBAgUASERdFyS4AAAQIECEwBYTF5jAQIECBAgEAREBZFyy0BAgQIECAwBYTF5DESIECAAAECRUBYFC23BAgQIECAwBQQFpPHSIAAAQIECBQBYVG03BIgQIAAAQJTQFhMHiMBAgQIECBQBIRF0XJLgAABAgQITAFhMXmMBAgQIECAQBEQFkXLLQECBAgQIDAFhMXkMRIgQIAAAQJFQFgULbcECBAgQIDAFBAWk8dIgAABAgQIFAFhUbTcEiBAgAABAlNAWEweIwECBAgQIFAEhEXRckuAAAECBAhMAWExeYwECBAgQIBAERAWRcstAQIECBAgMAWExeQxEiBAgAABAkVAWBQttwQIECBAgMAUEBaTx0iAAAECBAgUAWFRtNwSIECAAAECU0BYTB4jAQIECBAgUASERdFyS4AAAQIECEwBYTF5jAQIECBAgEAREBZFyy0BAgQIECAwBYTF5DESIECAAAECRUBYFC23BAgQIECAwBQQFpPHSIAAAQIECBQBYVG03BIgQIAAAQJTQFhMHiMBAgQIECBQBIRF0XJLgAABAgQITAFhMXmMBAgQIECAQBEQFkXLLQECBAgQIDAFhMXkMRIgQIAAAQJFQFgULbcECBAgQIDAFBAWk8dIgAABAgQIFAFhUbTcEiBAgAABAlNAWEweIwECBAgQIFAEhEXRckuAAAECBAhMAWExeYwECBAgQIBAERAWRcstAQIECBAgMAWExeQxEiBAgAABAkVAWBQttwQIECBAgMAUEBaTx0iAAAECBAgUAWFRtNwSIECAAAECU0BYTB4jAQIECBAgUASERdFyS4AAAQIECEwBYTF5jAQIECBAgEAREBZFyy0BAgQIECAwBYTF5DESIECAAAECRUBYFC23BAgQIECAwBQQFpPHSIAAAQIECBQBYVG03BIgQIAAAQJTQFhMHiMBAgQIECBQBIRF0XJLgAABAgQITAFhMXmMBAgQIECAQBEQFkXLLQECBAgQIDAFhMXkMRIgQIAAAQJFQFgULbcECBAgQIDAFBAWk8dIgAABAgQIFAFhUbTcEiBAgAABAlNAWEweIwECBAgQIFAEhEXRckuAAAECBAhMAWExeYwECBAgQIBAERAWRcstAQIECBAgMAWExeQxEiBAgAABAkVAWBQttwQIECBAgMAUEBaTx0iAAAECBAgUAWFRtNwSIECAAAECU0BYTB4jAQIECBAgUASERdFyS4AAAQIECEwBYTF5jAQIECBAgEAREBZFyy0BAgQIECAwBYTF5DESIECAAAECRUBYFC23BAgQIECAwBQQFpPHSIAAAQIECBQBYVG03BIgQIAAAQJTQFhMHiMBAgQIECBQBIRF0XJLgAABAgQITAFhMXmMBAgQIECAQBEQFkXLLQECBAgQIDAFhMXkMRIgQIAAAQJFQFgULbcECBAgQIDAFBAWk8dIgAABAgQIFAFhUbTcEiBAgAABAlNAWEweIwECBAgQIFAEhEXRckuAAAECBAhMAWExeYwECBAgQIBAERAWRcstAQIECBAgMAWExeQxEiBAgAABAkVAWBQttwQIECBAgMAUEBaTx0iAAAECBAgUAWFRtNwSIECAAAECU0BYTB4jAQIECBAgUASERdFyS4AAAQIECEwBYTF5jAQIECBAgEAREBZFyy0BAgQIECAwBYTF5DESIECAAAECRUBYFC23BAgQIECAwBQQFpPHSIAAAQIECBQBYVG03BIgQIAAAQJTQFhMHiMBAgQIECBQBIRF0XJLgAABAgQITAFhMXmMBAgQIECAQBEQFkXLLQECBAgQIDAFhMXkMRIgQIAAAQJFQFgULbcECBAgQIDAFBAWk8dIgAABAgQIFAFhUbTcEiBAgAABAlNAWEweIwECBAgQIFAEhEXRckuAAAECBAhMAWExeYwECBAgQIBAERAWRcstAQIECBAgMAWExeQxEiBAgAABAkVAWBQttwQIECBAgMAUEBaTx0iAAAECBAgUAWFRtNwSIECAAAECU0BYTB4jAQIECBAgUASERdFyS4AAAQIECEwBYTF5jAQIECBAgEAREBZFyy0BAgQIECAwBYTF5DESIECAAAECRUBYFC23BAgQIECAwBQQFpPHSIAAAQIECBQBYVG03BIgQIAAAQJTQFhMHiMBAgQIECBQBIRF0XJLgAABAgQITAFhMXmMBAgQIECAQBEQFkXLLQECBAgQIDAFhMXkMRIgQIAAAQJFQFgULbcECBAgQIDAFBAWk8dIgAABAgQIFAFhUbTcEiBAgAABAlNAWEweIwECBAgQIFAEhEXRckuAAAECBAhMAWExeYwECBAgQIBAERAWRcstAQIECBAgMAWExeQxEiBAgAABAkVAWBQttwQIECBAgMAUEBaTx0iAAAECBAgUAWFRtNwSIECAAAECU0BYTB4jAQIECBAgUASERdFyS4AAAQIECEwBYTF5jAQIECBAgEAREBZFyy0BAgQIECAwBYTF5DESIECAAAECRUBYFC23BAgQIECAwBQQFpPHSIAAAQIECBQBYVG03BIgQIAAAQJTQFhMHiMBAgQIECBQBIRF0XJLgAABAgQITAFhMXmMBAgQIECAQBEQFkXLLQECBAgQIDAFhMXkMRIgQIAAAQJFQFgULbcECBAgQIDAFBAWk8dIgAABAgQIFAFhUbTcEiBAgAABAlNAWEweIwECBAgQIFAEhEXRckuAAAECBAhMAWExeYwECBAgQIBAERAWRcstAQIECBAgMAWExeQxEiBAgAABAkVAWBQttwQIECBAgMAUEBaTx0iAAAECBAgUAWFRtNwSIECAAAECU0BYTB4jAQIECBAgUASERdFyS4AAAQIECEwBYTF5jAQIECBAgEAREBZFyy0BAgQIECAwBYTF5DESIECAAAECRUBYFC23BAgQIECAwBQQFpPHSIAAAQIECBQBYVG03BIgQIAAAQJTQFhMHiMBAgQIECBQBIRF0XJLgAABAgQITAFhMXmMBAgQIECAQBEQFkXLLQECBAgQIDAFhMXkMRIgQIAAAQJFQFgULbcECBAgQIDAFBAWk8dIgAABAgQIFAFhUbTcEiBAgAABAlNAWEweIwECBAgQIFAEhEXRckuAAAECBAhMAWExeYwECBAgQIBAERAWRcstAQIECBAgMAWExeQxEiBAgAABAkVAWBQttwQIECBAgMAUEBaTx0iAAAECBAgUAWFRtNwSIECAAAECU0BYTB4jAQIECBAgUASERdFyS4AAAQIECEwBYTF5jAQIECBAgEAREBZFyy0BAgQIECAwBYTF5DESIECAAAECRUBYFC23BAgQIECAwBQQFpPHSIAAAQIECBQBYVG03BIgQIAAAQJTQFhMHiMBAgQIECBQBIRF0XJLgAABAgQITAFhMXmMBAgQIECAQBEQFkXLLQECBAgQIDAFhMXkMRIgQIAAAQJFQFgULbcECBAgQIDAFBAWk8dIgAABAgQIFAFhUbTcEiBAgAABAlNAWEweIwECBAgQIFAEhEXRckuAAAECBAhMAWExeYwECBAgQIBAERAWRcstAQIECBAgMAWExeQxEiBAgAABAkVAWBQttwQIECBAgMAUEBaTx0iAAAECBAgUAWFRtNwSIECAAAECU0BYTB4jAQIECBAgUASERdFyS4AAAQIECEwBYTF5jAQIECBAgEAREBZFyy0BAgQIECAwBYTF5DESIECAAAECRUBYFC23BAgQIECAwBR4PdcT4/Xtp7sTD3uIAAECBAgQIPAqhcXXm3dXzAgQIECAAAECfxLwUcifZDxOgAABAgQIZIFHvWPx5c37n/mZfQEBAgQIECBwOIEHw+LDj28+/jjcLwsvmAABAgQIPE3ARyFPc/NVBAgQIECAwAkBYXECxUMECBAgQIDA0wSExdPcfBUBAgQIECBwQkBYnEDxEAECBAgQIPA0AWHxNDdfRYAAAQIECJwQuPr8/e7i/yjpx7fX/mTKiR+ehwgQIEDgWAIv4fds71gc69ekV0uAAAECBJ5V4D9D2y5GdTuSHwAAAABJRU5ErkJggg=="
  54269. /***/ }),
  54270. /***/ "b5f4":
  54271. /***/ (function(module, exports, __webpack_require__) {
  54272. "use strict";
  54273. var _interopRequireDefault = __webpack_require__("8e6d");
  54274. Object.defineProperty(exports, "__esModule", {
  54275. value: true
  54276. });
  54277. exports.default = void 0;
  54278. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  54279. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  54280. var _FileTypes = __webpack_require__("3624");
  54281. /**
  54282. * @class FileModel
  54283. * @description 文件数据组件数据模型,用于存储一些文件数据或状态,todo 结构待完善
  54284. * @category Components OpenFile
  54285. * @private
  54286. */
  54287. var FileModel =
  54288. /*#__PURE__*/
  54289. function () {
  54290. function FileModel(options) {
  54291. (0, _classCallCheck2.default)(this, FileModel);
  54292. this.fileTypes = _FileTypes.FileTypes;
  54293. this.fileConfig = _FileTypes.FileConfig;
  54294. this.loadFileObject = options && options.loadFileObject ? options.loadFileObject : [];
  54295. }
  54296. /**
  54297. * @function FileModel.prototype.set
  54298. * @description 设置属性值
  54299. * @param {string} key - 属性名称
  54300. * @param {string|Object} value - 属性值
  54301. */
  54302. (0, _createClass2.default)(FileModel, [{
  54303. key: "set",
  54304. value: function set(key, value) {
  54305. this[key] = value;
  54306. }
  54307. /**
  54308. * @function FileModel.prototype.get
  54309. * @description 获取数据值
  54310. * @param {string} key - 属性名称
  54311. * @returns {string|Object} value - 返回属性值
  54312. */
  54313. }, {
  54314. key: "get",
  54315. value: function get(key) {
  54316. return this[key];
  54317. }
  54318. }]);
  54319. return FileModel;
  54320. }();
  54321. exports.default = FileModel;
  54322. /***/ }),
  54323. /***/ "b757":
  54324. /***/ (function(module, exports, __webpack_require__) {
  54325. "use strict";
  54326. var _interopRequireDefault = __webpack_require__("8e6d");
  54327. Object.defineProperty(exports, "__esModule", {
  54328. value: true
  54329. });
  54330. exports.default = void 0;
  54331. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  54332. //
  54333. //
  54334. //
  54335. //
  54336. //
  54337. //
  54338. //
  54339. //
  54340. //
  54341. //
  54342. //
  54343. //
  54344. //
  54345. //
  54346. //
  54347. //
  54348. //
  54349. //
  54350. //
  54351. //
  54352. //
  54353. //
  54354. //
  54355. //
  54356. //
  54357. //
  54358. //
  54359. //
  54360. //
  54361. //
  54362. //
  54363. //
  54364. //
  54365. //
  54366. //
  54367. //
  54368. //
  54369. var _default = {
  54370. name: 'SmCard',
  54371. mixins: [_theme.default],
  54372. props: {
  54373. iconPosition: {
  54374. type: String,
  54375. default: 'top-left'
  54376. },
  54377. iconClass: {
  54378. type: String
  54379. },
  54380. autoRotate: {
  54381. type: Boolean,
  54382. default: false
  54383. },
  54384. headerName: {
  54385. type: String
  54386. },
  54387. collapsed: {
  54388. type: Boolean,
  54389. default: false
  54390. }
  54391. },
  54392. data: function data() {
  54393. return {
  54394. isShow: true,
  54395. transform: null
  54396. };
  54397. },
  54398. computed: {
  54399. getCardStyle: function getCardStyle() {
  54400. var style = {
  54401. background: 'transparent'
  54402. };
  54403. return !this.iconClass && !this.headerName ? style : this.getBackgroundStyle;
  54404. },
  54405. iconStyleObject: function iconStyleObject() {
  54406. return {
  54407. '--icon-color--hover': this.colorGroupsData[0]
  54408. };
  54409. },
  54410. iconStyle: function iconStyle() {
  54411. return {
  54412. transform: this.transform
  54413. };
  54414. },
  54415. position: function position() {
  54416. return this.iconPosition;
  54417. },
  54418. rotateDeg: function rotateDeg() {
  54419. return {
  54420. 'top-right': ['rotate(-45deg)', 'rotate(135deg)'],
  54421. 'top-left': ['rotate(-135deg)', 'rotate(45deg)'],
  54422. 'bottom-left': ['rotate(135deg)', 'rotate(-45deg)'],
  54423. 'bottom-right': ['rotate(45deg)', 'rotate(-135deg)']
  54424. };
  54425. },
  54426. hasHeaderRotateDeg: function hasHeaderRotateDeg() {
  54427. return {
  54428. 'top-right': ['rotate(-45deg)', 'rotate(135deg)'],
  54429. 'top-left': ['rotate(-135deg)', 'rotate(45deg)'],
  54430. 'bottom-left': ['rotate(-135deg)', 'rotate(45deg)'],
  54431. 'bottom-right': ['rotate(-45deg)', 'rotate(135deg)']
  54432. };
  54433. }
  54434. },
  54435. watch: {
  54436. iconClass: function iconClass(newVal, oldVal) {
  54437. if (newVal && !oldVal) {
  54438. this.isShow = !this.collapsed;
  54439. this.toggleTransition(this.collapsed ? 'leave' : 'enter');
  54440. } else if (!newVal) {
  54441. // 如果iconClass 为空 则默认显示内容
  54442. this.isShow = true;
  54443. }
  54444. },
  54445. iconPosition: function iconPosition() {
  54446. this.resetIconTransform();
  54447. }
  54448. },
  54449. created: function created() {
  54450. this.iconClass && (this.isShow = !this.collapsed);
  54451. this.resetIconTransform();
  54452. },
  54453. mounted: function mounted() {
  54454. this.toggleTransition(this.collapsed ? 'leave' : 'enter');
  54455. },
  54456. methods: {
  54457. iconClicked: function iconClicked() {
  54458. this.isShow = !this.isShow;
  54459. this.resetIconTransform();
  54460. this.$emit('content-show-state', this.isShow);
  54461. },
  54462. toggleTransition: function toggleTransition(type) {
  54463. var _this = this;
  54464. this.$nextTick(function () {
  54465. var iconDom = _this.$el.querySelector('.sm-component-card__icon');
  54466. if (iconDom) {
  54467. iconDom.style.position = type === 'leave' ? 'relative' : 'absolute';
  54468. }
  54469. });
  54470. },
  54471. resetIconTransform: function resetIconTransform() {
  54472. var rotateDeg = this.headerName ? this.hasHeaderRotateDeg : this.rotateDeg;
  54473. this.autoRotate && (this.transform = rotateDeg[this.position][this.isShow ? 1 : 0]);
  54474. }
  54475. }
  54476. };
  54477. exports.default = _default;
  54478. /***/ }),
  54479. /***/ "b761":
  54480. /***/ (function(module, exports, __webpack_require__) {
  54481. "use strict";
  54482. var _interopRequireDefault = __webpack_require__("8e6d");
  54483. Object.defineProperty(exports, "__esModule", {
  54484. value: true
  54485. });
  54486. exports.default = void 0;
  54487. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  54488. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  54489. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  54490. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  54491. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  54492. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  54493. var _mapEvent = _interopRequireDefault(__webpack_require__("d3e9"));
  54494. var _globalEvent = _interopRequireDefault(__webpack_require__("fb6a"));
  54495. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  54496. var _vuePropertyDecorator = __webpack_require__("e22c");
  54497. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  54498. var c = arguments.length,
  54499. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  54500. d;
  54501. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  54502. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  54503. }
  54504. return c > 3 && r && Object.defineProperty(target, key, r), r;
  54505. };
  54506. function callHook(vm, hook) {
  54507. var _options$hook;
  54508. for (var _len = arguments.length, params = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
  54509. params[_key - 2] = arguments[_key];
  54510. }
  54511. var options = vm.constructor.options;
  54512. options.mixins && options.mixins.forEach(function (mixin) {
  54513. var _mixin$hook;
  54514. mixin[hook] && (_mixin$hook = mixin[hook]).call.apply(_mixin$hook, [vm].concat(params));
  54515. });
  54516. options[hook] && (_options$hook = options[hook]).call.apply(_options$hook, [vm].concat(params));
  54517. }
  54518. var MapGetter =
  54519. /*#__PURE__*/
  54520. function (_Vue) {
  54521. (0, _inherits2.default)(MapGetter, _Vue);
  54522. function MapGetter() {
  54523. (0, _classCallCheck2.default)(this, MapGetter);
  54524. return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(MapGetter).apply(this, arguments));
  54525. }
  54526. (0, _createClass2.default)(MapGetter, [{
  54527. key: "mapTargetChanged",
  54528. value: function mapTargetChanged(newVal, oldVal) {
  54529. if (newVal && oldVal && newVal !== oldVal) {
  54530. var prevTarget = oldVal || this.firstDefaultTarget;
  54531. var prevMap = _mapEvent.default.$options.getMap(prevTarget);
  54532. if (prevMap) {
  54533. this.removeMap(prevMap, prevTarget);
  54534. }
  54535. if (_mapEvent.default.$options.getMap(newVal)) {
  54536. this.loadMap(newVal);
  54537. }
  54538. }
  54539. }
  54540. }, {
  54541. key: "mounted",
  54542. value: function mounted() {
  54543. var targetName = this.getTargetName();
  54544. this.firstDefaultTarget = targetName;
  54545. if (_mapEvent.default.$options.getMap(targetName)) {
  54546. this.loadMap(targetName);
  54547. }
  54548. _mapEvent.default.$on('load-map', this.loadMapSucceed);
  54549. _globalEvent.default.$on('delete-map', this.removeMapSucceed);
  54550. }
  54551. }, {
  54552. key: "beforeDestroy",
  54553. value: function beforeDestroy() {
  54554. this.removeMap();
  54555. _mapEvent.default.$off('load-map', this.loadMapSucceed);
  54556. _globalEvent.default.$off('delete-map', this.removeMapSucceed);
  54557. }
  54558. }, {
  54559. key: "getFirstTarget",
  54560. value: function getFirstTarget() {
  54561. var targetName;
  54562. var mapList = _mapEvent.default.$options.getAllMaps();
  54563. for (var target in mapList) {
  54564. if (target) {
  54565. targetName = target;
  54566. break;
  54567. }
  54568. }
  54569. return targetName;
  54570. }
  54571. }, {
  54572. key: "getTargetName",
  54573. value: function getTargetName() {
  54574. var selfParent = this.$parent;
  54575. var parentTarget = selfParent && selfParent.$options.name && ['smwebmap', 'smncpmap'].includes(selfParent.$options.name.toLowerCase()) && selfParent.target;
  54576. return this.mapTarget || parentTarget || this.getFirstTarget();
  54577. }
  54578. }, {
  54579. key: "loadMap",
  54580. value: function loadMap(targetName) {
  54581. var _this = this;
  54582. if (!this.firstDefaultTarget) {
  54583. this.firstDefaultTarget = targetName;
  54584. }
  54585. this.map = _mapEvent.default.$options.getMap(targetName);
  54586. this.webmap = _mapEvent.default.$options.getWebMap(targetName);
  54587. this.viewModel && typeof this.viewModel.setMap === 'function' && this.viewModel.setMap({
  54588. map: this.map,
  54589. webmap: this.webmap,
  54590. mapTarget: targetName
  54591. });
  54592. callHook(this, 'loaded', this.map, targetName);
  54593. this.$nextTick(function () {
  54594. _this.$emit('loaded');
  54595. });
  54596. }
  54597. }, {
  54598. key: "removeMap",
  54599. value: function removeMap() {
  54600. var map = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.map;
  54601. var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getTargetName();
  54602. if (map) {
  54603. this.viewModel && this.viewModel.removed && this.viewModel.removed();
  54604. callHook(this, 'removed', map, target);
  54605. this.map = null;
  54606. this.webmap = null;
  54607. this.firstDefaultTarget = null;
  54608. }
  54609. }
  54610. }, {
  54611. key: "loadMapSucceed",
  54612. value: function loadMapSucceed(map, target) {
  54613. var targetName = this.getTargetName();
  54614. if (target === targetName) {
  54615. this.loadMap(target);
  54616. }
  54617. }
  54618. }, {
  54619. key: "removeMapSucceed",
  54620. value: function removeMapSucceed(target) {
  54621. var targetName = this.getTargetName();
  54622. if (target === targetName) {
  54623. this.removeMap();
  54624. }
  54625. }
  54626. }, {
  54627. key: "mapNotLoadedTip",
  54628. value: function mapNotLoadedTip() {
  54629. if (!this.map) {
  54630. this.$message.destroy();
  54631. this.$message.warning(this.$t('warning.unassociatedMap'));
  54632. return true;
  54633. }
  54634. return false;
  54635. }
  54636. }]);
  54637. return MapGetter;
  54638. }(_vue.default);
  54639. __decorate([(0, _vuePropertyDecorator.Prop)()], MapGetter.prototype, "mapTarget", void 0);
  54640. __decorate([(0, _vuePropertyDecorator.Watch)('mapTarget')], MapGetter.prototype, "mapTargetChanged", null);
  54641. MapGetter = __decorate([_vuePropertyDecorator.Component], MapGetter);
  54642. var _default = MapGetter;
  54643. exports.default = _default;
  54644. /***/ }),
  54645. /***/ "b763":
  54646. /***/ (function(module, exports, __webpack_require__) {
  54647. "use strict";
  54648. Object.defineProperty(exports, "__esModule", {
  54649. value: true
  54650. });
  54651. exports.default = void 0;
  54652. //
  54653. //
  54654. //
  54655. //
  54656. //
  54657. //
  54658. //
  54659. //
  54660. //
  54661. //
  54662. var _default = {
  54663. name: 'AreaResult',
  54664. props: {
  54665. data: {
  54666. type: Object
  54667. }
  54668. }
  54669. };
  54670. exports.default = _default;
  54671. /***/ }),
  54672. /***/ "b7bd":
  54673. /***/ (function(module) {
  54674. module.exports = JSON.parse("[{\"name\":\"克拉玛依市\",\"coord\":[85.01486759299489,45.406422237230046]},{\"name\":\"昌吉回族自治州\",\"coord\":[88.7154624754753,44.26991024636568]},{\"name\":\"石河子市\",\"coord\":[86.0208600035924,44.239045558096805]},{\"name\":\"霍林郭勒市\",\"coord\":[114.73479243733115,44.16058374713977]},{\"name\":\"本溪市\",\"coord\":[124.64357865201586,41.177197783134275]},{\"name\":\"嘉峪关市\",\"coord\":[98.16891560537093,39.76279786284264]},{\"name\":\"莱芜市\",\"coord\":[117.65723565456207,36.27916499211527]},{\"name\":\"神农架林区\",\"coord\":[110.48296222218153,31.581260143666697]},{\"name\":\"天门市\",\"coord\":[113.00615321481195,30.64105781887143]},{\"name\":\"鄂州市\",\"coord\":[114.94764081970385,30.325634953844585]},{\"name\":\"潜江市\",\"coord\":[112.70703817700621,30.349210666019893]},{\"name\":\"仙桃市\",\"coord\":[113.34688900729822,30.315951161935402]},{\"name\":\"萍乡市\",\"coord\":[113.88072263074415,27.47193090553213]},{\"name\":\"台湾省\",\"coord\":[120.14338943402045,23.596002465926095]},{\"name\":\"东莞市\",\"coord\":[113.89443658529342,22.897826158636448]},{\"name\":\"中山市\",\"coord\":[113.37118387764659,22.501478858616522]},{\"name\":\"珠海市\",\"coord\":[113.21799258934986,22.23782602992192]},{\"name\":\"北海市\",\"coord\":[109.18248083043899,21.695773689750148]},{\"name\":\"香港\",\"coord\":[114.20689279508653,22.36016760139811]},{\"name\":\"舟山市\",\"coord\":[122.22514712841459,30.338633120695956]},{\"name\":\"克孜勒苏柯尔克孜\",\"coord\":[74.62910472637343,39.59886016069875]},{\"name\":\"喀什地区\",\"coord\":[77.19899922143753,37.85462871211595]},{\"name\":\"阿克苏地区\",\"coord\":[81.43930290016381,41.067304799230456]},{\"name\":\"和田地区\",\"coord\":[80.69780509160952,36.95287032287055]},{\"name\":\"阿里地区\",\"coord\":[82.536487505389,32.69566569631762]},{\"name\":\"日喀则地区\",\"coord\":[86.5996831353606,29.54861754814263]},{\"name\":\"那曲地区\",\"coord\":[88.32523292667608,33.20600450932715]},{\"name\":\"玉树藏族自治州\",\"coord\":[95.2107128446203,33.90320387919257]},{\"name\":\"迪庆藏族自治州\",\"coord\":[99.42465312188943,28.052797714348895]},{\"name\":\"怒江傈傈族自治州\",\"coord\":[98.85737910439825,26.98345757528851]},{\"name\":\"大理白族自治州\",\"coord\":[99.93934374816013,25.684737357453045]},{\"name\":\"德宏傣族景颇族自\",\"coord\":[98.13830877778075,24.593421919561205]},{\"name\":\"保山市\",\"coord\":[99.19031013453166,24.979380341662]},{\"name\":\"临沧市\",\"coord\":[99.62483778975081,24.058807858948214]},{\"name\":\"普洱市\",\"coord\":[100.94440267992684,23.44121660743221]},{\"name\":\"西双版纳傣族自治\",\"coord\":[100.86105801845994,21.882475641324206]},{\"name\":\"拉萨市\",\"coord\":[91.3684790613129,30.14176592960237]},{\"name\":\"山南地区\",\"coord\":[92.11665242621062,28.33000201578789]},{\"name\":\"林芝地区\",\"coord\":[94.9307847458166,29.125110156601963]},{\"name\":\"昌都地区\",\"coord\":[97.33912235873476,30.48520825551814]},{\"name\":\"丽江市\",\"coord\":[100.65713436205135,26.96190318191959]},{\"name\":\"攀枝花市\",\"coord\":[101.73355913301131,26.714486678752795]},{\"name\":\"凉山彝族自治州\",\"coord\":[102.08678551422615,27.683020519860396]},{\"name\":\"楚雄彝族自治州\",\"coord\":[101.68264761198458,25.369603845264024]},{\"name\":\"红河哈尼族彝族自\",\"coord\":[102.95101719613119,23.624860095239875]},{\"name\":\"文山壮族苗族自治\",\"coord\":[104.8708359910614,23.579587266862504]},{\"name\":\"百色市\",\"coord\":[106.69546907589859,23.98220841166522]},{\"name\":\"崇左市\",\"coord\":[107.3277087317123,22.49769755349952]},{\"name\":\"防城港市\",\"coord\":[107.88939931155171,21.94550204069006]},{\"name\":\"南宁市\",\"coord\":[108.67078983716917,23.12207641861882]},{\"name\":\"钦州市\",\"coord\":[108.8532307305186,22.157690108421384]},{\"name\":\"玉林市\",\"coord\":[110.26918466489103,22.391823643610415]},{\"name\":\"湛江市\",\"coord\":[109.93033457863683,21.086751055633457]},{\"name\":\"茂名市\",\"coord\":[110.80336192333934,22.069184739040775]},{\"name\":\"阳江市\",\"coord\":[111.70471342186183,22.108751366417575]},{\"name\":\"江门市\",\"coord\":[112.53715618649149,22.297368082806777]},{\"name\":\"广州市\",\"coord\":[113.4949302208309,23.28359314707863]},{\"name\":\"清远市\",\"coord\":[113.10957368131268,24.334444053233856]},{\"name\":\"肇庆市\",\"coord\":[112.11117530204233,23.60241158796112]},{\"name\":\"梧州市\",\"coord\":[111.01709510772797,23.518132876753846]},{\"name\":\"贺州市\",\"coord\":[111.50423061842756,24.4095096817199]},{\"name\":\"桂林市\",\"coord\":[110.44046163393094,25.353966673735407]},{\"name\":\"柳州市\",\"coord\":[109.34854449214147,24.972408051485047]},{\"name\":\"河池市\",\"coord\":[107.81191841865586,24.649291651298164]},{\"name\":\"黔东南苗族侗族自\",\"coord\":[108.39952601614591,26.429286420465576]},{\"name\":\"贵阳市\",\"coord\":[106.59784062851153,26.797907456479816]},{\"name\":\"安顺市\",\"coord\":[105.76161265300635,25.988644902171018]},{\"name\":\"黔西南布依族苗族\",\"coord\":[105.5954078788574,25.404850939549405]},{\"name\":\"曲靖市\",\"coord\":[103.9164335632742,25.697243690315265]},{\"name\":\"六盘水市\",\"coord\":[104.77723228072432,26.15402255629164]},{\"name\":\"毕节地区\",\"coord\":[105.03867422931839,27.077913968069666]},{\"name\":\"昭通市\",\"coord\":[104.29730513046874,27.62418247971078]},{\"name\":\"宜宾市\",\"coord\":[104.76748901448207,28.553501804266475]},{\"name\":\"乐山市\",\"coord\":[103.56027669102787,29.160754519210577]},{\"name\":\"自贡市\",\"coord\":[104.63272827056402,29.273152614922402]},{\"name\":\"内江市\",\"coord\":[104.82644562304716,29.61272653799929]},{\"name\":\"遵义市\",\"coord\":[106.82413636302059,28.191847588570702]},{\"name\":\"达州市\",\"coord\":[107.59704170009518,31.32138258839703]},{\"name\":\"遂宁市\",\"coord\":[105.48979445433736,30.677687821242678]},{\"name\":\"广安市\",\"coord\":[106.56708164098042,30.43500706741521]},{\"name\":\"泸州市\",\"coord\":[105.42591761727707,28.50277238478137]},{\"name\":\"资阳市\",\"coord\":[104.97995126874034,30.154251886139654]},{\"name\":\"雅安市\",\"coord\":[102.69931299964517,29.892630706195035]},{\"name\":\"眉山市\",\"coord\":[104.07052881858888,29.894202166560405]},{\"name\":\"甘孜藏族自治州\",\"coord\":[100.50721042614238,30.975216556269658]},{\"name\":\"果洛藏族自治州\",\"coord\":[99.30775565051923,34.03539865224808]},{\"name\":\"海南藏族自治州\",\"coord\":[100.39969108016373,35.90048272566899]},{\"name\":\"黄南藏族自治州\",\"coord\":[101.5360706381689,35.10286360841902]},{\"name\":\"赣南藏族自治州\",\"coord\":[102.97083885806067,34.326752803339026]},{\"name\":\"陇南市\",\"coord\":[105.24780098912132,33.57031117443431]},{\"name\":\"天水市\",\"coord\":[105.53503634660417,34.62320421368087]},{\"name\":\"定西市\",\"coord\":[104.58787768541339,35.08900966621695]},{\"name\":\"临夏回族自治州\",\"coord\":[103.2612870434902,35.591577124455235]},{\"name\":\"西宁市\",\"coord\":[101.57680657999033,36.84800271717157]},{\"name\":\"海东地区\",\"coord\":[102.30909850729282,36.287400615025646]},{\"name\":\"海北藏族自治州\",\"coord\":[100.27122484450717,37.892557516083826]},{\"name\":\"金昌市\",\"coord\":[102.02244049169511,38.497330414886164]},{\"name\":\"酒泉市\",\"coord\":[95.94486678270127,40.56891536586272]},{\"name\":\"海西蒙古族藏族自\",\"coord\":[94.67143298050689,36.022725148503724]},{\"name\":\"巴音郭楞蒙古自治\",\"coord\":[88.18116214759745,39.556478810319916]},{\"name\":\"哈密地区\",\"coord\":[93.84302392518026,42.95015211178875]},{\"name\":\"叶鲁番地区\",\"coord\":[89.82035217277885,42.399368632283505]},{\"name\":\"乌鲁木齐市\",\"coord\":[88.00048109561487,43.549986370786]},{\"name\":\"阿勒泰地区\",\"coord\":[88.11213933257655,47.05593413019629]},{\"name\":\"博尔塔拉蒙古自治\",\"coord\":[82.26402238163408,44.671135542630864]},{\"name\":\"伊犁哈萨克自治州\",\"coord\":[82.80778717477179,43.53783381365267]},{\"name\":\"阿拉善盟\",\"coord\":[103.29923966842289,40.10955801781495]},{\"name\":\"武威市\",\"coord\":[102.73362058791429,37.94211141321436]},{\"name\":\"兰州市\",\"coord\":[103.73793563506032,36.27379827886003]},{\"name\":\"中卫市\",\"coord\":[105.6943786030716,37.20654236148948]},{\"name\":\"银川市\",\"coord\":[106.20022174140034,38.52103167597483]},{\"name\":\"石嘴山市\",\"coord\":[106.41544011793628,38.84054137571417]},{\"name\":\"乌海市\",\"coord\":[106.8984175998405,39.54616572239788]},{\"name\":\"鄂尔多斯市\",\"coord\":[108.43285571424619,39.24036799350715]},{\"name\":\"巴彦淖尔市\",\"coord\":[107.45840392808307,41.30159860424196]},{\"name\":\"包头市\",\"coord\":[110.46472193224272,41.48017783644221]},{\"name\":\"呼和浩特市\",\"coord\":[111.48365173603975,40.498363056149884]},{\"name\":\"乌兰察布市\",\"coord\":[112.61568977597707,41.75789561273154]},{\"name\":\"大同市\",\"coord\":[113.7107192749083,39.898956799744184]},{\"name\":\"朔州市\",\"coord\":[112.65428748167508,39.681772914701924]},{\"name\":\"忻州市\",\"coord\":[112.36127575589583,38.88990233614568]},{\"name\":\"榆林市\",\"coord\":[109.68473112169593,38.19921027134876]},{\"name\":\"延安市\",\"coord\":[109.52425222161318,36.406522726136814]},{\"name\":\"庆阳市\",\"coord\":[107.73052193155061,36.183821532624464]},{\"name\":\"固原市\",\"coord\":[106.20191575442442,36.11634909496382]},{\"name\":\"白银市\",\"coord\":[104.68634478137065,36.51582865625868]},{\"name\":\"宝鸡市\",\"coord\":[107.33534779230747,34.3387216485855]},{\"name\":\"汉中市\",\"coord\":[107.03534754266246,33.00142998064871]},{\"name\":\"广元市\",\"coord\":[105.92928137563939,32.21872447205537]},{\"name\":\"巴中市\",\"coord\":[107.03422410306194,31.99874720836291]},{\"name\":\"南充市\",\"coord\":[106.32964805032347,31.156657700184095]},{\"name\":\"绵阳市\",\"coord\":[104.58949560201106,31.88628780630976]},{\"name\":\"德阳市\",\"coord\":[104.41542984932845,31.110558133718676]},{\"name\":\"成都市\",\"coord\":[103.8852290010473,30.777258040348634]},{\"name\":\"阿坝藏族羌族自治\",\"coord\":[102.26209319552814,32.45725845387284]},{\"name\":\"安康市\",\"coord\":[109.14236501848015,32.77467694678074]},{\"name\":\"十堰市\",\"coord\":[110.39934083416314,32.376209039347906]},{\"name\":\"襄阳市\",\"coord\":[111.97539147094662,31.93399822417465]},{\"name\":\"宜昌市\",\"coord\":[111.22204852395754,30.772457669035354]},{\"name\":\"恩施市\",\"coord\":[109.42158366502872,30.260366574390105]},{\"name\":\"张家界市\",\"coord\":[110.59760006538717,29.330107409240718]},{\"name\":\"吉首市\",\"coord\":[109.72176899848378,28.681903937242495]},{\"name\":\"铜仁地区\",\"coord\":[108.54247523485463,28.11736237519646]},{\"name\":\"重庆市\",\"coord\":[107.86007108564992,30.186253395053196]},{\"name\":\"怀化市\",\"coord\":[109.94325166787243,27.43919084801186]},{\"name\":\"益阳市\",\"coord\":[112.43060358108062,28.75127294553697]},{\"name\":\"娄底市\",\"coord\":[111.41891416951897,27.696312460064604]},{\"name\":\"常德市\",\"coord\":[111.72571610131646,29.27189463838195]},{\"name\":\"荆州市\",\"coord\":[112.65896596965268,30.05161542755362]},{\"name\":\"荆门市\",\"coord\":[112.6586855902184,31.01267124474617]},{\"name\":\"岳阳市\",\"coord\":[113.2595036144316,29.106247116930163]},{\"name\":\"长沙市\",\"coord\":[113.15415586456598,28.222934680488425]},{\"name\":\"湘潭市\",\"coord\":[112.51092596317824,27.69881544105668]},{\"name\":\"株州市\",\"coord\":[113.49665538546823,27.03993794610501]},{\"name\":\"衡阳市\",\"coord\":[112.48849636578527,26.783613569970782]},{\"name\":\"邵阳市\",\"coord\":[110.6723832117475,26.81652287086792]},{\"name\":\"永州市\",\"coord\":[111.8565364154186,25.768488267811968]},{\"name\":\"韶关市\",\"coord\":[113.53420325850979,24.69848878771937]},{\"name\":\"惠州市\",\"coord\":[114.32029589634925,23.25504544231892]},{\"name\":\"佛山市\",\"coord\":[112.95925897403649,23.10116677189257]},{\"name\":\"云浮市\",\"coord\":[111.78042514904234,22.840400494105687]},{\"name\":\"深圳市\",\"coord\":[114.13138648919008,22.649563063468342]},{\"name\":\"汕尾市\",\"coord\":[115.57412892884373,23.06989642104901]},{\"name\":\"河源市\",\"coord\":[114.89746229844398,23.97971937124767]},{\"name\":\"揭阳市\",\"coord\":[116.04290004239446,23.304802704715357]},{\"name\":\"汕头市\",\"coord\":[116.7008461897183,23.35898625947344]},{\"name\":\"潮州市\",\"coord\":[116.75405548481658,23.854381508863064]},{\"name\":\"梅州市\",\"coord\":[116.13719397345734,24.15633544812716]},{\"name\":\"漳州市\",\"coord\":[117.38279760543345,24.41111215459575]},{\"name\":\"厦门市\",\"coord\":[118.04275971554665,24.675908246507944]},{\"name\":\"龙岩市\",\"coord\":[116.69341144552507,25.20284542644492]},{\"name\":\"泉州市\",\"coord\":[118.12035864630246,25.22984144365049]},{\"name\":\"莆田市\",\"coord\":[118.82439690138142,25.439653480972687]},{\"name\":\"福州市\",\"coord\":[119.1608285845262,25.99117532466728]},{\"name\":\"三明市\",\"coord\":[117.51188176216434,26.318292906961602]},{\"name\":\"南平市\",\"coord\":[118.16153136678187,27.306303151805437]},{\"name\":\"抚州市\",\"coord\":[116.3455359885574,27.487043655935366]},{\"name\":\"鹰潭市\",\"coord\":[117.01082360702333,28.241253742969946]},{\"name\":\"吉安市\",\"coord\":[114.91377151807418,26.957486660664525]},{\"name\":\"赣州市\",\"coord\":[115.046455717572,25.81565075681663]},{\"name\":\"郴州市\",\"coord\":[113.1544526703492,25.871927095452524]},{\"name\":\"新余市\",\"coord\":[114.94161795877827,27.79044654578371]},{\"name\":\"宜春市\",\"coord\":[115.04574494880995,28.306428044943356]},{\"name\":\"南昌市\",\"coord\":[115.9963824234495,28.664803351584705]},{\"name\":\"九江市\",\"coord\":[115.53225905704193,29.362905920276297]},{\"name\":\"上饶市\",\"coord\":[117.8595355766598,28.765755150094634]},{\"name\":\"景德镇市\",\"coord\":[117.25387030721845,29.33426823662448]},{\"name\":\"黄山市\",\"coord\":[117.85476357809696,29.969632034273722]},{\"name\":\"池州市\",\"coord\":[117.34517113140791,30.208089337922335]},{\"name\":\"铜陵市\",\"coord\":[117.93160431300694,30.926442655001676]},{\"name\":\"安庆市\",\"coord\":[116.54307680610799,30.524265461641296]},{\"name\":\"黄石市\",\"coord\":[115.02354597728443,29.924060229331015]},{\"name\":\"咸宁市\",\"coord\":[114.26967602231792,29.652174021136048]},{\"name\":\"黄冈市\",\"coord\":[115.2859016705373,30.65856897065683]},{\"name\":\"武汉市\",\"coord\":[114.34552076948799,30.68836237966767]},{\"name\":\"随州市\",\"coord\":[113.3850627838818,31.87891659924412]},{\"name\":\"信阳市\",\"coord\":[114.81374730587638,32.0309685135914]},{\"name\":\"驻马店市\",\"coord\":[114.07756451509235,32.896720987266114]},{\"name\":\"商洛市\",\"coord\":[109.82044421310393,33.77403373563189]},{\"name\":\"西安市\",\"coord\":[109.11839808451401,34.225257215515896]},{\"name\":\"渭南市\",\"coord\":[109.75732444226935,35.025913644359306]},{\"name\":\"铜川市\",\"coord\":[108.98695328111377,35.19235092947735]},{\"name\":\"咸阳市\",\"coord\":[108.36398776446165,34.84311348287181]},{\"name\":\"三门峡市\",\"coord\":[110.80049688104964,34.31818709571671]},{\"name\":\"运城市\",\"coord\":[111.1736679525165,35.19010372283576]},{\"name\":\"洛阳市\",\"coord\":[111.87577573098216,34.33379926109848]},{\"name\":\"平顶山市\",\"coord\":[112.80931281928427,33.759895800153096]},{\"name\":\"漯河市\",\"coord\":[113.83505724178012,33.70034266174508]},{\"name\":\"许昌市\",\"coord\":[113.78762484088509,34.051835688452435]},{\"name\":\"郑州市\",\"coord\":[113.49619951867594,34.61181797865449]},{\"name\":\"焦作市\",\"coord\":[113.13404280173008,35.134167097471625]},{\"name\":\"晋城市\",\"coord\":[112.7495732073233,35.63186423091449]},{\"name\":\"长治市\",\"coord\":[112.85900842873183,36.45872910742828]},{\"name\":\"临汾市\",\"coord\":[111.49379787924448,36.22810800777857]},{\"name\":\"太原市\",\"coord\":[112.15628804033796,37.91704444063036]},{\"name\":\"吕梁市\",\"coord\":[111.31901105774872,37.712740463356496]},{\"name\":\"晋中市\",\"coord\":[113.08199599739676,37.36532613794343]},{\"name\":\"邯郸市\",\"coord\":[114.41824047234618,36.530119932543315]},{\"name\":\"安阳市\",\"coord\":[113.88883283163116,35.7797611183252]},{\"name\":\"鹤壁市\",\"coord\":[114.3654094911545,35.75770487428472]},{\"name\":\"新乡市\",\"coord\":[113.9184107718167,35.348471214026716]},{\"name\":\"开封市\",\"coord\":[114.52801677500626,34.61371216679872]},{\"name\":\"周口市\",\"coord\":[114.88509782391864,33.69999759722657]},{\"name\":\"阜阳市\",\"coord\":[115.44595951398213,32.98060371610532]},{\"name\":\"淮南市\",\"coord\":[116.68941991880993,32.79972275772595]},{\"name\":\"蚌埠市\",\"coord\":[117.38594715783302,33.106729536033896]},{\"name\":\"淮北市\",\"coord\":[116.69651711889378,33.69527529383458]},{\"name\":\"宿州市\",\"coord\":[117.30175405886838,33.943330421260015]},{\"name\":\"亳州市\",\"coord\":[116.12410804185097,33.46769392946132]},{\"name\":\"商丘市\",\"coord\":[115.59575176872548,34.28339840831147]},{\"name\":\"菏泽市\",\"coord\":[115.53631974831816,35.197319393220624]},{\"name\":\"濮阳市\",\"coord\":[115.3070485514902,35.775883510964334]},{\"name\":\"聊城市\",\"coord\":[115.8870069012884,36.40529594548765]},{\"name\":\"邢台市\",\"coord\":[114.74259008644859,37.251396750084155]},{\"name\":\"石家庄市\",\"coord\":[114.56923838363613,38.13141710980106]},{\"name\":\"阳泉市\",\"coord\":[113.39216149668508,38.09075470547468]},{\"name\":\"保定市\",\"coord\":[115.261524468934,39.09118520781398]},{\"name\":\"衡水市\",\"coord\":[115.8182936677897,37.715661598187154]},{\"name\":\"德州市\",\"coord\":[116.4582273790399,37.19372347888644]},{\"name\":\"沧州市\",\"coord\":[116.76192710911863,38.20240042039232]},{\"name\":\"廊坊市\",\"coord\":[116.50410772133856,39.27896741763884]},{\"name\":\"天津市\",\"coord\":[117.31988934444873,39.37154482470619]},{\"name\":\"北京市\",\"coord\":[116.59734730757869,40.237112944270976]},{\"name\":\"张家口市\",\"coord\":[115.1823606483226,40.83732566607167]},{\"name\":\"唐山市\",\"coord\":[117.8693184261954,39.71862889477249]},{\"name\":\"秦皇岛市\",\"coord\":[119.30467355367742,39.990574652162564]},{\"name\":\"承德市\",\"coord\":[117.16275671911026,41.36623845548547]},{\"name\":\"葫芦岛市\",\"coord\":[119.9342336210531,40.5628822626519]},{\"name\":\"朝阳市\",\"coord\":[120.11853493535794,41.471852354885755]},{\"name\":\"赤峰市\",\"coord\":[118.50943546234379,43.25452976059767]},{\"name\":\"锦州市\",\"coord\":[121.5167549323861,41.45933087433065]},{\"name\":\"营口市\",\"coord\":[122.58571915054674,40.42093503997384]},{\"name\":\"丹东市\",\"coord\":[124.33549382902183,40.46369290272115]},{\"name\":\"辽阳市\",\"coord\":[123.34064798039414,41.152331397771356]},{\"name\":\"盘锦市\",\"coord\":[122.06718005354679,41.05573599862555]},{\"name\":\"阜新市\",\"coord\":[121.93889757908204,42.27641773244204]},{\"name\":\"鞍山市\",\"coord\":[122.78904432242356,40.77781183142038]},{\"name\":\"沈阳市\",\"coord\":[122.99508899709724,42.1162195010079]},{\"name\":\"铁岭市\",\"coord\":[124.23100515588399,42.72666083611828]},{\"name\":\"扶顺市\",\"coord\":[124.46027188217573,41.82955407638859]},{\"name\":\"通辽市\",\"coord\":[122.0729370657937,43.90889130864869]},{\"name\":\"兴安盟\",\"coord\":[120.79456431092532,45.92003249442161]},{\"name\":\"白城市\",\"coord\":[123.10619907715235,45.25475749267784]},{\"name\":\"齐齐哈尔市\",\"coord\":[124.5462214659102,47.55395009317394]},{\"name\":\"大兴安岭地区\",\"coord\":[124.50992855161529,52.18438447846694]},{\"name\":\"黑河市\",\"coord\":[127.14721400335922,49.25080134026901]},{\"name\":\"大庆市\",\"coord\":[124.40329830095243,46.401048760966745]},{\"name\":\"绥化市\",\"coord\":[126.5214484055605,46.76992452194825]},{\"name\":\"松原市\",\"coord\":[124.21244334807682,44.75779381338502]},{\"name\":\"四平市\",\"coord\":[124.27839350328821,43.52139065090318]},{\"name\":\"通化市\",\"coord\":[125.67392830706305,41.91771808663852]},{\"name\":\"辽源市\",\"coord\":[125.33529527643432,42.758340204944986]},{\"name\":\"吉林市\",\"coord\":[126.83350281902375,43.60730120049175]},{\"name\":\"长春市\",\"coord\":[125.53597875970374,44.24624314701737]},{\"name\":\"白山市\",\"coord\":[127.16780160322108,42.093893880305075]},{\"name\":\"哈尔滨市\",\"coord\":[127.39125008786029,45.36200668820575]},{\"name\":\"鹤岗市\",\"coord\":[130.4703811258197,47.66520688940109]},{\"name\":\"伊春市\",\"coord\":[128.91240831703635,47.93833794565277]},{\"name\":\"七台河市\",\"coord\":[131.2677920224311,45.945099776108584]},{\"name\":\"鸡西市\",\"coord\":[132.38059153660274,45.722934218318535]},{\"name\":\"双鸭山市\",\"coord\":[132.3184817002743,46.65813679030265]},{\"name\":\"佳木斯市\",\"coord\":[132.26174446608726,47.17569713691394]},{\"name\":\"呼伦贝尔市\",\"coord\":[122.3210739998419,50.18176996070858]},{\"name\":\"孝感市\",\"coord\":[113.83749892135485,31.11757234692128]},{\"name\":\"贵港市\",\"coord\":[110.07354588052804,23.380735604767374]},{\"name\":\"黔南布依族苗族自\",\"coord\":[107.30931767543106,26.2976919432269]},{\"name\":\"宁德市\",\"coord\":[119.52482556634342,27.013151692716413]},{\"name\":\"温州市\",\"coord\":[120.30037042732202,27.8699145504001]},{\"name\":\"台州市\",\"coord\":[120.88886782713843,28.670799172772313]},{\"name\":\"丽水市\",\"coord\":[119.56796851966463,28.170268394477755]},{\"name\":\"衢州市\",\"coord\":[118.79479802644406,28.865874397158763]},{\"name\":\"金华市\",\"coord\":[119.99381920686633,29.093455548185744]},{\"name\":\"绍兴市\",\"coord\":[120.46546691682343,29.69382513836818]},{\"name\":\"宁波市\",\"coord\":[121.42142987830871,29.70001162878972]},{\"name\":\"杭州市\",\"coord\":[119.4405685790891,29.87218307296989]},{\"name\":\"宣城市\",\"coord\":[118.68748382914703,30.628143499626418]},{\"name\":\"湖州市\",\"coord\":[119.98261306633574,30.7945175862809]},{\"name\":\"嘉兴市\",\"coord\":[120.83889215988998,30.67538495499343]},{\"name\":\"上海市\",\"coord\":[121.37534147322967,31.25628247908459]},{\"name\":\"苏州市\",\"coord\":[120.6906182622391,31.381280695137775]},{\"name\":\"无锡市\",\"coord\":[120.32182300914366,31.54113306724517]},{\"name\":\"常州市\",\"coord\":[119.61953292830165,31.611878565375576]},{\"name\":\"南京市\",\"coord\":[118.71890548838064,31.910863187910323]},{\"name\":\"镇江市\",\"coord\":[119.42349332902813,31.97942313430778]},{\"name\":\"合肥市\",\"coord\":[117.30651975617157,31.79407863049138]},{\"name\":\"六安市\",\"coord\":[116.24668220575353,31.820846193819513]},{\"name\":\"滁州市\",\"coord\":[117.88422385307969,32.51792621904418]},{\"name\":\"泰州市\",\"coord\":[120.03124303305091,32.56503102346783]},{\"name\":\"南通市\",\"coord\":[120.85599446760912,32.18496706099728]},{\"name\":\"盐城市\",\"coord\":[120.01812490612667,33.54219948734023]},{\"name\":\"淮安市\",\"coord\":[119.0749424205415,33.39203631772854]},{\"name\":\"宿迁市\",\"coord\":[118.45404943216346,33.666258719120265]},{\"name\":\"徐州市\",\"coord\":[117.77482249295966,34.30847766157078]},{\"name\":\"济宁市\",\"coord\":[116.74147276546373,35.27488504351119]},{\"name\":\"枣庄市\",\"coord\":[117.43359942491492,34.884162021736]},{\"name\":\"连云港市\",\"coord\":[119.01553213785074,34.54316517587849]},{\"name\":\"临沂市\",\"coord\":[118.31478835349617,35.28173079028279]},{\"name\":\"日照市\",\"coord\":[119.14265350444272,35.54479073199592]},{\"name\":\"青岛市\",\"coord\":[120.27779044405756,36.3464117375903]},{\"name\":\"威海市\",\"coord\":[122.12963327195605,37.13879077904251]},{\"name\":\"烟台市\",\"coord\":[120.7689567423966,37.19772002195597]},{\"name\":\"潍坊市\",\"coord\":[119.02178548592039,36.49292234053931]},{\"name\":\"淄博市\",\"coord\":[117.92936024367185,36.60871347163638]},{\"name\":\"泰安市\",\"coord\":[116.93810893944303,36.0423330118612]},{\"name\":\"济南市\",\"coord\":[117.34560282551296,36.769574973846304]},{\"name\":\"东营市\",\"coord\":[118.4915054457184,37.52194690335787]},{\"name\":\"滨州市\",\"coord\":[117.67610299757533,37.4439597758601]},{\"name\":\"昆明市\",\"coord\":[102.93100245594789,25.481300763922075]},{\"name\":\"玉溪市\",\"coord\":[102.23080854291823,24.156168324611663]},{\"name\":\"塔城地区\",\"coord\":[83.60908162840168,45.3721852373893]},{\"name\":\"张掖市\",\"coord\":[100.47710030600572,38.704239320458385]},{\"name\":\"南阳市\",\"coord\":[112.1400670951149,33.03033276715801]},{\"name\":\"扬州市\",\"coord\":[119.48949608990988,32.80956776339646]},{\"name\":\"延边朝鲜族自治州\",\"coord\":[129.3577692895626,43.24968794080283]},{\"name\":\"牡丹江市\",\"coord\":[129.87240796405672,44.7073040108322]},{\"name\":\"澳门\",\"coord\":[113.56289691515346,22.14602596262204]},{\"name\":\"吴忠市\",\"coord\":[106.76894508116403,37.72566765880316]},{\"name\":\"来宾市\",\"coord\":[109.25592217010114,23.86346274681084]},{\"name\":\"平凉市\",\"coord\":[107.0708132782897,35.30329631658711]},{\"name\":\"马鞍山市\",\"coord\":[118.27245878467022,31.657727937739004]},{\"name\":\"芜湖市\",\"coord\":[118.32992684415504,31.081688223101658]},{\"name\":\"澄迈县\",\"coord\":[110.04198076060266,19.694955078668105]},{\"name\":\"保亭黎族苗族自治\",\"coord\":[109.6055304964257,18.6101488675304]},{\"name\":\"乐东黎族自治县\",\"coord\":[109.04051999525574,18.643137437909203]},{\"name\":\"儋州市\",\"coord\":[109.3431358337404,19.550974957403195]},{\"name\":\"定安县\",\"coord\":[110.38744429685676,19.47557074114284]},{\"name\":\"屯昌县\",\"coord\":[110.00574767630334,19.367175093044388]},{\"name\":\"白沙黎族自治县\",\"coord\":[109.36860737761768,19.214416393082217]},{\"name\":\"琼中黎族苗族自治\",\"coord\":[109.86691465937548,19.073671135862682]},{\"name\":\"东方市\",\"coord\":[108.86903802405428,19.017352815445214]},{\"name\":\"昌江黎族自治县\",\"coord\":[108.9686431884767,19.182594167127824]},{\"name\":\"海口市\",\"coord\":[110.420654296875,19.806565564640795]},{\"name\":\"济源市\",\"coord\":[112.38051465474433,35.07958362422394]},{\"name\":\"五指山市\",\"coord\":[109.53595187364496,18.832908264613966]},{\"name\":\"大连市\",\"coord\":[121.96662235866603,39.444150542439914]},{\"name\":\"文昌市三沙市\",\"coord\":[110.81828537536748,19.756501444162936]},{\"name\":\"三亚市\",\"coord\":[109.38424600793707,18.39186315877128]},{\"name\":\"万宁市\",\"coord\":[110.28485046979574,18.860240588635115]},{\"name\":\"陵水黎族自治县\",\"coord\":[109.95577603229562,18.594712684620465]},{\"name\":\"临高县\",\"coord\":[109.71915395436967,19.79420403032508]},{\"name\":\"琼海市\",\"coord\":[110.41650700703043,19.22315873149372]}]");
  54675. /***/ }),
  54676. /***/ "b8a4":
  54677. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  54678. "use strict";
  54679. __webpack_require__.r(__webpack_exports__);
  54680. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LayerManager_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("9b76");
  54681. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LayerManager_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LayerManager_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  54682. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LayerManager_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LayerManager_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  54683. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LayerManager_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  54684. /***/ }),
  54685. /***/ "b8e7":
  54686. /***/ (function(module, exports, __webpack_require__) {
  54687. "use strict";
  54688. module.exports = function isCancel(value) {
  54689. return !!(value && value.__CANCEL__);
  54690. };
  54691. /***/ }),
  54692. /***/ "b982":
  54693. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  54694. "use strict";
  54695. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/iframe/Iframe.vue?vue&type=template&id=37ec6382&
  54696. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('iframe',{staticClass:"sm-component-iframe",attrs:{"src":_vm.src,"scrolling":"auto"}})}
  54697. var staticRenderFns = []
  54698. // CONCATENATED MODULE: ./src/common/iframe/Iframe.vue?vue&type=template&id=37ec6382&
  54699. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  54700. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  54701. /***/ }),
  54702. /***/ "b9e2":
  54703. /***/ (function(module, exports, __webpack_require__) {
  54704. var isObject = __webpack_require__("d3a8"),
  54705. isSymbol = __webpack_require__("f885");
  54706. /** Used as references for various `Number` constants. */
  54707. var NAN = 0 / 0;
  54708. /** Used to match leading and trailing whitespace. */
  54709. var reTrim = /^\s+|\s+$/g;
  54710. /** Used to detect bad signed hexadecimal string values. */
  54711. var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
  54712. /** Used to detect binary string values. */
  54713. var reIsBinary = /^0b[01]+$/i;
  54714. /** Used to detect octal string values. */
  54715. var reIsOctal = /^0o[0-7]+$/i;
  54716. /** Built-in method references without a dependency on `root`. */
  54717. var freeParseInt = parseInt;
  54718. /**
  54719. * Converts `value` to a number.
  54720. *
  54721. * @static
  54722. * @memberOf _
  54723. * @since 4.0.0
  54724. * @category Lang
  54725. * @param {*} value The value to process.
  54726. * @returns {number} Returns the number.
  54727. * @example
  54728. *
  54729. * _.toNumber(3.2);
  54730. * // => 3.2
  54731. *
  54732. * _.toNumber(Number.MIN_VALUE);
  54733. * // => 5e-324
  54734. *
  54735. * _.toNumber(Infinity);
  54736. * // => Infinity
  54737. *
  54738. * _.toNumber('3.2');
  54739. * // => 3.2
  54740. */
  54741. function toNumber(value) {
  54742. if (typeof value == 'number') {
  54743. return value;
  54744. }
  54745. if (isSymbol(value)) {
  54746. return NAN;
  54747. }
  54748. if (isObject(value)) {
  54749. var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
  54750. value = isObject(other) ? (other + '') : other;
  54751. }
  54752. if (typeof value != 'string') {
  54753. return value === 0 ? value : +value;
  54754. }
  54755. value = value.replace(reTrim, '');
  54756. var isBinary = reIsBinary.test(value);
  54757. return (isBinary || reIsOctal.test(value))
  54758. ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
  54759. : (reIsBadHex.test(value) ? NAN : +value);
  54760. }
  54761. module.exports = toNumber;
  54762. /***/ }),
  54763. /***/ "b9f8":
  54764. /***/ (function(module, exports) {
  54765. module.exports = __WEBPACK_EXTERNAL_MODULE_b9f8__;
  54766. /***/ }),
  54767. /***/ "ba6e":
  54768. /***/ (function(module, exports, __webpack_require__) {
  54769. "use strict";
  54770. var _interopRequireDefault = __webpack_require__("8e6d");
  54771. Object.defineProperty(exports, "__esModule", {
  54772. value: true
  54773. });
  54774. exports.default = void 0;
  54775. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  54776. //
  54777. //
  54778. //
  54779. //
  54780. //
  54781. //
  54782. //
  54783. //
  54784. //
  54785. //
  54786. //
  54787. //
  54788. //
  54789. //
  54790. //
  54791. //
  54792. //
  54793. //
  54794. //
  54795. //
  54796. //
  54797. //
  54798. //
  54799. //
  54800. //
  54801. //
  54802. //
  54803. //
  54804. //
  54805. //
  54806. //
  54807. //
  54808. //
  54809. //
  54810. //
  54811. //
  54812. //
  54813. //
  54814. var _default2 = {
  54815. name: 'NothingResult',
  54816. mixins: [_theme.default],
  54817. props: {
  54818. data: {
  54819. type: Array,
  54820. default: function _default() {
  54821. return [];
  54822. }
  54823. },
  54824. prompt: {
  54825. type: Object
  54826. },
  54827. from: {
  54828. type: String,
  54829. default: 'Search' // Search Route
  54830. },
  54831. pageSize: {
  54832. type: Number,
  54833. default: 10
  54834. }
  54835. },
  54836. data: function data() {
  54837. return {
  54838. noResultInfo: {},
  54839. region: {}
  54840. };
  54841. },
  54842. mounted: function mounted() {
  54843. this.noResultInfo = this.data.find(function (item) {
  54844. return +item.type === 2;
  54845. }) || {};
  54846. },
  54847. methods: {
  54848. searchResult: function searchResult() {
  54849. var params = {
  54850. queryType: '1',
  54851. queryTerminal: 10000,
  54852. specifyAdminCode: this.prompt.adminCode
  54853. };
  54854. if (this.from === 'Route') {
  54855. params.queryType = '7';
  54856. params.count = this.pageSize;
  54857. this.$emit('search-points-result', this.keyWord, params, true);
  54858. return;
  54859. }
  54860. this.$emit('search-points-result', this.keyWord, params, false);
  54861. }
  54862. }
  54863. };
  54864. exports.default = _default2;
  54865. /***/ }),
  54866. /***/ "ba96":
  54867. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  54868. "use strict";
  54869. __webpack_require__.r(__webpack_exports__);
  54870. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RangeThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("716d");
  54871. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RangeThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RangeThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  54872. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RangeThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RangeThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  54873. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_RangeThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  54874. /***/ }),
  54875. /***/ "bb45":
  54876. /***/ (function(module, exports, __webpack_require__) {
  54877. "use strict";
  54878. var _interopRequireDefault = __webpack_require__("8e6d");
  54879. Object.defineProperty(exports, "__esModule", {
  54880. value: true
  54881. });
  54882. exports.default = void 0;
  54883. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  54884. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  54885. var _ChartMixin = _interopRequireDefault(__webpack_require__("3605"));
  54886. var _ChartViewModel = _interopRequireDefault(__webpack_require__("4d5e"));
  54887. __webpack_require__("f240");
  54888. var _default = {
  54889. name: 'SmChart',
  54890. mixins: [_ChartMixin.default, _mapGetter.default, _control.default],
  54891. created: function created() {
  54892. this.viewModel = new _ChartViewModel.default();
  54893. },
  54894. methods: {
  54895. changePopupArrowStyle: function changePopupArrowStyle() {
  54896. var popupArrow = document.querySelector('.sm-component-chart-result-popup .mapboxgl-popup-tip');
  54897. if (popupArrow) {
  54898. popupArrow.style.borderTopColor = this.popupBackground;
  54899. }
  54900. }
  54901. }
  54902. };
  54903. exports.default = _default;
  54904. /***/ }),
  54905. /***/ "bb52":
  54906. /***/ (function(module, exports) {
  54907. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhYAAAD+CAYAAABmz0wVAAAABGdBTUEAALGPC/xhBQAADWBJREFUeAHt3VFqkwkUhmFbstfBBYyL8MJbcS3euqySam+knZgOxeSD5n0GBpx2zOE8R/DlD9G7D99/PH7wDwECBAgQIEDgIgLC4iKMXoQAAQIECOQFfjXFfR4BAAECBAgQIHAxgcPzV7r//PVNb4scP328e/7z/ZgAAQIECBB4/wJ/0wMvwuKJ4vjvP6+L3N2LideFfJcAAQIECLxrgecPDg4Px1cfOhy/fHuxq7dCXnD4DwIECBAgQOBvBE6eWPx+MU8mflP4AQECBAgQqAo8HP78TsW5JxmeWFR/pdibAAECBAhcQUBYXAHVSxIgQIAAgaqAsKhe3t4ECBAgQOAKAsLiCqhekgABAgQIVAWERfXy9iZAgAABAlcQOA2Lp0+D+ETIFai9JAECBAgQuB2Bp0+L/OkTI6dhcTs724QAAQIECBAYCwiLMbhxBAgQIEDgtgX87aa3fV/bESBAgACBlYC/3XQlbQ4BAgQIEGgIeCukcWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAsKicWdbEiBAgACBiYCwmDAbQoAAAQIEGgLConFnWxIgQIAAgYmAsJgwG0KAAAECBBoCwqJxZ1sSIECAAIGJgLCYMBtCgAABAgQaAi/C4v7z18fG2rYkQIAAAQIELiHw33Z4ERaXGOA1CBAgQIAAga6AsOje3uYECBAgQODiAidhcXg4Pj79e/FJXpAAAQIECBC4GYFzvXASFjezsUUIECBAgACBuYCwmJMbSIAAAQIEbldAWNzubW1GgAABAgTmAsJiTm4gAQIECBC4XQFhcbu3tRkBAgQIEJgLHM5NPPfJkIfD/d25n+PrBAgQIECAwG0JnOuBc1t6YnFOxtcJECBAgACBNwucPLE4fvn26os8/6M7j58+enrxqpZvEiBAgACB9yfw4vf6/+mC0+2+//CHYZ2q+AoBAgQIECDwVoFfTeGtkLei+f8JECBAgACBswJ3HzyxOIvjGwQIECBAgMDbBH4C+z9OgLhU6J4AAAAASUVORK5CYII="
  54908. /***/ }),
  54909. /***/ "bbd3":
  54910. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  54911. "use strict";
  54912. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/web-map/control/legend/Legend.vue?vue&type=template&id=3fcf247b&
  54913. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('sm-card',{directives:[{name:"show",rawName:"v-show",value:(_vm.isShow),expression:"isShow"}],staticClass:"sm-component-legend",style:([_vm.noBorder]),attrs:{"icon-class":_vm.mode === 'simple' ? '' : _vm.iconClass,"icon-position":_vm.position,"header-name":_vm.mode === 'simple' ? '' : _vm.headerName,"auto-rotate":_vm.autoRotate,"collapsed":_vm.collapsed,"background":_vm.background,"textColor":_vm.textColor}},[_c('a-card',{style:(_vm.mode !== 'simple' ? [_vm.getBackgroundStyle, _vm.getTextColorStyle, {border: 0, borderRadius: 0}] : [{border: 0, borderRadius: 0, background: 'transparent'}]),attrs:{"bordered":false}},[((_vm.mode === 'panel' || (_vm.layerNames.length > 1 && _vm.mode !== 'simple')) && JSON.stringify(_vm.legendList) !== '{}')?_c('a-collapse',{staticClass:"sm-component-legend__table",model:{value:(_vm.activeLegend),callback:function ($$v) {_vm.activeLegend=$$v},expression:"activeLegend"}},_vm._l((_vm.legendList),function(layerValue,layerKey){return _c('a-collapse-panel',{key:layerKey,attrs:{"disabled":!_vm.isShowTitle,"showArrow":false}},[_c('template',{slot:"header"},[(_vm.isShowTitle)?_c('div',{staticClass:"header-wrap",style:([_vm.getTextColorStyle])},[_c('div',{staticClass:"sm-component-legend__title add-ellipsis"},[_vm._v(_vm._s(layerValue.layerId))]),_vm._v(" "),_c('a-icon',{staticClass:"header-arrow",attrs:{"type":"right"}})],1):_vm._e()]),_vm._v(" "),(_vm.isShowField)?_c('div',{staticClass:"sm-component-legend__themefield add-ellipsis",style:([_vm.getTextColorStyle])},[_vm._v(_vm._s(_vm.$t("legend.themeField"))+":"+_vm._s(layerValue.themeField))]):_vm._e(),_vm._v(" "),(layerValue.layerType === 'UNIQUE')?_c('div',{staticClass:"sm-component-legend__wrap",style:([_vm.getTextColorStyle])},[_c('ul',{staticClass:"sm-component-legend__point"},_vm._l((layerValue.styleGroup),function(item,i){return _c('li',{key:i,staticClass:"sm-component-legend__item"},[_c('i',{class:_vm._f("selectLayerType")(layerValue.featureType),style:({color:item.color})}),_vm._v(" "),_c('span',{staticClass:"sm-component-legend__field-value add-ellipsis"},[_vm._v(_vm._s(item.value))])])}),0)]):_vm._e(),_vm._v(" "),(layerValue.layerType === 'HEAT')?_c('div',{staticClass:"sm-component-legend__wrap",style:([_vm.getTextColorStyle])},[_c('div',{staticClass:"sm-component-legend__heatbox"},[_c('div',{staticClass:"sm-component-legend__heat",style:({background:("linear-gradient(to top," + (layerValue.styleGroup.join(',')) + ")")})}),_vm._v(" "),_c('div',{staticClass:"sm-component-legend__heatText"},[_c('span',{staticClass:"sm-component-legend__top"},[_c('a-icon',{attrs:{"type":"caret-left"}}),_vm._v("\n "+_vm._s(_vm.$t("legend.top"))+"\n ")],1),_vm._v(" "),_c('span',{staticClass:"sm-component-legend__bottom"},[_c('a-icon',{attrs:{"type":"caret-left"}}),_vm._v("\n "+_vm._s(_vm.$t("legend.bottom"))+"\n ")],1)])])]):_vm._e(),_vm._v(" "),(layerValue.layerType === 'RANGE')?_c('div',{staticClass:"sm-component-legend__wrap",style:([_vm.getTextColorStyle])},[_c('div',{staticClass:"sm-component-legend__range"},_vm._l((layerValue.styleGroup),function(item,j){return _c('div',{key:j,staticClass:"sm-component-legend__range-item"},[_c('div',{style:({background: item.color})}),_vm._v(" "),_c('span',{staticClass:"add-ellipsis"},[_c('a-icon',{attrs:{"type":"caret-left"}}),_vm._v("\n "+_vm._s(_vm.showRangeInfo(item, layerKey))+"\n ")],1)])}),0)]):_vm._e(),_vm._v(" "),(layerValue.layerType === 'RANK_SYMBOL')?_c('div',{staticClass:"sm-component-legend__wrap",style:([_vm.getTextColorStyle])},[_c('div',{staticClass:"sm-component-legend__rank"},_vm._l((layerValue.styleGroup),function(item,j){return _c('div',{key:j,staticClass:"sm-component-legend__rank-item"},[_c('div',{staticClass:"sm-component-legend__rank-icon"},[_c('i',{class:item.style.className,style:(_vm.rankSymbolStyle(item))})]),_vm._v(" "),_c('span',{staticClass:"add-ellipsis"},[_c('a-icon',{attrs:{"type":"caret-left"}}),_vm._v("\n "+_vm._s(item.start)+"-"+_vm._s(item.end)+"\n ")],1)])}),0)]):_vm._e()],2)}),1):(_vm.mode === 'simple' || _vm.layerNames.length === 1)?_vm._l((_vm.legendList),function(layerValue,layerKey,index){return _c('div',{key:index,staticClass:"sm-component-legend__noBorder",style:([_vm.getTextColorStyle])},[(_vm.isShowTitle)?_c('div',{staticClass:"sm-component-legend__title add-ellipsis",style:([_vm.getTextColorStyle])},[_vm._v(_vm._s(layerValue.layerId))]):_vm._e(),_vm._v(" "),(_vm.isShowField)?_c('div',{staticClass:"sm-component-legend__themefield add-ellipsis",style:([_vm.getTextColorStyle])},[_vm._v(_vm._s(_vm.$t("legend.themeField"))+":"+_vm._s(layerValue.themeField))]):_vm._e(),_vm._v(" "),(layerValue.layerType === 'UNIQUE')?_c('div',{staticClass:"sm-component-legend__wrap"},[_c('ul',{staticClass:"sm-component-legend__point"},_vm._l((layerValue.styleGroup),function(item,k){return _c('li',{key:k,staticClass:"sm-component-legend__item"},[_c('i',{class:_vm._f("selectLayerType")(layerValue.featureType),style:({color:item.color})}),_vm._v(" "),_c('span',{staticClass:"sm-component-legend__field-value add-ellipsis"},[_vm._v(_vm._s(item.value))])])}),0)]):_vm._e(),_vm._v(" "),(layerValue.layerType === 'HEAT')?_c('div',{staticClass:"sm-component-legend__wrap"},[_c('div',{staticClass:"sm-component-legend__heatbox"},[_c('div',{staticClass:"sm-component-legend__heat",style:({background:("linear-gradient(to top," + (layerValue.styleGroup.join(',')) + ")")})}),_vm._v(" "),_c('div',{staticClass:"sm-component-legend__heatText"},[_c('span',{staticClass:"sm-component-legend__top"},[_c('a-icon',{attrs:{"type":"caret-left"}}),_vm._v("\n "+_vm._s(_vm.$t("legend.top"))+"\n ")],1),_vm._v(" "),_c('span',{staticClass:"sm-component-legend__bottom"},[_c('a-icon',{attrs:{"type":"caret-left"}}),_vm._v("\n "+_vm._s(_vm.$t("legend.bottom"))+"\n ")],1)])])]):_vm._e(),_vm._v(" "),(layerValue.layerType === 'RANGE')?_c('div',{staticClass:"sm-component-legend__wrap"},[_c('div',{staticClass:"sm-component-legend__range"},_vm._l((layerValue.styleGroup),function(item,l){return _c('div',{key:l,staticClass:"sm-component-legend__range-item"},[_c('div',{style:({background: item.color})}),_vm._v(" "),_c('span',{staticClass:"add-ellipsis"},[_c('a-icon',{attrs:{"type":"caret-left"}}),_vm._v("\n "+_vm._s(_vm.showRangeInfo(item, layerKey))+"\n ")],1)])}),0)]):_vm._e(),_vm._v(" "),(layerValue.layerType === 'RANK_SYMBOL')?_c('div',{staticClass:"sm-component-legend__wrap"},[_c('div',{staticClass:"sm-component-legend__rank"},_vm._l((layerValue.styleGroup),function(item,l){return _c('div',{key:l,staticClass:"sm-component-legend__rank-item"},[_c('div',{staticClass:"sm-component-legend__rank-icon"},[_c('i',{class:item.style.className,style:(_vm.rankSymbolStyle(item))})]),_vm._v(" "),_c('span',{staticClass:"add-ellipsis"},[_c('a-icon',{attrs:{"type":"caret-left"}}),_vm._v("\n "+_vm._s(item.start)+"-"+_vm._s(item.end)+"\n ")],1)])}),0)]):_vm._e()])}):_vm._e()],2)],1)}
  54914. var staticRenderFns = []
  54915. // CONCATENATED MODULE: ./src/mapboxgl/web-map/control/legend/Legend.vue?vue&type=template&id=3fcf247b&
  54916. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  54917. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  54918. /***/ }),
  54919. /***/ "bbe9":
  54920. /***/ (function(module, exports, __webpack_require__) {
  54921. exports = module.exports = __webpack_require__("c66c");
  54922. exports.Stream = exports;
  54923. exports.Readable = exports;
  54924. exports.Writable = __webpack_require__("9c77");
  54925. exports.Duplex = __webpack_require__("d711");
  54926. exports.Transform = __webpack_require__("b556");
  54927. exports.PassThrough = __webpack_require__("e525");
  54928. /***/ }),
  54929. /***/ "bbf9":
  54930. /***/ (function(module, exports, __webpack_require__) {
  54931. "use strict";
  54932. var utils = __webpack_require__("d691");
  54933. module.exports = (
  54934. utils.isStandardBrowserEnv() ?
  54935. // Standard browser envs support document.cookie
  54936. (function standardBrowserEnv() {
  54937. return {
  54938. write: function write(name, value, expires, path, domain, secure) {
  54939. var cookie = [];
  54940. cookie.push(name + '=' + encodeURIComponent(value));
  54941. if (utils.isNumber(expires)) {
  54942. cookie.push('expires=' + new Date(expires).toGMTString());
  54943. }
  54944. if (utils.isString(path)) {
  54945. cookie.push('path=' + path);
  54946. }
  54947. if (utils.isString(domain)) {
  54948. cookie.push('domain=' + domain);
  54949. }
  54950. if (secure === true) {
  54951. cookie.push('secure');
  54952. }
  54953. document.cookie = cookie.join('; ');
  54954. },
  54955. read: function read(name) {
  54956. var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
  54957. return (match ? decodeURIComponent(match[3]) : null);
  54958. },
  54959. remove: function remove(name) {
  54960. this.write(name, '', Date.now() - 86400000);
  54961. }
  54962. };
  54963. })() :
  54964. // Non standard browser env (web workers, react-native) lack needed support.
  54965. (function nonStandardBrowserEnv() {
  54966. return {
  54967. write: function write() {},
  54968. read: function read() { return null; },
  54969. remove: function remove() {}
  54970. };
  54971. })()
  54972. );
  54973. /***/ }),
  54974. /***/ "bc7f":
  54975. /***/ (function(module, exports, __webpack_require__) {
  54976. "use strict";
  54977. var _interopRequireDefault = __webpack_require__("8e6d");
  54978. Object.defineProperty(exports, "__esModule", {
  54979. value: true
  54980. });
  54981. Object.defineProperty(exports, "Icon", {
  54982. enumerable: true,
  54983. get: function get() {
  54984. return _Icon.default;
  54985. }
  54986. });
  54987. Object.defineProperty(exports, "Indicator", {
  54988. enumerable: true,
  54989. get: function get() {
  54990. return _Indicator.default;
  54991. }
  54992. });
  54993. Object.defineProperty(exports, "LiquidFill", {
  54994. enumerable: true,
  54995. get: function get() {
  54996. return _LiquidFill.default;
  54997. }
  54998. });
  54999. Object.defineProperty(exports, "Progress", {
  55000. enumerable: true,
  55001. get: function get() {
  55002. return _Progress.default;
  55003. }
  55004. });
  55005. Object.defineProperty(exports, "Text", {
  55006. enumerable: true,
  55007. get: function get() {
  55008. return _Text.default;
  55009. }
  55010. });
  55011. Object.defineProperty(exports, "TimeText", {
  55012. enumerable: true,
  55013. get: function get() {
  55014. return _TimeText.default;
  55015. }
  55016. });
  55017. Object.defineProperty(exports, "Border", {
  55018. enumerable: true,
  55019. get: function get() {
  55020. return _Border.default;
  55021. }
  55022. });
  55023. Object.defineProperty(exports, "Image", {
  55024. enumerable: true,
  55025. get: function get() {
  55026. return _Image.default;
  55027. }
  55028. });
  55029. Object.defineProperty(exports, "VideoPlayer", {
  55030. enumerable: true,
  55031. get: function get() {
  55032. return _VideoPlayer.default;
  55033. }
  55034. });
  55035. Object.defineProperty(exports, "Iframe", {
  55036. enumerable: true,
  55037. get: function get() {
  55038. return _Iframe.default;
  55039. }
  55040. });
  55041. Object.defineProperty(exports, "ClusterLayer", {
  55042. enumerable: true,
  55043. get: function get() {
  55044. return _ClusterLayer.default;
  55045. }
  55046. });
  55047. Object.defineProperty(exports, "DataFlowLayer", {
  55048. enumerable: true,
  55049. get: function get() {
  55050. return _DataFlowLayer.default;
  55051. }
  55052. });
  55053. Object.defineProperty(exports, "DeckglLayer", {
  55054. enumerable: true,
  55055. get: function get() {
  55056. return _DeckglLayer.default;
  55057. }
  55058. });
  55059. Object.defineProperty(exports, "EchartsLayer", {
  55060. enumerable: true,
  55061. get: function get() {
  55062. return _EchartsLayer.default;
  55063. }
  55064. });
  55065. Object.defineProperty(exports, "GeojsonLayer", {
  55066. enumerable: true,
  55067. get: function get() {
  55068. return _GeojsonLayer.default;
  55069. }
  55070. });
  55071. Object.defineProperty(exports, "GraphThemeLayer", {
  55072. enumerable: true,
  55073. get: function get() {
  55074. return _GraphThemeLayer.default;
  55075. }
  55076. });
  55077. Object.defineProperty(exports, "HeatmapLayer", {
  55078. enumerable: true,
  55079. get: function get() {
  55080. return _HeatmapLayer.default;
  55081. }
  55082. });
  55083. Object.defineProperty(exports, "LabelThemeLayer", {
  55084. enumerable: true,
  55085. get: function get() {
  55086. return _LabelThemeLayer.default;
  55087. }
  55088. });
  55089. Object.defineProperty(exports, "MapvLayer", {
  55090. enumerable: true,
  55091. get: function get() {
  55092. return _MapvLayer.default;
  55093. }
  55094. });
  55095. Object.defineProperty(exports, "RangeThemeLayer", {
  55096. enumerable: true,
  55097. get: function get() {
  55098. return _RangeThemeLayer.default;
  55099. }
  55100. });
  55101. Object.defineProperty(exports, "RanksymbolThemeLayer", {
  55102. enumerable: true,
  55103. get: function get() {
  55104. return _RanksymbolThemeLayer.default;
  55105. }
  55106. });
  55107. Object.defineProperty(exports, "RasterTileLayer", {
  55108. enumerable: true,
  55109. get: function get() {
  55110. return _RasterTileLayer.default;
  55111. }
  55112. });
  55113. Object.defineProperty(exports, "UniqueThemeLayer", {
  55114. enumerable: true,
  55115. get: function get() {
  55116. return _UniqueThemeLayer.default;
  55117. }
  55118. });
  55119. Object.defineProperty(exports, "VectorTileLayer", {
  55120. enumerable: true,
  55121. get: function get() {
  55122. return _VectorTileLayer.default;
  55123. }
  55124. });
  55125. Object.defineProperty(exports, "FireLayer", {
  55126. enumerable: true,
  55127. get: function get() {
  55128. return _FireLayer.default;
  55129. }
  55130. });
  55131. Object.defineProperty(exports, "AnimateMarkerLayer", {
  55132. enumerable: true,
  55133. get: function get() {
  55134. return _AnimateMarkerLayer.default;
  55135. }
  55136. });
  55137. Object.defineProperty(exports, "TrackLayer", {
  55138. enumerable: true,
  55139. get: function get() {
  55140. return _TrackLayer.default;
  55141. }
  55142. });
  55143. Object.defineProperty(exports, "Legend", {
  55144. enumerable: true,
  55145. get: function get() {
  55146. return _Legend.default;
  55147. }
  55148. });
  55149. Object.defineProperty(exports, "LayerList", {
  55150. enumerable: true,
  55151. get: function get() {
  55152. return _LayerList.default;
  55153. }
  55154. });
  55155. Object.defineProperty(exports, "Measure", {
  55156. enumerable: true,
  55157. get: function get() {
  55158. return _Measure.default;
  55159. }
  55160. });
  55161. Object.defineProperty(exports, "MiniMap", {
  55162. enumerable: true,
  55163. get: function get() {
  55164. return _MiniMap.default;
  55165. }
  55166. });
  55167. Object.defineProperty(exports, "Pan", {
  55168. enumerable: true,
  55169. get: function get() {
  55170. return _Pan.default;
  55171. }
  55172. });
  55173. Object.defineProperty(exports, "Scale", {
  55174. enumerable: true,
  55175. get: function get() {
  55176. return _Scale.default;
  55177. }
  55178. });
  55179. Object.defineProperty(exports, "Zoom", {
  55180. enumerable: true,
  55181. get: function get() {
  55182. return _Zoom.default;
  55183. }
  55184. });
  55185. Object.defineProperty(exports, "Draw", {
  55186. enumerable: true,
  55187. get: function get() {
  55188. return _Draw.default;
  55189. }
  55190. });
  55191. Object.defineProperty(exports, "Identify", {
  55192. enumerable: true,
  55193. get: function get() {
  55194. return _Identify.default;
  55195. }
  55196. });
  55197. Object.defineProperty(exports, "LayerManager", {
  55198. enumerable: true,
  55199. get: function get() {
  55200. return _LayerManager.default;
  55201. }
  55202. });
  55203. Object.defineProperty(exports, "TdtSearch", {
  55204. enumerable: true,
  55205. get: function get() {
  55206. return _TdtSearch.default;
  55207. }
  55208. });
  55209. Object.defineProperty(exports, "TdtRoute", {
  55210. enumerable: true,
  55211. get: function get() {
  55212. return _TdtRoute.default;
  55213. }
  55214. });
  55215. Object.defineProperty(exports, "TdtMapSwitcher", {
  55216. enumerable: true,
  55217. get: function get() {
  55218. return _TdtMapSwitcher.default;
  55219. }
  55220. });
  55221. Object.defineProperty(exports, "Chart", {
  55222. enumerable: true,
  55223. get: function get() {
  55224. return _Chart.default;
  55225. }
  55226. });
  55227. Object.defineProperty(exports, "WebMap", {
  55228. enumerable: true,
  55229. get: function get() {
  55230. return _WebMap.default;
  55231. }
  55232. });
  55233. Object.defineProperty(exports, "WebScene", {
  55234. enumerable: true,
  55235. get: function get() {
  55236. return _WebScene.default;
  55237. }
  55238. });
  55239. Object.defineProperty(exports, "OpenFile", {
  55240. enumerable: true,
  55241. get: function get() {
  55242. return _OpenFile.default;
  55243. }
  55244. });
  55245. Object.defineProperty(exports, "Query", {
  55246. enumerable: true,
  55247. get: function get() {
  55248. return _Query.default;
  55249. }
  55250. });
  55251. Object.defineProperty(exports, "Search", {
  55252. enumerable: true,
  55253. get: function get() {
  55254. return _Search.default;
  55255. }
  55256. });
  55257. Object.defineProperty(exports, "TextList", {
  55258. enumerable: true,
  55259. get: function get() {
  55260. return _TextList.default;
  55261. }
  55262. });
  55263. Object.defineProperty(exports, "NcpMap", {
  55264. enumerable: true,
  55265. get: function get() {
  55266. return _NcpMap.default;
  55267. }
  55268. });
  55269. Object.defineProperty(exports, "Compare", {
  55270. enumerable: true,
  55271. get: function get() {
  55272. return _Compare.default;
  55273. }
  55274. });
  55275. var _Icon = _interopRequireDefault(__webpack_require__("5c61"));
  55276. var _Indicator = _interopRequireDefault(__webpack_require__("08d1"));
  55277. var _LiquidFill = _interopRequireDefault(__webpack_require__("908c"));
  55278. var _Progress = _interopRequireDefault(__webpack_require__("52fe"));
  55279. var _Text = _interopRequireDefault(__webpack_require__("5f3d"));
  55280. var _TimeText = _interopRequireDefault(__webpack_require__("0b0f"));
  55281. var _Border = _interopRequireDefault(__webpack_require__("38cf"));
  55282. var _Image = _interopRequireDefault(__webpack_require__("2389"));
  55283. var _VideoPlayer = _interopRequireDefault(__webpack_require__("b1eb"));
  55284. var _Iframe = _interopRequireDefault(__webpack_require__("e7f3"));
  55285. var _ClusterLayer = _interopRequireDefault(__webpack_require__("9da3"));
  55286. var _DataFlowLayer = _interopRequireDefault(__webpack_require__("bcde"));
  55287. var _DeckglLayer = _interopRequireDefault(__webpack_require__("7d80"));
  55288. var _EchartsLayer = _interopRequireDefault(__webpack_require__("89fc"));
  55289. var _GeojsonLayer = _interopRequireDefault(__webpack_require__("875b"));
  55290. var _GraphThemeLayer = _interopRequireDefault(__webpack_require__("6edc"));
  55291. var _HeatmapLayer = _interopRequireDefault(__webpack_require__("869f"));
  55292. var _LabelThemeLayer = _interopRequireDefault(__webpack_require__("c4fc"));
  55293. var _MapvLayer = _interopRequireDefault(__webpack_require__("4f7b"));
  55294. var _RangeThemeLayer = _interopRequireDefault(__webpack_require__("10d7"));
  55295. var _RanksymbolThemeLayer = _interopRequireDefault(__webpack_require__("7711"));
  55296. var _RasterTileLayer = _interopRequireDefault(__webpack_require__("2ac4"));
  55297. var _UniqueThemeLayer = _interopRequireDefault(__webpack_require__("a760"));
  55298. var _VectorTileLayer = _interopRequireDefault(__webpack_require__("d3d0"));
  55299. var _FireLayer = _interopRequireDefault(__webpack_require__("b0c3"));
  55300. var _AnimateMarkerLayer = _interopRequireDefault(__webpack_require__("95d0"));
  55301. var _TrackLayer = _interopRequireDefault(__webpack_require__("5a96"));
  55302. var _Legend = _interopRequireDefault(__webpack_require__("3057"));
  55303. var _LayerList = _interopRequireDefault(__webpack_require__("d10c"));
  55304. var _Measure = _interopRequireDefault(__webpack_require__("e6c4"));
  55305. var _MiniMap = _interopRequireDefault(__webpack_require__("48a7"));
  55306. var _Pan = _interopRequireDefault(__webpack_require__("755f"));
  55307. var _Scale = _interopRequireDefault(__webpack_require__("b274"));
  55308. var _Zoom = _interopRequireDefault(__webpack_require__("3e31"));
  55309. var _Draw = _interopRequireDefault(__webpack_require__("fde6"));
  55310. var _Identify = _interopRequireDefault(__webpack_require__("25b4"));
  55311. var _LayerManager = _interopRequireDefault(__webpack_require__("d20f"));
  55312. var _TdtSearch = _interopRequireDefault(__webpack_require__("477a"));
  55313. var _TdtRoute = _interopRequireDefault(__webpack_require__("b08b"));
  55314. var _TdtMapSwitcher = _interopRequireDefault(__webpack_require__("0284"));
  55315. var _Chart = _interopRequireDefault(__webpack_require__("fdfe"));
  55316. var _WebMap = _interopRequireDefault(__webpack_require__("200b"));
  55317. var _WebScene = _interopRequireDefault(__webpack_require__("fc3c"));
  55318. var _OpenFile = _interopRequireDefault(__webpack_require__("ae50"));
  55319. var _Query = _interopRequireDefault(__webpack_require__("8f69"));
  55320. var _Search = _interopRequireDefault(__webpack_require__("4ab7"));
  55321. var _TextList = _interopRequireDefault(__webpack_require__("1635"));
  55322. var _NcpMap = _interopRequireDefault(__webpack_require__("69e7"));
  55323. var _Compare = _interopRequireDefault(__webpack_require__("3074"));
  55324. /***/ }),
  55325. /***/ "bc8a":
  55326. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  55327. "use strict";
  55328. __webpack_require__.r(__webpack_exports__);
  55329. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtSearch_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("dc6c");
  55330. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtSearch_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtSearch_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  55331. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtSearch_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtSearch_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  55332. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtSearch_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  55333. /***/ }),
  55334. /***/ "bcde":
  55335. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  55336. "use strict";
  55337. __webpack_require__.r(__webpack_exports__);
  55338. /* harmony import */ var _DataFlowLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("67c2");
  55339. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _DataFlowLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _DataFlowLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  55340. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  55341. var render, staticRenderFns
  55342. /* normalize component */
  55343. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  55344. _DataFlowLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  55345. render,
  55346. staticRenderFns,
  55347. false,
  55348. null,
  55349. null,
  55350. null
  55351. )
  55352. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  55353. /***/ }),
  55354. /***/ "bd18":
  55355. /***/ (function(module, exports, __webpack_require__) {
  55356. module.exports = __webpack_require__("289c");
  55357. /***/ }),
  55358. /***/ "bd80":
  55359. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  55360. "use strict";
  55361. __webpack_require__.r(__webpack_exports__);
  55362. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Pan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("0625");
  55363. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Pan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Pan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  55364. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Pan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Pan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  55365. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Pan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  55366. /***/ }),
  55367. /***/ "bda1":
  55368. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  55369. "use strict";
  55370. __webpack_require__.r(__webpack_exports__);
  55371. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LayerList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("28d7");
  55372. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LayerList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LayerList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  55373. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LayerList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LayerList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  55374. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LayerList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  55375. /***/ }),
  55376. /***/ "be1f":
  55377. /***/ (function(module, exports) {
  55378. module.exports = __WEBPACK_EXTERNAL_MODULE_be1f__;
  55379. /***/ }),
  55380. /***/ "be3f":
  55381. /***/ (function(module, exports) {
  55382. module.exports = __WEBPACK_EXTERNAL_MODULE_be3f__;
  55383. /***/ }),
  55384. /***/ "bf3b":
  55385. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  55386. "use strict";
  55387. __webpack_require__.r(__webpack_exports__);
  55388. /* harmony import */ var _PointsResult_vue_vue_type_template_id_3ae049af___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("cced");
  55389. /* harmony import */ var _PointsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("425c");
  55390. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _PointsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _PointsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  55391. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  55392. /* normalize component */
  55393. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  55394. _PointsResult_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  55395. _PointsResult_vue_vue_type_template_id_3ae049af___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  55396. _PointsResult_vue_vue_type_template_id_3ae049af___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  55397. false,
  55398. null,
  55399. null,
  55400. null
  55401. )
  55402. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  55403. /***/ }),
  55404. /***/ "c031":
  55405. /***/ (function(module, exports) {
  55406. function _getPrototypeOf(o) {
  55407. module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
  55408. return o.__proto__ || Object.getPrototypeOf(o);
  55409. };
  55410. return _getPrototypeOf(o);
  55411. }
  55412. module.exports = _getPrototypeOf;
  55413. /***/ }),
  55414. /***/ "c079":
  55415. /***/ (function(module, exports) {
  55416. /*!
  55417. * Determine if an object is a Buffer
  55418. *
  55419. * @author Feross Aboukhadijeh <https://feross.org>
  55420. * @license MIT
  55421. */
  55422. module.exports = function isBuffer (obj) {
  55423. return obj != null && obj.constructor != null &&
  55424. typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
  55425. }
  55426. /***/ }),
  55427. /***/ "c0cb":
  55428. /***/ (function(module, exports) {
  55429. module.exports = "data:image/png;base64,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BHoSECx6grYbAgQIECAwBQHBYgqrrEYCBAgQINCTgGDRE7TdECBAgACBKQgIFlNYZTUSIECAAIGeBASLnqDthgABAgQITEFAsJjCKquRAAECBAj0JCBY9ARtNwQIECBAYAoCgsUUVlmNBAgQIECgJwHBoidouyFAgAABAlMQECymsMpqJECAAAECPQkIFj1B2w0BAgQIEJiCgGAxhVVWIwECBAgQ6ElAsOgJ2m4IECBAgMAUBASLKayyGgkQIECAQE8CgkVP0HZDgAABAgSmICBYTGGV1UiAAAECBHoSECx6grYbAgQIECAwBQHBYgqrrEYCBAgQINCTgGDRE7TdECBAgACBKQgIFlNYZTUSIECAAIGeBASLnqDthgABAgQITEFAsJjCKquRAAECBAj0JCBY9ARtNwQIECBAYAoCgsUUVlmNBAgQIECgJwHBoidouyFAgAABAlMQECymsMpqJECAAAECPQkIFj1B2w0BAgQIEJiCgGAxhVVWIwECBAgQ6ElAsOgJ2m4IECBAgMAUBASLKayyGgkQIECAQE8CgkVP0HZDgAABAgSmICBYTGGV1UiAAAECBHoSECx6grYbAgQIECAwBQHBYgqrrEYCBAgQINCTgGDRE7TdECBAgACBKQgIFlNYZTUSIECAAIGeBASLnqDthgABAgQITEFAsJjCKquRAAECBAj0JCBY9ARtNwQIECBAYAoCgsUUVlmNBAgQIECgJwHBoidouyFAgAABAlMQECymsMpqJECAAAECPQkIFj1B2w0BAgQIEJiCgGAxhVVWIwECBAgQ6ElAsOgJ2m4IECBAgMAUBASLKayyGgkQIECAQE8CgkVP0HZDgAABAgSmICBYTGGV1UiAAAECBHoSECx6grYbAgQIECAwBQHBYgqrrEYCBAgQINCTgGDRE7TdECBAgACBKQhsLYqcvfP986vvfKGsruycPFEs2vwmQIAAAQIECOQIOGKRo6QPAQIECBAgkCUgWGQx6USAAAECBAjkCAgWOUr6ECBAgAABAlkCW7NH5+dUZPXWiQABAgQIECCQEHDEIoGjiQABAgQIEGgnIFi089KbAAECBAgQSAgIFgkcTQQIECBAgEA7AcGinZfeBAgQIECAQEJAsEjgaCJAgAABAgTaCQgW7bz0JkCAAAECBBICgkUCRxMBAgQIECDQTkCwaOelNwECBAgQ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"
  55430. /***/ }),
  55431. /***/ "c167":
  55432. /***/ (function(module, exports, __webpack_require__) {
  55433. "use strict";
  55434. var _interopRequireDefault = __webpack_require__("8e6d");
  55435. Object.defineProperty(exports, "__esModule", {
  55436. value: true
  55437. });
  55438. exports.default = void 0;
  55439. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  55440. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  55441. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  55442. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  55443. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  55444. var _length = _interopRequireDefault(__webpack_require__("821b"));
  55445. var _area = _interopRequireDefault(__webpack_require__("0650"));
  55446. var _helpers = __webpack_require__("38ce");
  55447. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  55448. var _drawEvent = _interopRequireDefault(__webpack_require__("9104"));
  55449. var _lang = __webpack_require__("4e21");
  55450. /**
  55451. * @class DrawViewModel
  55452. * @description 绘制 viewModel.
  55453. * @param {Object} webmap - webmap实例对象。
  55454. * @extends mapboxgl.Evented
  55455. */
  55456. var DrawViewModel =
  55457. /*#__PURE__*/
  55458. function (_mapboxgl$Evented) {
  55459. (0, _inherits2.default)(DrawViewModel, _mapboxgl$Evented);
  55460. function DrawViewModel(componentName) {
  55461. var _this;
  55462. (0, _classCallCheck2.default)(this, DrawViewModel);
  55463. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(DrawViewModel).call(this));
  55464. _this.componentName = componentName;
  55465. _this.featureIds = []; // 收集当前draw所画的点线面的id
  55466. _this.activeFeature = {};
  55467. _this.dashedLayerIds = []; // 收集虚线图层的id 信息
  55468. _this.layerStyleList = {}; // 收集虚线图层的修改的样式信息
  55469. return _this;
  55470. }
  55471. (0, _createClass2.default)(DrawViewModel, [{
  55472. key: "setMap",
  55473. value: function setMap(mapInfo) {
  55474. var map = mapInfo.map,
  55475. mapTarget = mapInfo.mapTarget;
  55476. this.map = map;
  55477. this.mapTarget = mapTarget;
  55478. this._addDrawControl();
  55479. }
  55480. }, {
  55481. key: "_addDrawControl",
  55482. value: function _addDrawControl() {
  55483. var _this2 = this;
  55484. this.draw = _drawEvent.default.$options.getDraw(this.mapTarget);
  55485. _drawEvent.default.$options.setDrawingState(this.mapTarget, this.componentName, false);
  55486. this.map.on('draw.create', this._drawCreate.bind(this));
  55487. this.map.on('draw.selectionchange', this._selectionChange.bind(this));
  55488. this.map.on('mouseover', 'draw-line-static.cold', function (e) {
  55489. var feature = e.features[0];
  55490. var id = feature.properties.id;
  55491. if (_this2.featureIds.includes(id)) {
  55492. _this2.map.setFilter('draw-line-hover.cold', ['all', ['==', '$type', 'LineString'], ['==', 'id', id]]);
  55493. _this2.map.setFilter('draw-line-hover.hot', ['all', ['==', '$type', 'LineString'], ['==', 'id', id]]);
  55494. }
  55495. });
  55496. this.map.on('mouseout', 'draw-line-hover.cold', function () {
  55497. _this2.map.setFilter('draw-line-hover.cold', ['all', ['==', '$type', 'LineString'], ['==', 'id', '']]);
  55498. _this2.map.setFilter('draw-line-hover.hot', ['all', ['==', '$type', 'LineString'], ['==', 'id', '']]);
  55499. });
  55500. }
  55501. }, {
  55502. key: "_drawCreate",
  55503. value: function _drawCreate(e) {
  55504. if (this._isDrawing()) {
  55505. var features = e.features;
  55506. var feature = features[0] || {};
  55507. this.featureIds.push(feature.id);
  55508. }
  55509. }
  55510. }, {
  55511. key: "_selectionChange",
  55512. value: function _selectionChange(e) {
  55513. if (this._isDrawing()) {
  55514. var features = e.features;
  55515. var feature = features[0];
  55516. if (feature) {
  55517. this._getDefaultStyle();
  55518. this.activeFeature = feature;
  55519. this._calcResult(feature);
  55520. }
  55521. }
  55522. }
  55523. }, {
  55524. key: "_calcResult",
  55525. value: function _calcResult(feature) {
  55526. // 计算长度和面积的结果
  55527. var _feature$geometry = feature.geometry,
  55528. geometry = _feature$geometry === void 0 ? {} : _feature$geometry;
  55529. var coordinates = geometry.coordinates;
  55530. var result = '';
  55531. var unit;
  55532. var coordinateOfMaxLatitude = [];
  55533. if (geometry.type === 'Point') {
  55534. result = (0, _length.default)(feature, 'kilometers');
  55535. coordinateOfMaxLatitude = coordinates;
  55536. } else if (geometry.type === 'LineString') {
  55537. result = (0, _length.default)(feature, 'kilometers');
  55538. unit = (0, _lang.geti18n)().t('unit.kilometers');
  55539. coordinateOfMaxLatitude = this._calcMaxLatitudeInCoordinate(coordinates);
  55540. } else if (geometry.type === 'Polygon') {
  55541. var area = (0, _area.default)(feature);
  55542. result = (0, _helpers.convertArea)(area, 'meters', 'kilometers');
  55543. unit = (0, _lang.geti18n)().t('unit.squarekilometers');
  55544. coordinateOfMaxLatitude = this._calcMaxLatitudeInCoordinate(coordinates[0]);
  55545. }
  55546. var layerStyle = this._getFetureStyle(feature.id);
  55547. /**
  55548. * @event DrawViewModel#drawcreated
  55549. * @description 绘制完成。
  55550. */
  55551. this.fire('draw-create', {
  55552. popupInfo: {
  55553. resultInfo: {
  55554. feature: feature,
  55555. layerStyle: layerStyle,
  55556. result: result,
  55557. unit: unit
  55558. },
  55559. trash: this.trash.bind(this),
  55560. map: this.map,
  55561. coordinate: coordinateOfMaxLatitude
  55562. }
  55563. });
  55564. }
  55565. }, {
  55566. key: "_calcMaxLatitudeInCoordinate",
  55567. value: function _calcMaxLatitudeInCoordinate() {
  55568. var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  55569. var indexOfMax = 0;
  55570. var compareNum = data[indexOfMax] && data[indexOfMax][1];
  55571. for (var i = 0; i < data.length; i++) {
  55572. if (data[i] && data[i][1] > compareNum) {
  55573. compareNum = data[i][1];
  55574. indexOfMax = i;
  55575. }
  55576. }
  55577. return data[indexOfMax];
  55578. }
  55579. }, {
  55580. key: "_getFetureStyle",
  55581. value: function _getFetureStyle(id) {
  55582. var layerStyle;
  55583. for (var key in this.layerStyleList) {
  55584. if (this.layerStyleList[key] && this.layerStyleList[key][id]) {
  55585. layerStyle = Object.assign(this.layerStyleList[key][id], layerStyle);
  55586. }
  55587. }
  55588. return layerStyle;
  55589. } // 开启绘制
  55590. }, {
  55591. key: "openDraw",
  55592. value: function openDraw(mode) {
  55593. _drawEvent.default.$options.setDrawingState(this.mapTarget, this.componentName, true); // 绘画线或面
  55594. this.draw.changeMode(mode);
  55595. }
  55596. }, {
  55597. key: "trash",
  55598. value: function trash(id) {
  55599. var _this3 = this;
  55600. if (id) {
  55601. // 给外部调用的API 如天地图传入一个id 删除指定点线面
  55602. this.draw.delete(id);
  55603. for (var key in this.layerStyleList) {
  55604. if (this.layerStyleList[key] && this.layerStyleList[key][id]) {
  55605. delete this.layerStyleList[key][id];
  55606. break;
  55607. }
  55608. }
  55609. var matchIndex = this.dashedLayerIds.findIndex(function (item) {
  55610. return item === id;
  55611. });
  55612. matchIndex > -1 && this.dashedLayerIds.splice(matchIndex, 1);
  55613. return;
  55614. }
  55615. var selectedIds = this.draw.getSelectedIds();
  55616. selectedIds.forEach(function (item) {
  55617. var matchIndex = _this3.featureIds.findIndex(function (id) {
  55618. return id === item;
  55619. });
  55620. if (matchIndex > -1) {
  55621. _this3.featureIds.splice(matchIndex, 1);
  55622. _this3.draw.delete(item);
  55623. }
  55624. });
  55625. }
  55626. }, {
  55627. key: "setLayerStyle",
  55628. value: function setLayerStyle(layerStyle) {
  55629. var id = this.activeFeature.id;
  55630. if (!id) return;
  55631. for (var key in layerStyle) {
  55632. var paint = layerStyle[key];
  55633. this.layerStyleList[key] = this.layerStyleList[key] || {};
  55634. this.layerStyleList[key][id] = Object.assign(this.layerStyleList[id] || {}, layerStyle[key]);
  55635. var isDashedLayer = Object.keys(paint).includes('line-dasharray');
  55636. var matchIndex = this.dashedLayerIds.findIndex(function (item) {
  55637. return item === id;
  55638. });
  55639. if (isDashedLayer) {
  55640. matchIndex < 0 && this.dashedLayerIds.push(id);
  55641. } else {
  55642. key === 'LineString' && matchIndex > -1 && this.dashedLayerIds.splice(matchIndex, 1);
  55643. }
  55644. this.setFilter();
  55645. this.setPaintProperty(key, paint, isDashedLayer);
  55646. }
  55647. }
  55648. }, {
  55649. key: "setDashFilterData",
  55650. value: function setDashFilterData(init) {
  55651. var newFilter = this.dashedLayerIds.reduce(function (filter, layerId) {
  55652. filter.push(layerId);
  55653. return filter;
  55654. }, init);
  55655. return newFilter;
  55656. }
  55657. }, {
  55658. key: "setFilter",
  55659. value: function setFilter() {
  55660. if (!this.linesStaticFilter) {
  55661. // 获取初始的Filter
  55662. this.linesStaticFilter = this.map.getFilter('draw-line-static.cold');
  55663. }
  55664. var notDashedFilter = this.setDashFilterData(['!in', 'id']);
  55665. var dashedFilter = this.setDashFilterData(['in', 'id']);
  55666. this.map.setFilter('draw-line-dashed.cold', dashedFilter);
  55667. this.map.setFilter('draw-line-dashed.hot', dashedFilter);
  55668. this.map.setFilter('draw-line-static.cold', ['all', this.linesStaticFilter, notDashedFilter]);
  55669. this.map.setFilter('draw-line-static.hot', ['all', this.linesStaticFilter, notDashedFilter]);
  55670. }
  55671. }, {
  55672. key: "setPaintProperty",
  55673. value: function setPaintProperty(key, paint, isDashedLayer) {
  55674. for (var name in paint) {
  55675. var value = this.setValueOfPaintKey(key, name);
  55676. switch (key) {
  55677. case 'LineString':
  55678. if (name === 'line-color') {
  55679. var vertexValue = value.slice();
  55680. vertexValue[1] = ['get', 'parent'];
  55681. this.map.setPaintProperty('draw-vertex-active.hot', 'circle-color', vertexValue);
  55682. this.map.setPaintProperty('draw-vertex-active.cold', 'circle-color', vertexValue);
  55683. this.map.setPaintProperty('draw-line-hover.cold', name, value);
  55684. this.map.setPaintProperty('draw-line-hover.hot', name, value);
  55685. }
  55686. if (isDashedLayer) {
  55687. this.map.setPaintProperty('draw-line-dashed.cold', name, value);
  55688. this.map.setPaintProperty('draw-line-dashed.hot', name, value);
  55689. continue;
  55690. }
  55691. this.map.setPaintProperty('draw-line-static.cold', name, value);
  55692. this.map.setPaintProperty('draw-line-static.hot', name, value);
  55693. break;
  55694. case 'Polygon':
  55695. this.map.setPaintProperty('draw-polygon-static.cold', name, value);
  55696. this.map.setPaintProperty('draw-polygon-static.hot', name, value);
  55697. break;
  55698. case 'Point':
  55699. this.map.setPaintProperty('draw-point-static.cold', name, value);
  55700. this.map.setPaintProperty('draw-point-static.hot', name, value);
  55701. break;
  55702. default:
  55703. break;
  55704. }
  55705. }
  55706. }
  55707. }, {
  55708. key: "setValueOfPaintKey",
  55709. value: function setValueOfPaintKey(key, name) {
  55710. var data = [];
  55711. var featureStyle = this.layerStyleList[key];
  55712. for (var id in featureStyle) {
  55713. var info = featureStyle[id];
  55714. data.push(id);
  55715. data.push(info[name]);
  55716. }
  55717. switch (name) {
  55718. // 这里的默认值应该和初始化的地方保持一致
  55719. case 'circle-color':
  55720. case 'line-color':
  55721. case 'fill-color':
  55722. case 'fill-outline-color':
  55723. return ['match', ['get', 'id']].concat(data, [this.defaultStyle['line-color']]);
  55724. case 'line-dasharray':
  55725. return featureStyle[this.activeFeature.id][name] || this.defaultStyle[name];
  55726. default:
  55727. return ['match', ['get', 'id']].concat(data, [this.defaultStyle[name]]);
  55728. }
  55729. }
  55730. }, {
  55731. key: "_getDefaultStyle",
  55732. value: function _getDefaultStyle() {
  55733. if (!this.defaultStyle) {
  55734. var defaultStyle = {};
  55735. defaultStyle['line-color'] = this.map.getPaintProperty('draw-line-static.cold', 'line-color');
  55736. defaultStyle['line-width'] = this.map.getPaintProperty('draw-line-static.cold', 'line-width');
  55737. defaultStyle['line-dasharray'] = this.map.getPaintProperty('draw-line-static.cold', 'line-dasharray');
  55738. defaultStyle['fill-opacity'] = this.map.getPaintProperty('draw-polygon-static.cold', 'fill-opacity');
  55739. defaultStyle['circle-radius'] = this.map.getPaintProperty('draw-point-static.cold', 'circle-radius');
  55740. this.defaultStyle = defaultStyle;
  55741. }
  55742. }
  55743. }, {
  55744. key: "removed",
  55745. value: function removed() {
  55746. this.clearAllFeatures();
  55747. this.draw = null;
  55748. }
  55749. }, {
  55750. key: "clearAllFeatures",
  55751. value: function clearAllFeatures() {
  55752. this.featureIds && this.draw.delete(this.featureIds);
  55753. this.featureIds = [];
  55754. this.activeFeature = {};
  55755. this.dashedLayerIds = [];
  55756. this.layerStyleList = {};
  55757. }
  55758. }, {
  55759. key: "_isDrawing",
  55760. value: function _isDrawing() {
  55761. return this.draw && _drawEvent.default.$options.getDrawingState(this.mapTarget, this.componentName);
  55762. }
  55763. }]);
  55764. return DrawViewModel;
  55765. }(_mapboxGlEnhance.default.Evented);
  55766. exports.default = DrawViewModel;
  55767. /***/ }),
  55768. /***/ "c18d":
  55769. /***/ (function(module, exports, __webpack_require__) {
  55770. "use strict";
  55771. var _interopRequireDefault = __webpack_require__("8e6d");
  55772. Object.defineProperty(exports, "__esModule", {
  55773. value: true
  55774. });
  55775. exports.default = void 0;
  55776. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  55777. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  55778. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  55779. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  55780. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  55781. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  55782. var _vuePropertyDecorator = __webpack_require__("e22c");
  55783. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  55784. var _AnimateMarkerLayerViewModel = _interopRequireDefault(__webpack_require__("a890"));
  55785. var _BreathingApertureMarker = _interopRequireDefault(__webpack_require__("8ca6"));
  55786. var _DiffusedApertureMarker = _interopRequireDefault(__webpack_require__("50a6"));
  55787. var _HaloRingMarker = _interopRequireDefault(__webpack_require__("0467"));
  55788. var _RotatingApertureMarker = _interopRequireDefault(__webpack_require__("a11f"));
  55789. var _RotatingTextBorderMarker = _interopRequireDefault(__webpack_require__("24bf"));
  55790. var _FluorescenceMarker = _interopRequireDefault(__webpack_require__("2d647"));
  55791. var _lodash = _interopRequireDefault(__webpack_require__("5f9f"));
  55792. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  55793. var c = arguments.length,
  55794. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  55795. d;
  55796. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  55797. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  55798. }
  55799. return c > 3 && r && Object.defineProperty(target, key, r), r;
  55800. };
  55801. var AnimateMarkerLayer =
  55802. /*#__PURE__*/
  55803. function (_Mixins) {
  55804. (0, _inherits2.default)(AnimateMarkerLayer, _Mixins);
  55805. function AnimateMarkerLayer() {
  55806. (0, _classCallCheck2.default)(this, AnimateMarkerLayer);
  55807. return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(AnimateMarkerLayer).apply(this, arguments));
  55808. }
  55809. (0, _createClass2.default)(AnimateMarkerLayer, [{
  55810. key: "featuresChanged",
  55811. value: function featuresChanged(newVal, oldVal) {
  55812. if (this.viewModel && !(0, _lodash.default)(newVal, oldVal)) {
  55813. this._pointFeatures = this._getPointFeatures(this.features);
  55814. this._getMarkerElement(this._pointFeatures);
  55815. this._markersElement.length > 0 && this.viewModel.setFeatures(this._pointFeatures, this._markersElement);
  55816. }
  55817. }
  55818. }, {
  55819. key: "typeChanged",
  55820. value: function typeChanged() {
  55821. if (this.viewModel) {
  55822. this._pointFeatures = this._getPointFeatures(this.features);
  55823. this._getMarkerElement(this._pointFeatures);
  55824. this._markersElement.length > 0 && this.viewModel.setType(this._markersElement);
  55825. }
  55826. }
  55827. }, {
  55828. key: "widthChanged",
  55829. value: function widthChanged() {
  55830. if (this.viewModel && this.width) {
  55831. this.marker && this.marker.setMarkersWidth(this.width);
  55832. }
  55833. }
  55834. }, {
  55835. key: "heightChanged",
  55836. value: function heightChanged() {
  55837. if (this.viewModel && this.height) {
  55838. this.marker && this.marker.setMarkersHeight && this.marker.setMarkersHeight(this.height);
  55839. }
  55840. }
  55841. }, {
  55842. key: "textColorChanged",
  55843. value: function textColorChanged() {
  55844. if (this.viewModel && this.textColor) {
  55845. this.marker && this.marker.setMarkersTextColor(this.textColor);
  55846. }
  55847. }
  55848. }, {
  55849. key: "textFontSizeChanged",
  55850. value: function textFontSizeChanged() {
  55851. if (this.viewModel && this.textFontSize) {
  55852. this.marker && this.marker.setMarkersTextFontSize(this.textFontSize);
  55853. }
  55854. }
  55855. }, {
  55856. key: "colorsChanged",
  55857. value: function colorsChanged() {
  55858. if (this.viewModel && this.colors && this.colors.length && this.colors.length > 0) {
  55859. this.marker && this.marker.setMarkersColors(this.colors);
  55860. }
  55861. }
  55862. }, {
  55863. key: "textFieldChanged",
  55864. value: function textFieldChanged() {
  55865. if (this.textField) {
  55866. this.marker && this.marker.setMarkersTextField(this.textField);
  55867. }
  55868. }
  55869. }, {
  55870. key: "created",
  55871. value: function created() {
  55872. this._pointFeatures = this._getPointFeatures(this.features);
  55873. this._getMarkerElement(this._pointFeatures);
  55874. this.viewModel = new _AnimateMarkerLayerViewModel.default(this._pointFeatures, this._markersElement, this.fitBounds);
  55875. }
  55876. }, {
  55877. key: "mounted",
  55878. value: function mounted() {
  55879. this._markersElement = [];
  55880. }
  55881. }, {
  55882. key: "_getMarkerElement",
  55883. value: function _getMarkerElement(features) {
  55884. this._markersElement = [];
  55885. this.marker = null;
  55886. var width = this.width,
  55887. height = this.height,
  55888. colors = this.colors,
  55889. textFontSize = this.textFontSize,
  55890. textColor = this.textColor,
  55891. textField = this.textField;
  55892. if (!this.features || JSON.stringify(this.features) === '{}' || !this.features.features) {
  55893. this.viewModel && this.viewModel.removed();
  55894. return;
  55895. }
  55896. if (features.features.length === 0) {
  55897. this.viewModel.removed();
  55898. return;
  55899. }
  55900. switch (this.type) {
  55901. case 'rotatingAperture':
  55902. this.marker = new _RotatingApertureMarker.default(features, {
  55903. width: width,
  55904. colors: colors,
  55905. textField: textField,
  55906. textColor: textColor,
  55907. textFontSize: textFontSize
  55908. });
  55909. break;
  55910. case 'haloRing':
  55911. this.marker = new _HaloRingMarker.default(features, {
  55912. width: width,
  55913. colors: colors,
  55914. textField: textField,
  55915. textColor: textColor,
  55916. textFontSize: textFontSize
  55917. });
  55918. break;
  55919. case 'breathingAperture':
  55920. this.marker = new _BreathingApertureMarker.default(features, {
  55921. width: width,
  55922. colors: colors,
  55923. textField: textField,
  55924. textColor: textColor,
  55925. textFontSize: textFontSize
  55926. });
  55927. break;
  55928. case 'diffusedAperture':
  55929. this.marker = new _DiffusedApertureMarker.default(features, {
  55930. width: width,
  55931. colors: colors,
  55932. textField: textField,
  55933. textColor: textColor,
  55934. textFontSize: textFontSize
  55935. });
  55936. break;
  55937. case 'rotatingTextBorder':
  55938. this.marker = new _RotatingTextBorderMarker.default(features, {
  55939. width: width,
  55940. height: height,
  55941. colors: colors,
  55942. textField: textField,
  55943. textColor: textColor,
  55944. textFontSize: textFontSize
  55945. });
  55946. break;
  55947. case 'fluorescence':
  55948. this.marker = new _FluorescenceMarker.default(features, {
  55949. width: width,
  55950. colors: colors,
  55951. textField: textField,
  55952. textColor: textColor,
  55953. textFontSize: textFontSize
  55954. });
  55955. break;
  55956. }
  55957. this.marker && (this._markersElement = this.marker.getMarkersElement());
  55958. }
  55959. }, {
  55960. key: "_getPointFeatures",
  55961. value: function _getPointFeatures(features) {
  55962. var resultFeatures = [];
  55963. features && features.features && features.features.forEach(function (feature) {
  55964. var geometry = feature.geometry;
  55965. if (geometry && geometry.coordinates && geometry.coordinates.length !== 0 && geometry.type === 'Point') {
  55966. resultFeatures.push(feature);
  55967. }
  55968. });
  55969. return {
  55970. type: 'FeatureCollection',
  55971. features: resultFeatures
  55972. };
  55973. }
  55974. }, {
  55975. key: "render",
  55976. value: function render() {}
  55977. }]);
  55978. return AnimateMarkerLayer;
  55979. }((0, _vuePropertyDecorator.Mixins)(_mapGetter.default));
  55980. __decorate([(0, _vuePropertyDecorator.Prop)()], AnimateMarkerLayer.prototype, "features", void 0);
  55981. __decorate([(0, _vuePropertyDecorator.Prop)({
  55982. default: 'breathingAperture'
  55983. })], AnimateMarkerLayer.prototype, "type", void 0);
  55984. __decorate([(0, _vuePropertyDecorator.Prop)()], AnimateMarkerLayer.prototype, "width", void 0);
  55985. __decorate([(0, _vuePropertyDecorator.Prop)()], AnimateMarkerLayer.prototype, "height", void 0);
  55986. __decorate([(0, _vuePropertyDecorator.Prop)()], AnimateMarkerLayer.prototype, "colors", void 0);
  55987. __decorate([(0, _vuePropertyDecorator.Prop)({
  55988. default: 14
  55989. })], AnimateMarkerLayer.prototype, "textFontSize", void 0);
  55990. __decorate([(0, _vuePropertyDecorator.Prop)()], AnimateMarkerLayer.prototype, "textColor", void 0);
  55991. __decorate([(0, _vuePropertyDecorator.Prop)()], AnimateMarkerLayer.prototype, "textField", void 0);
  55992. __decorate([(0, _vuePropertyDecorator.Prop)()], AnimateMarkerLayer.prototype, "fitBounds", void 0);
  55993. __decorate([(0, _vuePropertyDecorator.Watch)('features')], AnimateMarkerLayer.prototype, "featuresChanged", null);
  55994. __decorate([(0, _vuePropertyDecorator.Watch)('type')], AnimateMarkerLayer.prototype, "typeChanged", null);
  55995. __decorate([(0, _vuePropertyDecorator.Watch)('width')], AnimateMarkerLayer.prototype, "widthChanged", null);
  55996. __decorate([(0, _vuePropertyDecorator.Watch)('height')], AnimateMarkerLayer.prototype, "heightChanged", null);
  55997. __decorate([(0, _vuePropertyDecorator.Watch)('textColor')], AnimateMarkerLayer.prototype, "textColorChanged", null);
  55998. __decorate([(0, _vuePropertyDecorator.Watch)('textFontSize')], AnimateMarkerLayer.prototype, "textFontSizeChanged", null);
  55999. __decorate([(0, _vuePropertyDecorator.Watch)('colors')], AnimateMarkerLayer.prototype, "colorsChanged", null);
  56000. __decorate([(0, _vuePropertyDecorator.Watch)('textField')], AnimateMarkerLayer.prototype, "textFieldChanged", null);
  56001. AnimateMarkerLayer = __decorate([(0, _vuePropertyDecorator.Component)({
  56002. name: 'SmAnimateMarkerLayer'
  56003. })], AnimateMarkerLayer);
  56004. var _default = AnimateMarkerLayer;
  56005. exports.default = _default;
  56006. /***/ }),
  56007. /***/ "c196":
  56008. /***/ (function(module, exports, __webpack_require__) {
  56009. "use strict";
  56010. var _interopRequireDefault = __webpack_require__("8e6d");
  56011. Object.defineProperty(exports, "__esModule", {
  56012. value: true
  56013. });
  56014. exports.default = void 0;
  56015. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  56016. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  56017. var _HeatmapLayerViewModel = _interopRequireDefault(__webpack_require__("acc9"));
  56018. var _HeatMapStyle = _interopRequireDefault(__webpack_require__("03b3"));
  56019. var _default2 = {
  56020. name: 'SmHeatmapLayer',
  56021. mixins: [_mapGetter.default, _layer.default],
  56022. props: {
  56023. data: {
  56024. type: Object,
  56025. required: true
  56026. },
  56027. layerStyle: {
  56028. type: Object,
  56029. default: function _default() {
  56030. return new _HeatMapStyle.default();
  56031. }
  56032. }
  56033. },
  56034. watch: {
  56035. data: {
  56036. handler: function handler(val) {
  56037. this.viewModel && this.viewModel.setData(val);
  56038. },
  56039. deep: true
  56040. },
  56041. layerStyle: {
  56042. handler: function handler(val) {
  56043. this.viewModel && this.viewModel.setLayerStyle(val);
  56044. },
  56045. deep: true
  56046. }
  56047. },
  56048. created: function created() {
  56049. this.viewModel = new _HeatmapLayerViewModel.default(this.data, {
  56050. layerId: this.layerId,
  56051. layerStyle: this.layerStyle
  56052. });
  56053. },
  56054. render: function render() {}
  56055. };
  56056. exports.default = _default2;
  56057. /***/ }),
  56058. /***/ "c220":
  56059. /***/ (function(module, exports) {
  56060. function moveToMapPosition (master, clones) {
  56061. var center = master.getCenter();
  56062. var zoom = master.getZoom();
  56063. var bearing = master.getBearing();
  56064. var pitch = master.getPitch();
  56065. clones.forEach(function (clone) {
  56066. clone.jumpTo({
  56067. center: center,
  56068. zoom: zoom,
  56069. bearing: bearing,
  56070. pitch: pitch
  56071. });
  56072. });
  56073. }
  56074. // Sync movements of two maps.
  56075. //
  56076. // All interactions that result in movement end up firing
  56077. // a "move" event. The trick here, though, is to
  56078. // ensure that movements don't cycle from one map
  56079. // to the other and back again, because such a cycle
  56080. // - could cause an infinite loop
  56081. // - prematurely halts prolonged movements like
  56082. // double-click zooming, box-zooming, and flying
  56083. function syncMaps () {
  56084. var maps;
  56085. var argLen = arguments.length;
  56086. if (argLen === 1) {
  56087. maps = arguments[0];
  56088. } else {
  56089. maps = [];
  56090. for (var i = 0; i < argLen; i++) {
  56091. maps.push(arguments[i]);
  56092. }
  56093. }
  56094. // Create all the movement functions, because if they're created every time
  56095. // they wouldn't be the same and couldn't be removed.
  56096. var fns = [];
  56097. maps.forEach(function (map, index) {
  56098. fns[index] = sync.bind(null, map, maps.filter(function (o, i) { return i !== index; }));
  56099. });
  56100. function on () {
  56101. maps.forEach(function (map, index) {
  56102. map.on('move', fns[index]);
  56103. });
  56104. }
  56105. function off () {
  56106. maps.forEach(function (map, index) {
  56107. map.off('move', fns[index]);
  56108. });
  56109. }
  56110. // When one map moves, we turn off the movement listeners
  56111. // on all the maps, move it, then turn the listeners on again
  56112. function sync (master, clones) {
  56113. off();
  56114. moveToMapPosition(master, clones);
  56115. on();
  56116. }
  56117. on();
  56118. return function(){ off(); fns = []; };
  56119. }
  56120. module.exports = syncMaps;
  56121. /***/ }),
  56122. /***/ "c295":
  56123. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  56124. "use strict";
  56125. __webpack_require__.r(__webpack_exports__);
  56126. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Draw_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3ce4");
  56127. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Draw_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Draw_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  56128. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Draw_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Draw_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  56129. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Draw_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  56130. /***/ }),
  56131. /***/ "c2cb":
  56132. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  56133. "use strict";
  56134. __webpack_require__.r(__webpack_exports__);
  56135. /* harmony import */ var _RoutePlan_vue_vue_type_template_id_6792a83a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ed0b");
  56136. /* harmony import */ var _RoutePlan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("adbd");
  56137. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _RoutePlan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _RoutePlan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  56138. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  56139. /* normalize component */
  56140. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  56141. _RoutePlan_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  56142. _RoutePlan_vue_vue_type_template_id_6792a83a___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  56143. _RoutePlan_vue_vue_type_template_id_6792a83a___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  56144. false,
  56145. null,
  56146. null,
  56147. null
  56148. )
  56149. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  56150. /***/ }),
  56151. /***/ "c363":
  56152. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  56153. "use strict";
  56154. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/video-player/VideoPlayer.vue?vue&type=template&id=4df6cab8&
  56155. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-video-player"},[_c('video-player',{ref:"videoPlayer",staticClass:"sm-component-video-player__player sm-component-video-player__player--main",attrs:{"options":_vm.playerOptions,"playsinline":true},on:{"play":function($event){return _vm.onPlayerPlay($event)},"ended":function($event){return _vm.onPlayerEnded($event)},"loadeddata":function($event){return _vm.onPlayerLoadeddata($event)}}}),_vm._v(" "),(_vm.url)?_c('a-modal',{attrs:{"wrapClassName":"sm-component-video-player-modal","footer":null,"width":"60%","maskClosable":false},model:{value:(_vm.modalVisible),callback:function ($$v) {_vm.modalVisible=$$v},expression:"modalVisible"}},[_c('video-player',{ref:"modalVideoPlayer",staticClass:"sm-component-video-player__player",attrs:{"options":_vm.modalPlayerOptions,"playsinline":true},on:{"play":function($event){return _vm.onModalPlayerPlay($event)},"loadeddata":function($event){return _vm.onModalPlayerLoadeddata($event)}}})],1):_vm._e()],1)}
  56156. var staticRenderFns = []
  56157. // CONCATENATED MODULE: ./src/common/video-player/VideoPlayer.vue?vue&type=template&id=4df6cab8&
  56158. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  56159. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  56160. /***/ }),
  56161. /***/ "c365":
  56162. /***/ (function(module, exports, __webpack_require__) {
  56163. var helper = __webpack_require__("cabd");
  56164. var isArray = __webpack_require__("df2e").isArray;
  56165. var currentElement, currentElementName;
  56166. function validateOptions(userOptions) {
  56167. var options = helper.copyOptions(userOptions);
  56168. helper.ensureFlagExists('ignoreDeclaration', options);
  56169. helper.ensureFlagExists('ignoreInstruction', options);
  56170. helper.ensureFlagExists('ignoreAttributes', options);
  56171. helper.ensureFlagExists('ignoreText', options);
  56172. helper.ensureFlagExists('ignoreComment', options);
  56173. helper.ensureFlagExists('ignoreCdata', options);
  56174. helper.ensureFlagExists('ignoreDoctype', options);
  56175. helper.ensureFlagExists('compact', options);
  56176. helper.ensureFlagExists('indentText', options);
  56177. helper.ensureFlagExists('indentCdata', options);
  56178. helper.ensureFlagExists('indentAttributes', options);
  56179. helper.ensureFlagExists('indentInstruction', options);
  56180. helper.ensureFlagExists('fullTagEmptyElement', options);
  56181. helper.ensureFlagExists('noQuotesForNativeAttributes', options);
  56182. helper.ensureSpacesExists(options);
  56183. if (typeof options.spaces === 'number') {
  56184. options.spaces = Array(options.spaces + 1).join(' ');
  56185. }
  56186. helper.ensureKeyExists('declaration', options);
  56187. helper.ensureKeyExists('instruction', options);
  56188. helper.ensureKeyExists('attributes', options);
  56189. helper.ensureKeyExists('text', options);
  56190. helper.ensureKeyExists('comment', options);
  56191. helper.ensureKeyExists('cdata', options);
  56192. helper.ensureKeyExists('doctype', options);
  56193. helper.ensureKeyExists('type', options);
  56194. helper.ensureKeyExists('name', options);
  56195. helper.ensureKeyExists('elements', options);
  56196. helper.checkFnExists('doctype', options);
  56197. helper.checkFnExists('instruction', options);
  56198. helper.checkFnExists('cdata', options);
  56199. helper.checkFnExists('comment', options);
  56200. helper.checkFnExists('text', options);
  56201. helper.checkFnExists('instructionName', options);
  56202. helper.checkFnExists('elementName', options);
  56203. helper.checkFnExists('attributeName', options);
  56204. helper.checkFnExists('attributeValue', options);
  56205. helper.checkFnExists('attributes', options);
  56206. helper.checkFnExists('fullTagEmptyElement', options);
  56207. return options;
  56208. }
  56209. function writeIndentation(options, depth, firstLine) {
  56210. return (!firstLine && options.spaces ? '\n' : '') + Array(depth + 1).join(options.spaces);
  56211. }
  56212. function writeAttributes(attributes, options, depth) {
  56213. if (options.ignoreAttributes) {
  56214. return '';
  56215. }
  56216. if ('attributesFn' in options) {
  56217. attributes = options.attributesFn(attributes, currentElementName, currentElement);
  56218. }
  56219. var key, attr, attrName, quote, result = [];
  56220. for (key in attributes) {
  56221. if (attributes.hasOwnProperty(key) && attributes[key] !== null && attributes[key] !== undefined) {
  56222. quote = options.noQuotesForNativeAttributes && typeof attributes[key] !== 'string' ? '' : '"';
  56223. attr = '' + attributes[key]; // ensure number and boolean are converted to String
  56224. attr = attr.replace(/"/g, '&quot;');
  56225. attrName = 'attributeNameFn' in options ? options.attributeNameFn(key, attr, currentElementName, currentElement) : key;
  56226. result.push((options.spaces && options.indentAttributes? writeIndentation(options, depth+1, false) : ' '));
  56227. result.push(attrName + '=' + quote + ('attributeValueFn' in options ? options.attributeValueFn(attr, key, currentElementName, currentElement) : attr) + quote);
  56228. }
  56229. }
  56230. if (attributes && Object.keys(attributes).length && options.spaces && options.indentAttributes) {
  56231. result.push(writeIndentation(options, depth, false));
  56232. }
  56233. return result.join('');
  56234. }
  56235. function writeDeclaration(declaration, options, depth) {
  56236. currentElement = declaration;
  56237. currentElementName = 'xml';
  56238. return options.ignoreDeclaration ? '' : '<?' + 'xml' + writeAttributes(declaration[options.attributesKey], options, depth) + '?>';
  56239. }
  56240. function writeInstruction(instruction, options, depth) {
  56241. if (options.ignoreInstruction) {
  56242. return '';
  56243. }
  56244. var key;
  56245. for (key in instruction) {
  56246. if (instruction.hasOwnProperty(key)) {
  56247. break;
  56248. }
  56249. }
  56250. var instructionName = 'instructionNameFn' in options ? options.instructionNameFn(key, instruction[key], currentElementName, currentElement) : key;
  56251. if (typeof instruction[key] === 'object') {
  56252. currentElement = instruction;
  56253. currentElementName = instructionName;
  56254. return '<?' + instructionName + writeAttributes(instruction[key][options.attributesKey], options, depth) + '?>';
  56255. } else {
  56256. var instructionValue = instruction[key] ? instruction[key] : '';
  56257. if ('instructionFn' in options) instructionValue = options.instructionFn(instructionValue, key, currentElementName, currentElement);
  56258. return '<?' + instructionName + (instructionValue ? ' ' + instructionValue : '') + '?>';
  56259. }
  56260. }
  56261. function writeComment(comment, options) {
  56262. return options.ignoreComment ? '' : '<!--' + ('commentFn' in options ? options.commentFn(comment, currentElementName, currentElement) : comment) + '-->';
  56263. }
  56264. function writeCdata(cdata, options) {
  56265. return options.ignoreCdata ? '' : '<![CDATA[' + ('cdataFn' in options ? options.cdataFn(cdata, currentElementName, currentElement) : cdata) + ']]>';
  56266. }
  56267. function writeDoctype(doctype, options) {
  56268. return options.ignoreDoctype ? '' : '<!DOCTYPE ' + ('doctypeFn' in options ? options.doctypeFn(doctype, currentElementName, currentElement) : doctype) + '>';
  56269. }
  56270. function writeText(text, options) {
  56271. if (options.ignoreText) return '';
  56272. text = '' + text; // ensure Number and Boolean are converted to String
  56273. text = text.replace(/&amp;/g, '&'); // desanitize to avoid double sanitization
  56274. text = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
  56275. return 'textFn' in options ? options.textFn(text, currentElementName, currentElement) : text;
  56276. }
  56277. function hasContent(element, options) {
  56278. var i;
  56279. if (element.elements && element.elements.length) {
  56280. for (i = 0; i < element.elements.length; ++i) {
  56281. switch (element.elements[i][options.typeKey]) {
  56282. case 'text':
  56283. if (options.indentText) {
  56284. return true;
  56285. }
  56286. break; // skip to next key
  56287. case 'cdata':
  56288. if (options.indentCdata) {
  56289. return true;
  56290. }
  56291. break; // skip to next key
  56292. case 'instruction':
  56293. if (options.indentInstruction) {
  56294. return true;
  56295. }
  56296. break; // skip to next key
  56297. case 'doctype':
  56298. case 'comment':
  56299. case 'element':
  56300. return true;
  56301. default:
  56302. return true;
  56303. }
  56304. }
  56305. }
  56306. return false;
  56307. }
  56308. function writeElement(element, options, depth) {
  56309. currentElement = element;
  56310. currentElementName = element.name;
  56311. var xml = [], elementName = 'elementNameFn' in options ? options.elementNameFn(element.name, element) : element.name;
  56312. xml.push('<' + elementName);
  56313. if (element[options.attributesKey]) {
  56314. xml.push(writeAttributes(element[options.attributesKey], options, depth));
  56315. }
  56316. var withClosingTag = element[options.elementsKey] && element[options.elementsKey].length || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve';
  56317. if (!withClosingTag) {
  56318. if ('fullTagEmptyElementFn' in options) {
  56319. withClosingTag = options.fullTagEmptyElementFn(element.name, element);
  56320. } else {
  56321. withClosingTag = options.fullTagEmptyElement;
  56322. }
  56323. }
  56324. if (withClosingTag) {
  56325. xml.push('>');
  56326. if (element[options.elementsKey] && element[options.elementsKey].length) {
  56327. xml.push(writeElements(element[options.elementsKey], options, depth + 1));
  56328. currentElement = element;
  56329. currentElementName = element.name;
  56330. }
  56331. xml.push(options.spaces && hasContent(element, options) ? '\n' + Array(depth + 1).join(options.spaces) : '');
  56332. xml.push('</' + elementName + '>');
  56333. } else {
  56334. xml.push('/>');
  56335. }
  56336. return xml.join('');
  56337. }
  56338. function writeElements(elements, options, depth, firstLine) {
  56339. return elements.reduce(function (xml, element) {
  56340. var indent = writeIndentation(options, depth, firstLine && !xml);
  56341. switch (element.type) {
  56342. case 'element': return xml + indent + writeElement(element, options, depth);
  56343. case 'comment': return xml + indent + writeComment(element[options.commentKey], options);
  56344. case 'doctype': return xml + indent + writeDoctype(element[options.doctypeKey], options);
  56345. case 'cdata': return xml + (options.indentCdata ? indent : '') + writeCdata(element[options.cdataKey], options);
  56346. case 'text': return xml + (options.indentText ? indent : '') + writeText(element[options.textKey], options);
  56347. case 'instruction':
  56348. var instruction = {};
  56349. instruction[element[options.nameKey]] = element[options.attributesKey] ? element : element[options.instructionKey];
  56350. return xml + (options.indentInstruction ? indent : '') + writeInstruction(instruction, options, depth);
  56351. }
  56352. }, '');
  56353. }
  56354. function hasContentCompact(element, options, anyContent) {
  56355. var key;
  56356. for (key in element) {
  56357. if (element.hasOwnProperty(key)) {
  56358. switch (key) {
  56359. case options.parentKey:
  56360. case options.attributesKey:
  56361. break; // skip to next key
  56362. case options.textKey:
  56363. if (options.indentText || anyContent) {
  56364. return true;
  56365. }
  56366. break; // skip to next key
  56367. case options.cdataKey:
  56368. if (options.indentCdata || anyContent) {
  56369. return true;
  56370. }
  56371. break; // skip to next key
  56372. case options.instructionKey:
  56373. if (options.indentInstruction || anyContent) {
  56374. return true;
  56375. }
  56376. break; // skip to next key
  56377. case options.doctypeKey:
  56378. case options.commentKey:
  56379. return true;
  56380. default:
  56381. return true;
  56382. }
  56383. }
  56384. }
  56385. return false;
  56386. }
  56387. function writeElementCompact(element, name, options, depth, indent) {
  56388. currentElement = element;
  56389. currentElementName = name;
  56390. var elementName = 'elementNameFn' in options ? options.elementNameFn(name, element) : name;
  56391. if (typeof element === 'undefined' || element === null) {
  56392. return 'fullTagEmptyElementFn' in options && options.fullTagEmptyElementFn(name, element) || options.fullTagEmptyElement ? '<' + elementName + '></' + elementName + '>' : '<' + elementName + '/>';
  56393. }
  56394. var xml = [];
  56395. if (name) {
  56396. xml.push('<' + elementName);
  56397. if (typeof element !== 'object') {
  56398. xml.push('>' + writeText(element,options) + '</' + elementName + '>');
  56399. return xml.join('');
  56400. }
  56401. if (element[options.attributesKey]) {
  56402. xml.push(writeAttributes(element[options.attributesKey], options, depth));
  56403. }
  56404. var withClosingTag = hasContentCompact(element, options, true) || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve';
  56405. if (!withClosingTag) {
  56406. if ('fullTagEmptyElementFn' in options) {
  56407. withClosingTag = options.fullTagEmptyElementFn(name, element);
  56408. } else {
  56409. withClosingTag = options.fullTagEmptyElement;
  56410. }
  56411. }
  56412. if (withClosingTag) {
  56413. xml.push('>');
  56414. } else {
  56415. xml.push('/>');
  56416. return xml.join('');
  56417. }
  56418. }
  56419. xml.push(writeElementsCompact(element, options, depth + 1, false));
  56420. currentElement = element;
  56421. currentElementName = name;
  56422. if (name) {
  56423. xml.push((indent ? writeIndentation(options, depth, false) : '') + '</' + elementName + '>');
  56424. }
  56425. return xml.join('');
  56426. }
  56427. function writeElementsCompact(element, options, depth, firstLine) {
  56428. var i, key, nodes, xml = [];
  56429. for (key in element) {
  56430. if (element.hasOwnProperty(key)) {
  56431. nodes = isArray(element[key]) ? element[key] : [element[key]];
  56432. for (i = 0; i < nodes.length; ++i) {
  56433. switch (key) {
  56434. case options.declarationKey: xml.push(writeDeclaration(nodes[i], options, depth)); break;
  56435. case options.instructionKey: xml.push((options.indentInstruction ? writeIndentation(options, depth, firstLine) : '') + writeInstruction(nodes[i], options, depth)); break;
  56436. case options.attributesKey: case options.parentKey: break; // skip
  56437. case options.textKey: xml.push((options.indentText ? writeIndentation(options, depth, firstLine) : '') + writeText(nodes[i], options)); break;
  56438. case options.cdataKey: xml.push((options.indentCdata ? writeIndentation(options, depth, firstLine) : '') + writeCdata(nodes[i], options)); break;
  56439. case options.doctypeKey: xml.push(writeIndentation(options, depth, firstLine) + writeDoctype(nodes[i], options)); break;
  56440. case options.commentKey: xml.push(writeIndentation(options, depth, firstLine) + writeComment(nodes[i], options)); break;
  56441. default: xml.push(writeIndentation(options, depth, firstLine) + writeElementCompact(nodes[i], key, options, depth, hasContentCompact(nodes[i], options)));
  56442. }
  56443. firstLine = firstLine && !xml.length;
  56444. }
  56445. }
  56446. }
  56447. return xml.join('');
  56448. }
  56449. module.exports = function (js, options) {
  56450. options = validateOptions(options);
  56451. var xml = [];
  56452. currentElement = js;
  56453. currentElementName = '_root_';
  56454. if (options.compact) {
  56455. xml.push(writeElementsCompact(js, options, 0, true));
  56456. } else {
  56457. if (js[options.declarationKey]) {
  56458. xml.push(writeDeclaration(js[options.declarationKey], options, 0));
  56459. }
  56460. if (js[options.elementsKey] && js[options.elementsKey].length) {
  56461. xml.push(writeElements(js[options.elementsKey], options, 0, !xml.length));
  56462. }
  56463. }
  56464. return xml.join('');
  56465. };
  56466. /***/ }),
  56467. /***/ "c486":
  56468. /***/ (function(module, exports, __webpack_require__) {
  56469. "use strict";
  56470. var _interopRequireDefault = __webpack_require__("8e6d");
  56471. Object.defineProperty(exports, "__esModule", {
  56472. value: true
  56473. });
  56474. exports.default = void 0;
  56475. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  56476. var _lang = __webpack_require__("4e21");
  56477. var iPortalDataParameter = function iPortalDataParameter(options) {
  56478. (0, _classCallCheck2.default)(this, iPortalDataParameter);
  56479. this.type = 'iPortal';
  56480. this.url = options.url;
  56481. this.attributeFilter = options.attributeFilter || null;
  56482. this.maxFeatures = options.maxFeatures || 20;
  56483. this.name = options.name || (0, _lang.geti18n)().t('commontypes.iportalData');
  56484. this.withCredentials = options.withCredentials || false;
  56485. };
  56486. exports.default = iPortalDataParameter;
  56487. /***/ }),
  56488. /***/ "c492":
  56489. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  56490. "use strict";
  56491. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/border/Border.vue?vue&type=template&id=531a677a&
  56492. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:_vm.borderId,staticClass:"sm-component-border",style:(_vm.borderStyle)},[_c('div',{staticClass:"sm-component-border__content",style:(_vm.contentStyle)},[_vm._t("default")],2)])}
  56493. var staticRenderFns = []
  56494. // CONCATENATED MODULE: ./src/common/border/Border.vue?vue&type=template&id=531a677a&
  56495. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  56496. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  56497. /***/ }),
  56498. /***/ "c4fc":
  56499. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  56500. "use strict";
  56501. __webpack_require__.r(__webpack_exports__);
  56502. /* harmony import */ var _LabelThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f2fc");
  56503. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _LabelThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _LabelThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  56504. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  56505. var render, staticRenderFns
  56506. /* normalize component */
  56507. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  56508. _LabelThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  56509. render,
  56510. staticRenderFns,
  56511. false,
  56512. null,
  56513. null,
  56514. null
  56515. )
  56516. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  56517. /***/ }),
  56518. /***/ "c51e":
  56519. /***/ (function(module, exports, __webpack_require__) {
  56520. "use strict";
  56521. var _interopRequireDefault = __webpack_require__("8e6d");
  56522. Object.defineProperty(exports, "__esModule", {
  56523. value: true
  56524. });
  56525. exports.default = void 0;
  56526. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  56527. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  56528. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  56529. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  56530. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  56531. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  56532. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  56533. var _vuePropertyDecorator = __webpack_require__("e22c");
  56534. var _RestService = _interopRequireDefault(__webpack_require__("5bf3"));
  56535. var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
  56536. var c = arguments.length,
  56537. r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
  56538. d;
  56539. if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
  56540. if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  56541. }
  56542. return c > 3 && r && Object.defineProperty(target, key, r), r;
  56543. };
  56544. var ThirdService =
  56545. /*#__PURE__*/
  56546. function (_Vue) {
  56547. (0, _inherits2.default)(ThirdService, _Vue);
  56548. function ThirdService() {
  56549. var _this;
  56550. (0, _classCallCheck2.default)(this, ThirdService);
  56551. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(ThirdService).apply(this, arguments));
  56552. _this.features = null;
  56553. _this.restService = null;
  56554. return _this;
  56555. }
  56556. (0, _createClass2.default)(ThirdService, [{
  56557. key: "onUrlChange",
  56558. value: function onUrlChange(newValue) {
  56559. if (newValue) {
  56560. this.getData();
  56561. }
  56562. }
  56563. }, {
  56564. key: "onFieldChange",
  56565. value: function onFieldChange(newValue) {
  56566. if (this.url) {
  56567. this.setValue(this.features);
  56568. }
  56569. }
  56570. }, {
  56571. key: "onProxyChange",
  56572. value: function onProxyChange(newValue) {
  56573. this.restService && this.restService.setProxy(this.proxy);
  56574. if (this.url) {
  56575. this.getData();
  56576. }
  56577. }
  56578. }, {
  56579. key: "getData",
  56580. value: function getData() {
  56581. if (!this.restService) {
  56582. this.restService = new _RestService.default({
  56583. proxy: this.proxy
  56584. });
  56585. this.restService.on({
  56586. getdatasucceeded: this.fetchData
  56587. });
  56588. }
  56589. this.restService.getData(this.url);
  56590. }
  56591. }, {
  56592. key: "fetchData",
  56593. value: function fetchData(_ref) {
  56594. var features = _ref.features;
  56595. this.features = features;
  56596. this.setValue(features);
  56597. }
  56598. }, {
  56599. key: "setValue",
  56600. value: function setValue(features) {
  56601. if (features && !!features.length) {
  56602. var field = this.field;
  56603. this.finalValue = features[0].properties[field];
  56604. }
  56605. }
  56606. }]);
  56607. return ThirdService;
  56608. }(_vue.default);
  56609. __decorate([(0, _vuePropertyDecorator.Prop)({
  56610. default: ''
  56611. })], ThirdService.prototype, "url", void 0);
  56612. __decorate([(0, _vuePropertyDecorator.Prop)({
  56613. default: ''
  56614. })], ThirdService.prototype, "field", void 0);
  56615. __decorate([(0, _vuePropertyDecorator.Prop)({
  56616. default: ''
  56617. })], ThirdService.prototype, "proxy", void 0);
  56618. __decorate([(0, _vuePropertyDecorator.Watch)('url', {
  56619. immediate: true
  56620. })], ThirdService.prototype, "onUrlChange", null);
  56621. __decorate([(0, _vuePropertyDecorator.Watch)('field')], ThirdService.prototype, "onFieldChange", null);
  56622. __decorate([(0, _vuePropertyDecorator.Watch)('proxy')], ThirdService.prototype, "onProxyChange", null);
  56623. ThirdService = __decorate([_vuePropertyDecorator.Component], ThirdService);
  56624. var _default = ThirdService;
  56625. exports.default = _default;
  56626. /***/ }),
  56627. /***/ "c599":
  56628. /***/ (function(module, exports, __webpack_require__) {
  56629. "use strict";
  56630. Object.defineProperty(exports, "__esModule", {
  56631. value: true
  56632. });
  56633. exports.handleMultyPolygon = void 0;
  56634. // mbgl isssue https://github.com/mapbox/mapbox-gl-js/issues/7023
  56635. // https://github.com/mapbox/vector-tile-js/blob/a9a9102/lib/vectortilefeature.js#L195-L233
  56636. var handleMultyPolygon = function handleMultyPolygon(features) {
  56637. features.forEach(function (feature) {
  56638. if (feature.geometry.type !== 'Polygon') {
  56639. return;
  56640. }
  56641. var coords = feature.geometry.coordinates;
  56642. if (coords.length > 1) {
  56643. var coordinates = [[coords[0]]];
  56644. for (var index = 1; index < coords.length; index++) {
  56645. var element = coords[index];
  56646. var area = signedArea(element);
  56647. if (area === 0) {
  56648. continue;
  56649. }
  56650. if (area > 0) {
  56651. coordinates[coordinates.length - 1].push(coords[index]);
  56652. } else {
  56653. coordinates.push([coords[index]]);
  56654. }
  56655. }
  56656. feature.geometry.coordinates = coordinates;
  56657. feature.geometry.type = 'MultiPolygon';
  56658. }
  56659. });
  56660. return features;
  56661. };
  56662. exports.handleMultyPolygon = handleMultyPolygon;
  56663. function signedArea(ring) {
  56664. var sum = 0;
  56665. for (var i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {
  56666. p1 = ring[i];
  56667. p2 = ring[j];
  56668. sum += (p2[0] - p1[0]) * (p1[1] + p2[1]);
  56669. }
  56670. return sum;
  56671. }
  56672. /***/ }),
  56673. /***/ "c66c":
  56674. /***/ (function(module, exports, __webpack_require__) {
  56675. "use strict";
  56676. /* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.
  56677. //
  56678. // Permission is hereby granted, free of charge, to any person obtaining a
  56679. // copy of this software and associated documentation files (the
  56680. // "Software"), to deal in the Software without restriction, including
  56681. // without limitation the rights to use, copy, modify, merge, publish,
  56682. // distribute, sublicense, and/or sell copies of the Software, and to permit
  56683. // persons to whom the Software is furnished to do so, subject to the
  56684. // following conditions:
  56685. //
  56686. // The above copyright notice and this permission notice shall be included
  56687. // in all copies or substantial portions of the Software.
  56688. //
  56689. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  56690. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  56691. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  56692. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  56693. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  56694. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  56695. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  56696. /*<replacement>*/
  56697. var pna = __webpack_require__("3e48");
  56698. /*</replacement>*/
  56699. module.exports = Readable;
  56700. /*<replacement>*/
  56701. var isArray = __webpack_require__("5b56");
  56702. /*</replacement>*/
  56703. /*<replacement>*/
  56704. var Duplex;
  56705. /*</replacement>*/
  56706. Readable.ReadableState = ReadableState;
  56707. /*<replacement>*/
  56708. var EE = __webpack_require__("0956").EventEmitter;
  56709. var EElistenerCount = function (emitter, type) {
  56710. return emitter.listeners(type).length;
  56711. };
  56712. /*</replacement>*/
  56713. /*<replacement>*/
  56714. var Stream = __webpack_require__("5e89");
  56715. /*</replacement>*/
  56716. /*<replacement>*/
  56717. var Buffer = __webpack_require__("54da").Buffer;
  56718. var OurUint8Array = global.Uint8Array || function () {};
  56719. function _uint8ArrayToBuffer(chunk) {
  56720. return Buffer.from(chunk);
  56721. }
  56722. function _isUint8Array(obj) {
  56723. return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
  56724. }
  56725. /*</replacement>*/
  56726. /*<replacement>*/
  56727. var util = __webpack_require__("9107");
  56728. util.inherits = __webpack_require__("fe04");
  56729. /*</replacement>*/
  56730. /*<replacement>*/
  56731. var debugUtil = __webpack_require__(1);
  56732. var debug = void 0;
  56733. if (debugUtil && debugUtil.debuglog) {
  56734. debug = debugUtil.debuglog('stream');
  56735. } else {
  56736. debug = function () {};
  56737. }
  56738. /*</replacement>*/
  56739. var BufferList = __webpack_require__("9bd6");
  56740. var destroyImpl = __webpack_require__("74c0");
  56741. var StringDecoder;
  56742. util.inherits(Readable, Stream);
  56743. var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
  56744. function prependListener(emitter, event, fn) {
  56745. // Sadly this is not cacheable as some libraries bundle their own
  56746. // event emitter implementation with them.
  56747. if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
  56748. // This is a hack to make sure that our error handler is attached before any
  56749. // userland ones. NEVER DO THIS. This is here only because this code needs
  56750. // to continue to work with older versions of Node.js that do not include
  56751. // the prependListener() method. The goal is to eventually remove this hack.
  56752. if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
  56753. }
  56754. function ReadableState(options, stream) {
  56755. Duplex = Duplex || __webpack_require__("d711");
  56756. options = options || {};
  56757. // Duplex streams are both readable and writable, but share
  56758. // the same options object.
  56759. // However, some cases require setting options to different
  56760. // values for the readable and the writable sides of the duplex stream.
  56761. // These options can be provided separately as readableXXX and writableXXX.
  56762. var isDuplex = stream instanceof Duplex;
  56763. // object stream flag. Used to make read(n) ignore n and to
  56764. // make all the buffer merging and length checks go away
  56765. this.objectMode = !!options.objectMode;
  56766. if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
  56767. // the point at which it stops calling _read() to fill the buffer
  56768. // Note: 0 is a valid value, means "don't call _read preemptively ever"
  56769. var hwm = options.highWaterMark;
  56770. var readableHwm = options.readableHighWaterMark;
  56771. var defaultHwm = this.objectMode ? 16 : 16 * 1024;
  56772. if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;
  56773. // cast to ints.
  56774. this.highWaterMark = Math.floor(this.highWaterMark);
  56775. // A linked list is used to store data chunks instead of an array because the
  56776. // linked list can remove elements from the beginning faster than
  56777. // array.shift()
  56778. this.buffer = new BufferList();
  56779. this.length = 0;
  56780. this.pipes = null;
  56781. this.pipesCount = 0;
  56782. this.flowing = null;
  56783. this.ended = false;
  56784. this.endEmitted = false;
  56785. this.reading = false;
  56786. // a flag to be able to tell if the event 'readable'/'data' is emitted
  56787. // immediately, or on a later tick. We set this to true at first, because
  56788. // any actions that shouldn't happen until "later" should generally also
  56789. // not happen before the first read call.
  56790. this.sync = true;
  56791. // whenever we return null, then we set a flag to say
  56792. // that we're awaiting a 'readable' event emission.
  56793. this.needReadable = false;
  56794. this.emittedReadable = false;
  56795. this.readableListening = false;
  56796. this.resumeScheduled = false;
  56797. // has it been destroyed
  56798. this.destroyed = false;
  56799. // Crypto is kind of old and crusty. Historically, its default string
  56800. // encoding is 'binary' so we have to make this configurable.
  56801. // Everything else in the universe uses 'utf8', though.
  56802. this.defaultEncoding = options.defaultEncoding || 'utf8';
  56803. // the number of writers that are awaiting a drain event in .pipe()s
  56804. this.awaitDrain = 0;
  56805. // if true, a maybeReadMore has been scheduled
  56806. this.readingMore = false;
  56807. this.decoder = null;
  56808. this.encoding = null;
  56809. if (options.encoding) {
  56810. if (!StringDecoder) StringDecoder = __webpack_require__("5465").StringDecoder;
  56811. this.decoder = new StringDecoder(options.encoding);
  56812. this.encoding = options.encoding;
  56813. }
  56814. }
  56815. function Readable(options) {
  56816. Duplex = Duplex || __webpack_require__("d711");
  56817. if (!(this instanceof Readable)) return new Readable(options);
  56818. this._readableState = new ReadableState(options, this);
  56819. // legacy
  56820. this.readable = true;
  56821. if (options) {
  56822. if (typeof options.read === 'function') this._read = options.read;
  56823. if (typeof options.destroy === 'function') this._destroy = options.destroy;
  56824. }
  56825. Stream.call(this);
  56826. }
  56827. Object.defineProperty(Readable.prototype, 'destroyed', {
  56828. get: function () {
  56829. if (this._readableState === undefined) {
  56830. return false;
  56831. }
  56832. return this._readableState.destroyed;
  56833. },
  56834. set: function (value) {
  56835. // we ignore the value if the stream
  56836. // has not been initialized yet
  56837. if (!this._readableState) {
  56838. return;
  56839. }
  56840. // backward compatibility, the user is explicitly
  56841. // managing destroyed
  56842. this._readableState.destroyed = value;
  56843. }
  56844. });
  56845. Readable.prototype.destroy = destroyImpl.destroy;
  56846. Readable.prototype._undestroy = destroyImpl.undestroy;
  56847. Readable.prototype._destroy = function (err, cb) {
  56848. this.push(null);
  56849. cb(err);
  56850. };
  56851. // Manually shove something into the read() buffer.
  56852. // This returns true if the highWaterMark has not been hit yet,
  56853. // similar to how Writable.write() returns true if you should
  56854. // write() some more.
  56855. Readable.prototype.push = function (chunk, encoding) {
  56856. var state = this._readableState;
  56857. var skipChunkCheck;
  56858. if (!state.objectMode) {
  56859. if (typeof chunk === 'string') {
  56860. encoding = encoding || state.defaultEncoding;
  56861. if (encoding !== state.encoding) {
  56862. chunk = Buffer.from(chunk, encoding);
  56863. encoding = '';
  56864. }
  56865. skipChunkCheck = true;
  56866. }
  56867. } else {
  56868. skipChunkCheck = true;
  56869. }
  56870. return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
  56871. };
  56872. // Unshift should *always* be something directly out of read()
  56873. Readable.prototype.unshift = function (chunk) {
  56874. return readableAddChunk(this, chunk, null, true, false);
  56875. };
  56876. function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
  56877. var state = stream._readableState;
  56878. if (chunk === null) {
  56879. state.reading = false;
  56880. onEofChunk(stream, state);
  56881. } else {
  56882. var er;
  56883. if (!skipChunkCheck) er = chunkInvalid(state, chunk);
  56884. if (er) {
  56885. stream.emit('error', er);
  56886. } else if (state.objectMode || chunk && chunk.length > 0) {
  56887. if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
  56888. chunk = _uint8ArrayToBuffer(chunk);
  56889. }
  56890. if (addToFront) {
  56891. if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
  56892. } else if (state.ended) {
  56893. stream.emit('error', new Error('stream.push() after EOF'));
  56894. } else {
  56895. state.reading = false;
  56896. if (state.decoder && !encoding) {
  56897. chunk = state.decoder.write(chunk);
  56898. if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
  56899. } else {
  56900. addChunk(stream, state, chunk, false);
  56901. }
  56902. }
  56903. } else if (!addToFront) {
  56904. state.reading = false;
  56905. }
  56906. }
  56907. return needMoreData(state);
  56908. }
  56909. function addChunk(stream, state, chunk, addToFront) {
  56910. if (state.flowing && state.length === 0 && !state.sync) {
  56911. stream.emit('data', chunk);
  56912. stream.read(0);
  56913. } else {
  56914. // update the buffer info.
  56915. state.length += state.objectMode ? 1 : chunk.length;
  56916. if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
  56917. if (state.needReadable) emitReadable(stream);
  56918. }
  56919. maybeReadMore(stream, state);
  56920. }
  56921. function chunkInvalid(state, chunk) {
  56922. var er;
  56923. if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
  56924. er = new TypeError('Invalid non-string/buffer chunk');
  56925. }
  56926. return er;
  56927. }
  56928. // if it's past the high water mark, we can push in some more.
  56929. // Also, if we have no data yet, we can stand some
  56930. // more bytes. This is to work around cases where hwm=0,
  56931. // such as the repl. Also, if the push() triggered a
  56932. // readable event, and the user called read(largeNumber) such that
  56933. // needReadable was set, then we ought to push more, so that another
  56934. // 'readable' event will be triggered.
  56935. function needMoreData(state) {
  56936. return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
  56937. }
  56938. Readable.prototype.isPaused = function () {
  56939. return this._readableState.flowing === false;
  56940. };
  56941. // backwards compatibility.
  56942. Readable.prototype.setEncoding = function (enc) {
  56943. if (!StringDecoder) StringDecoder = __webpack_require__("5465").StringDecoder;
  56944. this._readableState.decoder = new StringDecoder(enc);
  56945. this._readableState.encoding = enc;
  56946. return this;
  56947. };
  56948. // Don't raise the hwm > 8MB
  56949. var MAX_HWM = 0x800000;
  56950. function computeNewHighWaterMark(n) {
  56951. if (n >= MAX_HWM) {
  56952. n = MAX_HWM;
  56953. } else {
  56954. // Get the next highest power of 2 to prevent increasing hwm excessively in
  56955. // tiny amounts
  56956. n--;
  56957. n |= n >>> 1;
  56958. n |= n >>> 2;
  56959. n |= n >>> 4;
  56960. n |= n >>> 8;
  56961. n |= n >>> 16;
  56962. n++;
  56963. }
  56964. return n;
  56965. }
  56966. // This function is designed to be inlinable, so please take care when making
  56967. // changes to the function body.
  56968. function howMuchToRead(n, state) {
  56969. if (n <= 0 || state.length === 0 && state.ended) return 0;
  56970. if (state.objectMode) return 1;
  56971. if (n !== n) {
  56972. // Only flow one buffer at a time
  56973. if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
  56974. }
  56975. // If we're asking for more than the current hwm, then raise the hwm.
  56976. if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
  56977. if (n <= state.length) return n;
  56978. // Don't have enough
  56979. if (!state.ended) {
  56980. state.needReadable = true;
  56981. return 0;
  56982. }
  56983. return state.length;
  56984. }
  56985. // you can override either this method, or the async _read(n) below.
  56986. Readable.prototype.read = function (n) {
  56987. debug('read', n);
  56988. n = parseInt(n, 10);
  56989. var state = this._readableState;
  56990. var nOrig = n;
  56991. if (n !== 0) state.emittedReadable = false;
  56992. // if we're doing read(0) to trigger a readable event, but we
  56993. // already have a bunch of data in the buffer, then just trigger
  56994. // the 'readable' event and move on.
  56995. if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
  56996. debug('read: emitReadable', state.length, state.ended);
  56997. if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
  56998. return null;
  56999. }
  57000. n = howMuchToRead(n, state);
  57001. // if we've ended, and we're now clear, then finish it up.
  57002. if (n === 0 && state.ended) {
  57003. if (state.length === 0) endReadable(this);
  57004. return null;
  57005. }
  57006. // All the actual chunk generation logic needs to be
  57007. // *below* the call to _read. The reason is that in certain
  57008. // synthetic stream cases, such as passthrough streams, _read
  57009. // may be a completely synchronous operation which may change
  57010. // the state of the read buffer, providing enough data when
  57011. // before there was *not* enough.
  57012. //
  57013. // So, the steps are:
  57014. // 1. Figure out what the state of things will be after we do
  57015. // a read from the buffer.
  57016. //
  57017. // 2. If that resulting state will trigger a _read, then call _read.
  57018. // Note that this may be asynchronous, or synchronous. Yes, it is
  57019. // deeply ugly to write APIs this way, but that still doesn't mean
  57020. // that the Readable class should behave improperly, as streams are
  57021. // designed to be sync/async agnostic.
  57022. // Take note if the _read call is sync or async (ie, if the read call
  57023. // has returned yet), so that we know whether or not it's safe to emit
  57024. // 'readable' etc.
  57025. //
  57026. // 3. Actually pull the requested chunks out of the buffer and return.
  57027. // if we need a readable event, then we need to do some reading.
  57028. var doRead = state.needReadable;
  57029. debug('need readable', doRead);
  57030. // if we currently have less than the highWaterMark, then also read some
  57031. if (state.length === 0 || state.length - n < state.highWaterMark) {
  57032. doRead = true;
  57033. debug('length less than watermark', doRead);
  57034. }
  57035. // however, if we've ended, then there's no point, and if we're already
  57036. // reading, then it's unnecessary.
  57037. if (state.ended || state.reading) {
  57038. doRead = false;
  57039. debug('reading or ended', doRead);
  57040. } else if (doRead) {
  57041. debug('do read');
  57042. state.reading = true;
  57043. state.sync = true;
  57044. // if the length is currently zero, then we *need* a readable event.
  57045. if (state.length === 0) state.needReadable = true;
  57046. // call internal read method
  57047. this._read(state.highWaterMark);
  57048. state.sync = false;
  57049. // If _read pushed data synchronously, then `reading` will be false,
  57050. // and we need to re-evaluate how much data we can return to the user.
  57051. if (!state.reading) n = howMuchToRead(nOrig, state);
  57052. }
  57053. var ret;
  57054. if (n > 0) ret = fromList(n, state);else ret = null;
  57055. if (ret === null) {
  57056. state.needReadable = true;
  57057. n = 0;
  57058. } else {
  57059. state.length -= n;
  57060. }
  57061. if (state.length === 0) {
  57062. // If we have nothing in the buffer, then we want to know
  57063. // as soon as we *do* get something into the buffer.
  57064. if (!state.ended) state.needReadable = true;
  57065. // If we tried to read() past the EOF, then emit end on the next tick.
  57066. if (nOrig !== n && state.ended) endReadable(this);
  57067. }
  57068. if (ret !== null) this.emit('data', ret);
  57069. return ret;
  57070. };
  57071. function onEofChunk(stream, state) {
  57072. if (state.ended) return;
  57073. if (state.decoder) {
  57074. var chunk = state.decoder.end();
  57075. if (chunk && chunk.length) {
  57076. state.buffer.push(chunk);
  57077. state.length += state.objectMode ? 1 : chunk.length;
  57078. }
  57079. }
  57080. state.ended = true;
  57081. // emit 'readable' now to make sure it gets picked up.
  57082. emitReadable(stream);
  57083. }
  57084. // Don't emit readable right away in sync mode, because this can trigger
  57085. // another read() call => stack overflow. This way, it might trigger
  57086. // a nextTick recursion warning, but that's not so bad.
  57087. function emitReadable(stream) {
  57088. var state = stream._readableState;
  57089. state.needReadable = false;
  57090. if (!state.emittedReadable) {
  57091. debug('emitReadable', state.flowing);
  57092. state.emittedReadable = true;
  57093. if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);
  57094. }
  57095. }
  57096. function emitReadable_(stream) {
  57097. debug('emit readable');
  57098. stream.emit('readable');
  57099. flow(stream);
  57100. }
  57101. // at this point, the user has presumably seen the 'readable' event,
  57102. // and called read() to consume some data. that may have triggered
  57103. // in turn another _read(n) call, in which case reading = true if
  57104. // it's in progress.
  57105. // However, if we're not ended, or reading, and the length < hwm,
  57106. // then go ahead and try to read some more preemptively.
  57107. function maybeReadMore(stream, state) {
  57108. if (!state.readingMore) {
  57109. state.readingMore = true;
  57110. pna.nextTick(maybeReadMore_, stream, state);
  57111. }
  57112. }
  57113. function maybeReadMore_(stream, state) {
  57114. var len = state.length;
  57115. while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
  57116. debug('maybeReadMore read 0');
  57117. stream.read(0);
  57118. if (len === state.length)
  57119. // didn't get any data, stop spinning.
  57120. break;else len = state.length;
  57121. }
  57122. state.readingMore = false;
  57123. }
  57124. // abstract method. to be overridden in specific implementation classes.
  57125. // call cb(er, data) where data is <= n in length.
  57126. // for virtual (non-string, non-buffer) streams, "length" is somewhat
  57127. // arbitrary, and perhaps not very meaningful.
  57128. Readable.prototype._read = function (n) {
  57129. this.emit('error', new Error('_read() is not implemented'));
  57130. };
  57131. Readable.prototype.pipe = function (dest, pipeOpts) {
  57132. var src = this;
  57133. var state = this._readableState;
  57134. switch (state.pipesCount) {
  57135. case 0:
  57136. state.pipes = dest;
  57137. break;
  57138. case 1:
  57139. state.pipes = [state.pipes, dest];
  57140. break;
  57141. default:
  57142. state.pipes.push(dest);
  57143. break;
  57144. }
  57145. state.pipesCount += 1;
  57146. debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
  57147. var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
  57148. var endFn = doEnd ? onend : unpipe;
  57149. if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);
  57150. dest.on('unpipe', onunpipe);
  57151. function onunpipe(readable, unpipeInfo) {
  57152. debug('onunpipe');
  57153. if (readable === src) {
  57154. if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
  57155. unpipeInfo.hasUnpiped = true;
  57156. cleanup();
  57157. }
  57158. }
  57159. }
  57160. function onend() {
  57161. debug('onend');
  57162. dest.end();
  57163. }
  57164. // when the dest drains, it reduces the awaitDrain counter
  57165. // on the source. This would be more elegant with a .once()
  57166. // handler in flow(), but adding and removing repeatedly is
  57167. // too slow.
  57168. var ondrain = pipeOnDrain(src);
  57169. dest.on('drain', ondrain);
  57170. var cleanedUp = false;
  57171. function cleanup() {
  57172. debug('cleanup');
  57173. // cleanup event handlers once the pipe is broken
  57174. dest.removeListener('close', onclose);
  57175. dest.removeListener('finish', onfinish);
  57176. dest.removeListener('drain', ondrain);
  57177. dest.removeListener('error', onerror);
  57178. dest.removeListener('unpipe', onunpipe);
  57179. src.removeListener('end', onend);
  57180. src.removeListener('end', unpipe);
  57181. src.removeListener('data', ondata);
  57182. cleanedUp = true;
  57183. // if the reader is waiting for a drain event from this
  57184. // specific writer, then it would cause it to never start
  57185. // flowing again.
  57186. // So, if this is awaiting a drain, then we just call it now.
  57187. // If we don't know, then assume that we are waiting for one.
  57188. if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
  57189. }
  57190. // If the user pushes more data while we're writing to dest then we'll end up
  57191. // in ondata again. However, we only want to increase awaitDrain once because
  57192. // dest will only emit one 'drain' event for the multiple writes.
  57193. // => Introduce a guard on increasing awaitDrain.
  57194. var increasedAwaitDrain = false;
  57195. src.on('data', ondata);
  57196. function ondata(chunk) {
  57197. debug('ondata');
  57198. increasedAwaitDrain = false;
  57199. var ret = dest.write(chunk);
  57200. if (false === ret && !increasedAwaitDrain) {
  57201. // If the user unpiped during `dest.write()`, it is possible
  57202. // to get stuck in a permanently paused state if that write
  57203. // also returned false.
  57204. // => Check whether `dest` is still a piping destination.
  57205. if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
  57206. debug('false write response, pause', src._readableState.awaitDrain);
  57207. src._readableState.awaitDrain++;
  57208. increasedAwaitDrain = true;
  57209. }
  57210. src.pause();
  57211. }
  57212. }
  57213. // if the dest has an error, then stop piping into it.
  57214. // however, don't suppress the throwing behavior for this.
  57215. function onerror(er) {
  57216. debug('onerror', er);
  57217. unpipe();
  57218. dest.removeListener('error', onerror);
  57219. if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
  57220. }
  57221. // Make sure our error handler is attached before userland ones.
  57222. prependListener(dest, 'error', onerror);
  57223. // Both close and finish should trigger unpipe, but only once.
  57224. function onclose() {
  57225. dest.removeListener('finish', onfinish);
  57226. unpipe();
  57227. }
  57228. dest.once('close', onclose);
  57229. function onfinish() {
  57230. debug('onfinish');
  57231. dest.removeListener('close', onclose);
  57232. unpipe();
  57233. }
  57234. dest.once('finish', onfinish);
  57235. function unpipe() {
  57236. debug('unpipe');
  57237. src.unpipe(dest);
  57238. }
  57239. // tell the dest that it's being piped to
  57240. dest.emit('pipe', src);
  57241. // start the flow if it hasn't been started already.
  57242. if (!state.flowing) {
  57243. debug('pipe resume');
  57244. src.resume();
  57245. }
  57246. return dest;
  57247. };
  57248. function pipeOnDrain(src) {
  57249. return function () {
  57250. var state = src._readableState;
  57251. debug('pipeOnDrain', state.awaitDrain);
  57252. if (state.awaitDrain) state.awaitDrain--;
  57253. if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
  57254. state.flowing = true;
  57255. flow(src);
  57256. }
  57257. };
  57258. }
  57259. Readable.prototype.unpipe = function (dest) {
  57260. var state = this._readableState;
  57261. var unpipeInfo = { hasUnpiped: false };
  57262. // if we're not piping anywhere, then do nothing.
  57263. if (state.pipesCount === 0) return this;
  57264. // just one destination. most common case.
  57265. if (state.pipesCount === 1) {
  57266. // passed in one, but it's not the right one.
  57267. if (dest && dest !== state.pipes) return this;
  57268. if (!dest) dest = state.pipes;
  57269. // got a match.
  57270. state.pipes = null;
  57271. state.pipesCount = 0;
  57272. state.flowing = false;
  57273. if (dest) dest.emit('unpipe', this, unpipeInfo);
  57274. return this;
  57275. }
  57276. // slow case. multiple pipe destinations.
  57277. if (!dest) {
  57278. // remove all.
  57279. var dests = state.pipes;
  57280. var len = state.pipesCount;
  57281. state.pipes = null;
  57282. state.pipesCount = 0;
  57283. state.flowing = false;
  57284. for (var i = 0; i < len; i++) {
  57285. dests[i].emit('unpipe', this, unpipeInfo);
  57286. }return this;
  57287. }
  57288. // try to find the right one.
  57289. var index = indexOf(state.pipes, dest);
  57290. if (index === -1) return this;
  57291. state.pipes.splice(index, 1);
  57292. state.pipesCount -= 1;
  57293. if (state.pipesCount === 1) state.pipes = state.pipes[0];
  57294. dest.emit('unpipe', this, unpipeInfo);
  57295. return this;
  57296. };
  57297. // set up data events if they are asked for
  57298. // Ensure readable listeners eventually get something
  57299. Readable.prototype.on = function (ev, fn) {
  57300. var res = Stream.prototype.on.call(this, ev, fn);
  57301. if (ev === 'data') {
  57302. // Start flowing on next tick if stream isn't explicitly paused
  57303. if (this._readableState.flowing !== false) this.resume();
  57304. } else if (ev === 'readable') {
  57305. var state = this._readableState;
  57306. if (!state.endEmitted && !state.readableListening) {
  57307. state.readableListening = state.needReadable = true;
  57308. state.emittedReadable = false;
  57309. if (!state.reading) {
  57310. pna.nextTick(nReadingNextTick, this);
  57311. } else if (state.length) {
  57312. emitReadable(this);
  57313. }
  57314. }
  57315. }
  57316. return res;
  57317. };
  57318. Readable.prototype.addListener = Readable.prototype.on;
  57319. function nReadingNextTick(self) {
  57320. debug('readable nexttick read 0');
  57321. self.read(0);
  57322. }
  57323. // pause() and resume() are remnants of the legacy readable stream API
  57324. // If the user uses them, then switch into old mode.
  57325. Readable.prototype.resume = function () {
  57326. var state = this._readableState;
  57327. if (!state.flowing) {
  57328. debug('resume');
  57329. state.flowing = true;
  57330. resume(this, state);
  57331. }
  57332. return this;
  57333. };
  57334. function resume(stream, state) {
  57335. if (!state.resumeScheduled) {
  57336. state.resumeScheduled = true;
  57337. pna.nextTick(resume_, stream, state);
  57338. }
  57339. }
  57340. function resume_(stream, state) {
  57341. if (!state.reading) {
  57342. debug('resume read 0');
  57343. stream.read(0);
  57344. }
  57345. state.resumeScheduled = false;
  57346. state.awaitDrain = 0;
  57347. stream.emit('resume');
  57348. flow(stream);
  57349. if (state.flowing && !state.reading) stream.read(0);
  57350. }
  57351. Readable.prototype.pause = function () {
  57352. debug('call pause flowing=%j', this._readableState.flowing);
  57353. if (false !== this._readableState.flowing) {
  57354. debug('pause');
  57355. this._readableState.flowing = false;
  57356. this.emit('pause');
  57357. }
  57358. return this;
  57359. };
  57360. function flow(stream) {
  57361. var state = stream._readableState;
  57362. debug('flow', state.flowing);
  57363. while (state.flowing && stream.read() !== null) {}
  57364. }
  57365. // wrap an old-style stream as the async data source.
  57366. // This is *not* part of the readable stream interface.
  57367. // It is an ugly unfortunate mess of history.
  57368. Readable.prototype.wrap = function (stream) {
  57369. var _this = this;
  57370. var state = this._readableState;
  57371. var paused = false;
  57372. stream.on('end', function () {
  57373. debug('wrapped end');
  57374. if (state.decoder && !state.ended) {
  57375. var chunk = state.decoder.end();
  57376. if (chunk && chunk.length) _this.push(chunk);
  57377. }
  57378. _this.push(null);
  57379. });
  57380. stream.on('data', function (chunk) {
  57381. debug('wrapped data');
  57382. if (state.decoder) chunk = state.decoder.write(chunk);
  57383. // don't skip over falsy values in objectMode
  57384. if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
  57385. var ret = _this.push(chunk);
  57386. if (!ret) {
  57387. paused = true;
  57388. stream.pause();
  57389. }
  57390. });
  57391. // proxy all the other methods.
  57392. // important when wrapping filters and duplexes.
  57393. for (var i in stream) {
  57394. if (this[i] === undefined && typeof stream[i] === 'function') {
  57395. this[i] = function (method) {
  57396. return function () {
  57397. return stream[method].apply(stream, arguments);
  57398. };
  57399. }(i);
  57400. }
  57401. }
  57402. // proxy certain important events.
  57403. for (var n = 0; n < kProxyEvents.length; n++) {
  57404. stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
  57405. }
  57406. // when we try to consume some more bytes, simply unpause the
  57407. // underlying stream.
  57408. this._read = function (n) {
  57409. debug('wrapped _read', n);
  57410. if (paused) {
  57411. paused = false;
  57412. stream.resume();
  57413. }
  57414. };
  57415. return this;
  57416. };
  57417. Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
  57418. // making it explicit this property is not enumerable
  57419. // because otherwise some prototype manipulation in
  57420. // userland will fail
  57421. enumerable: false,
  57422. get: function () {
  57423. return this._readableState.highWaterMark;
  57424. }
  57425. });
  57426. // exposed for testing purposes only.
  57427. Readable._fromList = fromList;
  57428. // Pluck off n bytes from an array of buffers.
  57429. // Length is the combined lengths of all the buffers in the list.
  57430. // This function is designed to be inlinable, so please take care when making
  57431. // changes to the function body.
  57432. function fromList(n, state) {
  57433. // nothing buffered
  57434. if (state.length === 0) return null;
  57435. var ret;
  57436. if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
  57437. // read it all, truncate the list
  57438. if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
  57439. state.buffer.clear();
  57440. } else {
  57441. // read part of list
  57442. ret = fromListPartial(n, state.buffer, state.decoder);
  57443. }
  57444. return ret;
  57445. }
  57446. // Extracts only enough buffered data to satisfy the amount requested.
  57447. // This function is designed to be inlinable, so please take care when making
  57448. // changes to the function body.
  57449. function fromListPartial(n, list, hasStrings) {
  57450. var ret;
  57451. if (n < list.head.data.length) {
  57452. // slice is the same for buffers and strings
  57453. ret = list.head.data.slice(0, n);
  57454. list.head.data = list.head.data.slice(n);
  57455. } else if (n === list.head.data.length) {
  57456. // first chunk is a perfect match
  57457. ret = list.shift();
  57458. } else {
  57459. // result spans more than one buffer
  57460. ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
  57461. }
  57462. return ret;
  57463. }
  57464. // Copies a specified amount of characters from the list of buffered data
  57465. // chunks.
  57466. // This function is designed to be inlinable, so please take care when making
  57467. // changes to the function body.
  57468. function copyFromBufferString(n, list) {
  57469. var p = list.head;
  57470. var c = 1;
  57471. var ret = p.data;
  57472. n -= ret.length;
  57473. while (p = p.next) {
  57474. var str = p.data;
  57475. var nb = n > str.length ? str.length : n;
  57476. if (nb === str.length) ret += str;else ret += str.slice(0, n);
  57477. n -= nb;
  57478. if (n === 0) {
  57479. if (nb === str.length) {
  57480. ++c;
  57481. if (p.next) list.head = p.next;else list.head = list.tail = null;
  57482. } else {
  57483. list.head = p;
  57484. p.data = str.slice(nb);
  57485. }
  57486. break;
  57487. }
  57488. ++c;
  57489. }
  57490. list.length -= c;
  57491. return ret;
  57492. }
  57493. // Copies a specified amount of bytes from the list of buffered data chunks.
  57494. // This function is designed to be inlinable, so please take care when making
  57495. // changes to the function body.
  57496. function copyFromBuffer(n, list) {
  57497. var ret = Buffer.allocUnsafe(n);
  57498. var p = list.head;
  57499. var c = 1;
  57500. p.data.copy(ret);
  57501. n -= p.data.length;
  57502. while (p = p.next) {
  57503. var buf = p.data;
  57504. var nb = n > buf.length ? buf.length : n;
  57505. buf.copy(ret, ret.length - n, 0, nb);
  57506. n -= nb;
  57507. if (n === 0) {
  57508. if (nb === buf.length) {
  57509. ++c;
  57510. if (p.next) list.head = p.next;else list.head = list.tail = null;
  57511. } else {
  57512. list.head = p;
  57513. p.data = buf.slice(nb);
  57514. }
  57515. break;
  57516. }
  57517. ++c;
  57518. }
  57519. list.length -= c;
  57520. return ret;
  57521. }
  57522. function endReadable(stream) {
  57523. var state = stream._readableState;
  57524. // If we get here before consuming all the bytes, then that is a
  57525. // bug in node. Should never happen.
  57526. if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
  57527. if (!state.endEmitted) {
  57528. state.ended = true;
  57529. pna.nextTick(endReadableNT, state, stream);
  57530. }
  57531. }
  57532. function endReadableNT(state, stream) {
  57533. // Check that we didn't get one last unshift.
  57534. if (!state.endEmitted && state.length === 0) {
  57535. state.endEmitted = true;
  57536. stream.readable = false;
  57537. stream.emit('end');
  57538. }
  57539. }
  57540. function indexOf(xs, x) {
  57541. for (var i = 0, l = xs.length; i < l; i++) {
  57542. if (xs[i] === x) return i;
  57543. }
  57544. return -1;
  57545. }
  57546. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("698d"), __webpack_require__("f2ac")))
  57547. /***/ }),
  57548. /***/ "c794":
  57549. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  57550. "use strict";
  57551. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/icon/Icon.vue?vue&type=template&id=076da86b&
  57552. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-icon"},[(!!_vm.iconClass)?_c('i',{class:_vm.customIconClass,style:([_vm.iconStyle, _vm.colorStyle]),attrs:{"theme":_vm.theme,"twoToneColor":_vm.twoToneColor,"component":_vm.component}}):_c('a-icon',{style:([_vm.iconStyle, _vm.colorStyle]),attrs:{"type":_vm.type,"theme":_vm.theme,"twoToneColor":_vm.twoToneColor,"component":_vm.component}})],1)}
  57553. var staticRenderFns = []
  57554. // CONCATENATED MODULE: ./src/common/icon/Icon.vue?vue&type=template&id=076da86b&
  57555. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  57556. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  57557. /***/ }),
  57558. /***/ "c832":
  57559. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  57560. "use strict";
  57561. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/tdt/results/StatisticsResult.vue?vue&type=template&id=511ff01e&
  57562. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.data)?_c('div',{staticClass:"statistics-results-container sm-component-tdtStatisticsResults"},[_c('div',{staticClass:"title"},[_vm._v("\n "+_vm._s(_vm.$t('tdtResults.on'))+"\n "),(_vm.prompt)?_c('span',{staticClass:"region"},[_vm._v(_vm._s(_vm.prompt.name))]):_vm._e(),_vm._v("\n "+_vm._s(_vm.$t('tdtResults.cityHadResults'))+"\n ")]),_vm._v(" "),_c('div',{staticClass:"content"},[_c('div',{staticClass:"priority-cities"},_vm._l((_vm.priorityCitys),function(item,index){return _c('div',{key:index,staticClass:"city-item",on:{"click":function($event){return _vm.searchDetail(item)}}},[_c('a',{style:(_vm.getColorStyle(0)),attrs:{"href":"javascript:void(0)"}},[_vm._v("\n "+_vm._s(item.name)+"\n "),_c('span',{style:(_vm.getTextColorStyle)},[_vm._v("("+_vm._s(item.count)+")")])])])}),0),_vm._v(" "),_c('div',{staticClass:"more-cities",on:{"click":function($event){_vm.showMore = !_vm.showMore}}},[_c('span',[_vm._v(_vm._s(_vm.$t('tdtResults.moreCity')))]),_vm._v(" "),_c('a-icon',{attrs:{"type":_vm.showMore ? 'caret-up' : 'caret-down'}})],1),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.showMore),expression:"showMore"}],staticClass:"cities-group"},[_c('div',{staticClass:"results"},[_c('a-tree',{style:(("--icon-color: " + _vm.getTextColor)),attrs:{"showLine":"","treeData":_vm.data,"defaultExpandedKeys":['0-0-0']},scopedSlots:_vm._u([{key:"title",fn:function(ref){
  57563. var title = ref.title;
  57564. var info = ref.info;
  57565. return [_c('div',{staticClass:"city-item",on:{"click":function($event){return _vm.searchDetail(info)}}},[_c('a',{style:(_vm.getColorStyle(0)),attrs:{"href":"javascript:void(0)"}},[_vm._v("\n "+_vm._s(title)+"\n "),_c('span',{style:(_vm.getTextColorStyle)},[_vm._v("("+_vm._s(info.count)+")")])])])]}}],null,false,1502040874)})],1)])])]):_vm._e()}
  57566. var staticRenderFns = []
  57567. // CONCATENATED MODULE: ./src/mapboxgl/tdt/results/StatisticsResult.vue?vue&type=template&id=511ff01e&
  57568. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  57569. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  57570. /***/ }),
  57571. /***/ "c978":
  57572. /***/ (function(module, exports, __webpack_require__) {
  57573. "use strict";
  57574. /*
  57575. * JsonSQL
  57576. * By: Trent Richardson [http://trentrichardson.com]
  57577. * Version 0.1
  57578. * Last Modified: 1/1/2008
  57579. *
  57580. * Copyright 2008 Trent Richardson
  57581. *
  57582. * Licensed under the Apache License, Version 2.0 (the "License");
  57583. * you may not use this file except in compliance with the License.
  57584. * You may obtain a copy of the License at
  57585. *
  57586. * http://www.apache.org/licenses/LICENSE-2.0
  57587. *
  57588. * Unless required by applicable law or agreed to in writing, software
  57589. * distributed under the License is distributed on an "AS IS" BASIS,
  57590. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  57591. * See the License for the specific language governing permissions and
  57592. * limitations under the License.
  57593. */
  57594. window.jsonsql = {
  57595. query: function query(sql, json) {
  57596. var returnfields = sql.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);
  57597. var ops = {
  57598. fields: returnfields[2].replace(' ', '').split(','),
  57599. from: returnfields[3].replace(' ', ''),
  57600. where: returnfields[4] == undefined ? 'true' : returnfields[4],
  57601. orderby: returnfields[5] == undefined ? [] : returnfields[5].replace(' ', '').split(','),
  57602. order: returnfields[6] == undefined ? 'asc' : returnfields[6],
  57603. limit: returnfields[7] == undefined ? [] : returnfields[7].replace(' ', '').split(',')
  57604. };
  57605. return this.parse(json, ops);
  57606. },
  57607. parse: function parse(json, ops) {
  57608. var o = {
  57609. fields: ['*'],
  57610. from: 'json',
  57611. where: '',
  57612. orderby: [],
  57613. order: 'asc',
  57614. limit: []
  57615. };
  57616. for (var i in ops) {
  57617. o[i] = ops[i];
  57618. }
  57619. var result = [];
  57620. result = this.returnFilter(json, o);
  57621. result = this.returnOrderBy(result, o.orderby, o.order);
  57622. result = this.returnLimit(result, o.limit);
  57623. return result;
  57624. },
  57625. returnFilter: function returnFilter(json, jsonsql_o) {
  57626. var jsonsql_scope = eval(jsonsql_o.from);
  57627. var jsonsql_result = [];
  57628. var jsonsql_rc = 0;
  57629. if (jsonsql_o.where == '') jsonsql_o.where = 'true';
  57630. for (var jsonsql_i in jsonsql_scope) {
  57631. // with(jsonsql_scope[jsonsql_i]){
  57632. // if(eval(jsonsql_o.where)){
  57633. // jsonsql_result[jsonsql_rc++] = this.returnFields(jsonsql_scope[jsonsql_i],jsonsql_o.fields);
  57634. // }
  57635. // }
  57636. // fix with -- stric mode
  57637. if (this.functionWith(jsonsql_scope[jsonsql_i], jsonsql_o.where)) {
  57638. jsonsql_result[jsonsql_rc++] = this.returnFields(jsonsql_scope[jsonsql_i], jsonsql_o.fields);
  57639. }
  57640. }
  57641. return jsonsql_result;
  57642. },
  57643. functionWith: function functionWith(scope, exp) {
  57644. if (!scope) return;
  57645. var resetArgs = '';
  57646. for (var key in scope) {
  57647. resetArgs = resetArgs + 'var ' + key + ' = _$_$_functionWith["' + key + '"];';
  57648. }
  57649. var nf = new Function('_$_$_functionWith', resetArgs + 'return ' + exp);
  57650. return nf(scope);
  57651. },
  57652. returnFields: function returnFields(scope, fields) {
  57653. if (fields.length == 0) fields = ['*'];
  57654. if (fields[0] == '*') return scope;
  57655. var returnobj = {};
  57656. for (var i in fields) {
  57657. returnobj[fields[i]] = scope[fields[i]];
  57658. }
  57659. return returnobj;
  57660. },
  57661. returnOrderBy: function returnOrderBy(result, orderby, order) {
  57662. if (orderby.length == 0) return result;
  57663. result.sort(function (a, b) {
  57664. switch (order.toLowerCase()) {
  57665. case 'desc':
  57666. return eval('a.' + orderby[0] + ' < b.' + orderby[0]) ? 1 : -1;
  57667. case 'asc':
  57668. return eval('a.' + orderby[0] + ' > b.' + orderby[0]) ? 1 : -1;
  57669. case 'descnum':
  57670. return eval('a.' + orderby[0] + ' - b.' + orderby[0]);
  57671. case 'ascnum':
  57672. return eval('b.' + orderby[0] + ' - a.' + orderby[0]);
  57673. }
  57674. });
  57675. return result;
  57676. },
  57677. returnLimit: function returnLimit(result, limit) {
  57678. switch (limit.length) {
  57679. case 0:
  57680. return result;
  57681. case 1:
  57682. return result.splice(0, limit[0]);
  57683. case 2:
  57684. return result.splice(limit[0] - 1, limit[1]);
  57685. }
  57686. }
  57687. };
  57688. /***/ }),
  57689. /***/ "ca40":
  57690. /***/ (function(module, exports) {
  57691. module.exports = __WEBPACK_EXTERNAL_MODULE_ca40__;
  57692. /***/ }),
  57693. /***/ "ca6a":
  57694. /***/ (function(module, exports) {
  57695. /**
  57696. * lodash (Custom Build) <https://lodash.com/>
  57697. * Build: `lodash modularize exports="npm" -o ./`
  57698. * Copyright jQuery Foundation and other contributors <https://jquery.org/>
  57699. * Released under MIT license <https://lodash.com/license>
  57700. * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  57701. * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  57702. */
  57703. /** Used as references for various `Number` constants. */
  57704. var NAN = 0 / 0;
  57705. /** `Object#toString` result references. */
  57706. var symbolTag = '[object Symbol]';
  57707. /** Used to match leading and trailing whitespace. */
  57708. var reTrim = /^\s+|\s+$/g;
  57709. /** Used to detect bad signed hexadecimal string values. */
  57710. var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
  57711. /** Used to detect binary string values. */
  57712. var reIsBinary = /^0b[01]+$/i;
  57713. /** Used to detect octal string values. */
  57714. var reIsOctal = /^0o[0-7]+$/i;
  57715. /** Built-in method references without a dependency on `root`. */
  57716. var freeParseInt = parseInt;
  57717. /** Used for built-in method references. */
  57718. var objectProto = Object.prototype;
  57719. /**
  57720. * Used to resolve the
  57721. * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
  57722. * of values.
  57723. */
  57724. var objectToString = objectProto.toString;
  57725. /**
  57726. * Checks if `value` is the
  57727. * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
  57728. * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
  57729. *
  57730. * @static
  57731. * @memberOf _
  57732. * @since 0.1.0
  57733. * @category Lang
  57734. * @param {*} value The value to check.
  57735. * @returns {boolean} Returns `true` if `value` is an object, else `false`.
  57736. * @example
  57737. *
  57738. * _.isObject({});
  57739. * // => true
  57740. *
  57741. * _.isObject([1, 2, 3]);
  57742. * // => true
  57743. *
  57744. * _.isObject(_.noop);
  57745. * // => true
  57746. *
  57747. * _.isObject(null);
  57748. * // => false
  57749. */
  57750. function isObject(value) {
  57751. var type = typeof value;
  57752. return !!value && (type == 'object' || type == 'function');
  57753. }
  57754. /**
  57755. * Checks if `value` is object-like. A value is object-like if it's not `null`
  57756. * and has a `typeof` result of "object".
  57757. *
  57758. * @static
  57759. * @memberOf _
  57760. * @since 4.0.0
  57761. * @category Lang
  57762. * @param {*} value The value to check.
  57763. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  57764. * @example
  57765. *
  57766. * _.isObjectLike({});
  57767. * // => true
  57768. *
  57769. * _.isObjectLike([1, 2, 3]);
  57770. * // => true
  57771. *
  57772. * _.isObjectLike(_.noop);
  57773. * // => false
  57774. *
  57775. * _.isObjectLike(null);
  57776. * // => false
  57777. */
  57778. function isObjectLike(value) {
  57779. return !!value && typeof value == 'object';
  57780. }
  57781. /**
  57782. * Checks if `value` is classified as a `Symbol` primitive or object.
  57783. *
  57784. * @static
  57785. * @memberOf _
  57786. * @since 4.0.0
  57787. * @category Lang
  57788. * @param {*} value The value to check.
  57789. * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
  57790. * @example
  57791. *
  57792. * _.isSymbol(Symbol.iterator);
  57793. * // => true
  57794. *
  57795. * _.isSymbol('abc');
  57796. * // => false
  57797. */
  57798. function isSymbol(value) {
  57799. return typeof value == 'symbol' ||
  57800. (isObjectLike(value) && objectToString.call(value) == symbolTag);
  57801. }
  57802. /**
  57803. * Converts `value` to a number.
  57804. *
  57805. * @static
  57806. * @memberOf _
  57807. * @since 4.0.0
  57808. * @category Lang
  57809. * @param {*} value The value to process.
  57810. * @returns {number} Returns the number.
  57811. * @example
  57812. *
  57813. * _.toNumber(3.2);
  57814. * // => 3.2
  57815. *
  57816. * _.toNumber(Number.MIN_VALUE);
  57817. * // => 5e-324
  57818. *
  57819. * _.toNumber(Infinity);
  57820. * // => Infinity
  57821. *
  57822. * _.toNumber('3.2');
  57823. * // => 3.2
  57824. */
  57825. function toNumber(value) {
  57826. if (typeof value == 'number') {
  57827. return value;
  57828. }
  57829. if (isSymbol(value)) {
  57830. return NAN;
  57831. }
  57832. if (isObject(value)) {
  57833. var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
  57834. value = isObject(other) ? (other + '') : other;
  57835. }
  57836. if (typeof value != 'string') {
  57837. return value === 0 ? value : +value;
  57838. }
  57839. value = value.replace(reTrim, '');
  57840. var isBinary = reIsBinary.test(value);
  57841. return (isBinary || reIsOctal.test(value))
  57842. ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
  57843. : (reIsBadHex.test(value) ? NAN : +value);
  57844. }
  57845. module.exports = toNumber;
  57846. /***/ }),
  57847. /***/ "ca94":
  57848. /***/ (function(module, exports, __webpack_require__) {
  57849. "use strict";
  57850. var _interopRequireDefault = __webpack_require__("8e6d");
  57851. Object.defineProperty(exports, "__esModule", {
  57852. value: true
  57853. });
  57854. exports.default = void 0;
  57855. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  57856. /**
  57857. * @class SymbolStyle
  57858. * @classdesc symbol 图层样式类。
  57859. */
  57860. var SymbolStyle = function SymbolStyle() {
  57861. var paint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  57862. var layout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  57863. (0, _classCallCheck2.default)(this, SymbolStyle);
  57864. this.paint = Object.assign({}, paint);
  57865. this.layout = Object.assign({
  57866. visibility: 'visible'
  57867. }, layout);
  57868. };
  57869. exports.default = SymbolStyle;
  57870. /***/ }),
  57871. /***/ "cab0":
  57872. /***/ (function(module, exports, __webpack_require__) {
  57873. "use strict";
  57874. Object.defineProperty(exports, "__esModule", {
  57875. value: true
  57876. });
  57877. exports.default = void 0;
  57878. //
  57879. //
  57880. //
  57881. //
  57882. //
  57883. //
  57884. //
  57885. //
  57886. //
  57887. //
  57888. //
  57889. //
  57890. //
  57891. //
  57892. //
  57893. //
  57894. //
  57895. //
  57896. //
  57897. //
  57898. //
  57899. //
  57900. //
  57901. //
  57902. //
  57903. //
  57904. //
  57905. //
  57906. //
  57907. //
  57908. //
  57909. //
  57910. //
  57911. //
  57912. //
  57913. //
  57914. //
  57915. //
  57916. //
  57917. //
  57918. //
  57919. //
  57920. //
  57921. //
  57922. //
  57923. //
  57924. //
  57925. //
  57926. //
  57927. //
  57928. //
  57929. //
  57930. //
  57931. //
  57932. //
  57933. //
  57934. //
  57935. //
  57936. //
  57937. //
  57938. //
  57939. //
  57940. //
  57941. //
  57942. //
  57943. //
  57944. //
  57945. //
  57946. //
  57947. //
  57948. //
  57949. //
  57950. //
  57951. //
  57952. //
  57953. //
  57954. //
  57955. //
  57956. //
  57957. //
  57958. //
  57959. //
  57960. //
  57961. //
  57962. //
  57963. //
  57964. //
  57965. //
  57966. //
  57967. //
  57968. //
  57969. //
  57970. //
  57971. //
  57972. //
  57973. //
  57974. //
  57975. //
  57976. //
  57977. //
  57978. //
  57979. //
  57980. //
  57981. //
  57982. //
  57983. //
  57984. //
  57985. //
  57986. //
  57987. //
  57988. //
  57989. //
  57990. //
  57991. //
  57992. //
  57993. //
  57994. //
  57995. //
  57996. //
  57997. var _default2 = {
  57998. name: 'RoutePlan',
  57999. props: {
  58000. routePlan: {
  58001. type: [Object, Array]
  58002. },
  58003. start: {
  58004. type: Object
  58005. },
  58006. dest: {
  58007. type: Object
  58008. },
  58009. spinning: {
  58010. type: Boolean
  58011. },
  58012. searchType: {
  58013. type: String,
  58014. default: 'car'
  58015. },
  58016. isError: {
  58017. type: Boolean,
  58018. default: false
  58019. },
  58020. themeStyle: {
  58021. type: Array,
  58022. default: function _default() {
  58023. return [];
  58024. }
  58025. }
  58026. },
  58027. data: function data() {
  58028. return {
  58029. activeTab: 0,
  58030. tabMap: {
  58031. car: [this.$t('tdtResults.fastRoute'), this.$t('tdtResults.shortRoute'), this.$t('tdtResults.walkRoute')],
  58032. bus: [this.$t('tdtResults.fast'), this.$t('tdtResults.noSubway'), this.$t('tdtResults.lessSwitch'), this.$t('tdtResults.lessWalk')]
  58033. },
  58034. expandDetail: []
  58035. };
  58036. },
  58037. watch: {
  58038. searchType: {
  58039. immediate: true,
  58040. handler: function handler() {
  58041. this.searchType === 'bus' && (this.expandDetail = [true]);
  58042. }
  58043. },
  58044. textColorsData: {
  58045. handler: function handler() {
  58046. this.changeSearchInputStyle();
  58047. }
  58048. }
  58049. },
  58050. methods: {
  58051. changeSearchInputStyle: function changeSearchInputStyle() {
  58052. var _this = this;
  58053. var serachInput = this.$el.querySelectorAll('.show-all-info');
  58054. serachInput.forEach(function (item) {
  58055. item.style.color = _this.getTextColor;
  58056. });
  58057. },
  58058. styleChanged: function styleChanged(val) {
  58059. this.expandDetail = val === 'car' ? [] : [true];
  58060. this.$emit('style-changed', val);
  58061. },
  58062. routePlanClicked: function routePlanClicked(e, index, parentIndex) {
  58063. var expand = !this.expandDetail[index - 1];
  58064. this.$set(this.expandDetail, index - 1, expand);
  58065. this.$emit('route-plan-clicked', expand && index, parentIndex);
  58066. },
  58067. checkboxChanged: function checkboxChanged(e) {
  58068. var _this$routePlan$featu = this.routePlan.features.features,
  58069. features = _this$routePlan$featu === void 0 ? [] : _this$routePlan$featu;
  58070. var arr = new Array(features.slice(1).length);
  58071. this.expandDetail = e.target.checked ? arr.fill(true) : arr.fill(false);
  58072. },
  58073. busInfoClicked: function busInfoClicked(e, idx) {
  58074. var expandDetail = this.expandDetail.slice();
  58075. expandDetail[idx] = !expandDetail[idx];
  58076. this.expandDetail = expandDetail.map(function (item, index) {
  58077. return index === idx ? item : false;
  58078. });
  58079. this.$emit('bus-info-clicked', idx, expandDetail[idx]);
  58080. },
  58081. busPlanClicked: function busPlanClicked(e, index, parentIndex) {
  58082. e.stopPropagation();
  58083. this.$emit('route-plan-clicked', index, parentIndex);
  58084. }
  58085. }
  58086. };
  58087. exports.default = _default2;
  58088. /***/ }),
  58089. /***/ "cabd":
  58090. /***/ (function(module, exports, __webpack_require__) {
  58091. var isArray = __webpack_require__("df2e").isArray;
  58092. module.exports = {
  58093. copyOptions: function (options) {
  58094. var key, copy = {};
  58095. for (key in options) {
  58096. if (options.hasOwnProperty(key)) {
  58097. copy[key] = options[key];
  58098. }
  58099. }
  58100. return copy;
  58101. },
  58102. ensureFlagExists: function (item, options) {
  58103. if (!(item in options) || typeof options[item] !== 'boolean') {
  58104. options[item] = false;
  58105. }
  58106. },
  58107. ensureSpacesExists: function (options) {
  58108. if (!('spaces' in options) || (typeof options.spaces !== 'number' && typeof options.spaces !== 'string')) {
  58109. options.spaces = 0;
  58110. }
  58111. },
  58112. ensureAlwaysArrayExists: function (options) {
  58113. if (!('alwaysArray' in options) || (typeof options.alwaysArray !== 'boolean' && !isArray(options.alwaysArray))) {
  58114. options.alwaysArray = false;
  58115. }
  58116. },
  58117. ensureKeyExists: function (key, options) {
  58118. if (!(key + 'Key' in options) || typeof options[key + 'Key'] !== 'string') {
  58119. options[key + 'Key'] = options.compact ? '_' + key : key;
  58120. }
  58121. },
  58122. checkFnExists: function (key, options) {
  58123. return key + 'Fn' in options;
  58124. }
  58125. };
  58126. /***/ }),
  58127. /***/ "cadc":
  58128. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  58129. "use strict";
  58130. __webpack_require__.r(__webpack_exports__);
  58131. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Border_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f5a9");
  58132. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Border_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Border_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  58133. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Border_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Border_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  58134. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Border_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  58135. /***/ }),
  58136. /***/ "cced":
  58137. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  58138. "use strict";
  58139. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/tdt/results/PointsResult.vue?vue&type=template&id=3ae049af&
  58140. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.data)?_c('div',{staticClass:"sm-component-tdtPointsResults points-result-container"},[(_vm.from==='Search')?_c('div',{staticClass:"title"},[_vm._v("\n "+_vm._s(_vm.$t('tdtResults.on'))+"\n "),(_vm.prompt)?_c('span',{staticClass:"region"},[_vm._v(_vm._s(_vm.prompt.name || ''))]):_vm._e(),_vm._v("\n "+_vm._s(_vm.$t('tdtResults.totalFind'))+"\n "),_c('span',{staticClass:"total-num"},[_vm._v(_vm._s(_vm.count))]),_vm._v("\n "+_vm._s(_vm.$t('tdtResults.piecesResults'))+"\n ")]):_vm._e(),_vm._v(" "),_c('ul',_vm._l((_vm.data),function(item,index){return _c('li',{key:index,on:{"click":function($event){return _vm.addPointToMap(item, index)},"mouseenter":function($event){return _vm.toggleBuoyActive($event, item)},"mouseleave":function($event){return _vm.toggleBuoyActive($event)}}},[_c('div',{class:("buoy-icon buoy-icon-" + (index + 1))}),_vm._v(" "),_c('div',{staticClass:"route-info"},[_c('span',{staticClass:"name",style:(_vm.getColorStyle(0)),attrs:{"title":item.name}},[_vm._v(_vm._s(item.name))]),_vm._v(" "),(item.phone)?_c('span',{staticClass:"phone"},[_vm._v(_vm._s(_vm.$t('tdtResults.phone'))+":"+_vm._s(item.phone))]):_vm._e(),_vm._v(" "),_c('span',{staticClass:"address",attrs:{"title":item.address}},[_vm._v(_vm._s(_vm.$t('tdtResults.address'))+":"+_vm._s(item.address))])]),_vm._v(" "),(_vm.from === 'Route' && _vm.resultBelongTo === 'start')?_c('div',{staticClass:"set-start-point",style:(_vm.getColorStyle(0)),attrs:{"title":_vm.$t('tdtResults.setStartPonint')},on:{"click":function($event){return _vm.resetStartPoint(item)}}},[_vm._v(_vm._s(_vm.$t('tdtResults.setStartPonint')))]):_vm._e(),_vm._v(" "),(_vm.from === 'Route' && _vm.resultBelongTo === 'end')?_c('div',{staticClass:"set-start-point",style:(_vm.getColorStyle(0)),attrs:{"title":_vm.$t('tdtResults.setEndPonint')},on:{"click":function($event){return _vm.resetEndPoint(item)}}},[_vm._v(_vm._s(_vm.$t('tdtResults.setEndPonint')))]):_vm._e()])}),0),_vm._v(" "),_c('Pagination',{attrs:{"total":_vm.count,"pageNo":_vm.pageNo,"pageSize":_vm.pageSize,"hide-on-single-page":true},on:{"change":_vm.pagiantionChange}})],1):_vm._e()}
  58141. var staticRenderFns = []
  58142. // CONCATENATED MODULE: ./src/mapboxgl/tdt/results/PointsResult.vue?vue&type=template&id=3ae049af&
  58143. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  58144. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  58145. /***/ }),
  58146. /***/ "cdcc":
  58147. /***/ (function(module, exports, __webpack_require__) {
  58148. "use strict";
  58149. Object.defineProperty(exports, "__esModule", { value: true });
  58150. var invariant_1 = __webpack_require__("144a");
  58151. var helpers_1 = __webpack_require__("38ce");
  58152. //http://en.wikipedia.org/wiki/Haversine_formula
  58153. //http://www.movable-type.co.uk/scripts/latlong.html
  58154. /**
  58155. * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.
  58156. * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.
  58157. *
  58158. * @name distance
  58159. * @param {Coord} from origin point
  58160. * @param {Coord} to destination point
  58161. * @param {Object} [options={}] Optional parameters
  58162. * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers
  58163. * @returns {number} distance between the two points
  58164. * @example
  58165. * var from = turf.point([-75.343, 39.984]);
  58166. * var to = turf.point([-75.534, 39.123]);
  58167. * var options = {units: 'miles'};
  58168. *
  58169. * var distance = turf.distance(from, to, options);
  58170. *
  58171. * //addToMap
  58172. * var addToMap = [from, to];
  58173. * from.properties.distance = distance;
  58174. * to.properties.distance = distance;
  58175. */
  58176. function distance(from, to, options) {
  58177. if (options === void 0) { options = {}; }
  58178. var coordinates1 = invariant_1.getCoord(from);
  58179. var coordinates2 = invariant_1.getCoord(to);
  58180. var dLat = helpers_1.degreesToRadians((coordinates2[1] - coordinates1[1]));
  58181. var dLon = helpers_1.degreesToRadians((coordinates2[0] - coordinates1[0]));
  58182. var lat1 = helpers_1.degreesToRadians(coordinates1[1]);
  58183. var lat2 = helpers_1.degreesToRadians(coordinates2[1]);
  58184. var a = Math.pow(Math.sin(dLat / 2), 2) +
  58185. Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);
  58186. return helpers_1.radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);
  58187. }
  58188. exports.default = distance;
  58189. /***/ }),
  58190. /***/ "cedf":
  58191. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  58192. "use strict";
  58193. __webpack_require__.r(__webpack_exports__);
  58194. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_DeckglLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("a1ea");
  58195. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_DeckglLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_DeckglLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  58196. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_DeckglLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_DeckglLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  58197. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_DeckglLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  58198. /***/ }),
  58199. /***/ "cf46":
  58200. /***/ (function(module, exports, __webpack_require__) {
  58201. "use strict";
  58202. Object.defineProperty(exports, "__esModule", { value: true });
  58203. var bbox_1 = __webpack_require__("1164");
  58204. var helpers_1 = __webpack_require__("38ce");
  58205. /**
  58206. * Takes a {@link Feature} or {@link FeatureCollection} and returns the absolute center point of all features.
  58207. *
  58208. * @name center
  58209. * @param {GeoJSON} geojson GeoJSON to be centered
  58210. * @param {Object} [options={}] Optional parameters
  58211. * @param {Object} [options.properties={}] Translate GeoJSON Properties to Point
  58212. * @param {Object} [options.bbox={}] Translate GeoJSON BBox to Point
  58213. * @param {Object} [options.id={}] Translate GeoJSON Id to Point
  58214. * @returns {Feature<Point>} a Point feature at the absolute center point of all input features
  58215. * @example
  58216. * var features = turf.points([
  58217. * [-97.522259, 35.4691],
  58218. * [-97.502754, 35.463455],
  58219. * [-97.508269, 35.463245]
  58220. * ]);
  58221. *
  58222. * var center = turf.center(features);
  58223. *
  58224. * //addToMap
  58225. * var addToMap = [features, center]
  58226. * center.properties['marker-size'] = 'large';
  58227. * center.properties['marker-color'] = '#000';
  58228. */
  58229. function center(geojson, options) {
  58230. if (options === void 0) { options = {}; }
  58231. var ext = bbox_1.default(geojson);
  58232. var x = (ext[0] + ext[2]) / 2;
  58233. var y = (ext[1] + ext[3]) / 2;
  58234. return helpers_1.point([x, y], options.properties, options);
  58235. }
  58236. exports.default = center;
  58237. /***/ }),
  58238. /***/ "cfa2":
  58239. /***/ (function(module, exports, __webpack_require__) {
  58240. "use strict";
  58241. var _interopRequireDefault = __webpack_require__("8e6d");
  58242. Object.defineProperty(exports, "__esModule", {
  58243. value: true
  58244. });
  58245. exports.default = void 0;
  58246. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  58247. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  58248. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  58249. var _DataFlowLayerViewModel = _interopRequireDefault(__webpack_require__("7a27"));
  58250. var _CircleStyle = _interopRequireDefault(__webpack_require__("b27b"));
  58251. var _FillStyle = _interopRequireDefault(__webpack_require__("d040"));
  58252. var _LineStyle = _interopRequireDefault(__webpack_require__("264a"));
  58253. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  58254. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  58255. /**
  58256. * @module DataFlowLayer
  58257. * @category Components Layer
  58258. * @desc 数据流图层组件。
  58259. * @vue-prop {String} serviceUrl - 数据流服务地址。
  58260. * @vue-prop {String} [registerToken] - SuperMap iServer 提供的一种基于 Token(令牌)的用户身份验证机制。
  58261. * @vue-prop {GeoJSONObject} [geometry] - 指定几何范围,该范围内的要素才能被订阅。
  58262. * @vue-prop {String} [excludeField] - 排除字段。
  58263. * @vue-prop {Object} [layerStyle] - 图层样式配置。
  58264. * @vue-prop {SuperMap.Components.commontypes.LineStyle} [layerStyle.line] - 线图层样式配置。
  58265. * @vue-prop {SuperMap.Components.commontypes.CircleStyle} [layerStyle.circle] - 点图层样式配置。
  58266. * @vue-prop {SuperMap.Components.commontypes.FillStyle} [layerStyle.fill] - 面图层样式配置。
  58267. */
  58268. var _default2 = {
  58269. name: 'SmDataFlowLayer',
  58270. mixins: [_mapGetter.default, _layer.default],
  58271. viewModelProps: ['layerStyle'],
  58272. props: {
  58273. serviceUrl: {
  58274. type: String,
  58275. required: true
  58276. },
  58277. registerToken: {
  58278. type: String
  58279. },
  58280. geometry: {
  58281. type: Object
  58282. },
  58283. excludeField: {
  58284. type: Object
  58285. },
  58286. layerStyle: {
  58287. type: Object,
  58288. default: function _default() {
  58289. return {
  58290. line: new _LineStyle.default(),
  58291. circle: new _CircleStyle.default(),
  58292. fill: new _FillStyle.default()
  58293. };
  58294. }
  58295. }
  58296. },
  58297. loaded: function loaded() {},
  58298. created: function created() {
  58299. var options = JSON.parse(JSON.stringify(this.$props));
  58300. delete options.serviceUrl;
  58301. this.viewModel = new _DataFlowLayerViewModel.default(this.serviceUrl, _objectSpread({}, options));
  58302. this.registerEvents();
  58303. },
  58304. beforeDestroy: function beforeDestroy() {
  58305. this.viewModel.off('subscribefailed', this.subscribefailedFn);
  58306. this.viewModel.off('subscribesucceeded', this.subscribesucceededFn);
  58307. this.viewModel.off('dataupdated', this.dataupdatedFn);
  58308. },
  58309. methods: {
  58310. registerEvents: function registerEvents() {
  58311. this.viewModel.on('subscribefailed', this.subscribefailedFn);
  58312. this.viewModel.on('subscribesucceeded', this.subscribesucceededFn);
  58313. this.viewModel.on('dataupdated', this.dataupdatedFn);
  58314. },
  58315. subscribefailedFn: function subscribefailedFn(e) {
  58316. this.$message.error(this.$t('dataFlow.dataSubscriptionFailed'));
  58317. /**
  58318. * @event subscribeFailed
  58319. * @desc 数据订阅失败后触发。
  58320. * @property {Object} e - 事件对象。
  58321. */
  58322. this.$emit('subscribe-failed', e);
  58323. },
  58324. subscribesucceededFn: function subscribesucceededFn(e) {
  58325. /**
  58326. * @event subscribeSucceeded
  58327. * @desc 数据订阅失败后触发。
  58328. * @property {Object} e - 事件对象。
  58329. */
  58330. this.$emit('subscribe-succeeded', e);
  58331. },
  58332. dataupdatedFn: function dataupdatedFn(e) {
  58333. /**
  58334. * @event dataUpdated
  58335. * @desc 数据更新成功后触发。
  58336. * @property {GeoJSONObject} data - 更新的数据。
  58337. * @property {mapboxgl.Map} map - MapBoxGL Map 对象。
  58338. */
  58339. this.$emit('data-updated', e);
  58340. }
  58341. },
  58342. render: function render() {}
  58343. };
  58344. exports.default = _default2;
  58345. /***/ }),
  58346. /***/ "d040":
  58347. /***/ (function(module, exports, __webpack_require__) {
  58348. "use strict";
  58349. var _interopRequireDefault = __webpack_require__("8e6d");
  58350. Object.defineProperty(exports, "__esModule", {
  58351. value: true
  58352. });
  58353. exports.default = void 0;
  58354. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  58355. /**
  58356. * @class FillStyle
  58357. * @category BaseTypes Style
  58358. * @classdesc 面图层样式类。
  58359. * @param {mapboxgl.LayersFill} paint - MapboxGL 面图层 Paint 配置。
  58360. * @param {mapboxgl.LayersFill} layout - MapboxGL 面图层 Layout 配置。
  58361. */
  58362. var FillStyle = function FillStyle() {
  58363. var paint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  58364. var layout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  58365. (0, _classCallCheck2.default)(this, FillStyle);
  58366. this.layout = {
  58367. visibility: 'visible'
  58368. };
  58369. this.paint = {
  58370. 'fill-opacity': 0.8,
  58371. 'fill-color': '#3fb1e3',
  58372. 'fill-translate': [0, 0],
  58373. 'fill-antialias': true,
  58374. 'fill-outline-color': '#3fb1e3',
  58375. 'fill-translate-anchor': 'map'
  58376. };
  58377. Object.assign(this.paint, paint);
  58378. Object.assign(this.layout, layout);
  58379. };
  58380. exports.default = FillStyle;
  58381. /***/ }),
  58382. /***/ "d073":
  58383. /***/ (function(module, exports, __webpack_require__) {
  58384. var map = {
  58385. "./dark.scss": "743a",
  58386. "./light.scss": "f2e5"
  58387. };
  58388. function webpackContext(req) {
  58389. var id = webpackContextResolve(req);
  58390. return __webpack_require__(id);
  58391. }
  58392. function webpackContextResolve(req) {
  58393. if(!__webpack_require__.o(map, req)) {
  58394. var e = new Error("Cannot find module '" + req + "'");
  58395. e.code = 'MODULE_NOT_FOUND';
  58396. throw e;
  58397. }
  58398. return map[req];
  58399. }
  58400. webpackContext.keys = function webpackContextKeys() {
  58401. return Object.keys(map);
  58402. };
  58403. webpackContext.resolve = webpackContextResolve;
  58404. module.exports = webpackContext;
  58405. webpackContext.id = "d073";
  58406. /***/ }),
  58407. /***/ "d094":
  58408. /***/ (function(module, exports, __webpack_require__) {
  58409. "use strict";
  58410. var _interopRequireDefault = __webpack_require__("8e6d");
  58411. Object.defineProperty(exports, "__esModule", {
  58412. value: true
  58413. });
  58414. exports.default = void 0;
  58415. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  58416. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  58417. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  58418. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  58419. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  58420. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  58421. __webpack_require__("f240");
  58422. var RasterTileLayerViewModel =
  58423. /*#__PURE__*/
  58424. function (_mapboxgl$Evented) {
  58425. (0, _inherits2.default)(RasterTileLayerViewModel, _mapboxgl$Evented);
  58426. function RasterTileLayerViewModel(rasterLayerOptions) {
  58427. var _this;
  58428. (0, _classCallCheck2.default)(this, RasterTileLayerViewModel);
  58429. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(RasterTileLayerViewModel).call(this));
  58430. var layerId = rasterLayerOptions.layerId,
  58431. tileSize = rasterLayerOptions.tileSize,
  58432. mapUrl = rasterLayerOptions.mapUrl,
  58433. tiles = rasterLayerOptions.tiles,
  58434. bounds = rasterLayerOptions.bounds,
  58435. _rasterLayerOptions$m = rasterLayerOptions.minZoom,
  58436. minZoom = _rasterLayerOptions$m === void 0 ? 0 : _rasterLayerOptions$m,
  58437. _rasterLayerOptions$m2 = rasterLayerOptions.maxZoom,
  58438. maxZoom = _rasterLayerOptions$m2 === void 0 ? 22 : _rasterLayerOptions$m2,
  58439. attribution = rasterLayerOptions.attribution,
  58440. _rasterLayerOptions$s = rasterLayerOptions.scheme,
  58441. scheme = _rasterLayerOptions$s === void 0 ? 'xyz' : _rasterLayerOptions$s,
  58442. _rasterLayerOptions$v = rasterLayerOptions.visible,
  58443. visible = _rasterLayerOptions$v === void 0 ? true : _rasterLayerOptions$v,
  58444. _rasterLayerOptions$o = rasterLayerOptions.opacity,
  58445. opacity = _rasterLayerOptions$o === void 0 ? 1 : _rasterLayerOptions$o,
  58446. before = rasterLayerOptions.before;
  58447. _this.layerId = layerId;
  58448. _this.tileSize = tileSize;
  58449. _this.mapUrl = mapUrl;
  58450. _this.tiles = tiles;
  58451. _this.bounds = bounds;
  58452. _this.minZoom = minZoom;
  58453. _this.maxZoom = maxZoom;
  58454. _this.attribution = attribution;
  58455. _this.scheme = scheme;
  58456. _this.opacity = opacity;
  58457. _this.visibility = visible ? 'visible' : 'none';
  58458. _this.before = before; // enhance扩展,传iserver标识是iserver rest map
  58459. _this.rasterSource = '';
  58460. return _this;
  58461. }
  58462. (0, _createClass2.default)(RasterTileLayerViewModel, [{
  58463. key: "setMap",
  58464. value: function setMap(mapInfo) {
  58465. var map = mapInfo.map;
  58466. this.map = map;
  58467. this._init();
  58468. }
  58469. }, {
  58470. key: "setTiles",
  58471. value: function setTiles(tiles) {
  58472. if (this.map.getSource(this.layerId)) {
  58473. this.map.getSource(this.layerId).tiles = tiles; // @ts-ignore
  58474. this.map.style.sourceCaches[this.layerId].clearTiles(); // @ts-ignore
  58475. this.map.style.sourceCaches[this.layerId].update(this.map.transform); // @ts-ignore
  58476. this.map.triggerRepaint();
  58477. } else {
  58478. this._addLayer();
  58479. }
  58480. }
  58481. }, {
  58482. key: "_init",
  58483. value: function _init() {
  58484. if (this.mapUrl) {
  58485. this._addRestMapLayer();
  58486. } else {
  58487. this._addLayer();
  58488. }
  58489. }
  58490. }, {
  58491. key: "_addRestMapLayer",
  58492. value: function _addRestMapLayer() {
  58493. var _this2 = this;
  58494. var service = new _mapboxGlEnhance.default.supermap.MapService(this.mapUrl);
  58495. service.getMapInfo(function (mapObj) {
  58496. if (!_this2.layerId) {
  58497. _this2.layerId = mapObj.name;
  58498. }
  58499. if (!_this2.tileSize && mapObj.viewer) {
  58500. _this2.tileSize = mapObj.viewer.width;
  58501. }
  58502. var bounds = mapObj.bounds;
  58503. if (!_this2.bounds && bounds) {
  58504. _this2.bounds = [bounds.left, bounds.bottom, bounds.right, bounds.top];
  58505. }
  58506. _this2.rasterSource = 'iserver';
  58507. _this2.tiles = [_this2.mapUrl];
  58508. _this2._addLayer(mapObj);
  58509. });
  58510. }
  58511. }, {
  58512. key: "_addLayer",
  58513. value: function _addLayer() {
  58514. this.map.addLayer({
  58515. id: this.layerId || "raster-layer-".concat(new Date().getTime()),
  58516. type: 'raster',
  58517. source: {
  58518. bounds: this.bounds || [-180, -85.051129, 180, 85.051129],
  58519. type: 'raster',
  58520. tileSize: this.tileSize || 256,
  58521. tiles: this.tiles,
  58522. rasterSource: this.rasterSource,
  58523. minzoom: this.minZoom,
  58524. maxzoom: this.maxZoom,
  58525. scheme: this.scheme
  58526. }
  58527. }, this.before);
  58528. }
  58529. }, {
  58530. key: "removed",
  58531. value: function removed() {
  58532. var map = this.map,
  58533. layerId = this.layerId;
  58534. if (map && layerId && map.getLayer(layerId)) {
  58535. map.removeLayer(layerId);
  58536. }
  58537. if (map && layerId && map.getSource(layerId)) {
  58538. map.removeSource(layerId);
  58539. }
  58540. }
  58541. }]);
  58542. return RasterTileLayerViewModel;
  58543. }(_mapboxGlEnhance.default.Evented);
  58544. exports.default = RasterTileLayerViewModel;
  58545. /***/ }),
  58546. /***/ "d10c":
  58547. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  58548. "use strict";
  58549. __webpack_require__.r(__webpack_exports__);
  58550. /* harmony import */ var _LayerList_vue_vue_type_template_id_4a89632a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3979");
  58551. /* harmony import */ var _LayerList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("bda1");
  58552. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _LayerList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _LayerList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  58553. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  58554. /* normalize component */
  58555. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  58556. _LayerList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  58557. _LayerList_vue_vue_type_template_id_4a89632a___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  58558. _LayerList_vue_vue_type_template_id_4a89632a___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  58559. false,
  58560. null,
  58561. null,
  58562. null
  58563. )
  58564. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  58565. /***/ }),
  58566. /***/ "d1b8":
  58567. /***/ (function(module, exports, __webpack_require__) {
  58568. "use strict";
  58569. var _interopRequireDefault = __webpack_require__("8e6d");
  58570. Object.defineProperty(exports, "__esModule", {
  58571. value: true
  58572. });
  58573. exports.default = void 0;
  58574. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  58575. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  58576. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  58577. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  58578. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  58579. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  58580. var GeojsonLayerViewModel =
  58581. /*#__PURE__*/
  58582. function (_mapboxgl$Evented) {
  58583. (0, _inherits2.default)(GeojsonLayerViewModel, _mapboxgl$Evented);
  58584. function GeojsonLayerViewModel(GeojsonLayerOptions) {
  58585. var _this;
  58586. (0, _classCallCheck2.default)(this, GeojsonLayerViewModel);
  58587. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(GeojsonLayerViewModel).call(this));
  58588. var layerStyle = GeojsonLayerOptions.layerStyle,
  58589. data = GeojsonLayerOptions.data,
  58590. layerId = GeojsonLayerOptions.layerId;
  58591. _this.data = data;
  58592. _this.layerStyle = layerStyle;
  58593. _this.layerId = layerId;
  58594. return _this;
  58595. }
  58596. (0, _createClass2.default)(GeojsonLayerViewModel, [{
  58597. key: "setMap",
  58598. value: function setMap(mapInfo) {
  58599. var map = mapInfo.map;
  58600. if (!map) {
  58601. throw new Error('map is requierd');
  58602. }
  58603. this.map = map;
  58604. this._addLayer();
  58605. }
  58606. }, {
  58607. key: "setData",
  58608. value: function setData(data) {
  58609. if (!data || !this.map.getSource(this.layerId)) {
  58610. return;
  58611. }
  58612. this.data = data;
  58613. if (this.layerId && !this.map.getSource(this.layerId)) {
  58614. this._addLayer();
  58615. } else {
  58616. this.map.getSource(this.layerId).setData(data);
  58617. }
  58618. }
  58619. }, {
  58620. key: "setLayerStyle",
  58621. value: function setLayerStyle(layerStyle) {
  58622. if (!layerStyle || !this.map.getSource(this.layerId)) {
  58623. return;
  58624. }
  58625. var paint = layerStyle.paint,
  58626. layout = layerStyle.layout;
  58627. for (var _i = 0, _Object$keys = Object.keys(paint); _i < _Object$keys.length; _i++) {
  58628. var prop = _Object$keys[_i];
  58629. this.map.setPaintProperty(this.layerId, prop, paint[prop]);
  58630. }
  58631. for (var _i2 = 0, _Object$keys2 = Object.keys(layout); _i2 < _Object$keys2.length; _i2++) {
  58632. var _prop = _Object$keys2[_i2];
  58633. this.map.setLayoutProperty(this.layerId, _prop, layout[_prop]);
  58634. }
  58635. this.layerStyle = layerStyle;
  58636. }
  58637. }, {
  58638. key: "_addLayer",
  58639. value: function _addLayer() {
  58640. if (!(this.layerStyle instanceof Object)) throw new Error('layerStyle 不能为空');
  58641. var _this$layerStyle = this.layerStyle,
  58642. paint = _this$layerStyle.paint,
  58643. layout = _this$layerStyle.layout;
  58644. this.map.addLayer({
  58645. id: this.layerId,
  58646. type: this._getLayerType(paint),
  58647. source: {
  58648. type: 'geojson',
  58649. data: this.data
  58650. },
  58651. layout: layout || {},
  58652. paint: paint || {}
  58653. });
  58654. }
  58655. }, {
  58656. key: "_getLayerType",
  58657. value: function _getLayerType() {
  58658. var paint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  58659. var keys = Object.keys(paint).join(' ');
  58660. var reg = /circle-|line-|fill-extrusion-|fill-+/i;
  58661. var matchType = keys.match(reg);
  58662. var type = matchType ? matchType[0] : '';
  58663. return type.substr(0, type.length - 1);
  58664. }
  58665. }, {
  58666. key: "removed",
  58667. value: function removed() {
  58668. var map = this.map,
  58669. layerId = this.layerId;
  58670. if (map && layerId && map.getLayer(layerId)) {
  58671. map.removeLayer(layerId);
  58672. }
  58673. }
  58674. }]);
  58675. return GeojsonLayerViewModel;
  58676. }(_mapboxGlEnhance.default.Evented);
  58677. exports.default = GeojsonLayerViewModel;
  58678. /***/ }),
  58679. /***/ "d201":
  58680. /***/ (function(module, exports, __webpack_require__) {
  58681. var root = __webpack_require__("18ca");
  58682. /**
  58683. * Gets the timestamp of the number of milliseconds that have elapsed since
  58684. * the Unix epoch (1 January 1970 00:00:00 UTC).
  58685. *
  58686. * @static
  58687. * @memberOf _
  58688. * @since 2.4.0
  58689. * @category Date
  58690. * @returns {number} Returns the timestamp.
  58691. * @example
  58692. *
  58693. * _.defer(function(stamp) {
  58694. * console.log(_.now() - stamp);
  58695. * }, _.now());
  58696. * // => Logs the number of milliseconds it took for the deferred invocation.
  58697. */
  58698. var now = function() {
  58699. return root.Date.now();
  58700. };
  58701. module.exports = now;
  58702. /***/ }),
  58703. /***/ "d20f":
  58704. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  58705. "use strict";
  58706. __webpack_require__.r(__webpack_exports__);
  58707. /* harmony import */ var _LayerManager_vue_vue_type_template_id_29f6260f___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ebd9");
  58708. /* harmony import */ var _LayerManager_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b8a4");
  58709. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _LayerManager_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _LayerManager_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  58710. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  58711. /* normalize component */
  58712. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  58713. _LayerManager_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  58714. _LayerManager_vue_vue_type_template_id_29f6260f___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  58715. _LayerManager_vue_vue_type_template_id_29f6260f___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  58716. false,
  58717. null,
  58718. null,
  58719. null
  58720. )
  58721. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  58722. /***/ }),
  58723. /***/ "d317":
  58724. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  58725. "use strict";
  58726. __webpack_require__.r(__webpack_exports__);
  58727. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtRoute_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("e453");
  58728. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtRoute_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtRoute_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  58729. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtRoute_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtRoute_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  58730. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TdtRoute_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  58731. /***/ }),
  58732. /***/ "d372":
  58733. /***/ (function(module, exports) {
  58734. function _arrayWithoutHoles(arr) {
  58735. if (Array.isArray(arr)) {
  58736. for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
  58737. arr2[i] = arr[i];
  58738. }
  58739. return arr2;
  58740. }
  58741. }
  58742. module.exports = _arrayWithoutHoles;
  58743. /***/ }),
  58744. /***/ "d3a8":
  58745. /***/ (function(module, exports) {
  58746. /**
  58747. * Checks if `value` is the
  58748. * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
  58749. * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
  58750. *
  58751. * @static
  58752. * @memberOf _
  58753. * @since 0.1.0
  58754. * @category Lang
  58755. * @param {*} value The value to check.
  58756. * @returns {boolean} Returns `true` if `value` is an object, else `false`.
  58757. * @example
  58758. *
  58759. * _.isObject({});
  58760. * // => true
  58761. *
  58762. * _.isObject([1, 2, 3]);
  58763. * // => true
  58764. *
  58765. * _.isObject(_.noop);
  58766. * // => true
  58767. *
  58768. * _.isObject(null);
  58769. * // => false
  58770. */
  58771. function isObject(value) {
  58772. var type = typeof value;
  58773. return value != null && (type == 'object' || type == 'function');
  58774. }
  58775. module.exports = isObject;
  58776. /***/ }),
  58777. /***/ "d3d0":
  58778. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  58779. "use strict";
  58780. __webpack_require__.r(__webpack_exports__);
  58781. /* harmony import */ var _VectorTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("10d6");
  58782. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _VectorTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _VectorTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  58783. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  58784. var render, staticRenderFns
  58785. /* normalize component */
  58786. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  58787. _VectorTileLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  58788. render,
  58789. staticRenderFns,
  58790. false,
  58791. null,
  58792. null,
  58793. null
  58794. )
  58795. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  58796. /***/ }),
  58797. /***/ "d3e9":
  58798. /***/ (function(module, exports, __webpack_require__) {
  58799. "use strict";
  58800. var _interopRequireDefault = __webpack_require__("8e6d");
  58801. Object.defineProperty(exports, "__esModule", {
  58802. value: true
  58803. });
  58804. exports.default = void 0;
  58805. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  58806. var _globalEvent = _interopRequireDefault(__webpack_require__("fb6a"));
  58807. var _SourceListModel = _interopRequireDefault(__webpack_require__("5fdb"));
  58808. var _default = new _vue.default({
  58809. mapCache: {},
  58810. webMapCache: {},
  58811. getMap: function getMap(mapTarget) {
  58812. return this.mapCache[mapTarget];
  58813. },
  58814. getAllMaps: function getAllMaps() {
  58815. return this.mapCache;
  58816. },
  58817. setMap: function setMap(mapTarget, map) {
  58818. this.mapCache[mapTarget] = map;
  58819. },
  58820. deleteMap: function deleteMap(mapTarget) {
  58821. _globalEvent.default.$emit('delete-map', mapTarget);
  58822. delete this.mapCache[mapTarget];
  58823. },
  58824. getWebMap: function getWebMap(webmapTarget) {
  58825. return this.webMapCache[webmapTarget];
  58826. },
  58827. getAllWebMap: function getAllWebMap() {
  58828. return this.webMapCache;
  58829. },
  58830. setWebMap: function setWebMap(webmapTarget, webmap) {
  58831. this.webMapCache[webmapTarget] = webmap;
  58832. },
  58833. deleteWebMap: function deleteWebMap(webmapTarget) {
  58834. delete this.webMapCache[webmapTarget];
  58835. },
  58836. getMapSource: function getMapSource(mapTarget) {
  58837. var sources = [];
  58838. var map = this.getMap(mapTarget);
  58839. if (map) {
  58840. var sourceListModel = new _SourceListModel.default({
  58841. map: map
  58842. });
  58843. var sourceList = sourceListModel.getSourceList();
  58844. for (var key in sourceList) {
  58845. if (key) {
  58846. var layers = sourceList[key].layers || [];
  58847. layers.forEach(function (item) {
  58848. if (item.source && item.type !== 'raster') {
  58849. sources.push(item.source);
  58850. }
  58851. });
  58852. }
  58853. }
  58854. }
  58855. return sources;
  58856. }
  58857. });
  58858. exports.default = _default;
  58859. /***/ }),
  58860. /***/ "d5f4":
  58861. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  58862. "use strict";
  58863. __webpack_require__.r(__webpack_exports__);
  58864. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TimeText_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("32bc");
  58865. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TimeText_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TimeText_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  58866. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TimeText_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TimeText_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  58867. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TimeText_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  58868. /***/ }),
  58869. /***/ "d691":
  58870. /***/ (function(module, exports, __webpack_require__) {
  58871. "use strict";
  58872. var bind = __webpack_require__("443f");
  58873. var isBuffer = __webpack_require__("c079");
  58874. /*global toString:true*/
  58875. // utils is a library of generic helper functions non-specific to axios
  58876. var toString = Object.prototype.toString;
  58877. /**
  58878. * Determine if a value is an Array
  58879. *
  58880. * @param {Object} val The value to test
  58881. * @returns {boolean} True if value is an Array, otherwise false
  58882. */
  58883. function isArray(val) {
  58884. return toString.call(val) === '[object Array]';
  58885. }
  58886. /**
  58887. * Determine if a value is an ArrayBuffer
  58888. *
  58889. * @param {Object} val The value to test
  58890. * @returns {boolean} True if value is an ArrayBuffer, otherwise false
  58891. */
  58892. function isArrayBuffer(val) {
  58893. return toString.call(val) === '[object ArrayBuffer]';
  58894. }
  58895. /**
  58896. * Determine if a value is a FormData
  58897. *
  58898. * @param {Object} val The value to test
  58899. * @returns {boolean} True if value is an FormData, otherwise false
  58900. */
  58901. function isFormData(val) {
  58902. return (typeof FormData !== 'undefined') && (val instanceof FormData);
  58903. }
  58904. /**
  58905. * Determine if a value is a view on an ArrayBuffer
  58906. *
  58907. * @param {Object} val The value to test
  58908. * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
  58909. */
  58910. function isArrayBufferView(val) {
  58911. var result;
  58912. if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
  58913. result = ArrayBuffer.isView(val);
  58914. } else {
  58915. result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);
  58916. }
  58917. return result;
  58918. }
  58919. /**
  58920. * Determine if a value is a String
  58921. *
  58922. * @param {Object} val The value to test
  58923. * @returns {boolean} True if value is a String, otherwise false
  58924. */
  58925. function isString(val) {
  58926. return typeof val === 'string';
  58927. }
  58928. /**
  58929. * Determine if a value is a Number
  58930. *
  58931. * @param {Object} val The value to test
  58932. * @returns {boolean} True if value is a Number, otherwise false
  58933. */
  58934. function isNumber(val) {
  58935. return typeof val === 'number';
  58936. }
  58937. /**
  58938. * Determine if a value is undefined
  58939. *
  58940. * @param {Object} val The value to test
  58941. * @returns {boolean} True if the value is undefined, otherwise false
  58942. */
  58943. function isUndefined(val) {
  58944. return typeof val === 'undefined';
  58945. }
  58946. /**
  58947. * Determine if a value is an Object
  58948. *
  58949. * @param {Object} val The value to test
  58950. * @returns {boolean} True if value is an Object, otherwise false
  58951. */
  58952. function isObject(val) {
  58953. return val !== null && typeof val === 'object';
  58954. }
  58955. /**
  58956. * Determine if a value is a Date
  58957. *
  58958. * @param {Object} val The value to test
  58959. * @returns {boolean} True if value is a Date, otherwise false
  58960. */
  58961. function isDate(val) {
  58962. return toString.call(val) === '[object Date]';
  58963. }
  58964. /**
  58965. * Determine if a value is a File
  58966. *
  58967. * @param {Object} val The value to test
  58968. * @returns {boolean} True if value is a File, otherwise false
  58969. */
  58970. function isFile(val) {
  58971. return toString.call(val) === '[object File]';
  58972. }
  58973. /**
  58974. * Determine if a value is a Blob
  58975. *
  58976. * @param {Object} val The value to test
  58977. * @returns {boolean} True if value is a Blob, otherwise false
  58978. */
  58979. function isBlob(val) {
  58980. return toString.call(val) === '[object Blob]';
  58981. }
  58982. /**
  58983. * Determine if a value is a Function
  58984. *
  58985. * @param {Object} val The value to test
  58986. * @returns {boolean} True if value is a Function, otherwise false
  58987. */
  58988. function isFunction(val) {
  58989. return toString.call(val) === '[object Function]';
  58990. }
  58991. /**
  58992. * Determine if a value is a Stream
  58993. *
  58994. * @param {Object} val The value to test
  58995. * @returns {boolean} True if value is a Stream, otherwise false
  58996. */
  58997. function isStream(val) {
  58998. return isObject(val) && isFunction(val.pipe);
  58999. }
  59000. /**
  59001. * Determine if a value is a URLSearchParams object
  59002. *
  59003. * @param {Object} val The value to test
  59004. * @returns {boolean} True if value is a URLSearchParams object, otherwise false
  59005. */
  59006. function isURLSearchParams(val) {
  59007. return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
  59008. }
  59009. /**
  59010. * Trim excess whitespace off the beginning and end of a string
  59011. *
  59012. * @param {String} str The String to trim
  59013. * @returns {String} The String freed of excess whitespace
  59014. */
  59015. function trim(str) {
  59016. return str.replace(/^\s*/, '').replace(/\s*$/, '');
  59017. }
  59018. /**
  59019. * Determine if we're running in a standard browser environment
  59020. *
  59021. * This allows axios to run in a web worker, and react-native.
  59022. * Both environments support XMLHttpRequest, but not fully standard globals.
  59023. *
  59024. * web workers:
  59025. * typeof window -> undefined
  59026. * typeof document -> undefined
  59027. *
  59028. * react-native:
  59029. * navigator.product -> 'ReactNative'
  59030. * nativescript
  59031. * navigator.product -> 'NativeScript' or 'NS'
  59032. */
  59033. function isStandardBrowserEnv() {
  59034. if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||
  59035. navigator.product === 'NativeScript' ||
  59036. navigator.product === 'NS')) {
  59037. return false;
  59038. }
  59039. return (
  59040. typeof window !== 'undefined' &&
  59041. typeof document !== 'undefined'
  59042. );
  59043. }
  59044. /**
  59045. * Iterate over an Array or an Object invoking a function for each item.
  59046. *
  59047. * If `obj` is an Array callback will be called passing
  59048. * the value, index, and complete array for each item.
  59049. *
  59050. * If 'obj' is an Object callback will be called passing
  59051. * the value, key, and complete object for each property.
  59052. *
  59053. * @param {Object|Array} obj The object to iterate
  59054. * @param {Function} fn The callback to invoke for each item
  59055. */
  59056. function forEach(obj, fn) {
  59057. // Don't bother if no value provided
  59058. if (obj === null || typeof obj === 'undefined') {
  59059. return;
  59060. }
  59061. // Force an array if not already something iterable
  59062. if (typeof obj !== 'object') {
  59063. /*eslint no-param-reassign:0*/
  59064. obj = [obj];
  59065. }
  59066. if (isArray(obj)) {
  59067. // Iterate over array values
  59068. for (var i = 0, l = obj.length; i < l; i++) {
  59069. fn.call(null, obj[i], i, obj);
  59070. }
  59071. } else {
  59072. // Iterate over object keys
  59073. for (var key in obj) {
  59074. if (Object.prototype.hasOwnProperty.call(obj, key)) {
  59075. fn.call(null, obj[key], key, obj);
  59076. }
  59077. }
  59078. }
  59079. }
  59080. /**
  59081. * Accepts varargs expecting each argument to be an object, then
  59082. * immutably merges the properties of each object and returns result.
  59083. *
  59084. * When multiple objects contain the same key the later object in
  59085. * the arguments list will take precedence.
  59086. *
  59087. * Example:
  59088. *
  59089. * ```js
  59090. * var result = merge({foo: 123}, {foo: 456});
  59091. * console.log(result.foo); // outputs 456
  59092. * ```
  59093. *
  59094. * @param {Object} obj1 Object to merge
  59095. * @returns {Object} Result of all merge properties
  59096. */
  59097. function merge(/* obj1, obj2, obj3, ... */) {
  59098. var result = {};
  59099. function assignValue(val, key) {
  59100. if (typeof result[key] === 'object' && typeof val === 'object') {
  59101. result[key] = merge(result[key], val);
  59102. } else {
  59103. result[key] = val;
  59104. }
  59105. }
  59106. for (var i = 0, l = arguments.length; i < l; i++) {
  59107. forEach(arguments[i], assignValue);
  59108. }
  59109. return result;
  59110. }
  59111. /**
  59112. * Function equal to merge with the difference being that no reference
  59113. * to original objects is kept.
  59114. *
  59115. * @see merge
  59116. * @param {Object} obj1 Object to merge
  59117. * @returns {Object} Result of all merge properties
  59118. */
  59119. function deepMerge(/* obj1, obj2, obj3, ... */) {
  59120. var result = {};
  59121. function assignValue(val, key) {
  59122. if (typeof result[key] === 'object' && typeof val === 'object') {
  59123. result[key] = deepMerge(result[key], val);
  59124. } else if (typeof val === 'object') {
  59125. result[key] = deepMerge({}, val);
  59126. } else {
  59127. result[key] = val;
  59128. }
  59129. }
  59130. for (var i = 0, l = arguments.length; i < l; i++) {
  59131. forEach(arguments[i], assignValue);
  59132. }
  59133. return result;
  59134. }
  59135. /**
  59136. * Extends object a by mutably adding to it the properties of object b.
  59137. *
  59138. * @param {Object} a The object to be extended
  59139. * @param {Object} b The object to copy properties from
  59140. * @param {Object} thisArg The object to bind function to
  59141. * @return {Object} The resulting value of object a
  59142. */
  59143. function extend(a, b, thisArg) {
  59144. forEach(b, function assignValue(val, key) {
  59145. if (thisArg && typeof val === 'function') {
  59146. a[key] = bind(val, thisArg);
  59147. } else {
  59148. a[key] = val;
  59149. }
  59150. });
  59151. return a;
  59152. }
  59153. module.exports = {
  59154. isArray: isArray,
  59155. isArrayBuffer: isArrayBuffer,
  59156. isBuffer: isBuffer,
  59157. isFormData: isFormData,
  59158. isArrayBufferView: isArrayBufferView,
  59159. isString: isString,
  59160. isNumber: isNumber,
  59161. isObject: isObject,
  59162. isUndefined: isUndefined,
  59163. isDate: isDate,
  59164. isFile: isFile,
  59165. isBlob: isBlob,
  59166. isFunction: isFunction,
  59167. isStream: isStream,
  59168. isURLSearchParams: isURLSearchParams,
  59169. isStandardBrowserEnv: isStandardBrowserEnv,
  59170. forEach: forEach,
  59171. merge: merge,
  59172. deepMerge: deepMerge,
  59173. extend: extend,
  59174. trim: trim
  59175. };
  59176. /***/ }),
  59177. /***/ "d6a7":
  59178. /***/ (function(module, exports, __webpack_require__) {
  59179. !function(t,e){ true?module.exports=e(__webpack_require__("6b73"),__webpack_require__("9106")):undefined}(this,function(m,d){"use strict";var t;return m=m&&m.hasOwnProperty("default")?m.default:m,d=d&&d.hasOwnProperty("default")?d.default:d,function(t){var u;t.exports;(u=window).DOMParser=window.DOMParser;function p(){return document.createElement("canvas")}var f,c=function(t,e,i){if(null!=t||null!=e||null!=i){var n=function(s){var A={opts:s,FRAMERATE:30,MAX_VIRTUAL_PIXELS:3e4,rootEmSize:12,emSize:12,log:function(t){}};1==A.opts.log&&"undefined"!=typeof console&&(A.log=function(t){console.log(t)});A.init=function(t){var e=0;A.UniqueId=function(){return"canvg"+ ++e},A.Definitions={},A.Styles={},A.StylesSpecificity={},A.Animations=[],A.Images=[],A.ctx=t,A.ViewPort=new function(){this.viewPorts=[],this.Clear=function(){this.viewPorts=[]},this.SetCurrent=function(t,e){this.viewPorts.push({width:t,height:e})},this.RemoveCurrent=function(){this.viewPorts.pop()},this.Current=function(){return this.viewPorts[this.viewPorts.length-1]},this.width=function(){return this.Current().width},this.height=function(){return this.Current().height},this.ComputeSize=function(t){return null!=t&&"number"==typeof t?t:"x"==t?this.width():"y"==t?this.height():Math.sqrt(Math.pow(this.width(),2)+Math.pow(this.height(),2))/Math.sqrt(2)}}},A.init(),A.ImagesLoaded=function(){for(var t=0;t<A.Images.length;t++)if(!A.Images[t].loaded)return!1;return!0},A.trim=function(t){return t.replace(/^\s+|\s+$/g,"")},A.compressSpaces=function(t){return t.replace(/(?!\u3000)\s+/gm," ")},A.ajax=function(t){var e;return(e=u.XMLHttpRequest?new u.XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"))?(e.open("GET",t,!1),e.send(null),e.responseText):null},A.parseXml=function(e){if("undefined"!=typeof Windows&&void 0!==Windows.Data&&void 0!==Windows.Data.Xml){var t=new Windows.Data.Xml.Dom.XmlDocument,i=new Windows.Data.Xml.Dom.XmlLoadSettings;return i.prohibitDtd=!1,t.loadXml(e,i),t}if(!u.DOMParser){e=e.replace(/<!DOCTYPE svg[^>]*>/,"");var t=new ActiveXObject("Microsoft.XMLDOM");return t.async="false",t.loadXML(e),t}try{var n=s.xmldom?new u.DOMParser(s.xmldom):new u.DOMParser;return n.parseFromString(e,"image/svg+xml")}catch(t){return(n=s.xmldom?new u.DOMParser(s.xmldom):new u.DOMParser).parseFromString(e,"text/xml")}},A.Property=function(t,e){this.name=t,this.value=e},A.Property.prototype.getValue=function(){return this.value},A.Property.prototype.hasValue=function(){return null!=this.value&&""!==this.value},A.Property.prototype.numValue=function(){if(!this.hasValue())return 0;var t=parseFloat(this.value);return(this.value+"").match(/%$/)&&(t/=100),t},A.Property.prototype.valueOrDefault=function(t){return this.hasValue()?this.value:t},A.Property.prototype.numValueOrDefault=function(t){return this.hasValue()?this.numValue():t},A.Property.prototype.addOpacity=function(t){var e=this.value;if(null!=t.value&&""!=t.value&&"string"==typeof this.value){var i=new m(this.value);i.ok&&(e="rgba("+i.r+", "+i.g+", "+i.b+", "+t.numValue()+")")}return new A.Property(this.name,e)},A.Property.prototype.getDefinition=function(){var t=this.value.match(/#([^\)'"]+)/);return t&&(t=t[1]),t||(t=this.value),A.Definitions[t]},A.Property.prototype.isUrlDefinition=function(){return 0==this.value.indexOf("url(")},A.Property.prototype.getFillStyleDefinition=function(t,e){var i=this.getDefinition();if(null!=i&&i.createGradient)return i.createGradient(A.ctx,t,e);if(null!=i&&i.createPattern){if(i.getHrefAttribute().hasValue()){var n=i.attribute("patternTransform");i=i.getHrefAttribute().getDefinition(),n.hasValue()&&(i.attribute("patternTransform",!0).value=n.value)}return i.createPattern(A.ctx,t)}return null},A.Property.prototype.getDPI=function(t){return 96},A.Property.prototype.getREM=function(t){return A.rootEmSize},A.Property.prototype.getEM=function(t){return A.emSize},A.Property.prototype.getUnits=function(){var t=this.value+"";return t.replace(/[0-9\.\-]/g,"")},A.Property.prototype.isPixels=function(){if(!this.hasValue())return!1;var t=this.value+"";return!!t.match(/px$/)||!!t.match(/^[0-9]+$/)},A.Property.prototype.toPixels=function(t,e){if(!this.hasValue())return 0;var i=this.value+"";if(i.match(/rem$/))return this.numValue()*this.getREM(t);if(i.match(/em$/))return this.numValue()*this.getEM(t);if(i.match(/ex$/))return this.numValue()*this.getEM(t)/2;if(i.match(/px$/))return this.numValue();if(i.match(/pt$/))return this.numValue()*this.getDPI(t)*(1/72);if(i.match(/pc$/))return 15*this.numValue();if(i.match(/cm$/))return this.numValue()*this.getDPI(t)/2.54;if(i.match(/mm$/))return this.numValue()*this.getDPI(t)/25.4;if(i.match(/in$/))return this.numValue()*this.getDPI(t);if(i.match(/%$/))return this.numValue()*A.ViewPort.ComputeSize(t);var n=this.numValue();return e&&n<1?n*A.ViewPort.ComputeSize(t):n},A.Property.prototype.toMilliseconds=function(){if(!this.hasValue())return 0;var t=this.value+"";return t.match(/s$/)?1e3*this.numValue():(t.match(/ms$/),this.numValue())},A.Property.prototype.toRadians=function(){if(!this.hasValue())return 0;var t=this.value+"";return t.match(/deg$/)?this.numValue()*(Math.PI/180):t.match(/grad$/)?this.numValue()*(Math.PI/200):t.match(/rad$/)?this.numValue():this.numValue()*(Math.PI/180)};var t={baseline:"alphabetic","before-edge":"top","text-before-edge":"top",middle:"middle",central:"middle","after-edge":"bottom","text-after-edge":"bottom",ideographic:"ideographic",alphabetic:"alphabetic",hanging:"hanging",mathematical:"alphabetic"};return A.Property.prototype.toTextBaseline=function(){return this.hasValue()?t[this.value]:null},A.Font=new function(){this.Styles="normal|italic|oblique|inherit",this.Variants="normal|small-caps|inherit",this.Weights="normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit",this.CreateFont=function(t,e,i,n,s,a){var r=null!=a?this.Parse(a):this.CreateFont("","","","","",A.ctx.font);return{fontFamily:s=s||r.fontFamily,fontSize:n||r.fontSize,fontStyle:t||r.fontStyle,fontWeight:i||r.fontWeight,fontVariant:e||r.fontVariant,toString:function(){return[this.fontStyle,this.fontVariant,this.fontWeight,this.fontSize,this.fontFamily].join(" ")}}};var r=this;this.Parse=function(t){for(var e={},i=A.trim(A.compressSpaces(t||"")).split(" "),n={fontSize:!1,fontStyle:!1,fontWeight:!1,fontVariant:!1},s="",a=0;a<i.length;a++)n.fontStyle||-1==r.Styles.indexOf(i[a])?n.fontVariant||-1==r.Variants.indexOf(i[a])?n.fontWeight||-1==r.Weights.indexOf(i[a])?n.fontSize?"inherit"!=i[a]&&(s+=i[a]):("inherit"!=i[a]&&(e.fontSize=i[a].split("/")[0]),n.fontStyle=n.fontVariant=n.fontWeight=n.fontSize=!0):("inherit"!=i[a]&&(e.fontWeight=i[a]),n.fontStyle=n.fontVariant=n.fontWeight=!0):("inherit"!=i[a]&&(e.fontVariant=i[a]),n.fontStyle=n.fontVariant=!0):("inherit"!=i[a]&&(e.fontStyle=i[a]),n.fontStyle=!0);return""!=s&&(e.fontFamily=s),e}},A.ToNumberArray=function(t){for(var e=A.trim(A.compressSpaces((t||"").replace(/,/g," "))).split(" "),i=0;i<e.length;i++)e[i]=parseFloat(e[i]);return e},A.Point=function(t,e){this.x=t,this.y=e},A.Point.prototype.angleTo=function(t){return Math.atan2(t.y-this.y,t.x-this.x)},A.Point.prototype.applyTransform=function(t){var e=this.x*t[0]+this.y*t[2]+t[4],i=this.x*t[1]+this.y*t[3]+t[5];this.x=e,this.y=i},A.CreatePoint=function(t){var e=A.ToNumberArray(t);return new A.Point(e[0],e[1])},A.CreatePath=function(t){for(var e=A.ToNumberArray(t),i=[],n=0;n<e.length;n+=2)i.push(new A.Point(e[n],e[n+1]));return i},A.BoundingBox=function(t,e,i,n){this.x1=Number.NaN,this.y1=Number.NaN,this.x2=Number.NaN,this.y2=Number.NaN,this.x=function(){return this.x1},this.y=function(){return this.y1},this.width=function(){return this.x2-this.x1},this.height=function(){return this.y2-this.y1},this.addPoint=function(t,e){null!=t&&((isNaN(this.x1)||isNaN(this.x2))&&(this.x1=t,this.x2=t),t<this.x1&&(this.x1=t),t>this.x2&&(this.x2=t)),null!=e&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=e,this.y2=e),e<this.y1&&(this.y1=e),e>this.y2&&(this.y2=e))},this.addX=function(t){this.addPoint(t,null)},this.addY=function(t){this.addPoint(null,t)},this.addBoundingBox=function(t){this.addPoint(t.x1,t.y1),this.addPoint(t.x2,t.y2)},this.addQuadraticCurve=function(t,e,i,n,s,a){var r=t+2/3*(i-t),o=e+2/3*(n-e),l=r+1/3*(s-t),h=o+1/3*(a-e);this.addBezierCurve(t,e,r,l,o,h,s,a)},this.addBezierCurve=function(t,e,i,n,s,a,r,o){var l=[t,e],h=[i,n],u=[s,a],c=[r,o];this.addPoint(l[0],l[1]),this.addPoint(c[0],c[1]);for(var f=0;f<=1;f++){var m=function(t){return Math.pow(1-t,3)*l[f]+3*Math.pow(1-t,2)*t*h[f]+3*(1-t)*Math.pow(t,2)*u[f]+Math.pow(t,3)*c[f]},p=6*l[f]-12*h[f]+6*u[f],d=-3*l[f]+9*h[f]-9*u[f]+3*c[f],y=3*h[f]-3*l[f];if(0!=d){var v=Math.pow(p,2)-4*y*d;if(!(v<0)){var g=(-p+Math.sqrt(v))/(2*d);0<g&&g<1&&(0==f&&this.addX(m(g)),1==f&&this.addY(m(g)));var x=(-p-Math.sqrt(v))/(2*d);0<x&&x<1&&(0==f&&this.addX(m(x)),1==f&&this.addY(m(x)))}}else{if(0==p)continue;var b=-y/p;0<b&&b<1&&(0==f&&this.addX(m(b)),1==f&&this.addY(m(b)))}}},this.isPointInBox=function(t,e){return this.x1<=t&&t<=this.x2&&this.y1<=e&&e<=this.y2},this.addPoint(t,e),this.addPoint(i,n)},A.Transform=function(t){var e=this;this.Type={},this.Type.translate=function(t){this.p=A.CreatePoint(t),this.apply=function(t){t.translate(this.p.x||0,this.p.y||0)},this.unapply=function(t){t.translate(-1*this.p.x||0,-1*this.p.y||0)},this.applyToPoint=function(t){t.applyTransform([1,0,0,1,this.p.x||0,this.p.y||0])}},this.Type.rotate=function(t){var e=A.ToNumberArray(t);this.angle=new A.Property("angle",e[0]),this.cx=e[1]||0,this.cy=e[2]||0,this.apply=function(t){t.translate(this.cx,this.cy),t.rotate(this.angle.toRadians()),t.translate(-this.cx,-this.cy)},this.unapply=function(t){t.translate(this.cx,this.cy),t.rotate(-1*this.angle.toRadians()),t.translate(-this.cx,-this.cy)},this.applyToPoint=function(t){var e=this.angle.toRadians();t.applyTransform([1,0,0,1,this.p.x||0,this.p.y||0]),t.applyTransform([Math.cos(e),Math.sin(e),-Math.sin(e),Math.cos(e),0,0]),t.applyTransform([1,0,0,1,-this.p.x||0,-this.p.y||0])}},this.Type.scale=function(t){this.p=A.CreatePoint(t),this.apply=function(t){t.scale(this.p.x||1,this.p.y||this.p.x||1)},this.unapply=function(t){t.scale(1/this.p.x||1,1/this.p.y||this.p.x||1)},this.applyToPoint=function(t){t.applyTransform([this.p.x||0,0,0,this.p.y||0,0,0])}},this.Type.matrix=function(t){this.m=A.ToNumberArray(t),this.apply=function(t){t.transform(this.m[0],this.m[1],this.m[2],this.m[3],this.m[4],this.m[5])},this.unapply=function(t){var e=this.m[0],i=this.m[2],n=this.m[4],s=this.m[1],a=this.m[3],r=this.m[5],o=1/(e*(1*a-0*r)-i*(1*s-0*r)+n*(0*s-0*a));t.transform(o*(1*a-0*r),o*(0*r-1*s),o*(0*n-1*i),o*(1*e-0*n),o*(i*r-n*a),o*(n*s-e*r))},this.applyToPoint=function(t){t.applyTransform(this.m)}},this.Type.SkewBase=function(t){this.base=e.Type.matrix,this.base(t),this.angle=new A.Property("angle",t)},this.Type.SkewBase.prototype=new this.Type.matrix,this.Type.skewX=function(t){this.base=e.Type.SkewBase,this.base(t),this.m=[1,0,Math.tan(this.angle.toRadians()),1,0,0]},this.Type.skewX.prototype=new this.Type.SkewBase,this.Type.skewY=function(t){this.base=e.Type.SkewBase,this.base(t),this.m=[1,Math.tan(this.angle.toRadians()),0,1,0,0]},this.Type.skewY.prototype=new this.Type.SkewBase,this.transforms=[],this.apply=function(t){for(var e=0;e<this.transforms.length;e++)this.transforms[e].apply(t)},this.unapply=function(t){for(var e=this.transforms.length-1;0<=e;e--)this.transforms[e].unapply(t)},this.applyToPoint=function(t){for(var e=0;e<this.transforms.length;e++)this.transforms[e].applyToPoint(t)};for(var i=A.trim(A.compressSpaces(t)).replace(/\)([a-zA-Z])/g,") $1").replace(/\)(\s?,\s?)/g,") ").split(/\s(?=[a-z])/),n=0;n<i.length;n++)if("none"!==i[n]){var s=A.trim(i[n].split("(")[0]),a=i[n].split("(")[1].replace(")",""),r=this.Type[s];if(void 0!==r){var o=new r(a);o.type=s,this.transforms.push(o)}}},A.AspectRatio=function(t,e,i,n,s,a,r,o,l,h){var u=(e=(e=A.compressSpaces(e)).replace(/^defer\s/,"")).split(" ")[0]||"xMidYMid",c=e.split(" ")[1]||"meet",f=i/n,m=s/a,p=Math.min(f,m),d=Math.max(f,m);"meet"==c&&(n*=p,a*=p),"slice"==c&&(n*=d,a*=d),l=new A.Property("refX",l),h=new A.Property("refY",h),l.hasValue()&&h.hasValue()?t.translate(-p*l.toPixels("x"),-p*h.toPixels("y")):(u.match(/^xMid/)&&("meet"==c&&p==m||"slice"==c&&d==m)&&t.translate(i/2-n/2,0),u.match(/YMid$/)&&("meet"==c&&p==f||"slice"==c&&d==f)&&t.translate(0,s/2-a/2),u.match(/^xMax/)&&("meet"==c&&p==m||"slice"==c&&d==m)&&t.translate(i-n,0),u.match(/YMax$/)&&("meet"==c&&p==f||"slice"==c&&d==f)&&t.translate(0,s-a)),"none"==u?t.scale(f,m):"meet"==c?t.scale(p,p):"slice"==c&&t.scale(d,d),t.translate(null==r?0:-r,null==o?0:-o)},A.Element={},A.EmptyProperty=new A.Property("EMPTY",""),A.Element.ElementBase=function(a){this.attributes={},this.styles={},this.stylesSpecificity={},this.children=[],this.attribute=function(t,e){var i=this.attributes[t];return null!=i?i:(1==e&&(i=new A.Property(t,""),this.attributes[t]=i),i||A.EmptyProperty)},this.getHrefAttribute=function(){for(var t in this.attributes)if("href"==t||t.match(/:href$/))return this.attributes[t];return A.EmptyProperty},this.style=function(t,e,i){var n=this.styles[t];if(null!=n)return n;var s=this.attribute(t);if(null!=s&&s.hasValue())return this.styles[t]=s;if(1!=i){var a=this.parent;if(null!=a){var r=a.style(t);if(null!=r&&r.hasValue())return r}}return 1==e&&(n=new A.Property(t,""),this.styles[t]=n),n||A.EmptyProperty},this.render=function(t){if("none"!=this.style("display").value&&"hidden"!=this.style("visibility").value){if(t.save(),this.style("mask").hasValue()){var e=this.style("mask").getDefinition();null!=e&&e.apply(t,this)}else if(this.style("filter").hasValue()){var i=this.style("filter").getDefinition();null!=i&&i.apply(t,this)}else this.setContext(t),this.renderChildren(t),this.clearContext(t);t.restore()}},this.setContext=function(t){},this.clearContext=function(t){},this.renderChildren=function(t){for(var e=0;e<this.children.length;e++)this.children[e].render(t)},this.addChild=function(t,e){var i=t;e&&(i=A.CreateElement(t)),i.parent=this,"title"!=i.type&&this.children.push(i)},this.addStylesFromStyleDefinition=function(){for(var t in A.Styles)if("@"!=t[0]&&f(a,t)){var e=A.Styles[t],i=A.StylesSpecificity[t];if(null!=e)for(var n in e){var s=this.stylesSpecificity[n];void 0===s&&(s="000"),s<i&&(this.styles[n]=e[n],this.stylesSpecificity[n]=i)}}};var t,e=new RegExp("^[A-Z-]+$");if(null!=a&&1==a.nodeType){for(var i=0;i<a.attributes.length;i++){var n=a.attributes[i],s=(t=n.nodeName,e.test(t)?t.toLowerCase():t);this.attributes[s]=new A.Property(s,n.value)}if(this.addStylesFromStyleDefinition(),this.attribute("style").hasValue()){var r=this.attribute("style").value.split(";");for(i=0;i<r.length;i++)if(""!=A.trim(r[i])){var o=r[i].split(":"),l=A.trim(o[0]),h=A.trim(o[1]);this.styles[l]=new A.Property(l,h)}}for(this.attribute("id").hasValue()&&null==A.Definitions[this.attribute("id").value]&&(A.Definitions[this.attribute("id").value]=this),i=0;i<a.childNodes.length;i++){var u=a.childNodes[i];if(1==u.nodeType&&this.addChild(u,!0),this.captureTextNodes&&(3==u.nodeType||4==u.nodeType)){var c=u.value||u.text||u.textContent||"";""!=A.compressSpaces(c)&&this.addChild(new A.Element.tspan(u),!1)}}}},A.Element.RenderedElementBase=function(t){this.base=A.Element.ElementBase,this.base(t),this.calculateOpacity=function(){for(var t=1,e=this;null!=e;){var i=e.style("opacity",!1,!0);i.hasValue()&&(t*=i.numValue()),e=e.parent}return t},this.setContext=function(t,e){if(!e){var i;if(this.style("fill").isUrlDefinition())null!=(i=this.style("fill").getFillStyleDefinition(this,this.style("fill-opacity")))&&(t.fillStyle=i);else if(this.style("fill").hasValue()){var n;"currentColor"==(n=this.style("fill")).value&&(n.value=this.style("color").value),"inherit"!=n.value&&(t.fillStyle="none"==n.value?"rgba(0,0,0,0)":n.value)}if(this.style("fill-opacity").hasValue()&&(n=(n=new A.Property("fill",t.fillStyle)).addOpacity(this.style("fill-opacity")),t.fillStyle=n.value),this.style("stroke").isUrlDefinition())null!=(i=this.style("stroke").getFillStyleDefinition(this,this.style("stroke-opacity")))&&(t.strokeStyle=i);else if(this.style("stroke").hasValue()){var s;"currentColor"==(s=this.style("stroke")).value&&(s.value=this.style("color").value),"inherit"!=s.value&&(t.strokeStyle="none"==s.value?"rgba(0,0,0,0)":s.value)}if(this.style("stroke-opacity").hasValue()&&(s=(s=new A.Property("stroke",t.strokeStyle)).addOpacity(this.style("stroke-opacity")),t.strokeStyle=s.value),this.style("stroke-width").hasValue()){var a=this.style("stroke-width").toPixels();t.lineWidth=0==a?.001:a}if(this.style("stroke-linecap").hasValue()&&(t.lineCap=this.style("stroke-linecap").value),this.style("stroke-linejoin").hasValue()&&(t.lineJoin=this.style("stroke-linejoin").value),this.style("stroke-miterlimit").hasValue()&&(t.miterLimit=this.style("stroke-miterlimit").value),this.style("paint-order").hasValue()&&(t.paintOrder=this.style("paint-order").value),this.style("stroke-dasharray").hasValue()&&"none"!=this.style("stroke-dasharray").value){var r=A.ToNumberArray(this.style("stroke-dasharray").value);void 0!==t.setLineDash?t.setLineDash(r):void 0!==t.webkitLineDash?t.webkitLineDash=r:void 0===t.mozDash||1==r.length&&0==r[0]||(t.mozDash=r);var o=this.style("stroke-dashoffset").toPixels();void 0!==t.lineDashOffset?t.lineDashOffset=o:void 0!==t.webkitLineDashOffset?t.webkitLineDashOffset=o:void 0!==t.mozDashOffset&&(t.mozDashOffset=o)}}if(void 0!==t.font){t.font=A.Font.CreateFont(this.style("font-style").value,this.style("font-variant").value,this.style("font-weight").value,this.style("font-size").hasValue()?this.style("font-size").toPixels()+"px":"",this.style("font-family").value).toString();var l=this.style("font-size",!1,!1);l.isPixels()&&(A.emSize=l.toPixels())}if(this.style("transform",!1,!0).hasValue()&&new A.Transform(this.style("transform",!1,!0).value).apply(t),this.style("clip-path",!1,!0).hasValue()){var h=this.style("clip-path",!1,!0).getDefinition();null!=h&&h.apply(t)}t.globalAlpha=this.calculateOpacity()}},A.Element.RenderedElementBase.prototype=new A.Element.ElementBase,A.Element.PathElementBase=function(t){this.base=A.Element.RenderedElementBase,this.base(t),this.path=function(t){return null!=t&&t.beginPath(),new A.BoundingBox},this.renderChildren=function(t){this.path(t),A.Mouse.checkPath(this,t),""!=t.fillStyle&&("inherit"!=this.style("fill-rule").valueOrDefault("inherit")?t.fill(this.style("fill-rule").value):t.fill()),""!=t.strokeStyle&&t.stroke();var e=this.getMarkers();if(null!=e){if(this.style("marker-start").isUrlDefinition()&&(i=this.style("marker-start").getDefinition()).render(t,e[0][0],e[0][1]),this.style("marker-mid").isUrlDefinition())for(var i=this.style("marker-mid").getDefinition(),n=1;n<e.length-1;n++)i.render(t,e[n][0],e[n][1]);this.style("marker-end").isUrlDefinition()&&(i=this.style("marker-end").getDefinition()).render(t,e[e.length-1][0],e[e.length-1][1])}},this.getBoundingBox=function(){return this.path()},this.getMarkers=function(){return null}},A.Element.PathElementBase.prototype=new A.Element.RenderedElementBase,A.Element.svg=function(t){this.base=A.Element.RenderedElementBase,this.base(t),this.baseClearContext=this.clearContext,this.clearContext=function(t){this.baseClearContext(t),A.ViewPort.RemoveCurrent()},this.baseSetContext=this.setContext,this.setContext=function(t){if(t.strokeStyle="rgba(0,0,0,0)",t.lineCap="butt",t.lineJoin="miter",t.miterLimit=4,t.canvas.style&&void 0!==t.font&&void 0!==u.getComputedStyle){t.font=u.getComputedStyle(t.canvas).getPropertyValue("font");var e=new A.Property("fontSize",A.Font.Parse(t.font).fontSize);e.hasValue()&&(A.rootEmSize=A.emSize=e.toPixels("y"))}this.baseSetContext(t),this.attribute("x").hasValue()||(this.attribute("x",!0).value=0),this.attribute("y").hasValue()||(this.attribute("y",!0).value=0),t.translate(this.attribute("x").toPixels("x"),this.attribute("y").toPixels("y"));var i=A.ViewPort.width(),n=A.ViewPort.height();if(this.attribute("width").hasValue()||(this.attribute("width",!0).value="100%"),this.attribute("height").hasValue()||(this.attribute("height",!0).value="100%"),void 0===this.root){i=this.attribute("width").toPixels("x"),n=this.attribute("height").toPixels("y");var s=0,a=0;this.attribute("refX").hasValue()&&this.attribute("refY").hasValue()&&(s=-this.attribute("refX").toPixels("x"),a=-this.attribute("refY").toPixels("y")),"visible"!=this.attribute("overflow").valueOrDefault("hidden")&&(t.beginPath(),t.moveTo(s,a),t.lineTo(i,a),t.lineTo(i,n),t.lineTo(s,n),t.closePath(),t.clip())}if(A.ViewPort.SetCurrent(i,n),this.attribute("viewBox").hasValue()){var r=A.ToNumberArray(this.attribute("viewBox").value),o=r[0],l=r[1];i=r[2],n=r[3],A.AspectRatio(t,this.attribute("preserveAspectRatio").value,A.ViewPort.width(),i,A.ViewPort.height(),n,o,l,this.attribute("refX").value,this.attribute("refY").value),A.ViewPort.RemoveCurrent(),A.ViewPort.SetCurrent(r[2],r[3])}}},A.Element.svg.prototype=new A.Element.RenderedElementBase,A.Element.rect=function(t){this.base=A.Element.PathElementBase,this.base(t),this.path=function(t){var e=this.attribute("x").toPixels("x"),i=this.attribute("y").toPixels("y"),n=this.attribute("width").toPixels("x"),s=this.attribute("height").toPixels("y"),a=this.attribute("rx").toPixels("x"),r=this.attribute("ry").toPixels("y");if(this.attribute("rx").hasValue()&&!this.attribute("ry").hasValue()&&(r=a),this.attribute("ry").hasValue()&&!this.attribute("rx").hasValue()&&(a=r),a=Math.min(a,n/2),r=Math.min(r,s/2),null!=t){var o=(Math.sqrt(2)-1)/3*4;t.beginPath(),t.moveTo(e+a,i),t.lineTo(e+n-a,i),t.bezierCurveTo(e+n-a+o*a,i,e+n,i+r-o*r,e+n,i+r),t.lineTo(e+n,i+s-r),t.bezierCurveTo(e+n,i+s-r+o*r,e+n-a+o*a,i+s,e+n-a,i+s),t.lineTo(e+a,i+s),t.bezierCurveTo(e+a-o*a,i+s,e,i+s-r+o*r,e,i+s-r),t.lineTo(e,i+r),t.bezierCurveTo(e,i+r-o*r,e+a-o*a,i,e+a,i),t.closePath()}return new A.BoundingBox(e,i,e+n,i+s)}},A.Element.rect.prototype=new A.Element.PathElementBase,A.Element.circle=function(t){this.base=A.Element.PathElementBase,this.base(t),this.path=function(t){var e=this.attribute("cx").toPixels("x"),i=this.attribute("cy").toPixels("y"),n=this.attribute("r").toPixels();return null!=t&&(t.beginPath(),t.arc(e,i,n,0,2*Math.PI,!1),t.closePath()),new A.BoundingBox(e-n,i-n,e+n,i+n)}},A.Element.circle.prototype=new A.Element.PathElementBase,A.Element.ellipse=function(t){this.base=A.Element.PathElementBase,this.base(t),this.path=function(t){var e=(Math.sqrt(2)-1)/3*4,i=this.attribute("rx").toPixels("x"),n=this.attribute("ry").toPixels("y"),s=this.attribute("cx").toPixels("x"),a=this.attribute("cy").toPixels("y");return null!=t&&(t.beginPath(),t.moveTo(s+i,a),t.bezierCurveTo(s+i,a+e*n,s+e*i,a+n,s,a+n),t.bezierCurveTo(s-e*i,a+n,s-i,a+e*n,s-i,a),t.bezierCurveTo(s-i,a-e*n,s-e*i,a-n,s,a-n),t.bezierCurveTo(s+e*i,a-n,s+i,a-e*n,s+i,a),t.closePath()),new A.BoundingBox(s-i,a-n,s+i,a+n)}},A.Element.ellipse.prototype=new A.Element.PathElementBase,A.Element.line=function(t){this.base=A.Element.PathElementBase,this.base(t),this.getPoints=function(){return[new A.Point(this.attribute("x1").toPixels("x"),this.attribute("y1").toPixels("y")),new A.Point(this.attribute("x2").toPixels("x"),this.attribute("y2").toPixels("y"))]},this.path=function(t){var e=this.getPoints();return null!=t&&(t.beginPath(),t.moveTo(e[0].x,e[0].y),t.lineTo(e[1].x,e[1].y)),new A.BoundingBox(e[0].x,e[0].y,e[1].x,e[1].y)},this.getMarkers=function(){var t=this.getPoints(),e=t[0].angleTo(t[1]);return[[t[0],e],[t[1],e]]}},A.Element.line.prototype=new A.Element.PathElementBase,A.Element.polyline=function(t){this.base=A.Element.PathElementBase,this.base(t),this.points=A.CreatePath(this.attribute("points").value),this.path=function(t){var e=new A.BoundingBox(this.points[0].x,this.points[0].y);null!=t&&(t.beginPath(),t.moveTo(this.points[0].x,this.points[0].y));for(var i=1;i<this.points.length;i++)e.addPoint(this.points[i].x,this.points[i].y),null!=t&&t.lineTo(this.points[i].x,this.points[i].y);return e},this.getMarkers=function(){for(var t=[],e=0;e<this.points.length-1;e++)t.push([this.points[e],this.points[e].angleTo(this.points[e+1])]);return 0<t.length&&t.push([this.points[this.points.length-1],t[t.length-1][1]]),t}},A.Element.polyline.prototype=new A.Element.PathElementBase,A.Element.polygon=function(t){this.base=A.Element.polyline,this.base(t),this.basePath=this.path,this.path=function(t){var e=this.basePath(t);return null!=t&&(t.lineTo(this.points[0].x,this.points[0].y),t.closePath()),e}},A.Element.polygon.prototype=new A.Element.polyline,A.Element.path=function(t){this.base=A.Element.PathElementBase,this.base(t);var e=this.attribute("d").value;e=e.replace(/,/gm," ");for(var i=0;i<2;i++)e=e.replace(/([MmZzLlHhVvCcSsQqTtAa])([^\s])/gm,"$1 $2");for(e=(e=e.replace(/([^\s])([MmZzLlHhVvCcSsQqTtAa])/gm,"$1 $2")).replace(/([0-9])([+\-])/gm,"$1 $2"),i=0;i<2;i++)e=e.replace(/(\.[0-9]*)(\.)/gm,"$1 $2");e=e.replace(/([Aa](\s+[0-9]+){3})\s+([01])\s*([01])/gm,"$1 $3 $4 "),e=A.compressSpaces(e),e=A.trim(e),this.PathParser=new function(t){this.tokens=t.split(" "),this.reset=function(){this.i=-1,this.command="",this.previousCommand="",this.start=new A.Point(0,0),this.control=new A.Point(0,0),this.current=new A.Point(0,0),this.points=[],this.angles=[]},this.isEnd=function(){return this.i>=this.tokens.length-1},this.isCommandOrEnd=function(){return!!this.isEnd()||null!=this.tokens[this.i+1].match(/^[A-Za-z]$/)},this.isRelativeCommand=function(){switch(this.command){case"m":case"l":case"h":case"v":case"c":case"s":case"q":case"t":case"a":case"z":return!0}return!1},this.getToken=function(){return this.i++,this.tokens[this.i]},this.getScalar=function(){return parseFloat(this.getToken())},this.nextCommand=function(){this.previousCommand=this.command,this.command=this.getToken()},this.getPoint=function(){var t=new A.Point(this.getScalar(),this.getScalar());return this.makeAbsolute(t)},this.getAsControlPoint=function(){var t=this.getPoint();return this.control=t},this.getAsCurrentPoint=function(){var t=this.getPoint();return this.current=t},this.getReflectedControlPoint=function(){return"c"!=this.previousCommand.toLowerCase()&&"s"!=this.previousCommand.toLowerCase()&&"q"!=this.previousCommand.toLowerCase()&&"t"!=this.previousCommand.toLowerCase()?this.current:new A.Point(2*this.current.x-this.control.x,2*this.current.y-this.control.y)},this.makeAbsolute=function(t){return this.isRelativeCommand()&&(t.x+=this.current.x,t.y+=this.current.y),t},this.addMarker=function(t,e,i){null!=i&&0<this.angles.length&&null==this.angles[this.angles.length-1]&&(this.angles[this.angles.length-1]=this.points[this.points.length-1].angleTo(i)),this.addMarkerAngle(t,null==e?null:e.angleTo(t))},this.addMarkerAngle=function(t,e){this.points.push(t),this.angles.push(e)},this.getMarkerPoints=function(){return this.points},this.getMarkerAngles=function(){for(var t=0;t<this.angles.length;t++)if(null==this.angles[t])for(var e=t+1;e<this.angles.length;e++)if(null!=this.angles[e]){this.angles[t]=this.angles[e];break}return this.angles}}(e),this.path=function(t){var e=this.PathParser;e.reset();var i=new A.BoundingBox;for(null!=t&&t.beginPath();!e.isEnd();)switch(e.nextCommand(),e.command){case"M":case"m":var n=e.getAsCurrentPoint();for(e.addMarker(n),i.addPoint(n.x,n.y),null!=t&&t.moveTo(n.x,n.y),e.start=e.current;!e.isCommandOrEnd();)n=e.getAsCurrentPoint(),e.addMarker(n,e.start),i.addPoint(n.x,n.y),null!=t&&t.lineTo(n.x,n.y);break;case"L":case"l":for(;!e.isCommandOrEnd();){var s=e.current;n=e.getAsCurrentPoint(),e.addMarker(n,s),i.addPoint(n.x,n.y),null!=t&&t.lineTo(n.x,n.y)}break;case"H":case"h":for(;!e.isCommandOrEnd();){var a=new A.Point((e.isRelativeCommand()?e.current.x:0)+e.getScalar(),e.current.y);e.addMarker(a,e.current),e.current=a,i.addPoint(e.current.x,e.current.y),null!=t&&t.lineTo(e.current.x,e.current.y)}break;case"V":case"v":for(;!e.isCommandOrEnd();)a=new A.Point(e.current.x,(e.isRelativeCommand()?e.current.y:0)+e.getScalar()),e.addMarker(a,e.current),e.current=a,i.addPoint(e.current.x,e.current.y),null!=t&&t.lineTo(e.current.x,e.current.y);break;case"C":case"c":for(;!e.isCommandOrEnd();){var r=e.current,o=e.getPoint(),l=e.getAsControlPoint(),h=e.getAsCurrentPoint();e.addMarker(h,l,o),i.addBezierCurve(r.x,r.y,o.x,o.y,l.x,l.y,h.x,h.y),null!=t&&t.bezierCurveTo(o.x,o.y,l.x,l.y,h.x,h.y)}break;case"S":case"s":for(;!e.isCommandOrEnd();)r=e.current,o=e.getReflectedControlPoint(),l=e.getAsControlPoint(),h=e.getAsCurrentPoint(),e.addMarker(h,l,o),i.addBezierCurve(r.x,r.y,o.x,o.y,l.x,l.y,h.x,h.y),null!=t&&t.bezierCurveTo(o.x,o.y,l.x,l.y,h.x,h.y);break;case"Q":case"q":for(;!e.isCommandOrEnd();)r=e.current,l=e.getAsControlPoint(),h=e.getAsCurrentPoint(),e.addMarker(h,l,l),i.addQuadraticCurve(r.x,r.y,l.x,l.y,h.x,h.y),null!=t&&t.quadraticCurveTo(l.x,l.y,h.x,h.y);break;case"T":case"t":for(;!e.isCommandOrEnd();)r=e.current,l=e.getReflectedControlPoint(),e.control=l,h=e.getAsCurrentPoint(),e.addMarker(h,l,l),i.addQuadraticCurve(r.x,r.y,l.x,l.y,h.x,h.y),null!=t&&t.quadraticCurveTo(l.x,l.y,h.x,h.y);break;case"A":case"a":for(;!e.isCommandOrEnd();){r=e.current;var u=e.getScalar(),c=e.getScalar(),f=e.getScalar()*(Math.PI/180),m=e.getScalar(),p=e.getScalar(),d=(h=e.getAsCurrentPoint(),new A.Point(Math.cos(f)*(r.x-h.x)/2+Math.sin(f)*(r.y-h.y)/2,-Math.sin(f)*(r.x-h.x)/2+Math.cos(f)*(r.y-h.y)/2)),y=Math.pow(d.x,2)/Math.pow(u,2)+Math.pow(d.y,2)/Math.pow(c,2);1<y&&(u*=Math.sqrt(y),c*=Math.sqrt(y));var v=(m==p?-1:1)*Math.sqrt((Math.pow(u,2)*Math.pow(c,2)-Math.pow(u,2)*Math.pow(d.y,2)-Math.pow(c,2)*Math.pow(d.x,2))/(Math.pow(u,2)*Math.pow(d.y,2)+Math.pow(c,2)*Math.pow(d.x,2)));isNaN(v)&&(v=0);var g=new A.Point(v*u*d.y/c,v*-c*d.x/u),x=new A.Point((r.x+h.x)/2+Math.cos(f)*g.x-Math.sin(f)*g.y,(r.y+h.y)/2+Math.sin(f)*g.x+Math.cos(f)*g.y),b=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2))},P=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(b(t)*b(e))},E=function(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(P(t,e))},w=E([1,0],[(d.x-g.x)/u,(d.y-g.y)/c]),B=[(d.x-g.x)/u,(d.y-g.y)/c],C=[(-d.x-g.x)/u,(-d.y-g.y)/c],T=E(B,C);P(B,C)<=-1&&(T=Math.PI),1<=P(B,C)&&(T=0);var V=1-p?1:-1,M=w+V*(T/2),S=new A.Point(x.x+u*Math.cos(M),x.y+c*Math.sin(M));if(e.addMarkerAngle(S,M-V*Math.PI/2),e.addMarkerAngle(h,M-V*Math.PI),i.addPoint(h.x,h.y),null!=t){P=c<u?u:c;var k=c<u?1:u/c,D=c<u?c/u:1;t.translate(x.x,x.y),t.rotate(f),t.scale(k,D),t.arc(0,0,P,w,w+T,1-p),t.scale(1/k,1/D),t.rotate(-f),t.translate(-x.x,-x.y)}}break;case"Z":case"z":null!=t&&i.x1!==i.x2&&i.y1!==i.y2&&t.closePath(),e.current=e.start}return i},this.getMarkers=function(){for(var t=this.PathParser.getMarkerPoints(),e=this.PathParser.getMarkerAngles(),i=[],n=0;n<t.length;n++)i.push([t[n],e[n]]);return i}},A.Element.path.prototype=new A.Element.PathElementBase,A.Element.pattern=function(t){this.base=A.Element.ElementBase,this.base(t),this.createPattern=function(t,e){var i=this.attribute("width").toPixels("x",!0),n=this.attribute("height").toPixels("y",!0),s=new A.Element.svg;s.attributes.viewBox=new A.Property("viewBox",this.attribute("viewBox").value),s.attributes.width=new A.Property("width",i+"px"),s.attributes.height=new A.Property("height",n+"px"),s.attributes.transform=new A.Property("transform",this.attribute("patternTransform").value),s.children=this.children;var a=p();a.width=i,a.height=n;var r=a.getContext("2d");this.attribute("x").hasValue()&&this.attribute("y").hasValue()&&r.translate(this.attribute("x").toPixels("x",!0),this.attribute("y").toPixels("y",!0));for(var o=-1;o<=1;o++)for(var l=-1;l<=1;l++)r.save(),s.attributes.x=new A.Property("x",o*a.width),s.attributes.y=new A.Property("y",l*a.height),s.render(r),r.restore();return t.createPattern(a,"repeat")}},A.Element.pattern.prototype=new A.Element.ElementBase,A.Element.marker=function(t){this.base=A.Element.ElementBase,this.base(t),this.baseRender=this.render,this.render=function(t,e,i){if(e){t.translate(e.x,e.y),"auto"==this.attribute("orient").valueOrDefault("auto")&&t.rotate(i),"strokeWidth"==this.attribute("markerUnits").valueOrDefault("strokeWidth")&&t.scale(t.lineWidth,t.lineWidth),t.save();var n=new A.Element.svg;n.attributes.viewBox=new A.Property("viewBox",this.attribute("viewBox").value),n.attributes.refX=new A.Property("refX",this.attribute("refX").value),n.attributes.refY=new A.Property("refY",this.attribute("refY").value),n.attributes.width=new A.Property("width",this.attribute("markerWidth").value),n.attributes.height=new A.Property("height",this.attribute("markerHeight").value),n.attributes.fill=new A.Property("fill",this.attribute("fill").valueOrDefault("black")),n.attributes.stroke=new A.Property("stroke",this.attribute("stroke").valueOrDefault("none")),n.children=this.children,n.render(t),t.restore(),"strokeWidth"==this.attribute("markerUnits").valueOrDefault("strokeWidth")&&t.scale(1/t.lineWidth,1/t.lineWidth),"auto"==this.attribute("orient").valueOrDefault("auto")&&t.rotate(-i),t.translate(-e.x,-e.y)}}},A.Element.marker.prototype=new A.Element.ElementBase,A.Element.defs=function(t){this.base=A.Element.ElementBase,this.base(t),this.render=function(t){}},A.Element.defs.prototype=new A.Element.ElementBase,A.Element.GradientBase=function(t){this.base=A.Element.ElementBase,this.base(t),this.stops=[];for(var e=0;e<this.children.length;e++){var i=this.children[e];"stop"==i.type&&this.stops.push(i)}this.getGradient=function(){},this.gradientUnits=function(){return this.attribute("gradientUnits").valueOrDefault("objectBoundingBox")},this.attributesToInherit=["gradientUnits"],this.inheritStopContainer=function(t){for(var e=0;e<this.attributesToInherit.length;e++){var i=this.attributesToInherit[e];!this.attribute(i).hasValue()&&t.attribute(i).hasValue()&&(this.attribute(i,!0).value=t.attribute(i).value)}},this.createGradient=function(t,e,i){var n=this;this.getHrefAttribute().hasValue()&&(n=this.getHrefAttribute().getDefinition(),this.inheritStopContainer(n));var s=function(t){return i.hasValue()?new A.Property("color",t).addOpacity(i).value:t},a=this.getGradient(t,e);if(null==a)return s(n.stops[n.stops.length-1].color);for(var r=0;r<n.stops.length;r++)a.addColorStop(n.stops[r].offset,s(n.stops[r].color));if(this.attribute("gradientTransform").hasValue()){var o=A.ViewPort.viewPorts[0],l=new A.Element.rect;l.attributes.x=new A.Property("x",-A.MAX_VIRTUAL_PIXELS/3),l.attributes.y=new A.Property("y",-A.MAX_VIRTUAL_PIXELS/3),l.attributes.width=new A.Property("width",A.MAX_VIRTUAL_PIXELS),l.attributes.height=new A.Property("height",A.MAX_VIRTUAL_PIXELS);var h=new A.Element.g;h.attributes.transform=new A.Property("transform",this.attribute("gradientTransform").value),h.children=[l];var u=new A.Element.svg;u.attributes.x=new A.Property("x",0),u.attributes.y=new A.Property("y",0),u.attributes.width=new A.Property("width",o.width),u.attributes.height=new A.Property("height",o.height),u.children=[h];var c=p();c.width=o.width,c.height=o.height;var f=c.getContext("2d");return f.fillStyle=a,u.render(f),f.createPattern(c,"no-repeat")}return a}},A.Element.GradientBase.prototype=new A.Element.ElementBase,A.Element.linearGradient=function(t){this.base=A.Element.GradientBase,this.base(t),this.attributesToInherit.push("x1"),this.attributesToInherit.push("y1"),this.attributesToInherit.push("x2"),this.attributesToInherit.push("y2"),this.getGradient=function(t,e){var i="objectBoundingBox"==this.gradientUnits()?e.getBoundingBox(t):null;this.attribute("x1").hasValue()||this.attribute("y1").hasValue()||this.attribute("x2").hasValue()||this.attribute("y2").hasValue()||(this.attribute("x1",!0).value=0,this.attribute("y1",!0).value=0,this.attribute("x2",!0).value=1,this.attribute("y2",!0).value=0);var n="objectBoundingBox"==this.gradientUnits()?i.x()+i.width()*this.attribute("x1").numValue():this.attribute("x1").toPixels("x"),s="objectBoundingBox"==this.gradientUnits()?i.y()+i.height()*this.attribute("y1").numValue():this.attribute("y1").toPixels("y"),a="objectBoundingBox"==this.gradientUnits()?i.x()+i.width()*this.attribute("x2").numValue():this.attribute("x2").toPixels("x"),r="objectBoundingBox"==this.gradientUnits()?i.y()+i.height()*this.attribute("y2").numValue():this.attribute("y2").toPixels("y");return n==a&&s==r?null:t.createLinearGradient(n,s,a,r)}},A.Element.linearGradient.prototype=new A.Element.GradientBase,A.Element.radialGradient=function(t){this.base=A.Element.GradientBase,this.base(t),this.attributesToInherit.push("cx"),this.attributesToInherit.push("cy"),this.attributesToInherit.push("r"),this.attributesToInherit.push("fx"),this.attributesToInherit.push("fy"),this.getGradient=function(t,e){var i=e.getBoundingBox(t);this.attribute("cx").hasValue()||(this.attribute("cx",!0).value="50%"),this.attribute("cy").hasValue()||(this.attribute("cy",!0).value="50%"),this.attribute("r").hasValue()||(this.attribute("r",!0).value="50%");var n="objectBoundingBox"==this.gradientUnits()?i.x()+i.width()*this.attribute("cx").numValue():this.attribute("cx").toPixels("x"),s="objectBoundingBox"==this.gradientUnits()?i.y()+i.height()*this.attribute("cy").numValue():this.attribute("cy").toPixels("y"),a=n,r=s;this.attribute("fx").hasValue()&&(a="objectBoundingBox"==this.gradientUnits()?i.x()+i.width()*this.attribute("fx").numValue():this.attribute("fx").toPixels("x")),this.attribute("fy").hasValue()&&(r="objectBoundingBox"==this.gradientUnits()?i.y()+i.height()*this.attribute("fy").numValue():this.attribute("fy").toPixels("y"));var o="objectBoundingBox"==this.gradientUnits()?(i.width()+i.height())/2*this.attribute("r").numValue():this.attribute("r").toPixels();return t.createRadialGradient(a,r,0,n,s,o)}},A.Element.radialGradient.prototype=new A.Element.GradientBase,A.Element.stop=function(t){this.base=A.Element.ElementBase,this.base(t),this.offset=this.attribute("offset").numValue(),this.offset<0&&(this.offset=0),1<this.offset&&(this.offset=1);var e=this.style("stop-color",!0);""===e.value&&(e.value="#000"),this.style("stop-opacity").hasValue()&&(e=e.addOpacity(this.style("stop-opacity"))),this.color=e.value},A.Element.stop.prototype=new A.Element.ElementBase,A.Element.AnimateBase=function(t){this.base=A.Element.ElementBase,this.base(t),A.Animations.push(this),this.duration=0,this.begin=this.attribute("begin").toMilliseconds(),this.maxDuration=this.begin+this.attribute("dur").toMilliseconds(),this.getProperty=function(){var t=this.attribute("attributeType").value,e=this.attribute("attributeName").value;return"CSS"==t?this.parent.style(e,!0):this.parent.attribute(e,!0)},this.initialValue=null,this.initialUnits="",this.removed=!1,this.calcValue=function(){return""},this.update=function(t){if(null==this.initialValue&&(this.initialValue=this.getProperty().value,this.initialUnits=this.getProperty().getUnits()),this.duration>this.maxDuration){if("indefinite"==this.attribute("repeatCount").value||"indefinite"==this.attribute("repeatDur").value)this.duration=0;else if("freeze"!=this.attribute("fill").valueOrDefault("remove")||this.frozen){if("remove"==this.attribute("fill").valueOrDefault("remove")&&!this.removed)return this.removed=!0,this.getProperty().value=this.parent.animationFrozen?this.parent.animationFrozenValue:this.initialValue,!0}else this.frozen=!0,this.parent.animationFrozen=!0,this.parent.animationFrozenValue=this.getProperty().value;return!1}this.duration=this.duration+t;var e=!1;if(this.begin<this.duration){var i=this.calcValue();this.attribute("type").hasValue()&&(i=this.attribute("type").value+"("+i+")"),this.getProperty().value=i,e=!0}return e},this.from=this.attribute("from"),this.to=this.attribute("to"),this.values=this.attribute("values"),this.values.hasValue()&&(this.values.value=this.values.value.split(";")),this.progress=function(){var t={progress:(this.duration-this.begin)/(this.maxDuration-this.begin)};if(this.values.hasValue()){var e=t.progress*(this.values.value.length-1),i=Math.floor(e),n=Math.ceil(e);t.from=new A.Property("from",parseFloat(this.values.value[i])),t.to=new A.Property("to",parseFloat(this.values.value[n])),t.progress=(e-i)/(n-i)}else t.from=this.from,t.to=this.to;return t}},A.Element.AnimateBase.prototype=new A.Element.ElementBase,A.Element.animate=function(t){this.base=A.Element.AnimateBase,this.base(t),this.calcValue=function(){var t=this.progress();return t.from.numValue()+(t.to.numValue()-t.from.numValue())*t.progress+this.initialUnits}},A.Element.animate.prototype=new A.Element.AnimateBase,A.Element.animateColor=function(t){this.base=A.Element.AnimateBase,this.base(t),this.calcValue=function(){var t=this.progress(),e=new m(t.from.value),i=new m(t.to.value);if(e.ok&&i.ok){var n=e.r+(i.r-e.r)*t.progress,s=e.g+(i.g-e.g)*t.progress,a=e.b+(i.b-e.b)*t.progress;return"rgb("+parseInt(n,10)+","+parseInt(s,10)+","+parseInt(a,10)+")"}return this.attribute("from").value}},A.Element.animateColor.prototype=new A.Element.AnimateBase,A.Element.animateTransform=function(t){this.base=A.Element.AnimateBase,this.base(t),this.calcValue=function(){for(var t=this.progress(),e=A.ToNumberArray(t.from.value),i=A.ToNumberArray(t.to.value),n="",s=0;s<e.length;s++)n+=e[s]+(i[s]-e[s])*t.progress+" ";return n}},A.Element.animateTransform.prototype=new A.Element.animate,A.Element.font=function(t){this.base=A.Element.ElementBase,this.base(t),this.horizAdvX=this.attribute("horiz-adv-x").numValue(),this.isRTL=!1,this.isArabic=!1,this.fontFace=null,this.missingGlyph=null,this.glyphs=[];for(var e=0;e<this.children.length;e++){var i=this.children[e];"font-face"==i.type?(this.fontFace=i).style("font-family").hasValue()&&(A.Definitions[i.style("font-family").value]=this):"missing-glyph"==i.type?this.missingGlyph=i:"glyph"==i.type&&(""!=i.arabicForm?(this.isRTL=!0,this.isArabic=!0,void 0===this.glyphs[i.unicode]&&(this.glyphs[i.unicode]=[]),this.glyphs[i.unicode][i.arabicForm]=i):this.glyphs[i.unicode]=i)}},A.Element.font.prototype=new A.Element.ElementBase,A.Element.fontface=function(t){this.base=A.Element.ElementBase,this.base(t),this.ascent=this.attribute("ascent").value,this.descent=this.attribute("descent").value,this.unitsPerEm=this.attribute("units-per-em").numValue()},A.Element.fontface.prototype=new A.Element.ElementBase,A.Element.missingglyph=function(t){this.base=A.Element.path,this.base(t),this.horizAdvX=0},A.Element.missingglyph.prototype=new A.Element.path,A.Element.glyph=function(t){this.base=A.Element.path,this.base(t),this.horizAdvX=this.attribute("horiz-adv-x").numValue(),this.unicode=this.attribute("unicode").value,this.arabicForm=this.attribute("arabic-form").value},A.Element.glyph.prototype=new A.Element.path,A.Element.text=function(t){this.captureTextNodes=!0,this.base=A.Element.RenderedElementBase,this.base(t),this.baseSetContext=this.setContext,this.setContext=function(t){this.baseSetContext(t);var e=this.style("dominant-baseline").toTextBaseline();null==e&&(e=this.style("alignment-baseline").toTextBaseline()),null!=e&&(t.textBaseline=e)},this.initializeCoordinates=function(t){this.x=this.attribute("x").toPixels("x"),this.y=this.attribute("y").toPixels("y"),this.attribute("dx").hasValue()&&(this.x+=this.attribute("dx").toPixels("x")),this.attribute("dy").hasValue()&&(this.y+=this.attribute("dy").toPixels("y")),this.x+=this.getAnchorDelta(t,this,0)},this.getBoundingBox=function(t){this.initializeCoordinates(t);for(var e=null,i=0;i<this.children.length;i++){var n=this.getChildBoundingBox(t,this,this,i);null==e?e=n:e.addBoundingBox(n)}return e},this.renderChildren=function(t){this.initializeCoordinates(t);for(var e=0;e<this.children.length;e++)this.renderChild(t,this,this,e)},this.getAnchorDelta=function(t,e,i){var n=this.style("text-anchor").valueOrDefault("start");if("start"!=n){for(var s=0,a=i;a<e.children.length;a++){var r=e.children[a];if(i<a&&r.attribute("x").hasValue())break;s+=r.measureTextRecursive(t)}return-1*("end"==n?s:s/2)}return 0},this.adjustChildCoordinates=function(t,e,i,n){var s=i.children[n];return s.attribute("x").hasValue()?(s.x=s.attribute("x").toPixels("x")+e.getAnchorDelta(t,i,n),s.attribute("dx").hasValue()&&(s.x+=s.attribute("dx").toPixels("x"))):(s.attribute("dx").hasValue()&&(e.x+=s.attribute("dx").toPixels("x")),s.x=e.x),e.x=s.x+s.measureText(t),s.attribute("y").hasValue()?(s.y=s.attribute("y").toPixels("y"),s.attribute("dy").hasValue()&&(s.y+=s.attribute("dy").toPixels("y"))):(s.attribute("dy").hasValue()&&(e.y+=s.attribute("dy").toPixels("y")),s.y=e.y),e.y=s.y,s},this.getChildBoundingBox=function(t,e,i,n){var s=this.adjustChildCoordinates(t,e,i,n),a=s.getBoundingBox(t);for(n=0;n<s.children.length;n++){var r=e.getChildBoundingBox(t,e,s,n);a.addBoundingBox(r)}return a},this.renderChild=function(t,e,i,n){var s=this.adjustChildCoordinates(t,e,i,n);for(s.render(t),n=0;n<s.children.length;n++)e.renderChild(t,e,s,n)}},A.Element.text.prototype=new A.Element.RenderedElementBase,A.Element.TextElementBase=function(t){this.base=A.Element.RenderedElementBase,this.base(t),this.getGlyph=function(t,e,i){var n=e[i],s=null;if(t.isArabic){var a="isolated";(0==i||" "==e[i-1])&&i<e.length-2&&" "!=e[i+1]&&(a="terminal"),0<i&&" "!=e[i-1]&&i<e.length-2&&" "!=e[i+1]&&(a="medial"),0<i&&" "!=e[i-1]&&(i==e.length-1||" "==e[i+1])&&(a="initial"),void 0!==t.glyphs[n]&&null==(s=t.glyphs[n][a])&&"glyph"==t.glyphs[n].type&&(s=t.glyphs[n])}else s=t.glyphs[n];return null==s&&(s=t.missingGlyph),s},this.renderChildren=function(t){var e=this.parent.style("font-family").getDefinition();if(null==e)"stroke"==t.paintOrder?(""!=t.strokeStyle&&t.strokeText(A.compressSpaces(this.getText()),this.x,this.y),""!=t.fillStyle&&t.fillText(A.compressSpaces(this.getText()),this.x,this.y)):(""!=t.fillStyle&&t.fillText(A.compressSpaces(this.getText()),this.x,this.y),""!=t.strokeStyle&&t.strokeText(A.compressSpaces(this.getText()),this.x,this.y));else{var i=this.parent.style("font-size").numValueOrDefault(A.Font.Parse(A.ctx.font).fontSize),n=this.parent.style("font-style").valueOrDefault(A.Font.Parse(A.ctx.font).fontStyle),s=this.getText();e.isRTL&&(s=s.split("").reverse().join(""));for(var a=A.ToNumberArray(this.parent.attribute("dx").value),r=0;r<s.length;r++){var o=this.getGlyph(e,s,r),l=i/e.fontFace.unitsPerEm;t.translate(this.x,this.y),t.scale(l,-l);var h=t.lineWidth;t.lineWidth=t.lineWidth*e.fontFace.unitsPerEm/i,"italic"==n&&t.transform(1,0,.4,1,0,0),o.render(t),"italic"==n&&t.transform(1,0,-.4,1,0,0),t.lineWidth=h,t.scale(1/l,-1/l),t.translate(-this.x,-this.y),this.x+=i*(o.horizAdvX||e.horizAdvX)/e.fontFace.unitsPerEm,void 0===a[r]||isNaN(a[r])||(this.x+=a[r])}}},this.getText=function(){},this.measureTextRecursive=function(t){for(var e=this.measureText(t),i=0;i<this.children.length;i++)e+=this.children[i].measureTextRecursive(t);return e},this.measureText=function(t){var e=this.parent.style("font-family").getDefinition();if(null!=e){var i=this.parent.style("font-size").numValueOrDefault(A.Font.Parse(A.ctx.font).fontSize),n=0,s=this.getText();e.isRTL&&(s=s.split("").reverse().join(""));for(var a=A.ToNumberArray(this.parent.attribute("dx").value),r=0;r<s.length;r++)n+=(this.getGlyph(e,s,r).horizAdvX||e.horizAdvX)*i/e.fontFace.unitsPerEm,void 0===a[r]||isNaN(a[r])||(n+=a[r]);return n}var o=A.compressSpaces(this.getText());if(!t.measureText)return 10*o.length;t.save(),this.setContext(t,!0);var l=t.measureText(o).width;return t.restore(),l},this.getBoundingBox=function(t){var e=this.parent.style("font-size").numValueOrDefault(A.Font.Parse(A.ctx.font).fontSize);return new A.BoundingBox(this.x,this.y-e,this.x+this.measureText(t),this.y)}},A.Element.TextElementBase.prototype=new A.Element.RenderedElementBase,A.Element.tspan=function(t){this.captureTextNodes=!0,this.base=A.Element.TextElementBase,this.base(t),this.text=A.compressSpaces(t.value||t.text||t.textContent||""),this.getText=function(){return 0<this.children.length?"":this.text}},A.Element.tspan.prototype=new A.Element.TextElementBase,A.Element.tref=function(t){this.base=A.Element.TextElementBase,this.base(t),this.getText=function(){var t=this.getHrefAttribute().getDefinition();if(null!=t)return t.children[0].getText()}},A.Element.tref.prototype=new A.Element.TextElementBase,A.Element.a=function(t){this.base=A.Element.TextElementBase,this.base(t),this.hasText=0<t.childNodes.length;for(var e=0;e<t.childNodes.length;e++)3!=t.childNodes[e].nodeType&&(this.hasText=!1);this.text=this.hasText?t.childNodes[0].value||t.childNodes[0].data:"",this.getText=function(){return this.text},this.baseRenderChildren=this.renderChildren,this.renderChildren=function(t){if(this.hasText){this.baseRenderChildren(t);var e=new A.Property("fontSize",A.Font.Parse(A.ctx.font).fontSize);A.Mouse.checkBoundingBox(this,new A.BoundingBox(this.x,this.y-e.toPixels("y"),this.x+this.measureText(t),this.y))}else if(0<this.children.length){var i=new A.Element.g;i.children=this.children,i.parent=this,i.render(t)}},this.onclick=function(){u.open(this.getHrefAttribute().value)},this.onmousemove=function(){A.ctx.canvas.style.cursor="pointer"}},A.Element.a.prototype=new A.Element.TextElementBase,A.Element.image=function(t){this.base=A.Element.RenderedElementBase,this.base(t);var e=this.getHrefAttribute().value;if(""!=e){var a=e.match(/\.svg$/);if(A.Images.push(this),this.loaded=!1,a)this.img=A.ajax(e),this.loaded=!0;else{this.img=document.createElement("img"),1==A.opts.useCORS&&(this.img.crossOrigin="Anonymous");var r=this;this.img.onload=function(){r.loaded=!0},this.img.onerror=function(){A.log('ERROR: image "'+e+'" not found'),r.loaded=!0},this.img.src=e}this.renderChildren=function(t){var e=this.attribute("x").toPixels("x"),i=this.attribute("y").toPixels("y"),n=this.attribute("width").toPixels("x"),s=this.attribute("height").toPixels("y");0!=n&&0!=s&&(t.save(),a?t.drawSvg(this.img,e,i,n,s):(t.translate(e,i),A.AspectRatio(t,this.attribute("preserveAspectRatio").value,n,this.img.width,s,this.img.height,0,0),r.loaded&&(void 0===this.img.complete||this.img.complete)&&t.drawImage(this.img,0,0)),t.restore())},this.getBoundingBox=function(){var t=this.attribute("x").toPixels("x"),e=this.attribute("y").toPixels("y"),i=this.attribute("width").toPixels("x"),n=this.attribute("height").toPixels("y");return new A.BoundingBox(t,e,t+i,e+n)}}},A.Element.image.prototype=new A.Element.RenderedElementBase,A.Element.g=function(t){this.base=A.Element.RenderedElementBase,this.base(t),this.getBoundingBox=function(t){for(var e=new A.BoundingBox,i=0;i<this.children.length;i++)e.addBoundingBox(this.children[i].getBoundingBox(t));return e}},A.Element.g.prototype=new A.Element.RenderedElementBase,A.Element.symbol=function(t){this.base=A.Element.RenderedElementBase,this.base(t),this.render=function(t){}},A.Element.symbol.prototype=new A.Element.RenderedElementBase,A.Element.style=function(t){this.base=A.Element.ElementBase,this.base(t);for(var e="",i=0;i<t.childNodes.length;i++)e+=t.childNodes[i].data;e=e.replace(/(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm,"");var n=(e=A.compressSpaces(e)).split("}");for(i=0;i<n.length;i++)if(""!=A.trim(n[i]))for(var s=n[i].split("{"),a=s[0].split(","),r=s[1].split(";"),o=0;o<a.length;o++){var l=A.trim(a[o]);if(""!=l){for(var h=A.Styles[l]||{},u=0;u<r.length;u++){var c=r[u].indexOf(":"),f=r[u].substr(0,c),m=r[u].substr(c+1,r[u].length-c);null!=f&&null!=m&&(h[A.trim(f)]=new A.Property(A.trim(f),A.trim(m)))}if(A.Styles[l]=h,A.StylesSpecificity[l]=w(l),"@font-face"==l)for(var p=h["font-family"].value.replace(/"/g,""),d=h.src.value.split(","),y=0;y<d.length;y++)if(0<d[y].indexOf('format("svg")'))for(var v=d[y].indexOf("url"),g=d[y].indexOf(")",v),x=d[y].substr(v+5,g-v-6),b=A.parseXml(A.ajax(x)).getElementsByTagName("font"),P=0;P<b.length;P++){var E=A.CreateElement(b[P]);A.Definitions[p]=E}}}},A.Element.style.prototype=new A.Element.ElementBase,A.Element.use=function(t){this.base=A.Element.RenderedElementBase,this.base(t),this.baseSetContext=this.setContext,this.setContext=function(t){this.baseSetContext(t),this.attribute("x").hasValue()&&t.translate(this.attribute("x").toPixels("x"),0),this.attribute("y").hasValue()&&t.translate(0,this.attribute("y").toPixels("y"))};var n=this.getHrefAttribute().getDefinition();this.path=function(t){null!=n&&n.path(t)},this.elementTransform=function(){if(null!=n&&n.style("transform",!1,!0).hasValue())return new A.Transform(n.style("transform",!1,!0).value)},this.getBoundingBox=function(t){if(null!=n)return n.getBoundingBox(t)},this.renderChildren=function(t){if(null!=n){var e=n;"symbol"==n.type&&((e=new A.Element.svg).type="svg",e.attributes.viewBox=new A.Property("viewBox",n.attribute("viewBox").value),e.attributes.preserveAspectRatio=new A.Property("preserveAspectRatio",n.attribute("preserveAspectRatio").value),e.attributes.overflow=new A.Property("overflow",n.attribute("overflow").value),e.children=n.children),"svg"==e.type&&(this.attribute("width").hasValue()&&(e.attributes.width=new A.Property("width",this.attribute("width").value)),this.attribute("height").hasValue()&&(e.attributes.height=new A.Property("height",this.attribute("height").value)));var i=e.parent;e.parent=null,e.render(t),e.parent=i}}},A.Element.use.prototype=new A.Element.RenderedElementBase,A.Element.mask=function(t){this.base=A.Element.ElementBase,this.base(t),this.apply=function(t,e){var i=this.attribute("x").toPixels("x"),n=this.attribute("y").toPixels("y"),s=this.attribute("width").toPixels("x"),a=this.attribute("height").toPixels("y");if(0==s&&0==a){for(var r=new A.BoundingBox,o=0;o<this.children.length;o++)r.addBoundingBox(this.children[o].getBoundingBox(t));i=Math.floor(r.x1),n=Math.floor(r.y1),s=Math.floor(r.width()),a=Math.floor(r.height())}var l=e.attribute("mask").value;e.attribute("mask").value="";var h=p();h.width=i+s,h.height=n+a;var u=h.getContext("2d");this.renderChildren(u);var c=p();c.width=i+s,c.height=n+a;var f=c.getContext("2d");e.render(f),f.globalCompositeOperation="destination-in",f.fillStyle=u.createPattern(h,"no-repeat"),f.fillRect(0,0,i+s,n+a),t.fillStyle=f.createPattern(c,"no-repeat"),t.fillRect(0,0,i+s,n+a),e.attribute("mask").value=l},this.render=function(t){}},A.Element.mask.prototype=new A.Element.ElementBase,A.Element.clipPath=function(t){this.base=A.Element.ElementBase,this.base(t),this.apply=function(t){var e="undefined"!=typeof CanvasRenderingContext2D,i=t.beginPath,n=t.closePath;e&&(CanvasRenderingContext2D.prototype.beginPath=function(){},CanvasRenderingContext2D.prototype.closePath=function(){}),i.call(t);for(var s=0;s<this.children.length;s++){var a=this.children[s];if(void 0!==a.path){var r=void 0!==a.elementTransform&&a.elementTransform();!r&&a.style("transform",!1,!0).hasValue()&&(r=new A.Transform(a.style("transform",!1,!0).value)),r&&r.apply(t),a.path(t),e&&(CanvasRenderingContext2D.prototype.closePath=n),r&&r.unapply(t)}}n.call(t),t.clip(),e&&(CanvasRenderingContext2D.prototype.beginPath=i,CanvasRenderingContext2D.prototype.closePath=n)},this.render=function(t){}},A.Element.clipPath.prototype=new A.Element.ElementBase,A.Element.filter=function(t){this.base=A.Element.ElementBase,this.base(t),this.apply=function(t,e){var i=e.getBoundingBox(t),n=Math.floor(i.x1),s=Math.floor(i.y1),a=Math.floor(i.width()),r=Math.floor(i.height()),o=e.style("filter").value;e.style("filter").value="";for(var l=0,h=0,u=0;u<this.children.length;u++){var c=this.children[u].extraFilterDistance||0;l=Math.max(l,c),h=Math.max(h,c)}var f=p();f.width=a+2*l,f.height=r+2*h;var m=f.getContext("2d");for(m.translate(-n+l,-s+h),e.render(m),u=0;u<this.children.length;u++)"function"==typeof this.children[u].apply&&this.children[u].apply(m,0,0,a+2*l,r+2*h);t.drawImage(f,0,0,a+2*l,r+2*h,n-l,s-h,a+2*l,r+2*h),e.style("filter",!0).value=o},this.render=function(t){}},A.Element.filter.prototype=new A.Element.ElementBase,A.Element.feMorphology=function(t){this.base=A.Element.ElementBase,this.base(t),this.apply=function(t,e,i,n,s){}},A.Element.feMorphology.prototype=new A.Element.ElementBase,A.Element.feComposite=function(t){this.base=A.Element.ElementBase,this.base(t),this.apply=function(t,e,i,n,s){}},A.Element.feComposite.prototype=new A.Element.ElementBase,A.Element.feColorMatrix=function(t){this.base=A.Element.ElementBase,this.base(t);var n=A.ToNumberArray(this.attribute("values").value);switch(this.attribute("type").valueOrDefault("matrix")){case"saturate":var e=n[0];n=[.213+.787*e,.715-.715*e,.072-.072*e,0,0,.213-.213*e,.715+.285*e,.072-.072*e,0,0,.213-.213*e,.715-.715*e,.072+.928*e,0,0,0,0,0,1,0,0,0,0,0,1];break;case"hueRotate":var s=n[0]*Math.PI/180,i=function(t,e,i){return t+Math.cos(s)*e+Math.sin(s)*i};n=[i(.213,.787,-.213),i(.715,-.715,-.715),i(.072,-.072,.928),0,0,i(.213,-.213,.143),i(.715,.285,.14),i(.072,-.072,-.283),0,0,i(.213,-.213,-.787),i(.715,-.715,.715),i(.072,.928,.072),0,0,0,0,0,1,0,0,0,0,0,1];break;case"luminanceToAlpha":n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,.2125,.7154,.0721,0,0,0,0,0,0,1]}function u(t,e,i,n,s,a){return t[i*n*4+4*e+a]}function c(t,e,i,n,s,a,r){t[i*n*4+4*e+a]=r}function f(t,e){var i=n[t];return i*(i<0?e-255:e)}this.apply=function(t,e,i,n,s){var a=t.getImageData(0,0,n,s);for(i=0;i<s;i++)for(e=0;e<n;e++){var r=u(a.data,e,i,n,0,0),o=u(a.data,e,i,n,0,1),l=u(a.data,e,i,n,0,2),h=u(a.data,e,i,n,0,3);c(a.data,e,i,n,0,0,f(0,r)+f(1,o)+f(2,l)+f(3,h)+f(4,1)),c(a.data,e,i,n,0,1,f(5,r)+f(6,o)+f(7,l)+f(8,h)+f(9,1)),c(a.data,e,i,n,0,2,f(10,r)+f(11,o)+f(12,l)+f(13,h)+f(14,1)),c(a.data,e,i,n,0,3,f(15,r)+f(16,o)+f(17,l)+f(18,h)+f(19,1))}t.clearRect(0,0,n,s),t.putImageData(a,0,0)}},A.Element.feColorMatrix.prototype=new A.Element.ElementBase,A.Element.feGaussianBlur=function(t){this.base=A.Element.ElementBase,this.base(t),this.blurRadius=Math.floor(this.attribute("stdDeviation").numValue()),this.extraFilterDistance=this.blurRadius,this.apply=function(t,e,i,n,s){d&&void 0!==d.canvasRGBA?(t.canvas.id=A.UniqueId(),t.canvas.style.display="none",document.body.appendChild(t.canvas),d.canvasRGBA(t.canvas,e,i,n,s,this.blurRadius),document.body.removeChild(t.canvas)):A.log("ERROR: StackBlur.js must be included for blur to work")}},A.Element.feGaussianBlur.prototype=new A.Element.ElementBase,A.Element.title=function(t){},A.Element.title.prototype=new A.Element.ElementBase,A.Element.desc=function(t){},A.Element.desc.prototype=new A.Element.ElementBase,A.Element.MISSING=function(t){A.log("ERROR: Element '"+t.nodeName+"' not yet implemented.")},A.Element.MISSING.prototype=new A.Element.ElementBase,A.CreateElement=function(t){var e=t.nodeName.replace(/^[^:]+:/,"");e=e.replace(/\-/g,"");var i=null;return(i=void 0!==A.Element[e]?new A.Element[e](t):new A.Element.MISSING(t)).type=t.nodeName,i},A.load=function(t,e){A.loadXml(t,A.ajax(e))},A.loadXml=function(t,e){A.loadXmlDoc(t,A.parseXml(e))},A.loadXmlDoc=function(a,r){A.init(a);var i=function(t){for(var e=a.canvas;e;)t.x-=e.offsetLeft,t.y-=e.offsetTop,e=e.offsetParent;return u.scrollX&&(t.x+=u.scrollX),u.scrollY&&(t.y+=u.scrollY),t};1!=A.opts.ignoreMouse&&(a.canvas.onclick=function(t){var e=i(new A.Point(null!=t?t.clientX:event.clientX,null!=t?t.clientY:event.clientY));A.Mouse.onclick(e.x,e.y)},a.canvas.onmousemove=function(t){var e=i(new A.Point(null!=t?t.clientX:event.clientX,null!=t?t.clientY:event.clientY));A.Mouse.onmousemove(e.x,e.y)});var o=A.CreateElement(r.documentElement);o.root=!0,o.addStylesFromStyleDefinition();var l=!0,n=function(){A.ViewPort.Clear(),a.canvas.parentNode?A.ViewPort.SetCurrent(a.canvas.parentNode.clientWidth,a.canvas.parentNode.clientHeight):A.ViewPort.SetCurrent(800,600),1!=A.opts.ignoreDimensions&&(o.style("width").hasValue()&&(a.canvas.width=o.style("width").toPixels("x"),a.canvas.style&&(a.canvas.style.width=a.canvas.width+"px")),o.style("height").hasValue()&&(a.canvas.height=o.style("height").toPixels("y"),a.canvas.style&&(a.canvas.style.height=a.canvas.height+"px")));var t=a.canvas.clientWidth||a.canvas.width,e=a.canvas.clientHeight||a.canvas.height;if(1==A.opts.ignoreDimensions&&o.style("width").hasValue()&&o.style("height").hasValue()&&(t=o.style("width").toPixels("x"),e=o.style("height").toPixels("y")),A.ViewPort.SetCurrent(t,e),null!=A.opts.offsetX&&(o.attribute("x",!0).value=A.opts.offsetX),null!=A.opts.offsetY&&(o.attribute("y",!0).value=A.opts.offsetY),null!=A.opts.scaleWidth||null!=A.opts.scaleHeight){var i=null,n=null,s=A.ToNumberArray(o.attribute("viewBox").value);null!=A.opts.scaleWidth&&(o.attribute("width").hasValue()?i=o.attribute("width").toPixels("x")/A.opts.scaleWidth:isNaN(s[2])||(i=s[2]/A.opts.scaleWidth)),null!=A.opts.scaleHeight&&(o.attribute("height").hasValue()?n=o.attribute("height").toPixels("y")/A.opts.scaleHeight:isNaN(s[3])||(n=s[3]/A.opts.scaleHeight)),null==i&&(i=n),null==n&&(n=i),o.attribute("width",!0).value=A.opts.scaleWidth,o.attribute("height",!0).value=A.opts.scaleHeight,o.style("transform",!0,!0).value+=" scale("+1/i+","+1/n+")"}1!=A.opts.ignoreClear&&a.clearRect(0,0,t,e),o.render(a),l&&(l=!1,"function"==typeof A.opts.renderCallback&&A.opts.renderCallback(r))},s=!0;A.ImagesLoaded()&&(s=!1,n()),A.intervalID=setInterval(function(){var t=!1;if(s&&A.ImagesLoaded()&&(t=!(s=!1)),1!=A.opts.ignoreMouse&&(t|=A.Mouse.hasEvents()),1!=A.opts.ignoreAnimation)for(var e=0;e<A.Animations.length;e++)t|=A.Animations[e].update(1e3/A.FRAMERATE);"function"==typeof A.opts.forceRedraw&&1==A.opts.forceRedraw()&&(t=!0),t&&(n(),A.Mouse.runEvents())},1e3/A.FRAMERATE)},A.stop=function(){A.intervalID&&clearInterval(A.intervalID)},A.Mouse=new function(){this.events=[],this.hasEvents=function(){return 0!=this.events.length},this.onclick=function(t,e){this.events.push({type:"onclick",x:t,y:e,run:function(t){t.onclick&&t.onclick()}})},this.onmousemove=function(t,e){this.events.push({type:"onmousemove",x:t,y:e,run:function(t){t.onmousemove&&t.onmousemove()}})},this.eventElements=[],this.checkPath=function(t,e){for(var i=0;i<this.events.length;i++){var n=this.events[i];e.isPointInPath&&e.isPointInPath(n.x,n.y)&&(this.eventElements[i]=t)}},this.checkBoundingBox=function(t,e){for(var i=0;i<this.events.length;i++){var n=this.events[i];e.isPointInBox(n.x,n.y)&&(this.eventElements[i]=t)}},this.runEvents=function(){A.ctx.canvas.style.cursor="";for(var t=0;t<this.events.length;t++)for(var e=this.events[t],i=this.eventElements[t];i;)e.run(i),i=i.parent;this.events=[],this.eventElements=[]}},A}(i||{});"string"==typeof t&&(t=document.getElementById(t)),null!=t.svg&&t.svg.stop(),t.childNodes&&1==t.childNodes.length&&"OBJECT"==t.childNodes[0].nodeName||(t.svg=n);var s=t.getContext("2d");void 0!==e.documentElement?n.loadXmlDoc(s,e):"<"==e.substr(0,1)?n.loadXml(s,e):n.load(s,e)}else for(var a=document.querySelectorAll("svg"),r=0;r<a.length;r++){var o=a[r],l=document.createElement("canvas");l.width=o.clientWidth,l.height=o.clientHeight,o.parentNode.insertBefore(l,o),o.parentNode.removeChild(o);var h=document.createElement("div");h.appendChild(o),c(l,h.innerHTML)}};"undefined"==typeof Element||(void 0!==Element.prototype.matches?f=function(t,e){return t.matches(e)}:void 0!==Element.prototype.webkitMatchesSelector?f=function(t,e){return t.webkitMatchesSelector(e)}:void 0!==Element.prototype.mozMatchesSelector?f=function(t,e){return t.mozMatchesSelector(e)}:void 0!==Element.prototype.msMatchesSelector?f=function(t,e){return t.msMatchesSelector(e)}:void 0!==Element.prototype.oMatchesSelector?f=function(t,e){return t.oMatchesSelector(e)}:("function"!=typeof jQuery&&"function"!=typeof Zepto||(f=function(t,e){return $(t).is(e)}),void 0===f&&"undefined"!=typeof Sizzle&&(f=Sizzle.matchesSelector)));var e=/(\[[^\]]+\])/g,i=/(#[^\s\+>~\.\[:]+)/g,a=/(\.[^\s\+>~\.\[:]+)/g,r=/(::[^\s\+>~\.\[:]+|:first-line|:first-letter|:before|:after)/gi,o=/(:[\w-]+\([^\)]*\))/gi,l=/(:[^\s\+>~\.\[:]+)/g,h=/([^\s\+>~\.\[:]+)/g;function w(n){var s=[0,0,0],t=function(t,e){var i=n.match(t);null!=i&&(s[e]+=i.length,n=n.replace(t," "))};return n=(n=n.replace(/:not\(([^\)]*)\)/g," $1 ")).replace(/{[\s\S]*/gm," "),t(e,1),t(i,0),t(a,1),t(r,2),t(o,1),t(l,1),n=(n=n.replace(/[\*\s\+>~]/g," ")).replace(/[#\.]/g," "),t(h,2),s.join("")}"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.drawSvg=function(t,e,i,n,s,a){var r={ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0,ignoreClear:!0,offsetX:e,offsetY:i,scaleWidth:n,scaleHeight:s};for(var o in a)a.hasOwnProperty(o)&&(r[o]=a[o]);c(this.canvas,t,r)}),t.exports=c}(t={exports:{}},t.exports),t.exports});
  59180. /***/ }),
  59181. /***/ "d6e6":
  59182. /***/ (function(module, exports, __webpack_require__) {
  59183. "use strict";
  59184. var _interopRequireDefault = __webpack_require__("8e6d");
  59185. Object.defineProperty(exports, "__esModule", {
  59186. value: true
  59187. });
  59188. exports.default = void 0;
  59189. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  59190. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  59191. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  59192. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  59193. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  59194. var _Events2 = __webpack_require__("e3e2");
  59195. var _MunicipalCenter = _interopRequireDefault(__webpack_require__("b7bd"));
  59196. var _ProvinceCenter = _interopRequireDefault(__webpack_require__("2c06"));
  59197. __webpack_require__("3ef3");
  59198. __webpack_require__("c978");
  59199. var _lodash = _interopRequireDefault(__webpack_require__("30f7"));
  59200. var _canvg = _interopRequireDefault(__webpack_require__("d6a7"));
  59201. var _WebMapService = _interopRequireDefault(__webpack_require__("f875"));
  59202. var _util = __webpack_require__("1448");
  59203. var MAX_MIGRATION_ANIMATION_COUNT = 1000;
  59204. var WebMapBase =
  59205. /*#__PURE__*/
  59206. function (_Events) {
  59207. (0, _inherits2.default)(WebMapBase, _Events);
  59208. function WebMapBase(id, options, mapOptions) {
  59209. var _this;
  59210. (0, _classCallCheck2.default)(this, WebMapBase);
  59211. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(WebMapBase).call(this));
  59212. _this.echartslayer = [];
  59213. _this._layers = [];
  59214. _this.serverUrl = options.serverUrl || 'https://www.supermapol.com';
  59215. _this.accessToken = options.accessToken;
  59216. _this.accessKey = options.accessKey;
  59217. _this.tiandituKey = options.tiandituKey || '';
  59218. _this.withCredentials = options.withCredentials || false;
  59219. _this.proxy = options.proxy;
  59220. _this.target = options.target || 'map';
  59221. _this.excludePortalProxyUrl = options.excludePortalProxyUrl;
  59222. _this.isSuperMapOnline = options.isSuperMapOnline;
  59223. _this.ignoreBaseProjection = options.ignoreBaseProjection;
  59224. _this.echartslayer = [];
  59225. _this.webMapService = new _WebMapService.default(id, options);
  59226. _this.mapOptions = mapOptions;
  59227. _this.eventTypes = ['getmapinfofailed', 'crsnotsupport', 'getlayerdatasourcefailed', 'addlayerssucceeded', 'notsupportmvt', 'notsupportbaidumap', 'projectionIsNotMatch', 'beforeremovemap'];
  59228. _this.mapId = id;
  59229. return _this;
  59230. }
  59231. (0, _createClass2.default)(WebMapBase, [{
  59232. key: "echartsLayerResize",
  59233. value: function echartsLayerResize() {
  59234. this.echartslayer.forEach(function (echartslayer) {
  59235. echartslayer.chart.resize();
  59236. });
  59237. }
  59238. }, {
  59239. key: "setMapId",
  59240. value: function setMapId(mapId) {
  59241. var _this2 = this;
  59242. this.mapId = mapId;
  59243. this.webMapService.setMapId(mapId);
  59244. setTimeout(function () {
  59245. _this2._initWebMap();
  59246. }, 0);
  59247. }
  59248. }, {
  59249. key: "setServerUrl",
  59250. value: function setServerUrl(serverUrl) {
  59251. this.serverUrl = serverUrl;
  59252. this.webMapService.setServerUrl(serverUrl);
  59253. }
  59254. }, {
  59255. key: "setWithCredentials",
  59256. value: function setWithCredentials(withCredentials) {
  59257. this.withCredentials = withCredentials;
  59258. this.webMapService.setWithCredentials(withCredentials);
  59259. }
  59260. }, {
  59261. key: "setProxy",
  59262. value: function setProxy(proxy) {
  59263. this.proxy = proxy;
  59264. this.webMapService.setProxy(proxy);
  59265. }
  59266. }, {
  59267. key: "setZoom",
  59268. value: function setZoom(zoom) {
  59269. if (this.map) {
  59270. this.mapOptions.zoom = zoom;
  59271. (zoom || zoom === 0) && this.map.setZoom(zoom, {
  59272. from: 'setZoom'
  59273. });
  59274. }
  59275. }
  59276. }, {
  59277. key: "setMaxBounds",
  59278. value: function setMaxBounds(maxBounds) {
  59279. if (this.map) {
  59280. this.mapOptions.maxBounds = maxBounds;
  59281. maxBounds && this.map.setMaxBounds(maxBounds);
  59282. }
  59283. }
  59284. }, {
  59285. key: "setMinZoom",
  59286. value: function setMinZoom(minZoom) {
  59287. if (this.map) {
  59288. this.mapOptions.minZoom = minZoom;
  59289. (minZoom || minZoom === 0) && this.map.setMinZoom(minZoom);
  59290. }
  59291. }
  59292. }, {
  59293. key: "setMaxZoom",
  59294. value: function setMaxZoom(maxZoom) {
  59295. if (this.map) {
  59296. this.mapOptions.maxZoom = maxZoom;
  59297. (maxZoom || maxZoom === 0) && this.map.setMinZoom(maxZoom);
  59298. }
  59299. }
  59300. }, {
  59301. key: "initWebMap",
  59302. value: function initWebMap() {
  59303. this.cleanWebMap();
  59304. if (this.webMapInfo) {
  59305. var mapInfo = this.webMapInfo;
  59306. mapInfo.mapParams = {
  59307. title: this.webMapInfo.title,
  59308. description: this.webMapInfo.description
  59309. };
  59310. this.mapParams = mapInfo.mapParams;
  59311. this._getMapInfo(mapInfo, null);
  59312. return;
  59313. } else if (!this.mapId || !this.serverUrl) {
  59314. this._createMap();
  59315. return;
  59316. }
  59317. this._taskID = new Date();
  59318. this.getMapInfo(this._taskID);
  59319. }
  59320. }, {
  59321. key: "getMapInfo",
  59322. value: function getMapInfo(_taskID) {
  59323. var _this3 = this;
  59324. this.serverUrl = this.webMapService.handleServerUrl(this.serverUrl);
  59325. this.webMapService.getMapInfo().then(function (mapInfo) {
  59326. if (_this3._taskID !== _taskID) {
  59327. return;
  59328. }
  59329. _this3.mapParams = mapInfo.mapParams;
  59330. _this3._getMapInfo(mapInfo, _taskID);
  59331. }, function (error) {
  59332. throw error;
  59333. }).catch(function (error) {
  59334. _this3.triggerEvent('getmapinfofailed', {
  59335. error: error
  59336. });
  59337. console.log(error);
  59338. });
  59339. }
  59340. }, {
  59341. key: "getBaseLayerType",
  59342. value: function getBaseLayerType(layerInfo) {
  59343. var layerType = layerInfo.layerType;
  59344. if (layerType.indexOf('TIANDITU_VEC') > -1 || layerType.indexOf('TIANDITU_IMG') > -1 || layerType.indexOf('TIANDITU_TER') > -1) {
  59345. layerType = 'TIANDITU';
  59346. }
  59347. switch (layerType) {
  59348. case 'TILE':
  59349. case 'SUPERMAP_REST':
  59350. return 'TILE';
  59351. case 'CLOUD':
  59352. case 'CLOUD_BLACK':
  59353. return 'CLOUD';
  59354. case 'OSM':
  59355. case 'JAPAN_ORT':
  59356. case 'JAPAN_RELIEF':
  59357. case 'JAPAN_PALE':
  59358. case 'JAPAN_STD':
  59359. case 'GOOGLE_CN':
  59360. case 'GOOGLE':
  59361. return 'XYZ';
  59362. default:
  59363. return layerType;
  59364. }
  59365. }
  59366. }, {
  59367. key: "getMapurls",
  59368. value: function getMapurls() {
  59369. var mapurl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  59370. var mapUrls = {
  59371. CLOUD: mapurl.CLOUD || 'http://t2.dituhui.com/FileService/image?map=quanguo&type=web&x={x}&y={y}&z={z}',
  59372. CLOUD_BLACK: mapurl.CLOUD_BLACK || 'http://t3.dituhui.com/MapService/getGdp?x={x}&y={y}&z={z}',
  59373. OSM: mapurl.OSM || 'https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png',
  59374. GOOGLE: 'https://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',
  59375. GOOGLE_CN: 'https://mt{0-3}.google.cn/vt/lyrs=m&hl=zh-CN&gl=cn&x={x}&y={y}&z={z}',
  59376. JAPAN_STD: 'https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png',
  59377. JAPAN_PALE: 'https://cyberjapandata.gsi.go.jp/xyz/pale/{z}/{x}/{y}.png',
  59378. JAPAN_RELIEF: 'https://cyberjapandata.gsi.go.jp/xyz/relief/{z}/{x}/{y}.png',
  59379. JAPAN_ORT: 'https://cyberjapandata.gsi.go.jp/xyz/ort/{z}/{x}/{y}.jpg'
  59380. };
  59381. return mapUrls;
  59382. }
  59383. }, {
  59384. key: "getLayerFeatures",
  59385. value: function getLayerFeatures(layer, _taskID, type) {
  59386. var _this4 = this;
  59387. var getLayerFunc = this.webMapService.getLayerFeatures(type, layer, this.baseProjection);
  59388. getLayerFunc && getLayerFunc.then(function (result) {
  59389. if (_this4.mapId && _this4._taskID !== _taskID) {
  59390. return;
  59391. }
  59392. _this4._getLayerFeaturesSucceeded(result, layer);
  59393. }, function (error) {
  59394. throw new Error(error);
  59395. }).catch(function (error) {
  59396. _this4._addLayerSucceeded();
  59397. _this4.triggerEvent('getlayerdatasourcefailed', {
  59398. error: error,
  59399. layer: layer,
  59400. map: _this4.map
  59401. });
  59402. console.log(error);
  59403. });
  59404. }
  59405. }, {
  59406. key: "setFeatureInfo",
  59407. value: function setFeatureInfo(feature) {
  59408. var featureInfo;
  59409. var info = feature.dv_v5_markerInfo;
  59410. if (info && info.dataViz_title) {
  59411. featureInfo = info;
  59412. } else {
  59413. return info;
  59414. }
  59415. var properties = feature.properties;
  59416. for (var key in featureInfo) {
  59417. if (properties[key]) {
  59418. featureInfo[key] = properties[key];
  59419. delete properties[key];
  59420. }
  59421. }
  59422. return featureInfo;
  59423. }
  59424. }, {
  59425. key: "getRankStyleGroup",
  59426. value: function getRankStyleGroup(themeField, features, parameters) {
  59427. var values = [],
  59428. segements = [],
  59429. style = parameters.style,
  59430. themeSetting = parameters.themeSetting,
  59431. segmentMethod = themeSetting.segmentMethod,
  59432. segmentCount = themeSetting.segmentCount,
  59433. customSettings = themeSetting.customSettings,
  59434. minR = parameters.themeSetting.minRadius,
  59435. maxR = parameters.themeSetting.maxRadius,
  59436. colors = themeSetting.colors,
  59437. fillColor = style.fillColor;
  59438. features.forEach(function (feature) {
  59439. var properties = feature.properties,
  59440. value = properties[themeField];
  59441. if (value == null || !(0, _lodash.default)(+value)) {
  59442. return;
  59443. }
  59444. values.push(Number(value));
  59445. });
  59446. try {
  59447. segements = SuperMap.ArrayStatistic.getArraySegments(values, segmentMethod, segmentCount);
  59448. } catch (error) {
  59449. console.log(error);
  59450. }
  59451. for (var i = 0; i < segmentCount; i++) {
  59452. if (i in customSettings) {
  59453. var startValue = customSettings[i]['segment']['start'],
  59454. endValue = customSettings[i]['segment']['end'];
  59455. startValue != null && (segements[i] = startValue);
  59456. endValue != null && (segements[i + 1] = endValue);
  59457. }
  59458. }
  59459. var styleGroup = [];
  59460. if (segements && segements.length) {
  59461. var len = segements.length,
  59462. incrementR = (maxR - minR) / (len - 1),
  59463. start,
  59464. end,
  59465. radius = Number(((maxR + minR) / 2).toFixed(2)),
  59466. color = '';
  59467. var rangeColors = colors ? SuperMap.ColorsPickerUtil.getGradientColors(colors, len, 'RANGE') : [];
  59468. for (var _i = 0; _i < len - 1; _i++) {
  59469. start = Number(segements[_i].toFixed(2));
  59470. end = Number(segements[_i + 1].toFixed(2));
  59471. radius = start === end ? radius : minR + Math.round(incrementR * _i);
  59472. end = _i === len - 2 ? end + 0.01 : end;
  59473. radius = customSettings[_i] && customSettings[_i].radius ? customSettings[_i].radius : radius;
  59474. style.radius = radius;
  59475. if (colors && colors.length > 0) {
  59476. color = customSettings[_i] && customSettings[_i].color ? customSettings[_i].color : rangeColors[_i] || fillColor;
  59477. style.fillColor = color;
  59478. }
  59479. styleGroup.push({
  59480. radius: radius,
  59481. color: color,
  59482. start: start,
  59483. end: end,
  59484. style: style
  59485. });
  59486. }
  59487. return styleGroup;
  59488. } else {
  59489. return false;
  59490. }
  59491. }
  59492. }, {
  59493. key: "createRankStyleSource",
  59494. value: function createRankStyleSource(parameters, features) {
  59495. var themeSetting = parameters.themeSetting,
  59496. themeField = themeSetting.themeField;
  59497. var styleGroups = this.getRankStyleGroup(themeField, features, parameters);
  59498. return styleGroups ? {
  59499. parameters: parameters,
  59500. styleGroups: styleGroups
  59501. } : false;
  59502. }
  59503. }, {
  59504. key: "isMatchAdministrativeName",
  59505. value: function isMatchAdministrativeName(featureName, fieldName) {
  59506. var isString = typeof fieldName === 'string' && fieldName.constructor === String;
  59507. if (isString) {
  59508. var shortName = featureName.substr(0, 2);
  59509. if (shortName === '张家') {
  59510. shortName = featureName.substr(0, 3);
  59511. }
  59512. return !!fieldName.match(new RegExp(shortName));
  59513. }
  59514. return false;
  59515. }
  59516. }, {
  59517. key: "getRestMapLayerInfo",
  59518. value: function getRestMapLayerInfo(restMapInfo, layer) {
  59519. var bounds = restMapInfo.bounds,
  59520. coordUnit = restMapInfo.coordUnit,
  59521. visibleScales = restMapInfo.visibleScales,
  59522. url = restMapInfo.url;
  59523. layer.layerType = 'TILE';
  59524. layer.orginEpsgCode = this.baseProjection;
  59525. layer.units = coordUnit && coordUnit.toLowerCase();
  59526. layer.extent = [bounds.left, bounds.bottom, bounds.right, bounds.top];
  59527. layer.visibleScales = visibleScales;
  59528. layer.url = url;
  59529. layer.sourceType = 'TILE';
  59530. return layer;
  59531. }
  59532. }, {
  59533. key: "handleLayerFeatures",
  59534. value: function handleLayerFeatures(features, layerInfo) {
  59535. var layerType = layerInfo.layerType,
  59536. style = layerInfo.style,
  59537. themeSetting = layerInfo.themeSetting,
  59538. filterCondition = layerInfo.filterCondition;
  59539. if ((style || themeSetting) && filterCondition) {
  59540. if (layerType !== 'RANGE' && layerType !== 'UNIQUE' && layerType !== 'RANK_SYMBOL') {
  59541. features = this.getFilterFeatures(filterCondition, features);
  59542. }
  59543. }
  59544. return features;
  59545. }
  59546. }, {
  59547. key: "mergeFeatures",
  59548. value: function mergeFeatures(layerId, features, mergeByField) {
  59549. features = features.map(function (feature, index) {
  59550. if (!feature.properties.hasOwnProperty('index')) {
  59551. feature.properties.index = index;
  59552. }
  59553. return feature;
  59554. });
  59555. if (!mergeByField) {
  59556. return features;
  59557. }
  59558. var source = this.map.getSource(layerId);
  59559. if (!source || !source._data.features) {
  59560. return features;
  59561. }
  59562. var prevFeatures = source._data.features;
  59563. var nextFeatures = [];
  59564. features.forEach(function (feature) {
  59565. var prevFeature = prevFeatures.find(function (item) {
  59566. if (isNaN(+item.properties[mergeByField]) && isNaN(+feature.properties[mergeByField])) {
  59567. return JSON.stringify(item.properties[mergeByField] || '') === JSON.stringify(feature.properties[mergeByField] || '');
  59568. } else {
  59569. return +item.properties[mergeByField] === +feature.properties[mergeByField];
  59570. }
  59571. });
  59572. if (prevFeature) {
  59573. nextFeatures.push(Object.assign(Object.assign({}, prevFeature), feature));
  59574. } else if (feature.geometry) {
  59575. nextFeatures.push(feature);
  59576. }
  59577. });
  59578. return nextFeatures;
  59579. }
  59580. }, {
  59581. key: "getFilterFeatures",
  59582. value: function getFilterFeatures(filterCondition, allFeatures) {
  59583. if (!filterCondition) {
  59584. return allFeatures;
  59585. }
  59586. var condition = this.replaceFilterCharacter(filterCondition);
  59587. var sql = 'select * from json where (' + condition + ')';
  59588. var filterFeatures = [];
  59589. for (var i = 0; i < allFeatures.length; i++) {
  59590. var feature = allFeatures[i];
  59591. var filterResult = void 0;
  59592. try {
  59593. filterResult = window['jsonsql'].query(sql, {
  59594. properties: feature.properties
  59595. });
  59596. } catch (err) {
  59597. continue;
  59598. }
  59599. if (filterResult && filterResult.length > 0) {
  59600. filterFeatures.push(feature);
  59601. }
  59602. }
  59603. return filterFeatures;
  59604. }
  59605. }, {
  59606. key: "replaceFilterCharacter",
  59607. value: function replaceFilterCharacter(filterString) {
  59608. filterString = filterString.replace(/=/g, '==').replace(/AND|and/g, '&&').replace(/or|OR/g, '||').replace(/<==/g, '<=').replace(/>==/g, '>=');
  59609. return filterString;
  59610. }
  59611. }, {
  59612. key: "getEchartsLayerOptions",
  59613. value: function getEchartsLayerOptions(layerInfo, features, coordinateSystem) {
  59614. var properties = this.webMapService.getFeatureProperties(features);
  59615. var lineData = this._createLinesData(layerInfo, properties);
  59616. var pointData = this._createPointsData(lineData, layerInfo, properties);
  59617. var options = this._createOptions(layerInfo, lineData, pointData, coordinateSystem);
  59618. return options;
  59619. }
  59620. }, {
  59621. key: "getDashStyle",
  59622. value: function getDashStyle(str) {
  59623. var strokeWidth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
  59624. var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'array';
  59625. if (!str) {
  59626. return type === 'array' ? [] : '';
  59627. }
  59628. var w = strokeWidth;
  59629. var dashArr;
  59630. switch (str) {
  59631. case 'solid':
  59632. dashArr = [];
  59633. break;
  59634. case 'dot':
  59635. dashArr = [1, 4 * w];
  59636. break;
  59637. case 'dash':
  59638. dashArr = [4 * w, 4 * w];
  59639. break;
  59640. case 'dashrailway':
  59641. dashArr = [8 * w, 12 * w];
  59642. break;
  59643. case 'dashdot':
  59644. dashArr = [4 * w, 4 * w, 1 * w, 4 * w];
  59645. break;
  59646. case 'longdash':
  59647. dashArr = [8 * w, 4 * w];
  59648. break;
  59649. case 'longdashdot':
  59650. dashArr = [8 * w, 4 * w, 1, 4 * w];
  59651. break;
  59652. default:
  59653. if (SuperMap.Util.isArray(str)) {
  59654. dashArr = str;
  59655. }
  59656. str = SuperMap.String.trim(str).replace(/\s+/g, ',');
  59657. dashArr = str.replace(/\[|\]/gi, '').split(',');
  59658. break;
  59659. }
  59660. dashArr = type === 'array' ? dashArr : dashArr.join(',');
  59661. return dashArr;
  59662. }
  59663. }, {
  59664. key: "getCanvasFromSVG",
  59665. value: function getCanvasFromSVG(svgUrl, divDom, callBack) {
  59666. var canvas = document.createElement('canvas');
  59667. canvas.id = "dataviz-canvas-".concat(new Date().getTime());
  59668. canvas.style.display = 'none';
  59669. divDom.appendChild(canvas);
  59670. var canvgs = window.canvg ? window.canvg : _canvg.default;
  59671. canvgs(canvas.id, svgUrl, {
  59672. ignoreMouse: true,
  59673. ignoreAnimation: true,
  59674. renderCallback: function renderCallback() {
  59675. if (canvas.width > 300 || canvas.height > 300) {
  59676. return;
  59677. }
  59678. callBack(canvas);
  59679. },
  59680. forceRedraw: function forceRedraw() {
  59681. return false;
  59682. }
  59683. });
  59684. }
  59685. }, {
  59686. key: "getRangeStyleGroup",
  59687. value: function getRangeStyleGroup(layerInfo, features) {
  59688. var featureType = layerInfo.featureType,
  59689. style = layerInfo.style,
  59690. themeSetting = layerInfo.themeSetting;
  59691. var customSettings = themeSetting.customSettings,
  59692. themeField = themeSetting.themeField,
  59693. segmentCount = themeSetting.segmentCount,
  59694. segmentMethod = themeSetting.segmentMethod,
  59695. colors = themeSetting.colors;
  59696. var values = [];
  59697. var attributes;
  59698. features.forEach(function (feature) {
  59699. attributes = feature.properties;
  59700. if (attributes) {
  59701. var val = attributes[themeField];
  59702. (val || val === 0) && (0, _lodash.default)(+val) && values.push(parseFloat(val));
  59703. }
  59704. }, this);
  59705. var segements = SuperMap.ArrayStatistic.getArraySegments(values, segmentMethod, segmentCount);
  59706. if (segements) {
  59707. var itemNum = segmentCount;
  59708. if (attributes && segements[0] === segements[attributes.length - 1]) {
  59709. itemNum = 1;
  59710. segements.length = 2;
  59711. }
  59712. for (var i = 0; i < segements.length; i++) {
  59713. var value = segements[i];
  59714. value = i === 0 ? Math.floor(value * 100) / 100 : Math.ceil(value * 100) / 100 + 0.1;
  59715. segements[i] = Number(value.toFixed(2));
  59716. }
  59717. var curentColors = colors;
  59718. curentColors = SuperMap.ColorsPickerUtil.getGradientColors(curentColors, itemNum, 'RANGE');
  59719. for (var index = 0; index < itemNum; index++) {
  59720. if (index in customSettings) {
  59721. if (customSettings[index]['segment']['start']) {
  59722. segements[index] = customSettings[index]['segment']['start'];
  59723. }
  59724. if (customSettings[index]['segment']['end']) {
  59725. segements[index + 1] = customSettings[index]['segment']['end'];
  59726. }
  59727. }
  59728. }
  59729. var styleGroups = [];
  59730. for (var _i2 = 0; _i2 < itemNum; _i2++) {
  59731. var color = curentColors[_i2];
  59732. if (_i2 in customSettings) {
  59733. if (customSettings[_i2].color) {
  59734. color = customSettings[_i2].color;
  59735. }
  59736. }
  59737. if (featureType === 'LINE') {
  59738. style.strokeColor = color;
  59739. } else {
  59740. style.fillColor = color;
  59741. }
  59742. var start = segements[_i2];
  59743. var end = segements[_i2 + 1];
  59744. var styleObj = JSON.parse(JSON.stringify(style));
  59745. styleGroups.push({
  59746. style: styleObj,
  59747. color: color,
  59748. start: start,
  59749. end: end
  59750. });
  59751. }
  59752. return styleGroups;
  59753. }
  59754. }
  59755. }, {
  59756. key: "getUniqueStyleGroup",
  59757. value: function getUniqueStyleGroup(parameters, features) {
  59758. var featureType = parameters.featureType,
  59759. style = parameters.style,
  59760. themeSetting = parameters.themeSetting;
  59761. var themeField = themeSetting.themeField,
  59762. colors = themeSetting.colors,
  59763. customSettings = themeSetting.customSettings;
  59764. Object.keys(features[0].properties).forEach(function (key) {
  59765. key.toLocaleUpperCase() === themeField.toLocaleUpperCase() && (themeField = key);
  59766. });
  59767. var names = [];
  59768. for (var i in features) {
  59769. var properties = features[i].properties;
  59770. var name = properties[themeField];
  59771. var isSaved = false;
  59772. for (var j in names) {
  59773. if (names[j] === name) {
  59774. isSaved = true;
  59775. break;
  59776. }
  59777. }
  59778. if (!isSaved) {
  59779. names.push(name || '0');
  59780. }
  59781. }
  59782. var curentColors = colors;
  59783. curentColors = SuperMap.ColorsPickerUtil.getGradientColors(curentColors, names.length);
  59784. var styleGroup = [];
  59785. names.forEach(function (name, index) {
  59786. var color = curentColors[index];
  59787. if (name in customSettings) {
  59788. color = customSettings[name];
  59789. }
  59790. if (featureType === 'LINE') {
  59791. style.strokeColor = color;
  59792. } else {
  59793. style.fillColor = color;
  59794. }
  59795. styleGroup.push({
  59796. color: color,
  59797. style: Object.assign({}, style),
  59798. value: name
  59799. });
  59800. }, this);
  59801. return styleGroup;
  59802. }
  59803. }, {
  59804. key: "transformFeatures",
  59805. value: function transformFeatures(features) {
  59806. var _this5 = this;
  59807. features && features.forEach(function (feature, index) {
  59808. var geometryType = feature.geometry.type;
  59809. var coordinates = feature.geometry.coordinates;
  59810. if (coordinates.length === 0) {
  59811. return;
  59812. }
  59813. if (geometryType === 'LineString') {
  59814. coordinates.forEach(function (coordinate, index) {
  59815. coordinate = _this5._unproject(coordinate);
  59816. coordinates[index] = coordinate;
  59817. }, _this5);
  59818. } else if (geometryType === 'Point') {
  59819. coordinates = _this5._unproject(coordinates);
  59820. feature.geometry.coordinates = coordinates;
  59821. } else if (geometryType === 'MultiPolygon' || geometryType === 'Polygon') {
  59822. coordinates.forEach(function (coordinate, index) {
  59823. var coords = geometryType === 'MultiPolygon' ? coordinate[0] : coordinate;
  59824. coords.forEach(function (latlng, i) {
  59825. latlng = _this5._unproject(latlng);
  59826. coords[i] = latlng;
  59827. });
  59828. coordinates[index] = coordinate;
  59829. });
  59830. }
  59831. features[index] = feature;
  59832. });
  59833. return features;
  59834. }
  59835. }, {
  59836. key: "handleSvgColor",
  59837. value: function handleSvgColor(style, canvas) {
  59838. var fillColor = style.fillColor,
  59839. fillOpacity = style.fillOpacity,
  59840. strokeColor = style.strokeColor,
  59841. strokeOpacity = style.strokeOpacity,
  59842. strokeWidth = style.strokeWidth;
  59843. var context = canvas.getContext('2d');
  59844. if (fillColor) {
  59845. context.fillStyle = (0, _util.getColorWithOpacity)(fillColor, fillOpacity);
  59846. context.fill();
  59847. }
  59848. if (strokeColor || strokeWidth) {
  59849. context.strokeStyle = (0, _util.getColorWithOpacity)(strokeColor, strokeOpacity);
  59850. context.lineWidth = strokeWidth;
  59851. context.stroke();
  59852. }
  59853. }
  59854. }, {
  59855. key: "_createLinesData",
  59856. value: function _createLinesData(layerInfo, properties) {
  59857. var _this6 = this;
  59858. var data = [];
  59859. if (properties && properties.length) {
  59860. var from = layerInfo.from,
  59861. to = layerInfo.to,
  59862. fromCoord,
  59863. toCoord;
  59864. if (from.type === 'XY_FIELD' && from['xField'] && from['yField'] && to['xField'] && to['yField']) {
  59865. properties.forEach(function (property) {
  59866. var fromX = property[from['xField']],
  59867. fromY = property[from['yField']],
  59868. toX = property[to['xField']],
  59869. toY = property[to['yField']];
  59870. if (!fromX || !fromY || !toX || !toY) {
  59871. return;
  59872. }
  59873. fromCoord = [property[from['xField']], property[from['yField']]];
  59874. toCoord = [property[to['xField']], property[to['yField']]];
  59875. data.push({
  59876. coords: [fromCoord, toCoord]
  59877. });
  59878. });
  59879. } else if (from.type === 'PLACE_FIELD' && from['field'] && to['field']) {
  59880. var centerDatas = _ProvinceCenter.default.concat(_MunicipalCenter.default);
  59881. properties.forEach(function (property) {
  59882. var fromField = property[from['field']],
  59883. toField = property[to['field']];
  59884. fromCoord = centerDatas.find(function (item) {
  59885. return _this6.isMatchAdministrativeName(item.name, fromField);
  59886. });
  59887. toCoord = centerDatas.find(function (item) {
  59888. return _this6.isMatchAdministrativeName(item.name, toField);
  59889. });
  59890. if (!fromCoord || !toCoord) {
  59891. return;
  59892. }
  59893. data.push({
  59894. coords: [fromCoord.coord, toCoord.coord]
  59895. });
  59896. });
  59897. }
  59898. }
  59899. return data;
  59900. }
  59901. }, {
  59902. key: "_createPointsData",
  59903. value: function _createPointsData(lineData, layerInfo, properties) {
  59904. var data = [],
  59905. labelSetting = layerInfo.labelSetting;
  59906. if (!labelSetting.show || !lineData.length) {
  59907. return data;
  59908. }
  59909. var fromData = [],
  59910. toData = [];
  59911. lineData.forEach(function (item, idx) {
  59912. var coords = item.coords,
  59913. fromCoord = coords[0],
  59914. toCoord = coords[1],
  59915. fromProperty = properties[idx][labelSetting.from],
  59916. toProperty = properties[idx][labelSetting.to];
  59917. var f = fromData.find(function (d) {
  59918. return d.value[0] === fromCoord[0] && d.value[1] === fromCoord[1];
  59919. });
  59920. !f && fromData.push({
  59921. name: fromProperty,
  59922. value: fromCoord
  59923. });
  59924. var t = toData.find(function (d) {
  59925. return d.value[0] === toCoord[0] && d.value[1] === toCoord[1];
  59926. });
  59927. !t && toData.push({
  59928. name: toProperty,
  59929. value: toCoord
  59930. });
  59931. });
  59932. data = fromData.concat(toData);
  59933. return data;
  59934. }
  59935. }, {
  59936. key: "_createOptions",
  59937. value: function _createOptions(layerInfo, lineData, pointData, coordinateSystem) {
  59938. var series;
  59939. var lineSeries = this._createLineSeries(layerInfo, lineData, coordinateSystem);
  59940. if (pointData && pointData.length) {
  59941. var pointSeries = this._createPointSeries(layerInfo, pointData, coordinateSystem);
  59942. series = lineSeries.concat(pointSeries);
  59943. } else {
  59944. series = lineSeries.slice();
  59945. }
  59946. return {
  59947. series: series
  59948. };
  59949. }
  59950. }, {
  59951. key: "_createPointSeries",
  59952. value: function _createPointSeries(layerInfo, pointData, coordinateSystem) {
  59953. var lineSetting = layerInfo.lineSetting;
  59954. var animationSetting = layerInfo.animationSetting;
  59955. var labelSetting = layerInfo.labelSetting;
  59956. var pointSeries = [{
  59957. name: 'point-series',
  59958. coordinateSystem: coordinateSystem,
  59959. zlevel: 2,
  59960. label: {
  59961. normal: {
  59962. show: labelSetting.show,
  59963. position: 'right',
  59964. formatter: '{b}',
  59965. color: labelSetting.color,
  59966. fontFamily: labelSetting.fontFamily
  59967. }
  59968. },
  59969. itemStyle: {
  59970. normal: {
  59971. color: lineSetting.color || labelSetting.color
  59972. }
  59973. },
  59974. data: pointData
  59975. }];
  59976. if (animationSetting.show) {
  59977. pointSeries[0].type = 'effectScatter';
  59978. pointSeries[0].rippleEffect = {
  59979. brushType: 'stroke'
  59980. };
  59981. } else {
  59982. pointSeries[0].type = 'scatter';
  59983. }
  59984. return pointSeries;
  59985. }
  59986. }, {
  59987. key: "_createLineSeries",
  59988. value: function _createLineSeries(layerInfo, lineData, coordinateSystem) {
  59989. var lineSetting = layerInfo.lineSetting;
  59990. var animationSetting = layerInfo.animationSetting;
  59991. var linesSeries = [{
  59992. name: 'line-series',
  59993. coordinateSystem: coordinateSystem,
  59994. type: 'lines',
  59995. zlevel: 1,
  59996. effect: {
  59997. show: animationSetting.show,
  59998. constantSpeed: animationSetting.constantSpeed,
  59999. trailLength: 0,
  60000. symbol: animationSetting.symbol,
  60001. symbolSize: animationSetting.symbolSize
  60002. },
  60003. lineStyle: {
  60004. normal: {
  60005. color: lineSetting.color,
  60006. type: lineSetting.type,
  60007. width: lineSetting.width,
  60008. opacity: lineSetting.opacity,
  60009. curveness: lineSetting.curveness
  60010. }
  60011. },
  60012. data: lineData
  60013. }];
  60014. if (lineData.length >= MAX_MIGRATION_ANIMATION_COUNT) {
  60015. linesSeries[0].large = true;
  60016. linesSeries[0].largeThreshold = 100;
  60017. linesSeries[0].blendMode = 'lighter';
  60018. }
  60019. return linesSeries;
  60020. }
  60021. }, {
  60022. key: "_getLayerFeaturesSucceeded",
  60023. value: function _getLayerFeaturesSucceeded(result, layer) {
  60024. switch (result.type) {
  60025. case 'feature':
  60026. this._initOverlayLayer(layer, result.features);
  60027. break;
  60028. case 'restMap':
  60029. layer.layerType = 'restMap';
  60030. this._initOverlayLayer(layer, result.restMaps);
  60031. break;
  60032. case 'mvt':
  60033. layer.layerType = 'mvt';
  60034. this._initOverlayLayer(layer, result);
  60035. break;
  60036. case 'dataflow':
  60037. case 'noServerId':
  60038. this._initOverlayLayer(layer);
  60039. break;
  60040. }
  60041. }
  60042. }]);
  60043. return WebMapBase;
  60044. }(_Events2.Events);
  60045. exports.default = WebMapBase;
  60046. /***/ }),
  60047. /***/ "d711":
  60048. /***/ (function(module, exports, __webpack_require__) {
  60049. "use strict";
  60050. // Copyright Joyent, Inc. and other Node contributors.
  60051. //
  60052. // Permission is hereby granted, free of charge, to any person obtaining a
  60053. // copy of this software and associated documentation files (the
  60054. // "Software"), to deal in the Software without restriction, including
  60055. // without limitation the rights to use, copy, modify, merge, publish,
  60056. // distribute, sublicense, and/or sell copies of the Software, and to permit
  60057. // persons to whom the Software is furnished to do so, subject to the
  60058. // following conditions:
  60059. //
  60060. // The above copyright notice and this permission notice shall be included
  60061. // in all copies or substantial portions of the Software.
  60062. //
  60063. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  60064. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  60065. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  60066. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  60067. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  60068. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  60069. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  60070. // a duplex stream is just a stream that is both readable and writable.
  60071. // Since JS doesn't have multiple prototypal inheritance, this class
  60072. // prototypally inherits from Readable, and then parasitically from
  60073. // Writable.
  60074. /*<replacement>*/
  60075. var pna = __webpack_require__("3e48");
  60076. /*</replacement>*/
  60077. /*<replacement>*/
  60078. var objectKeys = Object.keys || function (obj) {
  60079. var keys = [];
  60080. for (var key in obj) {
  60081. keys.push(key);
  60082. }return keys;
  60083. };
  60084. /*</replacement>*/
  60085. module.exports = Duplex;
  60086. /*<replacement>*/
  60087. var util = __webpack_require__("9107");
  60088. util.inherits = __webpack_require__("fe04");
  60089. /*</replacement>*/
  60090. var Readable = __webpack_require__("c66c");
  60091. var Writable = __webpack_require__("9c77");
  60092. util.inherits(Duplex, Readable);
  60093. {
  60094. // avoid scope creep, the keys array can then be collected
  60095. var keys = objectKeys(Writable.prototype);
  60096. for (var v = 0; v < keys.length; v++) {
  60097. var method = keys[v];
  60098. if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
  60099. }
  60100. }
  60101. function Duplex(options) {
  60102. if (!(this instanceof Duplex)) return new Duplex(options);
  60103. Readable.call(this, options);
  60104. Writable.call(this, options);
  60105. if (options && options.readable === false) this.readable = false;
  60106. if (options && options.writable === false) this.writable = false;
  60107. this.allowHalfOpen = true;
  60108. if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
  60109. this.once('end', onend);
  60110. }
  60111. Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
  60112. // making it explicit this property is not enumerable
  60113. // because otherwise some prototype manipulation in
  60114. // userland will fail
  60115. enumerable: false,
  60116. get: function () {
  60117. return this._writableState.highWaterMark;
  60118. }
  60119. });
  60120. // the no-half-open enforcer
  60121. function onend() {
  60122. // if we allow half-open state, or if the writable side ended,
  60123. // then we're ok.
  60124. if (this.allowHalfOpen || this._writableState.ended) return;
  60125. // no more data can be written.
  60126. // But allow more writes to happen in this tick.
  60127. pna.nextTick(onEndNT, this);
  60128. }
  60129. function onEndNT(self) {
  60130. self.end();
  60131. }
  60132. Object.defineProperty(Duplex.prototype, 'destroyed', {
  60133. get: function () {
  60134. if (this._readableState === undefined || this._writableState === undefined) {
  60135. return false;
  60136. }
  60137. return this._readableState.destroyed && this._writableState.destroyed;
  60138. },
  60139. set: function (value) {
  60140. // we ignore the value if the stream
  60141. // has not been initialized yet
  60142. if (this._readableState === undefined || this._writableState === undefined) {
  60143. return;
  60144. }
  60145. // backward compatibility, the user is explicitly
  60146. // managing destroyed
  60147. this._readableState.destroyed = value;
  60148. this._writableState.destroyed = value;
  60149. }
  60150. });
  60151. Duplex.prototype._destroy = function (err, cb) {
  60152. this.push(null);
  60153. this.end();
  60154. pna.nextTick(cb, err);
  60155. };
  60156. /***/ }),
  60157. /***/ "d7c1":
  60158. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  60159. "use strict";
  60160. __webpack_require__.r(__webpack_exports__);
  60161. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_GraphThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("5f86");
  60162. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_GraphThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_GraphThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  60163. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_GraphThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_GraphThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  60164. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_GraphThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  60165. /***/ }),
  60166. /***/ "d80b":
  60167. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  60168. "use strict";
  60169. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/web-map/control/zoom/Zoom.vue?vue&type=template&id=45cc8a58&
  60170. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-zoom"},[_c('div',{staticClass:"sm-component-zoom__buttons",style:([_vm.getBackgroundStyle, _vm.getTextColorStyle])},[_c('a-button',{staticClass:"sm-component-zoom__button sm-component-zoom__button--zoomin",style:(_vm.activeZoomMode === 'zoomInBtn' ? [_vm.getColorStyle(0), _vm.activieBgColor] : [_vm.getTextColorStyle, _vm.getBackgroundStyle]),attrs:{"autofocus":"false","icon":"plus","disabled":!_vm.canZoomIn},on:{"click":_vm.zoomIn}}),_vm._v(" "),_c('a-button',{staticClass:"sm-component-zoom__button sm-component-zoom__button--zoomout",style:(_vm.activeZoomMode === 'zoomOutBtn' ? [_vm.getColorStyle(0), _vm.activieBgColor] : [_vm.getTextColorStyle, _vm.getBackgroundStyle]),attrs:{"autofocus":"false","icon":"minus","disabled":!_vm.canZoomOut},on:{"click":_vm.zoomOut}}),_vm._v(" "),(_vm.showZoom)?_c('div',{staticClass:"sm-component-zoom__show-zoom",style:(_vm.showZoomStyle)},[_vm._v(_vm._s(Math.round(_vm.zoomPosition)))]):_vm._e()],1),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.showZoomSlider),expression:"showZoomSlider"}],staticClass:"sm-component-zoom__slider"},[_c('a-slider',{style:(_vm.getColorStyle(0)),attrs:{"min":_vm.min,"max":_vm.max,"step":0.01,"vertical":""},on:{"change":_vm.sliderChange},model:{value:(_vm.zoomPosition),callback:function ($$v) {_vm.zoomPosition=$$v},expression:"zoomPosition"}})],1)])}
  60171. var staticRenderFns = []
  60172. // CONCATENATED MODULE: ./src/mapboxgl/web-map/control/zoom/Zoom.vue?vue&type=template&id=45cc8a58&
  60173. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  60174. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  60175. /***/ }),
  60176. /***/ "d83d":
  60177. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  60178. "use strict";
  60179. __webpack_require__.r(__webpack_exports__);
  60180. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ChartMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("0f9e");
  60181. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ChartMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ChartMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  60182. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ChartMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ChartMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  60183. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ChartMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  60184. /***/ }),
  60185. /***/ "d9ca":
  60186. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  60187. "use strict";
  60188. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/web-map/control/draw/Draw.vue?vue&type=template&id=2e84c483&scoped=true&
  60189. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('sm-card',{directives:[{name:"show",rawName:"v-show",value:(_vm.isShow),expression:"isShow"}],staticClass:"sm-component-draw",attrs:{"icon-class":_vm.iconClass,"icon-position":_vm.position,"header-name":_vm.headerName,"auto-rotate":_vm.autoRotate,"collapsed":_vm.collapsed}},[_c('div',{staticClass:"sm-component-draw__panel",style:([_vm.getBackgroundStyle, _vm.getTextColorStyle])},_vm._l((_vm.modes),function(item){return _c('span',{key:item.icon,class:['sm-component-draw__draw-item', {'sm-component-draw__draw-active': _vm.activeMode && _vm.activeMode === item.value}],style:({'--icon-color--hover': _vm.colorGroupsData[0]}),attrs:{"title":item.title},on:{"click":function($event){return _vm.updateMode(item.value)}}},[_c('i',{class:("sm-components-icons-" + (item.icon))})])}),0)])}
  60190. var staticRenderFns = []
  60191. // CONCATENATED MODULE: ./src/mapboxgl/web-map/control/draw/Draw.vue?vue&type=template&id=2e84c483&scoped=true&
  60192. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  60193. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  60194. /***/ }),
  60195. /***/ "dafd":
  60196. /***/ (function(module, exports) {
  60197. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhYAAAD+CAYAAABmz0wVAAAABGdBTUEAALGPC/xhBQAACzdJREFUeAHt3VFu2jAcwGEHcZTugRtUPdZ6jl2r6g3yQO+S5Q9TMRSLJpbWOPnyFIjdOl+Y+ht0WZeO/e/U0tal9/R0eGtpydZKgAABAgRmCXz0L2lIz7Pm/tCk3Q993/nfNoAD2kaAAAECBNYs0GBUxOVoLyxi1eIiFGwECBAgsFaBRqMiLkebYRErFxehYCNAgACBtQk0HBVxKdoNi1i9uAgFGwECBAisRaDxqIjL0HZYxBmIi1CwESBAgEDrAiuIirgE+9vr0KX05/a5xT8exhUe+8Uv0wIJECBAgEBRIH6WNbiNy37Nl/0lLOLg8Osw9oWNAAECBAgQIFAW6I79dQ6Nt4Ro/6OQ8vk6QoAAAQIECPwvgX/3mdql2LERIECAAAECBOYKZDev3J3uYiku5lKaR4AAAQIEti2QRUVAnD8KiVtki4ttvzCcPQECBAgQmCNw899sXH7HQlzM4TSHAAECBAgQyAQuYRFP3lRHNs4uAQIECBAgQOChwHVYPBxuAAECBAgQIECgLCAsyjaOECBAgAABAhMFhMVEMMMJECBAgACBsoCwKNs4QoAAAQIECEwUEBYTwQwnQIAAAQIEygLComzjCAECBAgQIDBRQFhMBDOcAAECBAgQKAsIi7KNIwQIECBAgMBEAWExEcxwAgQIECBAoCwgLMo2jhAgQIAAAQITBYTFRDDDCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKbEOiO/bCJE3WSBAgQIECAQJXAvWbYVX1FkwkQIECAAAECmYCwyDDsEiBAgAABAnUCwqLOz2wCBAgQIEAgExAWGYZdAgQIECBAoE5AWNT5mU2AAAECBAhkAsIiw7BLgAABAgQI1AkIizo/swkQIECAAIFMQFhkGHYJECBAgACBOgFhUednNgECBAgQIJAJCIsMwy4BAgQIECBQJyAs6vzMJkCAAAECBDIBYZFh2CVAgAABAgTqBK7D4qN/qftyZhMgQIAAAQJbFriERUTFkJ63jOHcCRAgQIAAgYkCN29KnMNCVExUNJwAAQIECBA4CcSbEllc7E4PvFPh1UGAAAECBAjMFcjiYu/jj7mK5hEgQIAAAQKfAue4SPvPJ7Kd7tgP2UO7BAgQIECAAIHHAmNcfAmLsSheH89c2Iguvaenw9vCVmU5BAgQIEDg+wIr+X3Hy78K+f6pL2ukqFjW9bAaAgQIEJgnEH9Bjp9pjW9th4WoaPzlZ/kECBAgcCWwgrhoNyxExdVr0QMCBAgQWIlA43HRZliIipX86XEaBAgQIHBXoOG4aC8sRMXd16AnCRAgQGBlAo3GxV/c4HmOBfV/nAAAAABJRU5ErkJggg=="
  60198. /***/ }),
  60199. /***/ "db4f":
  60200. /***/ (function(module, exports, __webpack_require__) {
  60201. "use strict";
  60202. var _interopRequireDefault = __webpack_require__("8e6d");
  60203. Object.defineProperty(exports, "__esModule", {
  60204. value: true
  60205. });
  60206. exports.default = void 0;
  60207. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  60208. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  60209. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  60210. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  60211. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  60212. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  60213. /**
  60214. * @class IdentifyViewModel
  60215. * @description 点选 viewModel.
  60216. * @param {Object} map - map 对象。
  60217. * @param {Object} [options.layerStyle] - 查询结果图层样式配置。
  60218. * @param {Object} [options.layerStyle.line] - 线图层样式配置。
  60219. * @param {Object} [options.layerStyle.circle] - 点图层样式配置。
  60220. * @param {Object} [options.layerStyle.fill] - 面图层样式配置。
  60221. * @param {Object} [options.layerStyle.stokeLine] - 面图层样式配置。
  60222. * @extends mapboxgl.Evented
  60223. */
  60224. var HIGHLIGHT_COLOR = '#01ffff';
  60225. var defaultPaintTypes = {
  60226. circle: ['circle-radius', 'circle-stroke-width'],
  60227. line: ['line-width'],
  60228. fill: ['line-width']
  60229. };
  60230. var IdentifyViewModel =
  60231. /*#__PURE__*/
  60232. function (_mapboxgl$Evented) {
  60233. (0, _inherits2.default)(IdentifyViewModel, _mapboxgl$Evented);
  60234. function IdentifyViewModel(map, options) {
  60235. var _this;
  60236. (0, _classCallCheck2.default)(this, IdentifyViewModel);
  60237. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(IdentifyViewModel).call(this));
  60238. _this.map = map;
  60239. _this.layers = options.layers || [];
  60240. _this.layerStyle = options.layerStyle || {};
  60241. _this.popup = null;
  60242. return _this;
  60243. }
  60244. /**
  60245. * @function IdentifyViewModel.prototype.addPopup
  60246. * @desc 添加弹窗。
  60247. * @param {Array} coordinates - 弹窗坐标。
  60248. * @param {HTMLElement} popupContainer - 弹窗 DOM 对象。
  60249. */
  60250. (0, _createClass2.default)(IdentifyViewModel, [{
  60251. key: "addPopup",
  60252. value: function addPopup(coordinates, popupContainer) {
  60253. if (popupContainer) {
  60254. popupContainer.style.display = 'block';
  60255. this.popup = new _mapboxGlEnhance.default.Popup({
  60256. maxWidth: 'none',
  60257. className: 'sm-mapboxgl-identify-popup'
  60258. }).setLngLat(coordinates).setDOMContent(popupContainer).addTo(this.map);
  60259. }
  60260. return this.popup;
  60261. }
  60262. /**
  60263. * @function IdentifyViewModel.prototype.addOverlayToMap
  60264. * @desc 添加高亮图层。
  60265. * @param {Object} layer - layer。
  60266. */
  60267. }, {
  60268. key: "addOverlayToMap",
  60269. value: function addOverlayToMap(layer, filter) {
  60270. var mbglStyle = {
  60271. circle: {
  60272. 'circle-color': HIGHLIGHT_COLOR,
  60273. 'circle-opacity': 0.6,
  60274. 'circle-stroke-color': HIGHLIGHT_COLOR,
  60275. 'circle-stroke-opacity': 1
  60276. },
  60277. line: {
  60278. 'line-color': HIGHLIGHT_COLOR,
  60279. 'line-opacity': 1
  60280. },
  60281. fill: {
  60282. 'fill-color': HIGHLIGHT_COLOR,
  60283. 'fill-opacity': 0.6,
  60284. 'fill-outline-color': HIGHLIGHT_COLOR
  60285. },
  60286. symbol: {
  60287. layout: {
  60288. 'icon-size': 5
  60289. }
  60290. }
  60291. };
  60292. var type = layer.type,
  60293. id = layer.id,
  60294. paint = layer.paint; // 如果是面的strokline,处理成面
  60295. if (id.includes('-strokeLine') && type === 'line') {
  60296. type = 'fill';
  60297. paint = {};
  60298. }
  60299. this.layerStyle = this._setDefaultPaintWidth(this.map, type, id, defaultPaintTypes[type], this.layerStyle);
  60300. if (type === 'circle' || type === 'line' || type === 'fill') {
  60301. var layerStyle = this.layerStyle[type];
  60302. var highlightLayer = Object.assign({}, layer, {
  60303. id: id + '-identify-SM-highlighted',
  60304. type: type,
  60305. paint: layerStyle && layerStyle.paint || Object.assign({}, paint, mbglStyle[type]),
  60306. layout: layerStyle && layerStyle.layout || {},
  60307. filter: filter
  60308. });
  60309. this.map.addLayer(highlightLayer);
  60310. }
  60311. if (type === 'fill') {
  60312. var strokeLayerID = id + '-identify-SM-StrokeLine';
  60313. var stokeLineStyle = this.layerStyle.strokeLine || this.layerStyle.stokeLine || {};
  60314. var lineStyle = stokeLineStyle && stokeLineStyle.paint || {
  60315. 'line-width': 3,
  60316. 'line-color': HIGHLIGHT_COLOR,
  60317. 'line-opacity': 1
  60318. };
  60319. var _highlightLayer = Object.assign({}, layer, {
  60320. id: strokeLayerID,
  60321. type: 'line',
  60322. paint: lineStyle,
  60323. filter: filter
  60324. });
  60325. this.map.addLayer(_highlightLayer);
  60326. } // if(type === 'symbol') {
  60327. // let layout = Object.assign({}, layer.layout, {'icon-size': layer.layout['icon-size'] + 2})
  60328. // let highlightLayer = Object.assign({}, layer, {
  60329. // id: layerID + '-highlighted',
  60330. // layout,
  60331. // filter
  60332. // });
  60333. // this.map.addLayer(highlightLayer);
  60334. // }
  60335. }
  60336. /**
  60337. * @function IdentifyViewModel.prototype.removed
  60338. * @desc 清除popup和高亮图层。
  60339. */
  60340. }, {
  60341. key: "removed",
  60342. value: function removed() {
  60343. var layers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.layers;
  60344. // 移除高亮图层
  60345. this.removePopup();
  60346. this.removeOverlayer(layers);
  60347. }
  60348. }, {
  60349. key: "removePopup",
  60350. value: function removePopup() {
  60351. if (this.popup) {
  60352. this.popup.remove() && (this.popup = null);
  60353. }
  60354. }
  60355. }, {
  60356. key: "removeOverlayer",
  60357. value: function removeOverlayer() {
  60358. var _this2 = this;
  60359. var layers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.layers;
  60360. layers && layers.forEach(function (layerId) {
  60361. _this2.map && _this2.map.getLayer(layerId + '-identify-SM-highlighted') && _this2.map.removeLayer(layerId + '-identify-SM-highlighted');
  60362. _this2.map && _this2.map.getLayer(layerId + '-identify-SM-StrokeLine') && _this2.map.removeLayer(layerId + '-identify-SM-StrokeLine');
  60363. });
  60364. }
  60365. }, {
  60366. key: "_setDefaultPaintWidth",
  60367. value: function _setDefaultPaintWidth(map, type, layerId, paintTypes, layerStyle) {
  60368. if (!paintTypes) {
  60369. return;
  60370. }
  60371. paintTypes.forEach(function (paintType) {
  60372. var mapPaintProperty;
  60373. if (type !== 'fill') {
  60374. mapPaintProperty = map.getLayer(layerId) && map.getPaintProperty(layerId, paintType);
  60375. } else {
  60376. type = 'stokeLine';
  60377. }
  60378. layerStyle[type].paint[paintType] = layerStyle[type].paint[paintType] || mapPaintProperty;
  60379. if (layerStyle[type].paint[paintType] === void 0 || layerStyle[type].paint[paintType] === '') {
  60380. layerStyle[type].paint[paintType] = paintType === 'circle-stroke-width' || type === 'stokeLine' ? 2 : 8;
  60381. }
  60382. });
  60383. return layerStyle;
  60384. }
  60385. }]);
  60386. return IdentifyViewModel;
  60387. }(_mapboxGlEnhance.default.Evented);
  60388. exports.default = IdentifyViewModel;
  60389. /***/ }),
  60390. /***/ "dbea":
  60391. /***/ (function(module, exports, __webpack_require__) {
  60392. "use strict";
  60393. var _interopRequireDefault = __webpack_require__("8e6d");
  60394. Object.defineProperty(exports, "__esModule", {
  60395. value: true
  60396. });
  60397. exports.default = void 0;
  60398. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  60399. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  60400. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  60401. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  60402. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  60403. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  60404. __webpack_require__("f240");
  60405. __webpack_require__("ca40");
  60406. var DeckglLayerViewModel =
  60407. /*#__PURE__*/
  60408. function (_mapboxgl$Evented) {
  60409. (0, _inherits2.default)(DeckglLayerViewModel, _mapboxgl$Evented);
  60410. function DeckglLayerViewModel(deckglProps) {
  60411. var _this;
  60412. (0, _classCallCheck2.default)(this, DeckglLayerViewModel);
  60413. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(DeckglLayerViewModel).call(this));
  60414. var layerType = deckglProps.layerType,
  60415. options = deckglProps.options,
  60416. layerId = deckglProps.layerId;
  60417. _this.layerType = layerType;
  60418. options.data = options.data || [];
  60419. options.layerId = options.layerId || layerId;
  60420. _this.options = options;
  60421. return _this;
  60422. }
  60423. (0, _createClass2.default)(DeckglLayerViewModel, [{
  60424. key: "setMap",
  60425. value: function setMap(mapInfo) {
  60426. var map = mapInfo.map;
  60427. this.map = map;
  60428. this._init();
  60429. }
  60430. }, {
  60431. key: "setLayerType",
  60432. value: function setLayerType(layerType) {
  60433. this.layerType = layerType;
  60434. this.removed();
  60435. this._init();
  60436. }
  60437. }, {
  60438. key: "setOptions",
  60439. value: function setOptions(options) {
  60440. this.options = options;
  60441. this.removed();
  60442. this._init();
  60443. }
  60444. }, {
  60445. key: "_init",
  60446. value: function _init() {
  60447. if (this.layerType && this.options) {
  60448. this._addDeckglLayer();
  60449. }
  60450. }
  60451. }, {
  60452. key: "_addDeckglLayer",
  60453. value: function _addDeckglLayer() {
  60454. var deckglLayer = new _mapboxGlEnhance.default.supermap.DeckglLayer(this.layerType, this.options);
  60455. this.map.addLayer(deckglLayer);
  60456. }
  60457. }, {
  60458. key: "removed",
  60459. value: function removed() {
  60460. var map = this.map,
  60461. layerId = this.options.layerId;
  60462. if (map && layerId && map.getLayer(layerId)) {
  60463. map.removeLayer(layerId);
  60464. }
  60465. }
  60466. }]);
  60467. return DeckglLayerViewModel;
  60468. }(_mapboxGlEnhance.default.Evented);
  60469. exports.default = DeckglLayerViewModel;
  60470. /***/ }),
  60471. /***/ "dc6c":
  60472. /***/ (function(module, exports, __webpack_require__) {
  60473. "use strict";
  60474. var _interopRequireDefault = __webpack_require__("8e6d");
  60475. Object.defineProperty(exports, "__esModule", {
  60476. value: true
  60477. });
  60478. exports.default = void 0;
  60479. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  60480. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  60481. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  60482. var _TdtSearchViewModel = _interopRequireDefault(__webpack_require__("500a"));
  60483. var _PointsResult = _interopRequireDefault(__webpack_require__("bf3b"));
  60484. var _LinesResult = _interopRequireDefault(__webpack_require__("a55c"));
  60485. var _AreaResult = _interopRequireDefault(__webpack_require__("183a"));
  60486. var _StatisticsResult = _interopRequireDefault(__webpack_require__("86b3"));
  60487. var _NothingResult = _interopRequireDefault(__webpack_require__("b45e"));
  60488. //
  60489. //
  60490. //
  60491. //
  60492. //
  60493. //
  60494. //
  60495. //
  60496. //
  60497. //
  60498. //
  60499. //
  60500. //
  60501. //
  60502. //
  60503. //
  60504. //
  60505. //
  60506. //
  60507. //
  60508. //
  60509. //
  60510. //
  60511. //
  60512. //
  60513. //
  60514. //
  60515. //
  60516. //
  60517. //
  60518. //
  60519. //
  60520. //
  60521. //
  60522. //
  60523. //
  60524. //
  60525. //
  60526. //
  60527. //
  60528. //
  60529. //
  60530. //
  60531. //
  60532. //
  60533. //
  60534. //
  60535. //
  60536. //
  60537. //
  60538. //
  60539. //
  60540. //
  60541. //
  60542. //
  60543. //
  60544. //
  60545. //
  60546. //
  60547. //
  60548. //
  60549. //
  60550. //
  60551. //
  60552. //
  60553. //
  60554. //
  60555. //
  60556. //
  60557. //
  60558. //
  60559. //
  60560. //
  60561. //
  60562. //
  60563. //
  60564. //
  60565. //
  60566. //
  60567. //
  60568. //
  60569. //
  60570. //
  60571. //
  60572. //
  60573. //
  60574. //
  60575. //
  60576. var _default2 = {
  60577. name: 'SmTdtSearch',
  60578. components: {
  60579. PointsResult: _PointsResult.default,
  60580. LinesResult: _LinesResult.default,
  60581. AreaResult: _AreaResult.default,
  60582. StatisticsResult: _StatisticsResult.default,
  60583. NothingResult: _NothingResult.default
  60584. },
  60585. mixins: [_control.default, _mapGetter.default, _theme.default],
  60586. props: {
  60587. data: {
  60588. type: Object,
  60589. default: function _default() {
  60590. return {
  60591. searchUrl: 'https://api.tianditu.gov.cn/search',
  60592. tk: ''
  60593. };
  60594. }
  60595. },
  60596. mode: {
  60597. type: String,
  60598. default: 'control',
  60599. validator: function validator(mode) {
  60600. return ['control', 'toolBar'].includes(mode);
  60601. }
  60602. },
  60603. resultRender: {
  60604. type: Function
  60605. },
  60606. collapsed: {
  60607. // 是否折叠组件
  60608. type: Boolean,
  60609. default: false
  60610. }
  60611. },
  60612. data: function data() {
  60613. return {
  60614. searchKey: null,
  60615. searchResult: [],
  60616. prefixType: 'search',
  60617. isHover: false,
  60618. showSearch: true,
  60619. showIcon: false,
  60620. isInputing: false,
  60621. isSuggestion: false,
  60622. hoverIndex: undefined,
  60623. componentId: null,
  60624. componentProps: {},
  60625. componentListeners: {},
  60626. openPurePoiSearch: false
  60627. };
  60628. },
  60629. computed: {
  60630. resultSuggestions: function resultSuggestions() {
  60631. if (!this.isSuggestion) {
  60632. return false;
  60633. }
  60634. return this.searchResult.length > 0;
  60635. },
  60636. showAddress: function showAddress() {
  60637. return function (name, address) {
  60638. return name && address && name.length < 23 && name.length + address.length < 23;
  60639. };
  60640. }
  60641. },
  60642. watch: {
  60643. textColorsData: {
  60644. handler: function handler() {
  60645. this.changeSearchInputStyle();
  60646. var results = this.$el.querySelectorAll('.sm-component-search__result li');
  60647. var _iteratorNormalCompletion = true;
  60648. var _didIteratorError = false;
  60649. var _iteratorError = undefined;
  60650. try {
  60651. for (var _iterator = results[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  60652. var result = _step.value;
  60653. result.style.color = this.getTextColor;
  60654. }
  60655. } catch (err) {
  60656. _didIteratorError = true;
  60657. _iteratorError = err;
  60658. } finally {
  60659. try {
  60660. if (!_iteratorNormalCompletion && _iterator.return != null) {
  60661. _iterator.return();
  60662. }
  60663. } finally {
  60664. if (_didIteratorError) {
  60665. throw _iteratorError;
  60666. }
  60667. }
  60668. }
  60669. }
  60670. },
  60671. data: function data(newVal, oldVal) {
  60672. this.viewModel && this.viewModel.setData(this.data);
  60673. }
  60674. },
  60675. created: function created() {
  60676. var _this = this;
  60677. this.showSearch = !this.collapsed;
  60678. this.showIcon = this.collapsed;
  60679. this.viewModel = new _TdtSearchViewModel.default(this.$props);
  60680. this.viewModel.on('get-transit-data-succeeded', function (_ref) {
  60681. var data = _ref.data;
  60682. _this.$set(_this.componentProps, 'busData', Object.assign({}, data));
  60683. });
  60684. this.viewModel.on('search-selected-info', this.searchSelectedInfo);
  60685. },
  60686. mounted: function mounted() {
  60687. this.changeSearchInputStyle();
  60688. },
  60689. removed: function removed() {
  60690. this.clearResult(true);
  60691. },
  60692. beforeDestroy: function beforeDestroy() {
  60693. this.$message.destroy();
  60694. this.marker && this.marker.remove() && (this.marker = null);
  60695. this.$options.removed.call(this);
  60696. },
  60697. methods: {
  60698. changeSearchInputStyle: function changeSearchInputStyle() {
  60699. var serachInput = this.$el.querySelector('.ant-input');
  60700. serachInput.style.color = this.getTextColor;
  60701. },
  60702. changeChosenResultStyle: function changeChosenResultStyle(e) {
  60703. var target = e.target;
  60704. target.style.color = this.getColorStyle(0).color;
  60705. },
  60706. resetChosenResultStyle: function resetChosenResultStyle(e) {
  60707. var target = e.target;
  60708. target.style.color = this.getTextColor;
  60709. },
  60710. search: function search(params) {
  60711. var _this2 = this;
  60712. this.clearResult();
  60713. var mapNotLoaded = this.mapNotLoadedTip();
  60714. if (mapNotLoaded) return;
  60715. if (this.searchKey) {
  60716. this.prefixType = 'loading';
  60717. this.viewModel.search(this.searchKey, params).then(function (res) {
  60718. if (res && res.suggests) {
  60719. _this2.searchSucceeded(res.suggests);
  60720. return;
  60721. }
  60722. _this2.searchFailed();
  60723. }).catch(function (error) {
  60724. error && _this2.searchFailed(error);
  60725. });
  60726. } else {
  60727. this.$message.warning(this.$t('search.noKey'));
  60728. }
  60729. },
  60730. searchInput: function searchInput(e) {
  60731. if (!this.isInputing) {
  60732. if (this.searchKey) {
  60733. this.isSuggestion = true;
  60734. this.search(false);
  60735. } else {
  60736. this.inputValueCleared(false);
  60737. }
  60738. }
  60739. },
  60740. searchButtonClicked: function searchButtonClicked() {
  60741. if (!this.searchKey) {
  60742. this.$message.warning(this.$t('search.noKey'));
  60743. return;
  60744. }
  60745. this.getResultDetail(this.searchKey);
  60746. },
  60747. /**
  60748. * 清除搜索结果。
  60749. */
  60750. clearResult: function clearResult(isClear) {
  60751. this.$message.destroy();
  60752. isClear && (this.searchKey = null);
  60753. this.searchResult = [];
  60754. this.prefixType = 'search';
  60755. this.hoverIndex = undefined;
  60756. this.componentId = null;
  60757. this.componentProps = {};
  60758. this.componentListeners = {};
  60759. },
  60760. inputValueCleared: function inputValueCleared() {
  60761. var emitEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
  60762. this.clearResult(true);
  60763. this.viewModel && this.viewModel.removed();
  60764. emitEvent && this.$emit('clear-search-result');
  60765. },
  60766. searchResultListClicked: function searchResultListClicked(searchKey) {
  60767. this.getResultDetail(searchKey);
  60768. },
  60769. getResultDetail: function getResultDetail(searchKey, paramsData, openPurePoiSearch) {
  60770. var _this3 = this;
  60771. this.isSuggestion = false;
  60772. var params = paramsData || {
  60773. queryType: '1',
  60774. queryTerminal: 10000
  60775. };
  60776. if (!params.mapBound) {
  60777. params.mapBound = this.viewModel._toBBoxString();
  60778. }
  60779. var searchKeyWord = searchKey || this.searchKey;
  60780. searchKey && (this.searchKey = searchKey);
  60781. this.changeOpenPurePoiSearch(openPurePoiSearch);
  60782. this.viewModel.getFeatureInfo(searchKey || this.searchKey, params).then(function (res) {
  60783. if (!res) return;
  60784. var type = res.type,
  60785. result = res.result;
  60786. var componentProps = {
  60787. data: result.data,
  60788. prompt: result.prompt,
  60789. keyWord: searchKeyWord,
  60790. count: result.count,
  60791. mapBound: params.mapBound
  60792. };
  60793. var componentListeners = {};
  60794. switch (type) {
  60795. case 'Point':
  60796. _this3.componentId = 'PointsResult';
  60797. componentProps.openPurePoiSearch = _this3.openPurePoiSearch;
  60798. componentProps.specifyAdminSearch = params && !!params.specifyAdminCode;
  60799. componentListeners['show-point-popup'] = _this3.generatePopup;
  60800. componentListeners['set-highlight-icon'] = _this3.setHighlightIcon;
  60801. componentListeners['change-pagination'] = _this3.getResultDetail;
  60802. break;
  60803. case 'LineString':
  60804. _this3.componentId = 'LinesResult';
  60805. componentListeners['show-point-popup'] = _this3.generatePopup;
  60806. componentListeners['search-points-result'] = _this3.getResultDetail;
  60807. componentListeners['show-line-detail'] = _this3.showLineDetail;
  60808. componentListeners['reset-line-source'] = _this3.resetSource;
  60809. break;
  60810. case 'Polygon':
  60811. _this3.componentId = 'AreaResult';
  60812. break;
  60813. case 'Statistics':
  60814. _this3.componentId = 'StatisticsResult';
  60815. componentProps.data = result.data.allAdmins;
  60816. componentProps.priorityCitys = result.data.priorityCitys;
  60817. componentListeners['search-points-result'] = _this3.getResultDetail;
  60818. break;
  60819. default:
  60820. _this3.componentId = 'NothingResult';
  60821. componentListeners['search-points-result'] = _this3.getResultDetail;
  60822. break;
  60823. }
  60824. _this3.componentProps = componentProps;
  60825. _this3.componentListeners = componentListeners;
  60826. });
  60827. },
  60828. searchSucceeded: function searchSucceeded(result) {
  60829. this.$message.destroy();
  60830. this.searchResult = result;
  60831. this.prefixType = 'search';
  60832. this.searchResult.length < 1 && this.$message.warning(this.$t('search.noResult'));
  60833. this.$emit('search-succeeded', {
  60834. searchResult: this.searchResult
  60835. });
  60836. },
  60837. searchFailed: function searchFailed(e) {
  60838. this.clearResult();
  60839. this.prefixType = 'search';
  60840. this.$message.warning(this.$t('search.noResult'));
  60841. this.$emit('search-failed', e);
  60842. },
  60843. searchSelectedInfo: function searchSelectedInfo(_ref2) {
  60844. var data = _ref2.data;
  60845. this.prefixType = 'search';
  60846. this.resultRender && this.resultRender(data);
  60847. this.$emit('search-selected-info', data);
  60848. },
  60849. isNumber: function isNumber(num) {
  60850. return /\d/.test(num);
  60851. },
  60852. downChoose: function downChoose() {
  60853. var len = this.searchResult.length;
  60854. var hoverIndex = this.hoverIndex;
  60855. if (this.isNumber(hoverIndex) && hoverIndex < len - 1) {
  60856. this.hoverIndex = hoverIndex + 1;
  60857. } else {
  60858. this.hoverIndex = 0;
  60859. }
  60860. var selectedItem = this.searchResult[this.hoverIndex];
  60861. this.searchKey = selectedItem.name;
  60862. },
  60863. upChoose: function upChoose() {
  60864. var len = this.searchResult.length;
  60865. var hoverIndex = this.hoverIndex;
  60866. if (this.isNumber(hoverIndex) && hoverIndex > 0) {
  60867. this.hoverIndex = hoverIndex - 1;
  60868. } else {
  60869. this.hoverIndex = Math.max(len - 1, 0);
  60870. }
  60871. var selectedItem = this.searchResult[this.hoverIndex];
  60872. this.searchKey = selectedItem.name;
  60873. },
  60874. changeResultHover: function changeResultHover(e) {
  60875. var keyCode = e.keyCode;
  60876. if (!this.isSuggestion) return;
  60877. if (keyCode === 38) {
  60878. this.upChoose();
  60879. } else if (keyCode === 40) {
  60880. this.downChoose();
  60881. }
  60882. },
  60883. generatePopup: function generatePopup(_ref3) {
  60884. var coordinates = _ref3.coordinates,
  60885. data = _ref3.data,
  60886. from = _ref3.from;
  60887. this.viewModel && this.viewModel.showPointPopup(coordinates, data, from);
  60888. },
  60889. setHighlightIcon: function setHighlightIcon(hotPointID) {
  60890. this.viewModel && this.viewModel.setHighlightIcon(hotPointID);
  60891. },
  60892. showLineDetail: function showLineDetail(uuid) {
  60893. this.viewModel && this.viewModel.showLineDetail(uuid);
  60894. },
  60895. resetSource: function resetSource() {
  60896. this.viewModel && this.viewModel.reset();
  60897. },
  60898. changeOpenPurePoiSearch: function changeOpenPurePoiSearch(openPurePoiSearch) {
  60899. this.openPurePoiSearch = openPurePoiSearch;
  60900. }
  60901. }
  60902. };
  60903. exports.default = _default2;
  60904. /***/ }),
  60905. /***/ "dc9a":
  60906. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  60907. "use strict";
  60908. __webpack_require__.r(__webpack_exports__);
  60909. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ClusterLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("9baa");
  60910. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ClusterLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ClusterLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  60911. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ClusterLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ClusterLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  60912. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ClusterLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  60913. /***/ }),
  60914. /***/ "dd21":
  60915. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  60916. "use strict";
  60917. __webpack_require__.r(__webpack_exports__);
  60918. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_EchartsLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3f4f");
  60919. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_EchartsLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_EchartsLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  60920. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_EchartsLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_EchartsLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  60921. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_EchartsLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  60922. /***/ }),
  60923. /***/ "dd27":
  60924. /***/ (function(module, exports, __webpack_require__) {
  60925. "use strict";
  60926. var _interopRequireDefault = __webpack_require__("8e6d");
  60927. Object.defineProperty(exports, "__esModule", {
  60928. value: true
  60929. });
  60930. exports.default = void 0;
  60931. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  60932. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  60933. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  60934. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  60935. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  60936. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  60937. var _echarts = _interopRequireDefault(__webpack_require__("f840"));
  60938. var _EchartsLayer = _interopRequireDefault(__webpack_require__("e76e"));
  60939. /**
  60940. * @class EchatsLayerViewModel
  60941. * @param {mapboxgl.map} map - mapboxgl map 对象。
  60942. * @param {String} options - EchartsLayer options。
  60943. */
  60944. var EchatsLayerViewModel =
  60945. /*#__PURE__*/
  60946. function (_mapboxgl$Evented) {
  60947. (0, _inherits2.default)(EchatsLayerViewModel, _mapboxgl$Evented);
  60948. function EchatsLayerViewModel(options) {
  60949. var _this;
  60950. (0, _classCallCheck2.default)(this, EchatsLayerViewModel);
  60951. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(EchatsLayerViewModel).call(this));
  60952. if (!options) {
  60953. throw new Error('echarts options is requierd');
  60954. }
  60955. _this.options = options;
  60956. return _this;
  60957. }
  60958. (0, _createClass2.default)(EchatsLayerViewModel, [{
  60959. key: "setMap",
  60960. value: function setMap(mapInfo) {
  60961. var map = mapInfo.map;
  60962. if (!map) {
  60963. throw new Error('map is requierd');
  60964. }
  60965. this.map = map;
  60966. this._initializeEchartsLayer();
  60967. }
  60968. }, {
  60969. key: "setOptions",
  60970. value: function setOptions(options) {
  60971. this.options = options;
  60972. this.removed();
  60973. this._initializeEchartsLayer();
  60974. }
  60975. }, {
  60976. key: "_initializeEchartsLayer",
  60977. value: function _initializeEchartsLayer() {
  60978. window.echarts = _echarts.default;
  60979. var echartslayer = new _EchartsLayer.default(this.map);
  60980. echartslayer.chart.setOption(this.options);
  60981. /**
  60982. * @event echartslayeraddsucceeded
  60983. * @property {Object} layer - Echarts Layer.
  60984. */
  60985. this.fire('echartslayeraddsucceeded', {
  60986. layer: echartslayer
  60987. });
  60988. this.echartslayer = echartslayer;
  60989. }
  60990. }, {
  60991. key: "removed",
  60992. value: function removed() {
  60993. this.echartslayer && this.echartslayer.remove();
  60994. }
  60995. }]);
  60996. return EchatsLayerViewModel;
  60997. }(_mapboxGlEnhance.default.Evented);
  60998. exports.default = EchatsLayerViewModel;
  60999. /***/ }),
  61000. /***/ "dea1":
  61001. /***/ (function(module, exports) {
  61002. module.exports = "data:image/png;base64,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"
  61003. /***/ }),
  61004. /***/ "ded2":
  61005. /***/ (function(module, exports, __webpack_require__) {
  61006. var map = {
  61007. "./border1.png": "dfc8",
  61008. "./border10.png": "a00e",
  61009. "./border11.png": "dafd",
  61010. "./border12.png": "c0cb",
  61011. "./border13.png": "f11d",
  61012. "./border2.png": "bb52",
  61013. "./border3.png": "7de9",
  61014. "./border4.png": "b557",
  61015. "./border5.png": "29e0",
  61016. "./border6.png": "05d2",
  61017. "./border7.png": "5106",
  61018. "./border8.png": "f1a1",
  61019. "./border9.png": "df8c"
  61020. };
  61021. function webpackContext(req) {
  61022. var id = webpackContextResolve(req);
  61023. return __webpack_require__(id);
  61024. }
  61025. function webpackContextResolve(req) {
  61026. if(!__webpack_require__.o(map, req)) {
  61027. var e = new Error("Cannot find module '" + req + "'");
  61028. e.code = 'MODULE_NOT_FOUND';
  61029. throw e;
  61030. }
  61031. return map[req];
  61032. }
  61033. webpackContext.keys = function webpackContextKeys() {
  61034. return Object.keys(map);
  61035. };
  61036. webpackContext.resolve = webpackContextResolve;
  61037. module.exports = webpackContext;
  61038. webpackContext.id = "ded2";
  61039. /***/ }),
  61040. /***/ "df08":
  61041. /***/ (function(module, exports, __webpack_require__) {
  61042. "use strict";
  61043. var _interopRequireDefault = __webpack_require__("8e6d");
  61044. Object.defineProperty(exports, "__esModule", {
  61045. value: true
  61046. });
  61047. exports.default = void 0;
  61048. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  61049. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  61050. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  61051. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  61052. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  61053. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  61054. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  61055. __webpack_require__("f240");
  61056. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  61057. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  61058. var MapvLayerViewModel =
  61059. /*#__PURE__*/
  61060. function (_mapboxgl$Evented) {
  61061. (0, _inherits2.default)(MapvLayerViewModel, _mapboxgl$Evented);
  61062. function MapvLayerViewModel(mapvLayerProps) {
  61063. var _this;
  61064. (0, _classCallCheck2.default)(this, MapvLayerViewModel);
  61065. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(MapvLayerViewModel).call(this));
  61066. var data = mapvLayerProps.data,
  61067. options = mapvLayerProps.options,
  61068. layerId = mapvLayerProps.layerId;
  61069. _this.data = data;
  61070. _this.options = options.layerID ? options : _objectSpread({}, options, {
  61071. layerID: layerId
  61072. });
  61073. return _this;
  61074. }
  61075. (0, _createClass2.default)(MapvLayerViewModel, [{
  61076. key: "setMap",
  61077. value: function setMap(mapInfo) {
  61078. var map = mapInfo.map;
  61079. this.map = map;
  61080. this._init();
  61081. }
  61082. }, {
  61083. key: "setData",
  61084. value: function setData(data) {
  61085. this.data = data;
  61086. this.removed();
  61087. this._init();
  61088. }
  61089. }, {
  61090. key: "setOptions",
  61091. value: function setOptions(options) {
  61092. this.options = options;
  61093. this.removed();
  61094. this._init();
  61095. }
  61096. }, {
  61097. key: "_init",
  61098. value: function _init() {
  61099. if (this.data && this.options) {
  61100. this._addMapvLayer();
  61101. }
  61102. }
  61103. }, {
  61104. key: "_addMapvLayer",
  61105. value: function _addMapvLayer() {
  61106. var mapVLayer = new _mapboxGlEnhance.default.supermap.MapvLayer('', this.data, Object.assign({}, this.options));
  61107. this.map.addLayer(mapVLayer);
  61108. }
  61109. }, {
  61110. key: "removed",
  61111. value: function removed() {
  61112. var map = this.map,
  61113. options = this.options;
  61114. var layerId = options.layerID;
  61115. if (map && layerId && map.getLayer(layerId)) {
  61116. map.removeLayer(layerId);
  61117. }
  61118. }
  61119. }]);
  61120. return MapvLayerViewModel;
  61121. }(_mapboxGlEnhance.default.Evented);
  61122. exports.default = MapvLayerViewModel;
  61123. /***/ }),
  61124. /***/ "df2e":
  61125. /***/ (function(module, exports) {
  61126. module.exports = {
  61127. isArray: function(value) {
  61128. if (Array.isArray) {
  61129. return Array.isArray(value);
  61130. }
  61131. // fallback for older browsers like IE 8
  61132. return Object.prototype.toString.call( value ) === '[object Array]';
  61133. }
  61134. };
  61135. /***/ }),
  61136. /***/ "df8c":
  61137. /***/ (function(module, exports) {
  61138. module.exports = "data:image/png;base64,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gAABAgQEC9cAAQIECBAg0JqAYNEapYoIECBAgAABwcI1QIAAAQIECLQmIFi0RqkiAgQIECBAQLBwDRAgQIAAAQKtCQgWrVGqiAABAgQIEBAsXAMECBAgQIBAawKCRWuUKiJAgAABAgQEC9cAAQIECBAg0JqAYNEapYoIECBAgAABwcI1QIAAAQIECLQmIFi0RqkiAgQIECBAQLBwDRAgQIAAAQKtCQgWrVGqiAABAgQIEBAsXAMECBAgQIBAawKCRWuUKiJAgAABAgQEC9cAAQIECBAg0JqAYNEapYoIECBAgAABwcI1QIAAAQIECLQmIFi0RqkiAgQIECBAQLBwDRAgQIAAAQKtCQgWrVGqiAABAgQIEBAsXAMECBAgQIBAawKCRWuUKiJAgAABAgQEC9cAAQIECBAg0JqAYNEapYoIECBAgAABwcI1QIAAAQIECLQmIFi0RqkiAgQIECBAQLBwDRAgQIAAAQKtCQgWrVGqiAABAgQIEBAsXAMECBAgQIBAawKCRWuUKiJAgAABAgQEC9cAAQIECBAg0JqAYNEapYoIECBAgAABwcI1QIAAAQIECLQmIFi0RqkiAgQIECBAQLBwDRAgQIAAAQKtCQgWrVGqiAABAgQIEBAsXAMECBAgQIBAawKCRWuUKiJAgAABAgQEC9cAAQIECBAg0JqAYNEapYoIECBAgAABwcI1QIAAAQIECLQmIFi0RqkiAgQIECBAQLBwDRAgQIAAAQKtCQgWrVGqiAABAgQIEBAsXAMECBAgQIBAawKCRWuUKiJAgAABAgQEC9cAAQIECBAg0JqAYNEapYoIECBAgAABwcI1QIAAAQIECLQmIFi0RqkiAgQIECBAQLBwDRAgQIAAAQKtCQgWrVGqiAABAgQIEBAsXAMECBAgQIBAawKCRWuUKiJAgAABAgQEC9cAAQIECBAg0JqAYNEapYoIECBAgAABwcI1QIAAAQIECLQmIFi0RqkiAgQIECBAQLBwDRAgQIAAAQKtCQgWrVGqiAABAgQIEBAsXAMECBAgQIBAawKCRWuUKiJAgAABAgQEC9cAAQIECBAg0JqAYNEapYoIECBAgAABwcI1QIAAAQIECLQmIFi0RqkiAgQIECBAQLBwDRAgQIAAAQKtCQgWrVGqiAABAgQIEBAsXAMECBAgQIBAawKCRWuUKiJAgAABAgQEC9cA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"
  61139. /***/ }),
  61140. /***/ "dfae":
  61141. /***/ (function(module, exports, __webpack_require__) {
  61142. !function(e,t){ true?module.exports=t(__webpack_require__("be3f")):undefined}(this,function(e){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=3)}([function(t,n){t.exports=e},function(e,t,n){"use strict";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=function(e){return e&&e.__esModule?e:{default:e}}(r),s=window.videojs||o.default;"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(e,t){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var n=Object(e),i=1;i<arguments.length;i++){var r=arguments[i];if(null!=r)for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(n[o]=r[o])}return n},writable:!0,configurable:!0});var a=["loadeddata","canplay","canplaythrough","play","pause","waiting","playing","ended","error"];t.default={name:"video-player",props:{start:{type:Number,default:0},crossOrigin:{type:String,default:""},playsinline:{type:Boolean,default:!1},customEventName:{type:String,default:"statechanged"},options:{type:Object,required:!0},events:{type:Array,default:function(){return[]}},globalOptions:{type:Object,default:function(){return{controls:!0,controlBar:{remainingTimeDisplay:!1,playToggle:{},progressControl:{},fullscreenToggle:{},volumeMenuButton:{inline:!1,vertical:!0}},techOrder:["html5"],plugins:{}}}},globalEvents:{type:Array,default:function(){return[]}}},data:function(){return{player:null,reseted:!0}},mounted:function(){this.player||this.initialize()},beforeDestroy:function(){this.player&&this.dispose()},methods:{initialize:function(){var e=this,t=Object.assign({},this.globalOptions,this.options);this.playsinline&&(this.$refs.video.setAttribute("playsinline",this.playsinline),this.$refs.video.setAttribute("webkit-playsinline",this.playsinline),this.$refs.video.setAttribute("x5-playsinline",this.playsinline),this.$refs.video.setAttribute("x5-video-player-type","h5"),this.$refs.video.setAttribute("x5-video-player-fullscreen",!1)),""!==this.crossOrigin&&(this.$refs.video.crossOrigin=this.crossOrigin,this.$refs.video.setAttribute("crossOrigin",this.crossOrigin));var n=function(t,n){t&&e.$emit(t,e.player),n&&e.$emit(e.customEventName,i({},t,n))};t.plugins&&delete t.plugins.__ob__;var r=this;this.player=s(this.$refs.video,t,function(){for(var e=this,t=a.concat(r.events).concat(r.globalEvents),i={},o=0;o<t.length;o++)"string"==typeof t[o]&&void 0===i[t[o]]&&function(t){i[t]=null,e.on(t,function(){n(t,!0)})}(t[o]);this.on("timeupdate",function(){n("timeupdate",this.currentTime())}),r.$emit("ready",this)})},dispose:function(e){var t=this;this.player&&this.player.dispose&&("Flash"!==this.player.techName_&&this.player.pause&&this.player.pause(),this.player.dispose(),this.player=null,this.$nextTick(function(){t.reseted=!1,t.$nextTick(function(){t.reseted=!0,t.$nextTick(function(){e&&e()})})}))}},watch:{options:{deep:!0,handler:function(e,t){var n=this;this.dispose(function(){e&&e.sources&&e.sources.length&&n.initialize()})}}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(1),r=n.n(i);for(var o in i)["default","default"].indexOf(o)<0&&function(e){n.d(t,e,function(){return i[e]})}(o);var s=n(5),a=n(4),l=a(r.a,s.a,!1,null,null,null);t.default=l.exports},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.install=t.videoPlayer=t.videojs=void 0;var r=n(0),o=i(r),s=n(2),a=i(s),l=window.videojs||o.default,u=function(e,t){t&&(t.options&&(a.default.props.globalOptions.default=function(){return t.options}),t.events&&(a.default.props.globalEvents.default=function(){return t.events})),e.component(a.default.name,a.default)},d={videojs:l,videoPlayer:a.default,install:u};t.default=d,t.videojs=l,t.videoPlayer=a.default,t.install=u},function(e,t){e.exports=function(e,t,n,i,r,o){var s,a=e=e||{},l=typeof e.default;"object"!==l&&"function"!==l||(s=e,a=e.default);var u="function"==typeof a?a.options:a;t&&(u.render=t.render,u.staticRenderFns=t.staticRenderFns,u._compiled=!0),n&&(u.functional=!0),r&&(u._scopeId=r);var d;if(o?(d=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},u._ssrRegister=d):i&&(d=i),d){var c=u.functional,f=c?u.render:u.beforeCreate;c?(u._injectStyles=d,u.render=function(e,t){return d.call(t),f(e,t)}):u.beforeCreate=f?[].concat(f,d):[d]}return{esModule:s,exports:a,options:u}}},function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.reseted?n("div",{staticClass:"video-player"},[n("video",{ref:"video",staticClass:"video-js"})]):e._e()},r=[],o={render:i,staticRenderFns:r};t.a=o}])});
  61143. /***/ }),
  61144. /***/ "dfc8":
  61145. /***/ (function(module, exports) {
  61146. module.exports = "data:image/png;base64,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artXAgQIECCwWOBzEeFzVy3+pTQkQIAAAQIEahIQLGp6td0rAQIECBDYWUCw2BlY9wQIECBAoCYBwaKmV9u9EiBAgACBnQUEi52BdU+AAAECBGoSECxqerXdKwECBAgQ2FlAsNgZWPcECBAgQKAmAcGiplfbvRIgQIAAgYcEhviPx+YXwWLex1kCBAgQIEBghYBgsQJLUwIECBAgQGBeQLCY93GWAAECBAgQWCEgWKzA0pQAAQIECBCYFxAs5n2cJUCAAAECBFYICBYrsDQlQIAAAQIE5gUEi3kfZwkQIECAAIElAtMHUQWLJVjaECBAgAABAosEBItFTBoRIECAAAECSwQEiyVK2hAgQIAAAQKLBASLRUwaESBAgAABAksEBIslStoQIECAAAEC1wWG48X/HyJYXGdylAABAgQIEPiEgGDxCTSXECBAgAABAtcFBIvrLo4SIECAAAECnxAQLD6B5hICBAgQIEDguoBgcd3FUQIECBAgQOATAoLFJ9BcQoAAAQIE6hJYHheWt6xL0N0SIECAAAECnxAQLD6B5hICBAgQIEDguoBgcd3FUQIECBAgUJ1Av8EdCxYbIOqCAAECBAjUIzAfHebP1qPkTgkQIECAAIENBASLDRB1QYAAAQIE6hbo3v+/EMGi7neCuydAgAABApsKCBabcuqMAAECBAjULSBY1P36u3sCBAgQILCpgGCxKafOCBAgQIBA3QKCRd2vv7snQIAAAQKbCggWm3LqjAABAgQI1C0gWNT9+rt7AgQIECCwqYBgsSmnzggQIECAwBcWWJAaFjT5wkBujQABAgQIENhUQLDYlFNnBAgQIECgbgHBou7X390TIECAAIFNBQSLTTl1RoAAAQIE6hYQLOp+/d09AQIECBDYVECw2JRTZwQIECBAoG4BwaLu19/dEyBAgACBTQUEi005dUaAAAECBOoWECzqfv3dPQECBAgQ2FRAsNiUU2cECBAgQKBuAcGi7tff3RMgQIAAgU0FBItNOXVGgAABAgTqFhAs6n793T0BAgQIENhUQLDYlFNnBAgQIECgVoExUggWtb7+7psAAQIECOwgIFjsgKpLAgQIECBQq4BgUesr774JECBAgMAOAoLFDqi6JECAAAECtQoIFrW+8u6bAAECBAjsICBY7ICqSwIECBAgUIXAlRRx5VAVFG6SAAECBAgQ2EFA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"
  61147. /***/ }),
  61148. /***/ "e0f2":
  61149. /***/ (function(module, exports, __webpack_require__) {
  61150. "use strict";
  61151. Object.defineProperty(exports, "__esModule", {
  61152. value: true
  61153. });
  61154. exports.addListener = addListener;
  61155. exports.removeListener = removeListener;
  61156. var raf = null;
  61157. function requestAnimationFrame(callback) {
  61158. if (!raf) {
  61159. raf = (window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (callback) {
  61160. return setTimeout(callback, 16);
  61161. }).bind(window);
  61162. }
  61163. return raf(callback);
  61164. }
  61165. var caf = null;
  61166. function cancelAnimationFrame(id) {
  61167. if (!caf) {
  61168. caf = (window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function (id) {
  61169. clearTimeout(id);
  61170. }).bind(window);
  61171. }
  61172. caf(id);
  61173. }
  61174. function createStyles(styleText) {
  61175. var style = document.createElement('style');
  61176. style.type = 'text/css';
  61177. if (style.styleSheet) {
  61178. style.styleSheet.cssText = styleText;
  61179. } else {
  61180. style.appendChild(document.createTextNode(styleText));
  61181. }
  61182. (document.querySelector('head') || document.body).appendChild(style);
  61183. return style;
  61184. }
  61185. function createElement(tagName) {
  61186. var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  61187. var elem = document.createElement(tagName);
  61188. Object.keys(props).forEach(function (key) {
  61189. elem[key] = props[key];
  61190. });
  61191. return elem;
  61192. }
  61193. function getComputedStyle(elem, prop, pseudo) {
  61194. // for older versions of Firefox, `getComputedStyle` required
  61195. // the second argument and may return `null` for some elements
  61196. // when `display: none`
  61197. var computedStyle = window.getComputedStyle(elem, pseudo || null) || {
  61198. display: 'none'
  61199. };
  61200. return computedStyle[prop];
  61201. }
  61202. function getRenderInfo(elem) {
  61203. if (!document.documentElement.contains(elem)) {
  61204. return {
  61205. detached: true,
  61206. rendered: false
  61207. };
  61208. }
  61209. var current = elem;
  61210. while (current !== document) {
  61211. if (getComputedStyle(current, 'display') === 'none') {
  61212. return {
  61213. detached: false,
  61214. rendered: false
  61215. };
  61216. }
  61217. current = current.parentNode;
  61218. }
  61219. return {
  61220. detached: false,
  61221. rendered: true
  61222. };
  61223. }
  61224. var css = ".resize-triggers{visibility:hidden;opacity:0}.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%}";
  61225. var total = 0;
  61226. var style = null;
  61227. function addListener(elem, callback) {
  61228. if (!elem.__resize_mutation_handler__) {
  61229. elem.__resize_mutation_handler__ = handleMutation.bind(elem);
  61230. }
  61231. var listeners = elem.__resize_listeners__;
  61232. if (!listeners) {
  61233. elem.__resize_listeners__ = [];
  61234. if (window.ResizeObserver) {
  61235. var offsetWidth = elem.offsetWidth,
  61236. offsetHeight = elem.offsetHeight;
  61237. var ro = new ResizeObserver(function () {
  61238. if (!elem.__resize_observer_triggered__) {
  61239. elem.__resize_observer_triggered__ = true;
  61240. if (elem.offsetWidth === offsetWidth && elem.offsetHeight === offsetHeight) {
  61241. return;
  61242. }
  61243. }
  61244. runCallbacks(elem);
  61245. }); // initially display none won't trigger ResizeObserver callback
  61246. var _getRenderInfo = getRenderInfo(elem),
  61247. detached = _getRenderInfo.detached,
  61248. rendered = _getRenderInfo.rendered;
  61249. elem.__resize_observer_triggered__ = detached === false && rendered === false;
  61250. elem.__resize_observer__ = ro;
  61251. ro.observe(elem);
  61252. } else if (elem.attachEvent && elem.addEventListener) {
  61253. // targeting IE9/10
  61254. elem.__resize_legacy_resize_handler__ = function handleLegacyResize() {
  61255. runCallbacks(elem);
  61256. };
  61257. elem.attachEvent('onresize', elem.__resize_legacy_resize_handler__);
  61258. document.addEventListener('DOMSubtreeModified', elem.__resize_mutation_handler__);
  61259. } else {
  61260. if (!total) {
  61261. style = createStyles(css);
  61262. }
  61263. initTriggers(elem);
  61264. elem.__resize_rendered__ = getRenderInfo(elem).rendered;
  61265. if (window.MutationObserver) {
  61266. var mo = new MutationObserver(elem.__resize_mutation_handler__);
  61267. mo.observe(document, {
  61268. attributes: true,
  61269. childList: true,
  61270. characterData: true,
  61271. subtree: true
  61272. });
  61273. elem.__resize_mutation_observer__ = mo;
  61274. }
  61275. }
  61276. }
  61277. elem.__resize_listeners__.push(callback);
  61278. total++;
  61279. }
  61280. function removeListener(elem, callback) {
  61281. var listeners = elem.__resize_listeners__;
  61282. if (!listeners) {
  61283. return;
  61284. }
  61285. if (callback) {
  61286. listeners.splice(listeners.indexOf(callback), 1);
  61287. } // no listeners exist, or removing all listeners
  61288. if (!listeners.length || !callback) {
  61289. // targeting IE9/10
  61290. if (elem.detachEvent && elem.removeEventListener) {
  61291. elem.detachEvent('onresize', elem.__resize_legacy_resize_handler__);
  61292. document.removeEventListener('DOMSubtreeModified', elem.__resize_mutation_handler__);
  61293. return;
  61294. }
  61295. if (elem.__resize_observer__) {
  61296. elem.__resize_observer__.unobserve(elem);
  61297. elem.__resize_observer__.disconnect();
  61298. elem.__resize_observer__ = null;
  61299. } else {
  61300. if (elem.__resize_mutation_observer__) {
  61301. elem.__resize_mutation_observer__.disconnect();
  61302. elem.__resize_mutation_observer__ = null;
  61303. }
  61304. elem.removeEventListener('scroll', handleScroll);
  61305. elem.removeChild(elem.__resize_triggers__.triggers);
  61306. elem.__resize_triggers__ = null;
  61307. }
  61308. elem.__resize_listeners__ = null;
  61309. }
  61310. if (! --total && style) {
  61311. style.parentNode.removeChild(style);
  61312. }
  61313. }
  61314. function getUpdatedSize(elem) {
  61315. var _elem$__resize_last__ = elem.__resize_last__,
  61316. width = _elem$__resize_last__.width,
  61317. height = _elem$__resize_last__.height;
  61318. var offsetWidth = elem.offsetWidth,
  61319. offsetHeight = elem.offsetHeight;
  61320. if (offsetWidth !== width || offsetHeight !== height) {
  61321. return {
  61322. width: offsetWidth,
  61323. height: offsetHeight
  61324. };
  61325. }
  61326. return null;
  61327. }
  61328. function handleMutation() {
  61329. // `this` denotes the scrolling element
  61330. var _getRenderInfo2 = getRenderInfo(this),
  61331. rendered = _getRenderInfo2.rendered,
  61332. detached = _getRenderInfo2.detached;
  61333. if (rendered !== this.__resize_rendered__) {
  61334. if (!detached && this.__resize_triggers__) {
  61335. resetTriggers(this);
  61336. this.addEventListener('scroll', handleScroll, true);
  61337. }
  61338. this.__resize_rendered__ = rendered;
  61339. runCallbacks(this);
  61340. }
  61341. }
  61342. function handleScroll() {
  61343. var _this = this;
  61344. // `this` denotes the scrolling element
  61345. resetTriggers(this);
  61346. if (this.__resize_raf__) {
  61347. cancelAnimationFrame(this.__resize_raf__);
  61348. }
  61349. this.__resize_raf__ = requestAnimationFrame(function () {
  61350. var updated = getUpdatedSize(_this);
  61351. if (updated) {
  61352. _this.__resize_last__ = updated;
  61353. runCallbacks(_this);
  61354. }
  61355. });
  61356. }
  61357. function runCallbacks(elem) {
  61358. if (!elem || !elem.__resize_listeners__) {
  61359. return;
  61360. }
  61361. elem.__resize_listeners__.forEach(function (callback) {
  61362. callback.call(elem);
  61363. });
  61364. }
  61365. function initTriggers(elem) {
  61366. var position = getComputedStyle(elem, 'position');
  61367. if (!position || position === 'static') {
  61368. elem.style.position = 'relative';
  61369. }
  61370. elem.__resize_old_position__ = position;
  61371. elem.__resize_last__ = {};
  61372. var triggers = createElement('div', {
  61373. className: 'resize-triggers'
  61374. });
  61375. var expand = createElement('div', {
  61376. className: 'resize-expand-trigger'
  61377. });
  61378. var expandChild = createElement('div');
  61379. var contract = createElement('div', {
  61380. className: 'resize-contract-trigger'
  61381. });
  61382. expand.appendChild(expandChild);
  61383. triggers.appendChild(expand);
  61384. triggers.appendChild(contract);
  61385. elem.appendChild(triggers);
  61386. elem.__resize_triggers__ = {
  61387. triggers: triggers,
  61388. expand: expand,
  61389. expandChild: expandChild,
  61390. contract: contract
  61391. };
  61392. resetTriggers(elem);
  61393. elem.addEventListener('scroll', handleScroll, true);
  61394. elem.__resize_last__ = {
  61395. width: elem.offsetWidth,
  61396. height: elem.offsetHeight
  61397. };
  61398. }
  61399. function resetTriggers(elem) {
  61400. var _elem$__resize_trigge = elem.__resize_triggers__,
  61401. expand = _elem$__resize_trigge.expand,
  61402. expandChild = _elem$__resize_trigge.expandChild,
  61403. contract = _elem$__resize_trigge.contract; // batch read
  61404. var csw = contract.scrollWidth,
  61405. csh = contract.scrollHeight;
  61406. var eow = expand.offsetWidth,
  61407. eoh = expand.offsetHeight,
  61408. esw = expand.scrollWidth,
  61409. esh = expand.scrollHeight; // batch write
  61410. contract.scrollLeft = csw;
  61411. contract.scrollTop = csh;
  61412. expandChild.style.width = eow + 1 + 'px';
  61413. expandChild.style.height = eoh + 1 + 'px';
  61414. expand.scrollLeft = esw;
  61415. expand.scrollTop = esh;
  61416. }
  61417. /***/ }),
  61418. /***/ "e1d3":
  61419. /***/ (function(module, exports) {
  61420. function _setPrototypeOf(o, p) {
  61421. module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
  61422. o.__proto__ = p;
  61423. return o;
  61424. };
  61425. return _setPrototypeOf(o, p);
  61426. }
  61427. module.exports = _setPrototypeOf;
  61428. /***/ }),
  61429. /***/ "e21b":
  61430. /***/ (function(module, exports, __webpack_require__) {
  61431. "use strict";
  61432. var _interopRequireDefault = __webpack_require__("8e6d");
  61433. Object.defineProperty(exports, "__esModule", {
  61434. value: true
  61435. });
  61436. exports.default = void 0;
  61437. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  61438. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  61439. var _GeojsonLayerViewModel = _interopRequireDefault(__webpack_require__("d1b8"));
  61440. var _default = {
  61441. name: 'SmGeojsonLayer',
  61442. mixins: [_mapGetter.default, _layer.default],
  61443. props: {
  61444. layerStyle: {
  61445. type: Object
  61446. },
  61447. data: {
  61448. type: [Object, String]
  61449. }
  61450. },
  61451. watch: {
  61452. layerStyle: {
  61453. handler: function handler() {
  61454. this.viewModel && this.viewModel.setLayerStyle(this.layerStyle);
  61455. },
  61456. deep: true
  61457. },
  61458. data: {
  61459. handler: function handler() {
  61460. this.viewModel && this.viewModel.setData(this.data);
  61461. },
  61462. deep: true
  61463. }
  61464. },
  61465. created: function created() {
  61466. this.viewModel = new _GeojsonLayerViewModel.default(this.$props);
  61467. },
  61468. render: function render() {}
  61469. };
  61470. exports.default = _default;
  61471. /***/ }),
  61472. /***/ "e22c":
  61473. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  61474. "use strict";
  61475. __webpack_require__.r(__webpack_exports__);
  61476. // EXTERNAL MODULE: external {"root":"Vue","commonjs":"vue","commonjs2":"vue","amd":"vue"}
  61477. var external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_ = __webpack_require__("5643");
  61478. var external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default = /*#__PURE__*/__webpack_require__.n(external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_);
  61479. // CONCATENATED MODULE: ./node_modules/vue-class-component/dist/vue-class-component.esm.js
  61480. /**
  61481. * vue-class-component v7.1.0
  61482. * (c) 2015-present Evan You
  61483. * @license MIT
  61484. */
  61485. // The rational behind the verbose Reflect-feature check below is the fact that there are polyfills
  61486. // which add an implementation for Reflect.defineMetadata but not for Reflect.getOwnMetadataKeys.
  61487. // Without this check consumers will encounter hard to track down runtime errors.
  61488. var reflectionIsSupported = typeof Reflect !== 'undefined' && Reflect.defineMetadata && Reflect.getOwnMetadataKeys;
  61489. function copyReflectionMetadata(to, from) {
  61490. forwardMetadata(to, from);
  61491. Object.getOwnPropertyNames(from.prototype).forEach(function (key) {
  61492. forwardMetadata(to.prototype, from.prototype, key);
  61493. });
  61494. Object.getOwnPropertyNames(from).forEach(function (key) {
  61495. forwardMetadata(to, from, key);
  61496. });
  61497. }
  61498. function forwardMetadata(to, from, propertyKey) {
  61499. var metaKeys = propertyKey
  61500. ? Reflect.getOwnMetadataKeys(from, propertyKey)
  61501. : Reflect.getOwnMetadataKeys(from);
  61502. metaKeys.forEach(function (metaKey) {
  61503. var metadata = propertyKey
  61504. ? Reflect.getOwnMetadata(metaKey, from, propertyKey)
  61505. : Reflect.getOwnMetadata(metaKey, from);
  61506. if (propertyKey) {
  61507. Reflect.defineMetadata(metaKey, metadata, to, propertyKey);
  61508. }
  61509. else {
  61510. Reflect.defineMetadata(metaKey, metadata, to);
  61511. }
  61512. });
  61513. }
  61514. var fakeArray = { __proto__: [] };
  61515. var hasProto = fakeArray instanceof Array;
  61516. function createDecorator(factory) {
  61517. return function (target, key, index) {
  61518. var Ctor = typeof target === 'function'
  61519. ? target
  61520. : target.constructor;
  61521. if (!Ctor.__decorators__) {
  61522. Ctor.__decorators__ = [];
  61523. }
  61524. if (typeof index !== 'number') {
  61525. index = undefined;
  61526. }
  61527. Ctor.__decorators__.push(function (options) { return factory(options, key, index); });
  61528. };
  61529. }
  61530. function mixins() {
  61531. var Ctors = [];
  61532. for (var _i = 0; _i < arguments.length; _i++) {
  61533. Ctors[_i] = arguments[_i];
  61534. }
  61535. return external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.extend({ mixins: Ctors });
  61536. }
  61537. function isPrimitive(value) {
  61538. var type = typeof value;
  61539. return value == null || (type !== 'object' && type !== 'function');
  61540. }
  61541. function warn(message) {
  61542. if (typeof console !== 'undefined') {
  61543. console.warn('[vue-class-component] ' + message);
  61544. }
  61545. }
  61546. function collectDataFromConstructor(vm, Component) {
  61547. // override _init to prevent to init as Vue instance
  61548. var originalInit = Component.prototype._init;
  61549. Component.prototype._init = function () {
  61550. var _this = this;
  61551. // proxy to actual vm
  61552. var keys = Object.getOwnPropertyNames(vm);
  61553. // 2.2.0 compat (props are no longer exposed as self properties)
  61554. if (vm.$options.props) {
  61555. for (var key in vm.$options.props) {
  61556. if (!vm.hasOwnProperty(key)) {
  61557. keys.push(key);
  61558. }
  61559. }
  61560. }
  61561. keys.forEach(function (key) {
  61562. if (key.charAt(0) !== '_') {
  61563. Object.defineProperty(_this, key, {
  61564. get: function () { return vm[key]; },
  61565. set: function (value) { vm[key] = value; },
  61566. configurable: true
  61567. });
  61568. }
  61569. });
  61570. };
  61571. // should be acquired class property values
  61572. var data = new Component();
  61573. // restore original _init to avoid memory leak (#209)
  61574. Component.prototype._init = originalInit;
  61575. // create plain data object
  61576. var plainData = {};
  61577. Object.keys(data).forEach(function (key) {
  61578. if (data[key] !== undefined) {
  61579. plainData[key] = data[key];
  61580. }
  61581. });
  61582. if (false) {}
  61583. return plainData;
  61584. }
  61585. var $internalHooks = [
  61586. 'data',
  61587. 'beforeCreate',
  61588. 'created',
  61589. 'beforeMount',
  61590. 'mounted',
  61591. 'beforeDestroy',
  61592. 'destroyed',
  61593. 'beforeUpdate',
  61594. 'updated',
  61595. 'activated',
  61596. 'deactivated',
  61597. 'render',
  61598. 'errorCaptured',
  61599. 'serverPrefetch' // 2.6
  61600. ];
  61601. function componentFactory(Component, options) {
  61602. if (options === void 0) { options = {}; }
  61603. options.name = options.name || Component._componentTag || Component.name;
  61604. // prototype props.
  61605. var proto = Component.prototype;
  61606. Object.getOwnPropertyNames(proto).forEach(function (key) {
  61607. if (key === 'constructor') {
  61608. return;
  61609. }
  61610. // hooks
  61611. if ($internalHooks.indexOf(key) > -1) {
  61612. options[key] = proto[key];
  61613. return;
  61614. }
  61615. var descriptor = Object.getOwnPropertyDescriptor(proto, key);
  61616. if (descriptor.value !== void 0) {
  61617. // methods
  61618. if (typeof descriptor.value === 'function') {
  61619. (options.methods || (options.methods = {}))[key] = descriptor.value;
  61620. }
  61621. else {
  61622. // typescript decorated data
  61623. (options.mixins || (options.mixins = [])).push({
  61624. data: function () {
  61625. var _a;
  61626. return _a = {}, _a[key] = descriptor.value, _a;
  61627. }
  61628. });
  61629. }
  61630. }
  61631. else if (descriptor.get || descriptor.set) {
  61632. // computed properties
  61633. (options.computed || (options.computed = {}))[key] = {
  61634. get: descriptor.get,
  61635. set: descriptor.set
  61636. };
  61637. }
  61638. });
  61639. (options.mixins || (options.mixins = [])).push({
  61640. data: function () {
  61641. return collectDataFromConstructor(this, Component);
  61642. }
  61643. });
  61644. // decorate options
  61645. var decorators = Component.__decorators__;
  61646. if (decorators) {
  61647. decorators.forEach(function (fn) { return fn(options); });
  61648. delete Component.__decorators__;
  61649. }
  61650. // find super
  61651. var superProto = Object.getPrototypeOf(Component.prototype);
  61652. var Super = superProto instanceof external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a
  61653. ? superProto.constructor
  61654. : external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a;
  61655. var Extended = Super.extend(options);
  61656. forwardStaticMembers(Extended, Component, Super);
  61657. if (reflectionIsSupported) {
  61658. copyReflectionMetadata(Extended, Component);
  61659. }
  61660. return Extended;
  61661. }
  61662. var reservedPropertyNames = [
  61663. // Unique id
  61664. 'cid',
  61665. // Super Vue constructor
  61666. 'super',
  61667. // Component options that will be used by the component
  61668. 'options',
  61669. 'superOptions',
  61670. 'extendOptions',
  61671. 'sealedOptions',
  61672. // Private assets
  61673. 'component',
  61674. 'directive',
  61675. 'filter'
  61676. ];
  61677. var shouldIgnore = {
  61678. prototype: true,
  61679. arguments: true,
  61680. callee: true,
  61681. caller: true
  61682. };
  61683. function forwardStaticMembers(Extended, Original, Super) {
  61684. // We have to use getOwnPropertyNames since Babel registers methods as non-enumerable
  61685. Object.getOwnPropertyNames(Original).forEach(function (key) {
  61686. // Skip the properties that should not be overwritten
  61687. if (shouldIgnore[key]) {
  61688. return;
  61689. }
  61690. // Some browsers does not allow reconfigure built-in properties
  61691. var extendedDescriptor = Object.getOwnPropertyDescriptor(Extended, key);
  61692. if (extendedDescriptor && !extendedDescriptor.configurable) {
  61693. return;
  61694. }
  61695. var descriptor = Object.getOwnPropertyDescriptor(Original, key);
  61696. // If the user agent does not support `__proto__` or its family (IE <= 10),
  61697. // the sub class properties may be inherited properties from the super class in TypeScript.
  61698. // We need to exclude such properties to prevent to overwrite
  61699. // the component options object which stored on the extended constructor (See #192).
  61700. // If the value is a referenced value (object or function),
  61701. // we can check equality of them and exclude it if they have the same reference.
  61702. // If it is a primitive value, it will be forwarded for safety.
  61703. if (!hasProto) {
  61704. // Only `cid` is explicitly exluded from property forwarding
  61705. // because we cannot detect whether it is a inherited property or not
  61706. // on the no `__proto__` environment even though the property is reserved.
  61707. if (key === 'cid') {
  61708. return;
  61709. }
  61710. var superDescriptor = Object.getOwnPropertyDescriptor(Super, key);
  61711. if (!isPrimitive(descriptor.value) &&
  61712. superDescriptor &&
  61713. superDescriptor.value === descriptor.value) {
  61714. return;
  61715. }
  61716. }
  61717. // Warn if the users manually declare reserved properties
  61718. if (false) {}
  61719. Object.defineProperty(Extended, key, descriptor);
  61720. });
  61721. }
  61722. function vue_class_component_esm_Component(options) {
  61723. if (typeof options === 'function') {
  61724. return componentFactory(options);
  61725. }
  61726. return function (Component) {
  61727. return componentFactory(Component, options);
  61728. };
  61729. }
  61730. vue_class_component_esm_Component.registerHooks = function registerHooks(keys) {
  61731. $internalHooks.push.apply($internalHooks, keys);
  61732. };
  61733. /* harmony default export */ var vue_class_component_esm = (vue_class_component_esm_Component);
  61734. // CONCATENATED MODULE: ./node_modules/vue-property-decorator/lib/vue-property-decorator.js
  61735. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Inject", function() { return Inject; });
  61736. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InjectReactive", function() { return InjectReactive; });
  61737. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Provide", function() { return Provide; });
  61738. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProvideReactive", function() { return ProvideReactive; });
  61739. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Model", function() { return Model; });
  61740. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Prop", function() { return Prop; });
  61741. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PropSync", function() { return PropSync; });
  61742. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Watch", function() { return Watch; });
  61743. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Emit", function() { return Emit; });
  61744. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Ref", function() { return Ref; });
  61745. /* concated harmony reexport Component */__webpack_require__.d(__webpack_exports__, "Component", function() { return vue_class_component_esm; });
  61746. /* concated harmony reexport Vue */__webpack_require__.d(__webpack_exports__, "Vue", function() { return external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a; });
  61747. /* concated harmony reexport Mixins */__webpack_require__.d(__webpack_exports__, "Mixins", function() { return mixins; });
  61748. /** vue-property-decorator verson 8.2.2 MIT LICENSE copyright 2019 kaorun343 */
  61749. /// <reference types='reflect-metadata'/>
  61750. /** Used for keying reactive provide/inject properties */
  61751. var reactiveInjectKey = '__reactiveInject__';
  61752. /**
  61753. * decorator of an inject
  61754. * @param from key
  61755. * @return PropertyDecorator
  61756. */
  61757. function Inject(options) {
  61758. return createDecorator(function (componentOptions, key) {
  61759. if (typeof componentOptions.inject === 'undefined') {
  61760. componentOptions.inject = {};
  61761. }
  61762. if (!Array.isArray(componentOptions.inject)) {
  61763. componentOptions.inject[key] = options || key;
  61764. }
  61765. });
  61766. }
  61767. /**
  61768. * decorator of a reactive inject
  61769. * @param from key
  61770. * @return PropertyDecorator
  61771. */
  61772. function InjectReactive(options) {
  61773. return createDecorator(function (componentOptions, key) {
  61774. if (typeof componentOptions.inject === 'undefined') {
  61775. componentOptions.inject = {};
  61776. }
  61777. if (!Array.isArray(componentOptions.inject)) {
  61778. var fromKey_1 = !!options ? options.from || options : key;
  61779. var defaultVal_1 = (!!options && options.default) || undefined;
  61780. if (!componentOptions.computed)
  61781. componentOptions.computed = {};
  61782. componentOptions.computed[key] = function () {
  61783. var obj = this[reactiveInjectKey];
  61784. return obj ? obj[fromKey_1] : defaultVal_1;
  61785. };
  61786. componentOptions.inject[reactiveInjectKey] = reactiveInjectKey;
  61787. }
  61788. });
  61789. }
  61790. /**
  61791. * decorator of a provide
  61792. * @param key key
  61793. * @return PropertyDecorator | void
  61794. */
  61795. function Provide(key) {
  61796. return createDecorator(function (componentOptions, k) {
  61797. var provide = componentOptions.provide;
  61798. if (typeof provide !== 'function' || !provide.managed) {
  61799. var original_1 = componentOptions.provide;
  61800. provide = componentOptions.provide = function () {
  61801. var rv = Object.create((typeof original_1 === 'function' ? original_1.call(this) : original_1) ||
  61802. null);
  61803. for (var i in provide.managed)
  61804. rv[provide.managed[i]] = this[i];
  61805. return rv;
  61806. };
  61807. provide.managed = {};
  61808. }
  61809. provide.managed[k] = key || k;
  61810. });
  61811. }
  61812. /**
  61813. * decorator of a reactive provide
  61814. * @param key key
  61815. * @return PropertyDecorator | void
  61816. */
  61817. function ProvideReactive(key) {
  61818. return createDecorator(function (componentOptions, k) {
  61819. var provide = componentOptions.provide;
  61820. // inject parent reactive services (if any)
  61821. if (!Array.isArray(componentOptions.inject)) {
  61822. componentOptions.inject = componentOptions.inject || {};
  61823. componentOptions.inject[reactiveInjectKey] = { from: reactiveInjectKey, default: {} };
  61824. }
  61825. if (typeof provide !== 'function' || !provide.managedReactive) {
  61826. var original_2 = componentOptions.provide;
  61827. provide = componentOptions.provide = function () {
  61828. var _this = this;
  61829. var rv = typeof original_2 === 'function'
  61830. ? original_2.call(this)
  61831. : original_2;
  61832. rv = Object.create(rv || null);
  61833. // set reactive services (propagates previous services if necessary)
  61834. rv[reactiveInjectKey] = this[reactiveInjectKey] || {};
  61835. var _loop_1 = function (i) {
  61836. rv[provide.managedReactive[i]] = this_1[i]; // Duplicates the behavior of `@Provide`
  61837. Object.defineProperty(rv[reactiveInjectKey], provide.managedReactive[i], {
  61838. enumerable: true,
  61839. get: function () { return _this[i]; },
  61840. });
  61841. };
  61842. var this_1 = this;
  61843. for (var i in provide.managedReactive) {
  61844. _loop_1(i);
  61845. }
  61846. return rv;
  61847. };
  61848. provide.managedReactive = {};
  61849. }
  61850. provide.managedReactive[k] = key || k;
  61851. });
  61852. }
  61853. /** @see {@link https://github.com/vuejs/vue-class-component/blob/master/src/reflect.ts} */
  61854. var reflectMetadataIsSupported = typeof Reflect !== 'undefined' && typeof Reflect.getMetadata !== 'undefined';
  61855. function applyMetadata(options, target, key) {
  61856. if (reflectMetadataIsSupported) {
  61857. if (!Array.isArray(options) &&
  61858. typeof options !== 'function' &&
  61859. typeof options.type === 'undefined') {
  61860. options.type = Reflect.getMetadata('design:type', target, key);
  61861. }
  61862. }
  61863. }
  61864. /**
  61865. * decorator of model
  61866. * @param event event name
  61867. * @param options options
  61868. * @return PropertyDecorator
  61869. */
  61870. function Model(event, options) {
  61871. if (options === void 0) { options = {}; }
  61872. return function (target, key) {
  61873. applyMetadata(options, target, key);
  61874. createDecorator(function (componentOptions, k) {
  61875. ;
  61876. (componentOptions.props || (componentOptions.props = {}))[k] = options;
  61877. componentOptions.model = { prop: k, event: event || k };
  61878. })(target, key);
  61879. };
  61880. }
  61881. /**
  61882. * decorator of a prop
  61883. * @param options the options for the prop
  61884. * @return PropertyDecorator | void
  61885. */
  61886. function Prop(options) {
  61887. if (options === void 0) { options = {}; }
  61888. return function (target, key) {
  61889. applyMetadata(options, target, key);
  61890. createDecorator(function (componentOptions, k) {
  61891. ;
  61892. (componentOptions.props || (componentOptions.props = {}))[k] = options;
  61893. })(target, key);
  61894. };
  61895. }
  61896. /**
  61897. * decorator of a synced prop
  61898. * @param propName the name to interface with from outside, must be different from decorated property
  61899. * @param options the options for the synced prop
  61900. * @return PropertyDecorator | void
  61901. */
  61902. function PropSync(propName, options) {
  61903. if (options === void 0) { options = {}; }
  61904. // @ts-ignore
  61905. return function (target, key) {
  61906. applyMetadata(options, target, key);
  61907. createDecorator(function (componentOptions, k) {
  61908. ;
  61909. (componentOptions.props || (componentOptions.props = {}))[propName] = options;
  61910. (componentOptions.computed || (componentOptions.computed = {}))[k] = {
  61911. get: function () {
  61912. return this[propName];
  61913. },
  61914. set: function (value) {
  61915. // @ts-ignore
  61916. this.$emit("update:" + propName, value);
  61917. },
  61918. };
  61919. })(target, key);
  61920. };
  61921. }
  61922. /**
  61923. * decorator of a watch function
  61924. * @param path the path or the expression to observe
  61925. * @param WatchOption
  61926. * @return MethodDecorator
  61927. */
  61928. function Watch(path, options) {
  61929. if (options === void 0) { options = {}; }
  61930. var _a = options.deep, deep = _a === void 0 ? false : _a, _b = options.immediate, immediate = _b === void 0 ? false : _b;
  61931. return createDecorator(function (componentOptions, handler) {
  61932. if (typeof componentOptions.watch !== 'object') {
  61933. componentOptions.watch = Object.create(null);
  61934. }
  61935. var watch = componentOptions.watch;
  61936. if (typeof watch[path] === 'object' && !Array.isArray(watch[path])) {
  61937. watch[path] = [watch[path]];
  61938. }
  61939. else if (typeof watch[path] === 'undefined') {
  61940. watch[path] = [];
  61941. }
  61942. watch[path].push({ handler: handler, deep: deep, immediate: immediate });
  61943. });
  61944. }
  61945. // Code copied from Vue/src/shared/util.js
  61946. var hyphenateRE = /\B([A-Z])/g;
  61947. var hyphenate = function (str) { return str.replace(hyphenateRE, '-$1').toLowerCase(); };
  61948. /**
  61949. * decorator of an event-emitter function
  61950. * @param event The name of the event
  61951. * @return MethodDecorator
  61952. */
  61953. function Emit(event) {
  61954. return function (_target, key, descriptor) {
  61955. key = hyphenate(key);
  61956. var original = descriptor.value;
  61957. descriptor.value = function emitter() {
  61958. var _this = this;
  61959. var args = [];
  61960. for (var _i = 0; _i < arguments.length; _i++) {
  61961. args[_i] = arguments[_i];
  61962. }
  61963. var emit = function (returnValue) {
  61964. if (returnValue !== undefined)
  61965. args.unshift(returnValue);
  61966. _this.$emit.apply(_this, [event || key].concat(args));
  61967. };
  61968. var returnValue = original.apply(this, args);
  61969. if (isPromise(returnValue)) {
  61970. returnValue.then(function (returnValue) {
  61971. emit(returnValue);
  61972. });
  61973. }
  61974. else {
  61975. emit(returnValue);
  61976. }
  61977. return returnValue;
  61978. };
  61979. };
  61980. }
  61981. /**
  61982. * decorator of a ref prop
  61983. * @param refKey the ref key defined in template
  61984. */
  61985. function Ref(refKey) {
  61986. return createDecorator(function (options, key) {
  61987. options.computed = options.computed || {};
  61988. options.computed[key] = {
  61989. cache: false,
  61990. get: function () {
  61991. return this.$refs[refKey || key];
  61992. },
  61993. };
  61994. });
  61995. }
  61996. function isPromise(obj) {
  61997. return obj instanceof Promise || (obj && typeof obj.then === 'function');
  61998. }
  61999. /***/ }),
  62000. /***/ "e340":
  62001. /***/ (function(module, exports, __webpack_require__) {
  62002. "use strict";
  62003. var _interopRequireDefault = __webpack_require__("8e6d");
  62004. Object.defineProperty(exports, "__esModule", {
  62005. value: true
  62006. });
  62007. exports._getValueOfEpsgCode = _getValueOfEpsgCode;
  62008. exports.vertifyEpsgCode = vertifyEpsgCode;
  62009. exports.transformFeatures = transformFeatures;
  62010. exports.getServerEpsgCode = getServerEpsgCode;
  62011. exports.checkAndRectifyFeatures = checkAndRectifyFeatures;
  62012. exports.default = void 0;
  62013. var _regenerator = _interopRequireDefault(__webpack_require__("849c"));
  62014. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  62015. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  62016. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  62017. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  62018. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  62019. var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("1d96"));
  62020. var _Events2 = __webpack_require__("e3e2");
  62021. var _epsgDefine = __webpack_require__("1a91");
  62022. var _proj = _interopRequireDefault(__webpack_require__("7319"));
  62023. var _util = __webpack_require__("1448");
  62024. var _statistics = __webpack_require__("9dde");
  62025. var _lodash = _interopRequireDefault(__webpack_require__("25a2"));
  62026. function _getValueOfEpsgCode(epsgCode) {
  62027. var defName = "EPSG:".concat(epsgCode);
  62028. var defValue = (0, _epsgDefine.getProjection)(defName);
  62029. if (!defValue) {
  62030. console.error("".concat(defName, " not define"));
  62031. } else {
  62032. !_proj.default.defs(defName) && _proj.default.defs(defName, defValue);
  62033. }
  62034. return {
  62035. name: defName,
  62036. value: defValue
  62037. };
  62038. }
  62039. function _transformCoordinates(coordinates, projName) {
  62040. if (coordinates[0] instanceof Array) {
  62041. coordinates.forEach(function (item, index) {
  62042. if (item instanceof Array) {
  62043. coordinates[index] = _transformCoordinates(item, projName);
  62044. }
  62045. });
  62046. } else if (coordinates.length > 0) {
  62047. return projName !== 'EPSG:4326' ? (0, _proj.default)(projName, 'EPSG:4326', coordinates) : coordinates;
  62048. }
  62049. return coordinates;
  62050. }
  62051. function vertifyEpsgCode(firstFeature) {
  62052. var epsgCode = 4326;
  62053. var firstCoord = (firstFeature.geometry || {}).coordinates || [];
  62054. if (firstCoord[0] instanceof Array) {
  62055. if (firstCoord[0][0] instanceof Array) {
  62056. // type: Polygon
  62057. firstCoord = firstCoord[0][0];
  62058. if (firstCoord[0] instanceof Array) {
  62059. // type: MultiPolygon
  62060. firstCoord = firstCoord[0];
  62061. }
  62062. } else {
  62063. // type: LineString
  62064. firstCoord = firstCoord[0];
  62065. }
  62066. } // 以防经纬度交换,判断错误的问题,都改成180
  62067. var acceptRange = firstCoord[0] > -180 && firstCoord[0] < 180 && firstCoord[1] > -180 && firstCoord[1] < 180;
  62068. if (!acceptRange) {
  62069. epsgCode = 3857;
  62070. }
  62071. return epsgCode;
  62072. }
  62073. function transformFeatures(epsgCode, features) {
  62074. var projName = _getValueOfEpsgCode(epsgCode).name;
  62075. var transformedFeatures = features.map(function (feature) {
  62076. if (_proj.default.defs(projName) && feature.geometry && feature.geometry.coordinates) {
  62077. var coordinates = feature.geometry.coordinates;
  62078. feature.geometry.coordinates = _transformCoordinates(coordinates, projName);
  62079. }
  62080. return feature;
  62081. });
  62082. return transformedFeatures;
  62083. } // 获取iServer restdata restmap 的 epsgcode
  62084. function getServerEpsgCode(projectionUrl, options) {
  62085. if (!projectionUrl) {
  62086. return;
  62087. }
  62088. return SuperMap.FetchRequest.get(projectionUrl, null, options).then(function (response) {
  62089. return response.json();
  62090. }).then(function (results) {
  62091. var epsgCode = results.epsgCode;
  62092. if (results.datasetInfo) {
  62093. var prjCoordSys = results.datasetInfo.prjCoordSys;
  62094. epsgCode = prjCoordSys ? prjCoordSys.epsgCode : null;
  62095. }
  62096. return epsgCode;
  62097. }).catch(function (error) {
  62098. console.log(error);
  62099. });
  62100. } // 关系型存储发布成服务后坐标一定是4326,但真实数据可能不是4326,判断一下暂时按照3857处理
  62101. function checkAndRectifyFeatures(_x) {
  62102. return _checkAndRectifyFeatures.apply(this, arguments);
  62103. }
  62104. /**
  62105. * @class iServerRestService
  62106. * @classdesc iServer 数据请求类。
  62107. * @category BaseTypes Util
  62108. * @param {string} url - iServer 数据服务或地图服务地址。
  62109. * @fires iServerRestService#getdatasucceeded
  62110. * @fires iServerRestService#getdatafailed
  62111. * @fires iServerRestService#featureisempty
  62112. */
  62113. function _checkAndRectifyFeatures() {
  62114. _checkAndRectifyFeatures = (0, _asyncToGenerator2.default)(
  62115. /*#__PURE__*/
  62116. _regenerator.default.mark(function _callee2(_ref) {
  62117. var features, epsgCode, projectionUrl, options, currentEpsgCode, copyFeatures, epsgValue, vertifyCode;
  62118. return _regenerator.default.wrap(function _callee2$(_context2) {
  62119. while (1) {
  62120. switch (_context2.prev = _context2.next) {
  62121. case 0:
  62122. features = _ref.features, epsgCode = _ref.epsgCode, projectionUrl = _ref.projectionUrl, options = _ref.options;
  62123. currentEpsgCode = epsgCode;
  62124. copyFeatures = features;
  62125. if (epsgCode) {
  62126. _context2.next = 7;
  62127. break;
  62128. }
  62129. _context2.next = 6;
  62130. return getServerEpsgCode(projectionUrl, options);
  62131. case 6:
  62132. currentEpsgCode = _context2.sent;
  62133. case 7:
  62134. epsgValue = (0, _epsgDefine.getProjection)("EPSG:".concat(currentEpsgCode));
  62135. if (epsgValue === void 0) {
  62136. currentEpsgCode = 4326;
  62137. }
  62138. if (currentEpsgCode && features && !!features.length) {
  62139. if (currentEpsgCode === 4326) {
  62140. vertifyCode = vertifyEpsgCode(features[0]);
  62141. currentEpsgCode = vertifyCode;
  62142. }
  62143. copyFeatures = transformFeatures(currentEpsgCode, (0, _lodash.default)(features));
  62144. }
  62145. return _context2.abrupt("return", copyFeatures);
  62146. case 11:
  62147. case "end":
  62148. return _context2.stop();
  62149. }
  62150. }
  62151. }, _callee2);
  62152. }));
  62153. return _checkAndRectifyFeatures.apply(this, arguments);
  62154. }
  62155. var iServerRestService =
  62156. /*#__PURE__*/
  62157. function (_Events) {
  62158. (0, _inherits2.default)(iServerRestService, _Events);
  62159. function iServerRestService(url, options) {
  62160. var _this;
  62161. (0, _classCallCheck2.default)(this, iServerRestService);
  62162. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(iServerRestService).call(this));
  62163. _this.url = url;
  62164. _this.options = options || {};
  62165. _this.eventTypes = ['getdatasucceeded', 'getdatafailed', 'featureisempty'];
  62166. return _this;
  62167. }
  62168. (0, _createClass2.default)(iServerRestService, [{
  62169. key: "getData",
  62170. value: function getData(datasetInfo, queryInfo) {
  62171. if (!this._checkUrl(this.url)) {
  62172. return null;
  62173. }
  62174. this._getDatasetInfoSucceed(datasetInfo, queryInfo);
  62175. }
  62176. /**
  62177. * @function iServerRestService.prototype.getData
  62178. * @description 请求数据。
  62179. * @param {Object} queryInfo - 可选参数。
  62180. * @param {Object} [queryInfo.maxFeatures] - 最多可返回的要素数量。
  62181. * @param {Object} [queryInfo.attributeFilter] - 属性过滤条件。
  62182. * @param {Object} [queryInfo.keyWord] - 筛选关键字。
  62183. */
  62184. }, {
  62185. key: "_getDatasetInfoSucceed",
  62186. value: function _getDatasetInfoSucceed(datasetInfo, queryInfo) {
  62187. datasetInfo.dataUrl = this.url; // 判断服务为地图服务 或者 数据服务
  62188. this.url.indexOf('/rest/maps') > -1 && this.getMapFeatures(datasetInfo, queryInfo);
  62189. this.url.indexOf('/rest/data') > -1 && this.getDataFeatures(datasetInfo, queryInfo);
  62190. }
  62191. /**
  62192. * @function iServerRestService.prototype.getMapFeatures
  62193. * @description 请求地图服务数据。
  62194. * @param {Object} datasetInfo - 数据集参数。
  62195. * @param {Object} datasetInfo.dataUrl - 地图服务地址。
  62196. * @param {Object} datasetInfo.mapName - 图层名。
  62197. * @param {Object} queryInfo - 可选参数。
  62198. * @param {Object} [queryInfo.maxFeatures] - 最多可返回的要素数量。
  62199. * @param {Object} [queryInfo.attributeFilter] - 属性过滤条件。
  62200. * @param {Object} [queryInfo.keyWord] - 筛选关键字。
  62201. */
  62202. }, {
  62203. key: "getMapFeatures",
  62204. value: function getMapFeatures(datasetInfo, queryInfo) {
  62205. var _this2 = this;
  62206. var dataUrl = datasetInfo.dataUrl,
  62207. mapName = datasetInfo.mapName;
  62208. queryInfo.name = mapName;
  62209. this.projectionUrl = "".concat(dataUrl, "/prjCoordSys");
  62210. if (queryInfo.keyWord) {
  62211. this._getRestMapFields(dataUrl, mapName, function (fields) {
  62212. queryInfo.attributeFilter = _this2._getAttributeFilterByKeywords(fields, queryInfo.keyWord);
  62213. _this2._getMapFeatureBySql(dataUrl, queryInfo);
  62214. }, queryInfo.withCredentials);
  62215. } else {
  62216. this._getMapFeatureBySql(dataUrl, queryInfo);
  62217. }
  62218. }
  62219. /**
  62220. * @function iServerRestService.prototype.getDataFeatures
  62221. * @description 请求数据服务数据。
  62222. * @param {Object} datasetInfo - 数据集参数。
  62223. * @param {Object} datasetInfo.datasetName - 数据集名。
  62224. * @param {Object} datasetInfo.dataSourceName - 数据源名。
  62225. * @param {Object} datasetInfo.dataUrl - 数据服务地址。
  62226. * @param {Object} queryInfo - 可选参数。
  62227. * @param {Object} [queryInfo.maxFeatures] - 最多可返回的要素数量。
  62228. * @param {Object} [queryInfo.attributeFilter] - 属性过滤条件。
  62229. * @param {Object} [queryInfo.keyWord] - 筛选关键字。
  62230. */
  62231. }, {
  62232. key: "getDataFeatures",
  62233. value: function getDataFeatures(datasetInfo, queryInfo) {
  62234. var _this3 = this;
  62235. var datasetName = datasetInfo.datasetName,
  62236. dataSourceName = datasetInfo.dataSourceName,
  62237. dataUrl = datasetInfo.dataUrl;
  62238. queryInfo.name = datasetName + '@' + dataSourceName;
  62239. queryInfo.datasetNames = [dataSourceName + ':' + datasetName];
  62240. this.projectionUrl = "".concat(dataUrl, "/datasources/").concat(dataSourceName, "/datasets/").concat(datasetName);
  62241. if (queryInfo.keyWord) {
  62242. var fieldsUrl = dataUrl + "/datasources/".concat(dataSourceName, "/datasets/").concat(datasetName, "/fields.rjson?returnAll=true");
  62243. this._getRestDataFields(fieldsUrl, queryInfo, function (fields) {
  62244. queryInfo.attributeFilter = _this3._getAttributeFilterByKeywords(fields, queryInfo.keyWord);
  62245. _this3._getDataFeaturesBySql(dataUrl, queryInfo);
  62246. });
  62247. } else {
  62248. this._getDataFeaturesBySql(dataUrl, queryInfo);
  62249. }
  62250. }
  62251. }, {
  62252. key: "_getMapFeatureBySql",
  62253. value: function _getMapFeatureBySql(url, queryInfo) {
  62254. var _this4 = this;
  62255. var queryBySQLParams, queryBySQLService;
  62256. queryBySQLParams = new SuperMap.QueryBySQLParameters({
  62257. queryParams: [{
  62258. name: queryInfo.name,
  62259. attributeFilter: queryInfo.attributeFilter
  62260. }],
  62261. expectCount: queryInfo.maxFeatures
  62262. });
  62263. queryBySQLService = new SuperMap.QueryBySQLService(url, {
  62264. proxy: this.options.proxy,
  62265. withCredentials: queryInfo.withCredentials,
  62266. eventListeners: {
  62267. processCompleted: this._getFeaturesSucceed.bind(this),
  62268. processFailed: function processFailed(serviceResult) {
  62269. console.error(serviceResult.error);
  62270. _this4.fetchFailed(serviceResult.error);
  62271. }
  62272. }
  62273. });
  62274. queryBySQLService.processAsync(queryBySQLParams);
  62275. }
  62276. }, {
  62277. key: "_getDataFeaturesBySql",
  62278. value: function _getDataFeaturesBySql(url, queryInfo) {
  62279. var getFeatureBySQLParams, getFeatureBySQLService;
  62280. getFeatureBySQLParams = new SuperMap.GetFeaturesBySQLParameters({
  62281. queryParameter: {
  62282. name: queryInfo.name,
  62283. attributeFilter: queryInfo.attributeFilter
  62284. },
  62285. datasetNames: queryInfo.datasetNames,
  62286. fromIndex: 0,
  62287. toIndex: queryInfo.maxFeatures >= 1000 ? -1 : queryInfo.maxFeatures - 1,
  62288. maxFeatures: -1
  62289. });
  62290. getFeatureBySQLService = new SuperMap.GetFeaturesBySQLService(url, {
  62291. proxy: this.options.proxy,
  62292. withCredentials: queryInfo.withCredentials,
  62293. eventListeners: {
  62294. processCompleted: this._getFeaturesSucceed.bind(this),
  62295. processFailed: function processFailed() {}
  62296. }
  62297. });
  62298. getFeatureBySQLService.processAsync(getFeatureBySQLParams);
  62299. }
  62300. }, {
  62301. key: "_getFeaturesSucceed",
  62302. value: function () {
  62303. var _getFeaturesSucceed2 = (0, _asyncToGenerator2.default)(
  62304. /*#__PURE__*/
  62305. _regenerator.default.mark(function _callee(results) {
  62306. var features, data, recordsets;
  62307. return _regenerator.default.wrap(function _callee$(_context) {
  62308. while (1) {
  62309. switch (_context.prev = _context.next) {
  62310. case 0:
  62311. if (!(results.result && results.result.recordsets)) {
  62312. _context.next = 12;
  62313. break;
  62314. }
  62315. // 数据来自restmap
  62316. recordsets = results.result.recordsets[0] || {};
  62317. this.features = recordsets.features || {};
  62318. features = this.features.features;
  62319. if (!(features && features.length > 0)) {
  62320. _context.next = 8;
  62321. break;
  62322. }
  62323. data = (0, _statistics.statisticsFeatures)(features, recordsets.fields, recordsets.fieldCaptions, recordsets.fieldTypes);
  62324. _context.next = 10;
  62325. break;
  62326. case 8:
  62327. /**
  62328. * @event iServerRestService#featureisempty
  62329. * @description 请求数据为空后触发。
  62330. * @property {Object} e - 事件对象。
  62331. */
  62332. this.triggerEvent('featureisempty', {
  62333. results: results
  62334. });
  62335. return _context.abrupt("return");
  62336. case 10:
  62337. _context.next = 25;
  62338. break;
  62339. case 12:
  62340. if (!(results.result && results.result.features)) {
  62341. _context.next = 23;
  62342. break;
  62343. }
  62344. // 数据来自restdata---results.result.features
  62345. this.features = results.result.features;
  62346. features = this.features.features;
  62347. if (!(features && features.length > 0)) {
  62348. _context.next = 19;
  62349. break;
  62350. }
  62351. data = (0, _statistics.statisticsFeatures)(features);
  62352. _context.next = 21;
  62353. break;
  62354. case 19:
  62355. this.triggerEvent('featureisempty', {
  62356. results: results
  62357. });
  62358. return _context.abrupt("return");
  62359. case 21:
  62360. _context.next = 25;
  62361. break;
  62362. case 23:
  62363. this.triggerEvent('getdatafailed', {
  62364. results: results
  62365. });
  62366. return _context.abrupt("return");
  62367. case 25:
  62368. if (results.result.vertified) {
  62369. _context.next = 29;
  62370. break;
  62371. }
  62372. _context.next = 28;
  62373. return checkAndRectifyFeatures({
  62374. features: data.features,
  62375. epsgCode: this.options.epsgCode,
  62376. projectionUrl: this.projectionUrl,
  62377. options: {
  62378. proxy: this.options.proxy
  62379. }
  62380. });
  62381. case 28:
  62382. data.features = _context.sent;
  62383. case 29:
  62384. /**
  62385. * @event iServerRestService#getdatasucceeded
  62386. * @description 请求数据成功后触发。
  62387. * @property {Object} e - 事件对象。
  62388. */
  62389. this.triggerEvent('getdatasucceeded', data);
  62390. case 30:
  62391. case "end":
  62392. return _context.stop();
  62393. }
  62394. }
  62395. }, _callee, this);
  62396. }));
  62397. function _getFeaturesSucceed(_x2) {
  62398. return _getFeaturesSucceed2.apply(this, arguments);
  62399. }
  62400. return _getFeaturesSucceed;
  62401. }()
  62402. }, {
  62403. key: "_getRestDataFields",
  62404. value: function _getRestDataFields(fieldsUrl, queryInfo, callBack) {
  62405. var _this5 = this;
  62406. SuperMap.FetchRequest.get(fieldsUrl, null, {
  62407. proxy: this.options.proxy,
  62408. withCredentials: queryInfo.withCredentials
  62409. }).then(function (response) {
  62410. return response.json();
  62411. }).then(function (results) {
  62412. var fields = _this5._getFiledsByType(['CHAR', 'TEXT', 'WTEXT'], results);
  62413. callBack(fields, results);
  62414. }).catch(function (error) {
  62415. console.log(error);
  62416. _this5.fetchFailed(error);
  62417. });
  62418. }
  62419. }, {
  62420. key: "_getRestMapFields",
  62421. value: function _getRestMapFields(url, layerName, callBack) {
  62422. var _this6 = this;
  62423. var withCredentials = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
  62424. var param = new SuperMap.QueryBySQLParameters({
  62425. queryParams: [new SuperMap.FilterParameter({
  62426. name: layerName,
  62427. attributeFilter: 'SMID=0'
  62428. })]
  62429. });
  62430. var queryBySQLSerice = new SuperMap.QueryBySQLService(url, {
  62431. proxy: this.options.proxy,
  62432. withCredentials: withCredentials,
  62433. eventListeners: {
  62434. processCompleted: function processCompleted(serviceResult) {
  62435. var fields;
  62436. if (serviceResult.result) {
  62437. var result = serviceResult.result.recordsets[0];
  62438. fields = _this6._getFiledsByType(['CHAR', 'TEXT', 'WTEXT'], result.fieldCaptions, result.fieldTypes);
  62439. }
  62440. fields && callBack(fields, serviceResult.result.recordsets[0]);
  62441. },
  62442. processFailed: function processFailed(serviceResult) {
  62443. console.error(serviceResult.error);
  62444. _this6.fetchFailed(serviceResult.error);
  62445. }
  62446. }
  62447. });
  62448. queryBySQLSerice.processAsync(param);
  62449. }
  62450. }, {
  62451. key: "_getAttributeFilterByKeywords",
  62452. value: function _getAttributeFilterByKeywords(fields, keyWord) {
  62453. var attributeFilter = '';
  62454. fields && fields.forEach(function (field, index) {
  62455. attributeFilter += index !== fields.length - 1 ? "".concat(field, " LIKE '%").concat(keyWord, "%' ") + 'OR ' : "".concat(field, " LIKE '%").concat(keyWord, "%'");
  62456. }, this);
  62457. return attributeFilter;
  62458. }
  62459. /**
  62460. * @function iServerRestService.prototype._checkUrl
  62461. * @description 检查url是否符合要求
  62462. * @private
  62463. * @param {string} url
  62464. */
  62465. }, {
  62466. key: "_checkUrl",
  62467. value: function _checkUrl(url) {
  62468. var match;
  62469. if (url === '' || !(0, _util.isMatchUrl)(url)) {
  62470. match = false;
  62471. } else {
  62472. match = true;
  62473. } // else if (/^http[s]?:\/\/localhost/.test(url) || /^http[s]?:\/\/127.0.0.1/.test(url)) {
  62474. // //不是实际域名
  62475. // match = false;
  62476. // }
  62477. return match;
  62478. } // types => []string
  62479. }, {
  62480. key: "_getFiledsByType",
  62481. value: function _getFiledsByType(types, fields, fieldTypes) {
  62482. var resultFileds = [];
  62483. fields.forEach(function (field, index) {
  62484. types.includes(fieldTypes && fieldTypes[index] || field.type) && resultFileds.push(fieldTypes ? field : field.name);
  62485. });
  62486. return resultFileds;
  62487. }
  62488. }, {
  62489. key: "fetchFailed",
  62490. value: function fetchFailed(error) {
  62491. this.triggerEvent('getdatafailed', {
  62492. error: error
  62493. });
  62494. }
  62495. }]);
  62496. return iServerRestService;
  62497. }(_Events2.Events);
  62498. exports.default = iServerRestService;
  62499. /***/ }),
  62500. /***/ "e3e2":
  62501. /***/ (function(module, exports, __webpack_require__) {
  62502. "use strict";
  62503. var _interopRequireDefault = __webpack_require__("8e6d");
  62504. Object.defineProperty(exports, "__esModule", {
  62505. value: true
  62506. });
  62507. exports.Events = void 0;
  62508. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  62509. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  62510. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  62511. var _Pixel = __webpack_require__("9270");
  62512. var _Event = __webpack_require__("fe5a");
  62513. var _BaseTypes = __webpack_require__("63f3");
  62514. var _Util = __webpack_require__("1a9e");
  62515. /* Copyright© 2000 - 2020 SuperMap Software Co.Ltd. All rights reserved.
  62516. * This program are made available under the terms of the Apache License, Version 2.0
  62517. * which accompanies this distribution and is available at http://www.apache.org/licenses/LICENSE-2.0.html. */
  62518. /**
  62519. * @class Events
  62520. * @classdesc 事件类。
  62521. * @param {Object} object - 当前事件对象被添加到的 JS 对象。
  62522. * @param {HTMLElement} element - 响应浏览器事件的 DOM 元素。
  62523. * @param {Array.<string>} eventTypes - 自定义应用事件的数组。
  62524. * @param {boolean} [fallThrough=false] - 是否允许事件处理之后向上传递(冒泡),为 false 的时候阻止事件冒泡。
  62525. * @param {Object} options - 事件对象选项。
  62526. */
  62527. var Events =
  62528. /*#__PURE__*/
  62529. function () {
  62530. function Events(object, element, eventTypes, fallThrough, options) {
  62531. (0, _classCallCheck2.default)(this, Events);
  62532. /**
  62533. * @member {Array.<string>} Events.prototype.BROWSER_EVENTS
  62534. * @description 支持的事件。
  62535. * @constant
  62536. * @default [
  62537. "mouseover", "mouseout","mousedown", "mouseup", "mousemove",
  62538. "click", "dblclick", "rightclick", "dblrightclick","resize",
  62539. "focus", "blur","touchstart", "touchmove", "touchend","keydown",
  62540. "MSPointerDown", "MSPointerUp", "pointerdown", "pointerup",
  62541. "MSGestureStart", "MSGestureChange", "MSGestureEnd","contextmenu"
  62542. ]
  62543. */
  62544. this.BROWSER_EVENTS = ['mouseover', 'mouseout', 'mousedown', 'mouseup', 'mousemove', 'click', 'dblclick', 'rightclick', 'dblrightclick', 'resize', 'focus', 'blur', 'touchstart', 'touchmove', 'touchend', 'keydown', 'MSPointerDown', 'MSPointerUp', 'pointerdown', 'pointerup', 'MSGestureStart', 'MSGestureChange', 'MSGestureEnd', 'contextmenu'];
  62545. this.listeners = {};
  62546. this.object = object;
  62547. this.element = null;
  62548. this.eventTypes = [];
  62549. this.eventHandler = null;
  62550. this.fallThrough = fallThrough;
  62551. this.includeXY = false;
  62552. this.extensions = {};
  62553. this.extensionCount = {};
  62554. this.clearMouseListener = null;
  62555. _Util.Util.extend(this, options);
  62556. if (eventTypes != null) {
  62557. for (var i = 0, len = eventTypes.length; i < len; i++) {
  62558. this.addEventType(eventTypes[i]);
  62559. }
  62560. }
  62561. if (element != null) {
  62562. this.attachToElement(element);
  62563. }
  62564. this.CLASS_NAME = 'Events';
  62565. }
  62566. /**
  62567. * @function Events.prototype.destroy
  62568. * @description 移除当前要素 element 上的所有事件监听和处理。
  62569. */
  62570. (0, _createClass2.default)(Events, [{
  62571. key: "destroy",
  62572. value: function destroy() {
  62573. for (var e in this.extensions) {
  62574. if (typeof this.extensions[e] !== 'boolean') {
  62575. this.extensions[e].destroy();
  62576. }
  62577. }
  62578. this.extensions = null;
  62579. if (this.element) {
  62580. _Event.Event.stopObservingElement(this.element);
  62581. if (this.element.hasScrollEvent) {
  62582. _Event.Event.stopObserving(window, 'scroll', this.clearMouseListener);
  62583. }
  62584. }
  62585. this.element = null;
  62586. this.listeners = null;
  62587. this.object = null;
  62588. this.eventTypes = null;
  62589. this.fallThrough = null;
  62590. this.eventHandler = null;
  62591. }
  62592. /**
  62593. * @function Events.prototype.addEventType
  62594. * @description 在此事件对象中添加新的事件类型,如果这个事件类型已经添加过了,则不做任何事情。
  62595. * @param {string} eventName - 事件名。
  62596. */
  62597. }, {
  62598. key: "addEventType",
  62599. value: function addEventType(eventName) {
  62600. if (!this.listeners[eventName]) {
  62601. this.eventTypes.push(eventName);
  62602. this.listeners[eventName] = [];
  62603. }
  62604. }
  62605. /**
  62606. * @function Events.prototype.attachToElement
  62607. * @description 给 DOM 元素绑定浏览器事件。
  62608. * @param {HTMLDOMElement} element - 绑定浏览器事件的 DOM 元素。
  62609. */
  62610. }, {
  62611. key: "attachToElement",
  62612. value: function attachToElement(element) {
  62613. if (this.element) {
  62614. _Event.Event.stopObservingElement(this.element);
  62615. } else {
  62616. // keep a bound copy of handleBrowserEvent() so that we can
  62617. // pass the same function to both Event.observe() and .stopObserving()
  62618. this.eventHandler = _BaseTypes.FunctionExt.bindAsEventListener(this.handleBrowserEvent, this); // to be used with observe and stopObserving
  62619. this.clearMouseListener = _BaseTypes.FunctionExt.bind(this.clearMouseCache, this);
  62620. }
  62621. this.element = element;
  62622. for (var i = 0, len = this.BROWSER_EVENTS.length; i < len; i++) {
  62623. var eventType = this.BROWSER_EVENTS[i]; // every browser event has a corresponding application event
  62624. // (whether it's listened for or not).
  62625. this.addEventType(eventType); // use Prototype to register the event cross-browser
  62626. _Event.Event.observe(element, eventType, this.eventHandler);
  62627. } // disable dragstart in IE so that mousedown/move/up works normally
  62628. _Event.Event.observe(element, 'dragstart', _Event.Event.stop);
  62629. }
  62630. }, {
  62631. key: "on",
  62632. value: function on(object) {
  62633. for (var type in object) {
  62634. if (type !== 'scope' && object.hasOwnProperty(type)) {
  62635. this.register(type, object.scope, object[type]);
  62636. }
  62637. }
  62638. }
  62639. }, {
  62640. key: "register",
  62641. value: function register(type, obj, func, priority) {
  62642. if (type in Events && !this.extensions[type]) {
  62643. this.extensions[type] = new Events[type](this);
  62644. }
  62645. if (func != null && _Util.Util.indexOf(this.eventTypes, type) !== -1) {
  62646. if (obj == null) {
  62647. obj = this.object;
  62648. }
  62649. var listeners = this.listeners[type];
  62650. if (!listeners) {
  62651. listeners = [];
  62652. this.listeners[type] = listeners;
  62653. this.extensionCount[type] = 0;
  62654. }
  62655. var listener = {
  62656. obj: obj,
  62657. func: func
  62658. };
  62659. if (priority) {
  62660. listeners.splice(this.extensionCount[type], 0, listener);
  62661. if ((0, _typeof2.default)(priority) === 'object' && priority.extension) {
  62662. this.extensionCount[type]++;
  62663. }
  62664. } else {
  62665. listeners.push(listener);
  62666. }
  62667. }
  62668. }
  62669. }, {
  62670. key: "registerPriority",
  62671. value: function registerPriority(type, obj, func) {
  62672. this.register(type, obj, func, true);
  62673. }
  62674. }, {
  62675. key: "un",
  62676. value: function un(object) {
  62677. for (var type in object) {
  62678. if (type !== 'scope' && object.hasOwnProperty(type)) {
  62679. this.unregister(type, object.scope, object[type]);
  62680. }
  62681. }
  62682. }
  62683. }, {
  62684. key: "unregister",
  62685. value: function unregister(type, obj, func) {
  62686. if (obj == null) {
  62687. obj = this.object;
  62688. }
  62689. var listeners = this.listeners[type];
  62690. if (listeners != null) {
  62691. for (var i = 0, len = listeners.length; i < len; i++) {
  62692. if (listeners[i].obj === obj && listeners[i].func === func) {
  62693. listeners.splice(i, 1);
  62694. break;
  62695. }
  62696. }
  62697. }
  62698. }
  62699. /**
  62700. * @function Events.prototype.remove
  62701. * @description 删除某个事件类型的所有监听,如果该事件类型没有注册,则不做任何操作。
  62702. * @param {string} type - 事件类型。
  62703. */
  62704. }, {
  62705. key: "remove",
  62706. value: function remove(type) {
  62707. if (this.listeners[type] != null) {
  62708. this.listeners[type] = [];
  62709. }
  62710. }
  62711. }, {
  62712. key: "triggerEvent",
  62713. value: function triggerEvent(type, evt) {
  62714. var listeners = this.listeners[type]; // fast path
  62715. if (!listeners || listeners.length === 0) {
  62716. return undefined;
  62717. } // prep evt object with object & div references
  62718. if (evt == null) {
  62719. evt = {};
  62720. }
  62721. evt.object = this.object;
  62722. evt.element = this.element;
  62723. if (!evt.type) {
  62724. evt.type = type;
  62725. } // execute all callbacks registered for specified type
  62726. // get a clone of the listeners array to
  62727. // allow for splicing during callbacks
  62728. listeners = listeners.slice();
  62729. var continueChain;
  62730. for (var i = 0, len = listeners.length; i < len; i++) {
  62731. var callback = listeners[i]; // bind the context to callback.obj
  62732. continueChain = callback.func.apply(callback.obj, [evt]);
  62733. if (continueChain !== undefined && continueChain === false) {
  62734. // if callback returns false, execute no more callbacks.
  62735. break;
  62736. }
  62737. } // don't fall through to other DOM elements
  62738. if (!this.fallThrough) {
  62739. _Event.Event.stop(evt, true);
  62740. }
  62741. return continueChain;
  62742. }
  62743. }, {
  62744. key: "handleBrowserEvent",
  62745. value: function handleBrowserEvent(evt) {
  62746. var type = evt.type;
  62747. var listeners = this.listeners[type];
  62748. if (!listeners || listeners.length === 0) {
  62749. // noone's listening, bail out
  62750. return;
  62751. } // add clientX & clientY to all events - corresponds to average x, y
  62752. var touches = evt.touches;
  62753. if (touches && touches[0]) {
  62754. var x = 0;
  62755. var y = 0;
  62756. var num = touches.length;
  62757. var touch;
  62758. for (var i = 0; i < num; ++i) {
  62759. touch = touches[i];
  62760. x += touch.clientX;
  62761. y += touch.clientY;
  62762. }
  62763. evt.clientX = x / num;
  62764. evt.clientY = y / num;
  62765. }
  62766. if (this.includeXY) {
  62767. evt.xy = this.getMousePosition(evt);
  62768. }
  62769. this.triggerEvent(type, evt);
  62770. }
  62771. /**
  62772. * @function Events.prototype.clearMouseCache
  62773. * @description 清除鼠标缓存。
  62774. */
  62775. }, {
  62776. key: "clearMouseCache",
  62777. value: function clearMouseCache() {
  62778. this.element.scrolls = null;
  62779. this.element.lefttop = null;
  62780. var body = document.body;
  62781. if (body && !((body.scrollTop !== 0 || body.scrollLeft !== 0) && navigator.userAgent.match(/iPhone/i))) {
  62782. this.element.offsets = null;
  62783. }
  62784. }
  62785. /**
  62786. * @function Events.prototype.getMousePosition
  62787. * @returns {Pixel} 当前的鼠标的 xy 坐标点。
  62788. */
  62789. }, {
  62790. key: "getMousePosition",
  62791. value: function getMousePosition(evt) {
  62792. if (!this.includeXY) {
  62793. this.clearMouseCache();
  62794. } else if (!this.element.hasScrollEvent) {
  62795. _Event.Event.observe(window, 'scroll', this.clearMouseListener);
  62796. this.element.hasScrollEvent = true;
  62797. }
  62798. if (!this.element.scrolls) {
  62799. var viewportElement = _Util.Util.getViewportElement();
  62800. this.element.scrolls = [viewportElement.scrollLeft, viewportElement.scrollTop];
  62801. }
  62802. if (!this.element.lefttop) {
  62803. this.element.lefttop = [document.documentElement.clientLeft || 0, document.documentElement.clientTop || 0];
  62804. }
  62805. if (!this.element.offsets) {
  62806. this.element.offsets = _Util.Util.pagePosition(this.element);
  62807. }
  62808. return new _Pixel.Pixel(evt.clientX + this.element.scrolls[0] - this.element.offsets[0] - this.element.lefttop[0], evt.clientY + this.element.scrolls[1] - this.element.offsets[1] - this.element.lefttop[1]);
  62809. }
  62810. }]);
  62811. return Events;
  62812. }();
  62813. exports.Events = Events;
  62814. Events.prototype.BROWSER_EVENTS = ['mouseover', 'mouseout', 'mousedown', 'mouseup', 'mousemove', 'click', 'dblclick', 'rightclick', 'dblrightclick', 'resize', 'focus', 'blur', 'touchstart', 'touchmove', 'touchend', 'keydown', 'MSPointerDown', 'MSPointerUp', 'pointerdown', 'pointerup', 'MSGestureStart', 'MSGestureChange', 'MSGestureEnd', 'contextmenu'];
  62815. /***/ }),
  62816. /***/ "e447":
  62817. /***/ (function(module, exports) {
  62818. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAeCAYAAADQBxWhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA25pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpmZDdjMWRjYi03ZmQ0LWRkNDUtOTYwYi03ZDI4N2E3YzE1NTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjM3OTIwRTBCNjJBMTFFMzk1NTE5NDNCOEIwNDE2NDkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjM1NTkyRDVCNjJBMTFFMzk1NTE5NDNCOEIwNDE2NDkiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpkNzA1ZmFjMi05YWNiLWFhNDUtOGI1Ny01ZTMzM2MzOGU3YjQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NDkyNDhDNTc3MUU5MTFFM0JCMDY4QjkwNjk5QzNFQ0MiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7CxzDiAAAEqUlEQVR42qRXW2wUVRj+d2f2Mnvfbi/bFmgt0hhJ44VEQ1EjFZNajRYFookaXkyNYoJRjA+YGF6M4otRE3gwiDHiBQvyYBuCwaiASlKbEB6ArEq2tN26u93rzOzu7K7/PzuznbG7s7v4J1/mXP/vnP9yzhlT8Ngo1BET4iHEdsQwoh/hQyQQfyPOI04gflh4eqoMLYipDumDiPc5B7fJ4XKCnbMDa7GA2WyGUqkEUqEAoiACn8mCwAszOPZ1JD57s6QWxId2Bzfh8XrA6XY1VJBNZyCVTIHIC4ex+gqSFxrNMWvKVsSkx+ed6F7T0xQhCY2j8TSPzN395SPWVkg/8Pi9jwU626sN7YwLtrmHmiKneTj/UdLTrHlHOadjKtjbreskwgMbJmB4Zk+17fn2rdBlbdON+yN9Fc6kL8nlxRsLIGT5MTTzVD1SVonS98iHWrK73IPQafXL9X09T8nfk7FzMMD1Qj+3sri1XJf8VUk9Pg+Rvotmnq4X1UQ6jNE5RFGqSo+tHTa6BsDB2OU6lUl+TMzC2+HPdQo+HdynqzuccrQPYXRTmp2rRzquJST5LHpWhmre3VcPtpKGQPqQdNyIdATzUdeomvO/5o3k4zXNeznzp26+om/EyKf9LGvRNarmJInlkzDasRnCQgScAicTBqw++Ck+I/cTIQWSTmlF3y1GpD4zY9Y1kjlpdxQ444Et8iJUE5MPY/kEHJz/tjr+pa4xmOX/gmgxU8nDij6/UZ4uFaXiqo7twa3QZ+2o5CDujBZRK2c32ILwbO8Y3OlY2RgdlSgpo53ekCQpyLDMqk4346gEBmOTd0s+VRehLuA+3x26lCGRChJ9rhuRzuRzuU02u013EpE80fmA7DPyp2retMTDnr6dclSrcmJRf9bnRJE+vxqRnsTb4gW35nC4372xuiM1iKoEid9kGAndPiinjEhP81k+JArCejtXSZ2HA/fAbPIKHFn4Hl5e8yQMuvrg/N0fwRyS80WxpqKP5ybhIh/C/BSA9GHTtBEpOWB/KpE6ppISmRf9SUrIrBQsalCpQsekVi7KPBg9CTl+9uMRKDVzn37t9ft2tnUE4GYl/k8MksuJb5BwV7NX226ccIEm/g/CC6Sn0VjGteNWtUw3/lcYebdj3t7GsCyeLGxDspyYg0RsGc2a/I7SG3eZbYWUJE9mxhQKp5Ope8ulsgvvWcPdRSNLERy/F6tvImG+GavU2grdgZ8gvkBznWIt7DZ8iqwahDsjc57B4uNIJrTiCrNBHynaG1uKSuXy6rsY2+nsfLVVQvVtSwCM4npv10O+gH/CH1h5oizH4uTHw4vPTL+o0WGqs4myArUsD2TUjjrEnYhrawf6PBRYeE5DOHQ9nTl+bUtmMhTVKC1pvqUa9eoYs7I6k4E1lhDvpJaTFV/iV5rLHEFCqrYpV5hXgRtBBzc9RSgC6b1jU563rAKzyeC3Qit2KJevdK/rXTcfCkeir/38XDEqn+pFDSQF2rKkpKKkZAahwDbpe7GUld7CI+6o+HvkKBJaFbdoCeLKHZpTkNcsotQoZWpK9I1fjpcPbB5JHrp0WjH5vEIiaQKlKflXgAEAXi/626c6JuQAAAAASUVORK5CYII="
  62819. /***/ }),
  62820. /***/ "e453":
  62821. /***/ (function(module, exports, __webpack_require__) {
  62822. "use strict";
  62823. var _interopRequireDefault = __webpack_require__("8e6d");
  62824. Object.defineProperty(exports, "__esModule", {
  62825. value: true
  62826. });
  62827. exports.default = void 0;
  62828. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  62829. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  62830. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  62831. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  62832. var _card = _interopRequireDefault(__webpack_require__("333c"));
  62833. var _TdtRouteViewModel = _interopRequireDefault(__webpack_require__("9e24"));
  62834. var _RoutePlan = _interopRequireDefault(__webpack_require__("c2cb"));
  62835. var _PointsResult = _interopRequireDefault(__webpack_require__("bf3b"));
  62836. var _StatisticsResult = _interopRequireDefault(__webpack_require__("86b3"));
  62837. var _NothingResult = _interopRequireDefault(__webpack_require__("b45e"));
  62838. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  62839. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  62840. var _default2 = {
  62841. name: 'SmTdtRoute',
  62842. components: {
  62843. RoutePlan: _RoutePlan.default,
  62844. PointsResult: _PointsResult.default,
  62845. StatisticsResult: _StatisticsResult.default,
  62846. NothingResult: _NothingResult.default
  62847. },
  62848. mixins: [_mapGetter.default, _control.default, _theme.default, _card.default],
  62849. props: {
  62850. collapsed: {
  62851. type: Boolean,
  62852. // 是否折叠
  62853. default: true
  62854. },
  62855. iconClass: {
  62856. type: String,
  62857. default: 'sm-components-icons-luxian'
  62858. },
  62859. headerName: {
  62860. type: String,
  62861. default: function _default() {
  62862. return this.$t('tdtRoute.title');
  62863. }
  62864. },
  62865. data: {
  62866. type: Object,
  62867. default: function _default() {
  62868. return {
  62869. carUrl: 'https://api.tianditu.gov.cn/drive',
  62870. busUrl: 'https://api.tianditu.gov.cn/transit',
  62871. searchUrl: 'https://api.tianditu.gov.cn/search',
  62872. tk: ''
  62873. };
  62874. }
  62875. }
  62876. },
  62877. data: function data() {
  62878. return {
  62879. routeActive: 'car',
  62880. start: '',
  62881. end: '',
  62882. status: '',
  62883. // toSetStart toSetEnd finished
  62884. routePlan: null,
  62885. spinning: false,
  62886. showRoutePlan: false,
  62887. searchResult: [],
  62888. isError: false,
  62889. componentId: null,
  62890. componentProps: {},
  62891. componentListeners: {}
  62892. };
  62893. },
  62894. watch: {
  62895. routeActive: function routeActive() {
  62896. this.spinning = true;
  62897. this.routePlan = null;
  62898. this.viewModel && this.viewModel.setSearchType(this.routeActive);
  62899. this.searchRoute();
  62900. },
  62901. data: function data(newVal, oldVal) {
  62902. this.spinning = true; // this.clearRoute();
  62903. this.viewModel && this.viewModel.setData(this.data);
  62904. },
  62905. status: function status(val) {
  62906. if (val === 'toSetStart') {
  62907. this.getResultDetail(this.start);
  62908. return;
  62909. }
  62910. if (val === 'toSetEnd') {
  62911. this.getResultDetail(this.end);
  62912. return;
  62913. }
  62914. if (val === 'finished') {
  62915. this.searchRoute();
  62916. }
  62917. },
  62918. textColorsData: {
  62919. handler: function handler() {
  62920. this.changeSearchInputStyle();
  62921. this.componentProps = Object.assign({}, this.componentProps, this.$props);
  62922. }
  62923. }
  62924. },
  62925. beforeDestroy: function beforeDestroy() {
  62926. this.clearRoute();
  62927. },
  62928. created: function created() {
  62929. this.viewModel = new _TdtRouteViewModel.default({
  62930. type: this.routeActive,
  62931. data: this.data
  62932. });
  62933. },
  62934. mounted: function mounted() {
  62935. this.changeSearchInputStyle();
  62936. },
  62937. methods: {
  62938. changeSearchInputStyle: function changeSearchInputStyle() {
  62939. var _this = this;
  62940. var serachInput = this.$el.querySelectorAll('.ant-input');
  62941. serachInput.forEach(function (item) {
  62942. item.style.color = _this.getTextColor;
  62943. });
  62944. },
  62945. switchRoute: function switchRoute() {
  62946. if (this.start || this.end) {
  62947. var _ref = [this.end, this.start];
  62948. this.start = _ref[0];
  62949. this.end = _ref[1];
  62950. }
  62951. if (this.startLnglat || this.endLnglat) {
  62952. var _ref2 = [this.endLnglat, this.startLnglat];
  62953. this.startLnglat = _ref2[0];
  62954. this.endLnglat = _ref2[1];
  62955. }
  62956. },
  62957. searchClicked: function searchClicked() {
  62958. var _this2 = this;
  62959. this.status = '';
  62960. this.$nextTick(function () {
  62961. if (_this2.start && _this2.end) {
  62962. _this2.showRoutePlan = false;
  62963. _this2.status = 'toSetStart';
  62964. _this2.viewModel && _this2.viewModel.removed();
  62965. }
  62966. });
  62967. },
  62968. getResultDetail: function getResultDetail(keyWord, params) {
  62969. var _this3 = this;
  62970. var mapBound = (params ? params.mapBound : '') || this.viewModel._toBBoxString();
  62971. this.viewModel.searchPoints(keyWord, params).then(function (res) {
  62972. if (!res) return;
  62973. var type = res.type,
  62974. result = res.result;
  62975. var componentProps = _objectSpread({}, _this3.$props, {
  62976. data: result.data,
  62977. prompt: result.prompt,
  62978. keyWord: keyWord,
  62979. count: result.count,
  62980. from: 'Route',
  62981. pageSize: 4,
  62982. mapBound: mapBound
  62983. });
  62984. var componentListeners = {};
  62985. switch (type) {
  62986. case 'Point':
  62987. _this3.componentId = 'PointsResult';
  62988. componentProps.openPurePoiSearch = true;
  62989. componentProps.specifyAdminSearch = params && !!params.specifyAdminCode;
  62990. componentProps.resultBelongTo = _this3.status === 'toSetStart' ? 'start' : 'end';
  62991. componentListeners['reset-start-point'] = _this3.resetStartPoint;
  62992. componentListeners['reset-end-point'] = _this3.resetEndPoint;
  62993. componentListeners['change-pagination'] = _this3.getResultDetail;
  62994. componentListeners['set-highlight-icon'] = _this3.setHighlightIcon;
  62995. break;
  62996. case 'Statistics':
  62997. _this3.componentId = 'StatisticsResult';
  62998. componentProps.data = result.data.allAdmins;
  62999. componentProps.priorityCitys = result.data.priorityCitys;
  63000. componentListeners['search-points-result'] = _this3.getResultDetail;
  63001. break;
  63002. default:
  63003. _this3.componentId = 'NothingResult';
  63004. break;
  63005. }
  63006. _this3.componentProps = componentProps;
  63007. _this3.componentListeners = componentListeners;
  63008. }).catch(function (err) {
  63009. console.log(err);
  63010. });
  63011. },
  63012. searchRoute: function searchRoute() {
  63013. var _this4 = this;
  63014. if (this.startLnglat && this.endLnglat) {
  63015. this.viewModel && this.viewModel.search(this.startLnglat, this.endLnglat).then(function (result) {
  63016. _this4.spinning = false;
  63017. _this4.showRoutePlan = true;
  63018. _this4.routePlan = result || null;
  63019. if (!result) {
  63020. _this4.searchFailed();
  63021. }
  63022. });
  63023. } else {
  63024. this.spinning = false;
  63025. }
  63026. },
  63027. resetStatus: function resetStatus(status) {
  63028. if (this.status !== 'status') {
  63029. this.status = status;
  63030. }
  63031. },
  63032. resetStartPoint: function resetStartPoint(data) {
  63033. if (data) {
  63034. this.start = data.name;
  63035. this.startLnglat = data.lonlat ? [+data.lonlat.split(' ')[0], +data.lonlat.split(' ')[1]] : [0, 0];
  63036. this.componentId = null;
  63037. this.status = 'toSetEnd';
  63038. }
  63039. },
  63040. resetEndPoint: function resetEndPoint(data) {
  63041. if (data) {
  63042. this.end = data.name;
  63043. this.endLnglat = data.lonlat ? [+data.lonlat.split(' ')[0], +data.lonlat.split(' ')[1]] : [0, 0];
  63044. this.componentId = null;
  63045. this.status = 'finished';
  63046. }
  63047. },
  63048. setHighlightIcon: function setHighlightIcon(hotPointID) {
  63049. this.viewModel && this.viewModel.setHighlightIcon(hotPointID);
  63050. },
  63051. styleChanged: function styleChanged(val) {
  63052. this.spinning = true;
  63053. this.routePlan = null;
  63054. this.viewModel.setSearchStyle(val);
  63055. this.searchRoute();
  63056. },
  63057. routePlanClicked: function routePlanClicked(index, parentIndex) {
  63058. this.viewModel && this.viewModel.setHighlightRoute(index, parentIndex);
  63059. },
  63060. busInfoClicked: function busInfoClicked(index, show) {
  63061. this.viewModel && this.viewModel.setLayerFeatures(index, show);
  63062. },
  63063. searchFailed: function searchFailed() {
  63064. this.isError = true;
  63065. this.routePlan = null;
  63066. this.viewModel && this.viewModel.removed();
  63067. },
  63068. clearRoute: function clearRoute() {
  63069. this.start = '';
  63070. this.end = '';
  63071. this.startLnglat = null;
  63072. this.endLnglat = null;
  63073. this.status = '';
  63074. this.showRoutePlan = false;
  63075. this.routePlan = null;
  63076. this.viewModel && this.viewModel.removed();
  63077. },
  63078. clearStart: function clearStart() {
  63079. this.start = '';
  63080. this.startLnglat = null;
  63081. this.status = '';
  63082. this.showRoutePlan = false;
  63083. this.routePlan = null;
  63084. },
  63085. clearEnd: function clearEnd() {
  63086. this.end = '';
  63087. this.endLnglat = null;
  63088. this.status = '';
  63089. this.showRoutePlan = false;
  63090. this.routePlan = null;
  63091. }
  63092. }
  63093. };
  63094. exports.default = _default2;
  63095. /***/ }),
  63096. /***/ "e4fa":
  63097. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  63098. "use strict";
  63099. __webpack_require__.r(__webpack_exports__);
  63100. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TablePopup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("10ba");
  63101. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TablePopup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TablePopup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  63102. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TablePopup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TablePopup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  63103. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_TablePopup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  63104. /***/ }),
  63105. /***/ "e525":
  63106. /***/ (function(module, exports, __webpack_require__) {
  63107. "use strict";
  63108. // Copyright Joyent, Inc. and other Node contributors.
  63109. //
  63110. // Permission is hereby granted, free of charge, to any person obtaining a
  63111. // copy of this software and associated documentation files (the
  63112. // "Software"), to deal in the Software without restriction, including
  63113. // without limitation the rights to use, copy, modify, merge, publish,
  63114. // distribute, sublicense, and/or sell copies of the Software, and to permit
  63115. // persons to whom the Software is furnished to do so, subject to the
  63116. // following conditions:
  63117. //
  63118. // The above copyright notice and this permission notice shall be included
  63119. // in all copies or substantial portions of the Software.
  63120. //
  63121. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  63122. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  63123. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  63124. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  63125. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  63126. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  63127. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  63128. // a passthrough stream.
  63129. // basically just the most minimal sort of Transform stream.
  63130. // Every written chunk gets output as-is.
  63131. module.exports = PassThrough;
  63132. var Transform = __webpack_require__("b556");
  63133. /*<replacement>*/
  63134. var util = __webpack_require__("9107");
  63135. util.inherits = __webpack_require__("fe04");
  63136. /*</replacement>*/
  63137. util.inherits(PassThrough, Transform);
  63138. function PassThrough(options) {
  63139. if (!(this instanceof PassThrough)) return new PassThrough(options);
  63140. Transform.call(this, options);
  63141. }
  63142. PassThrough.prototype._transform = function (chunk, encoding, cb) {
  63143. cb(null, chunk);
  63144. };
  63145. /***/ }),
  63146. /***/ "e5f2":
  63147. /***/ (function(module, exports, __webpack_require__) {
  63148. "use strict";
  63149. /* global mapboxgl */
  63150. var syncMove = __webpack_require__("c220");
  63151. var EventEmitter = __webpack_require__("0956").EventEmitter;
  63152. /**
  63153. * @param {Object} a The first Mapbox GL Map
  63154. * @param {Object} b The second Mapbox GL Map
  63155. * @param {string|HTMLElement} container An HTML Element, or an element selector string for the compare container. It should be a wrapper around the two map Elements.
  63156. * @param {Object} options
  63157. * @param {string} [options.orientation=vertical] The orientation of the compare slider. `vertical` creates a vertical slider bar to compare one map on the left (map A) with another map on the right (map B). `horizontal` creates a horizontal slider bar to compare on mop on the top (map A) and another map on the bottom (map B).
  63158. * @param {boolean} [options.mousemove=false] If `true` the compare slider will move with the cursor, otherwise the slider will need to be dragged to move.
  63159. * @example
  63160. * var compare = new mapboxgl.Compare(beforeMap, afterMap, '#wrapper', {
  63161. * orientation: 'vertical',
  63162. * mousemove: true
  63163. * });
  63164. * @see [Swipe between maps](https://www.mapbox.com/mapbox-gl-js/example/mapbox-gl-compare/)
  63165. */
  63166. function Compare(a, b, container, options) {
  63167. this.options = options ? options : {};
  63168. this._mapA = a;
  63169. this._mapB = b;
  63170. this._horizontal = this.options.orientation === 'horizontal';
  63171. this._onDown = this._onDown.bind(this);
  63172. this._onMove = this._onMove.bind(this);
  63173. this._onMouseUp = this._onMouseUp.bind(this);
  63174. this._onTouchEnd = this._onTouchEnd.bind(this);
  63175. this._ev = new EventEmitter();
  63176. this._swiper = document.createElement('div');
  63177. this._swiper.className = this._horizontal ? 'compare-swiper-horizontal' : 'compare-swiper-vertical';
  63178. this._controlContainer = document.createElement('div');
  63179. this._controlContainer.className = this._horizontal ? 'mapboxgl-compare mapboxgl-compare-horizontal' : 'mapboxgl-compare';
  63180. this._controlContainer.className = this._controlContainer.className;
  63181. this._controlContainer.appendChild(this._swiper);
  63182. if (typeof container === 'string' && document.body.querySelectorAll) {
  63183. // get container with a selector
  63184. var appendTarget = document.body.querySelectorAll(container)[0];
  63185. if (!appendTarget) {
  63186. throw new Error('Cannot find element with specified container selector.')
  63187. }
  63188. appendTarget.appendChild(this._controlContainer)
  63189. } else if (container instanceof Element && container.appendChild) {
  63190. // get container directly
  63191. container.appendChild(this._controlContainer)
  63192. } else {
  63193. throw new Error('Invalid container specified. Must be CSS selector or HTML element.')
  63194. }
  63195. this._bounds = b.getContainer().getBoundingClientRect();
  63196. var swiperPosition = (this._horizontal ? this._bounds.height : this._bounds.width) / 2;
  63197. this._setPosition(swiperPosition);
  63198. this._clearSync = syncMove(a, b);
  63199. this._onResize = function() {
  63200. this._bounds = b.getContainer().getBoundingClientRect();
  63201. if (this.currentPosition) this._setPosition(this.currentPosition);
  63202. }.bind(this);
  63203. b.on('resize', this._onResize);
  63204. if (this.options && this.options.mousemove) {
  63205. a.getContainer().addEventListener('mousemove', this._onMove);
  63206. b.getContainer().addEventListener('mousemove', this._onMove);
  63207. }
  63208. this._swiper.addEventListener('mousedown', this._onDown);
  63209. this._swiper.addEventListener('touchstart', this._onDown);
  63210. }
  63211. Compare.prototype = {
  63212. _setPointerEvents: function(v) {
  63213. this._controlContainer.style.pointerEvents = v;
  63214. this._swiper.style.pointerEvents = v;
  63215. },
  63216. _onDown: function(e) {
  63217. if (e.touches) {
  63218. document.addEventListener('touchmove', this._onMove);
  63219. document.addEventListener('touchend', this._onTouchEnd);
  63220. } else {
  63221. document.addEventListener('mousemove', this._onMove);
  63222. document.addEventListener('mouseup', this._onMouseUp);
  63223. }
  63224. },
  63225. _setPosition: function(x) {
  63226. x = Math.min(x, this._horizontal
  63227. ? this._bounds.height
  63228. : this._bounds.width);
  63229. var pos = this._horizontal
  63230. ? 'translate(0, ' + x + 'px)'
  63231. : 'translate(' + x + 'px, 0)';
  63232. this._controlContainer.style.transform = pos;
  63233. this._controlContainer.style.WebkitTransform = pos;
  63234. var clipA = this._horizontal
  63235. ? 'rect(0, 999em, ' + x + 'px, 0)'
  63236. : 'rect(0, ' + x + 'px, ' + this._bounds.height + 'px, 0)';
  63237. var clipB = this._horizontal
  63238. ? 'rect(' + x + 'px, 999em, ' + this._bounds.height + 'px,0)'
  63239. : 'rect(0, 999em, ' + this._bounds.height + 'px,' + x + 'px)';
  63240. this._mapA.getContainer().style.clip = clipA;
  63241. this._mapB.getContainer().style.clip = clipB;
  63242. this.currentPosition = x;
  63243. },
  63244. _onMove: function(e) {
  63245. if (this.options && this.options.mousemove) {
  63246. this._setPointerEvents(e.touches ? 'auto' : 'none');
  63247. }
  63248. this._horizontal
  63249. ? this._setPosition(this._getY(e))
  63250. : this._setPosition(this._getX(e));
  63251. },
  63252. _onMouseUp: function() {
  63253. document.removeEventListener('mousemove', this._onMove);
  63254. document.removeEventListener('mouseup', this._onMouseUp);
  63255. this.fire('slideend', { currentPosition: this.currentPosition });
  63256. },
  63257. _onTouchEnd: function() {
  63258. document.removeEventListener('touchmove', this._onMove);
  63259. document.removeEventListener('touchend', this._onTouchEnd);
  63260. },
  63261. _getX: function(e) {
  63262. e = e.touches ? e.touches[0] : e;
  63263. var x = e.clientX - this._bounds.left;
  63264. if (x < 0) x = 0;
  63265. if (x > this._bounds.width) x = this._bounds.width;
  63266. return x;
  63267. },
  63268. _getY: function(e) {
  63269. e = e.touches ? e.touches[0] : e;
  63270. var y = e.clientY - this._bounds.top;
  63271. if (y < 0) y = 0;
  63272. if (y > this._bounds.height) y = this._bounds.height;
  63273. return y;
  63274. },
  63275. /**
  63276. * Set the position of the slider.
  63277. *
  63278. * @param {number} x Slider position in pixels from left/top.
  63279. */
  63280. setSlider: function(x) {
  63281. this._setPosition(x);
  63282. },
  63283. /**
  63284. * Adds a listener for events of a specified type.
  63285. *
  63286. * @param {string} type The event type to listen for; one of `slideend`.
  63287. * @param {Function} listener The function to be called when the event is fired.
  63288. * @returns {Compare} `this`
  63289. */
  63290. on: function(type, fn) {
  63291. this._ev.on(type, fn);
  63292. return this;
  63293. },
  63294. /**
  63295. * Fire an event of a specified type.
  63296. *
  63297. * @param {string} type The event type to fire; one of `slideend`.
  63298. * @param {Object} data Data passed to the event listener.
  63299. * @returns {Compare} `this`
  63300. */
  63301. fire: function(type, data) {
  63302. this._ev.emit(type, data);
  63303. return this;
  63304. },
  63305. /**
  63306. * Removes an event listener previously added with `Compare#on`.
  63307. *
  63308. * @param {string} type The event type previously used to install the listener.
  63309. * @param {Function} listener The function previously installed as a listener.
  63310. * @returns {Compare} `this`
  63311. */
  63312. off: function(type, fn) {
  63313. this._ev.removeListener(type, fn);
  63314. return this;
  63315. },
  63316. remove: function() {
  63317. this._clearSync();
  63318. this._mapB.off('resize', this._onResize);
  63319. var aContainer = this._mapA.getContainer();
  63320. if (!!aContainer) {
  63321. aContainer.style.clip = null;
  63322. aContainer.removeEventListener('mousemove', this._onMove);
  63323. }
  63324. var bContainer = this._mapB.getContainer();
  63325. if (!!bContainer) {
  63326. bContainer.style.clip = null;
  63327. bContainer.removeEventListener('mousemove', this._onMove);
  63328. }
  63329. this._swiper.removeEventListener('mousedown', this._onDown);
  63330. this._swiper.removeEventListener('touchstart', this._onDown);
  63331. this._controlContainer.remove();
  63332. }
  63333. };
  63334. if (window.mapboxgl) {
  63335. mapboxgl.Compare = Compare;
  63336. } else if (true) {
  63337. module.exports = Compare;
  63338. }
  63339. /***/ }),
  63340. /***/ "e6c4":
  63341. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  63342. "use strict";
  63343. __webpack_require__.r(__webpack_exports__);
  63344. /* harmony import */ var _Measure_vue_vue_type_template_id_6f042706___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("952a");
  63345. /* harmony import */ var _Measure_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("7754");
  63346. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Measure_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Measure_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  63347. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  63348. /* normalize component */
  63349. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  63350. _Measure_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  63351. _Measure_vue_vue_type_template_id_6f042706___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  63352. _Measure_vue_vue_type_template_id_6f042706___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  63353. false,
  63354. null,
  63355. null,
  63356. null
  63357. )
  63358. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  63359. /***/ }),
  63360. /***/ "e736":
  63361. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  63362. "use strict";
  63363. __webpack_require__.r(__webpack_exports__);
  63364. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Text_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("a2ee");
  63365. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Text_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Text_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  63366. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Text_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Text_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  63367. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Text_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  63368. /***/ }),
  63369. /***/ "e76e":
  63370. /***/ (function(module, exports) {
  63371. module.exports = __WEBPACK_EXTERNAL_MODULE_e76e__;
  63372. /***/ }),
  63373. /***/ "e7f3":
  63374. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  63375. "use strict";
  63376. __webpack_require__.r(__webpack_exports__);
  63377. /* harmony import */ var _Iframe_vue_vue_type_template_id_37ec6382___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("b982");
  63378. /* harmony import */ var _Iframe_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("6ed2");
  63379. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Iframe_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Iframe_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  63380. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  63381. /* normalize component */
  63382. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  63383. _Iframe_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  63384. _Iframe_vue_vue_type_template_id_37ec6382___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  63385. _Iframe_vue_vue_type_template_id_37ec6382___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  63386. false,
  63387. null,
  63388. null,
  63389. null
  63390. )
  63391. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  63392. /***/ }),
  63393. /***/ "e8a8":
  63394. /***/ (function(module, exports, __webpack_require__) {
  63395. "use strict";
  63396. var _interopRequireDefault = __webpack_require__("8e6d");
  63397. Object.defineProperty(exports, "__esModule", {
  63398. value: true
  63399. });
  63400. exports.default = void 0;
  63401. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  63402. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  63403. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  63404. var _ZoomViewModel = _interopRequireDefault(__webpack_require__("6a7a"));
  63405. var _util = __webpack_require__("1448");
  63406. //
  63407. //
  63408. //
  63409. //
  63410. //
  63411. //
  63412. //
  63413. //
  63414. //
  63415. //
  63416. //
  63417. //
  63418. //
  63419. //
  63420. //
  63421. //
  63422. //
  63423. //
  63424. //
  63425. //
  63426. //
  63427. //
  63428. //
  63429. //
  63430. //
  63431. //
  63432. //
  63433. //
  63434. //
  63435. //
  63436. //
  63437. //
  63438. //
  63439. //
  63440. //
  63441. //
  63442. //
  63443. //
  63444. //
  63445. //
  63446. //
  63447. //
  63448. var _default = {
  63449. name: 'SmZoom',
  63450. mixins: [_mapGetter.default, _control.default, _theme.default],
  63451. props: {
  63452. showZoom: {
  63453. type: Boolean,
  63454. default: false
  63455. },
  63456. showZoomSlider: {
  63457. type: Boolean,
  63458. default: false
  63459. }
  63460. },
  63461. data: function data() {
  63462. return {
  63463. zoomPosition: 0,
  63464. min: 0,
  63465. max: 22,
  63466. activeZoomMode: '',
  63467. canZoomIn: true,
  63468. canZoomOut: true
  63469. };
  63470. },
  63471. computed: {
  63472. activieBgColor: function activieBgColor() {
  63473. var color = this.getColorStyle(0).color;
  63474. return {
  63475. backgroundColor: this.getBackground,
  63476. borderColor: color
  63477. };
  63478. },
  63479. showZoomStyle: function showZoomStyle() {
  63480. return {
  63481. color: (0, _util.getColorWithOpacity)(this.getBackground, 1),
  63482. background: this.getTextColor
  63483. };
  63484. }
  63485. },
  63486. watch: {
  63487. colorGroupsData: {
  63488. handler: function handler() {
  63489. this.changeSliderStyle();
  63490. }
  63491. }
  63492. },
  63493. created: function created() {
  63494. this.viewModel = new _ZoomViewModel.default();
  63495. },
  63496. mounted: function mounted() {
  63497. this.changeSliderStyle();
  63498. },
  63499. methods: {
  63500. sliderChange: function sliderChange() {
  63501. var mapNotLoaded = this.mapNotLoadedTip();
  63502. if (mapNotLoaded) {
  63503. this.zoomPosition = 0;
  63504. return;
  63505. }
  63506. this.setZoom(this.zoomPosition);
  63507. },
  63508. zoomIn: function zoomIn(e) {
  63509. var mapNotLoaded = this.mapNotLoadedTip();
  63510. if (mapNotLoaded) {
  63511. return;
  63512. }
  63513. this.activeZoomMode = 'zoomInBtn';
  63514. if (this.zoomPosition + 1 <= this.max) {
  63515. // slider的默认步长为1
  63516. this.zoomPosition += 1; // 地图放大一级
  63517. } else {
  63518. this.zoomPosition = this.max;
  63519. }
  63520. this.viewModel.zoomIn();
  63521. },
  63522. zoomOut: function zoomOut(e) {
  63523. var mapNotLoaded = this.mapNotLoadedTip();
  63524. if (mapNotLoaded) {
  63525. return;
  63526. }
  63527. this.activeZoomMode = 'zoomOutBtn';
  63528. if (this.zoomPosition - 1 >= this.min) {
  63529. this.zoomPosition -= 1;
  63530. } else {
  63531. this.zoomPosition = this.min;
  63532. } // 地图缩小一级
  63533. this.viewModel.zoomOut();
  63534. },
  63535. getMaxZoom: function getMaxZoom() {
  63536. return this.viewModel && this.viewModel.getMaxZoom();
  63537. },
  63538. getMinZoom: function getMinZoom() {
  63539. return this.viewModel && this.viewModel.getMinZoom();
  63540. },
  63541. getZoom: function getZoom() {
  63542. return this.viewModel && this.viewModel.getZoom();
  63543. },
  63544. setZoom: function setZoom(zoom) {
  63545. return this.viewModel && this.viewModel.setZoom(zoom);
  63546. },
  63547. getZoomPosition: function getZoomPosition() {
  63548. if (this.canZoomOut || this.canZoomIn) {
  63549. return this.getZoom();
  63550. }
  63551. if (!this.canZoomIn) {
  63552. return this.getMinZoom();
  63553. }
  63554. if (!this.canZoomOut) {
  63555. return this.getMaxZoom();
  63556. }
  63557. },
  63558. changeSliderStyle: function changeSliderStyle() {
  63559. var sliderBar = document.querySelector('.ant-slider-track');
  63560. var sliderBtn = document.querySelector('.ant-slider-handle');
  63561. sliderBar && (sliderBar.style.backgroundColor = this.getColorStyle(0).color);
  63562. sliderBtn && (sliderBtn.style.borderColor = this.getColorStyle(0).color);
  63563. }
  63564. },
  63565. loaded: function loaded() {
  63566. var _this = this;
  63567. this.canZoomIn = this.getMaxZoom() > this.getZoom();
  63568. this.canZoomOut = this.getMinZoom() < this.getZoom();
  63569. this.map.on('zoomend', function () {
  63570. _this.activeZoomMode = '';
  63571. if (_this.getMaxZoom() <= _this.getZoom()) {
  63572. _this.canZoomIn = false;
  63573. } else {
  63574. _this.canZoomIn = true;
  63575. }
  63576. if (_this.getMinZoom() >= _this.getZoom()) {
  63577. _this.canZoomOut = false;
  63578. } else {
  63579. _this.canZoomOut = true;
  63580. } // 设置slider初始值
  63581. _this.zoomPosition = _this.getZoomPosition();
  63582. }); // 设置slider的最大最小值
  63583. this.min = this.getMinZoom();
  63584. this.max = this.getMaxZoom(); // 设置slider初始值
  63585. this.zoomPosition = this.getZoomPosition(); // ZoomViewModel中监听滚轮事件(滚轮缩放地图),改变slider的值
  63586. this.viewModel.wheelEventOn(function () {
  63587. _this.zoomPosition = _this.getZoomPosition();
  63588. }); // this.viewModel.on('mouseWheel', () => {
  63589. // this.zoomPosition = this.getZoomPosition();
  63590. // });
  63591. }
  63592. };
  63593. exports.default = _default;
  63594. /***/ }),
  63595. /***/ "e8d5":
  63596. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  63597. "use strict";
  63598. __webpack_require__.r(__webpack_exports__);
  63599. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_AnimateMarkerLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("c18d");
  63600. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_AnimateMarkerLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_AnimateMarkerLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__);
  63601. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_AnimateMarkerLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_AnimateMarkerLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  63602. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_ts_loader_index_js_ref_1_1_node_modules_vue_loader_lib_index_js_vue_loader_options_AnimateMarkerLayer_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default.a);
  63603. /***/ }),
  63604. /***/ "e916":
  63605. /***/ (function(module, exports, __webpack_require__) {
  63606. "use strict";
  63607. var _interopRequireDefault = __webpack_require__("8e6d");
  63608. Object.defineProperty(exports, "__esModule", {
  63609. value: true
  63610. });
  63611. exports.default = void 0;
  63612. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  63613. var _layer = _interopRequireDefault(__webpack_require__("f6f9"));
  63614. var _MapvLayerViewModel = _interopRequireDefault(__webpack_require__("df08"));
  63615. var _default2 = {
  63616. name: 'SmMapvLayer',
  63617. mixins: [_mapGetter.default, _layer.default],
  63618. props: {
  63619. data: {
  63620. type: Object,
  63621. default: function _default() {
  63622. return {};
  63623. }
  63624. },
  63625. options: {
  63626. type: Object,
  63627. default: function _default() {
  63628. return {};
  63629. }
  63630. }
  63631. },
  63632. watch: {
  63633. data: {
  63634. handler: function handler(val) {
  63635. this.viewModel && this.viewModel.setData(val);
  63636. },
  63637. deep: true
  63638. },
  63639. options: {
  63640. handler: function handler(val) {
  63641. this.viewModel && this.viewModel.setOptions(val);
  63642. },
  63643. deep: true
  63644. }
  63645. },
  63646. created: function created() {
  63647. this.viewModel = new _MapvLayerViewModel.default(this.$props);
  63648. },
  63649. render: function render() {}
  63650. };
  63651. exports.default = _default2;
  63652. /***/ }),
  63653. /***/ "e97f":
  63654. /***/ (function(module, exports, __webpack_require__) {
  63655. "use strict";
  63656. /**
  63657. * Creates a new URL by combining the specified URLs
  63658. *
  63659. * @param {string} baseURL The base URL
  63660. * @param {string} relativeURL The relative URL
  63661. * @returns {string} The combined URL
  63662. */
  63663. module.exports = function combineURLs(baseURL, relativeURL) {
  63664. return relativeURL
  63665. ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
  63666. : baseURL;
  63667. };
  63668. /***/ }),
  63669. /***/ "e9cf":
  63670. /***/ (function(module, exports, __webpack_require__) {
  63671. "use strict";
  63672. var _interopRequireDefault = __webpack_require__("8e6d");
  63673. Object.defineProperty(exports, "__esModule", {
  63674. value: true
  63675. });
  63676. exports.default = void 0;
  63677. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  63678. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  63679. __webpack_require__("3d57");
  63680. __webpack_require__("e5f2");
  63681. var CompareViewModel =
  63682. /*#__PURE__*/
  63683. function () {
  63684. function CompareViewModel(options) {
  63685. (0, _classCallCheck2.default)(this, CompareViewModel);
  63686. this.init(options);
  63687. }
  63688. (0, _createClass2.default)(CompareViewModel, [{
  63689. key: "init",
  63690. value: function init(nextOptions) {
  63691. if (!nextOptions) {
  63692. return;
  63693. }
  63694. this.removed();
  63695. var beforeMap = nextOptions.beforeMap,
  63696. afterMap = nextOptions.afterMap,
  63697. target = nextOptions.target,
  63698. options = nextOptions.options;
  63699. if (beforeMap && afterMap && target) {
  63700. var $window = window;
  63701. var mapboxgl = $window.mapboxgl;
  63702. this.compare = new mapboxgl.Compare(beforeMap, afterMap, "#".concat(target), options);
  63703. }
  63704. }
  63705. }, {
  63706. key: "removed",
  63707. value: function removed() {
  63708. if (this.compare) {
  63709. this.compare.remove();
  63710. this.compare = null;
  63711. }
  63712. }
  63713. }]);
  63714. return CompareViewModel;
  63715. }();
  63716. exports.default = CompareViewModel;
  63717. /***/ }),
  63718. /***/ "ea23":
  63719. /***/ (function(module, exports, __webpack_require__) {
  63720. /* WEBPACK VAR INJECTION */(function(Buffer) {;(function (sax) { // wrapper for non-node envs
  63721. sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }
  63722. sax.SAXParser = SAXParser
  63723. sax.SAXStream = SAXStream
  63724. sax.createStream = createStream
  63725. // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.
  63726. // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),
  63727. // since that's the earliest that a buffer overrun could occur. This way, checks are
  63728. // as rare as required, but as often as necessary to ensure never crossing this bound.
  63729. // Furthermore, buffers are only tested at most once per write(), so passing a very
  63730. // large string into write() might have undesirable effects, but this is manageable by
  63731. // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme
  63732. // edge case, result in creating at most one complete copy of the string passed in.
  63733. // Set to Infinity to have unlimited buffers.
  63734. sax.MAX_BUFFER_LENGTH = 64 * 1024
  63735. var buffers = [
  63736. 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',
  63737. 'procInstName', 'procInstBody', 'entity', 'attribName',
  63738. 'attribValue', 'cdata', 'script'
  63739. ]
  63740. sax.EVENTS = [
  63741. 'text',
  63742. 'processinginstruction',
  63743. 'sgmldeclaration',
  63744. 'doctype',
  63745. 'comment',
  63746. 'opentagstart',
  63747. 'attribute',
  63748. 'opentag',
  63749. 'closetag',
  63750. 'opencdata',
  63751. 'cdata',
  63752. 'closecdata',
  63753. 'error',
  63754. 'end',
  63755. 'ready',
  63756. 'script',
  63757. 'opennamespace',
  63758. 'closenamespace'
  63759. ]
  63760. function SAXParser (strict, opt) {
  63761. if (!(this instanceof SAXParser)) {
  63762. return new SAXParser(strict, opt)
  63763. }
  63764. var parser = this
  63765. clearBuffers(parser)
  63766. parser.q = parser.c = ''
  63767. parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH
  63768. parser.opt = opt || {}
  63769. parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags
  63770. parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'
  63771. parser.tags = []
  63772. parser.closed = parser.closedRoot = parser.sawRoot = false
  63773. parser.tag = parser.error = null
  63774. parser.strict = !!strict
  63775. parser.noscript = !!(strict || parser.opt.noscript)
  63776. parser.state = S.BEGIN
  63777. parser.strictEntities = parser.opt.strictEntities
  63778. parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)
  63779. parser.attribList = []
  63780. // namespaces form a prototype chain.
  63781. // it always points at the current tag,
  63782. // which protos to its parent tag.
  63783. if (parser.opt.xmlns) {
  63784. parser.ns = Object.create(rootNS)
  63785. }
  63786. // mostly just for error reporting
  63787. parser.trackPosition = parser.opt.position !== false
  63788. if (parser.trackPosition) {
  63789. parser.position = parser.line = parser.column = 0
  63790. }
  63791. emit(parser, 'onready')
  63792. }
  63793. if (!Object.create) {
  63794. Object.create = function (o) {
  63795. function F () {}
  63796. F.prototype = o
  63797. var newf = new F()
  63798. return newf
  63799. }
  63800. }
  63801. if (!Object.keys) {
  63802. Object.keys = function (o) {
  63803. var a = []
  63804. for (var i in o) if (o.hasOwnProperty(i)) a.push(i)
  63805. return a
  63806. }
  63807. }
  63808. function checkBufferLength (parser) {
  63809. var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)
  63810. var maxActual = 0
  63811. for (var i = 0, l = buffers.length; i < l; i++) {
  63812. var len = parser[buffers[i]].length
  63813. if (len > maxAllowed) {
  63814. // Text/cdata nodes can get big, and since they're buffered,
  63815. // we can get here under normal conditions.
  63816. // Avoid issues by emitting the text node now,
  63817. // so at least it won't get any bigger.
  63818. switch (buffers[i]) {
  63819. case 'textNode':
  63820. closeText(parser)
  63821. break
  63822. case 'cdata':
  63823. emitNode(parser, 'oncdata', parser.cdata)
  63824. parser.cdata = ''
  63825. break
  63826. case 'script':
  63827. emitNode(parser, 'onscript', parser.script)
  63828. parser.script = ''
  63829. break
  63830. default:
  63831. error(parser, 'Max buffer length exceeded: ' + buffers[i])
  63832. }
  63833. }
  63834. maxActual = Math.max(maxActual, len)
  63835. }
  63836. // schedule the next check for the earliest possible buffer overrun.
  63837. var m = sax.MAX_BUFFER_LENGTH - maxActual
  63838. parser.bufferCheckPosition = m + parser.position
  63839. }
  63840. function clearBuffers (parser) {
  63841. for (var i = 0, l = buffers.length; i < l; i++) {
  63842. parser[buffers[i]] = ''
  63843. }
  63844. }
  63845. function flushBuffers (parser) {
  63846. closeText(parser)
  63847. if (parser.cdata !== '') {
  63848. emitNode(parser, 'oncdata', parser.cdata)
  63849. parser.cdata = ''
  63850. }
  63851. if (parser.script !== '') {
  63852. emitNode(parser, 'onscript', parser.script)
  63853. parser.script = ''
  63854. }
  63855. }
  63856. SAXParser.prototype = {
  63857. end: function () { end(this) },
  63858. write: write,
  63859. resume: function () { this.error = null; return this },
  63860. close: function () { return this.write(null) },
  63861. flush: function () { flushBuffers(this) }
  63862. }
  63863. var Stream
  63864. try {
  63865. Stream = __webpack_require__("92a1").Stream
  63866. } catch (ex) {
  63867. Stream = function () {}
  63868. }
  63869. var streamWraps = sax.EVENTS.filter(function (ev) {
  63870. return ev !== 'error' && ev !== 'end'
  63871. })
  63872. function createStream (strict, opt) {
  63873. return new SAXStream(strict, opt)
  63874. }
  63875. function SAXStream (strict, opt) {
  63876. if (!(this instanceof SAXStream)) {
  63877. return new SAXStream(strict, opt)
  63878. }
  63879. Stream.apply(this)
  63880. this._parser = new SAXParser(strict, opt)
  63881. this.writable = true
  63882. this.readable = true
  63883. var me = this
  63884. this._parser.onend = function () {
  63885. me.emit('end')
  63886. }
  63887. this._parser.onerror = function (er) {
  63888. me.emit('error', er)
  63889. // if didn't throw, then means error was handled.
  63890. // go ahead and clear error, so we can write again.
  63891. me._parser.error = null
  63892. }
  63893. this._decoder = null
  63894. streamWraps.forEach(function (ev) {
  63895. Object.defineProperty(me, 'on' + ev, {
  63896. get: function () {
  63897. return me._parser['on' + ev]
  63898. },
  63899. set: function (h) {
  63900. if (!h) {
  63901. me.removeAllListeners(ev)
  63902. me._parser['on' + ev] = h
  63903. return h
  63904. }
  63905. me.on(ev, h)
  63906. },
  63907. enumerable: true,
  63908. configurable: false
  63909. })
  63910. })
  63911. }
  63912. SAXStream.prototype = Object.create(Stream.prototype, {
  63913. constructor: {
  63914. value: SAXStream
  63915. }
  63916. })
  63917. SAXStream.prototype.write = function (data) {
  63918. if (typeof Buffer === 'function' &&
  63919. typeof Buffer.isBuffer === 'function' &&
  63920. Buffer.isBuffer(data)) {
  63921. if (!this._decoder) {
  63922. var SD = __webpack_require__("5465").StringDecoder
  63923. this._decoder = new SD('utf8')
  63924. }
  63925. data = this._decoder.write(data)
  63926. }
  63927. this._parser.write(data.toString())
  63928. this.emit('data', data)
  63929. return true
  63930. }
  63931. SAXStream.prototype.end = function (chunk) {
  63932. if (chunk && chunk.length) {
  63933. this.write(chunk)
  63934. }
  63935. this._parser.end()
  63936. return true
  63937. }
  63938. SAXStream.prototype.on = function (ev, handler) {
  63939. var me = this
  63940. if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {
  63941. me._parser['on' + ev] = function () {
  63942. var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)
  63943. args.splice(0, 0, ev)
  63944. me.emit.apply(me, args)
  63945. }
  63946. }
  63947. return Stream.prototype.on.call(me, ev, handler)
  63948. }
  63949. // this really needs to be replaced with character classes.
  63950. // XML allows all manner of ridiculous numbers and digits.
  63951. var CDATA = '[CDATA['
  63952. var DOCTYPE = 'DOCTYPE'
  63953. var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'
  63954. var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'
  63955. var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }
  63956. // http://www.w3.org/TR/REC-xml/#NT-NameStartChar
  63957. // This implementation works on strings, a single character at a time
  63958. // as such, it cannot ever support astral-plane characters (10000-EFFFF)
  63959. // without a significant breaking change to either this parser, or the
  63960. // JavaScript language. Implementation of an emoji-capable xml parser
  63961. // is left as an exercise for the reader.
  63962. var nameStart = /[:_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]/
  63963. var nameBody = /[:_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-]/
  63964. var entityStart = /[#:_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]/
  63965. var entityBody = /[#:_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-]/
  63966. function isWhitespace (c) {
  63967. return c === ' ' || c === '\n' || c === '\r' || c === '\t'
  63968. }
  63969. function isQuote (c) {
  63970. return c === '"' || c === '\''
  63971. }
  63972. function isAttribEnd (c) {
  63973. return c === '>' || isWhitespace(c)
  63974. }
  63975. function isMatch (regex, c) {
  63976. return regex.test(c)
  63977. }
  63978. function notMatch (regex, c) {
  63979. return !isMatch(regex, c)
  63980. }
  63981. var S = 0
  63982. sax.STATE = {
  63983. BEGIN: S++, // leading byte order mark or whitespace
  63984. BEGIN_WHITESPACE: S++, // leading whitespace
  63985. TEXT: S++, // general stuff
  63986. TEXT_ENTITY: S++, // &amp and such.
  63987. OPEN_WAKA: S++, // <
  63988. SGML_DECL: S++, // <!BLARG
  63989. SGML_DECL_QUOTED: S++, // <!BLARG foo "bar
  63990. DOCTYPE: S++, // <!DOCTYPE
  63991. DOCTYPE_QUOTED: S++, // <!DOCTYPE "//blah
  63992. DOCTYPE_DTD: S++, // <!DOCTYPE "//blah" [ ...
  63993. DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE "//blah" [ "foo
  63994. COMMENT_STARTING: S++, // <!-
  63995. COMMENT: S++, // <!--
  63996. COMMENT_ENDING: S++, // <!-- blah -
  63997. COMMENT_ENDED: S++, // <!-- blah --
  63998. CDATA: S++, // <![CDATA[ something
  63999. CDATA_ENDING: S++, // ]
  64000. CDATA_ENDING_2: S++, // ]]
  64001. PROC_INST: S++, // <?hi
  64002. PROC_INST_BODY: S++, // <?hi there
  64003. PROC_INST_ENDING: S++, // <?hi "there" ?
  64004. OPEN_TAG: S++, // <strong
  64005. OPEN_TAG_SLASH: S++, // <strong /
  64006. ATTRIB: S++, // <a
  64007. ATTRIB_NAME: S++, // <a foo
  64008. ATTRIB_NAME_SAW_WHITE: S++, // <a foo _
  64009. ATTRIB_VALUE: S++, // <a foo=
  64010. ATTRIB_VALUE_QUOTED: S++, // <a foo="bar
  64011. ATTRIB_VALUE_CLOSED: S++, // <a foo="bar"
  64012. ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar
  64013. ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar="&quot;"
  64014. ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=&quot
  64015. CLOSE_TAG: S++, // </a
  64016. CLOSE_TAG_SAW_WHITE: S++, // </a >
  64017. SCRIPT: S++, // <script> ...
  64018. SCRIPT_ENDING: S++ // <script> ... <
  64019. }
  64020. sax.XML_ENTITIES = {
  64021. 'amp': '&',
  64022. 'gt': '>',
  64023. 'lt': '<',
  64024. 'quot': '"',
  64025. 'apos': "'"
  64026. }
  64027. sax.ENTITIES = {
  64028. 'amp': '&',
  64029. 'gt': '>',
  64030. 'lt': '<',
  64031. 'quot': '"',
  64032. 'apos': "'",
  64033. 'AElig': 198,
  64034. 'Aacute': 193,
  64035. 'Acirc': 194,
  64036. 'Agrave': 192,
  64037. 'Aring': 197,
  64038. 'Atilde': 195,
  64039. 'Auml': 196,
  64040. 'Ccedil': 199,
  64041. 'ETH': 208,
  64042. 'Eacute': 201,
  64043. 'Ecirc': 202,
  64044. 'Egrave': 200,
  64045. 'Euml': 203,
  64046. 'Iacute': 205,
  64047. 'Icirc': 206,
  64048. 'Igrave': 204,
  64049. 'Iuml': 207,
  64050. 'Ntilde': 209,
  64051. 'Oacute': 211,
  64052. 'Ocirc': 212,
  64053. 'Ograve': 210,
  64054. 'Oslash': 216,
  64055. 'Otilde': 213,
  64056. 'Ouml': 214,
  64057. 'THORN': 222,
  64058. 'Uacute': 218,
  64059. 'Ucirc': 219,
  64060. 'Ugrave': 217,
  64061. 'Uuml': 220,
  64062. 'Yacute': 221,
  64063. 'aacute': 225,
  64064. 'acirc': 226,
  64065. 'aelig': 230,
  64066. 'agrave': 224,
  64067. 'aring': 229,
  64068. 'atilde': 227,
  64069. 'auml': 228,
  64070. 'ccedil': 231,
  64071. 'eacute': 233,
  64072. 'ecirc': 234,
  64073. 'egrave': 232,
  64074. 'eth': 240,
  64075. 'euml': 235,
  64076. 'iacute': 237,
  64077. 'icirc': 238,
  64078. 'igrave': 236,
  64079. 'iuml': 239,
  64080. 'ntilde': 241,
  64081. 'oacute': 243,
  64082. 'ocirc': 244,
  64083. 'ograve': 242,
  64084. 'oslash': 248,
  64085. 'otilde': 245,
  64086. 'ouml': 246,
  64087. 'szlig': 223,
  64088. 'thorn': 254,
  64089. 'uacute': 250,
  64090. 'ucirc': 251,
  64091. 'ugrave': 249,
  64092. 'uuml': 252,
  64093. 'yacute': 253,
  64094. 'yuml': 255,
  64095. 'copy': 169,
  64096. 'reg': 174,
  64097. 'nbsp': 160,
  64098. 'iexcl': 161,
  64099. 'cent': 162,
  64100. 'pound': 163,
  64101. 'curren': 164,
  64102. 'yen': 165,
  64103. 'brvbar': 166,
  64104. 'sect': 167,
  64105. 'uml': 168,
  64106. 'ordf': 170,
  64107. 'laquo': 171,
  64108. 'not': 172,
  64109. 'shy': 173,
  64110. 'macr': 175,
  64111. 'deg': 176,
  64112. 'plusmn': 177,
  64113. 'sup1': 185,
  64114. 'sup2': 178,
  64115. 'sup3': 179,
  64116. 'acute': 180,
  64117. 'micro': 181,
  64118. 'para': 182,
  64119. 'middot': 183,
  64120. 'cedil': 184,
  64121. 'ordm': 186,
  64122. 'raquo': 187,
  64123. 'frac14': 188,
  64124. 'frac12': 189,
  64125. 'frac34': 190,
  64126. 'iquest': 191,
  64127. 'times': 215,
  64128. 'divide': 247,
  64129. 'OElig': 338,
  64130. 'oelig': 339,
  64131. 'Scaron': 352,
  64132. 'scaron': 353,
  64133. 'Yuml': 376,
  64134. 'fnof': 402,
  64135. 'circ': 710,
  64136. 'tilde': 732,
  64137. 'Alpha': 913,
  64138. 'Beta': 914,
  64139. 'Gamma': 915,
  64140. 'Delta': 916,
  64141. 'Epsilon': 917,
  64142. 'Zeta': 918,
  64143. 'Eta': 919,
  64144. 'Theta': 920,
  64145. 'Iota': 921,
  64146. 'Kappa': 922,
  64147. 'Lambda': 923,
  64148. 'Mu': 924,
  64149. 'Nu': 925,
  64150. 'Xi': 926,
  64151. 'Omicron': 927,
  64152. 'Pi': 928,
  64153. 'Rho': 929,
  64154. 'Sigma': 931,
  64155. 'Tau': 932,
  64156. 'Upsilon': 933,
  64157. 'Phi': 934,
  64158. 'Chi': 935,
  64159. 'Psi': 936,
  64160. 'Omega': 937,
  64161. 'alpha': 945,
  64162. 'beta': 946,
  64163. 'gamma': 947,
  64164. 'delta': 948,
  64165. 'epsilon': 949,
  64166. 'zeta': 950,
  64167. 'eta': 951,
  64168. 'theta': 952,
  64169. 'iota': 953,
  64170. 'kappa': 954,
  64171. 'lambda': 955,
  64172. 'mu': 956,
  64173. 'nu': 957,
  64174. 'xi': 958,
  64175. 'omicron': 959,
  64176. 'pi': 960,
  64177. 'rho': 961,
  64178. 'sigmaf': 962,
  64179. 'sigma': 963,
  64180. 'tau': 964,
  64181. 'upsilon': 965,
  64182. 'phi': 966,
  64183. 'chi': 967,
  64184. 'psi': 968,
  64185. 'omega': 969,
  64186. 'thetasym': 977,
  64187. 'upsih': 978,
  64188. 'piv': 982,
  64189. 'ensp': 8194,
  64190. 'emsp': 8195,
  64191. 'thinsp': 8201,
  64192. 'zwnj': 8204,
  64193. 'zwj': 8205,
  64194. 'lrm': 8206,
  64195. 'rlm': 8207,
  64196. 'ndash': 8211,
  64197. 'mdash': 8212,
  64198. 'lsquo': 8216,
  64199. 'rsquo': 8217,
  64200. 'sbquo': 8218,
  64201. 'ldquo': 8220,
  64202. 'rdquo': 8221,
  64203. 'bdquo': 8222,
  64204. 'dagger': 8224,
  64205. 'Dagger': 8225,
  64206. 'bull': 8226,
  64207. 'hellip': 8230,
  64208. 'permil': 8240,
  64209. 'prime': 8242,
  64210. 'Prime': 8243,
  64211. 'lsaquo': 8249,
  64212. 'rsaquo': 8250,
  64213. 'oline': 8254,
  64214. 'frasl': 8260,
  64215. 'euro': 8364,
  64216. 'image': 8465,
  64217. 'weierp': 8472,
  64218. 'real': 8476,
  64219. 'trade': 8482,
  64220. 'alefsym': 8501,
  64221. 'larr': 8592,
  64222. 'uarr': 8593,
  64223. 'rarr': 8594,
  64224. 'darr': 8595,
  64225. 'harr': 8596,
  64226. 'crarr': 8629,
  64227. 'lArr': 8656,
  64228. 'uArr': 8657,
  64229. 'rArr': 8658,
  64230. 'dArr': 8659,
  64231. 'hArr': 8660,
  64232. 'forall': 8704,
  64233. 'part': 8706,
  64234. 'exist': 8707,
  64235. 'empty': 8709,
  64236. 'nabla': 8711,
  64237. 'isin': 8712,
  64238. 'notin': 8713,
  64239. 'ni': 8715,
  64240. 'prod': 8719,
  64241. 'sum': 8721,
  64242. 'minus': 8722,
  64243. 'lowast': 8727,
  64244. 'radic': 8730,
  64245. 'prop': 8733,
  64246. 'infin': 8734,
  64247. 'ang': 8736,
  64248. 'and': 8743,
  64249. 'or': 8744,
  64250. 'cap': 8745,
  64251. 'cup': 8746,
  64252. 'int': 8747,
  64253. 'there4': 8756,
  64254. 'sim': 8764,
  64255. 'cong': 8773,
  64256. 'asymp': 8776,
  64257. 'ne': 8800,
  64258. 'equiv': 8801,
  64259. 'le': 8804,
  64260. 'ge': 8805,
  64261. 'sub': 8834,
  64262. 'sup': 8835,
  64263. 'nsub': 8836,
  64264. 'sube': 8838,
  64265. 'supe': 8839,
  64266. 'oplus': 8853,
  64267. 'otimes': 8855,
  64268. 'perp': 8869,
  64269. 'sdot': 8901,
  64270. 'lceil': 8968,
  64271. 'rceil': 8969,
  64272. 'lfloor': 8970,
  64273. 'rfloor': 8971,
  64274. 'lang': 9001,
  64275. 'rang': 9002,
  64276. 'loz': 9674,
  64277. 'spades': 9824,
  64278. 'clubs': 9827,
  64279. 'hearts': 9829,
  64280. 'diams': 9830
  64281. }
  64282. Object.keys(sax.ENTITIES).forEach(function (key) {
  64283. var e = sax.ENTITIES[key]
  64284. var s = typeof e === 'number' ? String.fromCharCode(e) : e
  64285. sax.ENTITIES[key] = s
  64286. })
  64287. for (var s in sax.STATE) {
  64288. sax.STATE[sax.STATE[s]] = s
  64289. }
  64290. // shorthand
  64291. S = sax.STATE
  64292. function emit (parser, event, data) {
  64293. parser[event] && parser[event](data)
  64294. }
  64295. function emitNode (parser, nodeType, data) {
  64296. if (parser.textNode) closeText(parser)
  64297. emit(parser, nodeType, data)
  64298. }
  64299. function closeText (parser) {
  64300. parser.textNode = textopts(parser.opt, parser.textNode)
  64301. if (parser.textNode) emit(parser, 'ontext', parser.textNode)
  64302. parser.textNode = ''
  64303. }
  64304. function textopts (opt, text) {
  64305. if (opt.trim) text = text.trim()
  64306. if (opt.normalize) text = text.replace(/\s+/g, ' ')
  64307. return text
  64308. }
  64309. function error (parser, er) {
  64310. closeText(parser)
  64311. if (parser.trackPosition) {
  64312. er += '\nLine: ' + parser.line +
  64313. '\nColumn: ' + parser.column +
  64314. '\nChar: ' + parser.c
  64315. }
  64316. er = new Error(er)
  64317. parser.error = er
  64318. emit(parser, 'onerror', er)
  64319. return parser
  64320. }
  64321. function end (parser) {
  64322. if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')
  64323. if ((parser.state !== S.BEGIN) &&
  64324. (parser.state !== S.BEGIN_WHITESPACE) &&
  64325. (parser.state !== S.TEXT)) {
  64326. error(parser, 'Unexpected end')
  64327. }
  64328. closeText(parser)
  64329. parser.c = ''
  64330. parser.closed = true
  64331. emit(parser, 'onend')
  64332. SAXParser.call(parser, parser.strict, parser.opt)
  64333. return parser
  64334. }
  64335. function strictFail (parser, message) {
  64336. if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {
  64337. throw new Error('bad call to strictFail')
  64338. }
  64339. if (parser.strict) {
  64340. error(parser, message)
  64341. }
  64342. }
  64343. function newTag (parser) {
  64344. if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()
  64345. var parent = parser.tags[parser.tags.length - 1] || parser
  64346. var tag = parser.tag = { name: parser.tagName, attributes: {} }
  64347. // will be overridden if tag contails an xmlns="foo" or xmlns:foo="bar"
  64348. if (parser.opt.xmlns) {
  64349. tag.ns = parent.ns
  64350. }
  64351. parser.attribList.length = 0
  64352. emitNode(parser, 'onopentagstart', tag)
  64353. }
  64354. function qname (name, attribute) {
  64355. var i = name.indexOf(':')
  64356. var qualName = i < 0 ? [ '', name ] : name.split(':')
  64357. var prefix = qualName[0]
  64358. var local = qualName[1]
  64359. // <x "xmlns"="http://foo">
  64360. if (attribute && name === 'xmlns') {
  64361. prefix = 'xmlns'
  64362. local = ''
  64363. }
  64364. return { prefix: prefix, local: local }
  64365. }
  64366. function attrib (parser) {
  64367. if (!parser.strict) {
  64368. parser.attribName = parser.attribName[parser.looseCase]()
  64369. }
  64370. if (parser.attribList.indexOf(parser.attribName) !== -1 ||
  64371. parser.tag.attributes.hasOwnProperty(parser.attribName)) {
  64372. parser.attribName = parser.attribValue = ''
  64373. return
  64374. }
  64375. if (parser.opt.xmlns) {
  64376. var qn = qname(parser.attribName, true)
  64377. var prefix = qn.prefix
  64378. var local = qn.local
  64379. if (prefix === 'xmlns') {
  64380. // namespace binding attribute. push the binding into scope
  64381. if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {
  64382. strictFail(parser,
  64383. 'xml: prefix must be bound to ' + XML_NAMESPACE + '\n' +
  64384. 'Actual: ' + parser.attribValue)
  64385. } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {
  64386. strictFail(parser,
  64387. 'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\n' +
  64388. 'Actual: ' + parser.attribValue)
  64389. } else {
  64390. var tag = parser.tag
  64391. var parent = parser.tags[parser.tags.length - 1] || parser
  64392. if (tag.ns === parent.ns) {
  64393. tag.ns = Object.create(parent.ns)
  64394. }
  64395. tag.ns[local] = parser.attribValue
  64396. }
  64397. }
  64398. // defer onattribute events until all attributes have been seen
  64399. // so any new bindings can take effect. preserve attribute order
  64400. // so deferred events can be emitted in document order
  64401. parser.attribList.push([parser.attribName, parser.attribValue])
  64402. } else {
  64403. // in non-xmlns mode, we can emit the event right away
  64404. parser.tag.attributes[parser.attribName] = parser.attribValue
  64405. emitNode(parser, 'onattribute', {
  64406. name: parser.attribName,
  64407. value: parser.attribValue
  64408. })
  64409. }
  64410. parser.attribName = parser.attribValue = ''
  64411. }
  64412. function openTag (parser, selfClosing) {
  64413. if (parser.opt.xmlns) {
  64414. // emit namespace binding events
  64415. var tag = parser.tag
  64416. // add namespace info to tag
  64417. var qn = qname(parser.tagName)
  64418. tag.prefix = qn.prefix
  64419. tag.local = qn.local
  64420. tag.uri = tag.ns[qn.prefix] || ''
  64421. if (tag.prefix && !tag.uri) {
  64422. strictFail(parser, 'Unbound namespace prefix: ' +
  64423. JSON.stringify(parser.tagName))
  64424. tag.uri = qn.prefix
  64425. }
  64426. var parent = parser.tags[parser.tags.length - 1] || parser
  64427. if (tag.ns && parent.ns !== tag.ns) {
  64428. Object.keys(tag.ns).forEach(function (p) {
  64429. emitNode(parser, 'onopennamespace', {
  64430. prefix: p,
  64431. uri: tag.ns[p]
  64432. })
  64433. })
  64434. }
  64435. // handle deferred onattribute events
  64436. // Note: do not apply default ns to attributes:
  64437. // http://www.w3.org/TR/REC-xml-names/#defaulting
  64438. for (var i = 0, l = parser.attribList.length; i < l; i++) {
  64439. var nv = parser.attribList[i]
  64440. var name = nv[0]
  64441. var value = nv[1]
  64442. var qualName = qname(name, true)
  64443. var prefix = qualName.prefix
  64444. var local = qualName.local
  64445. var uri = prefix === '' ? '' : (tag.ns[prefix] || '')
  64446. var a = {
  64447. name: name,
  64448. value: value,
  64449. prefix: prefix,
  64450. local: local,
  64451. uri: uri
  64452. }
  64453. // if there's any attributes with an undefined namespace,
  64454. // then fail on them now.
  64455. if (prefix && prefix !== 'xmlns' && !uri) {
  64456. strictFail(parser, 'Unbound namespace prefix: ' +
  64457. JSON.stringify(prefix))
  64458. a.uri = prefix
  64459. }
  64460. parser.tag.attributes[name] = a
  64461. emitNode(parser, 'onattribute', a)
  64462. }
  64463. parser.attribList.length = 0
  64464. }
  64465. parser.tag.isSelfClosing = !!selfClosing
  64466. // process the tag
  64467. parser.sawRoot = true
  64468. parser.tags.push(parser.tag)
  64469. emitNode(parser, 'onopentag', parser.tag)
  64470. if (!selfClosing) {
  64471. // special case for <script> in non-strict mode.
  64472. if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {
  64473. parser.state = S.SCRIPT
  64474. } else {
  64475. parser.state = S.TEXT
  64476. }
  64477. parser.tag = null
  64478. parser.tagName = ''
  64479. }
  64480. parser.attribName = parser.attribValue = ''
  64481. parser.attribList.length = 0
  64482. }
  64483. function closeTag (parser) {
  64484. if (!parser.tagName) {
  64485. strictFail(parser, 'Weird empty close tag.')
  64486. parser.textNode += '</>'
  64487. parser.state = S.TEXT
  64488. return
  64489. }
  64490. if (parser.script) {
  64491. if (parser.tagName !== 'script') {
  64492. parser.script += '</' + parser.tagName + '>'
  64493. parser.tagName = ''
  64494. parser.state = S.SCRIPT
  64495. return
  64496. }
  64497. emitNode(parser, 'onscript', parser.script)
  64498. parser.script = ''
  64499. }
  64500. // first make sure that the closing tag actually exists.
  64501. // <a><b></c></b></a> will close everything, otherwise.
  64502. var t = parser.tags.length
  64503. var tagName = parser.tagName
  64504. if (!parser.strict) {
  64505. tagName = tagName[parser.looseCase]()
  64506. }
  64507. var closeTo = tagName
  64508. while (t--) {
  64509. var close = parser.tags[t]
  64510. if (close.name !== closeTo) {
  64511. // fail the first time in strict mode
  64512. strictFail(parser, 'Unexpected close tag')
  64513. } else {
  64514. break
  64515. }
  64516. }
  64517. // didn't find it. we already failed for strict, so just abort.
  64518. if (t < 0) {
  64519. strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)
  64520. parser.textNode += '</' + parser.tagName + '>'
  64521. parser.state = S.TEXT
  64522. return
  64523. }
  64524. parser.tagName = tagName
  64525. var s = parser.tags.length
  64526. while (s-- > t) {
  64527. var tag = parser.tag = parser.tags.pop()
  64528. parser.tagName = parser.tag.name
  64529. emitNode(parser, 'onclosetag', parser.tagName)
  64530. var x = {}
  64531. for (var i in tag.ns) {
  64532. x[i] = tag.ns[i]
  64533. }
  64534. var parent = parser.tags[parser.tags.length - 1] || parser
  64535. if (parser.opt.xmlns && tag.ns !== parent.ns) {
  64536. // remove namespace bindings introduced by tag
  64537. Object.keys(tag.ns).forEach(function (p) {
  64538. var n = tag.ns[p]
  64539. emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })
  64540. })
  64541. }
  64542. }
  64543. if (t === 0) parser.closedRoot = true
  64544. parser.tagName = parser.attribValue = parser.attribName = ''
  64545. parser.attribList.length = 0
  64546. parser.state = S.TEXT
  64547. }
  64548. function parseEntity (parser) {
  64549. var entity = parser.entity
  64550. var entityLC = entity.toLowerCase()
  64551. var num
  64552. var numStr = ''
  64553. if (parser.ENTITIES[entity]) {
  64554. return parser.ENTITIES[entity]
  64555. }
  64556. if (parser.ENTITIES[entityLC]) {
  64557. return parser.ENTITIES[entityLC]
  64558. }
  64559. entity = entityLC
  64560. if (entity.charAt(0) === '#') {
  64561. if (entity.charAt(1) === 'x') {
  64562. entity = entity.slice(2)
  64563. num = parseInt(entity, 16)
  64564. numStr = num.toString(16)
  64565. } else {
  64566. entity = entity.slice(1)
  64567. num = parseInt(entity, 10)
  64568. numStr = num.toString(10)
  64569. }
  64570. }
  64571. entity = entity.replace(/^0+/, '')
  64572. if (isNaN(num) || numStr.toLowerCase() !== entity) {
  64573. strictFail(parser, 'Invalid character entity')
  64574. return '&' + parser.entity + ';'
  64575. }
  64576. return String.fromCodePoint(num)
  64577. }
  64578. function beginWhiteSpace (parser, c) {
  64579. if (c === '<') {
  64580. parser.state = S.OPEN_WAKA
  64581. parser.startTagPosition = parser.position
  64582. } else if (!isWhitespace(c)) {
  64583. // have to process this as a text node.
  64584. // weird, but happens.
  64585. strictFail(parser, 'Non-whitespace before first tag.')
  64586. parser.textNode = c
  64587. parser.state = S.TEXT
  64588. }
  64589. }
  64590. function charAt (chunk, i) {
  64591. var result = ''
  64592. if (i < chunk.length) {
  64593. result = chunk.charAt(i)
  64594. }
  64595. return result
  64596. }
  64597. function write (chunk) {
  64598. var parser = this
  64599. if (this.error) {
  64600. throw this.error
  64601. }
  64602. if (parser.closed) {
  64603. return error(parser,
  64604. 'Cannot write after close. Assign an onready handler.')
  64605. }
  64606. if (chunk === null) {
  64607. return end(parser)
  64608. }
  64609. if (typeof chunk === 'object') {
  64610. chunk = chunk.toString()
  64611. }
  64612. var i = 0
  64613. var c = ''
  64614. while (true) {
  64615. c = charAt(chunk, i++)
  64616. parser.c = c
  64617. if (!c) {
  64618. break
  64619. }
  64620. if (parser.trackPosition) {
  64621. parser.position++
  64622. if (c === '\n') {
  64623. parser.line++
  64624. parser.column = 0
  64625. } else {
  64626. parser.column++
  64627. }
  64628. }
  64629. switch (parser.state) {
  64630. case S.BEGIN:
  64631. parser.state = S.BEGIN_WHITESPACE
  64632. if (c === '\uFEFF') {
  64633. continue
  64634. }
  64635. beginWhiteSpace(parser, c)
  64636. continue
  64637. case S.BEGIN_WHITESPACE:
  64638. beginWhiteSpace(parser, c)
  64639. continue
  64640. case S.TEXT:
  64641. if (parser.sawRoot && !parser.closedRoot) {
  64642. var starti = i - 1
  64643. while (c && c !== '<' && c !== '&') {
  64644. c = charAt(chunk, i++)
  64645. if (c && parser.trackPosition) {
  64646. parser.position++
  64647. if (c === '\n') {
  64648. parser.line++
  64649. parser.column = 0
  64650. } else {
  64651. parser.column++
  64652. }
  64653. }
  64654. }
  64655. parser.textNode += chunk.substring(starti, i - 1)
  64656. }
  64657. if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {
  64658. parser.state = S.OPEN_WAKA
  64659. parser.startTagPosition = parser.position
  64660. } else {
  64661. if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {
  64662. strictFail(parser, 'Text data outside of root node.')
  64663. }
  64664. if (c === '&') {
  64665. parser.state = S.TEXT_ENTITY
  64666. } else {
  64667. parser.textNode += c
  64668. }
  64669. }
  64670. continue
  64671. case S.SCRIPT:
  64672. // only non-strict
  64673. if (c === '<') {
  64674. parser.state = S.SCRIPT_ENDING
  64675. } else {
  64676. parser.script += c
  64677. }
  64678. continue
  64679. case S.SCRIPT_ENDING:
  64680. if (c === '/') {
  64681. parser.state = S.CLOSE_TAG
  64682. } else {
  64683. parser.script += '<' + c
  64684. parser.state = S.SCRIPT
  64685. }
  64686. continue
  64687. case S.OPEN_WAKA:
  64688. // either a /, ?, !, or text is coming next.
  64689. if (c === '!') {
  64690. parser.state = S.SGML_DECL
  64691. parser.sgmlDecl = ''
  64692. } else if (isWhitespace(c)) {
  64693. // wait for it...
  64694. } else if (isMatch(nameStart, c)) {
  64695. parser.state = S.OPEN_TAG
  64696. parser.tagName = c
  64697. } else if (c === '/') {
  64698. parser.state = S.CLOSE_TAG
  64699. parser.tagName = ''
  64700. } else if (c === '?') {
  64701. parser.state = S.PROC_INST
  64702. parser.procInstName = parser.procInstBody = ''
  64703. } else {
  64704. strictFail(parser, 'Unencoded <')
  64705. // if there was some whitespace, then add that in.
  64706. if (parser.startTagPosition + 1 < parser.position) {
  64707. var pad = parser.position - parser.startTagPosition
  64708. c = new Array(pad).join(' ') + c
  64709. }
  64710. parser.textNode += '<' + c
  64711. parser.state = S.TEXT
  64712. }
  64713. continue
  64714. case S.SGML_DECL:
  64715. if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {
  64716. emitNode(parser, 'onopencdata')
  64717. parser.state = S.CDATA
  64718. parser.sgmlDecl = ''
  64719. parser.cdata = ''
  64720. } else if (parser.sgmlDecl + c === '--') {
  64721. parser.state = S.COMMENT
  64722. parser.comment = ''
  64723. parser.sgmlDecl = ''
  64724. } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {
  64725. parser.state = S.DOCTYPE
  64726. if (parser.doctype || parser.sawRoot) {
  64727. strictFail(parser,
  64728. 'Inappropriately located doctype declaration')
  64729. }
  64730. parser.doctype = ''
  64731. parser.sgmlDecl = ''
  64732. } else if (c === '>') {
  64733. emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)
  64734. parser.sgmlDecl = ''
  64735. parser.state = S.TEXT
  64736. } else if (isQuote(c)) {
  64737. parser.state = S.SGML_DECL_QUOTED
  64738. parser.sgmlDecl += c
  64739. } else {
  64740. parser.sgmlDecl += c
  64741. }
  64742. continue
  64743. case S.SGML_DECL_QUOTED:
  64744. if (c === parser.q) {
  64745. parser.state = S.SGML_DECL
  64746. parser.q = ''
  64747. }
  64748. parser.sgmlDecl += c
  64749. continue
  64750. case S.DOCTYPE:
  64751. if (c === '>') {
  64752. parser.state = S.TEXT
  64753. emitNode(parser, 'ondoctype', parser.doctype)
  64754. parser.doctype = true // just remember that we saw it.
  64755. } else {
  64756. parser.doctype += c
  64757. if (c === '[') {
  64758. parser.state = S.DOCTYPE_DTD
  64759. } else if (isQuote(c)) {
  64760. parser.state = S.DOCTYPE_QUOTED
  64761. parser.q = c
  64762. }
  64763. }
  64764. continue
  64765. case S.DOCTYPE_QUOTED:
  64766. parser.doctype += c
  64767. if (c === parser.q) {
  64768. parser.q = ''
  64769. parser.state = S.DOCTYPE
  64770. }
  64771. continue
  64772. case S.DOCTYPE_DTD:
  64773. parser.doctype += c
  64774. if (c === ']') {
  64775. parser.state = S.DOCTYPE
  64776. } else if (isQuote(c)) {
  64777. parser.state = S.DOCTYPE_DTD_QUOTED
  64778. parser.q = c
  64779. }
  64780. continue
  64781. case S.DOCTYPE_DTD_QUOTED:
  64782. parser.doctype += c
  64783. if (c === parser.q) {
  64784. parser.state = S.DOCTYPE_DTD
  64785. parser.q = ''
  64786. }
  64787. continue
  64788. case S.COMMENT:
  64789. if (c === '-') {
  64790. parser.state = S.COMMENT_ENDING
  64791. } else {
  64792. parser.comment += c
  64793. }
  64794. continue
  64795. case S.COMMENT_ENDING:
  64796. if (c === '-') {
  64797. parser.state = S.COMMENT_ENDED
  64798. parser.comment = textopts(parser.opt, parser.comment)
  64799. if (parser.comment) {
  64800. emitNode(parser, 'oncomment', parser.comment)
  64801. }
  64802. parser.comment = ''
  64803. } else {
  64804. parser.comment += '-' + c
  64805. parser.state = S.COMMENT
  64806. }
  64807. continue
  64808. case S.COMMENT_ENDED:
  64809. if (c !== '>') {
  64810. strictFail(parser, 'Malformed comment')
  64811. // allow <!-- blah -- bloo --> in non-strict mode,
  64812. // which is a comment of " blah -- bloo "
  64813. parser.comment += '--' + c
  64814. parser.state = S.COMMENT
  64815. } else {
  64816. parser.state = S.TEXT
  64817. }
  64818. continue
  64819. case S.CDATA:
  64820. if (c === ']') {
  64821. parser.state = S.CDATA_ENDING
  64822. } else {
  64823. parser.cdata += c
  64824. }
  64825. continue
  64826. case S.CDATA_ENDING:
  64827. if (c === ']') {
  64828. parser.state = S.CDATA_ENDING_2
  64829. } else {
  64830. parser.cdata += ']' + c
  64831. parser.state = S.CDATA
  64832. }
  64833. continue
  64834. case S.CDATA_ENDING_2:
  64835. if (c === '>') {
  64836. if (parser.cdata) {
  64837. emitNode(parser, 'oncdata', parser.cdata)
  64838. }
  64839. emitNode(parser, 'onclosecdata')
  64840. parser.cdata = ''
  64841. parser.state = S.TEXT
  64842. } else if (c === ']') {
  64843. parser.cdata += ']'
  64844. } else {
  64845. parser.cdata += ']]' + c
  64846. parser.state = S.CDATA
  64847. }
  64848. continue
  64849. case S.PROC_INST:
  64850. if (c === '?') {
  64851. parser.state = S.PROC_INST_ENDING
  64852. } else if (isWhitespace(c)) {
  64853. parser.state = S.PROC_INST_BODY
  64854. } else {
  64855. parser.procInstName += c
  64856. }
  64857. continue
  64858. case S.PROC_INST_BODY:
  64859. if (!parser.procInstBody && isWhitespace(c)) {
  64860. continue
  64861. } else if (c === '?') {
  64862. parser.state = S.PROC_INST_ENDING
  64863. } else {
  64864. parser.procInstBody += c
  64865. }
  64866. continue
  64867. case S.PROC_INST_ENDING:
  64868. if (c === '>') {
  64869. emitNode(parser, 'onprocessinginstruction', {
  64870. name: parser.procInstName,
  64871. body: parser.procInstBody
  64872. })
  64873. parser.procInstName = parser.procInstBody = ''
  64874. parser.state = S.TEXT
  64875. } else {
  64876. parser.procInstBody += '?' + c
  64877. parser.state = S.PROC_INST_BODY
  64878. }
  64879. continue
  64880. case S.OPEN_TAG:
  64881. if (isMatch(nameBody, c)) {
  64882. parser.tagName += c
  64883. } else {
  64884. newTag(parser)
  64885. if (c === '>') {
  64886. openTag(parser)
  64887. } else if (c === '/') {
  64888. parser.state = S.OPEN_TAG_SLASH
  64889. } else {
  64890. if (!isWhitespace(c)) {
  64891. strictFail(parser, 'Invalid character in tag name')
  64892. }
  64893. parser.state = S.ATTRIB
  64894. }
  64895. }
  64896. continue
  64897. case S.OPEN_TAG_SLASH:
  64898. if (c === '>') {
  64899. openTag(parser, true)
  64900. closeTag(parser)
  64901. } else {
  64902. strictFail(parser, 'Forward-slash in opening tag not followed by >')
  64903. parser.state = S.ATTRIB
  64904. }
  64905. continue
  64906. case S.ATTRIB:
  64907. // haven't read the attribute name yet.
  64908. if (isWhitespace(c)) {
  64909. continue
  64910. } else if (c === '>') {
  64911. openTag(parser)
  64912. } else if (c === '/') {
  64913. parser.state = S.OPEN_TAG_SLASH
  64914. } else if (isMatch(nameStart, c)) {
  64915. parser.attribName = c
  64916. parser.attribValue = ''
  64917. parser.state = S.ATTRIB_NAME
  64918. } else {
  64919. strictFail(parser, 'Invalid attribute name')
  64920. }
  64921. continue
  64922. case S.ATTRIB_NAME:
  64923. if (c === '=') {
  64924. parser.state = S.ATTRIB_VALUE
  64925. } else if (c === '>') {
  64926. strictFail(parser, 'Attribute without value')
  64927. parser.attribValue = parser.attribName
  64928. attrib(parser)
  64929. openTag(parser)
  64930. } else if (isWhitespace(c)) {
  64931. parser.state = S.ATTRIB_NAME_SAW_WHITE
  64932. } else if (isMatch(nameBody, c)) {
  64933. parser.attribName += c
  64934. } else {
  64935. strictFail(parser, 'Invalid attribute name')
  64936. }
  64937. continue
  64938. case S.ATTRIB_NAME_SAW_WHITE:
  64939. if (c === '=') {
  64940. parser.state = S.ATTRIB_VALUE
  64941. } else if (isWhitespace(c)) {
  64942. continue
  64943. } else {
  64944. strictFail(parser, 'Attribute without value')
  64945. parser.tag.attributes[parser.attribName] = ''
  64946. parser.attribValue = ''
  64947. emitNode(parser, 'onattribute', {
  64948. name: parser.attribName,
  64949. value: ''
  64950. })
  64951. parser.attribName = ''
  64952. if (c === '>') {
  64953. openTag(parser)
  64954. } else if (isMatch(nameStart, c)) {
  64955. parser.attribName = c
  64956. parser.state = S.ATTRIB_NAME
  64957. } else {
  64958. strictFail(parser, 'Invalid attribute name')
  64959. parser.state = S.ATTRIB
  64960. }
  64961. }
  64962. continue
  64963. case S.ATTRIB_VALUE:
  64964. if (isWhitespace(c)) {
  64965. continue
  64966. } else if (isQuote(c)) {
  64967. parser.q = c
  64968. parser.state = S.ATTRIB_VALUE_QUOTED
  64969. } else {
  64970. strictFail(parser, 'Unquoted attribute value')
  64971. parser.state = S.ATTRIB_VALUE_UNQUOTED
  64972. parser.attribValue = c
  64973. }
  64974. continue
  64975. case S.ATTRIB_VALUE_QUOTED:
  64976. if (c !== parser.q) {
  64977. if (c === '&') {
  64978. parser.state = S.ATTRIB_VALUE_ENTITY_Q
  64979. } else {
  64980. parser.attribValue += c
  64981. }
  64982. continue
  64983. }
  64984. attrib(parser)
  64985. parser.q = ''
  64986. parser.state = S.ATTRIB_VALUE_CLOSED
  64987. continue
  64988. case S.ATTRIB_VALUE_CLOSED:
  64989. if (isWhitespace(c)) {
  64990. parser.state = S.ATTRIB
  64991. } else if (c === '>') {
  64992. openTag(parser)
  64993. } else if (c === '/') {
  64994. parser.state = S.OPEN_TAG_SLASH
  64995. } else if (isMatch(nameStart, c)) {
  64996. strictFail(parser, 'No whitespace between attributes')
  64997. parser.attribName = c
  64998. parser.attribValue = ''
  64999. parser.state = S.ATTRIB_NAME
  65000. } else {
  65001. strictFail(parser, 'Invalid attribute name')
  65002. }
  65003. continue
  65004. case S.ATTRIB_VALUE_UNQUOTED:
  65005. if (!isAttribEnd(c)) {
  65006. if (c === '&') {
  65007. parser.state = S.ATTRIB_VALUE_ENTITY_U
  65008. } else {
  65009. parser.attribValue += c
  65010. }
  65011. continue
  65012. }
  65013. attrib(parser)
  65014. if (c === '>') {
  65015. openTag(parser)
  65016. } else {
  65017. parser.state = S.ATTRIB
  65018. }
  65019. continue
  65020. case S.CLOSE_TAG:
  65021. if (!parser.tagName) {
  65022. if (isWhitespace(c)) {
  65023. continue
  65024. } else if (notMatch(nameStart, c)) {
  65025. if (parser.script) {
  65026. parser.script += '</' + c
  65027. parser.state = S.SCRIPT
  65028. } else {
  65029. strictFail(parser, 'Invalid tagname in closing tag.')
  65030. }
  65031. } else {
  65032. parser.tagName = c
  65033. }
  65034. } else if (c === '>') {
  65035. closeTag(parser)
  65036. } else if (isMatch(nameBody, c)) {
  65037. parser.tagName += c
  65038. } else if (parser.script) {
  65039. parser.script += '</' + parser.tagName
  65040. parser.tagName = ''
  65041. parser.state = S.SCRIPT
  65042. } else {
  65043. if (!isWhitespace(c)) {
  65044. strictFail(parser, 'Invalid tagname in closing tag')
  65045. }
  65046. parser.state = S.CLOSE_TAG_SAW_WHITE
  65047. }
  65048. continue
  65049. case S.CLOSE_TAG_SAW_WHITE:
  65050. if (isWhitespace(c)) {
  65051. continue
  65052. }
  65053. if (c === '>') {
  65054. closeTag(parser)
  65055. } else {
  65056. strictFail(parser, 'Invalid characters in closing tag')
  65057. }
  65058. continue
  65059. case S.TEXT_ENTITY:
  65060. case S.ATTRIB_VALUE_ENTITY_Q:
  65061. case S.ATTRIB_VALUE_ENTITY_U:
  65062. var returnState
  65063. var buffer
  65064. switch (parser.state) {
  65065. case S.TEXT_ENTITY:
  65066. returnState = S.TEXT
  65067. buffer = 'textNode'
  65068. break
  65069. case S.ATTRIB_VALUE_ENTITY_Q:
  65070. returnState = S.ATTRIB_VALUE_QUOTED
  65071. buffer = 'attribValue'
  65072. break
  65073. case S.ATTRIB_VALUE_ENTITY_U:
  65074. returnState = S.ATTRIB_VALUE_UNQUOTED
  65075. buffer = 'attribValue'
  65076. break
  65077. }
  65078. if (c === ';') {
  65079. parser[buffer] += parseEntity(parser)
  65080. parser.entity = ''
  65081. parser.state = returnState
  65082. } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {
  65083. parser.entity += c
  65084. } else {
  65085. strictFail(parser, 'Invalid character in entity name')
  65086. parser[buffer] += '&' + parser.entity + c
  65087. parser.entity = ''
  65088. parser.state = returnState
  65089. }
  65090. continue
  65091. default:
  65092. throw new Error(parser, 'Unknown state: ' + parser.state)
  65093. }
  65094. } // while
  65095. if (parser.position >= parser.bufferCheckPosition) {
  65096. checkBufferLength(parser)
  65097. }
  65098. return parser
  65099. }
  65100. /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */
  65101. /* istanbul ignore next */
  65102. if (!String.fromCodePoint) {
  65103. (function () {
  65104. var stringFromCharCode = String.fromCharCode
  65105. var floor = Math.floor
  65106. var fromCodePoint = function () {
  65107. var MAX_SIZE = 0x4000
  65108. var codeUnits = []
  65109. var highSurrogate
  65110. var lowSurrogate
  65111. var index = -1
  65112. var length = arguments.length
  65113. if (!length) {
  65114. return ''
  65115. }
  65116. var result = ''
  65117. while (++index < length) {
  65118. var codePoint = Number(arguments[index])
  65119. if (
  65120. !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
  65121. codePoint < 0 || // not a valid Unicode code point
  65122. codePoint > 0x10FFFF || // not a valid Unicode code point
  65123. floor(codePoint) !== codePoint // not an integer
  65124. ) {
  65125. throw RangeError('Invalid code point: ' + codePoint)
  65126. }
  65127. if (codePoint <= 0xFFFF) { // BMP code point
  65128. codeUnits.push(codePoint)
  65129. } else { // Astral code point; split in surrogate halves
  65130. // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
  65131. codePoint -= 0x10000
  65132. highSurrogate = (codePoint >> 10) + 0xD800
  65133. lowSurrogate = (codePoint % 0x400) + 0xDC00
  65134. codeUnits.push(highSurrogate, lowSurrogate)
  65135. }
  65136. if (index + 1 === length || codeUnits.length > MAX_SIZE) {
  65137. result += stringFromCharCode.apply(null, codeUnits)
  65138. codeUnits.length = 0
  65139. }
  65140. }
  65141. return result
  65142. }
  65143. /* istanbul ignore next */
  65144. if (Object.defineProperty) {
  65145. Object.defineProperty(String, 'fromCodePoint', {
  65146. value: fromCodePoint,
  65147. configurable: true,
  65148. writable: true
  65149. })
  65150. } else {
  65151. String.fromCodePoint = fromCodePoint
  65152. }
  65153. }())
  65154. }
  65155. })( false ? undefined : exports)
  65156. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("3be6").Buffer))
  65157. /***/ }),
  65158. /***/ "eb1b":
  65159. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  65160. "use strict";
  65161. __webpack_require__.r(__webpack_exports__);
  65162. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Image_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("1587");
  65163. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Image_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Image_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  65164. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Image_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Image_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  65165. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Image_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  65166. /***/ }),
  65167. /***/ "ebca":
  65168. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  65169. "use strict";
  65170. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/open-file/OpenFile.vue?vue&type=template&id=016ba5c1&
  65171. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['sm-component-open-file', _vm.mapboxglClass],style:([_vm.fontStyle, (_vm.background && _vm.getBackgroundStyle) || { background: _vm.getColor(0) }, _vm.getTextColorStyle])},[_c('label',{staticClass:"sm-component-open-file__title",attrs:{"for":"input_file"}},[_c('span',[_vm._v(_vm._s(_vm.text))])]),_vm._v(" "),_c('input',{staticClass:"sm-component-open-file__input",attrs:{"id":"input_file","type":"file","accept":_vm.accept},on:{"change":function($event){return _vm.fileSelect($event)},"click":_vm.preventDefault}})])}
  65172. var staticRenderFns = []
  65173. // CONCATENATED MODULE: ./src/mapboxgl/open-file/OpenFile.vue?vue&type=template&id=016ba5c1&
  65174. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  65175. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  65176. /***/ }),
  65177. /***/ "ebd9":
  65178. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  65179. "use strict";
  65180. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/web-map/control/layer-manager/LayerManager.vue?vue&type=template&id=29f6260f&
  65181. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('sm-card',{directives:[{name:"show",rawName:"v-show",value:(_vm.isShow),expression:"isShow"}],staticClass:"sm-component-layer-manager",attrs:{"icon-class":_vm.iconClass,"icon-position":_vm.position,"header-name":_vm.headerName,"auto-rotate":_vm.autoRotate,"collapsed":_vm.collapsed,"background":_vm.background,"textColor":_vm.textColor}},[_c('a-card',{staticClass:"sm-component-layer-manager__a-card",style:([_vm.getBackgroundStyle])},[_c('div',{staticClass:"sm-component-layer-manager__content"},[_c('a-tree',{attrs:{"checkable":"","defaultExpandAll":_vm.defaultExpandAll,"treeData":_vm.treeData,"checkedKeys":_vm.checkedKeys,"replaceFields":_vm.replaceFields},on:{"check":_vm.checkNode,"expand":_vm.expandNode},scopedSlots:_vm._u([{key:"title",fn:function(ref){
  65182. var title = ref.title;
  65183. return [_c('div',{staticClass:"item-title"},[_c('span',{style:(_vm.getTextColorStyle)},[_vm._v("\n "+_vm._s(title)+"\n ")])])]}}])})],1)])],1)}
  65184. var staticRenderFns = []
  65185. // CONCATENATED MODULE: ./src/mapboxgl/web-map/control/layer-manager/LayerManager.vue?vue&type=template&id=29f6260f&
  65186. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  65187. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  65188. /***/ }),
  65189. /***/ "ed0b":
  65190. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  65191. "use strict";
  65192. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/tdt/results/RoutePlan.vue?vue&type=template&id=6792a83a&
  65193. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a-tabs',{class:['sm-component-tdtRoutePlan', 'route-plan', {'route-bus-plan': _vm.searchType == 'bus'}],style:(_vm.themeStyle),attrs:{"type":"card","size":"small"},on:{"change":_vm.styleChanged},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:"activeTab"}},[_vm._l((_vm.tabMap[_vm.searchType]),function(item,index){return [_c('a-tab-pane',{key:index,attrs:{"tab":item}},[(_vm.routePlan && _vm.searchType==='car')?[_c('div',{staticClass:"distance"},[_vm._v(_vm._s(_vm.$t('tdtResults.totalMiles'))+":"+_vm._s(_vm.$t('tdtResults.distance', {'distance': _vm.routePlan.distance})))]),_vm._v(" "),_c('div',{staticClass:"route-plan-container"},[_c('div',{staticClass:"start-label"},[_c('div',{staticClass:"icon"}),_vm._v(" "),_c('span',{staticClass:"name",attrs:{"title":_vm.start.name}},[_vm._v(_vm._s(_vm.start.name))]),_vm._v(" "),_c('a-checkbox',{staticClass:"show-all-info",style:(_vm.themeStyle),on:{"change":_vm.checkboxChanged}},[_vm._v(_vm._s(_vm.$t('tdtResults.showDetails')))])],1),_vm._v(" "),_c('ul',{staticClass:"level-1"},[_vm._l(((_vm.routePlan.features.features.slice(1))),function(route,idx){return [_c('li',{key:idx,on:{"click":function($event){return _vm.routePlanClicked($event, route.properties.id, index)}}},[_c('span',[_vm._v(_vm._s(idx+1)+".")]),_vm._v(" "),_c('span',[_vm._v(_vm._s(route.properties.strguide.strguide))]),_vm._v(" "),(_vm.expandDetail[idx])?_c('ul',{staticClass:"level-2"},[_vm._l((route.properties.strguide.routeInfo),function(strguide,j){return [_c('li',{key:j},[_c('span',[_vm._v(_vm._s(j+1)+")")]),_vm._v(" "),_c('span',[_vm._v(_vm._s(strguide))])])]})],2):_vm._e()])]})],2),_vm._v(" "),_c('div',{staticClass:"dest-label"},[_c('div',{staticClass:"icon"}),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.dest.name))])])])]:_vm._e(),_vm._v(" "),(_vm.routePlan && _vm.searchType==='bus' && _vm.activeTab === index)?[_c('div',{staticClass:"route-plan-container"},[_c('ul',{staticClass:"level-1"},[_vm._l((_vm.routePlan),function(route,idx){return [_c('li',{key:idx,class:['bus-info'],on:{"click":function($event){return _vm.busInfoClicked($event, idx)}}},[_c('div',{staticClass:"line-header"},[_c('div',{staticClass:"line-name"},[_vm._l((route.lineNames),function(lineName,i){return [_c('div',{key:lineName.name},[_c('i',{class:((lineName.type) + " route-icon")}),_vm._v(" "),_c('span',[_vm._v(_vm._s(lineName.name))]),_vm._v(" "),(i < route.lineNames.length - 1)?_c('span',{staticClass:"right-direction"},[_vm._v(">")]):_vm._e()])]})],2),_vm._v(" "),_c('div',{staticClass:"line-info"},[_c('span',[_vm._v(_vm._s(("" + (route.switchTimes ? _vm.$t('tdtResults.switchTimes', {'switchTimes': route.switchTimes}) : _vm.$t('tdtResults.noSwitch')))))]),_vm._v(" "),_c('span',[_vm._v("/"+_vm._s(_vm.$t('tdtResults.distance', {'distance': route.distance})))]),_vm._v(" "),_c('span',{staticClass:"time"},[_vm._v(_vm._s(route.time))])])]),_vm._v(" "),(_vm.expandDetail[idx])?_c('div',{staticClass:"line-details"},[_c('div',{staticClass:"start-label"},[_c('div',{staticClass:"icon"}),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.start.name))])]),_vm._v(" "),_c('i',{staticClass:"route-point route-icon"}),_vm._v(" "),_c('ul',{staticClass:"level-2"},[_vm._l((route.features.features),function(line,j){return [_c('li',{key:j,on:{"click":function($event){return _vm.busPlanClicked($event, j, idx)}}},[_c('i',{class:[line.properties.type,'route-icon']}),_vm._v(" "),(!line.properties.lineName)?[_c('span',[_vm._v("从"+_vm._s(line.properties.stationStart.name||_vm.start.name)+_vm._s(_vm.$t('tdtResults.walk')))]),_vm._v(" "),_c('span',[_c('a',{attrs:{"href":"javascript:void(0)"}},[_vm._v(_vm._s(line.properties.stationEnd.name||_vm.dest.name))])])]:[_c('span',[_vm._v(_vm._s(_vm.$t('tdtResults.take'))+_vm._s(line.properties.lineName)+_vm._s(_vm.$t('tdtResults.on')))]),_vm._v(" "),_c('span',[_c('a',{attrs:{"href":"javascript:void(0)"}},[_vm._v(_vm._s(line.properties.stationEnd.name))]),_vm._v("\n "+_vm._s(line.properties.segmentStationCount ? _vm.$t('tdtResults.getOff'):_vm.$t('tdtResults.getOn'))+"\n ")]),_vm._v(" "),(line.properties.segmentStationCount)?_c('span',{staticClass:"time"},[_vm._v(_vm._s(line.properties.segmentStationCount)+_vm._s(_vm.$t('tdtResults.station')))]):_vm._e()],_vm._v(" "),_c('i',{staticClass:"route-point route-icon"})],2)]})],2),_vm._v(" "),_c('div',{staticClass:"dest-label"},[_c('div',{staticClass:"icon"}),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.dest.name))])])]):_vm._e()])]})],2)])]:_vm._e(),_vm._v(" "),(!_vm.routePlan)?_c('div',{staticStyle:{"text-align":"center"}},[_c('a-spin',{attrs:{"spinning":_vm.spinning,"size":"large"}}),_vm._v(" "),(_vm.isError)?_c('div',[_vm._v(_vm._s(_vm.$t('tdtResults.noSearchResults')))]):_vm._e()],1):_vm._e()],2)]})],2)}
  65194. var staticRenderFns = []
  65195. // CONCATENATED MODULE: ./src/mapboxgl/tdt/results/RoutePlan.vue?vue&type=template&id=6792a83a&
  65196. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  65197. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  65198. /***/ }),
  65199. /***/ "ee84":
  65200. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  65201. "use strict";
  65202. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/common/progress/Progress.vue?vue&type=template&id=0ed980d1&
  65203. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sm-component-progress",style:([_vm.background && _vm.getBackgroundStyle])},[_c('a-progress',{attrs:{"percent":parseFloat(_vm.finalValue),"type":_vm.type,"stroke-width":parseFloat(_vm.strokeWidth),"show-info":_vm.showInfo,"width":_vm.calWidth,"stroke-color":_vm.colorData,"status":_vm.status,"gap-degree":_vm.type === 'circle' ? _vm.gapDegree : null,"gap-position":_vm.gapPosition,"stroke-linecap":_vm.strokeLinecap}})],1)}
  65204. var staticRenderFns = []
  65205. // CONCATENATED MODULE: ./src/common/progress/Progress.vue?vue&type=template&id=0ed980d1&
  65206. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  65207. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  65208. /***/ }),
  65209. /***/ "efd0":
  65210. /***/ (function(module, exports, __webpack_require__) {
  65211. "use strict";
  65212. var Cancel = __webpack_require__("f3f9");
  65213. /**
  65214. * A `CancelToken` is an object that can be used to request cancellation of an operation.
  65215. *
  65216. * @class
  65217. * @param {Function} executor The executor function.
  65218. */
  65219. function CancelToken(executor) {
  65220. if (typeof executor !== 'function') {
  65221. throw new TypeError('executor must be a function.');
  65222. }
  65223. var resolvePromise;
  65224. this.promise = new Promise(function promiseExecutor(resolve) {
  65225. resolvePromise = resolve;
  65226. });
  65227. var token = this;
  65228. executor(function cancel(message) {
  65229. if (token.reason) {
  65230. // Cancellation has already been requested
  65231. return;
  65232. }
  65233. token.reason = new Cancel(message);
  65234. resolvePromise(token.reason);
  65235. });
  65236. }
  65237. /**
  65238. * Throws a `Cancel` if cancellation has been requested.
  65239. */
  65240. CancelToken.prototype.throwIfRequested = function throwIfRequested() {
  65241. if (this.reason) {
  65242. throw this.reason;
  65243. }
  65244. };
  65245. /**
  65246. * Returns an object that contains a new `CancelToken` and a function that, when called,
  65247. * cancels the `CancelToken`.
  65248. */
  65249. CancelToken.source = function source() {
  65250. var cancel;
  65251. var token = new CancelToken(function executor(c) {
  65252. cancel = c;
  65253. });
  65254. return {
  65255. token: token,
  65256. cancel: cancel
  65257. };
  65258. };
  65259. module.exports = CancelToken;
  65260. /***/ }),
  65261. /***/ "f00b":
  65262. /***/ (function(module, exports, __webpack_require__) {
  65263. "use strict";
  65264. var _interopRequireDefault = __webpack_require__("8e6d");
  65265. Object.defineProperty(exports, "__esModule", {
  65266. value: true
  65267. });
  65268. exports.default = void 0;
  65269. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  65270. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  65271. var _card = _interopRequireDefault(__webpack_require__("333c"));
  65272. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  65273. var _TdtMapSwitcherViewModel = _interopRequireDefault(__webpack_require__("33f4"));
  65274. //
  65275. //
  65276. //
  65277. //
  65278. //
  65279. //
  65280. //
  65281. //
  65282. //
  65283. //
  65284. //
  65285. //
  65286. //
  65287. //
  65288. //
  65289. //
  65290. //
  65291. //
  65292. //
  65293. //
  65294. //
  65295. //
  65296. //
  65297. //
  65298. //
  65299. //
  65300. //
  65301. //
  65302. //
  65303. //
  65304. //
  65305. //
  65306. //
  65307. //
  65308. //
  65309. //
  65310. var _default2 = {
  65311. name: 'SmTdtMapSwitcher',
  65312. mixins: [_control.default, _mapGetter.default, _card.default, _theme.default],
  65313. props: {
  65314. collapsed: {
  65315. type: Boolean,
  65316. // 是否折叠
  65317. default: true
  65318. },
  65319. iconClass: {
  65320. type: String,
  65321. default: 'sm-components-icons-baselayer'
  65322. },
  65323. headerName: {
  65324. type: String,
  65325. default: function _default() {
  65326. return this.$t('tdtMapSwitcher.title');
  65327. }
  65328. },
  65329. data: {
  65330. type: Object,
  65331. default: function _default() {
  65332. return {
  65333. select: '',
  65334. label: false,
  65335. tk: ''
  65336. };
  65337. }
  65338. }
  65339. },
  65340. data: function data() {
  65341. return {
  65342. labelChecked: true,
  65343. currentSelect: this.data.select
  65344. };
  65345. },
  65346. created: function created() {
  65347. this.viewModel = new _TdtMapSwitcherViewModel.default(this.data.tk);
  65348. },
  65349. methods: {
  65350. changeBaseLayer: function changeBaseLayer(type) {
  65351. this.viewModel.changeBaseLayer(type);
  65352. this.togglerLabelLayer(this.labelChecked);
  65353. this.currentSelect = type;
  65354. this.$emit('change-select-map-type', type);
  65355. },
  65356. togglerLabelLayer: function togglerLabelLayer(checked) {
  65357. this.viewModel.togglerLabelLayer(checked);
  65358. this.labelChecked = checked;
  65359. this.$emit('change-label-status', this.labelChecked);
  65360. }
  65361. },
  65362. loaded: function loaded() {
  65363. if (this.data.select) {
  65364. this.viewModel.changeBaseLayer(this.data.select);
  65365. this.togglerLabelLayer(this.data.label);
  65366. }
  65367. }
  65368. };
  65369. exports.default = _default2;
  65370. /***/ }),
  65371. /***/ "f052":
  65372. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  65373. "use strict";
  65374. __webpack_require__.r(__webpack_exports__);
  65375. // CONCATENATED MODULE: ./node_modules/@turf/clone/main.es.js
  65376. /**
  65377. * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.
  65378. * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.
  65379. *
  65380. * @name clone
  65381. * @param {GeoJSON} geojson GeoJSON Object
  65382. * @returns {GeoJSON} cloned GeoJSON Object
  65383. * @example
  65384. * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});
  65385. *
  65386. * var lineCloned = turf.clone(line);
  65387. */
  65388. function clone(geojson) {
  65389. if (!geojson) throw new Error('geojson is required');
  65390. switch (geojson.type) {
  65391. case 'Feature':
  65392. return cloneFeature(geojson);
  65393. case 'FeatureCollection':
  65394. return cloneFeatureCollection(geojson);
  65395. case 'Point':
  65396. case 'LineString':
  65397. case 'Polygon':
  65398. case 'MultiPoint':
  65399. case 'MultiLineString':
  65400. case 'MultiPolygon':
  65401. case 'GeometryCollection':
  65402. return cloneGeometry(geojson);
  65403. default:
  65404. throw new Error('unknown GeoJSON type');
  65405. }
  65406. }
  65407. /**
  65408. * Clone Feature
  65409. *
  65410. * @private
  65411. * @param {Feature<any>} geojson GeoJSON Feature
  65412. * @returns {Feature<any>} cloned Feature
  65413. */
  65414. function cloneFeature(geojson) {
  65415. var cloned = {type: 'Feature'};
  65416. // Preserve Foreign Members
  65417. Object.keys(geojson).forEach(function (key) {
  65418. switch (key) {
  65419. case 'type':
  65420. case 'properties':
  65421. case 'geometry':
  65422. return;
  65423. default:
  65424. cloned[key] = geojson[key];
  65425. }
  65426. });
  65427. // Add properties & geometry last
  65428. cloned.properties = cloneProperties(geojson.properties);
  65429. cloned.geometry = cloneGeometry(geojson.geometry);
  65430. return cloned;
  65431. }
  65432. /**
  65433. * Clone Properties
  65434. *
  65435. * @private
  65436. * @param {Object} properties GeoJSON Properties
  65437. * @returns {Object} cloned Properties
  65438. */
  65439. function cloneProperties(properties) {
  65440. var cloned = {};
  65441. if (!properties) return cloned;
  65442. Object.keys(properties).forEach(function (key) {
  65443. var value = properties[key];
  65444. if (typeof value === 'object') {
  65445. if (value === null) {
  65446. // handle null
  65447. cloned[key] = null;
  65448. } else if (value.length) {
  65449. // handle Array
  65450. cloned[key] = value.map(function (item) {
  65451. return item;
  65452. });
  65453. } else {
  65454. // handle generic Object
  65455. cloned[key] = cloneProperties(value);
  65456. }
  65457. } else cloned[key] = value;
  65458. });
  65459. return cloned;
  65460. }
  65461. /**
  65462. * Clone Feature Collection
  65463. *
  65464. * @private
  65465. * @param {FeatureCollection<any>} geojson GeoJSON Feature Collection
  65466. * @returns {FeatureCollection<any>} cloned Feature Collection
  65467. */
  65468. function cloneFeatureCollection(geojson) {
  65469. var cloned = {type: 'FeatureCollection'};
  65470. // Preserve Foreign Members
  65471. Object.keys(geojson).forEach(function (key) {
  65472. switch (key) {
  65473. case 'type':
  65474. case 'features':
  65475. return;
  65476. default:
  65477. cloned[key] = geojson[key];
  65478. }
  65479. });
  65480. // Add features
  65481. cloned.features = geojson.features.map(function (feature) {
  65482. return cloneFeature(feature);
  65483. });
  65484. return cloned;
  65485. }
  65486. /**
  65487. * Clone Geometry
  65488. *
  65489. * @private
  65490. * @param {Geometry<any>} geometry GeoJSON Geometry
  65491. * @returns {Geometry<any>} cloned Geometry
  65492. */
  65493. function cloneGeometry(geometry) {
  65494. var geom = {type: geometry.type};
  65495. if (geometry.bbox) geom.bbox = geometry.bbox;
  65496. if (geometry.type === 'GeometryCollection') {
  65497. geom.geometries = geometry.geometries.map(function (geom) {
  65498. return cloneGeometry(geom);
  65499. });
  65500. return geom;
  65501. }
  65502. geom.coordinates = deepSlice(geometry.coordinates);
  65503. return geom;
  65504. }
  65505. /**
  65506. * Deep Slice coordinates
  65507. *
  65508. * @private
  65509. * @param {Coordinates} coords Coordinates
  65510. * @returns {Coordinates} all coordinates sliced
  65511. */
  65512. function deepSlice(coords) {
  65513. if (typeof coords[0] !== 'object') { return coords.slice(); }
  65514. return coords.map(function (coord) {
  65515. return deepSlice(coord);
  65516. });
  65517. }
  65518. /* harmony default export */ var main_es = (clone);
  65519. // CONCATENATED MODULE: ./node_modules/@turf/transform-scale/node_modules/@turf/helpers/main.es.js
  65520. /**
  65521. * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.
  65522. */
  65523. var earthRadius = 6371008.8;
  65524. /**
  65525. * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.
  65526. */
  65527. var factors = {
  65528. meters: earthRadius,
  65529. metres: earthRadius,
  65530. millimeters: earthRadius * 1000,
  65531. millimetres: earthRadius * 1000,
  65532. centimeters: earthRadius * 100,
  65533. centimetres: earthRadius * 100,
  65534. kilometers: earthRadius / 1000,
  65535. kilometres: earthRadius / 1000,
  65536. miles: earthRadius / 1609.344,
  65537. nauticalmiles: earthRadius / 1852,
  65538. inches: earthRadius * 39.370,
  65539. yards: earthRadius / 1.0936,
  65540. feet: earthRadius * 3.28084,
  65541. radians: 1,
  65542. degrees: earthRadius / 111325,
  65543. };
  65544. /**
  65545. * Units of measurement factors based on 1 meter.
  65546. */
  65547. var unitsFactors = {
  65548. meters: 1,
  65549. metres: 1,
  65550. millimeters: 1000,
  65551. millimetres: 1000,
  65552. centimeters: 100,
  65553. centimetres: 100,
  65554. kilometers: 1 / 1000,
  65555. kilometres: 1 / 1000,
  65556. miles: 1 / 1609.344,
  65557. nauticalmiles: 1 / 1852,
  65558. inches: 39.370,
  65559. yards: 1 / 1.0936,
  65560. feet: 3.28084,
  65561. radians: 1 / earthRadius,
  65562. degrees: 1 / 111325,
  65563. };
  65564. /**
  65565. * Area of measurement factors based on 1 square meter.
  65566. */
  65567. var areaFactors = {
  65568. meters: 1,
  65569. metres: 1,
  65570. millimeters: 1000000,
  65571. millimetres: 1000000,
  65572. centimeters: 10000,
  65573. centimetres: 10000,
  65574. kilometers: 0.000001,
  65575. kilometres: 0.000001,
  65576. acres: 0.000247105,
  65577. miles: 3.86e-7,
  65578. yards: 1.195990046,
  65579. feet: 10.763910417,
  65580. inches: 1550.003100006
  65581. };
  65582. /**
  65583. * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
  65584. *
  65585. * @name feature
  65586. * @param {Geometry} geometry input geometry
  65587. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  65588. * @param {Object} [options={}] Optional Parameters
  65589. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  65590. * @param {string|number} [options.id] Identifier associated with the Feature
  65591. * @returns {Feature} a GeoJSON Feature
  65592. * @example
  65593. * var geometry = {
  65594. * "type": "Point",
  65595. * "coordinates": [110, 50]
  65596. * };
  65597. *
  65598. * var feature = turf.feature(geometry);
  65599. *
  65600. * //=feature
  65601. */
  65602. function main_es_feature(geometry, properties, options) {
  65603. // Optional Parameters
  65604. options = options || {};
  65605. if (!isObject(options)) throw new Error('options is invalid');
  65606. var bbox = options.bbox;
  65607. var id = options.id;
  65608. // Validation
  65609. if (geometry === undefined) throw new Error('geometry is required');
  65610. if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');
  65611. if (bbox) validateBBox(bbox);
  65612. if (id) validateId(id);
  65613. // Main
  65614. var feat = {type: 'Feature'};
  65615. if (id) feat.id = id;
  65616. if (bbox) feat.bbox = bbox;
  65617. feat.properties = properties || {};
  65618. feat.geometry = geometry;
  65619. return feat;
  65620. }
  65621. /**
  65622. * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
  65623. * For GeometryCollection type use `helpers.geometryCollection`
  65624. *
  65625. * @name geometry
  65626. * @param {string} type Geometry Type
  65627. * @param {Array<number>} coordinates Coordinates
  65628. * @param {Object} [options={}] Optional Parameters
  65629. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry
  65630. * @returns {Geometry} a GeoJSON Geometry
  65631. * @example
  65632. * var type = 'Point';
  65633. * var coordinates = [110, 50];
  65634. *
  65635. * var geometry = turf.geometry(type, coordinates);
  65636. *
  65637. * //=geometry
  65638. */
  65639. function main_es_geometry(type, coordinates, options) {
  65640. // Optional Parameters
  65641. options = options || {};
  65642. if (!isObject(options)) throw new Error('options is invalid');
  65643. var bbox = options.bbox;
  65644. // Validation
  65645. if (!type) throw new Error('type is required');
  65646. if (!coordinates) throw new Error('coordinates is required');
  65647. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  65648. if (bbox) validateBBox(bbox);
  65649. // Main
  65650. var geom;
  65651. switch (type) {
  65652. case 'Point': geom = point(coordinates).geometry; break;
  65653. case 'LineString': geom = lineString(coordinates).geometry; break;
  65654. case 'Polygon': geom = polygon(coordinates).geometry; break;
  65655. case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;
  65656. case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;
  65657. case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;
  65658. default: throw new Error(type + ' is invalid');
  65659. }
  65660. if (bbox) geom.bbox = bbox;
  65661. return geom;
  65662. }
  65663. /**
  65664. * Creates a {@link Point} {@link Feature} from a Position.
  65665. *
  65666. * @name point
  65667. * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
  65668. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  65669. * @param {Object} [options={}] Optional Parameters
  65670. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  65671. * @param {string|number} [options.id] Identifier associated with the Feature
  65672. * @returns {Feature<Point>} a Point feature
  65673. * @example
  65674. * var point = turf.point([-75.343, 39.984]);
  65675. *
  65676. * //=point
  65677. */
  65678. function point(coordinates, properties, options) {
  65679. if (!coordinates) throw new Error('coordinates is required');
  65680. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  65681. if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');
  65682. if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');
  65683. return main_es_feature({
  65684. type: 'Point',
  65685. coordinates: coordinates
  65686. }, properties, options);
  65687. }
  65688. /**
  65689. * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.
  65690. *
  65691. * @name points
  65692. * @param {Array<Array<number>>} coordinates an array of Points
  65693. * @param {Object} [properties={}] Translate these properties to each Feature
  65694. * @param {Object} [options={}] Optional Parameters
  65695. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
  65696. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  65697. * @returns {FeatureCollection<Point>} Point Feature
  65698. * @example
  65699. * var points = turf.points([
  65700. * [-75, 39],
  65701. * [-80, 45],
  65702. * [-78, 50]
  65703. * ]);
  65704. *
  65705. * //=points
  65706. */
  65707. function points(coordinates, properties, options) {
  65708. if (!coordinates) throw new Error('coordinates is required');
  65709. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  65710. return featureCollection(coordinates.map(function (coords) {
  65711. return point(coords, properties);
  65712. }), options);
  65713. }
  65714. /**
  65715. * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.
  65716. *
  65717. * @name polygon
  65718. * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings
  65719. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  65720. * @param {Object} [options={}] Optional Parameters
  65721. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  65722. * @param {string|number} [options.id] Identifier associated with the Feature
  65723. * @returns {Feature<Polygon>} Polygon Feature
  65724. * @example
  65725. * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });
  65726. *
  65727. * //=polygon
  65728. */
  65729. function polygon(coordinates, properties, options) {
  65730. if (!coordinates) throw new Error('coordinates is required');
  65731. for (var i = 0; i < coordinates.length; i++) {
  65732. var ring = coordinates[i];
  65733. if (ring.length < 4) {
  65734. throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');
  65735. }
  65736. for (var j = 0; j < ring[ring.length - 1].length; j++) {
  65737. // Check if first point of Polygon contains two numbers
  65738. if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');
  65739. if (ring[ring.length - 1][j] !== ring[0][j]) {
  65740. throw new Error('First and last Position are not equivalent.');
  65741. }
  65742. }
  65743. }
  65744. return main_es_feature({
  65745. type: 'Polygon',
  65746. coordinates: coordinates
  65747. }, properties, options);
  65748. }
  65749. /**
  65750. * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.
  65751. *
  65752. * @name polygons
  65753. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates
  65754. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  65755. * @param {Object} [options={}] Optional Parameters
  65756. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  65757. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  65758. * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection
  65759. * @example
  65760. * var polygons = turf.polygons([
  65761. * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],
  65762. * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],
  65763. * ]);
  65764. *
  65765. * //=polygons
  65766. */
  65767. function polygons(coordinates, properties, options) {
  65768. if (!coordinates) throw new Error('coordinates is required');
  65769. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  65770. return featureCollection(coordinates.map(function (coords) {
  65771. return polygon(coords, properties);
  65772. }), options);
  65773. }
  65774. /**
  65775. * Creates a {@link LineString} {@link Feature} from an Array of Positions.
  65776. *
  65777. * @name lineString
  65778. * @param {Array<Array<number>>} coordinates an array of Positions
  65779. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  65780. * @param {Object} [options={}] Optional Parameters
  65781. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  65782. * @param {string|number} [options.id] Identifier associated with the Feature
  65783. * @returns {Feature<LineString>} LineString Feature
  65784. * @example
  65785. * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});
  65786. * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});
  65787. *
  65788. * //=linestring1
  65789. * //=linestring2
  65790. */
  65791. function lineString(coordinates, properties, options) {
  65792. if (!coordinates) throw new Error('coordinates is required');
  65793. if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');
  65794. // Check if first point of LineString contains two numbers
  65795. if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');
  65796. return main_es_feature({
  65797. type: 'LineString',
  65798. coordinates: coordinates
  65799. }, properties, options);
  65800. }
  65801. /**
  65802. * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.
  65803. *
  65804. * @name lineStrings
  65805. * @param {Array<Array<number>>} coordinates an array of LinearRings
  65806. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  65807. * @param {Object} [options={}] Optional Parameters
  65808. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
  65809. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  65810. * @returns {FeatureCollection<LineString>} LineString FeatureCollection
  65811. * @example
  65812. * var linestrings = turf.lineStrings([
  65813. * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],
  65814. * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]
  65815. * ]);
  65816. *
  65817. * //=linestrings
  65818. */
  65819. function lineStrings(coordinates, properties, options) {
  65820. if (!coordinates) throw new Error('coordinates is required');
  65821. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  65822. return featureCollection(coordinates.map(function (coords) {
  65823. return lineString(coords, properties);
  65824. }), options);
  65825. }
  65826. /**
  65827. * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.
  65828. *
  65829. * @name featureCollection
  65830. * @param {Feature[]} features input features
  65831. * @param {Object} [options={}] Optional Parameters
  65832. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  65833. * @param {string|number} [options.id] Identifier associated with the Feature
  65834. * @returns {FeatureCollection} FeatureCollection of Features
  65835. * @example
  65836. * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});
  65837. * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});
  65838. * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});
  65839. *
  65840. * var collection = turf.featureCollection([
  65841. * locationA,
  65842. * locationB,
  65843. * locationC
  65844. * ]);
  65845. *
  65846. * //=collection
  65847. */
  65848. function featureCollection(features, options) {
  65849. // Optional Parameters
  65850. options = options || {};
  65851. if (!isObject(options)) throw new Error('options is invalid');
  65852. var bbox = options.bbox;
  65853. var id = options.id;
  65854. // Validation
  65855. if (!features) throw new Error('No features passed');
  65856. if (!Array.isArray(features)) throw new Error('features must be an Array');
  65857. if (bbox) validateBBox(bbox);
  65858. if (id) validateId(id);
  65859. // Main
  65860. var fc = {type: 'FeatureCollection'};
  65861. if (id) fc.id = id;
  65862. if (bbox) fc.bbox = bbox;
  65863. fc.features = features;
  65864. return fc;
  65865. }
  65866. /**
  65867. * Creates a {@link Feature<MultiLineString>} based on a
  65868. * coordinate array. Properties can be added optionally.
  65869. *
  65870. * @name multiLineString
  65871. * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings
  65872. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  65873. * @param {Object} [options={}] Optional Parameters
  65874. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  65875. * @param {string|number} [options.id] Identifier associated with the Feature
  65876. * @returns {Feature<MultiLineString>} a MultiLineString feature
  65877. * @throws {Error} if no coordinates are passed
  65878. * @example
  65879. * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);
  65880. *
  65881. * //=multiLine
  65882. */
  65883. function multiLineString(coordinates, properties, options) {
  65884. if (!coordinates) throw new Error('coordinates is required');
  65885. return main_es_feature({
  65886. type: 'MultiLineString',
  65887. coordinates: coordinates
  65888. }, properties, options);
  65889. }
  65890. /**
  65891. * Creates a {@link Feature<MultiPoint>} based on a
  65892. * coordinate array. Properties can be added optionally.
  65893. *
  65894. * @name multiPoint
  65895. * @param {Array<Array<number>>} coordinates an array of Positions
  65896. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  65897. * @param {Object} [options={}] Optional Parameters
  65898. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  65899. * @param {string|number} [options.id] Identifier associated with the Feature
  65900. * @returns {Feature<MultiPoint>} a MultiPoint feature
  65901. * @throws {Error} if no coordinates are passed
  65902. * @example
  65903. * var multiPt = turf.multiPoint([[0,0],[10,10]]);
  65904. *
  65905. * //=multiPt
  65906. */
  65907. function multiPoint(coordinates, properties, options) {
  65908. if (!coordinates) throw new Error('coordinates is required');
  65909. return main_es_feature({
  65910. type: 'MultiPoint',
  65911. coordinates: coordinates
  65912. }, properties, options);
  65913. }
  65914. /**
  65915. * Creates a {@link Feature<MultiPolygon>} based on a
  65916. * coordinate array. Properties can be added optionally.
  65917. *
  65918. * @name multiPolygon
  65919. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons
  65920. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  65921. * @param {Object} [options={}] Optional Parameters
  65922. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  65923. * @param {string|number} [options.id] Identifier associated with the Feature
  65924. * @returns {Feature<MultiPolygon>} a multipolygon feature
  65925. * @throws {Error} if no coordinates are passed
  65926. * @example
  65927. * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);
  65928. *
  65929. * //=multiPoly
  65930. *
  65931. */
  65932. function multiPolygon(coordinates, properties, options) {
  65933. if (!coordinates) throw new Error('coordinates is required');
  65934. return main_es_feature({
  65935. type: 'MultiPolygon',
  65936. coordinates: coordinates
  65937. }, properties, options);
  65938. }
  65939. /**
  65940. * Creates a {@link Feature<GeometryCollection>} based on a
  65941. * coordinate array. Properties can be added optionally.
  65942. *
  65943. * @name geometryCollection
  65944. * @param {Array<Geometry>} geometries an array of GeoJSON Geometries
  65945. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  65946. * @param {Object} [options={}] Optional Parameters
  65947. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  65948. * @param {string|number} [options.id] Identifier associated with the Feature
  65949. * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature
  65950. * @example
  65951. * var pt = {
  65952. * "type": "Point",
  65953. * "coordinates": [100, 0]
  65954. * };
  65955. * var line = {
  65956. * "type": "LineString",
  65957. * "coordinates": [ [101, 0], [102, 1] ]
  65958. * };
  65959. * var collection = turf.geometryCollection([pt, line]);
  65960. *
  65961. * //=collection
  65962. */
  65963. function geometryCollection(geometries, properties, options) {
  65964. if (!geometries) throw new Error('geometries is required');
  65965. if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');
  65966. return main_es_feature({
  65967. type: 'GeometryCollection',
  65968. geometries: geometries
  65969. }, properties, options);
  65970. }
  65971. /**
  65972. * Round number to precision
  65973. *
  65974. * @param {number} num Number
  65975. * @param {number} [precision=0] Precision
  65976. * @returns {number} rounded number
  65977. * @example
  65978. * turf.round(120.4321)
  65979. * //=120
  65980. *
  65981. * turf.round(120.4321, 2)
  65982. * //=120.43
  65983. */
  65984. function round(num, precision) {
  65985. if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');
  65986. if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');
  65987. var multiplier = Math.pow(10, precision || 0);
  65988. return Math.round(num * multiplier) / multiplier;
  65989. }
  65990. /**
  65991. * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.
  65992. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  65993. *
  65994. * @name radiansToLength
  65995. * @param {number} radians in radians across the sphere
  65996. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  65997. * @returns {number} distance
  65998. */
  65999. function radiansToLength(radians, units) {
  66000. if (radians === undefined || radians === null) throw new Error('radians is required');
  66001. if (units && typeof units !== 'string') throw new Error('units must be a string');
  66002. var factor = factors[units || 'kilometers'];
  66003. if (!factor) throw new Error(units + ' units is invalid');
  66004. return radians * factor;
  66005. }
  66006. /**
  66007. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians
  66008. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  66009. *
  66010. * @name lengthToRadians
  66011. * @param {number} distance in real units
  66012. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  66013. * @returns {number} radians
  66014. */
  66015. function lengthToRadians(distance, units) {
  66016. if (distance === undefined || distance === null) throw new Error('distance is required');
  66017. if (units && typeof units !== 'string') throw new Error('units must be a string');
  66018. var factor = factors[units || 'kilometers'];
  66019. if (!factor) throw new Error(units + ' units is invalid');
  66020. return distance / factor;
  66021. }
  66022. /**
  66023. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees
  66024. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet
  66025. *
  66026. * @name lengthToDegrees
  66027. * @param {number} distance in real units
  66028. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  66029. * @returns {number} degrees
  66030. */
  66031. function lengthToDegrees(distance, units) {
  66032. return radiansToDegrees(lengthToRadians(distance, units));
  66033. }
  66034. /**
  66035. * Converts any bearing angle from the north line direction (positive clockwise)
  66036. * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line
  66037. *
  66038. * @name bearingToAzimuth
  66039. * @param {number} bearing angle, between -180 and +180 degrees
  66040. * @returns {number} angle between 0 and 360 degrees
  66041. */
  66042. function bearingToAzimuth(bearing) {
  66043. if (bearing === null || bearing === undefined) throw new Error('bearing is required');
  66044. var angle = bearing % 360;
  66045. if (angle < 0) angle += 360;
  66046. return angle;
  66047. }
  66048. /**
  66049. * Converts an angle in radians to degrees
  66050. *
  66051. * @name radiansToDegrees
  66052. * @param {number} radians angle in radians
  66053. * @returns {number} degrees between 0 and 360 degrees
  66054. */
  66055. function radiansToDegrees(radians) {
  66056. if (radians === null || radians === undefined) throw new Error('radians is required');
  66057. var degrees = radians % (2 * Math.PI);
  66058. return degrees * 180 / Math.PI;
  66059. }
  66060. /**
  66061. * Converts an angle in degrees to radians
  66062. *
  66063. * @name degreesToRadians
  66064. * @param {number} degrees angle between 0 and 360 degrees
  66065. * @returns {number} angle in radians
  66066. */
  66067. function degreesToRadians(degrees) {
  66068. if (degrees === null || degrees === undefined) throw new Error('degrees is required');
  66069. var radians = degrees % 360;
  66070. return radians * Math.PI / 180;
  66071. }
  66072. /**
  66073. * Converts a length to the requested unit.
  66074. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  66075. *
  66076. * @param {number} length to be converted
  66077. * @param {string} originalUnit of the length
  66078. * @param {string} [finalUnit='kilometers'] returned unit
  66079. * @returns {number} the converted length
  66080. */
  66081. function convertLength(length, originalUnit, finalUnit) {
  66082. if (length === null || length === undefined) throw new Error('length is required');
  66083. if (!(length >= 0)) throw new Error('length must be a positive number');
  66084. return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');
  66085. }
  66086. /**
  66087. * Converts a area to the requested unit.
  66088. * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches
  66089. * @param {number} area to be converted
  66090. * @param {string} [originalUnit='meters'] of the distance
  66091. * @param {string} [finalUnit='kilometers'] returned unit
  66092. * @returns {number} the converted distance
  66093. */
  66094. function convertArea(area, originalUnit, finalUnit) {
  66095. if (area === null || area === undefined) throw new Error('area is required');
  66096. if (!(area >= 0)) throw new Error('area must be a positive number');
  66097. var startFactor = areaFactors[originalUnit || 'meters'];
  66098. if (!startFactor) throw new Error('invalid original units');
  66099. var finalFactor = areaFactors[finalUnit || 'kilometers'];
  66100. if (!finalFactor) throw new Error('invalid final units');
  66101. return (area / startFactor) * finalFactor;
  66102. }
  66103. /**
  66104. * isNumber
  66105. *
  66106. * @param {*} num Number to validate
  66107. * @returns {boolean} true/false
  66108. * @example
  66109. * turf.isNumber(123)
  66110. * //=true
  66111. * turf.isNumber('foo')
  66112. * //=false
  66113. */
  66114. function isNumber(num) {
  66115. return !isNaN(num) && num !== null && !Array.isArray(num);
  66116. }
  66117. /**
  66118. * isObject
  66119. *
  66120. * @param {*} input variable to validate
  66121. * @returns {boolean} true/false
  66122. * @example
  66123. * turf.isObject({elevation: 10})
  66124. * //=true
  66125. * turf.isObject('foo')
  66126. * //=false
  66127. */
  66128. function isObject(input) {
  66129. return (!!input) && (input.constructor === Object);
  66130. }
  66131. /**
  66132. * Validate BBox
  66133. *
  66134. * @private
  66135. * @param {Array<number>} bbox BBox to validate
  66136. * @returns {void}
  66137. * @throws Error if BBox is not valid
  66138. * @example
  66139. * validateBBox([-180, -40, 110, 50])
  66140. * //=OK
  66141. * validateBBox([-180, -40])
  66142. * //=Error
  66143. * validateBBox('Foo')
  66144. * //=Error
  66145. * validateBBox(5)
  66146. * //=Error
  66147. * validateBBox(null)
  66148. * //=Error
  66149. * validateBBox(undefined)
  66150. * //=Error
  66151. */
  66152. function validateBBox(bbox) {
  66153. if (!bbox) throw new Error('bbox is required');
  66154. if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');
  66155. if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');
  66156. bbox.forEach(function (num) {
  66157. if (!isNumber(num)) throw new Error('bbox must only contain numbers');
  66158. });
  66159. }
  66160. /**
  66161. * Validate Id
  66162. *
  66163. * @private
  66164. * @param {string|number} id Id to validate
  66165. * @returns {void}
  66166. * @throws Error if Id is not valid
  66167. * @example
  66168. * validateId([-180, -40, 110, 50])
  66169. * //=Error
  66170. * validateId([-180, -40])
  66171. * //=Error
  66172. * validateId('Foo')
  66173. * //=OK
  66174. * validateId(5)
  66175. * //=OK
  66176. * validateId(null)
  66177. * //=Error
  66178. * validateId(undefined)
  66179. * //=Error
  66180. */
  66181. function validateId(id) {
  66182. if (!id) throw new Error('id is required');
  66183. if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');
  66184. }
  66185. // Deprecated methods
  66186. function radians2degrees() {
  66187. throw new Error('method has been renamed to `radiansToDegrees`');
  66188. }
  66189. function degrees2radians() {
  66190. throw new Error('method has been renamed to `degreesToRadians`');
  66191. }
  66192. function distanceToDegrees() {
  66193. throw new Error('method has been renamed to `lengthToDegrees`');
  66194. }
  66195. function distanceToRadians() {
  66196. throw new Error('method has been renamed to `lengthToRadians`');
  66197. }
  66198. function radiansToDistance() {
  66199. throw new Error('method has been renamed to `radiansToLength`');
  66200. }
  66201. function bearingToAngle() {
  66202. throw new Error('method has been renamed to `bearingToAzimuth`');
  66203. }
  66204. function convertDistance() {
  66205. throw new Error('method has been renamed to `convertLength`');
  66206. }
  66207. // CONCATENATED MODULE: ./node_modules/@turf/transform-scale/node_modules/@turf/meta/main.es.js
  66208. /**
  66209. * Callback for coordEach
  66210. *
  66211. * @callback coordEachCallback
  66212. * @param {Array<number>} currentCoord The current coordinate being processed.
  66213. * @param {number} coordIndex The current index of the coordinate being processed.
  66214. * @param {number} featureIndex The current index of the Feature being processed.
  66215. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  66216. * @param {number} geometryIndex The current index of the Geometry being processed.
  66217. */
  66218. /**
  66219. * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()
  66220. *
  66221. * @name coordEach
  66222. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  66223. * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)
  66224. * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
  66225. * @returns {void}
  66226. * @example
  66227. * var features = turf.featureCollection([
  66228. * turf.point([26, 37], {"foo": "bar"}),
  66229. * turf.point([36, 53], {"hello": "world"})
  66230. * ]);
  66231. *
  66232. * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
  66233. * //=currentCoord
  66234. * //=coordIndex
  66235. * //=featureIndex
  66236. * //=multiFeatureIndex
  66237. * //=geometryIndex
  66238. * });
  66239. */
  66240. function coordEach(geojson, callback, excludeWrapCoord) {
  66241. // Handles null Geometry -- Skips this GeoJSON
  66242. if (geojson === null) return;
  66243. var j, k, l, geometry, stopG, coords,
  66244. geometryMaybeCollection,
  66245. wrapShrink = 0,
  66246. coordIndex = 0,
  66247. isGeometryCollection,
  66248. type = geojson.type,
  66249. isFeatureCollection = type === 'FeatureCollection',
  66250. isFeature = type === 'Feature',
  66251. stop = isFeatureCollection ? geojson.features.length : 1;
  66252. // This logic may look a little weird. The reason why it is that way
  66253. // is because it's trying to be fast. GeoJSON supports multiple kinds
  66254. // of objects at its root: FeatureCollection, Features, Geometries.
  66255. // This function has the responsibility of handling all of them, and that
  66256. // means that some of the `for` loops you see below actually just don't apply
  66257. // to certain inputs. For instance, if you give this just a
  66258. // Point geometry, then both loops are short-circuited and all we do
  66259. // is gradually rename the input until it's called 'geometry'.
  66260. //
  66261. // This also aims to allocate as few resources as possible: just a
  66262. // few numbers and booleans, rather than any temporary arrays as would
  66263. // be required with the normalization approach.
  66264. for (var featureIndex = 0; featureIndex < stop; featureIndex++) {
  66265. geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :
  66266. (isFeature ? geojson.geometry : geojson));
  66267. isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;
  66268. stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;
  66269. for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {
  66270. var multiFeatureIndex = 0;
  66271. var geometryIndex = 0;
  66272. geometry = isGeometryCollection ?
  66273. geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;
  66274. // Handles null Geometry -- Skips this geometry
  66275. if (geometry === null) continue;
  66276. coords = geometry.coordinates;
  66277. var geomType = geometry.type;
  66278. wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;
  66279. switch (geomType) {
  66280. case null:
  66281. break;
  66282. case 'Point':
  66283. if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  66284. coordIndex++;
  66285. multiFeatureIndex++;
  66286. break;
  66287. case 'LineString':
  66288. case 'MultiPoint':
  66289. for (j = 0; j < coords.length; j++) {
  66290. if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  66291. coordIndex++;
  66292. if (geomType === 'MultiPoint') multiFeatureIndex++;
  66293. }
  66294. if (geomType === 'LineString') multiFeatureIndex++;
  66295. break;
  66296. case 'Polygon':
  66297. case 'MultiLineString':
  66298. for (j = 0; j < coords.length; j++) {
  66299. for (k = 0; k < coords[j].length - wrapShrink; k++) {
  66300. if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  66301. coordIndex++;
  66302. }
  66303. if (geomType === 'MultiLineString') multiFeatureIndex++;
  66304. if (geomType === 'Polygon') geometryIndex++;
  66305. }
  66306. if (geomType === 'Polygon') multiFeatureIndex++;
  66307. break;
  66308. case 'MultiPolygon':
  66309. for (j = 0; j < coords.length; j++) {
  66310. if (geomType === 'MultiPolygon') geometryIndex = 0;
  66311. for (k = 0; k < coords[j].length; k++) {
  66312. for (l = 0; l < coords[j][k].length - wrapShrink; l++) {
  66313. if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  66314. coordIndex++;
  66315. }
  66316. geometryIndex++;
  66317. }
  66318. multiFeatureIndex++;
  66319. }
  66320. break;
  66321. case 'GeometryCollection':
  66322. for (j = 0; j < geometry.geometries.length; j++)
  66323. if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;
  66324. break;
  66325. default:
  66326. throw new Error('Unknown Geometry Type');
  66327. }
  66328. }
  66329. }
  66330. }
  66331. /**
  66332. * Callback for coordReduce
  66333. *
  66334. * The first time the callback function is called, the values provided as arguments depend
  66335. * on whether the reduce method has an initialValue argument.
  66336. *
  66337. * If an initialValue is provided to the reduce method:
  66338. * - The previousValue argument is initialValue.
  66339. * - The currentValue argument is the value of the first element present in the array.
  66340. *
  66341. * If an initialValue is not provided:
  66342. * - The previousValue argument is the value of the first element present in the array.
  66343. * - The currentValue argument is the value of the second element present in the array.
  66344. *
  66345. * @callback coordReduceCallback
  66346. * @param {*} previousValue The accumulated value previously returned in the last invocation
  66347. * of the callback, or initialValue, if supplied.
  66348. * @param {Array<number>} currentCoord The current coordinate being processed.
  66349. * @param {number} coordIndex The current index of the coordinate being processed.
  66350. * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.
  66351. * @param {number} featureIndex The current index of the Feature being processed.
  66352. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  66353. * @param {number} geometryIndex The current index of the Geometry being processed.
  66354. */
  66355. /**
  66356. * Reduce coordinates in any GeoJSON object, similar to Array.reduce()
  66357. *
  66358. * @name coordReduce
  66359. * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object
  66360. * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)
  66361. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  66362. * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
  66363. * @returns {*} The value that results from the reduction.
  66364. * @example
  66365. * var features = turf.featureCollection([
  66366. * turf.point([26, 37], {"foo": "bar"}),
  66367. * turf.point([36, 53], {"hello": "world"})
  66368. * ]);
  66369. *
  66370. * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
  66371. * //=previousValue
  66372. * //=currentCoord
  66373. * //=coordIndex
  66374. * //=featureIndex
  66375. * //=multiFeatureIndex
  66376. * //=geometryIndex
  66377. * return currentCoord;
  66378. * });
  66379. */
  66380. function coordReduce(geojson, callback, initialValue, excludeWrapCoord) {
  66381. var previousValue = initialValue;
  66382. coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
  66383. if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;
  66384. else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);
  66385. }, excludeWrapCoord);
  66386. return previousValue;
  66387. }
  66388. /**
  66389. * Callback for propEach
  66390. *
  66391. * @callback propEachCallback
  66392. * @param {Object} currentProperties The current Properties being processed.
  66393. * @param {number} featureIndex The current index of the Feature being processed.
  66394. */
  66395. /**
  66396. * Iterate over properties in any GeoJSON object, similar to Array.forEach()
  66397. *
  66398. * @name propEach
  66399. * @param {FeatureCollection|Feature} geojson any GeoJSON object
  66400. * @param {Function} callback a method that takes (currentProperties, featureIndex)
  66401. * @returns {void}
  66402. * @example
  66403. * var features = turf.featureCollection([
  66404. * turf.point([26, 37], {foo: 'bar'}),
  66405. * turf.point([36, 53], {hello: 'world'})
  66406. * ]);
  66407. *
  66408. * turf.propEach(features, function (currentProperties, featureIndex) {
  66409. * //=currentProperties
  66410. * //=featureIndex
  66411. * });
  66412. */
  66413. function propEach(geojson, callback) {
  66414. var i;
  66415. switch (geojson.type) {
  66416. case 'FeatureCollection':
  66417. for (i = 0; i < geojson.features.length; i++) {
  66418. if (callback(geojson.features[i].properties, i) === false) break;
  66419. }
  66420. break;
  66421. case 'Feature':
  66422. callback(geojson.properties, 0);
  66423. break;
  66424. }
  66425. }
  66426. /**
  66427. * Callback for propReduce
  66428. *
  66429. * The first time the callback function is called, the values provided as arguments depend
  66430. * on whether the reduce method has an initialValue argument.
  66431. *
  66432. * If an initialValue is provided to the reduce method:
  66433. * - The previousValue argument is initialValue.
  66434. * - The currentValue argument is the value of the first element present in the array.
  66435. *
  66436. * If an initialValue is not provided:
  66437. * - The previousValue argument is the value of the first element present in the array.
  66438. * - The currentValue argument is the value of the second element present in the array.
  66439. *
  66440. * @callback propReduceCallback
  66441. * @param {*} previousValue The accumulated value previously returned in the last invocation
  66442. * of the callback, or initialValue, if supplied.
  66443. * @param {*} currentProperties The current Properties being processed.
  66444. * @param {number} featureIndex The current index of the Feature being processed.
  66445. */
  66446. /**
  66447. * Reduce properties in any GeoJSON object into a single value,
  66448. * similar to how Array.reduce works. However, in this case we lazily run
  66449. * the reduction, so an array of all properties is unnecessary.
  66450. *
  66451. * @name propReduce
  66452. * @param {FeatureCollection|Feature} geojson any GeoJSON object
  66453. * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)
  66454. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  66455. * @returns {*} The value that results from the reduction.
  66456. * @example
  66457. * var features = turf.featureCollection([
  66458. * turf.point([26, 37], {foo: 'bar'}),
  66459. * turf.point([36, 53], {hello: 'world'})
  66460. * ]);
  66461. *
  66462. * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {
  66463. * //=previousValue
  66464. * //=currentProperties
  66465. * //=featureIndex
  66466. * return currentProperties
  66467. * });
  66468. */
  66469. function propReduce(geojson, callback, initialValue) {
  66470. var previousValue = initialValue;
  66471. propEach(geojson, function (currentProperties, featureIndex) {
  66472. if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;
  66473. else previousValue = callback(previousValue, currentProperties, featureIndex);
  66474. });
  66475. return previousValue;
  66476. }
  66477. /**
  66478. * Callback for featureEach
  66479. *
  66480. * @callback featureEachCallback
  66481. * @param {Feature<any>} currentFeature The current Feature being processed.
  66482. * @param {number} featureIndex The current index of the Feature being processed.
  66483. */
  66484. /**
  66485. * Iterate over features in any GeoJSON object, similar to
  66486. * Array.forEach.
  66487. *
  66488. * @name featureEach
  66489. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  66490. * @param {Function} callback a method that takes (currentFeature, featureIndex)
  66491. * @returns {void}
  66492. * @example
  66493. * var features = turf.featureCollection([
  66494. * turf.point([26, 37], {foo: 'bar'}),
  66495. * turf.point([36, 53], {hello: 'world'})
  66496. * ]);
  66497. *
  66498. * turf.featureEach(features, function (currentFeature, featureIndex) {
  66499. * //=currentFeature
  66500. * //=featureIndex
  66501. * });
  66502. */
  66503. function featureEach(geojson, callback) {
  66504. if (geojson.type === 'Feature') {
  66505. callback(geojson, 0);
  66506. } else if (geojson.type === 'FeatureCollection') {
  66507. for (var i = 0; i < geojson.features.length; i++) {
  66508. if (callback(geojson.features[i], i) === false) break;
  66509. }
  66510. }
  66511. }
  66512. /**
  66513. * Callback for featureReduce
  66514. *
  66515. * The first time the callback function is called, the values provided as arguments depend
  66516. * on whether the reduce method has an initialValue argument.
  66517. *
  66518. * If an initialValue is provided to the reduce method:
  66519. * - The previousValue argument is initialValue.
  66520. * - The currentValue argument is the value of the first element present in the array.
  66521. *
  66522. * If an initialValue is not provided:
  66523. * - The previousValue argument is the value of the first element present in the array.
  66524. * - The currentValue argument is the value of the second element present in the array.
  66525. *
  66526. * @callback featureReduceCallback
  66527. * @param {*} previousValue The accumulated value previously returned in the last invocation
  66528. * of the callback, or initialValue, if supplied.
  66529. * @param {Feature} currentFeature The current Feature being processed.
  66530. * @param {number} featureIndex The current index of the Feature being processed.
  66531. */
  66532. /**
  66533. * Reduce features in any GeoJSON object, similar to Array.reduce().
  66534. *
  66535. * @name featureReduce
  66536. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  66537. * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)
  66538. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  66539. * @returns {*} The value that results from the reduction.
  66540. * @example
  66541. * var features = turf.featureCollection([
  66542. * turf.point([26, 37], {"foo": "bar"}),
  66543. * turf.point([36, 53], {"hello": "world"})
  66544. * ]);
  66545. *
  66546. * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {
  66547. * //=previousValue
  66548. * //=currentFeature
  66549. * //=featureIndex
  66550. * return currentFeature
  66551. * });
  66552. */
  66553. function featureReduce(geojson, callback, initialValue) {
  66554. var previousValue = initialValue;
  66555. featureEach(geojson, function (currentFeature, featureIndex) {
  66556. if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;
  66557. else previousValue = callback(previousValue, currentFeature, featureIndex);
  66558. });
  66559. return previousValue;
  66560. }
  66561. /**
  66562. * Get all coordinates from any GeoJSON object.
  66563. *
  66564. * @name coordAll
  66565. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  66566. * @returns {Array<Array<number>>} coordinate position array
  66567. * @example
  66568. * var features = turf.featureCollection([
  66569. * turf.point([26, 37], {foo: 'bar'}),
  66570. * turf.point([36, 53], {hello: 'world'})
  66571. * ]);
  66572. *
  66573. * var coords = turf.coordAll(features);
  66574. * //= [[26, 37], [36, 53]]
  66575. */
  66576. function coordAll(geojson) {
  66577. var coords = [];
  66578. coordEach(geojson, function (coord) {
  66579. coords.push(coord);
  66580. });
  66581. return coords;
  66582. }
  66583. /**
  66584. * Callback for geomEach
  66585. *
  66586. * @callback geomEachCallback
  66587. * @param {Geometry} currentGeometry The current Geometry being processed.
  66588. * @param {number} featureIndex The current index of the Feature being processed.
  66589. * @param {Object} featureProperties The current Feature Properties being processed.
  66590. * @param {Array<number>} featureBBox The current Feature BBox being processed.
  66591. * @param {number|string} featureId The current Feature Id being processed.
  66592. */
  66593. /**
  66594. * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()
  66595. *
  66596. * @name geomEach
  66597. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  66598. * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)
  66599. * @returns {void}
  66600. * @example
  66601. * var features = turf.featureCollection([
  66602. * turf.point([26, 37], {foo: 'bar'}),
  66603. * turf.point([36, 53], {hello: 'world'})
  66604. * ]);
  66605. *
  66606. * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
  66607. * //=currentGeometry
  66608. * //=featureIndex
  66609. * //=featureProperties
  66610. * //=featureBBox
  66611. * //=featureId
  66612. * });
  66613. */
  66614. function geomEach(geojson, callback) {
  66615. var i, j, g, geometry, stopG,
  66616. geometryMaybeCollection,
  66617. isGeometryCollection,
  66618. featureProperties,
  66619. featureBBox,
  66620. featureId,
  66621. featureIndex = 0,
  66622. isFeatureCollection = geojson.type === 'FeatureCollection',
  66623. isFeature = geojson.type === 'Feature',
  66624. stop = isFeatureCollection ? geojson.features.length : 1;
  66625. // This logic may look a little weird. The reason why it is that way
  66626. // is because it's trying to be fast. GeoJSON supports multiple kinds
  66627. // of objects at its root: FeatureCollection, Features, Geometries.
  66628. // This function has the responsibility of handling all of them, and that
  66629. // means that some of the `for` loops you see below actually just don't apply
  66630. // to certain inputs. For instance, if you give this just a
  66631. // Point geometry, then both loops are short-circuited and all we do
  66632. // is gradually rename the input until it's called 'geometry'.
  66633. //
  66634. // This also aims to allocate as few resources as possible: just a
  66635. // few numbers and booleans, rather than any temporary arrays as would
  66636. // be required with the normalization approach.
  66637. for (i = 0; i < stop; i++) {
  66638. geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :
  66639. (isFeature ? geojson.geometry : geojson));
  66640. featureProperties = (isFeatureCollection ? geojson.features[i].properties :
  66641. (isFeature ? geojson.properties : {}));
  66642. featureBBox = (isFeatureCollection ? geojson.features[i].bbox :
  66643. (isFeature ? geojson.bbox : undefined));
  66644. featureId = (isFeatureCollection ? geojson.features[i].id :
  66645. (isFeature ? geojson.id : undefined));
  66646. isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;
  66647. stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;
  66648. for (g = 0; g < stopG; g++) {
  66649. geometry = isGeometryCollection ?
  66650. geometryMaybeCollection.geometries[g] : geometryMaybeCollection;
  66651. // Handle null Geometry
  66652. if (geometry === null) {
  66653. if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;
  66654. continue;
  66655. }
  66656. switch (geometry.type) {
  66657. case 'Point':
  66658. case 'LineString':
  66659. case 'MultiPoint':
  66660. case 'Polygon':
  66661. case 'MultiLineString':
  66662. case 'MultiPolygon': {
  66663. if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;
  66664. break;
  66665. }
  66666. case 'GeometryCollection': {
  66667. for (j = 0; j < geometry.geometries.length; j++) {
  66668. if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;
  66669. }
  66670. break;
  66671. }
  66672. default:
  66673. throw new Error('Unknown Geometry Type');
  66674. }
  66675. }
  66676. // Only increase `featureIndex` per each feature
  66677. featureIndex++;
  66678. }
  66679. }
  66680. /**
  66681. * Callback for geomReduce
  66682. *
  66683. * The first time the callback function is called, the values provided as arguments depend
  66684. * on whether the reduce method has an initialValue argument.
  66685. *
  66686. * If an initialValue is provided to the reduce method:
  66687. * - The previousValue argument is initialValue.
  66688. * - The currentValue argument is the value of the first element present in the array.
  66689. *
  66690. * If an initialValue is not provided:
  66691. * - The previousValue argument is the value of the first element present in the array.
  66692. * - The currentValue argument is the value of the second element present in the array.
  66693. *
  66694. * @callback geomReduceCallback
  66695. * @param {*} previousValue The accumulated value previously returned in the last invocation
  66696. * of the callback, or initialValue, if supplied.
  66697. * @param {Geometry} currentGeometry The current Geometry being processed.
  66698. * @param {number} featureIndex The current index of the Feature being processed.
  66699. * @param {Object} featureProperties The current Feature Properties being processed.
  66700. * @param {Array<number>} featureBBox The current Feature BBox being processed.
  66701. * @param {number|string} featureId The current Feature Id being processed.
  66702. */
  66703. /**
  66704. * Reduce geometry in any GeoJSON object, similar to Array.reduce().
  66705. *
  66706. * @name geomReduce
  66707. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  66708. * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)
  66709. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  66710. * @returns {*} The value that results from the reduction.
  66711. * @example
  66712. * var features = turf.featureCollection([
  66713. * turf.point([26, 37], {foo: 'bar'}),
  66714. * turf.point([36, 53], {hello: 'world'})
  66715. * ]);
  66716. *
  66717. * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
  66718. * //=previousValue
  66719. * //=currentGeometry
  66720. * //=featureIndex
  66721. * //=featureProperties
  66722. * //=featureBBox
  66723. * //=featureId
  66724. * return currentGeometry
  66725. * });
  66726. */
  66727. function geomReduce(geojson, callback, initialValue) {
  66728. var previousValue = initialValue;
  66729. geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
  66730. if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;
  66731. else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);
  66732. });
  66733. return previousValue;
  66734. }
  66735. /**
  66736. * Callback for flattenEach
  66737. *
  66738. * @callback flattenEachCallback
  66739. * @param {Feature} currentFeature The current flattened feature being processed.
  66740. * @param {number} featureIndex The current index of the Feature being processed.
  66741. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  66742. */
  66743. /**
  66744. * Iterate over flattened features in any GeoJSON object, similar to
  66745. * Array.forEach.
  66746. *
  66747. * @name flattenEach
  66748. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  66749. * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)
  66750. * @example
  66751. * var features = turf.featureCollection([
  66752. * turf.point([26, 37], {foo: 'bar'}),
  66753. * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})
  66754. * ]);
  66755. *
  66756. * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {
  66757. * //=currentFeature
  66758. * //=featureIndex
  66759. * //=multiFeatureIndex
  66760. * });
  66761. */
  66762. function flattenEach(geojson, callback) {
  66763. geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {
  66764. // Callback for single geometry
  66765. var type = (geometry === null) ? null : geometry.type;
  66766. switch (type) {
  66767. case null:
  66768. case 'Point':
  66769. case 'LineString':
  66770. case 'Polygon':
  66771. if (callback(main_es_feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;
  66772. return;
  66773. }
  66774. var geomType;
  66775. // Callback for multi-geometry
  66776. switch (type) {
  66777. case 'MultiPoint':
  66778. geomType = 'Point';
  66779. break;
  66780. case 'MultiLineString':
  66781. geomType = 'LineString';
  66782. break;
  66783. case 'MultiPolygon':
  66784. geomType = 'Polygon';
  66785. break;
  66786. }
  66787. for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {
  66788. var coordinate = geometry.coordinates[multiFeatureIndex];
  66789. var geom = {
  66790. type: geomType,
  66791. coordinates: coordinate
  66792. };
  66793. if (callback(main_es_feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;
  66794. }
  66795. });
  66796. }
  66797. /**
  66798. * Callback for flattenReduce
  66799. *
  66800. * The first time the callback function is called, the values provided as arguments depend
  66801. * on whether the reduce method has an initialValue argument.
  66802. *
  66803. * If an initialValue is provided to the reduce method:
  66804. * - The previousValue argument is initialValue.
  66805. * - The currentValue argument is the value of the first element present in the array.
  66806. *
  66807. * If an initialValue is not provided:
  66808. * - The previousValue argument is the value of the first element present in the array.
  66809. * - The currentValue argument is the value of the second element present in the array.
  66810. *
  66811. * @callback flattenReduceCallback
  66812. * @param {*} previousValue The accumulated value previously returned in the last invocation
  66813. * of the callback, or initialValue, if supplied.
  66814. * @param {Feature} currentFeature The current Feature being processed.
  66815. * @param {number} featureIndex The current index of the Feature being processed.
  66816. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  66817. */
  66818. /**
  66819. * Reduce flattened features in any GeoJSON object, similar to Array.reduce().
  66820. *
  66821. * @name flattenReduce
  66822. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  66823. * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)
  66824. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  66825. * @returns {*} The value that results from the reduction.
  66826. * @example
  66827. * var features = turf.featureCollection([
  66828. * turf.point([26, 37], {foo: 'bar'}),
  66829. * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})
  66830. * ]);
  66831. *
  66832. * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {
  66833. * //=previousValue
  66834. * //=currentFeature
  66835. * //=featureIndex
  66836. * //=multiFeatureIndex
  66837. * return currentFeature
  66838. * });
  66839. */
  66840. function flattenReduce(geojson, callback, initialValue) {
  66841. var previousValue = initialValue;
  66842. flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {
  66843. if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;
  66844. else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);
  66845. });
  66846. return previousValue;
  66847. }
  66848. /**
  66849. * Callback for segmentEach
  66850. *
  66851. * @callback segmentEachCallback
  66852. * @param {Feature<LineString>} currentSegment The current Segment being processed.
  66853. * @param {number} featureIndex The current index of the Feature being processed.
  66854. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  66855. * @param {number} geometryIndex The current index of the Geometry being processed.
  66856. * @param {number} segmentIndex The current index of the Segment being processed.
  66857. * @returns {void}
  66858. */
  66859. /**
  66860. * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()
  66861. * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
  66862. *
  66863. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON
  66864. * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)
  66865. * @returns {void}
  66866. * @example
  66867. * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);
  66868. *
  66869. * // Iterate over GeoJSON by 2-vertex segments
  66870. * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
  66871. * //=currentSegment
  66872. * //=featureIndex
  66873. * //=multiFeatureIndex
  66874. * //=geometryIndex
  66875. * //=segmentIndex
  66876. * });
  66877. *
  66878. * // Calculate the total number of segments
  66879. * var total = 0;
  66880. * turf.segmentEach(polygon, function () {
  66881. * total++;
  66882. * });
  66883. */
  66884. function segmentEach(geojson, callback) {
  66885. flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {
  66886. var segmentIndex = 0;
  66887. // Exclude null Geometries
  66888. if (!feature$$1.geometry) return;
  66889. // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
  66890. var type = feature$$1.geometry.type;
  66891. if (type === 'Point' || type === 'MultiPoint') return;
  66892. // Generate 2-vertex line segments
  66893. var previousCoords;
  66894. if (coordEach(feature$$1, function (currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {
  66895. // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`
  66896. if (previousCoords === undefined) {
  66897. previousCoords = currentCoord;
  66898. return;
  66899. }
  66900. var currentSegment = lineString([previousCoords, currentCoord], feature$$1.properties);
  66901. if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;
  66902. segmentIndex++;
  66903. previousCoords = currentCoord;
  66904. }) === false) return false;
  66905. });
  66906. }
  66907. /**
  66908. * Callback for segmentReduce
  66909. *
  66910. * The first time the callback function is called, the values provided as arguments depend
  66911. * on whether the reduce method has an initialValue argument.
  66912. *
  66913. * If an initialValue is provided to the reduce method:
  66914. * - The previousValue argument is initialValue.
  66915. * - The currentValue argument is the value of the first element present in the array.
  66916. *
  66917. * If an initialValue is not provided:
  66918. * - The previousValue argument is the value of the first element present in the array.
  66919. * - The currentValue argument is the value of the second element present in the array.
  66920. *
  66921. * @callback segmentReduceCallback
  66922. * @param {*} previousValue The accumulated value previously returned in the last invocation
  66923. * of the callback, or initialValue, if supplied.
  66924. * @param {Feature<LineString>} currentSegment The current Segment being processed.
  66925. * @param {number} featureIndex The current index of the Feature being processed.
  66926. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  66927. * @param {number} geometryIndex The current index of the Geometry being processed.
  66928. * @param {number} segmentIndex The current index of the Segment being processed.
  66929. */
  66930. /**
  66931. * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()
  66932. * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
  66933. *
  66934. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON
  66935. * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)
  66936. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  66937. * @returns {void}
  66938. * @example
  66939. * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);
  66940. *
  66941. * // Iterate over GeoJSON by 2-vertex segments
  66942. * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
  66943. * //= previousSegment
  66944. * //= currentSegment
  66945. * //= featureIndex
  66946. * //= multiFeatureIndex
  66947. * //= geometryIndex
  66948. * //= segmentInex
  66949. * return currentSegment
  66950. * });
  66951. *
  66952. * // Calculate the total number of segments
  66953. * var initialValue = 0
  66954. * var total = turf.segmentReduce(polygon, function (previousValue) {
  66955. * previousValue++;
  66956. * return previousValue;
  66957. * }, initialValue);
  66958. */
  66959. function segmentReduce(geojson, callback, initialValue) {
  66960. var previousValue = initialValue;
  66961. var started = false;
  66962. segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
  66963. if (started === false && initialValue === undefined) previousValue = currentSegment;
  66964. else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);
  66965. started = true;
  66966. });
  66967. return previousValue;
  66968. }
  66969. /**
  66970. * Callback for lineEach
  66971. *
  66972. * @callback lineEachCallback
  66973. * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed
  66974. * @param {number} featureIndex The current index of the Feature being processed
  66975. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed
  66976. * @param {number} geometryIndex The current index of the Geometry being processed
  66977. */
  66978. /**
  66979. * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,
  66980. * similar to Array.forEach.
  66981. *
  66982. * @name lineEach
  66983. * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object
  66984. * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)
  66985. * @example
  66986. * var multiLine = turf.multiLineString([
  66987. * [[26, 37], [35, 45]],
  66988. * [[36, 53], [38, 50], [41, 55]]
  66989. * ]);
  66990. *
  66991. * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
  66992. * //=currentLine
  66993. * //=featureIndex
  66994. * //=multiFeatureIndex
  66995. * //=geometryIndex
  66996. * });
  66997. */
  66998. function lineEach(geojson, callback) {
  66999. // validation
  67000. if (!geojson) throw new Error('geojson is required');
  67001. flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {
  67002. if (feature$$1.geometry === null) return;
  67003. var type = feature$$1.geometry.type;
  67004. var coords = feature$$1.geometry.coordinates;
  67005. switch (type) {
  67006. case 'LineString':
  67007. if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;
  67008. break;
  67009. case 'Polygon':
  67010. for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {
  67011. if (callback(lineString(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  67012. }
  67013. break;
  67014. }
  67015. });
  67016. }
  67017. /**
  67018. * Callback for lineReduce
  67019. *
  67020. * The first time the callback function is called, the values provided as arguments depend
  67021. * on whether the reduce method has an initialValue argument.
  67022. *
  67023. * If an initialValue is provided to the reduce method:
  67024. * - The previousValue argument is initialValue.
  67025. * - The currentValue argument is the value of the first element present in the array.
  67026. *
  67027. * If an initialValue is not provided:
  67028. * - The previousValue argument is the value of the first element present in the array.
  67029. * - The currentValue argument is the value of the second element present in the array.
  67030. *
  67031. * @callback lineReduceCallback
  67032. * @param {*} previousValue The accumulated value previously returned in the last invocation
  67033. * of the callback, or initialValue, if supplied.
  67034. * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.
  67035. * @param {number} featureIndex The current index of the Feature being processed
  67036. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed
  67037. * @param {number} geometryIndex The current index of the Geometry being processed
  67038. */
  67039. /**
  67040. * Reduce features in any GeoJSON object, similar to Array.reduce().
  67041. *
  67042. * @name lineReduce
  67043. * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object
  67044. * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)
  67045. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  67046. * @returns {*} The value that results from the reduction.
  67047. * @example
  67048. * var multiPoly = turf.multiPolygon([
  67049. * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),
  67050. * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])
  67051. * ]);
  67052. *
  67053. * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
  67054. * //=previousValue
  67055. * //=currentLine
  67056. * //=featureIndex
  67057. * //=multiFeatureIndex
  67058. * //=geometryIndex
  67059. * return currentLine
  67060. * });
  67061. */
  67062. function lineReduce(geojson, callback, initialValue) {
  67063. var previousValue = initialValue;
  67064. lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
  67065. if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;
  67066. else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);
  67067. });
  67068. return previousValue;
  67069. }
  67070. /**
  67071. * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.
  67072. *
  67073. * Negative indexes are permitted.
  67074. * Point & MultiPoint will always return null.
  67075. *
  67076. * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry
  67077. * @param {Object} [options={}] Optional parameters
  67078. * @param {number} [options.featureIndex=0] Feature Index
  67079. * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index
  67080. * @param {number} [options.geometryIndex=0] Geometry Index
  67081. * @param {number} [options.segmentIndex=0] Segment Index
  67082. * @param {Object} [options.properties={}] Translate Properties to output LineString
  67083. * @param {BBox} [options.bbox={}] Translate BBox to output LineString
  67084. * @param {number|string} [options.id={}] Translate Id to output LineString
  67085. * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString
  67086. * @example
  67087. * var multiLine = turf.multiLineString([
  67088. * [[10, 10], [50, 30], [30, 40]],
  67089. * [[-10, -10], [-50, -30], [-30, -40]]
  67090. * ]);
  67091. *
  67092. * // First Segment (defaults are 0)
  67093. * turf.findSegment(multiLine);
  67094. * // => Feature<LineString<[[10, 10], [50, 30]]>>
  67095. *
  67096. * // First Segment of 2nd Multi Feature
  67097. * turf.findSegment(multiLine, {multiFeatureIndex: 1});
  67098. * // => Feature<LineString<[[-10, -10], [-50, -30]]>>
  67099. *
  67100. * // Last Segment of Last Multi Feature
  67101. * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});
  67102. * // => Feature<LineString<[[-50, -30], [-30, -40]]>>
  67103. */
  67104. function findSegment(geojson, options) {
  67105. // Optional Parameters
  67106. options = options || {};
  67107. if (!isObject(options)) throw new Error('options is invalid');
  67108. var featureIndex = options.featureIndex || 0;
  67109. var multiFeatureIndex = options.multiFeatureIndex || 0;
  67110. var geometryIndex = options.geometryIndex || 0;
  67111. var segmentIndex = options.segmentIndex || 0;
  67112. // Find FeatureIndex
  67113. var properties = options.properties;
  67114. var geometry;
  67115. switch (geojson.type) {
  67116. case 'FeatureCollection':
  67117. if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;
  67118. properties = properties || geojson.features[featureIndex].properties;
  67119. geometry = geojson.features[featureIndex].geometry;
  67120. break;
  67121. case 'Feature':
  67122. properties = properties || geojson.properties;
  67123. geometry = geojson.geometry;
  67124. break;
  67125. case 'Point':
  67126. case 'MultiPoint':
  67127. return null;
  67128. case 'LineString':
  67129. case 'Polygon':
  67130. case 'MultiLineString':
  67131. case 'MultiPolygon':
  67132. geometry = geojson;
  67133. break;
  67134. default:
  67135. throw new Error('geojson is invalid');
  67136. }
  67137. // Find SegmentIndex
  67138. if (geometry === null) return null;
  67139. var coords = geometry.coordinates;
  67140. switch (geometry.type) {
  67141. case 'Point':
  67142. case 'MultiPoint':
  67143. return null;
  67144. case 'LineString':
  67145. if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;
  67146. return lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);
  67147. case 'Polygon':
  67148. if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;
  67149. if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;
  67150. return lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);
  67151. case 'MultiLineString':
  67152. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  67153. if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;
  67154. return lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);
  67155. case 'MultiPolygon':
  67156. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  67157. if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;
  67158. if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;
  67159. return lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);
  67160. }
  67161. throw new Error('geojson is invalid');
  67162. }
  67163. /**
  67164. * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.
  67165. *
  67166. * Negative indexes are permitted.
  67167. *
  67168. * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry
  67169. * @param {Object} [options={}] Optional parameters
  67170. * @param {number} [options.featureIndex=0] Feature Index
  67171. * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index
  67172. * @param {number} [options.geometryIndex=0] Geometry Index
  67173. * @param {number} [options.coordIndex=0] Coord Index
  67174. * @param {Object} [options.properties={}] Translate Properties to output Point
  67175. * @param {BBox} [options.bbox={}] Translate BBox to output Point
  67176. * @param {number|string} [options.id={}] Translate Id to output Point
  67177. * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point
  67178. * @example
  67179. * var multiLine = turf.multiLineString([
  67180. * [[10, 10], [50, 30], [30, 40]],
  67181. * [[-10, -10], [-50, -30], [-30, -40]]
  67182. * ]);
  67183. *
  67184. * // First Segment (defaults are 0)
  67185. * turf.findPoint(multiLine);
  67186. * // => Feature<Point<[10, 10]>>
  67187. *
  67188. * // First Segment of the 2nd Multi-Feature
  67189. * turf.findPoint(multiLine, {multiFeatureIndex: 1});
  67190. * // => Feature<Point<[-10, -10]>>
  67191. *
  67192. * // Last Segment of last Multi-Feature
  67193. * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});
  67194. * // => Feature<Point<[-30, -40]>>
  67195. */
  67196. function findPoint(geojson, options) {
  67197. // Optional Parameters
  67198. options = options || {};
  67199. if (!isObject(options)) throw new Error('options is invalid');
  67200. var featureIndex = options.featureIndex || 0;
  67201. var multiFeatureIndex = options.multiFeatureIndex || 0;
  67202. var geometryIndex = options.geometryIndex || 0;
  67203. var coordIndex = options.coordIndex || 0;
  67204. // Find FeatureIndex
  67205. var properties = options.properties;
  67206. var geometry;
  67207. switch (geojson.type) {
  67208. case 'FeatureCollection':
  67209. if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;
  67210. properties = properties || geojson.features[featureIndex].properties;
  67211. geometry = geojson.features[featureIndex].geometry;
  67212. break;
  67213. case 'Feature':
  67214. properties = properties || geojson.properties;
  67215. geometry = geojson.geometry;
  67216. break;
  67217. case 'Point':
  67218. case 'MultiPoint':
  67219. return null;
  67220. case 'LineString':
  67221. case 'Polygon':
  67222. case 'MultiLineString':
  67223. case 'MultiPolygon':
  67224. geometry = geojson;
  67225. break;
  67226. default:
  67227. throw new Error('geojson is invalid');
  67228. }
  67229. // Find Coord Index
  67230. if (geometry === null) return null;
  67231. var coords = geometry.coordinates;
  67232. switch (geometry.type) {
  67233. case 'Point':
  67234. return point(coords, properties, options);
  67235. case 'MultiPoint':
  67236. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  67237. return point(coords[multiFeatureIndex], properties, options);
  67238. case 'LineString':
  67239. if (coordIndex < 0) coordIndex = coords.length + coordIndex;
  67240. return point(coords[coordIndex], properties, options);
  67241. case 'Polygon':
  67242. if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;
  67243. if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;
  67244. return point(coords[geometryIndex][coordIndex], properties, options);
  67245. case 'MultiLineString':
  67246. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  67247. if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;
  67248. return point(coords[multiFeatureIndex][coordIndex], properties, options);
  67249. case 'MultiPolygon':
  67250. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  67251. if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;
  67252. if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;
  67253. return point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);
  67254. }
  67255. throw new Error('geojson is invalid');
  67256. }
  67257. // CONCATENATED MODULE: ./node_modules/@turf/transform-scale/node_modules/@turf/bbox/main.es.js
  67258. /**
  67259. * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.
  67260. *
  67261. * @name bbox
  67262. * @param {GeoJSON} geojson any GeoJSON object
  67263. * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order
  67264. * @example
  67265. * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);
  67266. * var bbox = turf.bbox(line);
  67267. * var bboxPolygon = turf.bboxPolygon(bbox);
  67268. *
  67269. * //addToMap
  67270. * var addToMap = [line, bboxPolygon]
  67271. */
  67272. function main_es_bbox(geojson) {
  67273. var BBox = [Infinity, Infinity, -Infinity, -Infinity];
  67274. coordEach(geojson, function (coord) {
  67275. if (BBox[0] > coord[0]) BBox[0] = coord[0];
  67276. if (BBox[1] > coord[1]) BBox[1] = coord[1];
  67277. if (BBox[2] < coord[0]) BBox[2] = coord[0];
  67278. if (BBox[3] < coord[1]) BBox[3] = coord[1];
  67279. });
  67280. return BBox;
  67281. }
  67282. /* harmony default export */ var bbox_main_es = (main_es_bbox);
  67283. // CONCATENATED MODULE: ./node_modules/@turf/transform-scale/node_modules/@turf/center/main.es.js
  67284. /**
  67285. * Takes a {@link Feature} or {@link FeatureCollection} and returns the absolute center point of all features.
  67286. *
  67287. * @name center
  67288. * @param {GeoJSON} geojson GeoJSON to be centered
  67289. * @param {Object} [options={}] Optional parameters
  67290. * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties
  67291. * @returns {Feature<Point>} a Point feature at the absolute center point of all input features
  67292. * @example
  67293. * var features = turf.featureCollection([
  67294. * turf.point( [-97.522259, 35.4691]),
  67295. * turf.point( [-97.502754, 35.463455]),
  67296. * turf.point( [-97.508269, 35.463245])
  67297. * ]);
  67298. *
  67299. * var center = turf.center(features);
  67300. *
  67301. * //addToMap
  67302. * var addToMap = [features, center]
  67303. * center.properties['marker-size'] = 'large';
  67304. * center.properties['marker-color'] = '#000';
  67305. */
  67306. function center(geojson, options) {
  67307. // Optional parameters
  67308. options = options || {};
  67309. if (!isObject(options)) throw new Error('options is invalid');
  67310. var properties = options.properties;
  67311. // Input validation
  67312. if (!geojson) throw new Error('geojson is required');
  67313. var ext = bbox_main_es(geojson);
  67314. var x = (ext[0] + ext[2]) / 2;
  67315. var y = (ext[1] + ext[3]) / 2;
  67316. return point([x, y], properties);
  67317. }
  67318. /* harmony default export */ var center_main_es = (center);
  67319. // CONCATENATED MODULE: ./node_modules/@turf/centroid/node_modules/@turf/helpers/main.es.js
  67320. /**
  67321. * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.
  67322. */
  67323. var main_es_earthRadius = 6371008.8;
  67324. /**
  67325. * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.
  67326. */
  67327. var main_es_factors = {
  67328. meters: main_es_earthRadius,
  67329. metres: main_es_earthRadius,
  67330. millimeters: main_es_earthRadius * 1000,
  67331. millimetres: main_es_earthRadius * 1000,
  67332. centimeters: main_es_earthRadius * 100,
  67333. centimetres: main_es_earthRadius * 100,
  67334. kilometers: main_es_earthRadius / 1000,
  67335. kilometres: main_es_earthRadius / 1000,
  67336. miles: main_es_earthRadius / 1609.344,
  67337. nauticalmiles: main_es_earthRadius / 1852,
  67338. inches: main_es_earthRadius * 39.370,
  67339. yards: main_es_earthRadius / 1.0936,
  67340. feet: main_es_earthRadius * 3.28084,
  67341. radians: 1,
  67342. degrees: main_es_earthRadius / 111325,
  67343. };
  67344. /**
  67345. * Units of measurement factors based on 1 meter.
  67346. */
  67347. var main_es_unitsFactors = {
  67348. meters: 1,
  67349. metres: 1,
  67350. millimeters: 1000,
  67351. millimetres: 1000,
  67352. centimeters: 100,
  67353. centimetres: 100,
  67354. kilometers: 1 / 1000,
  67355. kilometres: 1 / 1000,
  67356. miles: 1 / 1609.344,
  67357. nauticalmiles: 1 / 1852,
  67358. inches: 39.370,
  67359. yards: 1 / 1.0936,
  67360. feet: 3.28084,
  67361. radians: 1 / main_es_earthRadius,
  67362. degrees: 1 / 111325,
  67363. };
  67364. /**
  67365. * Area of measurement factors based on 1 square meter.
  67366. */
  67367. var main_es_areaFactors = {
  67368. meters: 1,
  67369. metres: 1,
  67370. millimeters: 1000000,
  67371. millimetres: 1000000,
  67372. centimeters: 10000,
  67373. centimetres: 10000,
  67374. kilometers: 0.000001,
  67375. kilometres: 0.000001,
  67376. acres: 0.000247105,
  67377. miles: 3.86e-7,
  67378. yards: 1.195990046,
  67379. feet: 10.763910417,
  67380. inches: 1550.003100006
  67381. };
  67382. /**
  67383. * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
  67384. *
  67385. * @name feature
  67386. * @param {Geometry} geometry input geometry
  67387. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  67388. * @param {Object} [options={}] Optional Parameters
  67389. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  67390. * @param {string|number} [options.id] Identifier associated with the Feature
  67391. * @returns {Feature} a GeoJSON Feature
  67392. * @example
  67393. * var geometry = {
  67394. * "type": "Point",
  67395. * "coordinates": [110, 50]
  67396. * };
  67397. *
  67398. * var feature = turf.feature(geometry);
  67399. *
  67400. * //=feature
  67401. */
  67402. function helpers_main_es_feature(geometry, properties, options) {
  67403. // Optional Parameters
  67404. options = options || {};
  67405. if (!main_es_isObject(options)) throw new Error('options is invalid');
  67406. var bbox = options.bbox;
  67407. var id = options.id;
  67408. // Validation
  67409. if (geometry === undefined) throw new Error('geometry is required');
  67410. if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');
  67411. if (bbox) main_es_validateBBox(bbox);
  67412. if (id) main_es_validateId(id);
  67413. // Main
  67414. var feat = {type: 'Feature'};
  67415. if (id) feat.id = id;
  67416. if (bbox) feat.bbox = bbox;
  67417. feat.properties = properties || {};
  67418. feat.geometry = geometry;
  67419. return feat;
  67420. }
  67421. /**
  67422. * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
  67423. * For GeometryCollection type use `helpers.geometryCollection`
  67424. *
  67425. * @name geometry
  67426. * @param {string} type Geometry Type
  67427. * @param {Array<number>} coordinates Coordinates
  67428. * @param {Object} [options={}] Optional Parameters
  67429. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry
  67430. * @returns {Geometry} a GeoJSON Geometry
  67431. * @example
  67432. * var type = 'Point';
  67433. * var coordinates = [110, 50];
  67434. *
  67435. * var geometry = turf.geometry(type, coordinates);
  67436. *
  67437. * //=geometry
  67438. */
  67439. function helpers_main_es_geometry(type, coordinates, options) {
  67440. // Optional Parameters
  67441. options = options || {};
  67442. if (!main_es_isObject(options)) throw new Error('options is invalid');
  67443. var bbox = options.bbox;
  67444. // Validation
  67445. if (!type) throw new Error('type is required');
  67446. if (!coordinates) throw new Error('coordinates is required');
  67447. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  67448. if (bbox) main_es_validateBBox(bbox);
  67449. // Main
  67450. var geom;
  67451. switch (type) {
  67452. case 'Point': geom = main_es_point(coordinates).geometry; break;
  67453. case 'LineString': geom = main_es_lineString(coordinates).geometry; break;
  67454. case 'Polygon': geom = main_es_polygon(coordinates).geometry; break;
  67455. case 'MultiPoint': geom = main_es_multiPoint(coordinates).geometry; break;
  67456. case 'MultiLineString': geom = main_es_multiLineString(coordinates).geometry; break;
  67457. case 'MultiPolygon': geom = main_es_multiPolygon(coordinates).geometry; break;
  67458. default: throw new Error(type + ' is invalid');
  67459. }
  67460. if (bbox) geom.bbox = bbox;
  67461. return geom;
  67462. }
  67463. /**
  67464. * Creates a {@link Point} {@link Feature} from a Position.
  67465. *
  67466. * @name point
  67467. * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
  67468. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  67469. * @param {Object} [options={}] Optional Parameters
  67470. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  67471. * @param {string|number} [options.id] Identifier associated with the Feature
  67472. * @returns {Feature<Point>} a Point feature
  67473. * @example
  67474. * var point = turf.point([-75.343, 39.984]);
  67475. *
  67476. * //=point
  67477. */
  67478. function main_es_point(coordinates, properties, options) {
  67479. if (!coordinates) throw new Error('coordinates is required');
  67480. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  67481. if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');
  67482. if (!main_es_isNumber(coordinates[0]) || !main_es_isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');
  67483. return helpers_main_es_feature({
  67484. type: 'Point',
  67485. coordinates: coordinates
  67486. }, properties, options);
  67487. }
  67488. /**
  67489. * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.
  67490. *
  67491. * @name points
  67492. * @param {Array<Array<number>>} coordinates an array of Points
  67493. * @param {Object} [properties={}] Translate these properties to each Feature
  67494. * @param {Object} [options={}] Optional Parameters
  67495. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
  67496. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  67497. * @returns {FeatureCollection<Point>} Point Feature
  67498. * @example
  67499. * var points = turf.points([
  67500. * [-75, 39],
  67501. * [-80, 45],
  67502. * [-78, 50]
  67503. * ]);
  67504. *
  67505. * //=points
  67506. */
  67507. function main_es_points(coordinates, properties, options) {
  67508. if (!coordinates) throw new Error('coordinates is required');
  67509. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  67510. return main_es_featureCollection(coordinates.map(function (coords) {
  67511. return main_es_point(coords, properties);
  67512. }), options);
  67513. }
  67514. /**
  67515. * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.
  67516. *
  67517. * @name polygon
  67518. * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings
  67519. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  67520. * @param {Object} [options={}] Optional Parameters
  67521. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  67522. * @param {string|number} [options.id] Identifier associated with the Feature
  67523. * @returns {Feature<Polygon>} Polygon Feature
  67524. * @example
  67525. * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });
  67526. *
  67527. * //=polygon
  67528. */
  67529. function main_es_polygon(coordinates, properties, options) {
  67530. if (!coordinates) throw new Error('coordinates is required');
  67531. for (var i = 0; i < coordinates.length; i++) {
  67532. var ring = coordinates[i];
  67533. if (ring.length < 4) {
  67534. throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');
  67535. }
  67536. for (var j = 0; j < ring[ring.length - 1].length; j++) {
  67537. // Check if first point of Polygon contains two numbers
  67538. if (i === 0 && j === 0 && !main_es_isNumber(ring[0][0]) || !main_es_isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');
  67539. if (ring[ring.length - 1][j] !== ring[0][j]) {
  67540. throw new Error('First and last Position are not equivalent.');
  67541. }
  67542. }
  67543. }
  67544. return helpers_main_es_feature({
  67545. type: 'Polygon',
  67546. coordinates: coordinates
  67547. }, properties, options);
  67548. }
  67549. /**
  67550. * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.
  67551. *
  67552. * @name polygons
  67553. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates
  67554. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  67555. * @param {Object} [options={}] Optional Parameters
  67556. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  67557. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  67558. * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection
  67559. * @example
  67560. * var polygons = turf.polygons([
  67561. * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],
  67562. * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],
  67563. * ]);
  67564. *
  67565. * //=polygons
  67566. */
  67567. function main_es_polygons(coordinates, properties, options) {
  67568. if (!coordinates) throw new Error('coordinates is required');
  67569. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  67570. return main_es_featureCollection(coordinates.map(function (coords) {
  67571. return main_es_polygon(coords, properties);
  67572. }), options);
  67573. }
  67574. /**
  67575. * Creates a {@link LineString} {@link Feature} from an Array of Positions.
  67576. *
  67577. * @name lineString
  67578. * @param {Array<Array<number>>} coordinates an array of Positions
  67579. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  67580. * @param {Object} [options={}] Optional Parameters
  67581. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  67582. * @param {string|number} [options.id] Identifier associated with the Feature
  67583. * @returns {Feature<LineString>} LineString Feature
  67584. * @example
  67585. * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});
  67586. * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});
  67587. *
  67588. * //=linestring1
  67589. * //=linestring2
  67590. */
  67591. function main_es_lineString(coordinates, properties, options) {
  67592. if (!coordinates) throw new Error('coordinates is required');
  67593. if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');
  67594. // Check if first point of LineString contains two numbers
  67595. if (!main_es_isNumber(coordinates[0][1]) || !main_es_isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');
  67596. return helpers_main_es_feature({
  67597. type: 'LineString',
  67598. coordinates: coordinates
  67599. }, properties, options);
  67600. }
  67601. /**
  67602. * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.
  67603. *
  67604. * @name lineStrings
  67605. * @param {Array<Array<number>>} coordinates an array of LinearRings
  67606. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  67607. * @param {Object} [options={}] Optional Parameters
  67608. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
  67609. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  67610. * @returns {FeatureCollection<LineString>} LineString FeatureCollection
  67611. * @example
  67612. * var linestrings = turf.lineStrings([
  67613. * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],
  67614. * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]
  67615. * ]);
  67616. *
  67617. * //=linestrings
  67618. */
  67619. function main_es_lineStrings(coordinates, properties, options) {
  67620. if (!coordinates) throw new Error('coordinates is required');
  67621. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  67622. return main_es_featureCollection(coordinates.map(function (coords) {
  67623. return main_es_lineString(coords, properties);
  67624. }), options);
  67625. }
  67626. /**
  67627. * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.
  67628. *
  67629. * @name featureCollection
  67630. * @param {Feature[]} features input features
  67631. * @param {Object} [options={}] Optional Parameters
  67632. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  67633. * @param {string|number} [options.id] Identifier associated with the Feature
  67634. * @returns {FeatureCollection} FeatureCollection of Features
  67635. * @example
  67636. * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});
  67637. * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});
  67638. * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});
  67639. *
  67640. * var collection = turf.featureCollection([
  67641. * locationA,
  67642. * locationB,
  67643. * locationC
  67644. * ]);
  67645. *
  67646. * //=collection
  67647. */
  67648. function main_es_featureCollection(features, options) {
  67649. // Optional Parameters
  67650. options = options || {};
  67651. if (!main_es_isObject(options)) throw new Error('options is invalid');
  67652. var bbox = options.bbox;
  67653. var id = options.id;
  67654. // Validation
  67655. if (!features) throw new Error('No features passed');
  67656. if (!Array.isArray(features)) throw new Error('features must be an Array');
  67657. if (bbox) main_es_validateBBox(bbox);
  67658. if (id) main_es_validateId(id);
  67659. // Main
  67660. var fc = {type: 'FeatureCollection'};
  67661. if (id) fc.id = id;
  67662. if (bbox) fc.bbox = bbox;
  67663. fc.features = features;
  67664. return fc;
  67665. }
  67666. /**
  67667. * Creates a {@link Feature<MultiLineString>} based on a
  67668. * coordinate array. Properties can be added optionally.
  67669. *
  67670. * @name multiLineString
  67671. * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings
  67672. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  67673. * @param {Object} [options={}] Optional Parameters
  67674. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  67675. * @param {string|number} [options.id] Identifier associated with the Feature
  67676. * @returns {Feature<MultiLineString>} a MultiLineString feature
  67677. * @throws {Error} if no coordinates are passed
  67678. * @example
  67679. * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);
  67680. *
  67681. * //=multiLine
  67682. */
  67683. function main_es_multiLineString(coordinates, properties, options) {
  67684. if (!coordinates) throw new Error('coordinates is required');
  67685. return helpers_main_es_feature({
  67686. type: 'MultiLineString',
  67687. coordinates: coordinates
  67688. }, properties, options);
  67689. }
  67690. /**
  67691. * Creates a {@link Feature<MultiPoint>} based on a
  67692. * coordinate array. Properties can be added optionally.
  67693. *
  67694. * @name multiPoint
  67695. * @param {Array<Array<number>>} coordinates an array of Positions
  67696. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  67697. * @param {Object} [options={}] Optional Parameters
  67698. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  67699. * @param {string|number} [options.id] Identifier associated with the Feature
  67700. * @returns {Feature<MultiPoint>} a MultiPoint feature
  67701. * @throws {Error} if no coordinates are passed
  67702. * @example
  67703. * var multiPt = turf.multiPoint([[0,0],[10,10]]);
  67704. *
  67705. * //=multiPt
  67706. */
  67707. function main_es_multiPoint(coordinates, properties, options) {
  67708. if (!coordinates) throw new Error('coordinates is required');
  67709. return helpers_main_es_feature({
  67710. type: 'MultiPoint',
  67711. coordinates: coordinates
  67712. }, properties, options);
  67713. }
  67714. /**
  67715. * Creates a {@link Feature<MultiPolygon>} based on a
  67716. * coordinate array. Properties can be added optionally.
  67717. *
  67718. * @name multiPolygon
  67719. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons
  67720. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  67721. * @param {Object} [options={}] Optional Parameters
  67722. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  67723. * @param {string|number} [options.id] Identifier associated with the Feature
  67724. * @returns {Feature<MultiPolygon>} a multipolygon feature
  67725. * @throws {Error} if no coordinates are passed
  67726. * @example
  67727. * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);
  67728. *
  67729. * //=multiPoly
  67730. *
  67731. */
  67732. function main_es_multiPolygon(coordinates, properties, options) {
  67733. if (!coordinates) throw new Error('coordinates is required');
  67734. return helpers_main_es_feature({
  67735. type: 'MultiPolygon',
  67736. coordinates: coordinates
  67737. }, properties, options);
  67738. }
  67739. /**
  67740. * Creates a {@link Feature<GeometryCollection>} based on a
  67741. * coordinate array. Properties can be added optionally.
  67742. *
  67743. * @name geometryCollection
  67744. * @param {Array<Geometry>} geometries an array of GeoJSON Geometries
  67745. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  67746. * @param {Object} [options={}] Optional Parameters
  67747. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  67748. * @param {string|number} [options.id] Identifier associated with the Feature
  67749. * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature
  67750. * @example
  67751. * var pt = {
  67752. * "type": "Point",
  67753. * "coordinates": [100, 0]
  67754. * };
  67755. * var line = {
  67756. * "type": "LineString",
  67757. * "coordinates": [ [101, 0], [102, 1] ]
  67758. * };
  67759. * var collection = turf.geometryCollection([pt, line]);
  67760. *
  67761. * //=collection
  67762. */
  67763. function main_es_geometryCollection(geometries, properties, options) {
  67764. if (!geometries) throw new Error('geometries is required');
  67765. if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');
  67766. return helpers_main_es_feature({
  67767. type: 'GeometryCollection',
  67768. geometries: geometries
  67769. }, properties, options);
  67770. }
  67771. /**
  67772. * Round number to precision
  67773. *
  67774. * @param {number} num Number
  67775. * @param {number} [precision=0] Precision
  67776. * @returns {number} rounded number
  67777. * @example
  67778. * turf.round(120.4321)
  67779. * //=120
  67780. *
  67781. * turf.round(120.4321, 2)
  67782. * //=120.43
  67783. */
  67784. function main_es_round(num, precision) {
  67785. if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');
  67786. if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');
  67787. var multiplier = Math.pow(10, precision || 0);
  67788. return Math.round(num * multiplier) / multiplier;
  67789. }
  67790. /**
  67791. * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.
  67792. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  67793. *
  67794. * @name radiansToLength
  67795. * @param {number} radians in radians across the sphere
  67796. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  67797. * @returns {number} distance
  67798. */
  67799. function main_es_radiansToLength(radians, units) {
  67800. if (radians === undefined || radians === null) throw new Error('radians is required');
  67801. if (units && typeof units !== 'string') throw new Error('units must be a string');
  67802. var factor = main_es_factors[units || 'kilometers'];
  67803. if (!factor) throw new Error(units + ' units is invalid');
  67804. return radians * factor;
  67805. }
  67806. /**
  67807. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians
  67808. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  67809. *
  67810. * @name lengthToRadians
  67811. * @param {number} distance in real units
  67812. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  67813. * @returns {number} radians
  67814. */
  67815. function main_es_lengthToRadians(distance, units) {
  67816. if (distance === undefined || distance === null) throw new Error('distance is required');
  67817. if (units && typeof units !== 'string') throw new Error('units must be a string');
  67818. var factor = main_es_factors[units || 'kilometers'];
  67819. if (!factor) throw new Error(units + ' units is invalid');
  67820. return distance / factor;
  67821. }
  67822. /**
  67823. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees
  67824. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet
  67825. *
  67826. * @name lengthToDegrees
  67827. * @param {number} distance in real units
  67828. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  67829. * @returns {number} degrees
  67830. */
  67831. function main_es_lengthToDegrees(distance, units) {
  67832. return main_es_radiansToDegrees(main_es_lengthToRadians(distance, units));
  67833. }
  67834. /**
  67835. * Converts any bearing angle from the north line direction (positive clockwise)
  67836. * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line
  67837. *
  67838. * @name bearingToAzimuth
  67839. * @param {number} bearing angle, between -180 and +180 degrees
  67840. * @returns {number} angle between 0 and 360 degrees
  67841. */
  67842. function main_es_bearingToAzimuth(bearing) {
  67843. if (bearing === null || bearing === undefined) throw new Error('bearing is required');
  67844. var angle = bearing % 360;
  67845. if (angle < 0) angle += 360;
  67846. return angle;
  67847. }
  67848. /**
  67849. * Converts an angle in radians to degrees
  67850. *
  67851. * @name radiansToDegrees
  67852. * @param {number} radians angle in radians
  67853. * @returns {number} degrees between 0 and 360 degrees
  67854. */
  67855. function main_es_radiansToDegrees(radians) {
  67856. if (radians === null || radians === undefined) throw new Error('radians is required');
  67857. var degrees = radians % (2 * Math.PI);
  67858. return degrees * 180 / Math.PI;
  67859. }
  67860. /**
  67861. * Converts an angle in degrees to radians
  67862. *
  67863. * @name degreesToRadians
  67864. * @param {number} degrees angle between 0 and 360 degrees
  67865. * @returns {number} angle in radians
  67866. */
  67867. function main_es_degreesToRadians(degrees) {
  67868. if (degrees === null || degrees === undefined) throw new Error('degrees is required');
  67869. var radians = degrees % 360;
  67870. return radians * Math.PI / 180;
  67871. }
  67872. /**
  67873. * Converts a length to the requested unit.
  67874. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  67875. *
  67876. * @param {number} length to be converted
  67877. * @param {string} originalUnit of the length
  67878. * @param {string} [finalUnit='kilometers'] returned unit
  67879. * @returns {number} the converted length
  67880. */
  67881. function main_es_convertLength(length, originalUnit, finalUnit) {
  67882. if (length === null || length === undefined) throw new Error('length is required');
  67883. if (!(length >= 0)) throw new Error('length must be a positive number');
  67884. return main_es_radiansToLength(main_es_lengthToRadians(length, originalUnit), finalUnit || 'kilometers');
  67885. }
  67886. /**
  67887. * Converts a area to the requested unit.
  67888. * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches
  67889. * @param {number} area to be converted
  67890. * @param {string} [originalUnit='meters'] of the distance
  67891. * @param {string} [finalUnit='kilometers'] returned unit
  67892. * @returns {number} the converted distance
  67893. */
  67894. function main_es_convertArea(area, originalUnit, finalUnit) {
  67895. if (area === null || area === undefined) throw new Error('area is required');
  67896. if (!(area >= 0)) throw new Error('area must be a positive number');
  67897. var startFactor = main_es_areaFactors[originalUnit || 'meters'];
  67898. if (!startFactor) throw new Error('invalid original units');
  67899. var finalFactor = main_es_areaFactors[finalUnit || 'kilometers'];
  67900. if (!finalFactor) throw new Error('invalid final units');
  67901. return (area / startFactor) * finalFactor;
  67902. }
  67903. /**
  67904. * isNumber
  67905. *
  67906. * @param {*} num Number to validate
  67907. * @returns {boolean} true/false
  67908. * @example
  67909. * turf.isNumber(123)
  67910. * //=true
  67911. * turf.isNumber('foo')
  67912. * //=false
  67913. */
  67914. function main_es_isNumber(num) {
  67915. return !isNaN(num) && num !== null && !Array.isArray(num);
  67916. }
  67917. /**
  67918. * isObject
  67919. *
  67920. * @param {*} input variable to validate
  67921. * @returns {boolean} true/false
  67922. * @example
  67923. * turf.isObject({elevation: 10})
  67924. * //=true
  67925. * turf.isObject('foo')
  67926. * //=false
  67927. */
  67928. function main_es_isObject(input) {
  67929. return (!!input) && (input.constructor === Object);
  67930. }
  67931. /**
  67932. * Validate BBox
  67933. *
  67934. * @private
  67935. * @param {Array<number>} bbox BBox to validate
  67936. * @returns {void}
  67937. * @throws Error if BBox is not valid
  67938. * @example
  67939. * validateBBox([-180, -40, 110, 50])
  67940. * //=OK
  67941. * validateBBox([-180, -40])
  67942. * //=Error
  67943. * validateBBox('Foo')
  67944. * //=Error
  67945. * validateBBox(5)
  67946. * //=Error
  67947. * validateBBox(null)
  67948. * //=Error
  67949. * validateBBox(undefined)
  67950. * //=Error
  67951. */
  67952. function main_es_validateBBox(bbox) {
  67953. if (!bbox) throw new Error('bbox is required');
  67954. if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');
  67955. if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');
  67956. bbox.forEach(function (num) {
  67957. if (!main_es_isNumber(num)) throw new Error('bbox must only contain numbers');
  67958. });
  67959. }
  67960. /**
  67961. * Validate Id
  67962. *
  67963. * @private
  67964. * @param {string|number} id Id to validate
  67965. * @returns {void}
  67966. * @throws Error if Id is not valid
  67967. * @example
  67968. * validateId([-180, -40, 110, 50])
  67969. * //=Error
  67970. * validateId([-180, -40])
  67971. * //=Error
  67972. * validateId('Foo')
  67973. * //=OK
  67974. * validateId(5)
  67975. * //=OK
  67976. * validateId(null)
  67977. * //=Error
  67978. * validateId(undefined)
  67979. * //=Error
  67980. */
  67981. function main_es_validateId(id) {
  67982. if (!id) throw new Error('id is required');
  67983. if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');
  67984. }
  67985. // Deprecated methods
  67986. function main_es_radians2degrees() {
  67987. throw new Error('method has been renamed to `radiansToDegrees`');
  67988. }
  67989. function main_es_degrees2radians() {
  67990. throw new Error('method has been renamed to `degreesToRadians`');
  67991. }
  67992. function main_es_distanceToDegrees() {
  67993. throw new Error('method has been renamed to `lengthToDegrees`');
  67994. }
  67995. function main_es_distanceToRadians() {
  67996. throw new Error('method has been renamed to `lengthToRadians`');
  67997. }
  67998. function main_es_radiansToDistance() {
  67999. throw new Error('method has been renamed to `radiansToLength`');
  68000. }
  68001. function main_es_bearingToAngle() {
  68002. throw new Error('method has been renamed to `bearingToAzimuth`');
  68003. }
  68004. function main_es_convertDistance() {
  68005. throw new Error('method has been renamed to `convertLength`');
  68006. }
  68007. // CONCATENATED MODULE: ./node_modules/@turf/centroid/node_modules/@turf/meta/main.es.js
  68008. /**
  68009. * Callback for coordEach
  68010. *
  68011. * @callback coordEachCallback
  68012. * @param {Array<number>} currentCoord The current coordinate being processed.
  68013. * @param {number} coordIndex The current index of the coordinate being processed.
  68014. * @param {number} featureIndex The current index of the Feature being processed.
  68015. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  68016. * @param {number} geometryIndex The current index of the Geometry being processed.
  68017. */
  68018. /**
  68019. * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()
  68020. *
  68021. * @name coordEach
  68022. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  68023. * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)
  68024. * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
  68025. * @returns {void}
  68026. * @example
  68027. * var features = turf.featureCollection([
  68028. * turf.point([26, 37], {"foo": "bar"}),
  68029. * turf.point([36, 53], {"hello": "world"})
  68030. * ]);
  68031. *
  68032. * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
  68033. * //=currentCoord
  68034. * //=coordIndex
  68035. * //=featureIndex
  68036. * //=multiFeatureIndex
  68037. * //=geometryIndex
  68038. * });
  68039. */
  68040. function main_es_coordEach(geojson, callback, excludeWrapCoord) {
  68041. // Handles null Geometry -- Skips this GeoJSON
  68042. if (geojson === null) return;
  68043. var j, k, l, geometry, stopG, coords,
  68044. geometryMaybeCollection,
  68045. wrapShrink = 0,
  68046. coordIndex = 0,
  68047. isGeometryCollection,
  68048. type = geojson.type,
  68049. isFeatureCollection = type === 'FeatureCollection',
  68050. isFeature = type === 'Feature',
  68051. stop = isFeatureCollection ? geojson.features.length : 1;
  68052. // This logic may look a little weird. The reason why it is that way
  68053. // is because it's trying to be fast. GeoJSON supports multiple kinds
  68054. // of objects at its root: FeatureCollection, Features, Geometries.
  68055. // This function has the responsibility of handling all of them, and that
  68056. // means that some of the `for` loops you see below actually just don't apply
  68057. // to certain inputs. For instance, if you give this just a
  68058. // Point geometry, then both loops are short-circuited and all we do
  68059. // is gradually rename the input until it's called 'geometry'.
  68060. //
  68061. // This also aims to allocate as few resources as possible: just a
  68062. // few numbers and booleans, rather than any temporary arrays as would
  68063. // be required with the normalization approach.
  68064. for (var featureIndex = 0; featureIndex < stop; featureIndex++) {
  68065. geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :
  68066. (isFeature ? geojson.geometry : geojson));
  68067. isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;
  68068. stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;
  68069. for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {
  68070. var multiFeatureIndex = 0;
  68071. var geometryIndex = 0;
  68072. geometry = isGeometryCollection ?
  68073. geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;
  68074. // Handles null Geometry -- Skips this geometry
  68075. if (geometry === null) continue;
  68076. coords = geometry.coordinates;
  68077. var geomType = geometry.type;
  68078. wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;
  68079. switch (geomType) {
  68080. case null:
  68081. break;
  68082. case 'Point':
  68083. if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  68084. coordIndex++;
  68085. multiFeatureIndex++;
  68086. break;
  68087. case 'LineString':
  68088. case 'MultiPoint':
  68089. for (j = 0; j < coords.length; j++) {
  68090. if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  68091. coordIndex++;
  68092. if (geomType === 'MultiPoint') multiFeatureIndex++;
  68093. }
  68094. if (geomType === 'LineString') multiFeatureIndex++;
  68095. break;
  68096. case 'Polygon':
  68097. case 'MultiLineString':
  68098. for (j = 0; j < coords.length; j++) {
  68099. for (k = 0; k < coords[j].length - wrapShrink; k++) {
  68100. if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  68101. coordIndex++;
  68102. }
  68103. if (geomType === 'MultiLineString') multiFeatureIndex++;
  68104. if (geomType === 'Polygon') geometryIndex++;
  68105. }
  68106. if (geomType === 'Polygon') multiFeatureIndex++;
  68107. break;
  68108. case 'MultiPolygon':
  68109. for (j = 0; j < coords.length; j++) {
  68110. if (geomType === 'MultiPolygon') geometryIndex = 0;
  68111. for (k = 0; k < coords[j].length; k++) {
  68112. for (l = 0; l < coords[j][k].length - wrapShrink; l++) {
  68113. if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  68114. coordIndex++;
  68115. }
  68116. geometryIndex++;
  68117. }
  68118. multiFeatureIndex++;
  68119. }
  68120. break;
  68121. case 'GeometryCollection':
  68122. for (j = 0; j < geometry.geometries.length; j++)
  68123. if (main_es_coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;
  68124. break;
  68125. default:
  68126. throw new Error('Unknown Geometry Type');
  68127. }
  68128. }
  68129. }
  68130. }
  68131. /**
  68132. * Callback for coordReduce
  68133. *
  68134. * The first time the callback function is called, the values provided as arguments depend
  68135. * on whether the reduce method has an initialValue argument.
  68136. *
  68137. * If an initialValue is provided to the reduce method:
  68138. * - The previousValue argument is initialValue.
  68139. * - The currentValue argument is the value of the first element present in the array.
  68140. *
  68141. * If an initialValue is not provided:
  68142. * - The previousValue argument is the value of the first element present in the array.
  68143. * - The currentValue argument is the value of the second element present in the array.
  68144. *
  68145. * @callback coordReduceCallback
  68146. * @param {*} previousValue The accumulated value previously returned in the last invocation
  68147. * of the callback, or initialValue, if supplied.
  68148. * @param {Array<number>} currentCoord The current coordinate being processed.
  68149. * @param {number} coordIndex The current index of the coordinate being processed.
  68150. * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.
  68151. * @param {number} featureIndex The current index of the Feature being processed.
  68152. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  68153. * @param {number} geometryIndex The current index of the Geometry being processed.
  68154. */
  68155. /**
  68156. * Reduce coordinates in any GeoJSON object, similar to Array.reduce()
  68157. *
  68158. * @name coordReduce
  68159. * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object
  68160. * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)
  68161. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  68162. * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
  68163. * @returns {*} The value that results from the reduction.
  68164. * @example
  68165. * var features = turf.featureCollection([
  68166. * turf.point([26, 37], {"foo": "bar"}),
  68167. * turf.point([36, 53], {"hello": "world"})
  68168. * ]);
  68169. *
  68170. * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
  68171. * //=previousValue
  68172. * //=currentCoord
  68173. * //=coordIndex
  68174. * //=featureIndex
  68175. * //=multiFeatureIndex
  68176. * //=geometryIndex
  68177. * return currentCoord;
  68178. * });
  68179. */
  68180. function main_es_coordReduce(geojson, callback, initialValue, excludeWrapCoord) {
  68181. var previousValue = initialValue;
  68182. main_es_coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
  68183. if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;
  68184. else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);
  68185. }, excludeWrapCoord);
  68186. return previousValue;
  68187. }
  68188. /**
  68189. * Callback for propEach
  68190. *
  68191. * @callback propEachCallback
  68192. * @param {Object} currentProperties The current Properties being processed.
  68193. * @param {number} featureIndex The current index of the Feature being processed.
  68194. */
  68195. /**
  68196. * Iterate over properties in any GeoJSON object, similar to Array.forEach()
  68197. *
  68198. * @name propEach
  68199. * @param {FeatureCollection|Feature} geojson any GeoJSON object
  68200. * @param {Function} callback a method that takes (currentProperties, featureIndex)
  68201. * @returns {void}
  68202. * @example
  68203. * var features = turf.featureCollection([
  68204. * turf.point([26, 37], {foo: 'bar'}),
  68205. * turf.point([36, 53], {hello: 'world'})
  68206. * ]);
  68207. *
  68208. * turf.propEach(features, function (currentProperties, featureIndex) {
  68209. * //=currentProperties
  68210. * //=featureIndex
  68211. * });
  68212. */
  68213. function main_es_propEach(geojson, callback) {
  68214. var i;
  68215. switch (geojson.type) {
  68216. case 'FeatureCollection':
  68217. for (i = 0; i < geojson.features.length; i++) {
  68218. if (callback(geojson.features[i].properties, i) === false) break;
  68219. }
  68220. break;
  68221. case 'Feature':
  68222. callback(geojson.properties, 0);
  68223. break;
  68224. }
  68225. }
  68226. /**
  68227. * Callback for propReduce
  68228. *
  68229. * The first time the callback function is called, the values provided as arguments depend
  68230. * on whether the reduce method has an initialValue argument.
  68231. *
  68232. * If an initialValue is provided to the reduce method:
  68233. * - The previousValue argument is initialValue.
  68234. * - The currentValue argument is the value of the first element present in the array.
  68235. *
  68236. * If an initialValue is not provided:
  68237. * - The previousValue argument is the value of the first element present in the array.
  68238. * - The currentValue argument is the value of the second element present in the array.
  68239. *
  68240. * @callback propReduceCallback
  68241. * @param {*} previousValue The accumulated value previously returned in the last invocation
  68242. * of the callback, or initialValue, if supplied.
  68243. * @param {*} currentProperties The current Properties being processed.
  68244. * @param {number} featureIndex The current index of the Feature being processed.
  68245. */
  68246. /**
  68247. * Reduce properties in any GeoJSON object into a single value,
  68248. * similar to how Array.reduce works. However, in this case we lazily run
  68249. * the reduction, so an array of all properties is unnecessary.
  68250. *
  68251. * @name propReduce
  68252. * @param {FeatureCollection|Feature} geojson any GeoJSON object
  68253. * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)
  68254. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  68255. * @returns {*} The value that results from the reduction.
  68256. * @example
  68257. * var features = turf.featureCollection([
  68258. * turf.point([26, 37], {foo: 'bar'}),
  68259. * turf.point([36, 53], {hello: 'world'})
  68260. * ]);
  68261. *
  68262. * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {
  68263. * //=previousValue
  68264. * //=currentProperties
  68265. * //=featureIndex
  68266. * return currentProperties
  68267. * });
  68268. */
  68269. function main_es_propReduce(geojson, callback, initialValue) {
  68270. var previousValue = initialValue;
  68271. main_es_propEach(geojson, function (currentProperties, featureIndex) {
  68272. if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;
  68273. else previousValue = callback(previousValue, currentProperties, featureIndex);
  68274. });
  68275. return previousValue;
  68276. }
  68277. /**
  68278. * Callback for featureEach
  68279. *
  68280. * @callback featureEachCallback
  68281. * @param {Feature<any>} currentFeature The current Feature being processed.
  68282. * @param {number} featureIndex The current index of the Feature being processed.
  68283. */
  68284. /**
  68285. * Iterate over features in any GeoJSON object, similar to
  68286. * Array.forEach.
  68287. *
  68288. * @name featureEach
  68289. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  68290. * @param {Function} callback a method that takes (currentFeature, featureIndex)
  68291. * @returns {void}
  68292. * @example
  68293. * var features = turf.featureCollection([
  68294. * turf.point([26, 37], {foo: 'bar'}),
  68295. * turf.point([36, 53], {hello: 'world'})
  68296. * ]);
  68297. *
  68298. * turf.featureEach(features, function (currentFeature, featureIndex) {
  68299. * //=currentFeature
  68300. * //=featureIndex
  68301. * });
  68302. */
  68303. function main_es_featureEach(geojson, callback) {
  68304. if (geojson.type === 'Feature') {
  68305. callback(geojson, 0);
  68306. } else if (geojson.type === 'FeatureCollection') {
  68307. for (var i = 0; i < geojson.features.length; i++) {
  68308. if (callback(geojson.features[i], i) === false) break;
  68309. }
  68310. }
  68311. }
  68312. /**
  68313. * Callback for featureReduce
  68314. *
  68315. * The first time the callback function is called, the values provided as arguments depend
  68316. * on whether the reduce method has an initialValue argument.
  68317. *
  68318. * If an initialValue is provided to the reduce method:
  68319. * - The previousValue argument is initialValue.
  68320. * - The currentValue argument is the value of the first element present in the array.
  68321. *
  68322. * If an initialValue is not provided:
  68323. * - The previousValue argument is the value of the first element present in the array.
  68324. * - The currentValue argument is the value of the second element present in the array.
  68325. *
  68326. * @callback featureReduceCallback
  68327. * @param {*} previousValue The accumulated value previously returned in the last invocation
  68328. * of the callback, or initialValue, if supplied.
  68329. * @param {Feature} currentFeature The current Feature being processed.
  68330. * @param {number} featureIndex The current index of the Feature being processed.
  68331. */
  68332. /**
  68333. * Reduce features in any GeoJSON object, similar to Array.reduce().
  68334. *
  68335. * @name featureReduce
  68336. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  68337. * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)
  68338. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  68339. * @returns {*} The value that results from the reduction.
  68340. * @example
  68341. * var features = turf.featureCollection([
  68342. * turf.point([26, 37], {"foo": "bar"}),
  68343. * turf.point([36, 53], {"hello": "world"})
  68344. * ]);
  68345. *
  68346. * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {
  68347. * //=previousValue
  68348. * //=currentFeature
  68349. * //=featureIndex
  68350. * return currentFeature
  68351. * });
  68352. */
  68353. function main_es_featureReduce(geojson, callback, initialValue) {
  68354. var previousValue = initialValue;
  68355. main_es_featureEach(geojson, function (currentFeature, featureIndex) {
  68356. if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;
  68357. else previousValue = callback(previousValue, currentFeature, featureIndex);
  68358. });
  68359. return previousValue;
  68360. }
  68361. /**
  68362. * Get all coordinates from any GeoJSON object.
  68363. *
  68364. * @name coordAll
  68365. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  68366. * @returns {Array<Array<number>>} coordinate position array
  68367. * @example
  68368. * var features = turf.featureCollection([
  68369. * turf.point([26, 37], {foo: 'bar'}),
  68370. * turf.point([36, 53], {hello: 'world'})
  68371. * ]);
  68372. *
  68373. * var coords = turf.coordAll(features);
  68374. * //= [[26, 37], [36, 53]]
  68375. */
  68376. function main_es_coordAll(geojson) {
  68377. var coords = [];
  68378. main_es_coordEach(geojson, function (coord) {
  68379. coords.push(coord);
  68380. });
  68381. return coords;
  68382. }
  68383. /**
  68384. * Callback for geomEach
  68385. *
  68386. * @callback geomEachCallback
  68387. * @param {Geometry} currentGeometry The current Geometry being processed.
  68388. * @param {number} featureIndex The current index of the Feature being processed.
  68389. * @param {Object} featureProperties The current Feature Properties being processed.
  68390. * @param {Array<number>} featureBBox The current Feature BBox being processed.
  68391. * @param {number|string} featureId The current Feature Id being processed.
  68392. */
  68393. /**
  68394. * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()
  68395. *
  68396. * @name geomEach
  68397. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  68398. * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)
  68399. * @returns {void}
  68400. * @example
  68401. * var features = turf.featureCollection([
  68402. * turf.point([26, 37], {foo: 'bar'}),
  68403. * turf.point([36, 53], {hello: 'world'})
  68404. * ]);
  68405. *
  68406. * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
  68407. * //=currentGeometry
  68408. * //=featureIndex
  68409. * //=featureProperties
  68410. * //=featureBBox
  68411. * //=featureId
  68412. * });
  68413. */
  68414. function main_es_geomEach(geojson, callback) {
  68415. var i, j, g, geometry, stopG,
  68416. geometryMaybeCollection,
  68417. isGeometryCollection,
  68418. featureProperties,
  68419. featureBBox,
  68420. featureId,
  68421. featureIndex = 0,
  68422. isFeatureCollection = geojson.type === 'FeatureCollection',
  68423. isFeature = geojson.type === 'Feature',
  68424. stop = isFeatureCollection ? geojson.features.length : 1;
  68425. // This logic may look a little weird. The reason why it is that way
  68426. // is because it's trying to be fast. GeoJSON supports multiple kinds
  68427. // of objects at its root: FeatureCollection, Features, Geometries.
  68428. // This function has the responsibility of handling all of them, and that
  68429. // means that some of the `for` loops you see below actually just don't apply
  68430. // to certain inputs. For instance, if you give this just a
  68431. // Point geometry, then both loops are short-circuited and all we do
  68432. // is gradually rename the input until it's called 'geometry'.
  68433. //
  68434. // This also aims to allocate as few resources as possible: just a
  68435. // few numbers and booleans, rather than any temporary arrays as would
  68436. // be required with the normalization approach.
  68437. for (i = 0; i < stop; i++) {
  68438. geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :
  68439. (isFeature ? geojson.geometry : geojson));
  68440. featureProperties = (isFeatureCollection ? geojson.features[i].properties :
  68441. (isFeature ? geojson.properties : {}));
  68442. featureBBox = (isFeatureCollection ? geojson.features[i].bbox :
  68443. (isFeature ? geojson.bbox : undefined));
  68444. featureId = (isFeatureCollection ? geojson.features[i].id :
  68445. (isFeature ? geojson.id : undefined));
  68446. isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;
  68447. stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;
  68448. for (g = 0; g < stopG; g++) {
  68449. geometry = isGeometryCollection ?
  68450. geometryMaybeCollection.geometries[g] : geometryMaybeCollection;
  68451. // Handle null Geometry
  68452. if (geometry === null) {
  68453. if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;
  68454. continue;
  68455. }
  68456. switch (geometry.type) {
  68457. case 'Point':
  68458. case 'LineString':
  68459. case 'MultiPoint':
  68460. case 'Polygon':
  68461. case 'MultiLineString':
  68462. case 'MultiPolygon': {
  68463. if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;
  68464. break;
  68465. }
  68466. case 'GeometryCollection': {
  68467. for (j = 0; j < geometry.geometries.length; j++) {
  68468. if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;
  68469. }
  68470. break;
  68471. }
  68472. default:
  68473. throw new Error('Unknown Geometry Type');
  68474. }
  68475. }
  68476. // Only increase `featureIndex` per each feature
  68477. featureIndex++;
  68478. }
  68479. }
  68480. /**
  68481. * Callback for geomReduce
  68482. *
  68483. * The first time the callback function is called, the values provided as arguments depend
  68484. * on whether the reduce method has an initialValue argument.
  68485. *
  68486. * If an initialValue is provided to the reduce method:
  68487. * - The previousValue argument is initialValue.
  68488. * - The currentValue argument is the value of the first element present in the array.
  68489. *
  68490. * If an initialValue is not provided:
  68491. * - The previousValue argument is the value of the first element present in the array.
  68492. * - The currentValue argument is the value of the second element present in the array.
  68493. *
  68494. * @callback geomReduceCallback
  68495. * @param {*} previousValue The accumulated value previously returned in the last invocation
  68496. * of the callback, or initialValue, if supplied.
  68497. * @param {Geometry} currentGeometry The current Geometry being processed.
  68498. * @param {number} featureIndex The current index of the Feature being processed.
  68499. * @param {Object} featureProperties The current Feature Properties being processed.
  68500. * @param {Array<number>} featureBBox The current Feature BBox being processed.
  68501. * @param {number|string} featureId The current Feature Id being processed.
  68502. */
  68503. /**
  68504. * Reduce geometry in any GeoJSON object, similar to Array.reduce().
  68505. *
  68506. * @name geomReduce
  68507. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  68508. * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)
  68509. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  68510. * @returns {*} The value that results from the reduction.
  68511. * @example
  68512. * var features = turf.featureCollection([
  68513. * turf.point([26, 37], {foo: 'bar'}),
  68514. * turf.point([36, 53], {hello: 'world'})
  68515. * ]);
  68516. *
  68517. * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
  68518. * //=previousValue
  68519. * //=currentGeometry
  68520. * //=featureIndex
  68521. * //=featureProperties
  68522. * //=featureBBox
  68523. * //=featureId
  68524. * return currentGeometry
  68525. * });
  68526. */
  68527. function main_es_geomReduce(geojson, callback, initialValue) {
  68528. var previousValue = initialValue;
  68529. main_es_geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
  68530. if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;
  68531. else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);
  68532. });
  68533. return previousValue;
  68534. }
  68535. /**
  68536. * Callback for flattenEach
  68537. *
  68538. * @callback flattenEachCallback
  68539. * @param {Feature} currentFeature The current flattened feature being processed.
  68540. * @param {number} featureIndex The current index of the Feature being processed.
  68541. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  68542. */
  68543. /**
  68544. * Iterate over flattened features in any GeoJSON object, similar to
  68545. * Array.forEach.
  68546. *
  68547. * @name flattenEach
  68548. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  68549. * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)
  68550. * @example
  68551. * var features = turf.featureCollection([
  68552. * turf.point([26, 37], {foo: 'bar'}),
  68553. * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})
  68554. * ]);
  68555. *
  68556. * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {
  68557. * //=currentFeature
  68558. * //=featureIndex
  68559. * //=multiFeatureIndex
  68560. * });
  68561. */
  68562. function main_es_flattenEach(geojson, callback) {
  68563. main_es_geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {
  68564. // Callback for single geometry
  68565. var type = (geometry === null) ? null : geometry.type;
  68566. switch (type) {
  68567. case null:
  68568. case 'Point':
  68569. case 'LineString':
  68570. case 'Polygon':
  68571. if (callback(helpers_main_es_feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;
  68572. return;
  68573. }
  68574. var geomType;
  68575. // Callback for multi-geometry
  68576. switch (type) {
  68577. case 'MultiPoint':
  68578. geomType = 'Point';
  68579. break;
  68580. case 'MultiLineString':
  68581. geomType = 'LineString';
  68582. break;
  68583. case 'MultiPolygon':
  68584. geomType = 'Polygon';
  68585. break;
  68586. }
  68587. for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {
  68588. var coordinate = geometry.coordinates[multiFeatureIndex];
  68589. var geom = {
  68590. type: geomType,
  68591. coordinates: coordinate
  68592. };
  68593. if (callback(helpers_main_es_feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;
  68594. }
  68595. });
  68596. }
  68597. /**
  68598. * Callback for flattenReduce
  68599. *
  68600. * The first time the callback function is called, the values provided as arguments depend
  68601. * on whether the reduce method has an initialValue argument.
  68602. *
  68603. * If an initialValue is provided to the reduce method:
  68604. * - The previousValue argument is initialValue.
  68605. * - The currentValue argument is the value of the first element present in the array.
  68606. *
  68607. * If an initialValue is not provided:
  68608. * - The previousValue argument is the value of the first element present in the array.
  68609. * - The currentValue argument is the value of the second element present in the array.
  68610. *
  68611. * @callback flattenReduceCallback
  68612. * @param {*} previousValue The accumulated value previously returned in the last invocation
  68613. * of the callback, or initialValue, if supplied.
  68614. * @param {Feature} currentFeature The current Feature being processed.
  68615. * @param {number} featureIndex The current index of the Feature being processed.
  68616. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  68617. */
  68618. /**
  68619. * Reduce flattened features in any GeoJSON object, similar to Array.reduce().
  68620. *
  68621. * @name flattenReduce
  68622. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
  68623. * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)
  68624. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  68625. * @returns {*} The value that results from the reduction.
  68626. * @example
  68627. * var features = turf.featureCollection([
  68628. * turf.point([26, 37], {foo: 'bar'}),
  68629. * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})
  68630. * ]);
  68631. *
  68632. * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {
  68633. * //=previousValue
  68634. * //=currentFeature
  68635. * //=featureIndex
  68636. * //=multiFeatureIndex
  68637. * return currentFeature
  68638. * });
  68639. */
  68640. function main_es_flattenReduce(geojson, callback, initialValue) {
  68641. var previousValue = initialValue;
  68642. main_es_flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {
  68643. if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;
  68644. else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);
  68645. });
  68646. return previousValue;
  68647. }
  68648. /**
  68649. * Callback for segmentEach
  68650. *
  68651. * @callback segmentEachCallback
  68652. * @param {Feature<LineString>} currentSegment The current Segment being processed.
  68653. * @param {number} featureIndex The current index of the Feature being processed.
  68654. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  68655. * @param {number} geometryIndex The current index of the Geometry being processed.
  68656. * @param {number} segmentIndex The current index of the Segment being processed.
  68657. * @returns {void}
  68658. */
  68659. /**
  68660. * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()
  68661. * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
  68662. *
  68663. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON
  68664. * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)
  68665. * @returns {void}
  68666. * @example
  68667. * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);
  68668. *
  68669. * // Iterate over GeoJSON by 2-vertex segments
  68670. * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
  68671. * //=currentSegment
  68672. * //=featureIndex
  68673. * //=multiFeatureIndex
  68674. * //=geometryIndex
  68675. * //=segmentIndex
  68676. * });
  68677. *
  68678. * // Calculate the total number of segments
  68679. * var total = 0;
  68680. * turf.segmentEach(polygon, function () {
  68681. * total++;
  68682. * });
  68683. */
  68684. function main_es_segmentEach(geojson, callback) {
  68685. main_es_flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {
  68686. var segmentIndex = 0;
  68687. // Exclude null Geometries
  68688. if (!feature$$1.geometry) return;
  68689. // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
  68690. var type = feature$$1.geometry.type;
  68691. if (type === 'Point' || type === 'MultiPoint') return;
  68692. // Generate 2-vertex line segments
  68693. var previousCoords;
  68694. if (main_es_coordEach(feature$$1, function (currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {
  68695. // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`
  68696. if (previousCoords === undefined) {
  68697. previousCoords = currentCoord;
  68698. return;
  68699. }
  68700. var currentSegment = main_es_lineString([previousCoords, currentCoord], feature$$1.properties);
  68701. if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;
  68702. segmentIndex++;
  68703. previousCoords = currentCoord;
  68704. }) === false) return false;
  68705. });
  68706. }
  68707. /**
  68708. * Callback for segmentReduce
  68709. *
  68710. * The first time the callback function is called, the values provided as arguments depend
  68711. * on whether the reduce method has an initialValue argument.
  68712. *
  68713. * If an initialValue is provided to the reduce method:
  68714. * - The previousValue argument is initialValue.
  68715. * - The currentValue argument is the value of the first element present in the array.
  68716. *
  68717. * If an initialValue is not provided:
  68718. * - The previousValue argument is the value of the first element present in the array.
  68719. * - The currentValue argument is the value of the second element present in the array.
  68720. *
  68721. * @callback segmentReduceCallback
  68722. * @param {*} previousValue The accumulated value previously returned in the last invocation
  68723. * of the callback, or initialValue, if supplied.
  68724. * @param {Feature<LineString>} currentSegment The current Segment being processed.
  68725. * @param {number} featureIndex The current index of the Feature being processed.
  68726. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.
  68727. * @param {number} geometryIndex The current index of the Geometry being processed.
  68728. * @param {number} segmentIndex The current index of the Segment being processed.
  68729. */
  68730. /**
  68731. * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()
  68732. * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.
  68733. *
  68734. * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON
  68735. * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)
  68736. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  68737. * @returns {void}
  68738. * @example
  68739. * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);
  68740. *
  68741. * // Iterate over GeoJSON by 2-vertex segments
  68742. * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
  68743. * //= previousSegment
  68744. * //= currentSegment
  68745. * //= featureIndex
  68746. * //= multiFeatureIndex
  68747. * //= geometryIndex
  68748. * //= segmentInex
  68749. * return currentSegment
  68750. * });
  68751. *
  68752. * // Calculate the total number of segments
  68753. * var initialValue = 0
  68754. * var total = turf.segmentReduce(polygon, function (previousValue) {
  68755. * previousValue++;
  68756. * return previousValue;
  68757. * }, initialValue);
  68758. */
  68759. function main_es_segmentReduce(geojson, callback, initialValue) {
  68760. var previousValue = initialValue;
  68761. var started = false;
  68762. main_es_segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
  68763. if (started === false && initialValue === undefined) previousValue = currentSegment;
  68764. else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);
  68765. started = true;
  68766. });
  68767. return previousValue;
  68768. }
  68769. /**
  68770. * Callback for lineEach
  68771. *
  68772. * @callback lineEachCallback
  68773. * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed
  68774. * @param {number} featureIndex The current index of the Feature being processed
  68775. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed
  68776. * @param {number} geometryIndex The current index of the Geometry being processed
  68777. */
  68778. /**
  68779. * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,
  68780. * similar to Array.forEach.
  68781. *
  68782. * @name lineEach
  68783. * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object
  68784. * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)
  68785. * @example
  68786. * var multiLine = turf.multiLineString([
  68787. * [[26, 37], [35, 45]],
  68788. * [[36, 53], [38, 50], [41, 55]]
  68789. * ]);
  68790. *
  68791. * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
  68792. * //=currentLine
  68793. * //=featureIndex
  68794. * //=multiFeatureIndex
  68795. * //=geometryIndex
  68796. * });
  68797. */
  68798. function main_es_lineEach(geojson, callback) {
  68799. // validation
  68800. if (!geojson) throw new Error('geojson is required');
  68801. main_es_flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {
  68802. if (feature$$1.geometry === null) return;
  68803. var type = feature$$1.geometry.type;
  68804. var coords = feature$$1.geometry.coordinates;
  68805. switch (type) {
  68806. case 'LineString':
  68807. if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;
  68808. break;
  68809. case 'Polygon':
  68810. for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {
  68811. if (callback(main_es_lineString(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;
  68812. }
  68813. break;
  68814. }
  68815. });
  68816. }
  68817. /**
  68818. * Callback for lineReduce
  68819. *
  68820. * The first time the callback function is called, the values provided as arguments depend
  68821. * on whether the reduce method has an initialValue argument.
  68822. *
  68823. * If an initialValue is provided to the reduce method:
  68824. * - The previousValue argument is initialValue.
  68825. * - The currentValue argument is the value of the first element present in the array.
  68826. *
  68827. * If an initialValue is not provided:
  68828. * - The previousValue argument is the value of the first element present in the array.
  68829. * - The currentValue argument is the value of the second element present in the array.
  68830. *
  68831. * @callback lineReduceCallback
  68832. * @param {*} previousValue The accumulated value previously returned in the last invocation
  68833. * of the callback, or initialValue, if supplied.
  68834. * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.
  68835. * @param {number} featureIndex The current index of the Feature being processed
  68836. * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed
  68837. * @param {number} geometryIndex The current index of the Geometry being processed
  68838. */
  68839. /**
  68840. * Reduce features in any GeoJSON object, similar to Array.reduce().
  68841. *
  68842. * @name lineReduce
  68843. * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object
  68844. * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)
  68845. * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.
  68846. * @returns {*} The value that results from the reduction.
  68847. * @example
  68848. * var multiPoly = turf.multiPolygon([
  68849. * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),
  68850. * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])
  68851. * ]);
  68852. *
  68853. * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
  68854. * //=previousValue
  68855. * //=currentLine
  68856. * //=featureIndex
  68857. * //=multiFeatureIndex
  68858. * //=geometryIndex
  68859. * return currentLine
  68860. * });
  68861. */
  68862. function main_es_lineReduce(geojson, callback, initialValue) {
  68863. var previousValue = initialValue;
  68864. main_es_lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
  68865. if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;
  68866. else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);
  68867. });
  68868. return previousValue;
  68869. }
  68870. /**
  68871. * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.
  68872. *
  68873. * Negative indexes are permitted.
  68874. * Point & MultiPoint will always return null.
  68875. *
  68876. * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry
  68877. * @param {Object} [options={}] Optional parameters
  68878. * @param {number} [options.featureIndex=0] Feature Index
  68879. * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index
  68880. * @param {number} [options.geometryIndex=0] Geometry Index
  68881. * @param {number} [options.segmentIndex=0] Segment Index
  68882. * @param {Object} [options.properties={}] Translate Properties to output LineString
  68883. * @param {BBox} [options.bbox={}] Translate BBox to output LineString
  68884. * @param {number|string} [options.id={}] Translate Id to output LineString
  68885. * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString
  68886. * @example
  68887. * var multiLine = turf.multiLineString([
  68888. * [[10, 10], [50, 30], [30, 40]],
  68889. * [[-10, -10], [-50, -30], [-30, -40]]
  68890. * ]);
  68891. *
  68892. * // First Segment (defaults are 0)
  68893. * turf.findSegment(multiLine);
  68894. * // => Feature<LineString<[[10, 10], [50, 30]]>>
  68895. *
  68896. * // First Segment of 2nd Multi Feature
  68897. * turf.findSegment(multiLine, {multiFeatureIndex: 1});
  68898. * // => Feature<LineString<[[-10, -10], [-50, -30]]>>
  68899. *
  68900. * // Last Segment of Last Multi Feature
  68901. * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});
  68902. * // => Feature<LineString<[[-50, -30], [-30, -40]]>>
  68903. */
  68904. function main_es_findSegment(geojson, options) {
  68905. // Optional Parameters
  68906. options = options || {};
  68907. if (!main_es_isObject(options)) throw new Error('options is invalid');
  68908. var featureIndex = options.featureIndex || 0;
  68909. var multiFeatureIndex = options.multiFeatureIndex || 0;
  68910. var geometryIndex = options.geometryIndex || 0;
  68911. var segmentIndex = options.segmentIndex || 0;
  68912. // Find FeatureIndex
  68913. var properties = options.properties;
  68914. var geometry;
  68915. switch (geojson.type) {
  68916. case 'FeatureCollection':
  68917. if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;
  68918. properties = properties || geojson.features[featureIndex].properties;
  68919. geometry = geojson.features[featureIndex].geometry;
  68920. break;
  68921. case 'Feature':
  68922. properties = properties || geojson.properties;
  68923. geometry = geojson.geometry;
  68924. break;
  68925. case 'Point':
  68926. case 'MultiPoint':
  68927. return null;
  68928. case 'LineString':
  68929. case 'Polygon':
  68930. case 'MultiLineString':
  68931. case 'MultiPolygon':
  68932. geometry = geojson;
  68933. break;
  68934. default:
  68935. throw new Error('geojson is invalid');
  68936. }
  68937. // Find SegmentIndex
  68938. if (geometry === null) return null;
  68939. var coords = geometry.coordinates;
  68940. switch (geometry.type) {
  68941. case 'Point':
  68942. case 'MultiPoint':
  68943. return null;
  68944. case 'LineString':
  68945. if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;
  68946. return main_es_lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);
  68947. case 'Polygon':
  68948. if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;
  68949. if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;
  68950. return main_es_lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);
  68951. case 'MultiLineString':
  68952. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  68953. if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;
  68954. return main_es_lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);
  68955. case 'MultiPolygon':
  68956. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  68957. if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;
  68958. if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;
  68959. return main_es_lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);
  68960. }
  68961. throw new Error('geojson is invalid');
  68962. }
  68963. /**
  68964. * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.
  68965. *
  68966. * Negative indexes are permitted.
  68967. *
  68968. * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry
  68969. * @param {Object} [options={}] Optional parameters
  68970. * @param {number} [options.featureIndex=0] Feature Index
  68971. * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index
  68972. * @param {number} [options.geometryIndex=0] Geometry Index
  68973. * @param {number} [options.coordIndex=0] Coord Index
  68974. * @param {Object} [options.properties={}] Translate Properties to output Point
  68975. * @param {BBox} [options.bbox={}] Translate BBox to output Point
  68976. * @param {number|string} [options.id={}] Translate Id to output Point
  68977. * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point
  68978. * @example
  68979. * var multiLine = turf.multiLineString([
  68980. * [[10, 10], [50, 30], [30, 40]],
  68981. * [[-10, -10], [-50, -30], [-30, -40]]
  68982. * ]);
  68983. *
  68984. * // First Segment (defaults are 0)
  68985. * turf.findPoint(multiLine);
  68986. * // => Feature<Point<[10, 10]>>
  68987. *
  68988. * // First Segment of the 2nd Multi-Feature
  68989. * turf.findPoint(multiLine, {multiFeatureIndex: 1});
  68990. * // => Feature<Point<[-10, -10]>>
  68991. *
  68992. * // Last Segment of last Multi-Feature
  68993. * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});
  68994. * // => Feature<Point<[-30, -40]>>
  68995. */
  68996. function main_es_findPoint(geojson, options) {
  68997. // Optional Parameters
  68998. options = options || {};
  68999. if (!main_es_isObject(options)) throw new Error('options is invalid');
  69000. var featureIndex = options.featureIndex || 0;
  69001. var multiFeatureIndex = options.multiFeatureIndex || 0;
  69002. var geometryIndex = options.geometryIndex || 0;
  69003. var coordIndex = options.coordIndex || 0;
  69004. // Find FeatureIndex
  69005. var properties = options.properties;
  69006. var geometry;
  69007. switch (geojson.type) {
  69008. case 'FeatureCollection':
  69009. if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;
  69010. properties = properties || geojson.features[featureIndex].properties;
  69011. geometry = geojson.features[featureIndex].geometry;
  69012. break;
  69013. case 'Feature':
  69014. properties = properties || geojson.properties;
  69015. geometry = geojson.geometry;
  69016. break;
  69017. case 'Point':
  69018. case 'MultiPoint':
  69019. return null;
  69020. case 'LineString':
  69021. case 'Polygon':
  69022. case 'MultiLineString':
  69023. case 'MultiPolygon':
  69024. geometry = geojson;
  69025. break;
  69026. default:
  69027. throw new Error('geojson is invalid');
  69028. }
  69029. // Find Coord Index
  69030. if (geometry === null) return null;
  69031. var coords = geometry.coordinates;
  69032. switch (geometry.type) {
  69033. case 'Point':
  69034. return main_es_point(coords, properties, options);
  69035. case 'MultiPoint':
  69036. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  69037. return main_es_point(coords[multiFeatureIndex], properties, options);
  69038. case 'LineString':
  69039. if (coordIndex < 0) coordIndex = coords.length + coordIndex;
  69040. return main_es_point(coords[coordIndex], properties, options);
  69041. case 'Polygon':
  69042. if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;
  69043. if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;
  69044. return main_es_point(coords[geometryIndex][coordIndex], properties, options);
  69045. case 'MultiLineString':
  69046. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  69047. if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;
  69048. return main_es_point(coords[multiFeatureIndex][coordIndex], properties, options);
  69049. case 'MultiPolygon':
  69050. if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;
  69051. if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;
  69052. if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;
  69053. return main_es_point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);
  69054. }
  69055. throw new Error('geojson is invalid');
  69056. }
  69057. // CONCATENATED MODULE: ./node_modules/@turf/centroid/main.es.js
  69058. /**
  69059. * Takes one or more features and calculates the centroid using the mean of all vertices.
  69060. * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.
  69061. *
  69062. * @name centroid
  69063. * @param {GeoJSON} geojson GeoJSON to be centered
  69064. * @param {Object} [properties={}] an Object that is used as the {@link Feature}'s properties
  69065. * @returns {Feature<Point>} the centroid of the input features
  69066. * @example
  69067. * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);
  69068. *
  69069. * var centroid = turf.centroid(polygon);
  69070. *
  69071. * //addToMap
  69072. * var addToMap = [polygon, centroid]
  69073. */
  69074. function centroid(geojson, properties) {
  69075. var xSum = 0;
  69076. var ySum = 0;
  69077. var len = 0;
  69078. main_es_coordEach(geojson, function (coord) {
  69079. xSum += coord[0];
  69080. ySum += coord[1];
  69081. len++;
  69082. }, true);
  69083. return main_es_point([xSum / len, ySum / len], properties);
  69084. }
  69085. /* harmony default export */ var centroid_main_es = (centroid);
  69086. // CONCATENATED MODULE: ./node_modules/@turf/transform-scale/node_modules/@turf/invariant/main.es.js
  69087. /**
  69088. * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.
  69089. *
  69090. * @name getCoord
  69091. * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers
  69092. * @returns {Array<number>} coordinates
  69093. * @example
  69094. * var pt = turf.point([10, 10]);
  69095. *
  69096. * var coord = turf.getCoord(pt);
  69097. * //= [10, 10]
  69098. */
  69099. function getCoord(coord) {
  69100. if (!coord) throw new Error('coord is required');
  69101. if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;
  69102. if (coord.type === 'Point') return coord.coordinates;
  69103. if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;
  69104. throw new Error('coord must be GeoJSON Point or an Array of numbers');
  69105. }
  69106. /**
  69107. * Unwrap coordinates from a Feature, Geometry Object or an Array
  69108. *
  69109. * @name getCoords
  69110. * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array
  69111. * @returns {Array<any>} coordinates
  69112. * @example
  69113. * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);
  69114. *
  69115. * var coords = turf.getCoords(poly);
  69116. * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]
  69117. */
  69118. function getCoords(coords) {
  69119. if (!coords) throw new Error('coords is required');
  69120. // Feature
  69121. if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;
  69122. // Geometry
  69123. if (coords.coordinates) return coords.coordinates;
  69124. // Array of numbers
  69125. if (Array.isArray(coords)) return coords;
  69126. throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');
  69127. }
  69128. /**
  69129. * Checks if coordinates contains a number
  69130. *
  69131. * @name containsNumber
  69132. * @param {Array<any>} coordinates GeoJSON Coordinates
  69133. * @returns {boolean} true if Array contains a number
  69134. */
  69135. function containsNumber(coordinates) {
  69136. if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {
  69137. return true;
  69138. }
  69139. if (Array.isArray(coordinates[0]) && coordinates[0].length) {
  69140. return containsNumber(coordinates[0]);
  69141. }
  69142. throw new Error('coordinates must only contain numbers');
  69143. }
  69144. /**
  69145. * Enforce expectations about types of GeoJSON objects for Turf.
  69146. *
  69147. * @name geojsonType
  69148. * @param {GeoJSON} value any GeoJSON object
  69149. * @param {string} type expected GeoJSON type
  69150. * @param {string} name name of calling function
  69151. * @throws {Error} if value is not the expected type.
  69152. */
  69153. function geojsonType(value, type, name) {
  69154. if (!type || !name) throw new Error('type and name required');
  69155. if (!value || value.type !== type) {
  69156. throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);
  69157. }
  69158. }
  69159. /**
  69160. * Enforce expectations about types of {@link Feature} inputs for Turf.
  69161. * Internally this uses {@link geojsonType} to judge geometry types.
  69162. *
  69163. * @name featureOf
  69164. * @param {Feature} feature a feature with an expected geometry type
  69165. * @param {string} type expected GeoJSON type
  69166. * @param {string} name name of calling function
  69167. * @throws {Error} error if value is not the expected type.
  69168. */
  69169. function featureOf(feature, type, name) {
  69170. if (!feature) throw new Error('No feature passed');
  69171. if (!name) throw new Error('.featureOf() requires a name');
  69172. if (!feature || feature.type !== 'Feature' || !feature.geometry) {
  69173. throw new Error('Invalid input to ' + name + ', Feature with geometry required');
  69174. }
  69175. if (!feature.geometry || feature.geometry.type !== type) {
  69176. throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);
  69177. }
  69178. }
  69179. /**
  69180. * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.
  69181. * Internally this uses {@link geojsonType} to judge geometry types.
  69182. *
  69183. * @name collectionOf
  69184. * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged
  69185. * @param {string} type expected GeoJSON type
  69186. * @param {string} name name of calling function
  69187. * @throws {Error} if value is not the expected type.
  69188. */
  69189. function collectionOf(featureCollection, type, name) {
  69190. if (!featureCollection) throw new Error('No featureCollection passed');
  69191. if (!name) throw new Error('.collectionOf() requires a name');
  69192. if (!featureCollection || featureCollection.type !== 'FeatureCollection') {
  69193. throw new Error('Invalid input to ' + name + ', FeatureCollection required');
  69194. }
  69195. for (var i = 0; i < featureCollection.features.length; i++) {
  69196. var feature = featureCollection.features[i];
  69197. if (!feature || feature.type !== 'Feature' || !feature.geometry) {
  69198. throw new Error('Invalid input to ' + name + ', Feature with geometry required');
  69199. }
  69200. if (!feature.geometry || feature.geometry.type !== type) {
  69201. throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);
  69202. }
  69203. }
  69204. }
  69205. /**
  69206. * Get Geometry from Feature or Geometry Object
  69207. *
  69208. * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object
  69209. * @returns {Geometry|null} GeoJSON Geometry Object
  69210. * @throws {Error} if geojson is not a Feature or Geometry Object
  69211. * @example
  69212. * var point = {
  69213. * "type": "Feature",
  69214. * "properties": {},
  69215. * "geometry": {
  69216. * "type": "Point",
  69217. * "coordinates": [110, 40]
  69218. * }
  69219. * }
  69220. * var geom = turf.getGeom(point)
  69221. * //={"type": "Point", "coordinates": [110, 40]}
  69222. */
  69223. function getGeom(geojson) {
  69224. if (!geojson) throw new Error('geojson is required');
  69225. if (geojson.geometry !== undefined) return geojson.geometry;
  69226. if (geojson.coordinates || geojson.geometries) return geojson;
  69227. throw new Error('geojson must be a valid Feature or Geometry Object');
  69228. }
  69229. /**
  69230. * Get Geometry Type from Feature or Geometry Object
  69231. *
  69232. * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType
  69233. */
  69234. function getGeomType() {
  69235. throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');
  69236. }
  69237. /**
  69238. * Get GeoJSON object's type, Geometry type is prioritize.
  69239. *
  69240. * @param {GeoJSON} geojson GeoJSON object
  69241. * @param {string} [name="geojson"] name of the variable to display in error message
  69242. * @returns {string} GeoJSON type
  69243. * @example
  69244. * var point = {
  69245. * "type": "Feature",
  69246. * "properties": {},
  69247. * "geometry": {
  69248. * "type": "Point",
  69249. * "coordinates": [110, 40]
  69250. * }
  69251. * }
  69252. * var geom = turf.getType(point)
  69253. * //="Point"
  69254. */
  69255. function getType(geojson, name) {
  69256. if (!geojson) throw new Error((name || 'geojson') + ' is required');
  69257. // GeoJSON Feature & GeometryCollection
  69258. if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;
  69259. // GeoJSON Geometry & FeatureCollection
  69260. if (geojson.type) return geojson.type;
  69261. throw new Error((name || 'geojson') + ' is invalid');
  69262. }
  69263. // CONCATENATED MODULE: ./node_modules/@turf/transform-scale/node_modules/@turf/rhumb-bearing/main.es.js
  69264. // https://en.wikipedia.org/wiki/Rhumb_line
  69265. /**
  69266. * Takes two {@link Point|points} and finds the bearing angle between them along a Rhumb line
  69267. * i.e. the angle measured in degrees start the north line (0 degrees)
  69268. *
  69269. * @name rhumbBearing
  69270. * @param {Coord} start starting Point
  69271. * @param {Coord} end ending Point
  69272. * @param {Object} [options] Optional parameters
  69273. * @param {boolean} [options.final=false] calculates the final bearing if true
  69274. * @returns {number} bearing from north in decimal degrees, between -180 and 180 degrees (positive clockwise)
  69275. * @example
  69276. * var point1 = turf.point([-75.343, 39.984], {"marker-color": "#F00"});
  69277. * var point2 = turf.point([-75.534, 39.123], {"marker-color": "#00F"});
  69278. *
  69279. * var bearing = turf.rhumbBearing(point1, point2);
  69280. *
  69281. * //addToMap
  69282. * var addToMap = [point1, point2];
  69283. * point1.properties.bearing = bearing;
  69284. * point2.properties.bearing = bearing;
  69285. */
  69286. function rhumbBearing(start, end, options) {
  69287. // Optional parameters
  69288. options = options || {};
  69289. if (!isObject(options)) throw new Error('options is invalid');
  69290. var final = options.final;
  69291. // validation
  69292. if (!start) throw new Error('start point is required');
  69293. if (!end) throw new Error('end point is required');
  69294. var bear360;
  69295. if (final) bear360 = calculateRhumbBearing(getCoord(end), getCoord(start));
  69296. else bear360 = calculateRhumbBearing(getCoord(start), getCoord(end));
  69297. var bear180 = (bear360 > 180) ? -(360 - bear360) : bear360;
  69298. return bear180;
  69299. }
  69300. /**
  69301. * Returns the bearing from ‘this’ point to destination point along a rhumb line.
  69302. * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js
  69303. *
  69304. * @private
  69305. * @param {Array<number>} from - origin point.
  69306. * @param {Array<number>} to - destination point.
  69307. * @returns {number} Bearing in degrees from north.
  69308. * @example
  69309. * var p1 = new LatLon(51.127, 1.338);
  69310. * var p2 = new LatLon(50.964, 1.853);
  69311. * var d = p1.rhumbBearingTo(p2); // 116.7 m
  69312. */
  69313. function calculateRhumbBearing(from, to) {
  69314. // φ => phi
  69315. // Δλ => deltaLambda
  69316. // Δψ => deltaPsi
  69317. // θ => theta
  69318. var phi1 = degreesToRadians(from[1]);
  69319. var phi2 = degreesToRadians(to[1]);
  69320. var deltaLambda = degreesToRadians((to[0] - from[0]));
  69321. // if deltaLambdaon over 180° take shorter rhumb line across the anti-meridian:
  69322. if (deltaLambda > Math.PI) deltaLambda -= 2 * Math.PI;
  69323. if (deltaLambda < -Math.PI) deltaLambda += 2 * Math.PI;
  69324. var deltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));
  69325. var theta = Math.atan2(deltaLambda, deltaPsi);
  69326. return (radiansToDegrees(theta) + 360) % 360;
  69327. }
  69328. /* harmony default export */ var rhumb_bearing_main_es = (rhumbBearing);
  69329. // CONCATENATED MODULE: ./node_modules/@turf/rhumb-distance/node_modules/@turf/helpers/main.es.js
  69330. /**
  69331. * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.
  69332. */
  69333. var helpers_main_es_earthRadius = 6371008.8;
  69334. /**
  69335. * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.
  69336. */
  69337. var helpers_main_es_factors = {
  69338. meters: helpers_main_es_earthRadius,
  69339. metres: helpers_main_es_earthRadius,
  69340. millimeters: helpers_main_es_earthRadius * 1000,
  69341. millimetres: helpers_main_es_earthRadius * 1000,
  69342. centimeters: helpers_main_es_earthRadius * 100,
  69343. centimetres: helpers_main_es_earthRadius * 100,
  69344. kilometers: helpers_main_es_earthRadius / 1000,
  69345. kilometres: helpers_main_es_earthRadius / 1000,
  69346. miles: helpers_main_es_earthRadius / 1609.344,
  69347. nauticalmiles: helpers_main_es_earthRadius / 1852,
  69348. inches: helpers_main_es_earthRadius * 39.370,
  69349. yards: helpers_main_es_earthRadius / 1.0936,
  69350. feet: helpers_main_es_earthRadius * 3.28084,
  69351. radians: 1,
  69352. degrees: helpers_main_es_earthRadius / 111325,
  69353. };
  69354. /**
  69355. * Units of measurement factors based on 1 meter.
  69356. */
  69357. var helpers_main_es_unitsFactors = {
  69358. meters: 1,
  69359. metres: 1,
  69360. millimeters: 1000,
  69361. millimetres: 1000,
  69362. centimeters: 100,
  69363. centimetres: 100,
  69364. kilometers: 1 / 1000,
  69365. kilometres: 1 / 1000,
  69366. miles: 1 / 1609.344,
  69367. nauticalmiles: 1 / 1852,
  69368. inches: 39.370,
  69369. yards: 1 / 1.0936,
  69370. feet: 3.28084,
  69371. radians: 1 / helpers_main_es_earthRadius,
  69372. degrees: 1 / 111325,
  69373. };
  69374. /**
  69375. * Area of measurement factors based on 1 square meter.
  69376. */
  69377. var helpers_main_es_areaFactors = {
  69378. meters: 1,
  69379. metres: 1,
  69380. millimeters: 1000000,
  69381. millimetres: 1000000,
  69382. centimeters: 10000,
  69383. centimetres: 10000,
  69384. kilometers: 0.000001,
  69385. kilometres: 0.000001,
  69386. acres: 0.000247105,
  69387. miles: 3.86e-7,
  69388. yards: 1.195990046,
  69389. feet: 10.763910417,
  69390. inches: 1550.003100006
  69391. };
  69392. /**
  69393. * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
  69394. *
  69395. * @name feature
  69396. * @param {Geometry} geometry input geometry
  69397. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  69398. * @param {Object} [options={}] Optional Parameters
  69399. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  69400. * @param {string|number} [options.id] Identifier associated with the Feature
  69401. * @returns {Feature} a GeoJSON Feature
  69402. * @example
  69403. * var geometry = {
  69404. * "type": "Point",
  69405. * "coordinates": [110, 50]
  69406. * };
  69407. *
  69408. * var feature = turf.feature(geometry);
  69409. *
  69410. * //=feature
  69411. */
  69412. function _turf_helpers_main_es_feature(geometry, properties, options) {
  69413. // Optional Parameters
  69414. options = options || {};
  69415. if (!helpers_main_es_isObject(options)) throw new Error('options is invalid');
  69416. var bbox = options.bbox;
  69417. var id = options.id;
  69418. // Validation
  69419. if (geometry === undefined) throw new Error('geometry is required');
  69420. if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');
  69421. if (bbox) helpers_main_es_validateBBox(bbox);
  69422. if (id) helpers_main_es_validateId(id);
  69423. // Main
  69424. var feat = {type: 'Feature'};
  69425. if (id) feat.id = id;
  69426. if (bbox) feat.bbox = bbox;
  69427. feat.properties = properties || {};
  69428. feat.geometry = geometry;
  69429. return feat;
  69430. }
  69431. /**
  69432. * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
  69433. * For GeometryCollection type use `helpers.geometryCollection`
  69434. *
  69435. * @name geometry
  69436. * @param {string} type Geometry Type
  69437. * @param {Array<number>} coordinates Coordinates
  69438. * @param {Object} [options={}] Optional Parameters
  69439. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry
  69440. * @returns {Geometry} a GeoJSON Geometry
  69441. * @example
  69442. * var type = 'Point';
  69443. * var coordinates = [110, 50];
  69444. *
  69445. * var geometry = turf.geometry(type, coordinates);
  69446. *
  69447. * //=geometry
  69448. */
  69449. function _turf_helpers_main_es_geometry(type, coordinates, options) {
  69450. // Optional Parameters
  69451. options = options || {};
  69452. if (!helpers_main_es_isObject(options)) throw new Error('options is invalid');
  69453. var bbox = options.bbox;
  69454. // Validation
  69455. if (!type) throw new Error('type is required');
  69456. if (!coordinates) throw new Error('coordinates is required');
  69457. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  69458. if (bbox) helpers_main_es_validateBBox(bbox);
  69459. // Main
  69460. var geom;
  69461. switch (type) {
  69462. case 'Point': geom = helpers_main_es_point(coordinates).geometry; break;
  69463. case 'LineString': geom = helpers_main_es_lineString(coordinates).geometry; break;
  69464. case 'Polygon': geom = helpers_main_es_polygon(coordinates).geometry; break;
  69465. case 'MultiPoint': geom = helpers_main_es_multiPoint(coordinates).geometry; break;
  69466. case 'MultiLineString': geom = helpers_main_es_multiLineString(coordinates).geometry; break;
  69467. case 'MultiPolygon': geom = helpers_main_es_multiPolygon(coordinates).geometry; break;
  69468. default: throw new Error(type + ' is invalid');
  69469. }
  69470. if (bbox) geom.bbox = bbox;
  69471. return geom;
  69472. }
  69473. /**
  69474. * Creates a {@link Point} {@link Feature} from a Position.
  69475. *
  69476. * @name point
  69477. * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
  69478. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  69479. * @param {Object} [options={}] Optional Parameters
  69480. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  69481. * @param {string|number} [options.id] Identifier associated with the Feature
  69482. * @returns {Feature<Point>} a Point feature
  69483. * @example
  69484. * var point = turf.point([-75.343, 39.984]);
  69485. *
  69486. * //=point
  69487. */
  69488. function helpers_main_es_point(coordinates, properties, options) {
  69489. if (!coordinates) throw new Error('coordinates is required');
  69490. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  69491. if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');
  69492. if (!helpers_main_es_isNumber(coordinates[0]) || !helpers_main_es_isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');
  69493. return _turf_helpers_main_es_feature({
  69494. type: 'Point',
  69495. coordinates: coordinates
  69496. }, properties, options);
  69497. }
  69498. /**
  69499. * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.
  69500. *
  69501. * @name points
  69502. * @param {Array<Array<number>>} coordinates an array of Points
  69503. * @param {Object} [properties={}] Translate these properties to each Feature
  69504. * @param {Object} [options={}] Optional Parameters
  69505. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
  69506. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  69507. * @returns {FeatureCollection<Point>} Point Feature
  69508. * @example
  69509. * var points = turf.points([
  69510. * [-75, 39],
  69511. * [-80, 45],
  69512. * [-78, 50]
  69513. * ]);
  69514. *
  69515. * //=points
  69516. */
  69517. function helpers_main_es_points(coordinates, properties, options) {
  69518. if (!coordinates) throw new Error('coordinates is required');
  69519. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  69520. return helpers_main_es_featureCollection(coordinates.map(function (coords) {
  69521. return helpers_main_es_point(coords, properties);
  69522. }), options);
  69523. }
  69524. /**
  69525. * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.
  69526. *
  69527. * @name polygon
  69528. * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings
  69529. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  69530. * @param {Object} [options={}] Optional Parameters
  69531. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  69532. * @param {string|number} [options.id] Identifier associated with the Feature
  69533. * @returns {Feature<Polygon>} Polygon Feature
  69534. * @example
  69535. * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });
  69536. *
  69537. * //=polygon
  69538. */
  69539. function helpers_main_es_polygon(coordinates, properties, options) {
  69540. if (!coordinates) throw new Error('coordinates is required');
  69541. for (var i = 0; i < coordinates.length; i++) {
  69542. var ring = coordinates[i];
  69543. if (ring.length < 4) {
  69544. throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');
  69545. }
  69546. for (var j = 0; j < ring[ring.length - 1].length; j++) {
  69547. // Check if first point of Polygon contains two numbers
  69548. if (i === 0 && j === 0 && !helpers_main_es_isNumber(ring[0][0]) || !helpers_main_es_isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');
  69549. if (ring[ring.length - 1][j] !== ring[0][j]) {
  69550. throw new Error('First and last Position are not equivalent.');
  69551. }
  69552. }
  69553. }
  69554. return _turf_helpers_main_es_feature({
  69555. type: 'Polygon',
  69556. coordinates: coordinates
  69557. }, properties, options);
  69558. }
  69559. /**
  69560. * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.
  69561. *
  69562. * @name polygons
  69563. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates
  69564. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  69565. * @param {Object} [options={}] Optional Parameters
  69566. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  69567. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  69568. * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection
  69569. * @example
  69570. * var polygons = turf.polygons([
  69571. * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],
  69572. * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],
  69573. * ]);
  69574. *
  69575. * //=polygons
  69576. */
  69577. function helpers_main_es_polygons(coordinates, properties, options) {
  69578. if (!coordinates) throw new Error('coordinates is required');
  69579. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  69580. return helpers_main_es_featureCollection(coordinates.map(function (coords) {
  69581. return helpers_main_es_polygon(coords, properties);
  69582. }), options);
  69583. }
  69584. /**
  69585. * Creates a {@link LineString} {@link Feature} from an Array of Positions.
  69586. *
  69587. * @name lineString
  69588. * @param {Array<Array<number>>} coordinates an array of Positions
  69589. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  69590. * @param {Object} [options={}] Optional Parameters
  69591. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  69592. * @param {string|number} [options.id] Identifier associated with the Feature
  69593. * @returns {Feature<LineString>} LineString Feature
  69594. * @example
  69595. * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});
  69596. * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});
  69597. *
  69598. * //=linestring1
  69599. * //=linestring2
  69600. */
  69601. function helpers_main_es_lineString(coordinates, properties, options) {
  69602. if (!coordinates) throw new Error('coordinates is required');
  69603. if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');
  69604. // Check if first point of LineString contains two numbers
  69605. if (!helpers_main_es_isNumber(coordinates[0][1]) || !helpers_main_es_isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');
  69606. return _turf_helpers_main_es_feature({
  69607. type: 'LineString',
  69608. coordinates: coordinates
  69609. }, properties, options);
  69610. }
  69611. /**
  69612. * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.
  69613. *
  69614. * @name lineStrings
  69615. * @param {Array<Array<number>>} coordinates an array of LinearRings
  69616. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  69617. * @param {Object} [options={}] Optional Parameters
  69618. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
  69619. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  69620. * @returns {FeatureCollection<LineString>} LineString FeatureCollection
  69621. * @example
  69622. * var linestrings = turf.lineStrings([
  69623. * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],
  69624. * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]
  69625. * ]);
  69626. *
  69627. * //=linestrings
  69628. */
  69629. function helpers_main_es_lineStrings(coordinates, properties, options) {
  69630. if (!coordinates) throw new Error('coordinates is required');
  69631. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  69632. return helpers_main_es_featureCollection(coordinates.map(function (coords) {
  69633. return helpers_main_es_lineString(coords, properties);
  69634. }), options);
  69635. }
  69636. /**
  69637. * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.
  69638. *
  69639. * @name featureCollection
  69640. * @param {Feature[]} features input features
  69641. * @param {Object} [options={}] Optional Parameters
  69642. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  69643. * @param {string|number} [options.id] Identifier associated with the Feature
  69644. * @returns {FeatureCollection} FeatureCollection of Features
  69645. * @example
  69646. * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});
  69647. * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});
  69648. * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});
  69649. *
  69650. * var collection = turf.featureCollection([
  69651. * locationA,
  69652. * locationB,
  69653. * locationC
  69654. * ]);
  69655. *
  69656. * //=collection
  69657. */
  69658. function helpers_main_es_featureCollection(features, options) {
  69659. // Optional Parameters
  69660. options = options || {};
  69661. if (!helpers_main_es_isObject(options)) throw new Error('options is invalid');
  69662. var bbox = options.bbox;
  69663. var id = options.id;
  69664. // Validation
  69665. if (!features) throw new Error('No features passed');
  69666. if (!Array.isArray(features)) throw new Error('features must be an Array');
  69667. if (bbox) helpers_main_es_validateBBox(bbox);
  69668. if (id) helpers_main_es_validateId(id);
  69669. // Main
  69670. var fc = {type: 'FeatureCollection'};
  69671. if (id) fc.id = id;
  69672. if (bbox) fc.bbox = bbox;
  69673. fc.features = features;
  69674. return fc;
  69675. }
  69676. /**
  69677. * Creates a {@link Feature<MultiLineString>} based on a
  69678. * coordinate array. Properties can be added optionally.
  69679. *
  69680. * @name multiLineString
  69681. * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings
  69682. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  69683. * @param {Object} [options={}] Optional Parameters
  69684. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  69685. * @param {string|number} [options.id] Identifier associated with the Feature
  69686. * @returns {Feature<MultiLineString>} a MultiLineString feature
  69687. * @throws {Error} if no coordinates are passed
  69688. * @example
  69689. * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);
  69690. *
  69691. * //=multiLine
  69692. */
  69693. function helpers_main_es_multiLineString(coordinates, properties, options) {
  69694. if (!coordinates) throw new Error('coordinates is required');
  69695. return _turf_helpers_main_es_feature({
  69696. type: 'MultiLineString',
  69697. coordinates: coordinates
  69698. }, properties, options);
  69699. }
  69700. /**
  69701. * Creates a {@link Feature<MultiPoint>} based on a
  69702. * coordinate array. Properties can be added optionally.
  69703. *
  69704. * @name multiPoint
  69705. * @param {Array<Array<number>>} coordinates an array of Positions
  69706. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  69707. * @param {Object} [options={}] Optional Parameters
  69708. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  69709. * @param {string|number} [options.id] Identifier associated with the Feature
  69710. * @returns {Feature<MultiPoint>} a MultiPoint feature
  69711. * @throws {Error} if no coordinates are passed
  69712. * @example
  69713. * var multiPt = turf.multiPoint([[0,0],[10,10]]);
  69714. *
  69715. * //=multiPt
  69716. */
  69717. function helpers_main_es_multiPoint(coordinates, properties, options) {
  69718. if (!coordinates) throw new Error('coordinates is required');
  69719. return _turf_helpers_main_es_feature({
  69720. type: 'MultiPoint',
  69721. coordinates: coordinates
  69722. }, properties, options);
  69723. }
  69724. /**
  69725. * Creates a {@link Feature<MultiPolygon>} based on a
  69726. * coordinate array. Properties can be added optionally.
  69727. *
  69728. * @name multiPolygon
  69729. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons
  69730. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  69731. * @param {Object} [options={}] Optional Parameters
  69732. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  69733. * @param {string|number} [options.id] Identifier associated with the Feature
  69734. * @returns {Feature<MultiPolygon>} a multipolygon feature
  69735. * @throws {Error} if no coordinates are passed
  69736. * @example
  69737. * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);
  69738. *
  69739. * //=multiPoly
  69740. *
  69741. */
  69742. function helpers_main_es_multiPolygon(coordinates, properties, options) {
  69743. if (!coordinates) throw new Error('coordinates is required');
  69744. return _turf_helpers_main_es_feature({
  69745. type: 'MultiPolygon',
  69746. coordinates: coordinates
  69747. }, properties, options);
  69748. }
  69749. /**
  69750. * Creates a {@link Feature<GeometryCollection>} based on a
  69751. * coordinate array. Properties can be added optionally.
  69752. *
  69753. * @name geometryCollection
  69754. * @param {Array<Geometry>} geometries an array of GeoJSON Geometries
  69755. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  69756. * @param {Object} [options={}] Optional Parameters
  69757. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  69758. * @param {string|number} [options.id] Identifier associated with the Feature
  69759. * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature
  69760. * @example
  69761. * var pt = {
  69762. * "type": "Point",
  69763. * "coordinates": [100, 0]
  69764. * };
  69765. * var line = {
  69766. * "type": "LineString",
  69767. * "coordinates": [ [101, 0], [102, 1] ]
  69768. * };
  69769. * var collection = turf.geometryCollection([pt, line]);
  69770. *
  69771. * //=collection
  69772. */
  69773. function helpers_main_es_geometryCollection(geometries, properties, options) {
  69774. if (!geometries) throw new Error('geometries is required');
  69775. if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');
  69776. return _turf_helpers_main_es_feature({
  69777. type: 'GeometryCollection',
  69778. geometries: geometries
  69779. }, properties, options);
  69780. }
  69781. /**
  69782. * Round number to precision
  69783. *
  69784. * @param {number} num Number
  69785. * @param {number} [precision=0] Precision
  69786. * @returns {number} rounded number
  69787. * @example
  69788. * turf.round(120.4321)
  69789. * //=120
  69790. *
  69791. * turf.round(120.4321, 2)
  69792. * //=120.43
  69793. */
  69794. function helpers_main_es_round(num, precision) {
  69795. if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');
  69796. if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');
  69797. var multiplier = Math.pow(10, precision || 0);
  69798. return Math.round(num * multiplier) / multiplier;
  69799. }
  69800. /**
  69801. * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.
  69802. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  69803. *
  69804. * @name radiansToLength
  69805. * @param {number} radians in radians across the sphere
  69806. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  69807. * @returns {number} distance
  69808. */
  69809. function helpers_main_es_radiansToLength(radians, units) {
  69810. if (radians === undefined || radians === null) throw new Error('radians is required');
  69811. if (units && typeof units !== 'string') throw new Error('units must be a string');
  69812. var factor = helpers_main_es_factors[units || 'kilometers'];
  69813. if (!factor) throw new Error(units + ' units is invalid');
  69814. return radians * factor;
  69815. }
  69816. /**
  69817. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians
  69818. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  69819. *
  69820. * @name lengthToRadians
  69821. * @param {number} distance in real units
  69822. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  69823. * @returns {number} radians
  69824. */
  69825. function helpers_main_es_lengthToRadians(distance, units) {
  69826. if (distance === undefined || distance === null) throw new Error('distance is required');
  69827. if (units && typeof units !== 'string') throw new Error('units must be a string');
  69828. var factor = helpers_main_es_factors[units || 'kilometers'];
  69829. if (!factor) throw new Error(units + ' units is invalid');
  69830. return distance / factor;
  69831. }
  69832. /**
  69833. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees
  69834. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet
  69835. *
  69836. * @name lengthToDegrees
  69837. * @param {number} distance in real units
  69838. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  69839. * @returns {number} degrees
  69840. */
  69841. function helpers_main_es_lengthToDegrees(distance, units) {
  69842. return helpers_main_es_radiansToDegrees(helpers_main_es_lengthToRadians(distance, units));
  69843. }
  69844. /**
  69845. * Converts any bearing angle from the north line direction (positive clockwise)
  69846. * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line
  69847. *
  69848. * @name bearingToAzimuth
  69849. * @param {number} bearing angle, between -180 and +180 degrees
  69850. * @returns {number} angle between 0 and 360 degrees
  69851. */
  69852. function helpers_main_es_bearingToAzimuth(bearing) {
  69853. if (bearing === null || bearing === undefined) throw new Error('bearing is required');
  69854. var angle = bearing % 360;
  69855. if (angle < 0) angle += 360;
  69856. return angle;
  69857. }
  69858. /**
  69859. * Converts an angle in radians to degrees
  69860. *
  69861. * @name radiansToDegrees
  69862. * @param {number} radians angle in radians
  69863. * @returns {number} degrees between 0 and 360 degrees
  69864. */
  69865. function helpers_main_es_radiansToDegrees(radians) {
  69866. if (radians === null || radians === undefined) throw new Error('radians is required');
  69867. var degrees = radians % (2 * Math.PI);
  69868. return degrees * 180 / Math.PI;
  69869. }
  69870. /**
  69871. * Converts an angle in degrees to radians
  69872. *
  69873. * @name degreesToRadians
  69874. * @param {number} degrees angle between 0 and 360 degrees
  69875. * @returns {number} angle in radians
  69876. */
  69877. function helpers_main_es_degreesToRadians(degrees) {
  69878. if (degrees === null || degrees === undefined) throw new Error('degrees is required');
  69879. var radians = degrees % 360;
  69880. return radians * Math.PI / 180;
  69881. }
  69882. /**
  69883. * Converts a length to the requested unit.
  69884. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  69885. *
  69886. * @param {number} length to be converted
  69887. * @param {string} originalUnit of the length
  69888. * @param {string} [finalUnit='kilometers'] returned unit
  69889. * @returns {number} the converted length
  69890. */
  69891. function helpers_main_es_convertLength(length, originalUnit, finalUnit) {
  69892. if (length === null || length === undefined) throw new Error('length is required');
  69893. if (!(length >= 0)) throw new Error('length must be a positive number');
  69894. return helpers_main_es_radiansToLength(helpers_main_es_lengthToRadians(length, originalUnit), finalUnit || 'kilometers');
  69895. }
  69896. /**
  69897. * Converts a area to the requested unit.
  69898. * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches
  69899. * @param {number} area to be converted
  69900. * @param {string} [originalUnit='meters'] of the distance
  69901. * @param {string} [finalUnit='kilometers'] returned unit
  69902. * @returns {number} the converted distance
  69903. */
  69904. function helpers_main_es_convertArea(area, originalUnit, finalUnit) {
  69905. if (area === null || area === undefined) throw new Error('area is required');
  69906. if (!(area >= 0)) throw new Error('area must be a positive number');
  69907. var startFactor = helpers_main_es_areaFactors[originalUnit || 'meters'];
  69908. if (!startFactor) throw new Error('invalid original units');
  69909. var finalFactor = helpers_main_es_areaFactors[finalUnit || 'kilometers'];
  69910. if (!finalFactor) throw new Error('invalid final units');
  69911. return (area / startFactor) * finalFactor;
  69912. }
  69913. /**
  69914. * isNumber
  69915. *
  69916. * @param {*} num Number to validate
  69917. * @returns {boolean} true/false
  69918. * @example
  69919. * turf.isNumber(123)
  69920. * //=true
  69921. * turf.isNumber('foo')
  69922. * //=false
  69923. */
  69924. function helpers_main_es_isNumber(num) {
  69925. return !isNaN(num) && num !== null && !Array.isArray(num);
  69926. }
  69927. /**
  69928. * isObject
  69929. *
  69930. * @param {*} input variable to validate
  69931. * @returns {boolean} true/false
  69932. * @example
  69933. * turf.isObject({elevation: 10})
  69934. * //=true
  69935. * turf.isObject('foo')
  69936. * //=false
  69937. */
  69938. function helpers_main_es_isObject(input) {
  69939. return (!!input) && (input.constructor === Object);
  69940. }
  69941. /**
  69942. * Validate BBox
  69943. *
  69944. * @private
  69945. * @param {Array<number>} bbox BBox to validate
  69946. * @returns {void}
  69947. * @throws Error if BBox is not valid
  69948. * @example
  69949. * validateBBox([-180, -40, 110, 50])
  69950. * //=OK
  69951. * validateBBox([-180, -40])
  69952. * //=Error
  69953. * validateBBox('Foo')
  69954. * //=Error
  69955. * validateBBox(5)
  69956. * //=Error
  69957. * validateBBox(null)
  69958. * //=Error
  69959. * validateBBox(undefined)
  69960. * //=Error
  69961. */
  69962. function helpers_main_es_validateBBox(bbox) {
  69963. if (!bbox) throw new Error('bbox is required');
  69964. if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');
  69965. if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');
  69966. bbox.forEach(function (num) {
  69967. if (!helpers_main_es_isNumber(num)) throw new Error('bbox must only contain numbers');
  69968. });
  69969. }
  69970. /**
  69971. * Validate Id
  69972. *
  69973. * @private
  69974. * @param {string|number} id Id to validate
  69975. * @returns {void}
  69976. * @throws Error if Id is not valid
  69977. * @example
  69978. * validateId([-180, -40, 110, 50])
  69979. * //=Error
  69980. * validateId([-180, -40])
  69981. * //=Error
  69982. * validateId('Foo')
  69983. * //=OK
  69984. * validateId(5)
  69985. * //=OK
  69986. * validateId(null)
  69987. * //=Error
  69988. * validateId(undefined)
  69989. * //=Error
  69990. */
  69991. function helpers_main_es_validateId(id) {
  69992. if (!id) throw new Error('id is required');
  69993. if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');
  69994. }
  69995. // Deprecated methods
  69996. function helpers_main_es_radians2degrees() {
  69997. throw new Error('method has been renamed to `radiansToDegrees`');
  69998. }
  69999. function helpers_main_es_degrees2radians() {
  70000. throw new Error('method has been renamed to `degreesToRadians`');
  70001. }
  70002. function helpers_main_es_distanceToDegrees() {
  70003. throw new Error('method has been renamed to `lengthToDegrees`');
  70004. }
  70005. function helpers_main_es_distanceToRadians() {
  70006. throw new Error('method has been renamed to `lengthToRadians`');
  70007. }
  70008. function helpers_main_es_radiansToDistance() {
  70009. throw new Error('method has been renamed to `radiansToLength`');
  70010. }
  70011. function helpers_main_es_bearingToAngle() {
  70012. throw new Error('method has been renamed to `bearingToAzimuth`');
  70013. }
  70014. function helpers_main_es_convertDistance() {
  70015. throw new Error('method has been renamed to `convertLength`');
  70016. }
  70017. // CONCATENATED MODULE: ./node_modules/@turf/rhumb-distance/node_modules/@turf/invariant/main.es.js
  70018. /**
  70019. * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.
  70020. *
  70021. * @name getCoord
  70022. * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers
  70023. * @returns {Array<number>} coordinates
  70024. * @example
  70025. * var pt = turf.point([10, 10]);
  70026. *
  70027. * var coord = turf.getCoord(pt);
  70028. * //= [10, 10]
  70029. */
  70030. function main_es_getCoord(coord) {
  70031. if (!coord) throw new Error('coord is required');
  70032. if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;
  70033. if (coord.type === 'Point') return coord.coordinates;
  70034. if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;
  70035. throw new Error('coord must be GeoJSON Point or an Array of numbers');
  70036. }
  70037. /**
  70038. * Unwrap coordinates from a Feature, Geometry Object or an Array
  70039. *
  70040. * @name getCoords
  70041. * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array
  70042. * @returns {Array<any>} coordinates
  70043. * @example
  70044. * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);
  70045. *
  70046. * var coords = turf.getCoords(poly);
  70047. * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]
  70048. */
  70049. function main_es_getCoords(coords) {
  70050. if (!coords) throw new Error('coords is required');
  70051. // Feature
  70052. if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;
  70053. // Geometry
  70054. if (coords.coordinates) return coords.coordinates;
  70055. // Array of numbers
  70056. if (Array.isArray(coords)) return coords;
  70057. throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');
  70058. }
  70059. /**
  70060. * Checks if coordinates contains a number
  70061. *
  70062. * @name containsNumber
  70063. * @param {Array<any>} coordinates GeoJSON Coordinates
  70064. * @returns {boolean} true if Array contains a number
  70065. */
  70066. function main_es_containsNumber(coordinates) {
  70067. if (coordinates.length > 1 && helpers_main_es_isNumber(coordinates[0]) && helpers_main_es_isNumber(coordinates[1])) {
  70068. return true;
  70069. }
  70070. if (Array.isArray(coordinates[0]) && coordinates[0].length) {
  70071. return main_es_containsNumber(coordinates[0]);
  70072. }
  70073. throw new Error('coordinates must only contain numbers');
  70074. }
  70075. /**
  70076. * Enforce expectations about types of GeoJSON objects for Turf.
  70077. *
  70078. * @name geojsonType
  70079. * @param {GeoJSON} value any GeoJSON object
  70080. * @param {string} type expected GeoJSON type
  70081. * @param {string} name name of calling function
  70082. * @throws {Error} if value is not the expected type.
  70083. */
  70084. function main_es_geojsonType(value, type, name) {
  70085. if (!type || !name) throw new Error('type and name required');
  70086. if (!value || value.type !== type) {
  70087. throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);
  70088. }
  70089. }
  70090. /**
  70091. * Enforce expectations about types of {@link Feature} inputs for Turf.
  70092. * Internally this uses {@link geojsonType} to judge geometry types.
  70093. *
  70094. * @name featureOf
  70095. * @param {Feature} feature a feature with an expected geometry type
  70096. * @param {string} type expected GeoJSON type
  70097. * @param {string} name name of calling function
  70098. * @throws {Error} error if value is not the expected type.
  70099. */
  70100. function main_es_featureOf(feature, type, name) {
  70101. if (!feature) throw new Error('No feature passed');
  70102. if (!name) throw new Error('.featureOf() requires a name');
  70103. if (!feature || feature.type !== 'Feature' || !feature.geometry) {
  70104. throw new Error('Invalid input to ' + name + ', Feature with geometry required');
  70105. }
  70106. if (!feature.geometry || feature.geometry.type !== type) {
  70107. throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);
  70108. }
  70109. }
  70110. /**
  70111. * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.
  70112. * Internally this uses {@link geojsonType} to judge geometry types.
  70113. *
  70114. * @name collectionOf
  70115. * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged
  70116. * @param {string} type expected GeoJSON type
  70117. * @param {string} name name of calling function
  70118. * @throws {Error} if value is not the expected type.
  70119. */
  70120. function main_es_collectionOf(featureCollection, type, name) {
  70121. if (!featureCollection) throw new Error('No featureCollection passed');
  70122. if (!name) throw new Error('.collectionOf() requires a name');
  70123. if (!featureCollection || featureCollection.type !== 'FeatureCollection') {
  70124. throw new Error('Invalid input to ' + name + ', FeatureCollection required');
  70125. }
  70126. for (var i = 0; i < featureCollection.features.length; i++) {
  70127. var feature = featureCollection.features[i];
  70128. if (!feature || feature.type !== 'Feature' || !feature.geometry) {
  70129. throw new Error('Invalid input to ' + name + ', Feature with geometry required');
  70130. }
  70131. if (!feature.geometry || feature.geometry.type !== type) {
  70132. throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);
  70133. }
  70134. }
  70135. }
  70136. /**
  70137. * Get Geometry from Feature or Geometry Object
  70138. *
  70139. * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object
  70140. * @returns {Geometry|null} GeoJSON Geometry Object
  70141. * @throws {Error} if geojson is not a Feature or Geometry Object
  70142. * @example
  70143. * var point = {
  70144. * "type": "Feature",
  70145. * "properties": {},
  70146. * "geometry": {
  70147. * "type": "Point",
  70148. * "coordinates": [110, 40]
  70149. * }
  70150. * }
  70151. * var geom = turf.getGeom(point)
  70152. * //={"type": "Point", "coordinates": [110, 40]}
  70153. */
  70154. function main_es_getGeom(geojson) {
  70155. if (!geojson) throw new Error('geojson is required');
  70156. if (geojson.geometry !== undefined) return geojson.geometry;
  70157. if (geojson.coordinates || geojson.geometries) return geojson;
  70158. throw new Error('geojson must be a valid Feature or Geometry Object');
  70159. }
  70160. /**
  70161. * Get Geometry Type from Feature or Geometry Object
  70162. *
  70163. * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType
  70164. */
  70165. function main_es_getGeomType() {
  70166. throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');
  70167. }
  70168. /**
  70169. * Get GeoJSON object's type, Geometry type is prioritize.
  70170. *
  70171. * @param {GeoJSON} geojson GeoJSON object
  70172. * @param {string} [name="geojson"] name of the variable to display in error message
  70173. * @returns {string} GeoJSON type
  70174. * @example
  70175. * var point = {
  70176. * "type": "Feature",
  70177. * "properties": {},
  70178. * "geometry": {
  70179. * "type": "Point",
  70180. * "coordinates": [110, 40]
  70181. * }
  70182. * }
  70183. * var geom = turf.getType(point)
  70184. * //="Point"
  70185. */
  70186. function main_es_getType(geojson, name) {
  70187. if (!geojson) throw new Error((name || 'geojson') + ' is required');
  70188. // GeoJSON Feature & GeometryCollection
  70189. if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;
  70190. // GeoJSON Geometry & FeatureCollection
  70191. if (geojson.type) return geojson.type;
  70192. throw new Error((name || 'geojson') + ' is invalid');
  70193. }
  70194. // CONCATENATED MODULE: ./node_modules/@turf/rhumb-distance/main.es.js
  70195. // https://en.wikipedia.org/wiki/Rhumb_line
  70196. /**
  70197. * Calculates the distance along a rhumb line between two {@link Point|points} in degrees, radians,
  70198. * miles, or kilometers.
  70199. *
  70200. * @name rhumbDistance
  70201. * @param {Coord} from origin point
  70202. * @param {Coord} to destination point
  70203. * @param {Object} [options] Optional parameters
  70204. * @param {string} [options.units="kilometers"] can be degrees, radians, miles, or kilometers
  70205. * @returns {number} distance between the two points
  70206. * @example
  70207. * var from = turf.point([-75.343, 39.984]);
  70208. * var to = turf.point([-75.534, 39.123]);
  70209. * var options = {units: 'miles'};
  70210. *
  70211. * var distance = turf.rhumbDistance(from, to, options);
  70212. *
  70213. * //addToMap
  70214. * var addToMap = [from, to];
  70215. * from.properties.distance = distance;
  70216. * to.properties.distance = distance;
  70217. */
  70218. function rhumbDistance(from, to, options) {
  70219. // Optional parameters
  70220. options = options || {};
  70221. if (!helpers_main_es_isObject(options)) throw new Error('options is invalid');
  70222. var units = options.units;
  70223. // validation
  70224. if (!from) throw new Error('from point is required');
  70225. if (!to) throw new Error('to point is required');
  70226. var origin = main_es_getCoord(from);
  70227. var destination = main_es_getCoord(to);
  70228. // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)
  70229. // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678
  70230. destination[0] += (destination[0] - origin[0] > 180) ? -360 : (origin[0] - destination[0] > 180) ? 360 : 0;
  70231. var distanceInMeters = calculateRhumbDistance(origin, destination);
  70232. var distance = helpers_main_es_convertLength(distanceInMeters, 'meters', units);
  70233. return distance;
  70234. }
  70235. /**
  70236. * Returns the distance travelling from ‘this’ point to destination point along a rhumb line.
  70237. * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js
  70238. *
  70239. * @private
  70240. * @param {Array<number>} origin point.
  70241. * @param {Array<number>} destination point.
  70242. * @param {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).
  70243. * @returns {number} Distance in km between this point and destination point (same units as radius).
  70244. *
  70245. * @example
  70246. * var p1 = new LatLon(51.127, 1.338);
  70247. * var p2 = new LatLon(50.964, 1.853);
  70248. * var d = p1.distanceTo(p2); // 40.31 km
  70249. */
  70250. function calculateRhumbDistance(origin, destination, radius) {
  70251. // φ => phi
  70252. // λ => lambda
  70253. // ψ => psi
  70254. // Δ => Delta
  70255. // δ => delta
  70256. // θ => theta
  70257. radius = (radius === undefined) ? helpers_main_es_earthRadius : Number(radius);
  70258. // see www.edwilliams.org/avform.htm#Rhumb
  70259. var R = radius;
  70260. var phi1 = origin[1] * Math.PI / 180;
  70261. var phi2 = destination[1] * Math.PI / 180;
  70262. var DeltaPhi = phi2 - phi1;
  70263. var DeltaLambda = Math.abs(destination[0] - origin[0]) * Math.PI / 180;
  70264. // if dLon over 180° take shorter rhumb line across the anti-meridian:
  70265. if (DeltaLambda > Math.PI) DeltaLambda -= 2 * Math.PI;
  70266. // on Mercator projection, longitude distances shrink by latitude; q is the 'stretch factor'
  70267. // q becomes ill-conditioned along E-W line (0/0); use empirical tolerance to avoid it
  70268. var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));
  70269. var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1);
  70270. // distance is pythagoras on 'stretched' Mercator projection
  70271. var delta = Math.sqrt(DeltaPhi * DeltaPhi + q * q * DeltaLambda * DeltaLambda); // angular distance in radians
  70272. var dist = delta * R;
  70273. return dist;
  70274. }
  70275. /* harmony default export */ var rhumb_distance_main_es = (rhumbDistance);
  70276. // CONCATENATED MODULE: ./node_modules/@turf/rhumb-destination/node_modules/@turf/helpers/main.es.js
  70277. /**
  70278. * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.
  70279. */
  70280. var _turf_helpers_main_es_earthRadius = 6371008.8;
  70281. /**
  70282. * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.
  70283. */
  70284. var _turf_helpers_main_es_factors = {
  70285. meters: _turf_helpers_main_es_earthRadius,
  70286. metres: _turf_helpers_main_es_earthRadius,
  70287. millimeters: _turf_helpers_main_es_earthRadius * 1000,
  70288. millimetres: _turf_helpers_main_es_earthRadius * 1000,
  70289. centimeters: _turf_helpers_main_es_earthRadius * 100,
  70290. centimetres: _turf_helpers_main_es_earthRadius * 100,
  70291. kilometers: _turf_helpers_main_es_earthRadius / 1000,
  70292. kilometres: _turf_helpers_main_es_earthRadius / 1000,
  70293. miles: _turf_helpers_main_es_earthRadius / 1609.344,
  70294. nauticalmiles: _turf_helpers_main_es_earthRadius / 1852,
  70295. inches: _turf_helpers_main_es_earthRadius * 39.370,
  70296. yards: _turf_helpers_main_es_earthRadius / 1.0936,
  70297. feet: _turf_helpers_main_es_earthRadius * 3.28084,
  70298. radians: 1,
  70299. degrees: _turf_helpers_main_es_earthRadius / 111325,
  70300. };
  70301. /**
  70302. * Units of measurement factors based on 1 meter.
  70303. */
  70304. var _turf_helpers_main_es_unitsFactors = {
  70305. meters: 1,
  70306. metres: 1,
  70307. millimeters: 1000,
  70308. millimetres: 1000,
  70309. centimeters: 100,
  70310. centimetres: 100,
  70311. kilometers: 1 / 1000,
  70312. kilometres: 1 / 1000,
  70313. miles: 1 / 1609.344,
  70314. nauticalmiles: 1 / 1852,
  70315. inches: 39.370,
  70316. yards: 1 / 1.0936,
  70317. feet: 3.28084,
  70318. radians: 1 / _turf_helpers_main_es_earthRadius,
  70319. degrees: 1 / 111325,
  70320. };
  70321. /**
  70322. * Area of measurement factors based on 1 square meter.
  70323. */
  70324. var _turf_helpers_main_es_areaFactors = {
  70325. meters: 1,
  70326. metres: 1,
  70327. millimeters: 1000000,
  70328. millimetres: 1000000,
  70329. centimeters: 10000,
  70330. centimetres: 10000,
  70331. kilometers: 0.000001,
  70332. kilometres: 0.000001,
  70333. acres: 0.000247105,
  70334. miles: 3.86e-7,
  70335. yards: 1.195990046,
  70336. feet: 10.763910417,
  70337. inches: 1550.003100006
  70338. };
  70339. /**
  70340. * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.
  70341. *
  70342. * @name feature
  70343. * @param {Geometry} geometry input geometry
  70344. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  70345. * @param {Object} [options={}] Optional Parameters
  70346. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  70347. * @param {string|number} [options.id] Identifier associated with the Feature
  70348. * @returns {Feature} a GeoJSON Feature
  70349. * @example
  70350. * var geometry = {
  70351. * "type": "Point",
  70352. * "coordinates": [110, 50]
  70353. * };
  70354. *
  70355. * var feature = turf.feature(geometry);
  70356. *
  70357. * //=feature
  70358. */
  70359. function node_modules_turf_helpers_main_es_feature(geometry, properties, options) {
  70360. // Optional Parameters
  70361. options = options || {};
  70362. if (!_turf_helpers_main_es_isObject(options)) throw new Error('options is invalid');
  70363. var bbox = options.bbox;
  70364. var id = options.id;
  70365. // Validation
  70366. if (geometry === undefined) throw new Error('geometry is required');
  70367. if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');
  70368. if (bbox) _turf_helpers_main_es_validateBBox(bbox);
  70369. if (id) _turf_helpers_main_es_validateId(id);
  70370. // Main
  70371. var feat = {type: 'Feature'};
  70372. if (id) feat.id = id;
  70373. if (bbox) feat.bbox = bbox;
  70374. feat.properties = properties || {};
  70375. feat.geometry = geometry;
  70376. return feat;
  70377. }
  70378. /**
  70379. * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.
  70380. * For GeometryCollection type use `helpers.geometryCollection`
  70381. *
  70382. * @name geometry
  70383. * @param {string} type Geometry Type
  70384. * @param {Array<number>} coordinates Coordinates
  70385. * @param {Object} [options={}] Optional Parameters
  70386. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry
  70387. * @returns {Geometry} a GeoJSON Geometry
  70388. * @example
  70389. * var type = 'Point';
  70390. * var coordinates = [110, 50];
  70391. *
  70392. * var geometry = turf.geometry(type, coordinates);
  70393. *
  70394. * //=geometry
  70395. */
  70396. function node_modules_turf_helpers_main_es_geometry(type, coordinates, options) {
  70397. // Optional Parameters
  70398. options = options || {};
  70399. if (!_turf_helpers_main_es_isObject(options)) throw new Error('options is invalid');
  70400. var bbox = options.bbox;
  70401. // Validation
  70402. if (!type) throw new Error('type is required');
  70403. if (!coordinates) throw new Error('coordinates is required');
  70404. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  70405. if (bbox) _turf_helpers_main_es_validateBBox(bbox);
  70406. // Main
  70407. var geom;
  70408. switch (type) {
  70409. case 'Point': geom = _turf_helpers_main_es_point(coordinates).geometry; break;
  70410. case 'LineString': geom = _turf_helpers_main_es_lineString(coordinates).geometry; break;
  70411. case 'Polygon': geom = _turf_helpers_main_es_polygon(coordinates).geometry; break;
  70412. case 'MultiPoint': geom = _turf_helpers_main_es_multiPoint(coordinates).geometry; break;
  70413. case 'MultiLineString': geom = _turf_helpers_main_es_multiLineString(coordinates).geometry; break;
  70414. case 'MultiPolygon': geom = _turf_helpers_main_es_multiPolygon(coordinates).geometry; break;
  70415. default: throw new Error(type + ' is invalid');
  70416. }
  70417. if (bbox) geom.bbox = bbox;
  70418. return geom;
  70419. }
  70420. /**
  70421. * Creates a {@link Point} {@link Feature} from a Position.
  70422. *
  70423. * @name point
  70424. * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
  70425. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  70426. * @param {Object} [options={}] Optional Parameters
  70427. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  70428. * @param {string|number} [options.id] Identifier associated with the Feature
  70429. * @returns {Feature<Point>} a Point feature
  70430. * @example
  70431. * var point = turf.point([-75.343, 39.984]);
  70432. *
  70433. * //=point
  70434. */
  70435. function _turf_helpers_main_es_point(coordinates, properties, options) {
  70436. if (!coordinates) throw new Error('coordinates is required');
  70437. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  70438. if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');
  70439. if (!_turf_helpers_main_es_isNumber(coordinates[0]) || !_turf_helpers_main_es_isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');
  70440. return node_modules_turf_helpers_main_es_feature({
  70441. type: 'Point',
  70442. coordinates: coordinates
  70443. }, properties, options);
  70444. }
  70445. /**
  70446. * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.
  70447. *
  70448. * @name points
  70449. * @param {Array<Array<number>>} coordinates an array of Points
  70450. * @param {Object} [properties={}] Translate these properties to each Feature
  70451. * @param {Object} [options={}] Optional Parameters
  70452. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
  70453. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  70454. * @returns {FeatureCollection<Point>} Point Feature
  70455. * @example
  70456. * var points = turf.points([
  70457. * [-75, 39],
  70458. * [-80, 45],
  70459. * [-78, 50]
  70460. * ]);
  70461. *
  70462. * //=points
  70463. */
  70464. function _turf_helpers_main_es_points(coordinates, properties, options) {
  70465. if (!coordinates) throw new Error('coordinates is required');
  70466. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  70467. return _turf_helpers_main_es_featureCollection(coordinates.map(function (coords) {
  70468. return _turf_helpers_main_es_point(coords, properties);
  70469. }), options);
  70470. }
  70471. /**
  70472. * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.
  70473. *
  70474. * @name polygon
  70475. * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings
  70476. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  70477. * @param {Object} [options={}] Optional Parameters
  70478. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  70479. * @param {string|number} [options.id] Identifier associated with the Feature
  70480. * @returns {Feature<Polygon>} Polygon Feature
  70481. * @example
  70482. * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });
  70483. *
  70484. * //=polygon
  70485. */
  70486. function _turf_helpers_main_es_polygon(coordinates, properties, options) {
  70487. if (!coordinates) throw new Error('coordinates is required');
  70488. for (var i = 0; i < coordinates.length; i++) {
  70489. var ring = coordinates[i];
  70490. if (ring.length < 4) {
  70491. throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');
  70492. }
  70493. for (var j = 0; j < ring[ring.length - 1].length; j++) {
  70494. // Check if first point of Polygon contains two numbers
  70495. if (i === 0 && j === 0 && !_turf_helpers_main_es_isNumber(ring[0][0]) || !_turf_helpers_main_es_isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');
  70496. if (ring[ring.length - 1][j] !== ring[0][j]) {
  70497. throw new Error('First and last Position are not equivalent.');
  70498. }
  70499. }
  70500. }
  70501. return node_modules_turf_helpers_main_es_feature({
  70502. type: 'Polygon',
  70503. coordinates: coordinates
  70504. }, properties, options);
  70505. }
  70506. /**
  70507. * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.
  70508. *
  70509. * @name polygons
  70510. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates
  70511. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  70512. * @param {Object} [options={}] Optional Parameters
  70513. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  70514. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  70515. * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection
  70516. * @example
  70517. * var polygons = turf.polygons([
  70518. * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],
  70519. * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],
  70520. * ]);
  70521. *
  70522. * //=polygons
  70523. */
  70524. function _turf_helpers_main_es_polygons(coordinates, properties, options) {
  70525. if (!coordinates) throw new Error('coordinates is required');
  70526. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  70527. return _turf_helpers_main_es_featureCollection(coordinates.map(function (coords) {
  70528. return _turf_helpers_main_es_polygon(coords, properties);
  70529. }), options);
  70530. }
  70531. /**
  70532. * Creates a {@link LineString} {@link Feature} from an Array of Positions.
  70533. *
  70534. * @name lineString
  70535. * @param {Array<Array<number>>} coordinates an array of Positions
  70536. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  70537. * @param {Object} [options={}] Optional Parameters
  70538. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  70539. * @param {string|number} [options.id] Identifier associated with the Feature
  70540. * @returns {Feature<LineString>} LineString Feature
  70541. * @example
  70542. * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});
  70543. * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});
  70544. *
  70545. * //=linestring1
  70546. * //=linestring2
  70547. */
  70548. function _turf_helpers_main_es_lineString(coordinates, properties, options) {
  70549. if (!coordinates) throw new Error('coordinates is required');
  70550. if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');
  70551. // Check if first point of LineString contains two numbers
  70552. if (!_turf_helpers_main_es_isNumber(coordinates[0][1]) || !_turf_helpers_main_es_isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');
  70553. return node_modules_turf_helpers_main_es_feature({
  70554. type: 'LineString',
  70555. coordinates: coordinates
  70556. }, properties, options);
  70557. }
  70558. /**
  70559. * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.
  70560. *
  70561. * @name lineStrings
  70562. * @param {Array<Array<number>>} coordinates an array of LinearRings
  70563. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  70564. * @param {Object} [options={}] Optional Parameters
  70565. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection
  70566. * @param {string|number} [options.id] Identifier associated with the FeatureCollection
  70567. * @returns {FeatureCollection<LineString>} LineString FeatureCollection
  70568. * @example
  70569. * var linestrings = turf.lineStrings([
  70570. * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],
  70571. * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]
  70572. * ]);
  70573. *
  70574. * //=linestrings
  70575. */
  70576. function _turf_helpers_main_es_lineStrings(coordinates, properties, options) {
  70577. if (!coordinates) throw new Error('coordinates is required');
  70578. if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');
  70579. return _turf_helpers_main_es_featureCollection(coordinates.map(function (coords) {
  70580. return _turf_helpers_main_es_lineString(coords, properties);
  70581. }), options);
  70582. }
  70583. /**
  70584. * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.
  70585. *
  70586. * @name featureCollection
  70587. * @param {Feature[]} features input features
  70588. * @param {Object} [options={}] Optional Parameters
  70589. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  70590. * @param {string|number} [options.id] Identifier associated with the Feature
  70591. * @returns {FeatureCollection} FeatureCollection of Features
  70592. * @example
  70593. * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});
  70594. * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});
  70595. * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});
  70596. *
  70597. * var collection = turf.featureCollection([
  70598. * locationA,
  70599. * locationB,
  70600. * locationC
  70601. * ]);
  70602. *
  70603. * //=collection
  70604. */
  70605. function _turf_helpers_main_es_featureCollection(features, options) {
  70606. // Optional Parameters
  70607. options = options || {};
  70608. if (!_turf_helpers_main_es_isObject(options)) throw new Error('options is invalid');
  70609. var bbox = options.bbox;
  70610. var id = options.id;
  70611. // Validation
  70612. if (!features) throw new Error('No features passed');
  70613. if (!Array.isArray(features)) throw new Error('features must be an Array');
  70614. if (bbox) _turf_helpers_main_es_validateBBox(bbox);
  70615. if (id) _turf_helpers_main_es_validateId(id);
  70616. // Main
  70617. var fc = {type: 'FeatureCollection'};
  70618. if (id) fc.id = id;
  70619. if (bbox) fc.bbox = bbox;
  70620. fc.features = features;
  70621. return fc;
  70622. }
  70623. /**
  70624. * Creates a {@link Feature<MultiLineString>} based on a
  70625. * coordinate array. Properties can be added optionally.
  70626. *
  70627. * @name multiLineString
  70628. * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings
  70629. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  70630. * @param {Object} [options={}] Optional Parameters
  70631. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  70632. * @param {string|number} [options.id] Identifier associated with the Feature
  70633. * @returns {Feature<MultiLineString>} a MultiLineString feature
  70634. * @throws {Error} if no coordinates are passed
  70635. * @example
  70636. * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);
  70637. *
  70638. * //=multiLine
  70639. */
  70640. function _turf_helpers_main_es_multiLineString(coordinates, properties, options) {
  70641. if (!coordinates) throw new Error('coordinates is required');
  70642. return node_modules_turf_helpers_main_es_feature({
  70643. type: 'MultiLineString',
  70644. coordinates: coordinates
  70645. }, properties, options);
  70646. }
  70647. /**
  70648. * Creates a {@link Feature<MultiPoint>} based on a
  70649. * coordinate array. Properties can be added optionally.
  70650. *
  70651. * @name multiPoint
  70652. * @param {Array<Array<number>>} coordinates an array of Positions
  70653. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  70654. * @param {Object} [options={}] Optional Parameters
  70655. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  70656. * @param {string|number} [options.id] Identifier associated with the Feature
  70657. * @returns {Feature<MultiPoint>} a MultiPoint feature
  70658. * @throws {Error} if no coordinates are passed
  70659. * @example
  70660. * var multiPt = turf.multiPoint([[0,0],[10,10]]);
  70661. *
  70662. * //=multiPt
  70663. */
  70664. function _turf_helpers_main_es_multiPoint(coordinates, properties, options) {
  70665. if (!coordinates) throw new Error('coordinates is required');
  70666. return node_modules_turf_helpers_main_es_feature({
  70667. type: 'MultiPoint',
  70668. coordinates: coordinates
  70669. }, properties, options);
  70670. }
  70671. /**
  70672. * Creates a {@link Feature<MultiPolygon>} based on a
  70673. * coordinate array. Properties can be added optionally.
  70674. *
  70675. * @name multiPolygon
  70676. * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons
  70677. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  70678. * @param {Object} [options={}] Optional Parameters
  70679. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  70680. * @param {string|number} [options.id] Identifier associated with the Feature
  70681. * @returns {Feature<MultiPolygon>} a multipolygon feature
  70682. * @throws {Error} if no coordinates are passed
  70683. * @example
  70684. * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);
  70685. *
  70686. * //=multiPoly
  70687. *
  70688. */
  70689. function _turf_helpers_main_es_multiPolygon(coordinates, properties, options) {
  70690. if (!coordinates) throw new Error('coordinates is required');
  70691. return node_modules_turf_helpers_main_es_feature({
  70692. type: 'MultiPolygon',
  70693. coordinates: coordinates
  70694. }, properties, options);
  70695. }
  70696. /**
  70697. * Creates a {@link Feature<GeometryCollection>} based on a
  70698. * coordinate array. Properties can be added optionally.
  70699. *
  70700. * @name geometryCollection
  70701. * @param {Array<Geometry>} geometries an array of GeoJSON Geometries
  70702. * @param {Object} [properties={}] an Object of key-value pairs to add as properties
  70703. * @param {Object} [options={}] Optional Parameters
  70704. * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
  70705. * @param {string|number} [options.id] Identifier associated with the Feature
  70706. * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature
  70707. * @example
  70708. * var pt = {
  70709. * "type": "Point",
  70710. * "coordinates": [100, 0]
  70711. * };
  70712. * var line = {
  70713. * "type": "LineString",
  70714. * "coordinates": [ [101, 0], [102, 1] ]
  70715. * };
  70716. * var collection = turf.geometryCollection([pt, line]);
  70717. *
  70718. * //=collection
  70719. */
  70720. function _turf_helpers_main_es_geometryCollection(geometries, properties, options) {
  70721. if (!geometries) throw new Error('geometries is required');
  70722. if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');
  70723. return node_modules_turf_helpers_main_es_feature({
  70724. type: 'GeometryCollection',
  70725. geometries: geometries
  70726. }, properties, options);
  70727. }
  70728. /**
  70729. * Round number to precision
  70730. *
  70731. * @param {number} num Number
  70732. * @param {number} [precision=0] Precision
  70733. * @returns {number} rounded number
  70734. * @example
  70735. * turf.round(120.4321)
  70736. * //=120
  70737. *
  70738. * turf.round(120.4321, 2)
  70739. * //=120.43
  70740. */
  70741. function _turf_helpers_main_es_round(num, precision) {
  70742. if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');
  70743. if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');
  70744. var multiplier = Math.pow(10, precision || 0);
  70745. return Math.round(num * multiplier) / multiplier;
  70746. }
  70747. /**
  70748. * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.
  70749. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  70750. *
  70751. * @name radiansToLength
  70752. * @param {number} radians in radians across the sphere
  70753. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  70754. * @returns {number} distance
  70755. */
  70756. function _turf_helpers_main_es_radiansToLength(radians, units) {
  70757. if (radians === undefined || radians === null) throw new Error('radians is required');
  70758. if (units && typeof units !== 'string') throw new Error('units must be a string');
  70759. var factor = _turf_helpers_main_es_factors[units || 'kilometers'];
  70760. if (!factor) throw new Error(units + ' units is invalid');
  70761. return radians * factor;
  70762. }
  70763. /**
  70764. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians
  70765. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  70766. *
  70767. * @name lengthToRadians
  70768. * @param {number} distance in real units
  70769. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  70770. * @returns {number} radians
  70771. */
  70772. function _turf_helpers_main_es_lengthToRadians(distance, units) {
  70773. if (distance === undefined || distance === null) throw new Error('distance is required');
  70774. if (units && typeof units !== 'string') throw new Error('units must be a string');
  70775. var factor = _turf_helpers_main_es_factors[units || 'kilometers'];
  70776. if (!factor) throw new Error(units + ' units is invalid');
  70777. return distance / factor;
  70778. }
  70779. /**
  70780. * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees
  70781. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet
  70782. *
  70783. * @name lengthToDegrees
  70784. * @param {number} distance in real units
  70785. * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.
  70786. * @returns {number} degrees
  70787. */
  70788. function _turf_helpers_main_es_lengthToDegrees(distance, units) {
  70789. return _turf_helpers_main_es_radiansToDegrees(_turf_helpers_main_es_lengthToRadians(distance, units));
  70790. }
  70791. /**
  70792. * Converts any bearing angle from the north line direction (positive clockwise)
  70793. * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line
  70794. *
  70795. * @name bearingToAzimuth
  70796. * @param {number} bearing angle, between -180 and +180 degrees
  70797. * @returns {number} angle between 0 and 360 degrees
  70798. */
  70799. function _turf_helpers_main_es_bearingToAzimuth(bearing) {
  70800. if (bearing === null || bearing === undefined) throw new Error('bearing is required');
  70801. var angle = bearing % 360;
  70802. if (angle < 0) angle += 360;
  70803. return angle;
  70804. }
  70805. /**
  70806. * Converts an angle in radians to degrees
  70807. *
  70808. * @name radiansToDegrees
  70809. * @param {number} radians angle in radians
  70810. * @returns {number} degrees between 0 and 360 degrees
  70811. */
  70812. function _turf_helpers_main_es_radiansToDegrees(radians) {
  70813. if (radians === null || radians === undefined) throw new Error('radians is required');
  70814. var degrees = radians % (2 * Math.PI);
  70815. return degrees * 180 / Math.PI;
  70816. }
  70817. /**
  70818. * Converts an angle in degrees to radians
  70819. *
  70820. * @name degreesToRadians
  70821. * @param {number} degrees angle between 0 and 360 degrees
  70822. * @returns {number} angle in radians
  70823. */
  70824. function _turf_helpers_main_es_degreesToRadians(degrees) {
  70825. if (degrees === null || degrees === undefined) throw new Error('degrees is required');
  70826. var radians = degrees % 360;
  70827. return radians * Math.PI / 180;
  70828. }
  70829. /**
  70830. * Converts a length to the requested unit.
  70831. * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet
  70832. *
  70833. * @param {number} length to be converted
  70834. * @param {string} originalUnit of the length
  70835. * @param {string} [finalUnit='kilometers'] returned unit
  70836. * @returns {number} the converted length
  70837. */
  70838. function _turf_helpers_main_es_convertLength(length, originalUnit, finalUnit) {
  70839. if (length === null || length === undefined) throw new Error('length is required');
  70840. if (!(length >= 0)) throw new Error('length must be a positive number');
  70841. return _turf_helpers_main_es_radiansToLength(_turf_helpers_main_es_lengthToRadians(length, originalUnit), finalUnit || 'kilometers');
  70842. }
  70843. /**
  70844. * Converts a area to the requested unit.
  70845. * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches
  70846. * @param {number} area to be converted
  70847. * @param {string} [originalUnit='meters'] of the distance
  70848. * @param {string} [finalUnit='kilometers'] returned unit
  70849. * @returns {number} the converted distance
  70850. */
  70851. function _turf_helpers_main_es_convertArea(area, originalUnit, finalUnit) {
  70852. if (area === null || area === undefined) throw new Error('area is required');
  70853. if (!(area >= 0)) throw new Error('area must be a positive number');
  70854. var startFactor = _turf_helpers_main_es_areaFactors[originalUnit || 'meters'];
  70855. if (!startFactor) throw new Error('invalid original units');
  70856. var finalFactor = _turf_helpers_main_es_areaFactors[finalUnit || 'kilometers'];
  70857. if (!finalFactor) throw new Error('invalid final units');
  70858. return (area / startFactor) * finalFactor;
  70859. }
  70860. /**
  70861. * isNumber
  70862. *
  70863. * @param {*} num Number to validate
  70864. * @returns {boolean} true/false
  70865. * @example
  70866. * turf.isNumber(123)
  70867. * //=true
  70868. * turf.isNumber('foo')
  70869. * //=false
  70870. */
  70871. function _turf_helpers_main_es_isNumber(num) {
  70872. return !isNaN(num) && num !== null && !Array.isArray(num);
  70873. }
  70874. /**
  70875. * isObject
  70876. *
  70877. * @param {*} input variable to validate
  70878. * @returns {boolean} true/false
  70879. * @example
  70880. * turf.isObject({elevation: 10})
  70881. * //=true
  70882. * turf.isObject('foo')
  70883. * //=false
  70884. */
  70885. function _turf_helpers_main_es_isObject(input) {
  70886. return (!!input) && (input.constructor === Object);
  70887. }
  70888. /**
  70889. * Validate BBox
  70890. *
  70891. * @private
  70892. * @param {Array<number>} bbox BBox to validate
  70893. * @returns {void}
  70894. * @throws Error if BBox is not valid
  70895. * @example
  70896. * validateBBox([-180, -40, 110, 50])
  70897. * //=OK
  70898. * validateBBox([-180, -40])
  70899. * //=Error
  70900. * validateBBox('Foo')
  70901. * //=Error
  70902. * validateBBox(5)
  70903. * //=Error
  70904. * validateBBox(null)
  70905. * //=Error
  70906. * validateBBox(undefined)
  70907. * //=Error
  70908. */
  70909. function _turf_helpers_main_es_validateBBox(bbox) {
  70910. if (!bbox) throw new Error('bbox is required');
  70911. if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');
  70912. if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');
  70913. bbox.forEach(function (num) {
  70914. if (!_turf_helpers_main_es_isNumber(num)) throw new Error('bbox must only contain numbers');
  70915. });
  70916. }
  70917. /**
  70918. * Validate Id
  70919. *
  70920. * @private
  70921. * @param {string|number} id Id to validate
  70922. * @returns {void}
  70923. * @throws Error if Id is not valid
  70924. * @example
  70925. * validateId([-180, -40, 110, 50])
  70926. * //=Error
  70927. * validateId([-180, -40])
  70928. * //=Error
  70929. * validateId('Foo')
  70930. * //=OK
  70931. * validateId(5)
  70932. * //=OK
  70933. * validateId(null)
  70934. * //=Error
  70935. * validateId(undefined)
  70936. * //=Error
  70937. */
  70938. function _turf_helpers_main_es_validateId(id) {
  70939. if (!id) throw new Error('id is required');
  70940. if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');
  70941. }
  70942. // Deprecated methods
  70943. function _turf_helpers_main_es_radians2degrees() {
  70944. throw new Error('method has been renamed to `radiansToDegrees`');
  70945. }
  70946. function _turf_helpers_main_es_degrees2radians() {
  70947. throw new Error('method has been renamed to `degreesToRadians`');
  70948. }
  70949. function _turf_helpers_main_es_distanceToDegrees() {
  70950. throw new Error('method has been renamed to `lengthToDegrees`');
  70951. }
  70952. function _turf_helpers_main_es_distanceToRadians() {
  70953. throw new Error('method has been renamed to `lengthToRadians`');
  70954. }
  70955. function _turf_helpers_main_es_radiansToDistance() {
  70956. throw new Error('method has been renamed to `radiansToLength`');
  70957. }
  70958. function _turf_helpers_main_es_bearingToAngle() {
  70959. throw new Error('method has been renamed to `bearingToAzimuth`');
  70960. }
  70961. function _turf_helpers_main_es_convertDistance() {
  70962. throw new Error('method has been renamed to `convertLength`');
  70963. }
  70964. // CONCATENATED MODULE: ./node_modules/@turf/rhumb-destination/node_modules/@turf/invariant/main.es.js
  70965. /**
  70966. * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.
  70967. *
  70968. * @name getCoord
  70969. * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers
  70970. * @returns {Array<number>} coordinates
  70971. * @example
  70972. * var pt = turf.point([10, 10]);
  70973. *
  70974. * var coord = turf.getCoord(pt);
  70975. * //= [10, 10]
  70976. */
  70977. function invariant_main_es_getCoord(coord) {
  70978. if (!coord) throw new Error('coord is required');
  70979. if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;
  70980. if (coord.type === 'Point') return coord.coordinates;
  70981. if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;
  70982. throw new Error('coord must be GeoJSON Point or an Array of numbers');
  70983. }
  70984. /**
  70985. * Unwrap coordinates from a Feature, Geometry Object or an Array
  70986. *
  70987. * @name getCoords
  70988. * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array
  70989. * @returns {Array<any>} coordinates
  70990. * @example
  70991. * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);
  70992. *
  70993. * var coords = turf.getCoords(poly);
  70994. * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]
  70995. */
  70996. function invariant_main_es_getCoords(coords) {
  70997. if (!coords) throw new Error('coords is required');
  70998. // Feature
  70999. if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;
  71000. // Geometry
  71001. if (coords.coordinates) return coords.coordinates;
  71002. // Array of numbers
  71003. if (Array.isArray(coords)) return coords;
  71004. throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');
  71005. }
  71006. /**
  71007. * Checks if coordinates contains a number
  71008. *
  71009. * @name containsNumber
  71010. * @param {Array<any>} coordinates GeoJSON Coordinates
  71011. * @returns {boolean} true if Array contains a number
  71012. */
  71013. function invariant_main_es_containsNumber(coordinates) {
  71014. if (coordinates.length > 1 && _turf_helpers_main_es_isNumber(coordinates[0]) && _turf_helpers_main_es_isNumber(coordinates[1])) {
  71015. return true;
  71016. }
  71017. if (Array.isArray(coordinates[0]) && coordinates[0].length) {
  71018. return invariant_main_es_containsNumber(coordinates[0]);
  71019. }
  71020. throw new Error('coordinates must only contain numbers');
  71021. }
  71022. /**
  71023. * Enforce expectations about types of GeoJSON objects for Turf.
  71024. *
  71025. * @name geojsonType
  71026. * @param {GeoJSON} value any GeoJSON object
  71027. * @param {string} type expected GeoJSON type
  71028. * @param {string} name name of calling function
  71029. * @throws {Error} if value is not the expected type.
  71030. */
  71031. function invariant_main_es_geojsonType(value, type, name) {
  71032. if (!type || !name) throw new Error('type and name required');
  71033. if (!value || value.type !== type) {
  71034. throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);
  71035. }
  71036. }
  71037. /**
  71038. * Enforce expectations about types of {@link Feature} inputs for Turf.
  71039. * Internally this uses {@link geojsonType} to judge geometry types.
  71040. *
  71041. * @name featureOf
  71042. * @param {Feature} feature a feature with an expected geometry type
  71043. * @param {string} type expected GeoJSON type
  71044. * @param {string} name name of calling function
  71045. * @throws {Error} error if value is not the expected type.
  71046. */
  71047. function invariant_main_es_featureOf(feature, type, name) {
  71048. if (!feature) throw new Error('No feature passed');
  71049. if (!name) throw new Error('.featureOf() requires a name');
  71050. if (!feature || feature.type !== 'Feature' || !feature.geometry) {
  71051. throw new Error('Invalid input to ' + name + ', Feature with geometry required');
  71052. }
  71053. if (!feature.geometry || feature.geometry.type !== type) {
  71054. throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);
  71055. }
  71056. }
  71057. /**
  71058. * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.
  71059. * Internally this uses {@link geojsonType} to judge geometry types.
  71060. *
  71061. * @name collectionOf
  71062. * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged
  71063. * @param {string} type expected GeoJSON type
  71064. * @param {string} name name of calling function
  71065. * @throws {Error} if value is not the expected type.
  71066. */
  71067. function invariant_main_es_collectionOf(featureCollection, type, name) {
  71068. if (!featureCollection) throw new Error('No featureCollection passed');
  71069. if (!name) throw new Error('.collectionOf() requires a name');
  71070. if (!featureCollection || featureCollection.type !== 'FeatureCollection') {
  71071. throw new Error('Invalid input to ' + name + ', FeatureCollection required');
  71072. }
  71073. for (var i = 0; i < featureCollection.features.length; i++) {
  71074. var feature = featureCollection.features[i];
  71075. if (!feature || feature.type !== 'Feature' || !feature.geometry) {
  71076. throw new Error('Invalid input to ' + name + ', Feature with geometry required');
  71077. }
  71078. if (!feature.geometry || feature.geometry.type !== type) {
  71079. throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);
  71080. }
  71081. }
  71082. }
  71083. /**
  71084. * Get Geometry from Feature or Geometry Object
  71085. *
  71086. * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object
  71087. * @returns {Geometry|null} GeoJSON Geometry Object
  71088. * @throws {Error} if geojson is not a Feature or Geometry Object
  71089. * @example
  71090. * var point = {
  71091. * "type": "Feature",
  71092. * "properties": {},
  71093. * "geometry": {
  71094. * "type": "Point",
  71095. * "coordinates": [110, 40]
  71096. * }
  71097. * }
  71098. * var geom = turf.getGeom(point)
  71099. * //={"type": "Point", "coordinates": [110, 40]}
  71100. */
  71101. function invariant_main_es_getGeom(geojson) {
  71102. if (!geojson) throw new Error('geojson is required');
  71103. if (geojson.geometry !== undefined) return geojson.geometry;
  71104. if (geojson.coordinates || geojson.geometries) return geojson;
  71105. throw new Error('geojson must be a valid Feature or Geometry Object');
  71106. }
  71107. /**
  71108. * Get Geometry Type from Feature or Geometry Object
  71109. *
  71110. * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType
  71111. */
  71112. function invariant_main_es_getGeomType() {
  71113. throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');
  71114. }
  71115. /**
  71116. * Get GeoJSON object's type, Geometry type is prioritize.
  71117. *
  71118. * @param {GeoJSON} geojson GeoJSON object
  71119. * @param {string} [name="geojson"] name of the variable to display in error message
  71120. * @returns {string} GeoJSON type
  71121. * @example
  71122. * var point = {
  71123. * "type": "Feature",
  71124. * "properties": {},
  71125. * "geometry": {
  71126. * "type": "Point",
  71127. * "coordinates": [110, 40]
  71128. * }
  71129. * }
  71130. * var geom = turf.getType(point)
  71131. * //="Point"
  71132. */
  71133. function invariant_main_es_getType(geojson, name) {
  71134. if (!geojson) throw new Error((name || 'geojson') + ' is required');
  71135. // GeoJSON Feature & GeometryCollection
  71136. if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;
  71137. // GeoJSON Geometry & FeatureCollection
  71138. if (geojson.type) return geojson.type;
  71139. throw new Error((name || 'geojson') + ' is invalid');
  71140. }
  71141. // CONCATENATED MODULE: ./node_modules/@turf/rhumb-destination/main.es.js
  71142. // https://en.wikipedia.org/wiki/Rhumb_line
  71143. /**
  71144. * Returns the destination {@link Point} having travelled the given distance along a Rhumb line from the
  71145. * origin Point with the (varant) given bearing.
  71146. *
  71147. * @name rhumbDestination
  71148. * @param {Coord} origin starting point
  71149. * @param {number} distance distance from the starting point
  71150. * @param {number} bearing varant bearing angle ranging from -180 to 180 degrees from north
  71151. * @param {Object} [options={}] Optional parameters
  71152. * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers
  71153. * @param {Object} [options.properties={}] translate properties to destination point
  71154. * @returns {Feature<Point>} Destination point.
  71155. * @example
  71156. * var pt = turf.point([-75.343, 39.984], {"marker-color": "F00"});
  71157. * var distance = 50;
  71158. * var bearing = 90;
  71159. * var options = {units: 'miles'};
  71160. *
  71161. * var destination = turf.rhumbDestination(pt, distance, bearing, options);
  71162. *
  71163. * //addToMap
  71164. * var addToMap = [pt, destination]
  71165. * destination.properties['marker-color'] = '#00F';
  71166. */
  71167. function rhumbDestination(origin, distance, bearing, options) {
  71168. // Optional parameters
  71169. options = options || {};
  71170. if (!_turf_helpers_main_es_isObject(options)) throw new Error('options is invalid');
  71171. var units = options.units;
  71172. var properties = options.properties;
  71173. // validation
  71174. if (!origin) throw new Error('origin is required');
  71175. if (distance === undefined || distance === null) throw new Error('distance is required');
  71176. if (bearing === undefined || bearing === null) throw new Error('bearing is required');
  71177. if (!(distance >= 0)) throw new Error('distance must be greater than 0');
  71178. var distanceInMeters = _turf_helpers_main_es_convertLength(distance, units, 'meters');
  71179. var coords = invariant_main_es_getCoord(origin);
  71180. var destination = calculateRhumbDestination(coords, distanceInMeters, bearing);
  71181. // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)
  71182. // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678
  71183. destination[0] += (destination[0] - coords[0] > 180) ? -360 : (coords[0] - destination[0] > 180) ? 360 : 0;
  71184. return _turf_helpers_main_es_point(destination, properties);
  71185. }
  71186. /**
  71187. * Returns the destination point having travelled along a rhumb line from origin point the given
  71188. * distance on the given bearing.
  71189. * Adapted from Geodesy: http://www.movable-type.co.uk/scripts/latlong.html#rhumblines
  71190. *
  71191. * @private
  71192. * @param {Array<number>} origin - point
  71193. * @param {number} distance - Distance travelled, in same units as earth radius (default: metres).
  71194. * @param {number} bearing - Bearing in degrees from north.
  71195. * @param {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).
  71196. * @returns {Array<number>} Destination point.
  71197. */
  71198. function calculateRhumbDestination(origin, distance, bearing, radius) {
  71199. // φ => phi
  71200. // λ => lambda
  71201. // ψ => psi
  71202. // Δ => Delta
  71203. // δ => delta
  71204. // θ => theta
  71205. radius = (radius === undefined) ? _turf_helpers_main_es_earthRadius : Number(radius);
  71206. var delta = distance / radius; // angular distance in radians
  71207. var lambda1 = origin[0] * Math.PI / 180; // to radians, but without normalize to 𝜋
  71208. var phi1 = _turf_helpers_main_es_degreesToRadians(origin[1]);
  71209. var theta = _turf_helpers_main_es_degreesToRadians(bearing);
  71210. var DeltaPhi = delta * Math.cos(theta);
  71211. var phi2 = phi1 + DeltaPhi;
  71212. // check for some daft bugger going past the pole, normalise latitude if so
  71213. if (Math.abs(phi2) > Math.PI / 2) phi2 = phi2 > 0 ? Math.PI - phi2 : -Math.PI - phi2;
  71214. var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));
  71215. var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1); // E-W course becomes ill-conditioned with 0/0
  71216. var DeltaLambda = delta * Math.sin(theta) / q;
  71217. var lambda2 = lambda1 + DeltaLambda;
  71218. return [((lambda2 * 180 / Math.PI) + 540) % 360 - 180, phi2 * 180 / Math.PI]; // normalise to −180..+180°
  71219. }
  71220. /* harmony default export */ var rhumb_destination_main_es = (rhumbDestination);
  71221. // CONCATENATED MODULE: ./node_modules/@turf/transform-scale/main.es.js
  71222. /**
  71223. * Scale a GeoJSON from a given point by a factor of scaling (ex: factor=2 would make the GeoJSON 200% larger).
  71224. * If a FeatureCollection is provided, the origin point will be calculated based on each individual Feature.
  71225. *
  71226. * @name transformScale
  71227. * @param {GeoJSON} geojson GeoJSON to be scaled
  71228. * @param {number} factor of scaling, positive or negative values greater than 0
  71229. * @param {Object} [options={}] Optional parameters
  71230. * @param {string|Coord} [options.origin='centroid'] Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid)
  71231. * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)
  71232. * @returns {GeoJSON} scaled GeoJSON
  71233. * @example
  71234. * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);
  71235. * var scaledPoly = turf.transformScale(poly, 3);
  71236. *
  71237. * //addToMap
  71238. * var addToMap = [poly, scaledPoly];
  71239. * scaledPoly.properties = {stroke: '#F00', 'stroke-width': 4};
  71240. */
  71241. function transformScale(geojson, factor, options) {
  71242. // Optional parameters
  71243. options = options || {};
  71244. if (!isObject(options)) throw new Error('options is invalid');
  71245. var origin = options.origin;
  71246. var mutate = options.mutate;
  71247. // Input validation
  71248. if (!geojson) throw new Error('geojson required');
  71249. if (typeof factor !== 'number' || factor === 0) throw new Error('invalid factor');
  71250. var originIsPoint = Array.isArray(origin) || typeof origin === 'object';
  71251. // Clone geojson to avoid side effects
  71252. if (mutate !== true) geojson = main_es(geojson);
  71253. // Scale each Feature separately
  71254. if (geojson.type === 'FeatureCollection' && !originIsPoint) {
  71255. featureEach(geojson, function (feature, index) {
  71256. geojson.features[index] = scale(feature, factor, origin);
  71257. });
  71258. return geojson;
  71259. }
  71260. // Scale Feature/Geometry
  71261. return scale(geojson, factor, origin);
  71262. }
  71263. /**
  71264. * Scale Feature/Geometry
  71265. *
  71266. * @private
  71267. * @param {Feature|Geometry} feature GeoJSON Feature/Geometry
  71268. * @param {number} factor of scaling, positive or negative values greater than 0
  71269. * @param {string|Coord} [origin="centroid"] Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid)
  71270. * @returns {Feature|Geometry} scaled GeoJSON Feature/Geometry
  71271. */
  71272. function scale(feature, factor, origin) {
  71273. // Default params
  71274. var isPoint = getType(feature) === 'Point';
  71275. origin = defineOrigin(feature, origin);
  71276. // Shortcut no-scaling
  71277. if (factor === 1 || isPoint) return feature;
  71278. // Scale each coordinate
  71279. coordEach(feature, function (coord) {
  71280. var originalDistance = rhumb_distance_main_es(origin, coord);
  71281. var bearing = rhumb_bearing_main_es(origin, coord);
  71282. var newDistance = originalDistance * factor;
  71283. var newCoord = getCoords(rhumb_destination_main_es(origin, newDistance, bearing));
  71284. coord[0] = newCoord[0];
  71285. coord[1] = newCoord[1];
  71286. if (coord.length === 3) coord[2] *= factor;
  71287. });
  71288. return feature;
  71289. }
  71290. /**
  71291. * Define Origin
  71292. *
  71293. * @private
  71294. * @param {GeoJSON} geojson GeoJSON
  71295. * @param {string|Coord} origin sw/se/nw/ne/center/centroid
  71296. * @returns {Feature<Point>} Point origin
  71297. */
  71298. function defineOrigin(geojson, origin) {
  71299. // Default params
  71300. if (origin === undefined || origin === null) origin = 'centroid';
  71301. // Input Coord
  71302. if (Array.isArray(origin) || typeof origin === 'object') return getCoord(origin);
  71303. // Define BBox
  71304. var bbox = (geojson.bbox) ? geojson.bbox : bbox_main_es(geojson);
  71305. var west = bbox[0];
  71306. var south = bbox[1];
  71307. var east = bbox[2];
  71308. var north = bbox[3];
  71309. switch (origin) {
  71310. case 'sw':
  71311. case 'southwest':
  71312. case 'westsouth':
  71313. case 'bottomleft':
  71314. return point([west, south]);
  71315. case 'se':
  71316. case 'southeast':
  71317. case 'eastsouth':
  71318. case 'bottomright':
  71319. return point([east, south]);
  71320. case 'nw':
  71321. case 'northwest':
  71322. case 'westnorth':
  71323. case 'topleft':
  71324. return point([west, north]);
  71325. case 'ne':
  71326. case 'northeast':
  71327. case 'eastnorth':
  71328. case 'topright':
  71329. return point([east, north]);
  71330. case 'center':
  71331. return center_main_es(geojson);
  71332. case undefined:
  71333. case null:
  71334. case 'centroid':
  71335. return centroid_main_es(geojson);
  71336. default:
  71337. throw new Error('invalid origin');
  71338. }
  71339. }
  71340. /* harmony default export */ var transform_scale_main_es = __webpack_exports__["default"] = (transformScale);
  71341. /***/ }),
  71342. /***/ "f0fa":
  71343. /***/ (function(module, exports, __webpack_require__) {
  71344. "use strict";
  71345. var utils = __webpack_require__("d691");
  71346. module.exports = function normalizeHeaderName(headers, normalizedName) {
  71347. utils.forEach(headers, function processHeader(value, name) {
  71348. if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
  71349. headers[normalizedName] = value;
  71350. delete headers[name];
  71351. }
  71352. });
  71353. };
  71354. /***/ }),
  71355. /***/ "f11d":
  71356. /***/ (function(module, exports) {
  71357. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhYAAAD+CAYAAABmz0wVAAAABGdBTUEAALGPC/xhBQAADf1JREFUeAHt3N1tnIUahdFxRA2UkAboIog2aMJI5IJUhJLyPGcGGJ+J5QTHCG/xeHHjfP5hs9cbKVseh5ub20/Hg38IECBAgAABAo8IHD+8u3nk3V9815svfsQHCBAgQIAAAQLfKPDd5fO/dZFcvs5bAgQIECBAoCfw3Fc0fMei93tBIwIECBAgMBMwLGb0ggkQIECAQE/AsOjdVCMCBAgQIDATuP8Zi4f/BTe3H39/+D7PBAgQIECAwCsROP75l0Yf7oHjhx9/+prAF4fF+Yv+7ou/9i/2MQIECBAgQOC/K3D54c3TX+64HxIPR8Zj7bwU8piK9xEgQIAAAQLPEjAsnsXmiwgQIECAAIHHBL76Usj1F7z55eP762e/JkCAAAECBLoCx79+xuL6z//j3eHt9fO5/d1vP76/VnjysHjsi6//RX5NgAABAgQIdAROP2Px67nN3W/v3l9anX7G4ofrIfFwZJw/z0shFy1vCRAgQIAAgX8s8E3fsfgs7fbT/U+JfvZ+DwQIECBAgMB/XuCvV0IOh6s/74+H4/fXz3fH49vr53Pp5w+L81d/eOf/dXF28A8BAgQIEIgJnF4K+aPR6a+b3v9Zf3op5Ofr59NLIaeXRv7/8fPI8FJI7DeCOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYgGERO6g6BAgQIEBgKWBYLPVlEyBAgACBmIBhETuoOgQIECBAYClgWCz1ZRMgQIAAgZiAYRE7qDoECBAgQGApYFgs9WUTIECAAIGYwHeXPje3n46XX//x9ng8XL/v+Ofzr5fPOT2eP3559JYAAQIECBAgcPAdC78JCBAgQIAAgX9f4Ob24+/XKW9++fj++vlw++mnz549ECBAgAABAmmBp2wD37FI/xZQjgABAgQIvKzA/c9YPBZ7vUyOd4e3p+cfLp93PBy/Pz3/fHn2lgABAgQIECDwZAEvhTyZyicSIECAAIFXIfDYNvBSyKs4vZIECBAgQOBlBAyLl3GWQoAAAQIEXoXAV3/G4qHA9bc87o7Ht6fn+5+5ePi5ngkQIECAAAECTxfw102fbuUzCRAgQIDAaxA4bQMvhbyGQ+tIgAABAgReSMCweCFoMQQIECBA4DUI3Dy7pJdCnk3nCwkQIECAQFXgf58egNySoaJ8AAAAAElFTkSuQmCC"
  71358. /***/ }),
  71359. /***/ "f14a":
  71360. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  71361. "use strict";
  71362. __webpack_require__.r(__webpack_exports__);
  71363. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_CountTo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8b18");
  71364. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_CountTo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_CountTo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  71365. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_CountTo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_CountTo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  71366. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_CountTo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  71367. /***/ }),
  71368. /***/ "f1a1":
  71369. /***/ (function(module, exports) {
  71370. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhYAAAD+CAYAAABmz0wVAAAABGdBTUEAALGPC/xhBQAAG6VJREFUeAHt3XuwXmV9L/BnvZd9yYUUZEqwGEASSRCOLUJFLgZbUoFIpVWjE7zM1On0j17m/NWZetrpae3Y6eWPTm9qO/SiklOjnhZDBEusoAhSwBt4FEOQ62lQBBKS7Oz32t+z3r3TvWEDIXmsQj5v9s673met57fW+uSZeb55L+ut0mHejr36pqW79u5623A4fGOV0unDYVqe0nDxYZbVnQABAgQIEPiBClR7qyrtHKZ0V1VV1yxbvOxjj77p/CcPd5eRBQ791r5qy7vigP44DdNxh15FTwIECBAgQOCHLlClRyIU/Gb3iss+fDjHcsjBonXV1t9Ow8H72s1GWv3jx6aTj/mxdOySyTQ5NpbajUYaxFMX8ZP6w0F9nx8PZpa7g1iX/wwGaRBHHw9H62K518/bj/rmbXK/fmxQ18vbzvTJ2+T26Pr0tty/7hvPncTyaN+jbePhaF+5PfoOZ2vkY4vHuWa+5f3U93X/3GfUXh/bTO18Yrl5dl/1Mc5ul1tjefa4636jEgfacv3c7kaAAAECBH5kBKrG7/SuWP8Hh3o8hxQsxjZtfX9MvL+15rhj03kvX5GWtFspxfMpVZ5w80Qdy6NJNk/Uowk7T6D9AxPtzGQfc3ee3vNcXq+rJ/mZGnFGuVYOJnmOz9Pv7MSda/VyEKjbR7Xy/FyHmJnt6uOol6NvfQx5u1wn/5k5ruiU++UIkWvOHvMoDOR1o/ASq+ftPz+Yu03ebpjPvg4nuU5ejo1CdxRUYvlpfbJWNLoRIECAAIEfMYFGo/GHnY3r33soh/W8gkVMltXYpmv+IubMXz1rxUvTOSf+RL3POIB+YzDoDvv9iBR5vhxUMfHGPBs/eSHP8nlF3GKizX/lW6yOB3VDfuIgokXePv8VFXrdXvydu0ZLLpJ/o6Hf680sjNrz1rEy9Tu9On/EMeQpfTjI93llP+8slvMtasSjXC+aIobk9fFXTi55mygdG/Rn9pv7R51o7PfzseSd93OgiDPtRcfoX5fop3yycbxRIrfH7uOc8n7SMLYPlcFgtr2f+r2oG0/L1NvmAqPkcSj/dvoQIECAAIFDFmi0mo3hjx29qLFq5fHVmtWnpomJJXOLxYT+V52Nb/z1eP/F8/pf8EEHi7duHjb/pbP1ypgt3/2aCBRnnnB8asRem81qqtHNs3Q/nrbI+45nK/KMHUv1xB7TdizF3Jtn4Tp05Al5FB9irh5N8HWESP241TNz3NXzbWxV14rGPAEP8sQfU3vdP0/xB9q7de36cV6Z+9V3/SifJ/g80dcb1zVibWwSvzMZIhpjwo+Gevczd/l4c1aI5iqvqrePor3eaDlq5EOIPeTdDYcRLPoRIOoziRyRg8rMtjm15FAyOpfcP7JRivV52whKz+sfbO4/umUCBAgQIFBCoNFuN6o3rDuzWrFi5dx68VrEP14+tv49H99Q9ee2P9vyQQWLV99+e/tr39q5KQLCW849+WXplfESSBXvoxhvNndX3W5j7+NPdL5x05e23/3vt333if//yFS3282vLrgRIECAAAECLyCB1uvXvjKtWXPG/EOuPvGq1cs33nHWWd357Qs/es5gccLmmyd3dr//ydjwkvNPXpFO/fGX5P9op8l2e/dwen9131fveujaD155Z2e6I0wsbKyVAAECBAi8YARaF649PZ225vR5B1yla5e3X/LmhzacOzWvfYEHzxos6mtU7HnimkgSr3vdqpPSyUcvS41Glcaq5q5qen/jrhtv2v65j3zs2wvU1USAAAECBAi8QAUWChfx7ocbly05+rLnutbFMwaLozZfd8xUp3tdvI/i7AtXnpSOX7a0DhXjVbW7mppK37zplu2f++jm7S9QM4dNgAABAgQIPIvAguEipdsmx9oX795w8WPP1HXBYLF407bjOsP91zer6owLV56YjlsabxSNLceGwyebne7gm1+4efuNmz5+zzMV1U6AAAECBAi88AUWDBdVdedYNbFu78aLHlnoDJ8WLCY3X7+i153eFhe5WrV21YnpmEWT8emPRmr3u3siVHTv/uKXdnz+/3xSqFhIUxsBAgQIEHiRCTxDuNjeao9fNLVh3QNPPd15wWL8qi2r4oOQ28ZarRVr45mKoybG6o+UtvuDPc3909N333zrvV/c/H93PLWIxwQIECBAgMCLV2DBcJHSA/G2y4umr7hs3tsiDgSLsY9uPSMua3X9ZKt13PlxNc2lE+O10Fi3u7fd7Uzd/cVb7735E1ff++Jlc2YECBAgQIDAMwksFC7ibRKPNIaNdZ13rL9ztl8dLNr/dO3ZcQGn6xa328ecd/IJaVF830dcaSu1utN72tOdfdtvufW+Wz65RaiYVXNPgAABAgSOQIGFw0X1WNVsXtx9+yW3ZZKqtenTa+MqkFviGYqlrz3phHzRq7j4VZXanQgVU/v3bL/1tvtv/eet3zkC/ZwyAQIECBAg8BSBBcNFSk+mRvOy3sZLb6xaV23Zt2xiYvLsl/1EGm836qtytzudJ8en9+/dfstt9/37pz5931NqekiAAAECBAgcwQILhosqTTWHzTe3jp6YnDzzZctTfBdJfPVFSq39U7ubU1N7vn37l++/7VPX3n8Euzl1AgQIECBAYAGB3g033hVfEJbmXaEzLsodX715deunTlhef/IjvpgrtaciVOzdt3v77V958MtbPyNULICpiQABAgQIEEhpwXCRhu1W/obS+O7NNL5valdr/77dO2778oNf+fT1T/tcKkQCBAgQIECAwFyBhcJFK4eK9tS+Jxp79+zaccfXHvrqddsenNvJMgECBAgQIEDgmQSeGi5azX17H2/u3v3EvV/5+sNf/9d/e+iZOmonQIAAAQIECCwkMDdctCJUPL7jjq88/I1tNz680MbaCBAgQIAAAQLPJTAbLprtVae/5Ruf/bxQ8Vxi1hMgQIAAAQLPKjC47/7vNr/XG/+5Z93KSgIECBAgQIDAQQrEFbHcCBAgQIAAAQJlBASLMo6qECBAgAABAiEgWBgGBAgQIECAQDEBwaIYpUIECBAgQICAYGEMECBAgAABAsUEBItilAoRIECAAAECgoUxQIAAAQIECBQTECyKUSpEgAABAgQICBbGAAECBAgQIFBMQLAoRqkQAQIECBAgIFgYAwQIECBAgEAxAcGiGKVCBAgQIECAgGBhDBAgQIAAAQLFBASLYpQKESBAgAABAoKFMUCAAAECBAgUExAsilEqRIAAAQIECAgWxgABAgQIECBQTECwKEapEAECBAgQICBYGAMECBAgQIBAMQHBohilQgQIECBAgIBgYQwQIECAAAECxQQEi2KUChEgQIAAAQKChTFAgAABAgQIFBMQLIpRKkSAAAECBAgIFsYAAQIECBAgUExAsChGqRABAgQIECAgWBgDBAgQIECAQDEBwaIYpUIECBAgQICAYGEMECBAgAABAsUEBItilAoRIECAAAECgoUxQIAAAQIECBQTECyKUSpEgAABAgQICBbGAAECBAgQIFBMQLAoRqkQAQIECBAgIFgYAwQIECBAgEAxAcGiGKVCBAgQIECAgGBhDBAgQIAAAQLFBASLYpQKESBAgAABAoKFMUCAAAECBAgUExAsilEqRIAAAQIECAgWxgABAgQIECBQTECwKEapEAECBAgQICBYGAMECBAgQIBAMQHBohilQgQIECBAgIBgYQwQIECAAAECxQQEi2KUChEgQIAAAQKChTFAgAABAgQIFBMQLIpRKkSAAAECBAgIFsYAAQIECBAgUExAsChGqRABAgQIECAgWBgDBAgQIECAQDEBwaIYpUIECBAgQICAYGEMECBAgAABAsUEBItilAoRIECAAAECgoUxQIAAAQIECBQTECyKUSpEgAABAgQICBbGAAECBAgQIFBMQLAoRqkQAQIECBAgIFgYAwQIECBAgEAxAcGiGKVCBAgQIECAgGBhDBAgQIAAAQLFBASLYpQKESBAgAABAoKFMUCAAAECBAgUExAsilEqRIAAAQIECAgWxgABAgQIECBQTECwKEapEAECBAgQICBYGAMECBAgQIBAMQHBohilQgQIECBAgIBgYQwQIECAAAECxQQEi2KUChEgQIAAAQKChTFAgAABAgQIFBMQLIpRKkSAAAECBAgIFsYAAQIECBAgUExAsChGqRABAgQIECAgWBgDBAgQIECAQDEBwaIYpUIECBAgQICAYGEMECBAgAABAsUEBItilAoRIECAAAECgoUxQIAAAQIECBQTECyKUSpEgAABAgQICBbGAAECBAgQIFBMQLAoRqkQAQIECBAgIFgYAwQIECBAgEAxAcGiGKVCBAgQIECAgGBhDBAgQIAAAQLFBASLYpQKESBAgAABAoKFMUCAAAECBAgUExAsilEqRIAAAQIECAgWxgABAgQIECBQTECwKEapEAECBAgQICBYGAMECBAgQIBAMQHBohilQgQIECBAgIBgYQwQIECAAAECxQQEi2KUChEgQIAAAQKChTFAgAABAgQIFBMQLIpRKkSAAAECBAgIFsYAAQIECBAgUExAsChGqRABAgQIECAgWBgDBAgQIECAQDEBwaIYpUIECBAgQICAYGEMECBAgAABAsUEBItilAoRIECAAAECgoUxQIAAAQIECBQTECyKUSpEgAABAgQICBbGAAECBAgQIFBMQLAoRqkQAQIECBAgIFgYAwQIECBAgEAxAcGiGKVCBAgQIECAgGBhDBAgQIAAAQLFBASLYpQKESBAgAABAoKFMUCAAAECBAgUExAsilEqRIAAAQIECAgWxgABAgQIECBQTECwKEapEAECBAgQICBYGAMECBAgQIBAMQHBohilQgQIECBAgIBgYQwQIECAAAECxQQEi2KUChEgQIAAAQKChTFAgAABAgQIFBMQLIpRKkSAAAECBAgIFsYAAQIECBAgUExAsChGqRABAgQIECAgWBgDBAgQIECAQDEBwaIYpUIECBAgQICAYGEMECBAgAABAsUEBItilAoRIECAAAECgoUxQIAAAQIECBQTECyKUSpEgAABAgQICBbGAAECBAgQIFBMQLAoRqkQAQIECBAgIFgYAwQIECBAgEAxAcGiGKVCBAgQIECAgGBhDBAgQIAAAQLFBASLYpQKESBAgAABAoKFMUCAAAECBAgUExAsilEqRIAAAQIECAgWxgABAgQIECBQTECwKEapEAECBAgQICBYGAMECBAgQIBAMQHBohilQgQIECBAgIBgYQwQIECAAAECxQQEi2KUChEgQIAAAQKChTFAgAABAgQIFBMQLIpRKkSAAAECBAgIFsYAAQIECBAgUExAsChGqRABAgQIECAgWBgDBAgQIECAQDEBwaIYpUIECBAgQICAYGEMECBAgAABAsUEBItilAoRIECAAAECgoUxQIAAAQIECBQTECyKUSpEgAABAgQICBbGAAECBAgQIFBMQLAoRqkQAQIECBAgIFgYAwQIECBAgEAxAcGiGKVCBAgQIECAgGBhDBAgQIAAAQLFBASLYpQKESBAgAABAoKFMUCAAAECBAgUExAsilEqRIAAAQIECAgWxgABAgQIECBQTECwKEapEAECBAgQICBYGAMECBAgQIBAMQHBohilQgQIECBAgIBgYQwQIECAAAECxQQEi2KUChEgQIAAAQKChTFAgAABAgQIFBMQLIpRKkSAAAECBAgIFsYAAQIECBAgUExAsChGqRABAgQIECAgWBgDBAgQIECAQDEBwaIYpUIECBAgQICAYGEMECBAgAABAsUEBItilAoRIECAAAECgoUxQIAAAQIECBQTECyKUSpEgAABAgQICBbGAAECBAgQIFBMQLAoRqkQAQIECBAgIFgYAwQIECBAgEAxAcGiGKVCBAgQIECAgGBhDBAgQIAAAQLFBASLYpQKESBAgAABAoKFMUCA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"
  71371. /***/ }),
  71372. /***/ "f1c2":
  71373. /***/ (function(module, exports, __webpack_require__) {
  71374. "use strict";
  71375. var utils = __webpack_require__("d691");
  71376. module.exports = (
  71377. utils.isStandardBrowserEnv() ?
  71378. // Standard browser envs have full support of the APIs needed to test
  71379. // whether the request URL is of the same origin as current location.
  71380. (function standardBrowserEnv() {
  71381. var msie = /(msie|trident)/i.test(navigator.userAgent);
  71382. var urlParsingNode = document.createElement('a');
  71383. var originURL;
  71384. /**
  71385. * Parse a URL to discover it's components
  71386. *
  71387. * @param {String} url The URL to be parsed
  71388. * @returns {Object}
  71389. */
  71390. function resolveURL(url) {
  71391. var href = url;
  71392. if (msie) {
  71393. // IE needs attribute set twice to normalize properties
  71394. urlParsingNode.setAttribute('href', href);
  71395. href = urlParsingNode.href;
  71396. }
  71397. urlParsingNode.setAttribute('href', href);
  71398. // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
  71399. return {
  71400. href: urlParsingNode.href,
  71401. protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
  71402. host: urlParsingNode.host,
  71403. search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
  71404. hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
  71405. hostname: urlParsingNode.hostname,
  71406. port: urlParsingNode.port,
  71407. pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
  71408. urlParsingNode.pathname :
  71409. '/' + urlParsingNode.pathname
  71410. };
  71411. }
  71412. originURL = resolveURL(window.location.href);
  71413. /**
  71414. * Determine if a URL shares the same origin as the current location
  71415. *
  71416. * @param {String} requestURL The URL to test
  71417. * @returns {boolean} True if URL shares the same origin, otherwise false
  71418. */
  71419. return function isURLSameOrigin(requestURL) {
  71420. var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
  71421. return (parsed.protocol === originURL.protocol &&
  71422. parsed.host === originURL.host);
  71423. };
  71424. })() :
  71425. // Non standard browser envs (web workers, react-native) lack needed support.
  71426. (function nonStandardBrowserEnv() {
  71427. return function isURLSameOrigin() {
  71428. return true;
  71429. };
  71430. })()
  71431. );
  71432. /***/ }),
  71433. /***/ "f240":
  71434. /***/ (function(module, exports) {
  71435. module.exports = __WEBPACK_EXTERNAL_MODULE_f240__;
  71436. /***/ }),
  71437. /***/ "f29e":
  71438. /***/ (function(module, exports, __webpack_require__) {
  71439. module.exports = __webpack_require__("9c77");
  71440. /***/ }),
  71441. /***/ "f2ac":
  71442. /***/ (function(module, exports) {
  71443. // shim for using process in browser
  71444. var process = module.exports = {};
  71445. // cached from whatever global is present so that test runners that stub it
  71446. // don't break things. But we need to wrap it in a try catch in case it is
  71447. // wrapped in strict mode code which doesn't define any globals. It's inside a
  71448. // function because try/catches deoptimize in certain engines.
  71449. var cachedSetTimeout;
  71450. var cachedClearTimeout;
  71451. function defaultSetTimout() {
  71452. throw new Error('setTimeout has not been defined');
  71453. }
  71454. function defaultClearTimeout () {
  71455. throw new Error('clearTimeout has not been defined');
  71456. }
  71457. (function () {
  71458. try {
  71459. if (typeof setTimeout === 'function') {
  71460. cachedSetTimeout = setTimeout;
  71461. } else {
  71462. cachedSetTimeout = defaultSetTimout;
  71463. }
  71464. } catch (e) {
  71465. cachedSetTimeout = defaultSetTimout;
  71466. }
  71467. try {
  71468. if (typeof clearTimeout === 'function') {
  71469. cachedClearTimeout = clearTimeout;
  71470. } else {
  71471. cachedClearTimeout = defaultClearTimeout;
  71472. }
  71473. } catch (e) {
  71474. cachedClearTimeout = defaultClearTimeout;
  71475. }
  71476. } ())
  71477. function runTimeout(fun) {
  71478. if (cachedSetTimeout === setTimeout) {
  71479. //normal enviroments in sane situations
  71480. return setTimeout(fun, 0);
  71481. }
  71482. // if setTimeout wasn't available but was latter defined
  71483. if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
  71484. cachedSetTimeout = setTimeout;
  71485. return setTimeout(fun, 0);
  71486. }
  71487. try {
  71488. // when when somebody has screwed with setTimeout but no I.E. maddness
  71489. return cachedSetTimeout(fun, 0);
  71490. } catch(e){
  71491. try {
  71492. // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
  71493. return cachedSetTimeout.call(null, fun, 0);
  71494. } catch(e){
  71495. // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
  71496. return cachedSetTimeout.call(this, fun, 0);
  71497. }
  71498. }
  71499. }
  71500. function runClearTimeout(marker) {
  71501. if (cachedClearTimeout === clearTimeout) {
  71502. //normal enviroments in sane situations
  71503. return clearTimeout(marker);
  71504. }
  71505. // if clearTimeout wasn't available but was latter defined
  71506. if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
  71507. cachedClearTimeout = clearTimeout;
  71508. return clearTimeout(marker);
  71509. }
  71510. try {
  71511. // when when somebody has screwed with setTimeout but no I.E. maddness
  71512. return cachedClearTimeout(marker);
  71513. } catch (e){
  71514. try {
  71515. // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
  71516. return cachedClearTimeout.call(null, marker);
  71517. } catch (e){
  71518. // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
  71519. // Some versions of I.E. have different rules for clearTimeout vs setTimeout
  71520. return cachedClearTimeout.call(this, marker);
  71521. }
  71522. }
  71523. }
  71524. var queue = [];
  71525. var draining = false;
  71526. var currentQueue;
  71527. var queueIndex = -1;
  71528. function cleanUpNextTick() {
  71529. if (!draining || !currentQueue) {
  71530. return;
  71531. }
  71532. draining = false;
  71533. if (currentQueue.length) {
  71534. queue = currentQueue.concat(queue);
  71535. } else {
  71536. queueIndex = -1;
  71537. }
  71538. if (queue.length) {
  71539. drainQueue();
  71540. }
  71541. }
  71542. function drainQueue() {
  71543. if (draining) {
  71544. return;
  71545. }
  71546. var timeout = runTimeout(cleanUpNextTick);
  71547. draining = true;
  71548. var len = queue.length;
  71549. while(len) {
  71550. currentQueue = queue;
  71551. queue = [];
  71552. while (++queueIndex < len) {
  71553. if (currentQueue) {
  71554. currentQueue[queueIndex].run();
  71555. }
  71556. }
  71557. queueIndex = -1;
  71558. len = queue.length;
  71559. }
  71560. currentQueue = null;
  71561. draining = false;
  71562. runClearTimeout(timeout);
  71563. }
  71564. process.nextTick = function (fun) {
  71565. var args = new Array(arguments.length - 1);
  71566. if (arguments.length > 1) {
  71567. for (var i = 1; i < arguments.length; i++) {
  71568. args[i - 1] = arguments[i];
  71569. }
  71570. }
  71571. queue.push(new Item(fun, args));
  71572. if (queue.length === 1 && !draining) {
  71573. runTimeout(drainQueue);
  71574. }
  71575. };
  71576. // v8 likes predictible objects
  71577. function Item(fun, array) {
  71578. this.fun = fun;
  71579. this.array = array;
  71580. }
  71581. Item.prototype.run = function () {
  71582. this.fun.apply(null, this.array);
  71583. };
  71584. process.title = 'browser';
  71585. process.browser = true;
  71586. process.env = {};
  71587. process.argv = [];
  71588. process.version = ''; // empty string to avoid regexp issues
  71589. process.versions = {};
  71590. function noop() {}
  71591. process.on = noop;
  71592. process.addListener = noop;
  71593. process.once = noop;
  71594. process.off = noop;
  71595. process.removeListener = noop;
  71596. process.removeAllListeners = noop;
  71597. process.emit = noop;
  71598. process.prependListener = noop;
  71599. process.prependOnceListener = noop;
  71600. process.listeners = function (name) { return [] }
  71601. process.binding = function (name) {
  71602. throw new Error('process.binding is not supported');
  71603. };
  71604. process.cwd = function () { return '/' };
  71605. process.chdir = function (dir) {
  71606. throw new Error('process.chdir is not supported');
  71607. };
  71608. process.umask = function() { return 0; };
  71609. /***/ }),
  71610. /***/ "f2e5":
  71611. /***/ (function(module, exports, __webpack_require__) {
  71612. // extracted by mini-css-extract-plugin
  71613. /***/ }),
  71614. /***/ "f2fc":
  71615. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  71616. "use strict";
  71617. __webpack_require__.r(__webpack_exports__);
  71618. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LabelThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("2fae");
  71619. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LabelThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LabelThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  71620. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LabelThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LabelThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  71621. /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_LabelThemeLayer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  71622. /***/ }),
  71623. /***/ "f344":
  71624. /***/ (function(module, exports, __webpack_require__) {
  71625. /* WEBPACK VAR INJECTION */(function(global) {/**
  71626. * lodash (Custom Build) <https://lodash.com/>
  71627. * Build: `lodash modularize exports="npm" -o ./`
  71628. * Copyright jQuery Foundation and other contributors <https://jquery.org/>
  71629. * Released under MIT license <https://lodash.com/license>
  71630. * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  71631. * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  71632. */
  71633. /** Used as references for various `Number` constants. */
  71634. var INFINITY = 1 / 0;
  71635. /** `Object#toString` result references. */
  71636. var symbolTag = '[object Symbol]';
  71637. /** Detect free variable `global` from Node.js. */
  71638. var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
  71639. /** Detect free variable `self`. */
  71640. var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
  71641. /** Used as a reference to the global object. */
  71642. var root = freeGlobal || freeSelf || Function('return this')();
  71643. /** Used for built-in method references. */
  71644. var objectProto = Object.prototype;
  71645. /** Used to generate unique IDs. */
  71646. var idCounter = 0;
  71647. /**
  71648. * Used to resolve the
  71649. * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
  71650. * of values.
  71651. */
  71652. var objectToString = objectProto.toString;
  71653. /** Built-in value references. */
  71654. var Symbol = root.Symbol;
  71655. /** Used to convert symbols to primitives and strings. */
  71656. var symbolProto = Symbol ? Symbol.prototype : undefined,
  71657. symbolToString = symbolProto ? symbolProto.toString : undefined;
  71658. /**
  71659. * The base implementation of `_.toString` which doesn't convert nullish
  71660. * values to empty strings.
  71661. *
  71662. * @private
  71663. * @param {*} value The value to process.
  71664. * @returns {string} Returns the string.
  71665. */
  71666. function baseToString(value) {
  71667. // Exit early for strings to avoid a performance hit in some environments.
  71668. if (typeof value == 'string') {
  71669. return value;
  71670. }
  71671. if (isSymbol(value)) {
  71672. return symbolToString ? symbolToString.call(value) : '';
  71673. }
  71674. var result = (value + '');
  71675. return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
  71676. }
  71677. /**
  71678. * Checks if `value` is object-like. A value is object-like if it's not `null`
  71679. * and has a `typeof` result of "object".
  71680. *
  71681. * @static
  71682. * @memberOf _
  71683. * @since 4.0.0
  71684. * @category Lang
  71685. * @param {*} value The value to check.
  71686. * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  71687. * @example
  71688. *
  71689. * _.isObjectLike({});
  71690. * // => true
  71691. *
  71692. * _.isObjectLike([1, 2, 3]);
  71693. * // => true
  71694. *
  71695. * _.isObjectLike(_.noop);
  71696. * // => false
  71697. *
  71698. * _.isObjectLike(null);
  71699. * // => false
  71700. */
  71701. function isObjectLike(value) {
  71702. return !!value && typeof value == 'object';
  71703. }
  71704. /**
  71705. * Checks if `value` is classified as a `Symbol` primitive or object.
  71706. *
  71707. * @static
  71708. * @memberOf _
  71709. * @since 4.0.0
  71710. * @category Lang
  71711. * @param {*} value The value to check.
  71712. * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
  71713. * @example
  71714. *
  71715. * _.isSymbol(Symbol.iterator);
  71716. * // => true
  71717. *
  71718. * _.isSymbol('abc');
  71719. * // => false
  71720. */
  71721. function isSymbol(value) {
  71722. return typeof value == 'symbol' ||
  71723. (isObjectLike(value) && objectToString.call(value) == symbolTag);
  71724. }
  71725. /**
  71726. * Converts `value` to a string. An empty string is returned for `null`
  71727. * and `undefined` values. The sign of `-0` is preserved.
  71728. *
  71729. * @static
  71730. * @memberOf _
  71731. * @since 4.0.0
  71732. * @category Lang
  71733. * @param {*} value The value to process.
  71734. * @returns {string} Returns the string.
  71735. * @example
  71736. *
  71737. * _.toString(null);
  71738. * // => ''
  71739. *
  71740. * _.toString(-0);
  71741. * // => '-0'
  71742. *
  71743. * _.toString([1, 2, 3]);
  71744. * // => '1,2,3'
  71745. */
  71746. function toString(value) {
  71747. return value == null ? '' : baseToString(value);
  71748. }
  71749. /**
  71750. * Generates a unique ID. If `prefix` is given, the ID is appended to it.
  71751. *
  71752. * @static
  71753. * @since 0.1.0
  71754. * @memberOf _
  71755. * @category Util
  71756. * @param {string} [prefix=''] The value to prefix the ID with.
  71757. * @returns {string} Returns the unique ID.
  71758. * @example
  71759. *
  71760. * _.uniqueId('contact_');
  71761. * // => 'contact_104'
  71762. *
  71763. * _.uniqueId();
  71764. * // => '105'
  71765. */
  71766. function uniqueId(prefix) {
  71767. var id = ++idCounter;
  71768. return toString(prefix) + id;
  71769. }
  71770. module.exports = uniqueId;
  71771. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("698d")))
  71772. /***/ }),
  71773. /***/ "f3da":
  71774. /***/ (function(module, exports, __webpack_require__) {
  71775. "use strict";
  71776. var _interopRequireDefault = __webpack_require__("8e6d");
  71777. Object.defineProperty(exports, "__esModule", {
  71778. value: true
  71779. });
  71780. exports.default = void 0;
  71781. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  71782. //
  71783. //
  71784. //
  71785. //
  71786. var _default = {
  71787. name: 'SmIframe',
  71788. mixins: [_theme.default],
  71789. props: {
  71790. src: {
  71791. type: String
  71792. }
  71793. }
  71794. };
  71795. exports.default = _default;
  71796. /***/ }),
  71797. /***/ "f3f9":
  71798. /***/ (function(module, exports, __webpack_require__) {
  71799. "use strict";
  71800. /**
  71801. * A `Cancel` is an object that is thrown when an operation is canceled.
  71802. *
  71803. * @class
  71804. * @param {string=} message The message.
  71805. */
  71806. function Cancel(message) {
  71807. this.message = message;
  71808. }
  71809. Cancel.prototype.toString = function toString() {
  71810. return 'Cancel' + (this.message ? ': ' + this.message : '');
  71811. };
  71812. Cancel.prototype.__CANCEL__ = true;
  71813. module.exports = Cancel;
  71814. /***/ }),
  71815. /***/ "f53a":
  71816. /***/ (function(module, exports, __webpack_require__) {
  71817. var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
  71818. * JavaScript Cookie v2.2.1
  71819. * https://github.com/js-cookie/js-cookie
  71820. *
  71821. * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
  71822. * Released under the MIT license
  71823. */
  71824. ;(function (factory) {
  71825. var registeredInModuleLoader;
  71826. if (true) {
  71827. !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
  71828. __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
  71829. (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
  71830. __WEBPACK_AMD_DEFINE_FACTORY__),
  71831. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  71832. registeredInModuleLoader = true;
  71833. }
  71834. if (true) {
  71835. module.exports = factory();
  71836. registeredInModuleLoader = true;
  71837. }
  71838. if (!registeredInModuleLoader) {
  71839. var OldCookies = window.Cookies;
  71840. var api = window.Cookies = factory();
  71841. api.noConflict = function () {
  71842. window.Cookies = OldCookies;
  71843. return api;
  71844. };
  71845. }
  71846. }(function () {
  71847. function extend () {
  71848. var i = 0;
  71849. var result = {};
  71850. for (; i < arguments.length; i++) {
  71851. var attributes = arguments[ i ];
  71852. for (var key in attributes) {
  71853. result[key] = attributes[key];
  71854. }
  71855. }
  71856. return result;
  71857. }
  71858. function decode (s) {
  71859. return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);
  71860. }
  71861. function init (converter) {
  71862. function api() {}
  71863. function set (key, value, attributes) {
  71864. if (typeof document === 'undefined') {
  71865. return;
  71866. }
  71867. attributes = extend({
  71868. path: '/'
  71869. }, api.defaults, attributes);
  71870. if (typeof attributes.expires === 'number') {
  71871. attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);
  71872. }
  71873. // We're using "expires" because "max-age" is not supported by IE
  71874. attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';
  71875. try {
  71876. var result = JSON.stringify(value);
  71877. if (/^[\{\[]/.test(result)) {
  71878. value = result;
  71879. }
  71880. } catch (e) {}
  71881. value = converter.write ?
  71882. converter.write(value, key) :
  71883. encodeURIComponent(String(value))
  71884. .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
  71885. key = encodeURIComponent(String(key))
  71886. .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)
  71887. .replace(/[\(\)]/g, escape);
  71888. var stringifiedAttributes = '';
  71889. for (var attributeName in attributes) {
  71890. if (!attributes[attributeName]) {
  71891. continue;
  71892. }
  71893. stringifiedAttributes += '; ' + attributeName;
  71894. if (attributes[attributeName] === true) {
  71895. continue;
  71896. }
  71897. // Considers RFC 6265 section 5.2:
  71898. // ...
  71899. // 3. If the remaining unparsed-attributes contains a %x3B (";")
  71900. // character:
  71901. // Consume the characters of the unparsed-attributes up to,
  71902. // not including, the first %x3B (";") character.
  71903. // ...
  71904. stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
  71905. }
  71906. return (document.cookie = key + '=' + value + stringifiedAttributes);
  71907. }
  71908. function get (key, json) {
  71909. if (typeof document === 'undefined') {
  71910. return;
  71911. }
  71912. var jar = {};
  71913. // To prevent the for loop in the first place assign an empty array
  71914. // in case there are no cookies at all.
  71915. var cookies = document.cookie ? document.cookie.split('; ') : [];
  71916. var i = 0;
  71917. for (; i < cookies.length; i++) {
  71918. var parts = cookies[i].split('=');
  71919. var cookie = parts.slice(1).join('=');
  71920. if (!json && cookie.charAt(0) === '"') {
  71921. cookie = cookie.slice(1, -1);
  71922. }
  71923. try {
  71924. var name = decode(parts[0]);
  71925. cookie = (converter.read || converter)(cookie, name) ||
  71926. decode(cookie);
  71927. if (json) {
  71928. try {
  71929. cookie = JSON.parse(cookie);
  71930. } catch (e) {}
  71931. }
  71932. jar[name] = cookie;
  71933. if (key === name) {
  71934. break;
  71935. }
  71936. } catch (e) {}
  71937. }
  71938. return key ? jar[key] : jar;
  71939. }
  71940. api.set = set;
  71941. api.get = function (key) {
  71942. return get(key, false /* read as raw */);
  71943. };
  71944. api.getJSON = function (key) {
  71945. return get(key, true /* read as json */);
  71946. };
  71947. api.remove = function (key, attributes) {
  71948. set(key, '', extend(attributes, {
  71949. expires: -1
  71950. }));
  71951. };
  71952. api.defaults = {};
  71953. api.withConverter = init;
  71954. return api;
  71955. }
  71956. return init(function () {});
  71957. }));
  71958. /***/ }),
  71959. /***/ "f582":
  71960. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  71961. "use strict";
  71962. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/mapboxgl/query/Query.vue?vue&type=template&id=3cfc42a0&
  71963. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('sm-card',{directives:[{name:"show",rawName:"v-show",value:(_vm.isShow),expression:"isShow"}],staticClass:"sm-component-query",attrs:{"icon-class":_vm.iconClass,"icon-position":_vm.position,"header-name":_vm.headerName,"auto-rotate":_vm.autoRotate,"collapsed":_vm.collapsed,"background":_vm.background,"textColor":_vm.textColor}},[_c('div',{staticClass:"sm-component-query__body",style:([_vm.getBackgroundStyle, _vm.getTextColorStyle])},[_c('div',{staticClass:"sm-component-query__choose-panel clearfix"},[_c('div',{staticClass:"sm-component-query__job-button is-active",style:(_vm.activeTab === 'job' ? _vm.getColorStyle(0) : ''),attrs:{"title":_vm.$t('query.queryJob')},on:{"click":_vm.jobButtonClicked}},[_vm._v("\n "+_vm._s(_vm.$t('query.queryJob'))+"\n ")]),_vm._v(" "),_c('div',{staticClass:"sm-component-query__result-button",style:(_vm.activeTab === 'result' ? _vm.getColorStyle(0) : ''),attrs:{"title":_vm.$t('query.queryResult')},on:{"click":_vm.resultButtonClicked}},[_vm._v("\n "+_vm._s(_vm.$t('query.queryResult'))+"\n ")])]),_vm._v(" "),_c('div',{staticClass:"sm-component-query__job-info"},_vm._l((_vm.jobInfos),function(jobInfo,index){return _c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.jobInfos.length > 0),expression:"jobInfos.length > 0"}],key:index,staticClass:"sm-component-query__job-info-panel"},[_c('div',{staticClass:"sm-component-query__job-info-header",style:(_vm.getTextColorStyle),on:{"click":_vm.jobInfoClicked,"mouseleave":_vm.resetHoverStyle,"mouseenter":_vm.changeHoverStyle}},[_c('span',{staticClass:"sm-components-icons-preview"}),_vm._v(" "),_c('span',{staticClass:"sm-component-query__job-info-name",attrs:{"title":jobInfo.queryParameter.name}},[_vm._v(_vm._s(jobInfo.queryParameter.name))]),_vm._v(" "),_c('div',{staticClass:"sm-components-icons-legend-unfold"})]),_vm._v(" "),(jobInfo.queryParameter.attributeFilter)?_c('div',{staticClass:"sm-component-query__job-info-body hidden"},[_c('div',{staticClass:"sm-component-query__attribute"},[_c('div',[_vm._v(_vm._s(_vm.$t('query.attributeCondition')))]),_vm._v(" "),_c('div',{staticClass:"sm-component-query__attribute-name",style:(_vm.getColorStyle(0))},[_vm._v("\n "+_vm._s(jobInfo.queryParameter.attributeFilter)+"\n ")])]),_vm._v(" "),_c('div',{staticClass:"sm-component-query__spatial-filter"},[_c('div',[_vm._v(_vm._s(_vm.$t('query.spatialFilter')))]),_vm._v(" "),_c('a-select',{staticClass:"sm-component-query__a-select",attrs:{"get-popup-container":_vm.getPopupContainer},on:{"dropdownVisibleChange":_vm.changeChosenStyle},model:{value:(jobInfo.spaceFilter),callback:function ($$v) {_vm.$set(jobInfo, "spaceFilter", $$v)},expression:"jobInfo.spaceFilter"}},_vm._l((_vm.selectOptions),function(item){return _c('a-select-option',{key:item.value,attrs:{"value":item.value}},[_vm._v(_vm._s(item.label))])}),1)],1),_vm._v(" "),_c('div',{staticClass:"sm-component-query__query-button"},[_c('a-button',{staticClass:"sm-component-query__a-button",style:({ backgroundColor: _vm.getColorStyle(0).color, color: _vm.getTextColor }),attrs:{"type":"primary","size":"small"},on:{"click":function($event){return _vm.queryButtonClicked(jobInfo.queryParameter, jobInfo.spaceFilter)}}},[_vm._v("\n "+_vm._s(_vm.$t('query.applicate'))+"\n ")])],1)]):_vm._e()])}),0),_vm._v(" "),_c('div',{staticClass:"sm-component-query__result-info hidden"},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(!_vm.queryResult && !_vm.isQuery),expression:"!queryResult && !isQuery"}],staticClass:"sm-component-query__no-result hidden"},[_vm._v("\n "+_vm._s(_vm.$t('query.noResult'))+"\n ")]),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.isQuery && !_vm.queryResult),expression:"isQuery && !queryResult"}],staticClass:"sm-component-query__result-loading"},[_c('a-spin',{attrs:{"tip":_vm.$t('query.querying')}},[_c('a-icon',{staticStyle:{"font-size":"24px"},attrs:{"slot":"indicator","type":"loading","spin":""},slot:"indicator"})],1)],1),_vm._v(" "),(_vm.queryResult)?_c('div',{staticClass:"sm-component-query__result-header",style:(_vm.getColorStyle(0))},[_c('span',{staticClass:"sm-component-query__header-name",attrs:{"title":_vm.queryResult.name}},[_vm._v(_vm._s(_vm.queryResult.name))]),_vm._v(" "),_c('span',{staticClass:"sm-components-icons-close",on:{"click":_vm.clearResult}})]):_vm._e(),_vm._v(" "),(_vm.queryResult)?_c('div',{staticClass:"sm-component-query__result-body"},[_c('ul',_vm._l((_vm.queryResult.result),function(item,index){return _c('li',{key:index,attrs:{"title":_vm.getInfoOfSmid(item.properties)},on:{"click":_vm.queryResultListClicked,"mouseenter":_vm.changeChosenResultStyle,"mouseleave":_vm.resetChosenResultStyle}},[_vm._v("\n "+_vm._s(_vm.getInfoOfSmid(item.properties))+"\n ")])}),0)]):_vm._e()])]),_vm._v(" "),_c('TablePopup',_vm._b({directives:[{name:"show",rawName:"v-show",value:(false),expression:"false"}],ref:"queryTablePopup",attrs:{"background":_vm.background,"textColor":_vm.textColor}},'TablePopup',_vm.tablePopupProps,false))],1)}
  71964. var staticRenderFns = []
  71965. // CONCATENATED MODULE: ./src/mapboxgl/query/Query.vue?vue&type=template&id=3cfc42a0&
  71966. /* concated harmony reexport render */__webpack_require__.d(__webpack_exports__, "a", function() { return render; });
  71967. /* concated harmony reexport staticRenderFns */__webpack_require__.d(__webpack_exports__, "b", function() { return staticRenderFns; });
  71968. /***/ }),
  71969. /***/ "f586":
  71970. /***/ (function(module, exports) {
  71971. module.exports = function(module) {
  71972. if (!module.webpackPolyfill) {
  71973. module.deprecate = function() {};
  71974. module.paths = [];
  71975. // module.parent = undefined by default
  71976. if (!module.children) module.children = [];
  71977. Object.defineProperty(module, "loaded", {
  71978. enumerable: true,
  71979. get: function() {
  71980. return module.l;
  71981. }
  71982. });
  71983. Object.defineProperty(module, "id", {
  71984. enumerable: true,
  71985. get: function() {
  71986. return module.i;
  71987. }
  71988. });
  71989. module.webpackPolyfill = 1;
  71990. }
  71991. return module;
  71992. };
  71993. /***/ }),
  71994. /***/ "f5a9":
  71995. /***/ (function(module, exports, __webpack_require__) {
  71996. "use strict";
  71997. var _interopRequireDefault = __webpack_require__("8e6d");
  71998. Object.defineProperty(exports, "__esModule", {
  71999. value: true
  72000. });
  72001. exports.default = void 0;
  72002. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  72003. var _borderConfig = _interopRequireDefault(__webpack_require__("a759"));
  72004. var _lodash = _interopRequireDefault(__webpack_require__("f344"));
  72005. var _resizeDetector = __webpack_require__("e0f2");
  72006. var _debounce = _interopRequireDefault(__webpack_require__("331f"));
  72007. //
  72008. //
  72009. //
  72010. //
  72011. //
  72012. //
  72013. //
  72014. //
  72015. var _default = {
  72016. name: 'SmBorder',
  72017. mixins: [_theme.default],
  72018. props: {
  72019. // border的类型
  72020. type: {
  72021. type: [String],
  72022. default: 'border1'
  72023. },
  72024. customBorder: {
  72025. type: Object
  72026. }
  72027. },
  72028. data: function data() {
  72029. return {
  72030. borderId: (0, _lodash.default)("".concat(this.$options.name.toLowerCase(), "-")),
  72031. // content的位置大小
  72032. position: {
  72033. top: 0,
  72034. left: 0,
  72035. width: 0,
  72036. height: 0
  72037. },
  72038. // 上右下左的边距
  72039. borderEdge: [],
  72040. // border的宽度
  72041. borderWidth: [],
  72042. // border组件的宽高
  72043. width: 0,
  72044. height: 0
  72045. };
  72046. },
  72047. computed: {
  72048. borderConfig: function borderConfig() {
  72049. if (!this.customBorder && this.type) {
  72050. return _borderConfig.default[this.type];
  72051. } else {
  72052. return this.customBorder;
  72053. }
  72054. },
  72055. borderImage: function borderImage() {
  72056. if ((!this.customBorder || !this.customBorder.src) && this.type) {
  72057. return __webpack_require__("ded2")("./".concat(this.type, ".png"));
  72058. } else {
  72059. return "".concat(this.customBorder.src);
  72060. }
  72061. },
  72062. borderStyle: function borderStyle() {
  72063. var borderImageSlice = this.borderWidth.join(' ') + ' fill';
  72064. var borderWidth = this.borderWidth.join('px ') + 'px';
  72065. return {
  72066. borderWidth: borderWidth,
  72067. // 当图片大小超过8KB, webpack就不会转换成base64, 直接引入时路径出错(此时的图片路径在index.html下?)
  72068. borderImage: 'url(' + this.borderImage + ') ' + borderImageSlice + ' / 1 / 0 stretch'
  72069. };
  72070. },
  72071. contentStyle: function contentStyle() {
  72072. var contentStyle = Object.assign({}, this.position);
  72073. for (var key in contentStyle) {
  72074. contentStyle[key] = contentStyle[key] + 'px';
  72075. }
  72076. return contentStyle;
  72077. }
  72078. },
  72079. watch: {
  72080. // type变化了,需要读取对应的配置,重新计算位置大小
  72081. type: function type() {
  72082. this.setPosition();
  72083. }
  72084. },
  72085. mounted: function mounted() {
  72086. this.setPosition();
  72087. this.resizeHanlder = (0, _debounce.default)(this.calcPosition.bind(this), 500);
  72088. (0, _resizeDetector.addListener)(this.$el, this.resizeHanlder);
  72089. },
  72090. updated: function updated() {
  72091. // 避免style.width< borderWidth,引起的dom重绘, 宽高会改变, 需要重新计算组件的位置大小
  72092. this.calcPosition();
  72093. },
  72094. beforeDestroy: function beforeDestroy() {
  72095. (0, _resizeDetector.removeListener)(this.$el, this.resizeHandler);
  72096. },
  72097. methods: {
  72098. // 设置content的位置大小
  72099. setPosition: function setPosition() {
  72100. var borderConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.borderConfig;
  72101. this.borderEdge = borderConfig.borderEdge;
  72102. this.borderWidth = borderConfig.borderWidth;
  72103. this.calcPosition();
  72104. },
  72105. // 计算content的top,left,width,height
  72106. calcPosition: function calcPosition() {
  72107. // 设置总宽高
  72108. this.setWidthHeight();
  72109. var _this$borderEdge = this.borderEdge,
  72110. top = _this$borderEdge.top,
  72111. left = _this$borderEdge.left,
  72112. bottom = _this$borderEdge.bottom,
  72113. right = _this$borderEdge.right; // 由于定位是相当于content-width来定位, 所以要减去border的宽度(left和 top)
  72114. this.position.left = left - this.borderWidth[3];
  72115. this.position.top = top - this.borderWidth[0]; // 内容的宽度 = 总的宽度 - 总的边距
  72116. this.position.width = this.width - left - right;
  72117. this.position.height = this.height - top - bottom;
  72118. },
  72119. // 设置宽高
  72120. setWidthHeight: function setWidthHeight() {
  72121. if (this.$refs[this.borderId]) {
  72122. this.width = this.$refs[this.borderId].offsetWidth;
  72123. this.height = this.$refs[this.borderId].offsetHeight;
  72124. }
  72125. }
  72126. }
  72127. };
  72128. exports.default = _default;
  72129. /***/ }),
  72130. /***/ "f6f9":
  72131. /***/ (function(module, exports, __webpack_require__) {
  72132. "use strict";
  72133. var _interopRequireDefault = __webpack_require__("8e6d");
  72134. Object.defineProperty(exports, "__esModule", {
  72135. value: true
  72136. });
  72137. exports.default = void 0;
  72138. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  72139. var _lodash = _interopRequireDefault(__webpack_require__("f344"));
  72140. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  72141. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  72142. var _default2 = {
  72143. name: 'LayerMixin',
  72144. props: {
  72145. layerId: {
  72146. type: String,
  72147. default: function _default() {
  72148. var defaultLayerId = (0, _lodash.default)("".concat(this.$options.name.toLowerCase(), "-"));
  72149. return defaultLayerId;
  72150. }
  72151. },
  72152. minzoom: {
  72153. type: Number,
  72154. default: 0
  72155. },
  72156. maxzoom: {
  72157. type: Number,
  72158. default: 22
  72159. },
  72160. filter: {
  72161. type: Array
  72162. },
  72163. layout: {
  72164. type: Object
  72165. },
  72166. paint: {
  72167. type: Object
  72168. },
  72169. before: {
  72170. type: String,
  72171. default: undefined
  72172. }
  72173. },
  72174. data: function data() {
  72175. return {
  72176. eventList: ['mousedown', 'mouseup', 'click', 'dblclick', 'mousemove', 'mouseenter', 'mouseleave', 'mouseover', 'mouseout', 'contextmenu', 'touchstart', 'touchend', 'touchcancel']
  72177. };
  72178. },
  72179. computed: {
  72180. sourceLoaded: function sourceLoaded() {
  72181. var sourceId = this.sourceId || this.layerId;
  72182. return this.map && sourceId ? this.map.isSourceLoaded(sourceId) : false;
  72183. },
  72184. mapLayer: function mapLayer() {
  72185. return this.map ? this.map.getLayer(this.layerId) : null;
  72186. },
  72187. mapSource: function mapSource() {
  72188. var sourceId = this.sourceId || this.layerId;
  72189. return this.map && sourceId ? this.map.getSource(sourceId) : null;
  72190. }
  72191. },
  72192. created: function created() {
  72193. if (this.minzoom || this.minzoom === 0) {
  72194. this.$watch('minzoom', function (next) {
  72195. this.map.setLayerZoomRange(this.layerId, next, this.maxzoom);
  72196. });
  72197. }
  72198. if (this.maxzoom || this.minzoom === 0) {
  72199. this.$watch('maxzoom', function (next) {
  72200. this.map.setLayerZoomRange(this.layerId, this.minzoom, next);
  72201. });
  72202. }
  72203. if (this.filter) {
  72204. this.$watch('filter', function (next) {
  72205. this.map.setFilter(this.layerId, next);
  72206. });
  72207. }
  72208. if (this.layout) {
  72209. this.$watch('layout', function (next) {
  72210. if (next) {
  72211. for (var _i = 0, _Object$keys = Object.keys(next); _i < _Object$keys.length; _i++) {
  72212. var prop = _Object$keys[_i];
  72213. this.map.setLayoutProperty(this.layerId, prop, next[prop]);
  72214. }
  72215. }
  72216. });
  72217. }
  72218. if (this.paint) {
  72219. this.$watch('paint', function (next) {
  72220. if (next) {
  72221. for (var _i2 = 0, _Object$keys2 = Object.keys(next); _i2 < _Object$keys2.length; _i2++) {
  72222. var prop = _Object$keys2[_i2];
  72223. this.map.setPaintProperty(this.layerId, prop, next[prop]);
  72224. }
  72225. }
  72226. });
  72227. }
  72228. this.$watch('layerId', function (newLayerId) {
  72229. this.viewModel && this.viewModel.setLayerId && this.viewModel.setLayerId(newLayerId);
  72230. });
  72231. },
  72232. methods: {
  72233. $_emitEvent: function $_emitEvent(name) {
  72234. var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  72235. this.$emit(name, _objectSpread({
  72236. map: this.map,
  72237. layerId: this.layerId
  72238. }, data));
  72239. },
  72240. $_emitLayerMapEvent: function $_emitLayerMapEvent(event) {
  72241. this.$_emitEvent(event.type, {
  72242. mapboxEvent: event
  72243. });
  72244. },
  72245. $_bindLayerEvents: function $_bindLayerEvents() {
  72246. var _this = this;
  72247. Object.keys(this.$listeners).forEach(function (eventName) {
  72248. if (_this.eventList.includes(eventName)) {
  72249. _this.map.on(eventName, _this.layerId, _this.$_emitLayerMapEvent);
  72250. }
  72251. });
  72252. },
  72253. $_unbindLayerEvents: function $_unbindLayerEvents(events) {
  72254. var _this2 = this;
  72255. if (this.map) {
  72256. events.forEach(function (eventName) {
  72257. _this2.map.off(eventName, _this2.layerId, _this2.$_emitLayerMapEvent);
  72258. });
  72259. }
  72260. },
  72261. move: function move(beforeId) {
  72262. this.map.moveLayer(this.layerId, beforeId);
  72263. this.$_emitEvent('layer-moved', {
  72264. beforeId: beforeId
  72265. });
  72266. },
  72267. remove: function remove() {
  72268. this.viewModel && this.viewModel.clear && this.viewModel.removed();
  72269. this.$_emitEvent('layer-removed');
  72270. }
  72271. },
  72272. removed: function removed() {
  72273. this.remove();
  72274. }
  72275. };
  72276. exports.default = _default2;
  72277. /***/ }),
  72278. /***/ "f7bd":
  72279. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  72280. "use strict";
  72281. __webpack_require__.r(__webpack_exports__);
  72282. /* harmony import */ var _Card_vue_vue_type_template_id_0b7b8e8a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("5993");
  72283. /* harmony import */ var _Card_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("65db");
  72284. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Card_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Card_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  72285. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  72286. /* normalize component */
  72287. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  72288. _Card_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  72289. _Card_vue_vue_type_template_id_0b7b8e8a___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  72290. _Card_vue_vue_type_template_id_0b7b8e8a___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  72291. false,
  72292. null,
  72293. null,
  72294. null
  72295. )
  72296. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  72297. /***/ }),
  72298. /***/ "f83e":
  72299. /***/ (function(module, exports, __webpack_require__) {
  72300. "use strict";
  72301. var _interopRequireDefault = __webpack_require__("8e6d");
  72302. Object.defineProperty(exports, "__esModule", {
  72303. value: true
  72304. });
  72305. exports.default = void 0;
  72306. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  72307. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  72308. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  72309. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  72310. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  72311. var _mapboxGlEnhance = _interopRequireDefault(__webpack_require__("3d57"));
  72312. /**
  72313. * @class ClusterLayerViewModel
  72314. * @param {mapboxgl.map} map - mapboxgl map 对象。
  72315. * @param {Object} data - Cluster layer data。
  72316. * @param {Object} options - 可选参数。
  72317. * @param {String} [options.layerId] - 图层 ID。
  72318. * @param {Object} [options.clusteredPointStyle] - 聚合点的 Paint 对象。
  72319. * @param {Object} [options.unclusteredPointStyle] - 未聚合的点的 Paint 对象。
  72320. * @param {Object} [options.clusteredPointTextLayout] - 聚合点的文本 layout 对象
  72321. * @param {number} [options.radius=50] - 图层聚合点半径。
  72322. * @param {number} [options.maxZoom=14] - 图层最大显示级别。
  72323. */
  72324. var ClusterLayerViewModel =
  72325. /*#__PURE__*/
  72326. function (_mapboxgl$Evented) {
  72327. (0, _inherits2.default)(ClusterLayerViewModel, _mapboxgl$Evented);
  72328. function ClusterLayerViewModel(data) {
  72329. var _this;
  72330. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  72331. (0, _classCallCheck2.default)(this, ClusterLayerViewModel);
  72332. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(ClusterLayerViewModel).call(this));
  72333. _this.options = options;
  72334. _this.data = data;
  72335. _this.layerId = options.layerId || 'clusterLayer' + new Date().getTime();
  72336. return _this;
  72337. }
  72338. (0, _createClass2.default)(ClusterLayerViewModel, [{
  72339. key: "setMap",
  72340. value: function setMap(mapInfo) {
  72341. var map = mapInfo.map;
  72342. if (!map) {
  72343. throw new Error('map is requierd');
  72344. }
  72345. this.map = map;
  72346. this._initializeClusterLayer();
  72347. }
  72348. }, {
  72349. key: "setData",
  72350. value: function setData(data) {
  72351. if (!data) {
  72352. return;
  72353. }
  72354. this.data = data;
  72355. if (this.layerId && !this.map.getSource(this.layerId)) {
  72356. this._initializeClusterLayer();
  72357. } else {
  72358. this.map.getSource(this.layerId).setData(data);
  72359. }
  72360. }
  72361. }, {
  72362. key: "setClusteredPointStyle",
  72363. value: function setClusteredPointStyle(clusteredPointStyle) {
  72364. if (!clusteredPointStyle || this.layerId && !this.map.getSource(this.layerId)) {
  72365. return;
  72366. }
  72367. this.options.clusteredPointStyle = clusteredPointStyle;
  72368. this._setPaintProperty(clusteredPointStyle.paint, this.layerId);
  72369. this._setLayoutProperty(clusteredPointStyle.layout, this.layerId);
  72370. }
  72371. }, {
  72372. key: "setUnclusteredPointStyle",
  72373. value: function setUnclusteredPointStyle(unclusteredPointStyle) {
  72374. var layerId = 'unclustered_point' + this.layerId;
  72375. if (!unclusteredPointStyle || !this.map.getSource(layerId)) {
  72376. return;
  72377. }
  72378. this.options.unclusteredPointStyle = unclusteredPointStyle;
  72379. this._setPaintProperty(unclusteredPointStyle.paint, layerId);
  72380. this._setLayoutProperty(unclusteredPointStyle.layout, layerId);
  72381. }
  72382. }, {
  72383. key: "setClusteredPointTextLayout",
  72384. value: function setClusteredPointTextLayout(clusteredPointTextLayout) {
  72385. var layerId = 'count_' + this.layerId;
  72386. if (!clusteredPointTextLayout || !this.map.getSource(layerId)) {
  72387. return;
  72388. }
  72389. this.options.clusteredPointTextLayout = clusteredPointTextLayout;
  72390. this._setLayoutProperty(clusteredPointTextLayout, layerId);
  72391. }
  72392. }, {
  72393. key: "_setPaintProperty",
  72394. value: function _setPaintProperty(paint, layerId) {
  72395. var _this2 = this;
  72396. Object.keys(paint).forEach(function (key) {
  72397. _this2.map.setPaintProperty(layerId, key, paint[key]);
  72398. });
  72399. }
  72400. }, {
  72401. key: "_setLayoutProperty",
  72402. value: function _setLayoutProperty(layout, layerId) {
  72403. var _this3 = this;
  72404. Object.keys(layout).forEach(function (key) {
  72405. _this3.map.setLayoutProperty(layerId, key, layout[key]);
  72406. });
  72407. }
  72408. }, {
  72409. key: "_initializeClusterLayer",
  72410. value: function _initializeClusterLayer() {
  72411. var _this4 = this;
  72412. this.map.addSource(this.layerId, {
  72413. type: 'geojson',
  72414. data: this.data,
  72415. cluster: true,
  72416. clusterMaxZoom: this.options.maxZoom || 14,
  72417. clusterRadius: this.options.radius || 50
  72418. });
  72419. this.map.addLayer({
  72420. id: this.layerId,
  72421. type: 'circle',
  72422. source: this.layerId,
  72423. filter: ['has', 'point_count'],
  72424. paint: this.options.clusteredPointStyle && this.options.clusteredPointStyle.paint || {
  72425. 'circle-color': ['step', ['get', 'point_count'], '#51bbd6', 100, '#f1f075', 750, '#f28cb1'],
  72426. 'circle-radius': ['step', ['get', 'point_count'], 20, 100, 30, 750, 40]
  72427. }
  72428. }); // 聚合点文本 layer
  72429. this.map.addLayer({
  72430. id: 'count_' + this.layerId,
  72431. type: 'symbol',
  72432. source: this.layerId,
  72433. filter: ['has', 'point_count'],
  72434. layout: this.options.clusteredPointTextLayout || {
  72435. 'text-field': '{point_count_abbreviated}',
  72436. 'text-font': ['DIN Offc Pro Medium', 'Arial Unicode MS Bold'],
  72437. 'text-size': 12
  72438. }
  72439. }); // 未聚合点 layer
  72440. this.map.addLayer({
  72441. id: 'unclustered_point' + this.layerId,
  72442. type: 'circle',
  72443. source: this.layerId,
  72444. filter: ['!', ['has', 'point_count']],
  72445. paint: this.options.unclusteredPointStyle && this.options.unclusteredPointStyle.paint || {
  72446. 'circle-color': '#11b4da',
  72447. 'circle-radius': 4,
  72448. 'circle-stroke-width': 1,
  72449. 'circle-stroke-color': '#fff'
  72450. }
  72451. });
  72452. /**
  72453. * @event addcusterlayersucceeded
  72454. * @description 添加点聚合图层成功后触发。
  72455. * @property {Object} map - mapboxgl map 对象。
  72456. */
  72457. this.fire('addcusterlayersucceeded', {
  72458. map: this.map
  72459. });
  72460. this.map.on('click', this.layerId, function (e) {
  72461. var features = _this4.map.queryRenderedFeatures(e.point, {
  72462. layers: [_this4.layerId]
  72463. });
  72464. var clusterId = features[0].properties.cluster_id;
  72465. _this4.map.getSource(_this4.layerId).getClusterExpansionZoom(clusterId, function (err, zoom) {
  72466. if (err) return;
  72467. _this4.map.easeTo({
  72468. center: features[0].geometry.coordinates,
  72469. zoom: zoom
  72470. });
  72471. });
  72472. });
  72473. this.map.on('mouseenter', this.layerId, function () {
  72474. _this4.map.getCanvas().style.cursor = 'pointer';
  72475. });
  72476. this.map.on('mouseleave', this.layerId, function () {
  72477. _this4.map.getCanvas().style.cursor = '';
  72478. });
  72479. }
  72480. }, {
  72481. key: "removed",
  72482. value: function removed() {
  72483. var map = this.map,
  72484. layerId = this.layerId;
  72485. if (map && layerId && map.getSource(layerId)) {
  72486. map.getLayer(layerId) && map.removeLayer(layerId);
  72487. map.getLayer("count_".concat(layerId)) && map.removeLayer("count_".concat(layerId));
  72488. map.getLayer("unclustered_point".concat(layerId)) && map.removeLayer("unclustered_point".concat(layerId));
  72489. map.removeSource(layerId);
  72490. }
  72491. }
  72492. }]);
  72493. return ClusterLayerViewModel;
  72494. }(_mapboxGlEnhance.default.Evented);
  72495. exports.default = ClusterLayerViewModel;
  72496. /***/ }),
  72497. /***/ "f840":
  72498. /***/ (function(module, exports) {
  72499. module.exports = __WEBPACK_EXTERNAL_MODULE_f840__;
  72500. /***/ }),
  72501. /***/ "f875":
  72502. /***/ (function(module, exports, __webpack_require__) {
  72503. "use strict";
  72504. var _interopRequireWildcard = __webpack_require__("16ed");
  72505. var _interopRequireDefault = __webpack_require__("8e6d");
  72506. Object.defineProperty(exports, "__esModule", {
  72507. value: true
  72508. });
  72509. exports.default = void 0;
  72510. var _regenerator = _interopRequireDefault(__webpack_require__("849c"));
  72511. var _typeof2 = _interopRequireDefault(__webpack_require__("7ae5"));
  72512. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  72513. var _createClass2 = _interopRequireDefault(__webpack_require__("66f6"));
  72514. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("8377"));
  72515. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("c031"));
  72516. var _inherits2 = _interopRequireDefault(__webpack_require__("6b51"));
  72517. var _Events2 = __webpack_require__("e3e2");
  72518. var _util = __webpack_require__("1448");
  72519. var convert = _interopRequireWildcard(__webpack_require__("fc3a"));
  72520. var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
  72521. function adopt(value) {
  72522. return value instanceof P ? value : new P(function (resolve) {
  72523. resolve(value);
  72524. });
  72525. }
  72526. return new (P || (P = Promise))(function (resolve, reject) {
  72527. function fulfilled(value) {
  72528. try {
  72529. step(generator.next(value));
  72530. } catch (e) {
  72531. reject(e);
  72532. }
  72533. }
  72534. function rejected(value) {
  72535. try {
  72536. step(generator["throw"](value));
  72537. } catch (e) {
  72538. reject(e);
  72539. }
  72540. }
  72541. function step(result) {
  72542. result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
  72543. }
  72544. step((generator = generator.apply(thisArg, _arguments || [])).next());
  72545. });
  72546. };
  72547. var DEFAULT_WELLKNOWNSCALESET = ['GoogleCRS84Quad', 'GoogleMapsCompatible', 'urn:ogc:def:wkss:OGC:1.0:GoogleMapsCompatible', 'urn:ogc:def:wkss:OGC:1.0:GoogleCRS84Quad'];
  72548. var MB_SCALEDENOMINATOR_3857 = ['559082264.0287178', '279541132.0143589', '139770566.0071794', '69885283.00358972', '34942641.50179486', '17471320.75089743', '8735660.375448715', '4367830.1877224357', '2183915.093862179', '1091957.546931089', '545978.7734655447', '272989.3867327723', '136494.6933663862', '68247.34668319309', '34123.67334159654', '17061.83667079827', '8530.918335399136', '4265.459167699568', '2132.729583849784'];
  72549. var MB_SCALEDENOMINATOR_4326 = ['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'];
  72550. var WebMapService =
  72551. /*#__PURE__*/
  72552. function (_Events) {
  72553. (0, _inherits2.default)(WebMapService, _Events);
  72554. function WebMapService(mapId) {
  72555. var _this;
  72556. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  72557. (0, _classCallCheck2.default)(this, WebMapService);
  72558. _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(WebMapService).call(this));
  72559. _this.proxyOptions = {
  72560. data: 'apps/viewer/getUrlResource.json?url=',
  72561. image: 'apps/viewer/getUrlResource.png?url='
  72562. };
  72563. if (typeof mapId === 'string' || typeof mapId === 'number') {
  72564. _this.mapId = mapId;
  72565. } else if (mapId !== null && (0, _typeof2.default)(mapId) === 'object') {
  72566. _this.mapInfo = mapId;
  72567. }
  72568. _this.serverUrl = options.serverUrl || 'https://www.supermapol.com';
  72569. _this.accessToken = options.accessToken;
  72570. _this.accessKey = options.accessKey;
  72571. _this.tiandituKey = options.tiandituKey || '';
  72572. _this.withCredentials = options.withCredentials || false;
  72573. _this.excludePortalProxyUrl = options.excludePortalProxyUrl;
  72574. _this.iportalServiceProxyUrl = options.iportalServiceProxyUrlPrefix;
  72575. _this.proxy = options.proxy;
  72576. return _this;
  72577. }
  72578. (0, _createClass2.default)(WebMapService, [{
  72579. key: "setMapId",
  72580. value: function setMapId(mapId) {
  72581. this.mapId = mapId;
  72582. }
  72583. }, {
  72584. key: "setServerUrl",
  72585. value: function setServerUrl(serverUrl) {
  72586. this.serverUrl = serverUrl;
  72587. }
  72588. }, {
  72589. key: "setWithCredentials",
  72590. value: function setWithCredentials(withCredentials) {
  72591. this.withCredentials = withCredentials;
  72592. }
  72593. }, {
  72594. key: "setProxy",
  72595. value: function setProxy(proxy) {
  72596. this.proxy = proxy;
  72597. }
  72598. }, {
  72599. key: "handleServerUrl",
  72600. value: function handleServerUrl(serverUrl) {
  72601. var urlArr = serverUrl.split('');
  72602. if (urlArr[urlArr.length - 1] !== '/') {
  72603. serverUrl += '/';
  72604. }
  72605. this.serverUrl = serverUrl;
  72606. return serverUrl;
  72607. }
  72608. }, {
  72609. key: "getMapInfo",
  72610. value: function getMapInfo() {
  72611. var _this2 = this;
  72612. if (!this.mapId && this.mapInfo) {
  72613. return new Promise(function (resolve) {
  72614. resolve(_this2.mapInfo);
  72615. });
  72616. }
  72617. var mapUrl = this._handleMapUrl();
  72618. return new Promise(function (resolve, reject) {
  72619. return __awaiter(_this2, void 0, void 0,
  72620. /*#__PURE__*/
  72621. _regenerator.default.mark(function _callee() {
  72622. return _regenerator.default.wrap(function _callee$(_context) {
  72623. while (1) {
  72624. switch (_context.prev = _context.next) {
  72625. case 0:
  72626. _context.prev = 0;
  72627. _context.next = 3;
  72628. return this.getiPortalServiceProxy();
  72629. case 3:
  72630. SuperMap.FetchRequest.get(mapUrl, null, {
  72631. withCredentials: this.withCredentials
  72632. }).then(function (response) {
  72633. return response.json();
  72634. }).then(function (mapInfo) {
  72635. if (mapInfo && mapInfo.succeed === false) {
  72636. var error = {
  72637. message: mapInfo && mapInfo.error && mapInfo.error.errorMsg
  72638. };
  72639. reject(error);
  72640. return;
  72641. }
  72642. mapInfo.mapParams = {
  72643. title: mapInfo.title,
  72644. description: mapInfo.description
  72645. };
  72646. resolve(mapInfo);
  72647. }).catch(function (error) {
  72648. reject(error);
  72649. });
  72650. _context.next = 9;
  72651. break;
  72652. case 6:
  72653. _context.prev = 6;
  72654. _context.t0 = _context["catch"](0);
  72655. reject(_context.t0);
  72656. case 9:
  72657. case "end":
  72658. return _context.stop();
  72659. }
  72660. }
  72661. }, _callee, this, [[0, 6]]);
  72662. }));
  72663. });
  72664. }
  72665. }, {
  72666. key: "getiPortalServiceProxy",
  72667. value: function getiPortalServiceProxy() {
  72668. var _this3 = this;
  72669. return new Promise(function (resolve, reject) {
  72670. SuperMap.FetchRequest.get("".concat(_this3.serverUrl, "web/config/portal.json"), {
  72671. scope: ['serviceProxy']
  72672. }).then(function (response) {
  72673. return response.json();
  72674. }).then(function (serviceProxyInfo) {
  72675. if (!serviceProxyInfo || !serviceProxyInfo.serviceProxy) {
  72676. reject('serviceProxyFailed');
  72677. return;
  72678. }
  72679. var serviceProxy = serviceProxyInfo.serviceProxy;
  72680. if (serviceProxy.enable) {
  72681. if (serviceProxy.proxyServerRootUrl) {
  72682. _this3.iportalServiceProxyUrl = serviceProxy.proxyServerRootUrl;
  72683. } else if (serviceProxy.port && serviceProxy.rootUrlPostfix) {
  72684. _this3.iportalServiceProxyUrl = "".concat(serviceProxy.port, "/").concat(serviceProxy.rootUrlPostfix);
  72685. }
  72686. if (_this3.serverUrl.indexOf(_this3.iportalServiceProxyUrl) > -1) {
  72687. _this3.iportalServiceProxyUrl = '';
  72688. }
  72689. }
  72690. resolve(serviceProxy);
  72691. }).catch(function (error) {
  72692. reject(error);
  72693. });
  72694. });
  72695. }
  72696. }, {
  72697. key: "getLayerFeatures",
  72698. value: function getLayerFeatures(type, layer, baseProjection) {
  72699. var pro;
  72700. switch (type) {
  72701. case 'hosted':
  72702. pro = this._getFeaturesFromHosted(layer, baseProjection);
  72703. break;
  72704. case 'rest_data':
  72705. pro = this._getFeaturesFromRestData(layer);
  72706. break;
  72707. case 'rest_map':
  72708. pro = this._getFeaturesFromRestMap(layer);
  72709. break;
  72710. case 'dataflow':
  72711. pro = this._getFeaturesFromDataflow(layer);
  72712. break;
  72713. case 'user_data':
  72714. pro = this._getFeaturesFromUserData(layer);
  72715. break;
  72716. }
  72717. return pro;
  72718. }
  72719. }, {
  72720. key: "getWmtsInfo",
  72721. value: function getWmtsInfo(layerInfo, mapCRS) {
  72722. var _this4 = this;
  72723. return new Promise(function (resolve, reject) {
  72724. var isMatched = false;
  72725. var matchMaxZoom = 22;
  72726. var style = '';
  72727. var bounds;
  72728. var restResourceURL = '';
  72729. var kvpResourceUrl = '';
  72730. var proxy = _this4.handleProxy();
  72731. SuperMap.FetchRequest.get("".concat(layerInfo.url.split('?')[0], "?REQUEST=GetCapabilities&SERVICE=WMTS&VERSION=1.0.0"), null, {
  72732. withCredentials: _this4.handleWithCredentials(proxy, layerInfo.url, false),
  72733. withoutFormatSuffix: true,
  72734. proxy: proxy
  72735. }).then(function (response) {
  72736. return response.text();
  72737. }).then(function (capabilitiesText) {
  72738. var converts = convert || window.convert;
  72739. var capabilities = JSON.parse(converts.xml2json(capabilitiesText, {
  72740. compact: true,
  72741. spaces: 4
  72742. })).Capabilities;
  72743. var content = capabilities.Contents;
  72744. var metaData = capabilities['ows:OperationsMetadata'];
  72745. if (metaData) {
  72746. var operations = metaData['ows:Operation'];
  72747. if (!Array.isArray(operations)) {
  72748. operations = [operations];
  72749. }
  72750. var operation = operations.find(function (item) {
  72751. return item._attributes.name === 'GetTile';
  72752. });
  72753. if (operation) {
  72754. var getConstraints = operation['ows:DCP']['ows:HTTP']['ows:Get'];
  72755. if (!Array.isArray(getConstraints)) {
  72756. getConstraints = [getConstraints];
  72757. }
  72758. var getConstraint = getConstraints.find(function (item) {
  72759. return item['ows:Constraint']['ows:AllowedValues']['ows:Value']['_text'] === 'KVP';
  72760. });
  72761. if (getConstraint) {
  72762. kvpResourceUrl = getConstraint['_attributes']['xlink:href'];
  72763. }
  72764. }
  72765. }
  72766. var tileMatrixSet = content.TileMatrixSet;
  72767. for (var i = 0; i < tileMatrixSet.length; i++) {
  72768. if (tileMatrixSet[i]['ows:Identifier'] && tileMatrixSet[i]['ows:Identifier']['_text'] === layerInfo.tileMatrixSet) {
  72769. if (tileMatrixSet[i]['WellKnownScaleSet'] && DEFAULT_WELLKNOWNSCALESET.includes(tileMatrixSet[i]['WellKnownScaleSet']['_text'])) {
  72770. isMatched = true;
  72771. } else {
  72772. var matchedScaleDenominator = [];
  72773. var defaultCRSScaleDenominators = mapCRS === 'EPSG:3857' ? MB_SCALEDENOMINATOR_3857 : MB_SCALEDENOMINATOR_4326;
  72774. for (var j = 0, len = defaultCRSScaleDenominators.length; j < len; j++) {
  72775. if (!tileMatrixSet[i].TileMatrix[j]) {
  72776. break;
  72777. }
  72778. if (parseFloat(defaultCRSScaleDenominators[j]) !== parseFloat(tileMatrixSet[i].TileMatrix[j]['ScaleDenominator']['_text'])) {
  72779. break;
  72780. }
  72781. matchedScaleDenominator.push(defaultCRSScaleDenominators[j]);
  72782. }
  72783. matchMaxZoom = matchedScaleDenominator.length - 1;
  72784. if (matchedScaleDenominator.length !== 0) {
  72785. isMatched = true;
  72786. } else {
  72787. throw Error('TileMatrixSetNotSuppport');
  72788. }
  72789. }
  72790. break;
  72791. }
  72792. }
  72793. var layer = content.Layer.find(function (item) {
  72794. return item['ows:Identifier']['_text'] === layerInfo.layer;
  72795. });
  72796. if (layer) {
  72797. var styles = layer.Style;
  72798. if (Array.isArray(layer.Style)) {
  72799. style = styles[0]['ows:Identifier'] ? styles[0]['ows:Identifier']['_text'] : '';
  72800. } else {
  72801. style = styles['ows:Identifier'] ? styles['ows:Identifier']['_text'] : '';
  72802. }
  72803. if (layer['ows:WGS84BoundingBox']) {
  72804. var lowerCorner = layer['ows:WGS84BoundingBox']['ows:LowerCorner']['_text'].split(' ');
  72805. var upperCorner = layer['ows:WGS84BoundingBox']['ows:UpperCorner']['_text'].split(' ');
  72806. bounds = [parseFloat(lowerCorner[0]), parseFloat(lowerCorner[1]), parseFloat(upperCorner[0]), parseFloat(upperCorner[1])];
  72807. }
  72808. var resourceUrls = layer.ResourceURL;
  72809. if (!Array.isArray(resourceUrls)) {
  72810. resourceUrls = [resourceUrls];
  72811. }
  72812. var resourceUrl = resourceUrls.find(function (item) {
  72813. return item._attributes.resourceType === 'tile';
  72814. });
  72815. if (resourceUrl) {
  72816. restResourceURL = resourceUrl._attributes.template;
  72817. }
  72818. }
  72819. resolve({
  72820. isMatched: isMatched,
  72821. matchMaxZoom: matchMaxZoom,
  72822. style: style,
  72823. bounds: bounds,
  72824. restResourceURL: restResourceURL,
  72825. kvpResourceUrl: kvpResourceUrl
  72826. });
  72827. }).catch(function (error) {
  72828. reject(error);
  72829. });
  72830. });
  72831. }
  72832. }, {
  72833. key: "_getFeaturesFromHosted",
  72834. value: function _getFeaturesFromHosted(layer, baseProjection) {
  72835. var dataSource = layer.dataSource,
  72836. layerType = layer.layerType;
  72837. var serverId = dataSource ? dataSource.serverId : layer.serverId;
  72838. if (!serverId) {
  72839. return new Promise(function (resolve, reject) {
  72840. resolve({
  72841. type: 'noServerId'
  72842. });
  72843. });
  72844. }
  72845. var getDataFromIportal = layerType === 'MARKER' || dataSource && (!dataSource.accessType || dataSource.accessType === 'DIRECT');
  72846. if (getDataFromIportal) {
  72847. return this._getDataFromIportal(serverId, layer);
  72848. } else {
  72849. return this._getDataFromHosted({
  72850. layer: layer,
  72851. serverId: serverId,
  72852. baseProjection: baseProjection
  72853. });
  72854. }
  72855. }
  72856. }, {
  72857. key: "_getFeaturesFromRestData",
  72858. value: function _getFeaturesFromRestData(layer) {
  72859. var _this5 = this;
  72860. var features;
  72861. var dataSource = layer.dataSource;
  72862. return new Promise(function (resolve, reject) {
  72863. _this5._getFeatureBySQL(dataSource.url, [dataSource.dataSourceName || layer.name], function (result) {
  72864. features = _this5.parseGeoJsonData2Feature({
  72865. allDatas: {
  72866. features: result.result.features.features
  72867. }
  72868. });
  72869. resolve({
  72870. type: 'feature',
  72871. features: features
  72872. });
  72873. }, function (err) {
  72874. reject(err);
  72875. });
  72876. });
  72877. }
  72878. }, {
  72879. key: "_getFeaturesFromRestMap",
  72880. value: function _getFeaturesFromRestMap(layer) {
  72881. var _this6 = this;
  72882. return new Promise(function (resolve, reject) {
  72883. _this6._queryFeatureBySQL(layer.dataSource.url, layer.dataSource.layerName, function (result) {
  72884. var recordsets = result && result.result.recordsets;
  72885. var recordset = recordsets && recordsets[0];
  72886. var attributes = recordset.fields;
  72887. if (recordset && attributes) {
  72888. var fileterAttrs = [];
  72889. for (var i in attributes) {
  72890. var value = attributes[i];
  72891. if (value.indexOf('Sm') !== 0 || value === 'SmID') {
  72892. fileterAttrs.push(value);
  72893. }
  72894. }
  72895. _this6._getFeatures(fileterAttrs, layer, function (features) {
  72896. resolve({
  72897. type: 'feature',
  72898. features: features
  72899. });
  72900. }, function (err) {
  72901. reject(err);
  72902. });
  72903. }
  72904. }, function (err) {
  72905. reject(err);
  72906. }, 'smid=1');
  72907. });
  72908. }
  72909. }, {
  72910. key: "_getFeaturesFromUserData",
  72911. value: function _getFeaturesFromUserData(layer) {
  72912. var _this7 = this;
  72913. var dataSource = layer.dataSource;
  72914. return new Promise(function (resolve, reject) {
  72915. var proxy = _this7.handleProxy();
  72916. SuperMap.FetchRequest.get(dataSource.url, null, {
  72917. withCredentials: _this7.handleWithCredentials(proxy, dataSource.url, _this7.withCredentials),
  72918. proxy: proxy
  72919. }).then(function (response) {
  72920. return response.json();
  72921. }).then(function (data) {
  72922. var features;
  72923. if (data && data instanceof Object && data.type === 'FeatureCollection') {
  72924. features = data.features;
  72925. } else {
  72926. features = data;
  72927. }
  72928. features = _this7.parseGeoJsonData2Feature({
  72929. allDatas: {
  72930. features: features
  72931. }
  72932. });
  72933. resolve({
  72934. type: 'feature',
  72935. features: features
  72936. });
  72937. }).catch(function (err) {
  72938. reject(err);
  72939. });
  72940. });
  72941. }
  72942. }, {
  72943. key: "_queryFeatureBySQL",
  72944. value: function _queryFeatureBySQL(url, layerName, _processCompleted, processFaild, attributeFilter, fields, epsgCode, startRecord, recordLength, onlyAttribute) {
  72945. var queryBySQLParams = this._getQueryFeaturesParam(layerName, attributeFilter, fields, epsgCode, startRecord, recordLength, onlyAttribute);
  72946. var proxy = this.handleProxy();
  72947. var queryBySQLService = new SuperMap.QueryBySQLService(url, {
  72948. proxy: proxy,
  72949. withCredentials: this.handleWithCredentials(proxy, url, false),
  72950. eventListeners: {
  72951. processCompleted: function processCompleted(data) {
  72952. _processCompleted && _processCompleted(data);
  72953. },
  72954. processFailed: function processFailed(data) {
  72955. processFaild && processFaild(data);
  72956. }
  72957. }
  72958. });
  72959. queryBySQLService.processAsync(queryBySQLParams);
  72960. }
  72961. }, {
  72962. key: "_getFeatures",
  72963. value: function _getFeatures(fields, layerInfo, resolve, reject) {
  72964. var _this8 = this;
  72965. var source = layerInfo.dataSource;
  72966. this._queryFeatureBySQL(source.url, source.layerName, function (result) {
  72967. var recordsets = result.result.recordsets[0];
  72968. var features = recordsets.features.features;
  72969. var featuresObj = _this8.parseGeoJsonData2Feature({
  72970. allDatas: {
  72971. features: features
  72972. }
  72973. });
  72974. resolve(featuresObj);
  72975. }, function (err) {
  72976. reject(err);
  72977. }, null, fields);
  72978. }
  72979. }, {
  72980. key: "_getQueryFeaturesParam",
  72981. value: function _getQueryFeaturesParam(layerName, attributeFilter, fields, epsgCode, startRecord, recordLength, onlyAttribute) {
  72982. var queryParam = new SuperMap.FilterParameter({
  72983. name: layerName,
  72984. attributeFilter: attributeFilter
  72985. });
  72986. if (fields) {
  72987. queryParam.fields = fields;
  72988. }
  72989. var params = {
  72990. queryParams: [queryParam]
  72991. };
  72992. if (onlyAttribute) {
  72993. params.queryOption = SuperMap.QueryOption.ATTRIBUTE;
  72994. }
  72995. startRecord && (params.startRecord = startRecord);
  72996. recordLength && (params.expectCount = recordLength);
  72997. if (epsgCode) {
  72998. params.prjCoordSys = {
  72999. epsgCode: epsgCode
  73000. };
  73001. }
  73002. var queryBySQLParams = new SuperMap.QueryBySQLParameters(params);
  73003. return queryBySQLParams;
  73004. }
  73005. }, {
  73006. key: "_getFeaturesFromDataflow",
  73007. value: function _getFeaturesFromDataflow(layer) {
  73008. var _this9 = this;
  73009. return new Promise(function (resolve, reject) {
  73010. _this9._getDataflowInfo(layer, function () {
  73011. resolve({
  73012. type: 'dataflow'
  73013. });
  73014. }, function (e) {
  73015. reject(e);
  73016. });
  73017. });
  73018. }
  73019. }, {
  73020. key: "_getDataflowInfo",
  73021. value: function _getDataflowInfo(layerInfo, success, faild) {
  73022. var url = layerInfo.url,
  73023. token;
  73024. var requestUrl = "".concat(url, ".json");
  73025. if (layerInfo.credential && layerInfo.credential.token) {
  73026. token = layerInfo.credential.token;
  73027. requestUrl += "?token=".concat(token);
  73028. }
  73029. var proxy = this.handleProxy();
  73030. SuperMap.FetchRequest.get(requestUrl, null, {
  73031. proxy: proxy,
  73032. withCredentials: this.handleWithCredentials(proxy, requestUrl, false)
  73033. }).then(function (response) {
  73034. return response.json();
  73035. }).then(function (result) {
  73036. if (!result) {
  73037. faild();
  73038. return;
  73039. }
  73040. if (result.featureMetaData) {
  73041. layerInfo.featureType = result.featureMetaData.featureType.toUpperCase();
  73042. layerInfo.dataSource = {
  73043. dataTypes: {}
  73044. };
  73045. if (result.featureMetaData.fieldInfos && result.featureMetaData.fieldInfos.length > 0) {
  73046. result.featureMetaData.fieldInfos.forEach(function (data) {
  73047. var name = data.name.trim();
  73048. if (data.type === 'TEXT') {
  73049. layerInfo.dataSource.dataTypes[name] = 'STRING';
  73050. } else if (['DOUBLE', 'INT', 'FLOAT', 'LONG', 'SHORT'].includes(data.type)) {
  73051. layerInfo.dataSource.dataTypes[name] = 'NUMBER';
  73052. } else {
  73053. layerInfo.dataSource.dataTypes[name] = 'UNKNOWN';
  73054. }
  73055. });
  73056. }
  73057. }
  73058. layerInfo.wsUrl = result.urls[0].url;
  73059. layerInfo.name = result.urls[0].url.split('iserver/services/')[1].split('/dataflow')[0];
  73060. success();
  73061. }).catch(function () {
  73062. faild();
  73063. });
  73064. }
  73065. }, {
  73066. key: "getDatasourceType",
  73067. value: function getDatasourceType(layer) {
  73068. var dataSource = layer.dataSource,
  73069. layerType = layer.layerType;
  73070. if (dataSource && dataSource.type === 'SAMPLE_DATA') {
  73071. return dataSource.type;
  73072. }
  73073. var type;
  73074. var isHosted = dataSource && dataSource.serverId || layerType === 'MARKER' || layerType === 'HOSTED_TILE';
  73075. var isTile = layerType === 'SUPERMAP_REST' || layerType === 'TILE' || layerType === 'WMS' || layerType === 'WMTS' || layerType === 'MAPBOXSTYLE';
  73076. if (isHosted) {
  73077. type = 'hosted';
  73078. } else if (isTile) {
  73079. type = 'tile';
  73080. } else if (dataSource && dataSource.type === 'REST_DATA') {
  73081. type = 'rest_data';
  73082. } else if (dataSource && dataSource.type === 'REST_MAP' && dataSource.url) {
  73083. type = 'rest_map';
  73084. } else if (layerType === 'DATAFLOW_POINT_TRACK' || layerType === 'DATAFLOW_HEAT') {
  73085. type = 'dataflow';
  73086. } else if (dataSource && dataSource.type === 'USER_DATA') {
  73087. type = 'user_data';
  73088. }
  73089. return type;
  73090. }
  73091. }, {
  73092. key: "getFeatureProperties",
  73093. value: function getFeatureProperties(features) {
  73094. var properties = [];
  73095. if (features && features.length) {
  73096. features.forEach(function (feature) {
  73097. var property = feature.properties;
  73098. property && properties.push(property);
  73099. });
  73100. }
  73101. return properties;
  73102. }
  73103. }, {
  73104. key: "parseGeoJsonData2Feature",
  73105. value: function parseGeoJsonData2Feature(metaData) {
  73106. var allFeatures = metaData.allDatas.features;
  73107. var features = [];
  73108. for (var i = 0, len = allFeatures.length; i < len; i++) {
  73109. var feature = allFeatures[i];
  73110. var coordinate = feature.geometry.coordinates;
  73111. if (allFeatures[i].geometry.type === 'Point') {
  73112. if (allFeatures[i].properties) {
  73113. allFeatures[i].properties.lon = coordinate[0];
  73114. allFeatures[i].properties.lat = coordinate[1];
  73115. }
  73116. }
  73117. feature.properties['index'] = i + '';
  73118. features.push(feature);
  73119. }
  73120. return features;
  73121. }
  73122. }, {
  73123. key: "_getDataFromIportal",
  73124. value: function _getDataFromIportal(serverId, layerInfo) {
  73125. var _this10 = this;
  73126. var features;
  73127. var url = "".concat(this.serverUrl, "web/datas/").concat(serverId, "/content.json?pageSize=9999999&currentPage=1");
  73128. if (this.accessToken) {
  73129. url = "".concat(url, "&").concat(this.accessKey, "=").concat(this.accessToken);
  73130. }
  73131. return new Promise(function (resolve, reject) {
  73132. var proxy = _this10.handleProxy();
  73133. SuperMap.FetchRequest.get(url, null, {
  73134. withCredentials: _this10.handleWithCredentials(proxy, url, _this10.withCredentials),
  73135. proxy: proxy
  73136. }).then(function (response) {
  73137. return response.json();
  73138. }).then(function (data) {
  73139. return __awaiter(_this10, void 0, void 0,
  73140. /*#__PURE__*/
  73141. _regenerator.default.mark(function _callee2() {
  73142. var _layerInfo$dataSource, divisionType, divisionField, geojson;
  73143. return _regenerator.default.wrap(function _callee2$(_context2) {
  73144. while (1) {
  73145. switch (_context2.prev = _context2.next) {
  73146. case 0:
  73147. if (data.succeed === false) {
  73148. reject(data.error);
  73149. }
  73150. if (!(data && data.type)) {
  73151. _context2.next = 19;
  73152. break;
  73153. }
  73154. if (!(data.type === 'JSON' || data.type === 'GEOJSON')) {
  73155. _context2.next = 7;
  73156. break;
  73157. }
  73158. data.content = JSON.parse(data.content.trim());
  73159. features = this._formatGeoJSON(data.content);
  73160. _context2.next = 18;
  73161. break;
  73162. case 7:
  73163. if (!(data.type === 'EXCEL' || data.type === 'CSV')) {
  73164. _context2.next = 18;
  73165. break;
  73166. }
  73167. if (!(layerInfo.dataSource && layerInfo.dataSource.administrativeInfo)) {
  73168. _context2.next = 17;
  73169. break;
  73170. }
  73171. data.content.rows.unshift(data.content.colTitles);
  73172. _layerInfo$dataSource = layerInfo.dataSource.administrativeInfo, divisionType = _layerInfo$dataSource.divisionType, divisionField = _layerInfo$dataSource.divisionField;
  73173. _context2.next = 13;
  73174. return this._excelData2FeatureByDivision(data.content, divisionType, divisionField);
  73175. case 13:
  73176. geojson = _context2.sent;
  73177. features = this._formatGeoJSON(geojson);
  73178. _context2.next = 18;
  73179. break;
  73180. case 17:
  73181. features = this._excelData2Feature(data.content, layerInfo && layerInfo.xyField || {});
  73182. case 18:
  73183. resolve({
  73184. type: 'feature',
  73185. features: features
  73186. });
  73187. case 19:
  73188. case "end":
  73189. return _context2.stop();
  73190. }
  73191. }
  73192. }, _callee2, this);
  73193. }));
  73194. }).catch(function (error) {
  73195. reject(error);
  73196. });
  73197. });
  73198. }
  73199. }, {
  73200. key: "_getDataFromHosted",
  73201. value: function _getDataFromHosted(_ref) {
  73202. var _this11 = this;
  73203. var layer = _ref.layer,
  73204. serverId = _ref.serverId,
  73205. baseProjection = _ref.baseProjection;
  73206. var isMapService = layer.layerType === 'HOSTED_TILE';
  73207. return new Promise(function (resolve, reject) {
  73208. _this11._checkUploadToRelationship(serverId).then(function (result) {
  73209. if (result && result.length > 0) {
  73210. var datasetName = result[0].name,
  73211. featureType = result[0].type.toUpperCase();
  73212. _this11._getDataService(serverId, datasetName).then(function (data) {
  73213. var dataItemServices = data.dataItemServices;
  73214. if (dataItemServices.length === 0) {
  73215. reject('noDataServices');
  73216. }
  73217. var param = {
  73218. layer: layer,
  73219. dataItemServices: dataItemServices,
  73220. datasetName: datasetName,
  73221. featureType: featureType,
  73222. resolve: resolve,
  73223. reject: reject,
  73224. baseProjection: baseProjection
  73225. };
  73226. if (isMapService) {
  73227. var dataService = dataItemServices.filter(function (info) {
  73228. return info && info.serviceType === 'RESTDATA';
  73229. })[0];
  73230. _this11._isMvt(dataService.address, datasetName, baseProjection).then(function (info) {
  73231. _this11._getServiceInfoFromLayer(param, info);
  73232. }).catch(function () {
  73233. _this11._getServiceInfoFromLayer(param);
  73234. });
  73235. } else {
  73236. _this11._getServiceInfoFromLayer(param);
  73237. }
  73238. });
  73239. } else {
  73240. reject('resultIsEmpty');
  73241. }
  73242. }).catch(function (error) {
  73243. reject(error);
  73244. });
  73245. });
  73246. }
  73247. }, {
  73248. key: "_isMvt",
  73249. value: function _isMvt(serviceUrl, datasetName, baseProjection) {
  73250. return this._getDatasetsInfo(serviceUrl, datasetName).then(function (info) {
  73251. if (info.epsgCode == baseProjection.split('EPSG:')[1]) {
  73252. return SuperMap.FetchRequest.get("".concat(info.url, "/tilefeature.mvt")).then(function (response) {
  73253. return response.json();
  73254. }).then(function (result) {
  73255. info.isMvt = result.error && result.error.code === 400;
  73256. return info;
  73257. }).catch(function () {
  73258. return info;
  73259. });
  73260. }
  73261. return info;
  73262. });
  73263. }
  73264. }, {
  73265. key: "_getServiceInfoFromLayer",
  73266. value: function _getServiceInfoFromLayer(_ref2, info) {
  73267. var _this12 = this;
  73268. var layer = _ref2.layer,
  73269. dataItemServices = _ref2.dataItemServices,
  73270. datasetName = _ref2.datasetName,
  73271. featureType = _ref2.featureType,
  73272. resolve = _ref2.resolve,
  73273. reject = _ref2.reject,
  73274. baseProjection = _ref2.baseProjection;
  73275. var isMapService = info ? !info.isMvt : layer.layerType === 'HOSTED_TILE',
  73276. isAdded = false;
  73277. dataItemServices.forEach(function (service, index) {
  73278. if (isAdded) {
  73279. return;
  73280. }
  73281. if (service && isMapService && service.serviceType === 'RESTMAP') {
  73282. isAdded = true;
  73283. _this12._getTileLayerInfo(service.address, baseProjection).then(function (restMaps) {
  73284. resolve({
  73285. type: 'restMap',
  73286. restMaps: restMaps
  73287. });
  73288. });
  73289. } else if (service && !isMapService && service.serviceType === 'RESTDATA') {
  73290. if (info && info.isMvt) {
  73291. resolve({
  73292. type: 'mvt',
  73293. info: info,
  73294. featureType: featureType
  73295. });
  73296. } else {
  73297. isAdded = true;
  73298. _this12._getDatasources(service.address).then(function (datasourceName) {
  73299. layer.dataSource.dataSourceName = datasourceName + ':' + datasetName;
  73300. layer.dataSource.url = "".concat(service.address, "/data");
  73301. _this12._getFeatureBySQL(layer.dataSource.url, [layer.dataSource.dataSourceName || layer.name], function (result) {
  73302. var features = _this12.parseGeoJsonData2Feature({
  73303. allDatas: {
  73304. features: result.result.features.features
  73305. }
  73306. });
  73307. resolve({
  73308. type: 'feature',
  73309. features: features
  73310. });
  73311. }, function (err) {
  73312. reject(err);
  73313. });
  73314. }, function (err) {
  73315. reject(err);
  73316. });
  73317. }
  73318. }
  73319. }, this);
  73320. if (!isAdded) {
  73321. reject('noService');
  73322. }
  73323. }
  73324. }, {
  73325. key: "_getDatasetsInfo",
  73326. value: function _getDatasetsInfo(serviceUrl, datasetName) {
  73327. var _this13 = this;
  73328. return this._getDatasources(serviceUrl).then(function (datasourceName) {
  73329. var url = "".concat(serviceUrl, "/data/datasources/").concat(datasourceName, "/datasets/").concat(datasetName);
  73330. var proxy = _this13.handleProxy();
  73331. return SuperMap.FetchRequest.get(url, null, {
  73332. withCredentials: _this13.handleWithCredentials(proxy, url, false),
  73333. proxy: proxy
  73334. }).then(function (response) {
  73335. return response.json();
  73336. }).then(function (datasetsInfo) {
  73337. return {
  73338. epsgCode: datasetsInfo.datasetInfo.prjCoordSys.epsgCode,
  73339. bounds: datasetsInfo.datasetInfo.bounds,
  73340. datasourceName: datasourceName,
  73341. datasetName: datasetName,
  73342. url: url
  73343. };
  73344. });
  73345. });
  73346. }
  73347. }, {
  73348. key: "_getDatasources",
  73349. value: function _getDatasources(url) {
  73350. var proxy = this.handleProxy();
  73351. var serviceUrl = "".concat(url, "/data/datasources.json");
  73352. return SuperMap.FetchRequest.get(serviceUrl, null, {
  73353. withCredentials: this.handleWithCredentials(proxy, serviceUrl, false),
  73354. proxy: proxy
  73355. }).then(function (response) {
  73356. return response.json();
  73357. }).then(function (datasource) {
  73358. if (datasource.code === 401) {
  73359. throw Error(datasource.errorMsg);
  73360. }
  73361. var datasourceNames = datasource.datasourceNames;
  73362. return datasourceNames[0];
  73363. });
  73364. }
  73365. }, {
  73366. key: "_getDataService",
  73367. value: function _getDataService(fileId, datasetName) {
  73368. var proxy = this.handleProxy();
  73369. var serviceUrl = "".concat(this.serverUrl, "web/datas/").concat(fileId, ".json");
  73370. return SuperMap.FetchRequest.get(serviceUrl, null, {
  73371. withCredentials: this.handleWithCredentials(proxy, serviceUrl, this.withCredentials),
  73372. proxy: proxy
  73373. }).then(function (response) {
  73374. return response.json();
  73375. }).then(function (result) {
  73376. result.fileId = fileId;
  73377. result.datasetName = datasetName;
  73378. return result;
  73379. });
  73380. }
  73381. }, {
  73382. key: "_checkUploadToRelationship",
  73383. value: function _checkUploadToRelationship(fileId) {
  73384. var proxy = this.handleProxy();
  73385. var serviceUrl = "".concat(this.serverUrl, "web/datas/").concat(fileId, "/datasets.json");
  73386. return SuperMap.FetchRequest.get(serviceUrl, null, {
  73387. withCredentials: this.handleWithCredentials(proxy, serviceUrl, this.withCredentials),
  73388. proxy: proxy
  73389. }).then(function (response) {
  73390. return response.json();
  73391. }).then(function (result) {
  73392. return result;
  73393. });
  73394. }
  73395. }, {
  73396. key: "_handleMapUrl",
  73397. value: function _handleMapUrl() {
  73398. var mapUrl = this.serverUrl + 'web/maps/' + this.mapId + '/map';
  73399. if (this.accessToken || this.accessKey) {
  73400. mapUrl += true ? 'token=' + this.accessToken : undefined;
  73401. }
  73402. var filter = 'getUrlResource.json?url=';
  73403. if (this.excludePortalProxyUrl && this.serverUrl.indexOf(filter) > -1) {
  73404. var urlArray = this.serverUrl.split(filter);
  73405. if (urlArray.length > 1) {
  73406. mapUrl = urlArray[0] + filter + this.serverUrl + 'web/maps/' + this.mapId + '/map.json';
  73407. }
  73408. }
  73409. mapUrl = mapUrl.indexOf('.json') === -1 ? "".concat(mapUrl, ".json") : mapUrl;
  73410. return mapUrl;
  73411. }
  73412. }, {
  73413. key: "handleProxy",
  73414. value: function handleProxy(type) {
  73415. if (!this.proxy) {
  73416. return null;
  73417. }
  73418. var proxySuffix = this.proxyOptions[type || 'data'];
  73419. var proxy = this.serverUrl + proxySuffix;
  73420. if (typeof this.proxy === 'string') {
  73421. proxy = this.proxy;
  73422. }
  73423. return proxy;
  73424. }
  73425. }, {
  73426. key: "handleWithCredentials",
  73427. value: function handleWithCredentials(proxyUrl, serviceUrl) {
  73428. var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.withCredentials;
  73429. if (proxyUrl && proxyUrl.startsWith(this.serverUrl) && (!serviceUrl || serviceUrl.startsWith(proxyUrl))) {
  73430. return true;
  73431. }
  73432. if (serviceUrl && this.iportalServiceProxyUrl && serviceUrl.indexOf(this.iportalServiceProxyUrl) >= 0) {
  73433. return true;
  73434. }
  73435. return defaultValue;
  73436. }
  73437. }, {
  73438. key: "_formatGeoJSON",
  73439. value: function _formatGeoJSON(data) {
  73440. var features = data.features;
  73441. features.forEach(function (row, index) {
  73442. row.properties['index'] = index;
  73443. });
  73444. return features;
  73445. }
  73446. }, {
  73447. key: "_excelData2Feature",
  73448. value: function _excelData2Feature(dataContent) {
  73449. var xyField = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  73450. var fieldCaptions = dataContent.colTitles;
  73451. var xfieldIndex = fieldCaptions.indexOf(xyField.xField);
  73452. var yfieldIndex = fieldCaptions.indexOf(xyField.yField);
  73453. if (yfieldIndex < 0 || xfieldIndex < 0) {
  73454. for (var i = 0, len = fieldCaptions.length; i < len; i++) {
  73455. if ((0, _util.isXField)(fieldCaptions[i])) {
  73456. xfieldIndex = i;
  73457. }
  73458. if ((0, _util.isYField)(fieldCaptions[i])) {
  73459. yfieldIndex = i;
  73460. }
  73461. }
  73462. }
  73463. var features = [];
  73464. for (var _i = 0, _len = dataContent.rows.length; _i < _len; _i++) {
  73465. var row = dataContent.rows[_i];
  73466. var x = Number(row[xfieldIndex]);
  73467. var y = Number(row[yfieldIndex]);
  73468. var attributes = {};
  73469. for (var index in dataContent.colTitles) {
  73470. var key = dataContent.colTitles[index];
  73471. attributes[key] = dataContent.rows[_i][index];
  73472. }
  73473. attributes['index'] = _i + '';
  73474. var feature = {
  73475. type: 'Feature',
  73476. geometry: {
  73477. type: 'Point',
  73478. coordinates: [x, y]
  73479. },
  73480. properties: attributes
  73481. };
  73482. features.push(feature);
  73483. }
  73484. return features;
  73485. }
  73486. }, {
  73487. key: "_excelData2FeatureByDivision",
  73488. value: function _excelData2FeatureByDivision(content, divisionType, divisionField) {
  73489. var _this14 = this;
  73490. var dataName = ['城市', 'City'].includes(divisionType) ? 'MunicipalData' : 'ProvinceData';
  73491. if (window[dataName] && window[dataName].features) {
  73492. return new Promise(function (resolve) {
  73493. resolve(_this14._combineFeature(content, window[dataName], divisionField));
  73494. });
  73495. }
  73496. var dataFileName = ['城市', 'City'].includes(divisionType) ? 'MunicipalData.js' : 'ProvincialData.js';
  73497. var proxy = this.handleProxy();
  73498. var dataUrl = "".concat(this.serverUrl, "apps/dataviz/libs/administrative_data/").concat(dataFileName);
  73499. return SuperMap.FetchRequest.get(dataUrl, null, {
  73500. withCredentials: this.handleWithCredentials(proxy, dataUrl, this.withCredentials),
  73501. proxy: proxy,
  73502. withoutFormatSuffix: true
  73503. }).then(function (response) {
  73504. return response.text();
  73505. }).then(function (result) {
  73506. new Function(result)();
  73507. return _this14._combineFeature(content, window[dataName], divisionField);
  73508. });
  73509. }
  73510. }, {
  73511. key: "_combineFeature",
  73512. value: function _combineFeature(properties, geoData, divisionField) {
  73513. var _this15 = this;
  73514. var geojson = {
  73515. type: 'FeatureCollection',
  73516. features: []
  73517. };
  73518. if (properties.length < 2) {
  73519. return geojson;
  73520. }
  73521. var titles = properties.colTitles,
  73522. rows = properties.rows,
  73523. fieldIndex = titles.findIndex(function (title) {
  73524. return title === divisionField;
  73525. });
  73526. rows.forEach(function (row) {
  73527. var feature = geoData.features.find(function (item, index) {
  73528. return _this15._isMatchAdministrativeName(item.properties.Name, row[fieldIndex]);
  73529. });
  73530. if (feature) {
  73531. var combineFeature = {
  73532. properties: {},
  73533. geometry: feature.geometry,
  73534. type: 'Feature'
  73535. };
  73536. row.forEach(function (item, idx) {
  73537. combineFeature.properties[titles[idx]] = item;
  73538. });
  73539. geojson.features.push(combineFeature);
  73540. }
  73541. });
  73542. return geojson;
  73543. }
  73544. }, {
  73545. key: "_isMatchAdministrativeName",
  73546. value: function _isMatchAdministrativeName(featureName, fieldName) {
  73547. if (featureName && typeof fieldName === 'string' && fieldName.constructor === String) {
  73548. var shortName = featureName.substr(0, 2);
  73549. if (shortName === '张家') {
  73550. shortName = featureName.substr(0, 3);
  73551. }
  73552. if (shortName === '阿拉') {
  73553. shortName = featureName.substr(0, 3);
  73554. }
  73555. return !!fieldName.startsWith(shortName);
  73556. }
  73557. return false;
  73558. }
  73559. }, {
  73560. key: "_getTileLayerInfo",
  73561. value: function _getTileLayerInfo(url, baseProjection) {
  73562. var _this16 = this;
  73563. var proxy = this.handleProxy();
  73564. var epsgCode = baseProjection.split('EPSG:')[1];
  73565. var serviceUrl = "".concat(url, "/maps.json");
  73566. return SuperMap.FetchRequest.get(serviceUrl, null, {
  73567. withCredentials: this.handleWithCredentials(proxy, serviceUrl, this.withCredentials),
  73568. proxy: proxy
  73569. }).then(function (response) {
  73570. return response.json();
  73571. }).then(function (mapInfo) {
  73572. var promises = [];
  73573. if (mapInfo) {
  73574. mapInfo.forEach(function (info) {
  73575. var promise = SuperMap.FetchRequest.get("".concat(info.path, ".json?prjCoordSys=").concat(JSON.stringify({
  73576. epsgCode: epsgCode
  73577. })), null, {
  73578. withCredentials: _this16.withCredentials,
  73579. proxy: proxy
  73580. }).then(function (response) {
  73581. return response.json();
  73582. }).then(function (restMapInfo) {
  73583. restMapInfo.url = info.path;
  73584. return restMapInfo;
  73585. });
  73586. promises.push(promise);
  73587. });
  73588. }
  73589. return Promise.all(promises).then(function (allRestMaps) {
  73590. return allRestMaps;
  73591. });
  73592. });
  73593. }
  73594. }, {
  73595. key: "_getFeatureBySQL",
  73596. value: function _getFeatureBySQL(url, datasetNames, _processCompleted2, processFaild) {
  73597. var getFeatureParam, getFeatureBySQLService, getFeatureBySQLParams;
  73598. getFeatureParam = new SuperMap.FilterParameter({
  73599. name: datasetNames.join().replace(':', '@'),
  73600. attributeFilter: null
  73601. });
  73602. getFeatureBySQLParams = new SuperMap.GetFeaturesBySQLParameters({
  73603. queryParameter: getFeatureParam,
  73604. datasetNames: datasetNames,
  73605. fromIndex: 0,
  73606. toIndex: -1,
  73607. maxFeatures: -1,
  73608. returnContent: true
  73609. });
  73610. var proxy = this.handleProxy();
  73611. var options = {
  73612. proxy: proxy,
  73613. withCredentials: this.handleWithCredentials(proxy, url, false),
  73614. eventListeners: {
  73615. processCompleted: function processCompleted(getFeaturesEventArgs) {
  73616. _processCompleted2 && _processCompleted2(getFeaturesEventArgs);
  73617. },
  73618. processFailed: function processFailed(e) {
  73619. processFaild && processFaild(e);
  73620. }
  73621. }
  73622. };
  73623. getFeatureBySQLService = new SuperMap.GetFeaturesBySQLService(url, options);
  73624. getFeatureBySQLService.processAsync(getFeatureBySQLParams);
  73625. }
  73626. }]);
  73627. return WebMapService;
  73628. }(_Events2.Events);
  73629. exports.default = WebMapService;
  73630. /***/ }),
  73631. /***/ "f885":
  73632. /***/ (function(module, exports, __webpack_require__) {
  73633. var baseGetTag = __webpack_require__("6704"),
  73634. isObjectLike = __webpack_require__("4b93");
  73635. /** `Object#toString` result references. */
  73636. var symbolTag = '[object Symbol]';
  73637. /**
  73638. * Checks if `value` is classified as a `Symbol` primitive or object.
  73639. *
  73640. * @static
  73641. * @memberOf _
  73642. * @since 4.0.0
  73643. * @category Lang
  73644. * @param {*} value The value to check.
  73645. * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
  73646. * @example
  73647. *
  73648. * _.isSymbol(Symbol.iterator);
  73649. * // => true
  73650. *
  73651. * _.isSymbol('abc');
  73652. * // => false
  73653. */
  73654. function isSymbol(value) {
  73655. return typeof value == 'symbol' ||
  73656. (isObjectLike(value) && baseGetTag(value) == symbolTag);
  73657. }
  73658. module.exports = isSymbol;
  73659. /***/ }),
  73660. /***/ "fae1":
  73661. /***/ (function(module, exports, __webpack_require__) {
  73662. "use strict";
  73663. var _interopRequireDefault = __webpack_require__("8e6d");
  73664. Object.defineProperty(exports, "__esModule", {
  73665. value: true
  73666. });
  73667. exports.default = void 0;
  73668. var _defineProperty2 = _interopRequireDefault(__webpack_require__("279f"));
  73669. var _theme = _interopRequireDefault(__webpack_require__("9259"));
  73670. var _mapGetter = _interopRequireDefault(__webpack_require__("b761"));
  73671. var _control = _interopRequireDefault(__webpack_require__("2c56"));
  73672. var _SearchViewModel = _interopRequireDefault(__webpack_require__("8385"));
  73673. var _TablePopup = _interopRequireDefault(__webpack_require__("b397"));
  73674. var _util = __webpack_require__("1448");
  73675. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  73676. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  73677. // import iPortalDataParameter from "../commontypes/iPortalDataParameter";
  73678. // import RestDataParameter from "../commontypes/RestDataParameter";
  73679. // import RestMapParameter from "../commontypes/RestMapParameter";
  73680. // import AddressMatchParameter from "../commontypes/AddressMatchParameter";
  73681. // let validators = (value, propType) => {
  73682. // let valid = true;
  73683. // value.forEach(item => {
  73684. // if (!(item instanceof propType)) {
  73685. // valid = false;
  73686. // }
  73687. // });
  73688. // return valid;
  73689. // };
  73690. var _default2 = {
  73691. name: 'SmSearch',
  73692. components: {
  73693. TablePopup: _TablePopup.default
  73694. },
  73695. mixins: [_control.default, _mapGetter.default, _theme.default],
  73696. props: {
  73697. maxFeatures: {
  73698. type: [Number, String],
  73699. default: 8
  73700. },
  73701. layerNames: {
  73702. type: Array
  73703. },
  73704. onlineLocalSearch: {
  73705. type: Object,
  73706. default: function _default() {
  73707. return {
  73708. enable: true,
  73709. city: '北京市'
  73710. };
  73711. }
  73712. },
  73713. restMap: {
  73714. type: Array // validator(value) {
  73715. // return validators(value, RestMapParameter);
  73716. // }
  73717. },
  73718. restData: {
  73719. type: Array // validator(value) {
  73720. // return validators(value, RestDataParameter);
  73721. // }
  73722. },
  73723. iportalData: {
  73724. type: Array // validator(value) {
  73725. // return validators(value, iPortalDataParameter);
  73726. // }
  73727. },
  73728. addressMatch: {
  73729. type: Array // validator(value) {
  73730. // return validators(value, AddressMatchParameter);
  73731. // }
  73732. },
  73733. mode: {
  73734. type: String,
  73735. default: 'control',
  73736. validator: function validator(mode) {
  73737. return ['control', 'toolBar'].includes(mode);
  73738. }
  73739. },
  73740. openSearchSuggestion: {
  73741. type: Boolean,
  73742. default: false
  73743. },
  73744. alwaysCenter: {
  73745. type: Boolean,
  73746. default: true
  73747. },
  73748. showTitle: {
  73749. type: Boolean,
  73750. default: true
  73751. },
  73752. showResult: {
  73753. type: Boolean,
  73754. default: true
  73755. },
  73756. resultRender: {
  73757. type: Function
  73758. },
  73759. collapsed: {
  73760. // 是否折叠组件
  73761. type: Boolean,
  73762. default: false
  73763. }
  73764. },
  73765. data: function data() {
  73766. return {
  73767. searchKey: null,
  73768. searchResult: [],
  73769. prefixType: 'search',
  73770. isActive: false,
  73771. tablePopupProps: {},
  73772. showSearch: true,
  73773. showIcon: false,
  73774. isInputing: false,
  73775. isSuggestion: false,
  73776. keyupHoverInfo: {
  73777. groupIndex: undefined,
  73778. hoverIndex: undefined
  73779. }
  73780. };
  73781. },
  73782. computed: {
  73783. resultSuggestions: function resultSuggestions() {
  73784. if (!this.isSuggestion && !this.showResult) {
  73785. return false;
  73786. }
  73787. return this.searchResult.length > 0;
  73788. },
  73789. popupBackground: function popupBackground() {
  73790. return this.backgroundData ? (0, _util.getColorWithOpacity)(this.backgroundData, 0.5) : this.backgroundData;
  73791. }
  73792. },
  73793. watch: {
  73794. textColorsData: {
  73795. handler: function handler() {
  73796. this.changeSearchInputStyle();
  73797. var results = this.$el.querySelectorAll('.sm-component-search__panel li');
  73798. var _iteratorNormalCompletion = true;
  73799. var _didIteratorError = false;
  73800. var _iteratorError = undefined;
  73801. try {
  73802. for (var _iterator = results[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  73803. var result = _step.value;
  73804. result.style.color = this.getTextColor;
  73805. }
  73806. } catch (err) {
  73807. _didIteratorError = true;
  73808. _iteratorError = err;
  73809. } finally {
  73810. try {
  73811. if (!_iteratorNormalCompletion && _iterator.return != null) {
  73812. _iterator.return();
  73813. }
  73814. } finally {
  73815. if (_didIteratorError) {
  73816. throw _iteratorError;
  73817. }
  73818. }
  73819. }
  73820. }
  73821. },
  73822. backgroundData: function backgroundData() {
  73823. this.changeResultPopupArrowStyle();
  73824. }
  73825. },
  73826. created: function created() {
  73827. this.showSearch = !this.collapsed;
  73828. this.showIcon = this.collapsed;
  73829. this.viewModel = new _SearchViewModel.default(this.$props);
  73830. },
  73831. mounted: function mounted() {
  73832. this.changeSearchInputStyle();
  73833. },
  73834. removed: function removed() {
  73835. this.clearResult(true);
  73836. },
  73837. beforeDestroy: function beforeDestroy() {
  73838. this.$message.destroy();
  73839. this.marker && this.marker.remove() && (this.marker = null);
  73840. },
  73841. methods: {
  73842. changeSearchInputStyle: function changeSearchInputStyle() {
  73843. var serachInput = this.$el.querySelector('.ant-input');
  73844. serachInput.style.color = this.getTextColor;
  73845. },
  73846. changeChosenResultStyle: function changeChosenResultStyle(e) {
  73847. var target = e.target;
  73848. target.style.color = this.getColorStyle(0).color;
  73849. },
  73850. resetChosenResultStyle: function resetChosenResultStyle(e) {
  73851. var target = e.target;
  73852. target.style.color = this.getTextColor;
  73853. },
  73854. changeResultPopupArrowStyle: function changeResultPopupArrowStyle() {
  73855. var searchResultPopupArrow = document.querySelector('.sm-component-search-result-popup .mapboxgl-popup-tip');
  73856. if (searchResultPopupArrow) {
  73857. searchResultPopupArrow.style.borderTopColor = this.popupBackground;
  73858. }
  73859. },
  73860. /**
  73861. * 清除搜索结果。
  73862. */
  73863. clearResult: function clearResult(isClear) {
  73864. this.$message.destroy();
  73865. isClear && (this.searchKey = null);
  73866. isClear && this.resetLastEvent();
  73867. this.searchResult = [];
  73868. this.marker && this.marker.remove() && (this.marker = null);
  73869. this.prefixType = 'search';
  73870. this.keyupHoverInfo = {
  73871. groupIndex: undefined,
  73872. hoverIndex: undefined
  73873. };
  73874. },
  73875. searchInput: function searchInput(e) {
  73876. if (this.openSearchSuggestion && !this.isInputing) {
  73877. if (this.searchKey) {
  73878. this.isSuggestion = true;
  73879. this.search();
  73880. } else {
  73881. this.inputValueCleared(false);
  73882. }
  73883. }
  73884. },
  73885. searchButtonClicked: function searchButtonClicked() {
  73886. this.isSuggestion = false;
  73887. this.search();
  73888. },
  73889. search: function search() {
  73890. this.clearResult();
  73891. var mapNotLoaded = this.mapNotLoadedTip();
  73892. if (mapNotLoaded) return;
  73893. var _this$$props = this.$props,
  73894. layerNames = _this$$props.layerNames,
  73895. onlineLocalSearch = _this$$props.onlineLocalSearch,
  73896. restMap = _this$$props.restMap,
  73897. restData = _this$$props.restData,
  73898. iportalData = _this$$props.iportalData,
  73899. addressMatch = _this$$props.addressMatch;
  73900. if (layerNames && layerNames.length > 0 || onlineLocalSearch.enable || restMap && restMap.length > 0 || restData && restData.length > 0 || iportalData && iportalData.length > 0 || addressMatch && addressMatch.length > 0) {
  73901. if (this.searchKey) {
  73902. this.searchTaskId = this.viewModel.search(this.searchKey);
  73903. this.regiterEvents();
  73904. this.prefixType = 'loading';
  73905. } else {
  73906. this.$message.warning(this.$t('search.noKey'));
  73907. }
  73908. } else {
  73909. this.$message.warning(this.$t('search.setSearchSource'));
  73910. }
  73911. },
  73912. inputValueCleared: function inputValueCleared() {
  73913. var emitEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
  73914. this.clearResult(true);
  73915. this.viewModel && this.viewModel.removed();
  73916. emitEvent && this.$emit('clear-search-result');
  73917. },
  73918. searchResultListClicked: function searchResultListClicked(data, event) {
  73919. var searchKey = event.target.innerHTML;
  73920. this.isSuggestion = false;
  73921. this.viewModel.getFeatureInfo(searchKey, data);
  73922. },
  73923. resetLastEvent: function resetLastEvent() {
  73924. if (/\d/.test(this.searchTaskId)) {
  73925. this.viewModel.off('searchsucceeded' + this.searchTaskId);
  73926. this.viewModel.off('searchfailed' + this.searchTaskId);
  73927. this.viewModel.off('set-popup-content' + this.searchTaskId);
  73928. this.viewModel.off('addfeaturefailed' + this.illegalFeatureTip);
  73929. this.viewModel.off('search-selected-info' + this.searchTaskId);
  73930. this.searchTaskId = undefined;
  73931. }
  73932. },
  73933. registerSuccessEvent: function registerSuccessEvent(searchTaskId) {
  73934. this.viewModel.on('searchsucceeded' + searchTaskId, this.searchSucceeded);
  73935. },
  73936. registerFailedEvent: function registerFailedEvent(searchTaskId) {
  73937. this.viewModel.on('searchfailed' + searchTaskId, this.searchFailed);
  73938. },
  73939. regiterEvents: function regiterEvents() {
  73940. if (this.isNumber(this.searchTaskId)) {
  73941. this.viewModel.off('searchsucceeded' + (this.searchTaskId - 1), this.searchSucceeded);
  73942. this.viewModel.off('searchsucceeded' + (this.searchTaskId - 1), this.searchFailed);
  73943. this.viewModel.off('set-popup-content' + (this.searchTaskId - 1), this.setPopupContent);
  73944. this.viewModel.off('addfeaturefailed' + (this.searchTaskId - 1), this.illegalFeatureTip);
  73945. this.viewModel.off('search-selected-info' + (this.searchTaskId - 1), this.searchSelectedInfo);
  73946. }
  73947. var onTaskId = this.searchTaskId || 0;
  73948. this.registerSuccessEvent(onTaskId);
  73949. this.registerFailedEvent(onTaskId);
  73950. this.viewModel.on('set-popup-content' + onTaskId, this.setPopupContent);
  73951. this.viewModel.on('addfeaturefailed' + onTaskId, this.illegalFeatureTip);
  73952. this.viewModel.on('search-selected-info' + onTaskId, this.searchSelectedInfo);
  73953. },
  73954. searchSucceeded: function searchSucceeded(_ref) {
  73955. var result = _ref.result;
  73956. /**
  73957. * @event searchSucceeded
  73958. * @desc 搜索成功后触发。
  73959. * @property {Object} e - 事件对象。
  73960. */
  73961. this.$message.destroy();
  73962. this.searchResult = result;
  73963. this.$emit('search-succeeded', {
  73964. searchResult: this.searchResult
  73965. });
  73966. this.prefixType = 'search'; // this.searchResult.length < 1 && this.$message.warning(this.$t('search.noResult'));
  73967. if (this.isNumber(this.searchTaskId)) {
  73968. this.searchTaskId += 1;
  73969. this.regiterEvents();
  73970. }
  73971. },
  73972. searchFailed: function searchFailed(e) {
  73973. /**
  73974. * @event searchFailed
  73975. * @desc 搜索失败后触发。
  73976. * @property {Object} e - 事件对象。
  73977. */
  73978. this.clearResult();
  73979. this.prefixType = 'search'; // this.$message.warning(this.$t('search.noResult'));
  73980. this.$emit('search-failed', e);
  73981. if (this.isNumber(this.searchTaskId)) {
  73982. this.searchTaskId += 1;
  73983. this.regiterEvents();
  73984. }
  73985. },
  73986. setPopupContent: function setPopupContent(_ref2) {
  73987. var _this = this;
  73988. var popupData = _ref2.popupData;
  73989. if (popupData && popupData.info.length) {
  73990. var state = {
  73991. columns: [{
  73992. title: this.$t('search.attribute'),
  73993. dataIndex: 'attribute',
  73994. width: 80
  73995. }, {
  73996. title: this.$t('search.attributeValue'),
  73997. dataIndex: 'attributeValue',
  73998. width: 150
  73999. }],
  74000. data: popupData.info
  74001. };
  74002. this.tablePopupProps = _objectSpread({}, state);
  74003. }
  74004. this.$nextTick(function () {
  74005. _this.viewModel.setPopupContent(popupData.coordinates, _this.$refs.searchTablePopup.$el, _this.changeResultPopupArrowStyle);
  74006. });
  74007. },
  74008. illegalFeatureTip: function illegalFeatureTip(_ref3) {
  74009. var error = _ref3.error;
  74010. this.$message.destroy();
  74011. this.$message.error(error);
  74012. },
  74013. searchSelectedInfo: function searchSelectedInfo(_ref4) {
  74014. var data = _ref4.data;
  74015. this.prefixType = 'search';
  74016. this.resultRender && this.resultRender(data);
  74017. this.$emit('search-selected-info', data);
  74018. },
  74019. isNumber: function isNumber(num) {
  74020. return /\d/.test(num);
  74021. },
  74022. downChoose: function downChoose() {
  74023. var len = this.searchResult.filter(function (item) {
  74024. return item.result.length;
  74025. }).length;
  74026. var _this$keyupHoverInfo = this.keyupHoverInfo,
  74027. _this$keyupHoverInfo$ = _this$keyupHoverInfo.groupIndex,
  74028. groupIndex = _this$keyupHoverInfo$ === void 0 ? 0 : _this$keyupHoverInfo$,
  74029. hoverIndex = _this$keyupHoverInfo.hoverIndex;
  74030. var groupResult = groupIndex ? this.searchResult[groupIndex].result : this.searchResult[0].result;
  74031. var subLen = groupResult.length;
  74032. groupIndex = groupIndex < len - 1 && hoverIndex >= subLen - 1 ? Math.min(len - 1, groupIndex + 1) : groupIndex === len - 1 && hoverIndex === subLen - 1 ? 0 : groupIndex;
  74033. if (this.isNumber(hoverIndex) && hoverIndex < subLen - 1) {
  74034. this.keyupHoverInfo.hoverIndex = hoverIndex + 1;
  74035. } else {
  74036. this.keyupHoverInfo.groupIndex = groupIndex;
  74037. this.keyupHoverInfo.hoverIndex = 0;
  74038. }
  74039. var selectedItem = this.searchResult[groupIndex].result[this.keyupHoverInfo.hoverIndex];
  74040. this.searchKey = (selectedItem.filterVal || selectedItem.name || selectedItem.address).split(':')[0];
  74041. },
  74042. upChoose: function upChoose() {
  74043. var len = this.searchResult.filter(function (item) {
  74044. return item.result.length;
  74045. }).length;
  74046. var _this$keyupHoverInfo2 = this.keyupHoverInfo,
  74047. _this$keyupHoverInfo3 = _this$keyupHoverInfo2.groupIndex,
  74048. groupIndex = _this$keyupHoverInfo3 === void 0 ? 0 : _this$keyupHoverInfo3,
  74049. hoverIndex = _this$keyupHoverInfo2.hoverIndex;
  74050. groupIndex = groupIndex > 0 && !hoverIndex ? Math.max(0, groupIndex - 1) : !groupIndex && !hoverIndex ? len - 1 : groupIndex;
  74051. if (this.isNumber(hoverIndex) && hoverIndex > 0) {
  74052. this.keyupHoverInfo.hoverIndex = hoverIndex - 1;
  74053. } else {
  74054. this.keyupHoverInfo.groupIndex = groupIndex;
  74055. this.keyupHoverInfo.hoverIndex = Math.max(this.searchResult[groupIndex].result.length - 1, 0);
  74056. }
  74057. var selectedItem = this.searchResult[groupIndex].result[this.keyupHoverInfo.hoverIndex];
  74058. this.searchKey = (selectedItem.filterVal || selectedItem.name || selectedItem.address).split(':')[0];
  74059. },
  74060. changeResultHover: function changeResultHover(e) {
  74061. var keyCode = e.keyCode;
  74062. if (keyCode === 38) {
  74063. this.upChoose();
  74064. } else if (keyCode === 40) {
  74065. this.downChoose();
  74066. }
  74067. }
  74068. }
  74069. };
  74070. exports.default = _default2;
  74071. /***/ }),
  74072. /***/ "fb6a":
  74073. /***/ (function(module, exports, __webpack_require__) {
  74074. "use strict";
  74075. var _interopRequireDefault = __webpack_require__("8e6d");
  74076. Object.defineProperty(exports, "__esModule", {
  74077. value: true
  74078. });
  74079. exports.default = void 0;
  74080. var _vue = _interopRequireDefault(__webpack_require__("5643"));
  74081. var _theme = _interopRequireDefault(__webpack_require__("3853"));
  74082. var _default = new _vue.default({
  74083. theme: _theme.default[1]
  74084. });
  74085. exports.default = _default;
  74086. /***/ }),
  74087. /***/ "fc22":
  74088. /***/ (function(module, exports) {
  74089. module.exports = __WEBPACK_EXTERNAL_MODULE_fc22__;
  74090. /***/ }),
  74091. /***/ "fc3a":
  74092. /***/ (function(module, exports, __webpack_require__) {
  74093. /*jslint node:true */
  74094. var xml2js = __webpack_require__("98c2");
  74095. var xml2json = __webpack_require__("2f96");
  74096. var js2xml = __webpack_require__("c365");
  74097. var json2xml = __webpack_require__("5e45");
  74098. module.exports = {
  74099. xml2js: xml2js,
  74100. xml2json: xml2json,
  74101. js2xml: js2xml,
  74102. json2xml: json2xml
  74103. };
  74104. /***/ }),
  74105. /***/ "fc3c":
  74106. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  74107. "use strict";
  74108. __webpack_require__.r(__webpack_exports__);
  74109. /* harmony import */ var _WebScene_vue_vue_type_template_id_5436dd28___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("4277");
  74110. /* harmony import */ var _WebScene_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("3fbb");
  74111. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _WebScene_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _WebScene_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  74112. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  74113. /* normalize component */
  74114. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  74115. _WebScene_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__["default"],
  74116. _WebScene_vue_vue_type_template_id_5436dd28___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  74117. _WebScene_vue_vue_type_template_id_5436dd28___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  74118. false,
  74119. null,
  74120. null,
  74121. null
  74122. )
  74123. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  74124. /***/ }),
  74125. /***/ "fd21":
  74126. /***/ (function(module, exports, __webpack_require__) {
  74127. "use strict";
  74128. module.exports = Point;
  74129. /**
  74130. * A standalone point geometry with useful accessor, comparison, and
  74131. * modification methods.
  74132. *
  74133. * @class Point
  74134. * @param {Number} x the x-coordinate. this could be longitude or screen
  74135. * pixels, or any other sort of unit.
  74136. * @param {Number} y the y-coordinate. this could be latitude or screen
  74137. * pixels, or any other sort of unit.
  74138. * @example
  74139. * var point = new Point(-77, 38);
  74140. */
  74141. function Point(x, y) {
  74142. this.x = x;
  74143. this.y = y;
  74144. }
  74145. Point.prototype = {
  74146. /**
  74147. * Clone this point, returning a new point that can be modified
  74148. * without affecting the old one.
  74149. * @return {Point} the clone
  74150. */
  74151. clone: function() { return new Point(this.x, this.y); },
  74152. /**
  74153. * Add this point's x & y coordinates to another point,
  74154. * yielding a new point.
  74155. * @param {Point} p the other point
  74156. * @return {Point} output point
  74157. */
  74158. add: function(p) { return this.clone()._add(p); },
  74159. /**
  74160. * Subtract this point's x & y coordinates to from point,
  74161. * yielding a new point.
  74162. * @param {Point} p the other point
  74163. * @return {Point} output point
  74164. */
  74165. sub: function(p) { return this.clone()._sub(p); },
  74166. /**
  74167. * Multiply this point's x & y coordinates by point,
  74168. * yielding a new point.
  74169. * @param {Point} p the other point
  74170. * @return {Point} output point
  74171. */
  74172. multByPoint: function(p) { return this.clone()._multByPoint(p); },
  74173. /**
  74174. * Divide this point's x & y coordinates by point,
  74175. * yielding a new point.
  74176. * @param {Point} p the other point
  74177. * @return {Point} output point
  74178. */
  74179. divByPoint: function(p) { return this.clone()._divByPoint(p); },
  74180. /**
  74181. * Multiply this point's x & y coordinates by a factor,
  74182. * yielding a new point.
  74183. * @param {Point} k factor
  74184. * @return {Point} output point
  74185. */
  74186. mult: function(k) { return this.clone()._mult(k); },
  74187. /**
  74188. * Divide this point's x & y coordinates by a factor,
  74189. * yielding a new point.
  74190. * @param {Point} k factor
  74191. * @return {Point} output point
  74192. */
  74193. div: function(k) { return this.clone()._div(k); },
  74194. /**
  74195. * Rotate this point around the 0, 0 origin by an angle a,
  74196. * given in radians
  74197. * @param {Number} a angle to rotate around, in radians
  74198. * @return {Point} output point
  74199. */
  74200. rotate: function(a) { return this.clone()._rotate(a); },
  74201. /**
  74202. * Rotate this point around p point by an angle a,
  74203. * given in radians
  74204. * @param {Number} a angle to rotate around, in radians
  74205. * @param {Point} p Point to rotate around
  74206. * @return {Point} output point
  74207. */
  74208. rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); },
  74209. /**
  74210. * Multiply this point by a 4x1 transformation matrix
  74211. * @param {Array<Number>} m transformation matrix
  74212. * @return {Point} output point
  74213. */
  74214. matMult: function(m) { return this.clone()._matMult(m); },
  74215. /**
  74216. * Calculate this point but as a unit vector from 0, 0, meaning
  74217. * that the distance from the resulting point to the 0, 0
  74218. * coordinate will be equal to 1 and the angle from the resulting
  74219. * point to the 0, 0 coordinate will be the same as before.
  74220. * @return {Point} unit vector point
  74221. */
  74222. unit: function() { return this.clone()._unit(); },
  74223. /**
  74224. * Compute a perpendicular point, where the new y coordinate
  74225. * is the old x coordinate and the new x coordinate is the old y
  74226. * coordinate multiplied by -1
  74227. * @return {Point} perpendicular point
  74228. */
  74229. perp: function() { return this.clone()._perp(); },
  74230. /**
  74231. * Return a version of this point with the x & y coordinates
  74232. * rounded to integers.
  74233. * @return {Point} rounded point
  74234. */
  74235. round: function() { return this.clone()._round(); },
  74236. /**
  74237. * Return the magitude of this point: this is the Euclidean
  74238. * distance from the 0, 0 coordinate to this point's x and y
  74239. * coordinates.
  74240. * @return {Number} magnitude
  74241. */
  74242. mag: function() {
  74243. return Math.sqrt(this.x * this.x + this.y * this.y);
  74244. },
  74245. /**
  74246. * Judge whether this point is equal to another point, returning
  74247. * true or false.
  74248. * @param {Point} other the other point
  74249. * @return {boolean} whether the points are equal
  74250. */
  74251. equals: function(other) {
  74252. return this.x === other.x &&
  74253. this.y === other.y;
  74254. },
  74255. /**
  74256. * Calculate the distance from this point to another point
  74257. * @param {Point} p the other point
  74258. * @return {Number} distance
  74259. */
  74260. dist: function(p) {
  74261. return Math.sqrt(this.distSqr(p));
  74262. },
  74263. /**
  74264. * Calculate the distance from this point to another point,
  74265. * without the square root step. Useful if you're comparing
  74266. * relative distances.
  74267. * @param {Point} p the other point
  74268. * @return {Number} distance
  74269. */
  74270. distSqr: function(p) {
  74271. var dx = p.x - this.x,
  74272. dy = p.y - this.y;
  74273. return dx * dx + dy * dy;
  74274. },
  74275. /**
  74276. * Get the angle from the 0, 0 coordinate to this point, in radians
  74277. * coordinates.
  74278. * @return {Number} angle
  74279. */
  74280. angle: function() {
  74281. return Math.atan2(this.y, this.x);
  74282. },
  74283. /**
  74284. * Get the angle from this point to another point, in radians
  74285. * @param {Point} b the other point
  74286. * @return {Number} angle
  74287. */
  74288. angleTo: function(b) {
  74289. return Math.atan2(this.y - b.y, this.x - b.x);
  74290. },
  74291. /**
  74292. * Get the angle between this point and another point, in radians
  74293. * @param {Point} b the other point
  74294. * @return {Number} angle
  74295. */
  74296. angleWith: function(b) {
  74297. return this.angleWithSep(b.x, b.y);
  74298. },
  74299. /*
  74300. * Find the angle of the two vectors, solving the formula for
  74301. * the cross product a x b = |a||b|sin(θ) for θ.
  74302. * @param {Number} x the x-coordinate
  74303. * @param {Number} y the y-coordinate
  74304. * @return {Number} the angle in radians
  74305. */
  74306. angleWithSep: function(x, y) {
  74307. return Math.atan2(
  74308. this.x * y - this.y * x,
  74309. this.x * x + this.y * y);
  74310. },
  74311. _matMult: function(m) {
  74312. var x = m[0] * this.x + m[1] * this.y,
  74313. y = m[2] * this.x + m[3] * this.y;
  74314. this.x = x;
  74315. this.y = y;
  74316. return this;
  74317. },
  74318. _add: function(p) {
  74319. this.x += p.x;
  74320. this.y += p.y;
  74321. return this;
  74322. },
  74323. _sub: function(p) {
  74324. this.x -= p.x;
  74325. this.y -= p.y;
  74326. return this;
  74327. },
  74328. _mult: function(k) {
  74329. this.x *= k;
  74330. this.y *= k;
  74331. return this;
  74332. },
  74333. _div: function(k) {
  74334. this.x /= k;
  74335. this.y /= k;
  74336. return this;
  74337. },
  74338. _multByPoint: function(p) {
  74339. this.x *= p.x;
  74340. this.y *= p.y;
  74341. return this;
  74342. },
  74343. _divByPoint: function(p) {
  74344. this.x /= p.x;
  74345. this.y /= p.y;
  74346. return this;
  74347. },
  74348. _unit: function() {
  74349. this._div(this.mag());
  74350. return this;
  74351. },
  74352. _perp: function() {
  74353. var y = this.y;
  74354. this.y = this.x;
  74355. this.x = -y;
  74356. return this;
  74357. },
  74358. _rotate: function(angle) {
  74359. var cos = Math.cos(angle),
  74360. sin = Math.sin(angle),
  74361. x = cos * this.x - sin * this.y,
  74362. y = sin * this.x + cos * this.y;
  74363. this.x = x;
  74364. this.y = y;
  74365. return this;
  74366. },
  74367. _rotateAround: function(angle, p) {
  74368. var cos = Math.cos(angle),
  74369. sin = Math.sin(angle),
  74370. x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),
  74371. y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);
  74372. this.x = x;
  74373. this.y = y;
  74374. return this;
  74375. },
  74376. _round: function() {
  74377. this.x = Math.round(this.x);
  74378. this.y = Math.round(this.y);
  74379. return this;
  74380. }
  74381. };
  74382. /**
  74383. * Construct a point from an array if necessary, otherwise if the input
  74384. * is already a Point, or an unknown type, return it unchanged
  74385. * @param {Array<Number>|Point|*} a any kind of input value
  74386. * @return {Point} constructed point, or passed-through value.
  74387. * @example
  74388. * // this
  74389. * var point = Point.convert([0, 1]);
  74390. * // is equivalent to
  74391. * var point = new Point(0, 1);
  74392. */
  74393. Point.convert = function (a) {
  74394. if (a instanceof Point) {
  74395. return a;
  74396. }
  74397. if (Array.isArray(a)) {
  74398. return new Point(a[0], a[1]);
  74399. }
  74400. return a;
  74401. };
  74402. /***/ }),
  74403. /***/ "fde6":
  74404. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  74405. "use strict";
  74406. __webpack_require__.r(__webpack_exports__);
  74407. /* harmony import */ var _Draw_vue_vue_type_template_id_2e84c483_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("d9ca");
  74408. /* harmony import */ var _Draw_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("c295");
  74409. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Draw_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Draw_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  74410. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("b429");
  74411. /* normalize component */
  74412. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(
  74413. _Draw_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  74414. _Draw_vue_vue_type_template_id_2e84c483_scoped_true___WEBPACK_IMPORTED_MODULE_0__[/* render */ "a"],
  74415. _Draw_vue_vue_type_template_id_2e84c483_scoped_true___WEBPACK_IMPORTED_MODULE_0__[/* staticRenderFns */ "b"],
  74416. false,
  74417. null,
  74418. "2e84c483",
  74419. null
  74420. )
  74421. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  74422. /***/ }),
  74423. /***/ "fdfe":
  74424. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  74425. "use strict";
  74426. __webpack_require__.r(__webpack_exports__);
  74427. /* harmony import */ var _Chart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8ff5");
  74428. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Chart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Chart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  74429. /* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("b429");
  74430. var render, staticRenderFns
  74431. /* normalize component */
  74432. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(
  74433. _Chart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
  74434. render,
  74435. staticRenderFns,
  74436. false,
  74437. null,
  74438. null,
  74439. null
  74440. )
  74441. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  74442. /***/ }),
  74443. /***/ "fe04":
  74444. /***/ (function(module, exports) {
  74445. if (typeof Object.create === 'function') {
  74446. // implementation from standard node.js 'util' module
  74447. module.exports = function inherits(ctor, superCtor) {
  74448. if (superCtor) {
  74449. ctor.super_ = superCtor
  74450. ctor.prototype = Object.create(superCtor.prototype, {
  74451. constructor: {
  74452. value: ctor,
  74453. enumerable: false,
  74454. writable: true,
  74455. configurable: true
  74456. }
  74457. })
  74458. }
  74459. };
  74460. } else {
  74461. // old school shim for old browsers
  74462. module.exports = function inherits(ctor, superCtor) {
  74463. if (superCtor) {
  74464. ctor.super_ = superCtor
  74465. var TempCtor = function () {}
  74466. TempCtor.prototype = superCtor.prototype
  74467. ctor.prototype = new TempCtor()
  74468. ctor.prototype.constructor = ctor
  74469. }
  74470. }
  74471. }
  74472. /***/ }),
  74473. /***/ "fe5a":
  74474. /***/ (function(module, exports, __webpack_require__) {
  74475. "use strict";
  74476. Object.defineProperty(exports, "__esModule", {
  74477. value: true
  74478. });
  74479. exports.Event = void 0;
  74480. var _Util = __webpack_require__("1a9e");
  74481. /* Copyright© 2000 - 2020 SuperMap Software Co.Ltd. All rights reserved.
  74482. * This program are made available under the terms of the Apache License, Version 2.0
  74483. * which accompanies this distribution and is available at http://www.apache.org/licenses/LICENSE-2.0.html. */
  74484. var Event = {
  74485. /**
  74486. * @description A hash table cache of the event observers. Keyed by element._eventCacheID
  74487. * @type {boolean}
  74488. * @default false
  74489. */
  74490. observers: false,
  74491. /**
  74492. * @description KEY_SPACE
  74493. * @type {number}
  74494. * @default 32
  74495. */
  74496. KEY_SPACE: 32,
  74497. /**
  74498. * @description KEY_BACKSPACE
  74499. * @type {number}
  74500. * @default 8
  74501. */
  74502. KEY_BACKSPACE: 8,
  74503. /**
  74504. * @description KEY_TAB
  74505. * @type {number}
  74506. * @default 9
  74507. */
  74508. KEY_TAB: 9,
  74509. /**
  74510. * @description KEY_RETURN
  74511. * @type {number}
  74512. * @default 13
  74513. */
  74514. KEY_RETURN: 13,
  74515. /**
  74516. * @description KEY_ESC
  74517. * @type {number}
  74518. * @default 27
  74519. */
  74520. KEY_ESC: 27,
  74521. /**
  74522. * @description KEY_LEFT
  74523. * @type {number}
  74524. * @default 37
  74525. */
  74526. KEY_LEFT: 37,
  74527. /**
  74528. * @description KEY_UP
  74529. * @type {number}
  74530. * @default 38
  74531. */
  74532. KEY_UP: 38,
  74533. /**
  74534. * @description KEY_RIGHT
  74535. * @type {number}
  74536. * @default 39
  74537. */
  74538. KEY_RIGHT: 39,
  74539. /**
  74540. * @description KEY_DOWN
  74541. * @type {number}
  74542. * @default 40
  74543. */
  74544. KEY_DOWN: 40,
  74545. /**
  74546. * @description KEY_DELETE
  74547. * @type {number}
  74548. * @default 46
  74549. */
  74550. KEY_DELETE: 46,
  74551. /**
  74552. * @description Cross browser event element detection.
  74553. * @param {Event} event - The event
  74554. * @returns {HTMLElement} The element that caused the event
  74555. */
  74556. element: function element(event) {
  74557. return event.target || event.srcElement;
  74558. },
  74559. /**
  74560. * @description Determine whether event was caused by a single touch
  74561. * @param {Event} event - The event
  74562. * @returns {boolean}
  74563. */
  74564. isSingleTouch: function isSingleTouch(event) {
  74565. return event.touches && event.touches.length === 1;
  74566. },
  74567. /**
  74568. * @description Determine whether event was caused by a multi touch
  74569. * @param {Event} event - The event
  74570. * @returns {boolean}
  74571. */
  74572. isMultiTouch: function isMultiTouch(event) {
  74573. return event.touches && event.touches.length > 1;
  74574. },
  74575. /**
  74576. * @description Determine whether event was caused by a left click.
  74577. * @param {Event} event - The event
  74578. * @returns {boolean}
  74579. */
  74580. isLeftClick: function isLeftClick(event) {
  74581. return event.which && event.which === 1 || event.button && event.button === 1;
  74582. },
  74583. /**
  74584. * @description Determine whether event was caused by a right mouse click.
  74585. * @param {Event} event - The event
  74586. * @returns {boolean}
  74587. */
  74588. isRightClick: function isRightClick(event) {
  74589. return event.which && event.which === 3 || event.button && event.button === 2;
  74590. },
  74591. /**
  74592. * @description Stops an event from propagating.
  74593. * @param {boolean} allowDefault - If true, we stop the event chain but still allow the default browser behaviour (text selection, radio-button clicking, etc) Default false
  74594. */
  74595. stop: function stop(event, allowDefault) {
  74596. if (!allowDefault) {
  74597. if (event.preventDefault) {
  74598. event.preventDefault();
  74599. } else {
  74600. event.returnValue = false;
  74601. }
  74602. }
  74603. if (event.stopPropagation) {
  74604. event.stopPropagation();
  74605. } else {
  74606. event.cancelBubble = true;
  74607. }
  74608. },
  74609. /**
  74610. * @param {string} tagName - html 标签名。
  74611. * @returns {HTMLElement} The first node with the given tagName, starting from the node the event was triggered on and traversing the DOM upwards
  74612. */
  74613. findElement: function findElement(event, tagName) {
  74614. var element = Event.element(event);
  74615. while (element.parentNode && (!element.tagName || element.tagName.toUpperCase() !== tagName.toUpperCase())) {
  74616. element = element.parentNode;
  74617. }
  74618. return element;
  74619. },
  74620. /**
  74621. * @description 监听事件,注册事件处理方法。
  74622. * @param {(HTMLElement|string)} elementParam - 待监听的 DOM 对象或者其 ID 标识。
  74623. * @param {string} name - 监听事件的类别名称。
  74624. * @param {function} observer - 注册的事件处理方法。
  74625. * @param {boolean} [useCapture=false] - 是否捕获。
  74626. */
  74627. observe: function observe(elementParam, name, observer, useCapture) {
  74628. var element = _Util.Util.getElement(elementParam);
  74629. useCapture = useCapture || false;
  74630. if (name === 'keypress' && (navigator.appVersion.match(/Konqueror|Safari|KHTML/) || element.attachEvent)) {
  74631. name = 'keydown';
  74632. }
  74633. if (!this.observers) {
  74634. this.observers = {};
  74635. }
  74636. if (!element._eventCacheID) {
  74637. var idPrefix = 'eventCacheID_';
  74638. if (element.id) {
  74639. idPrefix = element.id + '_' + idPrefix;
  74640. }
  74641. element._eventCacheID = _Util.Util.createUniqueID(idPrefix);
  74642. }
  74643. var cacheID = element._eventCacheID;
  74644. if (!this.observers[cacheID]) {
  74645. this.observers[cacheID] = [];
  74646. }
  74647. this.observers[cacheID].push({
  74648. element: element,
  74649. name: name,
  74650. observer: observer,
  74651. useCapture: useCapture
  74652. });
  74653. if (element.addEventListener) {
  74654. if (name === 'mousewheel') {
  74655. // https://www.chromestatus.com/features/6662647093133312
  74656. element.addEventListener(name, observer, {
  74657. useCapture: useCapture,
  74658. passive: false
  74659. });
  74660. } else {
  74661. element.addEventListener(name, observer, useCapture);
  74662. }
  74663. } else if (element.attachEvent) {
  74664. element.attachEvent('on' + name, observer);
  74665. }
  74666. },
  74667. /**
  74668. * @description Given the id of an element to stop observing, cycle through the
  74669. * element's cached observers, calling stopObserving on each one,
  74670. * skipping those entries which can no longer be removed.
  74671. *
  74672. * @param {(HTMLElement|string)} elementParam -
  74673. */
  74674. stopObservingElement: function stopObservingElement(elementParam) {
  74675. var element = _Util.Util.getElement(elementParam);
  74676. var cacheID = element._eventCacheID;
  74677. this._removeElementObservers(Event.observers[cacheID]);
  74678. },
  74679. /**
  74680. * @param {Array.<Object>} elementObservers - Array of (element, name,
  74681. * observer, usecapture) objects,
  74682. * taken directly from hashtable
  74683. */
  74684. _removeElementObservers: function _removeElementObservers(elementObservers) {
  74685. if (elementObservers) {
  74686. for (var i = elementObservers.length - 1; i >= 0; i--) {
  74687. var entry = elementObservers[i];
  74688. var args = [entry.element, entry.name, entry.observer, entry.useCapture];
  74689. Event.stopObserving.apply(this, args);
  74690. }
  74691. }
  74692. },
  74693. /**
  74694. * @description 移除事件监听和注册的事件处理方法。注意:事件的移除和监听相对应,移除时的各属性信息必须监听时
  74695. * 保持一致才能确保事件移除成功。
  74696. * @param {(HTMLElement|string)} elementParam - 被监听的 DOM 元素或者其 ID。
  74697. * @param {string} name - 需要移除的被监听事件名称。
  74698. * @param {function} observer - 需要移除的事件处理方法。
  74699. * @param {boolean} [useCapture=false] - 是否捕获。
  74700. * @returns {boolean} Whether or not the event observer was removed
  74701. */
  74702. stopObserving: function stopObserving(elementParam, name, observer, useCapture) {
  74703. useCapture = useCapture || false;
  74704. var element = _Util.Util.getElement(elementParam);
  74705. var cacheID = element._eventCacheID;
  74706. if (name === 'keypress') {
  74707. if (navigator.appVersion.match(/Konqueror|Safari|KHTML/) || element.detachEvent) {
  74708. name = 'keydown';
  74709. }
  74710. } // find element's entry in this.observers cache and remove it
  74711. var foundEntry = false;
  74712. var elementObservers = Event.observers[cacheID];
  74713. if (elementObservers) {
  74714. // find the specific event type in the element's list
  74715. var i = 0;
  74716. while (!foundEntry && i < elementObservers.length) {
  74717. var cacheEntry = elementObservers[i];
  74718. if (cacheEntry.name === name && cacheEntry.observer === observer && cacheEntry.useCapture === useCapture) {
  74719. elementObservers.splice(i, 1);
  74720. if (elementObservers.length === 0) {
  74721. delete Event.observers[cacheID];
  74722. }
  74723. foundEntry = true;
  74724. break;
  74725. }
  74726. i++;
  74727. }
  74728. } // actually remove the event listener from browser
  74729. if (foundEntry) {
  74730. if (element.removeEventListener) {
  74731. element.removeEventListener(name, observer, useCapture);
  74732. } else if (element && element.detachEvent) {
  74733. element.detachEvent('on' + name, observer);
  74734. }
  74735. }
  74736. return foundEntry;
  74737. },
  74738. /**
  74739. * @description Cycle through all the element entries in the events cache and call
  74740. * stopObservingElement on each.
  74741. */
  74742. unloadCache: function unloadCache() {
  74743. // created
  74744. if (Event && Event.observers) {
  74745. for (var cacheID in Event.observers) {
  74746. var elementObservers = Event.observers[cacheID];
  74747. Event._removeElementObservers.apply(this, [elementObservers]);
  74748. }
  74749. Event.observers = false;
  74750. }
  74751. },
  74752. CLASS_NAME: 'Event'
  74753. };
  74754. /* prevent memory leaks in IE */
  74755. exports.Event = Event;
  74756. Event.observe(window, 'unload', Event.unloadCache, false);
  74757. /***/ }),
  74758. /***/ "ff2e":
  74759. /***/ (function(module, exports, __webpack_require__) {
  74760. "use strict";
  74761. var enhanceError = __webpack_require__("1753");
  74762. /**
  74763. * Create an Error with the specified message, config, error code, request and response.
  74764. *
  74765. * @param {string} message The error message.
  74766. * @param {Object} config The config.
  74767. * @param {string} [code] The error code (for example, 'ECONNABORTED').
  74768. * @param {Object} [request] The request.
  74769. * @param {Object} [response] The response.
  74770. * @returns {Error} The created error.
  74771. */
  74772. module.exports = function createError(message, config, code, request, response) {
  74773. var error = new Error(message);
  74774. return enhanceError(error, config, code, request, response);
  74775. };
  74776. /***/ }),
  74777. /***/ "ff4e":
  74778. /***/ (function(module, exports, __webpack_require__) {
  74779. "use strict";
  74780. var _interopRequireDefault = __webpack_require__("8e6d");
  74781. Object.defineProperty(exports, "__esModule", {
  74782. value: true
  74783. });
  74784. exports.default = void 0;
  74785. var _classCallCheck2 = _interopRequireDefault(__webpack_require__("19e1"));
  74786. var _lang = __webpack_require__("4e21");
  74787. var RestDataParameter = function RestDataParameter(options) {
  74788. (0, _classCallCheck2.default)(this, RestDataParameter);
  74789. this.type = 'iServer';
  74790. this.url = options.url;
  74791. this.dataName = options.dataName;
  74792. this.attributeFilter = options.attributeFilter || null;
  74793. this.maxFeatures = options.maxFeatures || 20;
  74794. this.name = options.name || (0, _lang.geti18n)().t('commontypes.restData');
  74795. this.proxy = options.proxy;
  74796. };
  74797. exports.default = RestDataParameter;
  74798. /***/ }),
  74799. /***/ "ffd5":
  74800. /***/ (function(module, exports) {
  74801. module.exports = __WEBPACK_EXTERNAL_MODULE_ffd5__;
  74802. /***/ })
  74803. /******/ })["default"];
  74804. });