| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302 |
- "use strict";
- var __defProp = Object.defineProperty;
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __publicField = (obj, key, value) => {
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
- return value;
- };
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
- const vue = require("vue");
- const shared = require("@vue/shared");
- const uniShared = require("@dcloudio/uni-shared");
- const uniI18n = require("@dcloudio/uni-i18n");
- const vueRouter = require("vue-router");
- const isEnableLocale = /* @__PURE__ */ uniShared.once(
- () => typeof __uniConfig !== "undefined" && __uniConfig.locales && !!Object.keys(__uniConfig.locales).length
- );
- let i18n;
- function getLocaleMessage() {
- const locale = uni.getLocale();
- const locales = __uniConfig.locales;
- return locales[locale] || locales[__uniConfig.fallbackLocale] || locales.en || {};
- }
- function formatI18n(message) {
- if (uniI18n.isI18nStr(message, uniShared.I18N_JSON_DELIMITERS)) {
- return useI18n().f(message, getLocaleMessage(), uniShared.I18N_JSON_DELIMITERS);
- }
- return message;
- }
- function resolveJsonObj(jsonObj, names) {
- if (names.length === 1) {
- if (jsonObj) {
- const _isI18nStr = (value2) => shared.isString(value2) && uniI18n.isI18nStr(value2, uniShared.I18N_JSON_DELIMITERS);
- const _name = names[0];
- let filterJsonObj = [];
- if (shared.isArray(jsonObj) && (filterJsonObj = jsonObj.filter((item) => _isI18nStr(item[_name]))).length) {
- return filterJsonObj;
- }
- const value = jsonObj[names[0]];
- if (_isI18nStr(value)) {
- return jsonObj;
- }
- }
- return;
- }
- const name = names.shift();
- return resolveJsonObj(jsonObj && jsonObj[name], names);
- }
- function defineI18nProperties(obj, names) {
- return names.map((name) => defineI18nProperty(obj, name));
- }
- function defineI18nProperty(obj, names) {
- const jsonObj = resolveJsonObj(obj, names);
- if (!jsonObj) {
- return false;
- }
- const prop = names[names.length - 1];
- if (shared.isArray(jsonObj)) {
- jsonObj.forEach((item) => defineI18nProperty(item, [prop]));
- } else {
- let value = jsonObj[prop];
- Object.defineProperty(jsonObj, prop, {
- get() {
- return formatI18n(value);
- },
- set(v2) {
- value = v2;
- }
- });
- }
- return true;
- }
- function useI18n() {
- if (!i18n) {
- let locale;
- {
- {
- locale = uniShared.getEnvLocale();
- }
- }
- i18n = uniI18n.initVueI18n(locale);
- if (isEnableLocale()) {
- const localeKeys = Object.keys(__uniConfig.locales || {});
- if (localeKeys.length) {
- localeKeys.forEach(
- (locale2) => i18n.add(locale2, __uniConfig.locales[locale2])
- );
- }
- i18n.setLocale(locale);
- }
- }
- return i18n;
- }
- function normalizeMessages(module2, keys, values) {
- return keys.reduce((res, name, index2) => {
- res[module2 + name] = values[index2];
- return res;
- }, {});
- }
- const initI18nAsyncMsgsOnce = /* @__PURE__ */ uniShared.once(() => {
- const name = "uni.async.";
- const keys = ["error"];
- if (__UNI_FEATURE_I18N_EN__) {
- useI18n().add(
- uniI18n.LOCALE_EN,
- normalizeMessages(name, keys, [
- "The connection timed out, click the screen to try again."
- ]),
- false
- );
- }
- if (__UNI_FEATURE_I18N_ES__) {
- useI18n().add(
- uniI18n.LOCALE_ES,
- normalizeMessages(name, keys, [
- "Se agotó el tiempo de conexión, haga clic en la pantalla para volver a intentarlo."
- ]),
- false
- );
- }
- if (__UNI_FEATURE_I18N_FR__) {
- useI18n().add(
- uniI18n.LOCALE_FR,
- normalizeMessages(name, keys, [
- "La connexion a expiré, cliquez sur l'écran pour réessayer."
- ]),
- false
- );
- }
- if (__UNI_FEATURE_I18N_ZH_HANS__) {
- useI18n().add(
- uniI18n.LOCALE_ZH_HANS,
- normalizeMessages(name, keys, ["连接服务器超时,点击屏幕重试"]),
- false
- );
- }
- if (__UNI_FEATURE_I18N_ZH_HANT__) {
- useI18n().add(
- uniI18n.LOCALE_ZH_HANT,
- normalizeMessages(name, keys, ["連接服務器超時,點擊屏幕重試"]),
- false
- );
- }
- });
- const initI18nPickerMsgsOnce = /* @__PURE__ */ uniShared.once(() => {
- const name = "uni.picker.";
- const keys = ["done", "cancel"];
- if (__UNI_FEATURE_I18N_EN__) {
- useI18n().add(
- uniI18n.LOCALE_EN,
- normalizeMessages(name, keys, ["Done", "Cancel"]),
- false
- );
- }
- if (__UNI_FEATURE_I18N_ES__) {
- useI18n().add(
- uniI18n.LOCALE_ES,
- normalizeMessages(name, keys, ["OK", "Cancelar"]),
- false
- );
- }
- if (__UNI_FEATURE_I18N_FR__) {
- useI18n().add(
- uniI18n.LOCALE_FR,
- normalizeMessages(name, keys, ["OK", "Annuler"]),
- false
- );
- }
- if (__UNI_FEATURE_I18N_ZH_HANS__) {
- useI18n().add(
- uniI18n.LOCALE_ZH_HANS,
- normalizeMessages(name, keys, ["完成", "取消"]),
- false
- );
- }
- if (__UNI_FEATURE_I18N_ZH_HANT__) {
- useI18n().add(
- uniI18n.LOCALE_ZH_HANT,
- normalizeMessages(name, keys, ["完成", "取消"]),
- false
- );
- }
- });
- const initI18nVideoMsgsOnce = /* @__PURE__ */ uniShared.once(() => {
- const name = "uni.video.";
- const keys = ["danmu", "volume"];
- if (__UNI_FEATURE_I18N_EN__) {
- useI18n().add(
- uniI18n.LOCALE_EN,
- normalizeMessages(name, keys, ["Danmu", "Volume"]),
- false
- );
- }
- if (__UNI_FEATURE_I18N_ES__) {
- useI18n().add(
- uniI18n.LOCALE_ES,
- normalizeMessages(name, keys, ["Danmu", "Volumen"]),
- false
- );
- }
- if (__UNI_FEATURE_I18N_FR__) {
- useI18n().add(
- uniI18n.LOCALE_FR,
- normalizeMessages(name, keys, ["Danmu", "Le Volume"]),
- false
- );
- }
- if (__UNI_FEATURE_I18N_ZH_HANS__) {
- useI18n().add(
- uniI18n.LOCALE_ZH_HANS,
- normalizeMessages(name, keys, ["弹幕", "音量"]),
- false
- );
- }
- if (__UNI_FEATURE_I18N_ZH_HANT__) {
- useI18n().add(
- uniI18n.LOCALE_ZH_HANT,
- normalizeMessages(name, keys, ["彈幕", "音量"]),
- false
- );
- }
- });
- function initNavigationBarI18n(navigationBar) {
- if (isEnableLocale()) {
- return defineI18nProperties(navigationBar, [
- ["titleText"],
- ["searchInput", "placeholder"],
- ["buttons", "text"]
- ]);
- }
- }
- function initTabBarI18n(tabBar2) {
- if (isEnableLocale() && tabBar2.list) {
- tabBar2.list.forEach((item) => {
- defineI18nProperty(item, ["text"]);
- });
- }
- return tabBar2;
- }
- function initBridge(subscribeNamespace) {
- const emitter = new uniShared.Emitter();
- return {
- on(event, callback) {
- return emitter.on(event, callback);
- },
- once(event, callback) {
- return emitter.once(event, callback);
- },
- off(event, callback) {
- return emitter.off(event, callback);
- },
- emit(event, ...args) {
- return emitter.emit(event, ...args);
- },
- subscribe(event, callback, once = false) {
- emitter[once ? "once" : "on"](`${subscribeNamespace}.${event}`, callback);
- },
- unsubscribe(event, callback) {
- emitter.off(`${subscribeNamespace}.${event}`, callback);
- },
- subscribeHandler(event, args, pageId) {
- emitter.emit(`${subscribeNamespace}.${event}`, args, pageId);
- }
- };
- }
- const INVOKE_VIEW_API = "invokeViewApi";
- const INVOKE_SERVICE_API = "invokeServiceApi";
- let invokeServiceMethodId = 1;
- const invokeServiceMethod = (name, args, callback) => {
- const { subscribe, publishHandler } = UniViewJSBridge;
- const id = callback ? invokeServiceMethodId++ : 0;
- callback && subscribe(INVOKE_SERVICE_API + "." + id, callback, true);
- publishHandler(INVOKE_SERVICE_API, { id, name, args });
- };
- const viewMethods = /* @__PURE__ */ Object.create(null);
- function normalizeViewMethodName(pageId, name) {
- return pageId + "." + name;
- }
- function registerViewMethod(pageId, name, fn) {
- name = normalizeViewMethodName(pageId, name);
- if (!viewMethods[name]) {
- viewMethods[name] = fn;
- }
- }
- const ViewJSBridge = /* @__PURE__ */ shared.extend(
- /* @__PURE__ */ initBridge("service"),
- {
- invokeServiceMethod
- }
- );
- const onEventPrevent = /* @__PURE__ */ vue.withModifiers(() => {
- }, ["prevent"]);
- const onEventStop = /* @__PURE__ */ vue.withModifiers(
- (_event) => {
- },
- ["stop"]
- );
- function updateCssVar(cssVars) {
- const style = document.documentElement.style;
- Object.keys(cssVars).forEach((name) => {
- style.setProperty(name, cssVars[name]);
- });
- }
- function updatePageCssVar(cssVars) {
- return updateCssVar(cssVars);
- }
- function PolySymbol(name) {
- return Symbol(process.env.NODE_ENV !== "production" ? "[uni-app]: " + name : name);
- }
- function rpx2px(str, replace = false) {
- if (replace) {
- return rpx2pxWithReplace(str);
- }
- {
- return parseInt(str + "");
- }
- }
- function rpx2pxWithReplace(str) {
- {
- return str;
- }
- }
- const ICON_PATH_CANCEL = "M20.928 10.176l-4.928 4.928-4.928-4.928-0.896 0.896 4.928 4.928-4.928 4.928 0.896 0.896 4.928-4.928 4.928 4.928 0.896-0.896-4.928-4.928 4.928-4.928-0.896-0.896zM16 2.080q-3.776 0-7.040 1.888-3.136 1.856-4.992 4.992-1.888 3.264-1.888 7.040t1.888 7.040q1.856 3.136 4.992 4.992 3.264 1.888 7.040 1.888t7.040-1.888q3.136-1.856 4.992-4.992 1.888-3.264 1.888-7.040t-1.888-7.040q-1.856-3.136-4.992-4.992-3.264-1.888-7.040-1.888zM16 28.64q-3.424 0-6.4-1.728-2.848-1.664-4.512-4.512-1.728-2.976-1.728-6.4t1.728-6.4q1.664-2.848 4.512-4.512 2.976-1.728 6.4-1.728t6.4 1.728q2.848 1.664 4.512 4.512 1.728 2.976 1.728 6.4t-1.728 6.4q-1.664 2.848-4.512 4.512-2.976 1.728-6.4 1.728z";
- const ICON_PATH_CLEAR = "M16 0q-4.352 0-8.064 2.176-3.616 2.144-5.76 5.76-2.176 3.712-2.176 8.064t2.176 8.064q2.144 3.616 5.76 5.76 3.712 2.176 8.064 2.176t8.064-2.176q3.616-2.144 5.76-5.76 2.176-3.712 2.176-8.064t-2.176-8.064q-2.144-3.616-5.76-5.76-3.712-2.176-8.064-2.176zM22.688 21.408q0.32 0.32 0.304 0.752t-0.336 0.736-0.752 0.304-0.752-0.32l-5.184-5.376-5.376 5.184q-0.32 0.32-0.752 0.304t-0.736-0.336-0.304-0.752 0.32-0.752l5.376-5.184-5.184-5.376q-0.32-0.32-0.304-0.752t0.336-0.752 0.752-0.304 0.752 0.336l5.184 5.376 5.376-5.184q0.32-0.32 0.752-0.304t0.752 0.336 0.304 0.752-0.336 0.752l-5.376 5.184 5.184 5.376z";
- const ICON_PATH_DOWNLOAD = "M15.808 1.696q-3.776 0-7.072 1.984-3.2 1.888-5.088 5.152-1.952 3.392-1.952 7.36 0 3.776 1.952 7.072 1.888 3.2 5.088 5.088 3.296 1.952 7.072 1.952 3.968 0 7.36-1.952 3.264-1.888 5.152-5.088 1.984-3.296 1.984-7.072 0-4-1.984-7.36-1.888-3.264-5.152-5.152-3.36-1.984-7.36-1.984zM20.864 18.592l-3.776 4.928q-0.448 0.576-1.088 0.576t-1.088-0.576l-3.776-4.928q-0.448-0.576-0.24-0.992t0.944-0.416h2.976v-8.928q0-0.256 0.176-0.432t0.4-0.176h1.216q0.224 0 0.4 0.176t0.176 0.432v8.928h2.976q0.736 0 0.944 0.416t-0.24 0.992z";
- const ICON_PATH_INFO = "M15.808 0.128q-4.224 0-7.872 2.176-3.552 2.112-5.632 5.728-2.176 3.776-2.176 8.16 0 4.224 2.176 7.872 2.080 3.552 5.632 5.632 3.648 2.176 7.872 2.176 4.384 0 8.16-2.176 3.616-2.080 5.728-5.632 2.176-3.648 2.176-7.872 0-4.416-2.176-8.16-2.112-3.616-5.728-5.728-3.744-2.176-8.16-2.176zM16.864 23.776q0 0.064-0.064 0.064h-1.568q-0.096 0-0.096-0.064l-0.256-11.328q0-0.064 0.064-0.064h2.112q0.096 0 0.064 0.064l-0.256 11.328zM16 10.88q-0.576 0-0.976-0.4t-0.4-0.96 0.4-0.96 0.976-0.4 0.976 0.4 0.4 0.96-0.4 0.96-0.976 0.4z";
- const ICON_PATH_SEARCH = "M20.928 22.688q-1.696 1.376-3.744 2.112-2.112 0.768-4.384 0.768-3.488 0-6.464-1.728-2.88-1.696-4.576-4.608-1.76-2.976-1.76-6.464t1.76-6.464q1.696-2.88 4.576-4.576 2.976-1.76 6.464-1.76t6.464 1.76q2.912 1.696 4.608 4.576 1.728 2.976 1.728 6.464 0 2.272-0.768 4.384-0.736 2.048-2.112 3.744l9.312 9.28-1.824 1.824-9.28-9.312zM12.8 23.008q2.784 0 5.184-1.376 2.304-1.376 3.68-3.68 1.376-2.4 1.376-5.184t-1.376-5.152q-1.376-2.336-3.68-3.68-2.4-1.408-5.184-1.408t-5.152 1.408q-2.336 1.344-3.68 3.68-1.408 2.368-1.408 5.152t1.408 5.184q1.344 2.304 3.68 3.68 2.368 1.376 5.152 1.376zM12.8 23.008v0z";
- const ICON_PATH_SUCCESS_NO_CIRCLE = "M1.952 18.080q-0.32-0.352-0.416-0.88t0.128-0.976l0.16-0.352q0.224-0.416 0.64-0.528t0.8 0.176l6.496 4.704q0.384 0.288 0.912 0.272t0.88-0.336l17.312-14.272q0.352-0.288 0.848-0.256t0.848 0.352l-0.416-0.416q0.32 0.352 0.32 0.816t-0.32 0.816l-18.656 18.912q-0.32 0.352-0.8 0.352t-0.8-0.32l-7.936-8.064z";
- const ICON_PATH_SUCCESS = "M15.808 0.16q-4.224 0-7.872 2.176-3.552 2.112-5.632 5.728-2.144 3.744-2.144 8.128 0 4.192 2.144 7.872 2.112 3.52 5.632 5.632 3.68 2.144 7.872 2.144 4.384 0 8.128-2.144 3.616-2.080 5.728-5.632 2.176-3.648 2.176-7.872 0-4.384-2.176-8.128-2.112-3.616-5.728-5.728-3.744-2.176-8.128-2.176zM24.832 11.328l-11.264 11.104q-0.032 0.032-0.112 0.032t-0.112-0.032l-5.216-5.376q-0.096-0.128 0-0.288l0.704-0.96q0.032-0.064 0.112-0.064t0.112 0.032l4.256 3.264q0.064 0.032 0.144 0.032t0.112-0.032l10.336-8.608q0.064-0.064 0.144-0.064t0.112 0.064l0.672 0.672q0.128 0.128 0 0.224z";
- const ICON_PATH_WAITING = "M15.84 0.096q-4.224 0-7.872 2.176-3.552 2.112-5.632 5.728-2.144 3.744-2.144 8.128 0 4.192 2.144 7.872 2.112 3.52 5.632 5.632 3.68 2.144 7.872 2.144 4.384 0 8.128-2.144 3.616-2.080 5.728-5.632 2.176-3.648 2.176-7.872 0-4.384-2.176-8.128-2.112-3.616-5.728-5.728-3.744-2.176-8.128-2.176zM23.008 21.92l-0.512 0.896q-0.096 0.128-0.224 0.064l-8-3.808q-0.096-0.064-0.16-0.128-0.128-0.096-0.128-0.288l0.512-12.096q0-0.064 0.048-0.112t0.112-0.048h1.376q0.064 0 0.112 0.048t0.048 0.112l0.448 10.848 6.304 4.256q0.064 0.064 0.080 0.128t-0.016 0.128z";
- const ICON_PATH_WARN = "M15.808 0.16q-4.224 0-7.872 2.176-3.552 2.112-5.632 5.728-2.144 3.744-2.144 8.128 0 4.192 2.144 7.872 2.112 3.52 5.632 5.632 3.68 2.144 7.872 2.144 4.384 0 8.128-2.144 3.616-2.080 5.728-5.632 2.176-3.648 2.176-7.872 0-4.384-2.176-8.128-2.112-3.616-5.728-5.728-3.744-2.176-8.128-2.176zM15.136 8.672h1.728q0.128 0 0.224 0.096t0.096 0.256l-0.384 10.24q0 0.064-0.048 0.112t-0.112 0.048h-1.248q-0.096 0-0.144-0.048t-0.048-0.112l-0.384-10.24q0-0.16 0.096-0.256t0.224-0.096zM16 23.328q-0.48 0-0.832-0.352t-0.352-0.848 0.352-0.848 0.832-0.352 0.832 0.352 0.352 0.848-0.352 0.848-0.832 0.352z";
- const ICON_PATH_BACK = "M21.781 7.844l-9.063 8.594 9.063 8.594q0.25 0.25 0.25 0.609t-0.25 0.578q-0.25 0.25-0.578 0.25t-0.578-0.25l-9.625-9.125q-0.156-0.125-0.203-0.297t-0.047-0.359q0-0.156 0.047-0.328t0.203-0.297l9.625-9.125q0.25-0.25 0.578-0.25t0.578 0.25q0.25 0.219 0.25 0.578t-0.25 0.578z";
- const ICON_PATH_CLOSE = "M17.25 16.156l7.375-7.313q0.281-0.281 0.281-0.641t-0.281-0.641q-0.25-0.25-0.625-0.25t-0.625 0.25l-7.375 7.344-7.313-7.344q-0.25-0.25-0.625-0.25t-0.625 0.25q-0.281 0.25-0.281 0.625t0.281 0.625l7.313 7.344-7.375 7.344q-0.281 0.25-0.281 0.625t0.281 0.625q0.125 0.125 0.281 0.188t0.344 0.063q0.156 0 0.328-0.063t0.297-0.188l7.375-7.344 7.375 7.406q0.125 0.156 0.297 0.219t0.328 0.063q0.188 0 0.344-0.078t0.281-0.203q0.281-0.25 0.281-0.609t-0.281-0.641l-7.375-7.406z";
- function createSvgIconVNode(path, color = "#000", size = 27) {
- return vue.createVNode(
- "svg",
- {
- width: size,
- height: size,
- viewBox: "0 0 32 32"
- },
- [
- vue.createVNode(
- "path",
- {
- d: path,
- fill: color
- },
- null,
- 8,
- ["d", "fill"]
- )
- ],
- 8,
- ["width", "height"]
- );
- }
- function useCurrentPageId() {
- {
- const { $pageInstance } = vue.getCurrentInstance();
- return $pageInstance && $pageInstance.proxy.$page.id;
- }
- }
- function getCurrentPage() {
- const pages = getCurrentPages();
- const len = pages.length;
- if (len) {
- return pages[len - 1];
- }
- }
- function getCurrentPageMeta() {
- const page = getCurrentPage();
- if (page) {
- return page.$page.meta;
- }
- }
- function getCurrentPageId() {
- const meta = getCurrentPageMeta();
- if (meta) {
- return meta.id;
- }
- return -1;
- }
- function getCurrentPageVm() {
- const page = getCurrentPage();
- if (page) {
- return page.$vm;
- }
- }
- const PAGE_META_KEYS = ["navigationBar", "pullToRefresh"];
- function initGlobalStyle() {
- return JSON.parse(JSON.stringify(__uniConfig.globalStyle || {}));
- }
- function initRouteMeta(pageMeta, id) {
- const globalStyle = initGlobalStyle();
- const res = shared.extend({ id }, globalStyle, pageMeta);
- PAGE_META_KEYS.forEach((name) => {
- res[name] = shared.extend({}, globalStyle[name], pageMeta[name]);
- });
- const { navigationBar } = res;
- navigationBar.titleText && navigationBar.titleImage && (navigationBar.titleText = "");
- return res;
- }
- function normalizePullToRefreshRpx(pullToRefresh) {
- if (pullToRefresh.offset) {
- pullToRefresh.offset = rpx2px(pullToRefresh.offset);
- }
- if (pullToRefresh.height) {
- pullToRefresh.height = rpx2px(pullToRefresh.height);
- }
- if (pullToRefresh.range) {
- pullToRefresh.range = rpx2px(pullToRefresh.range);
- }
- return pullToRefresh;
- }
- function initPageInternalInstance(openType, url, pageQuery, meta, eventChannel, themeMode) {
- const { id, route } = meta;
- const titleColor = uniShared.normalizeStyles(
- meta.navigationBar,
- __uniConfig.themeConfig,
- themeMode
- ).titleColor;
- return {
- id,
- path: uniShared.addLeadingSlash(route),
- route,
- fullPath: url,
- options: pageQuery,
- meta,
- openType,
- eventChannel,
- statusBarStyle: titleColor === "#ffffff" ? "light" : "dark"
- };
- }
- function invokeHook(vm, name, args) {
- if (shared.isString(vm)) {
- args = name;
- name = vm;
- vm = getCurrentPageVm();
- } else if (typeof vm === "number") {
- const page = getCurrentPages().find((page2) => page2.$page.id === vm);
- if (page) {
- vm = page.$vm;
- } else {
- vm = getCurrentPageVm();
- }
- }
- if (!vm) {
- return;
- }
- const hooks = vm.$[name];
- return hooks && uniShared.invokeArrayFns(hooks, args);
- }
- function getRealRoute(fromRoute, toRoute) {
- if (toRoute.indexOf("/") === 0) {
- return toRoute;
- }
- if (toRoute.indexOf("./") === 0) {
- return getRealRoute(fromRoute, toRoute.slice(2));
- }
- const toRouteArray = toRoute.split("/");
- const toRouteLength = toRouteArray.length;
- let i = 0;
- for (; i < toRouteLength && toRouteArray[i] === ".."; i++) {
- }
- toRouteArray.splice(0, i);
- toRoute = toRouteArray.join("/");
- const fromRouteArray = fromRoute.length > 0 ? fromRoute.split("/") : [];
- fromRouteArray.splice(fromRouteArray.length - i - 1, i + 1);
- return uniShared.addLeadingSlash(fromRouteArray.concat(toRouteArray).join("/"));
- }
- function getRouteOptions(path, alias = false) {
- if (alias) {
- return __uniRoutes.find(
- (route) => route.path === path || route.alias === path
- );
- }
- return __uniRoutes.find((route) => route.path === path);
- }
- function findUniTarget(target) {
- while (target && target.tagName.indexOf("UNI-") !== 0) {
- target = target.parentElement;
- }
- return target;
- }
- function createNativeEvent(evt, htmlElement = false) {
- const { type, timeStamp, target, currentTarget } = evt;
- let realTarget, realCurrentTarget;
- realTarget = uniShared.normalizeTarget(
- htmlElement ? target : findUniTarget(target)
- );
- realCurrentTarget = uniShared.normalizeTarget(currentTarget);
- const event = {
- type,
- timeStamp,
- target: realTarget,
- detail: {},
- currentTarget: realCurrentTarget
- };
- if (evt._stopped) {
- event._stopped = true;
- }
- if (evt.type.startsWith("touch")) {
- event.touches = evt.touches;
- event.changedTouches = evt.changedTouches;
- }
- {
- wrapperEvent(event, evt);
- }
- return event;
- }
- function wrapperEvent(event, evt) {
- shared.extend(event, {
- preventDefault() {
- return evt.preventDefault();
- },
- stopPropagation() {
- return evt.stopPropagation();
- }
- });
- }
- const invokeOnCallback = (name, res) => UniServiceJSBridge.emit("api." + name, res);
- let invokeViewMethodId = 1;
- function publishViewMethodName(pageId) {
- return (pageId || getCurrentPageId()) + "." + INVOKE_VIEW_API;
- }
- const invokeViewMethod = (name, args, pageId, callback) => {
- const { subscribe, publishHandler } = UniServiceJSBridge;
- const id = callback ? invokeViewMethodId++ : 0;
- callback && subscribe(INVOKE_VIEW_API + "." + id, callback, true);
- publishHandler(publishViewMethodName(pageId), { id, name, args }, pageId);
- };
- const invokeViewMethodKeepAlive = (name, args, callback, pageId) => {
- const { subscribe, unsubscribe, publishHandler } = UniServiceJSBridge;
- const id = invokeViewMethodId++;
- const subscribeName = INVOKE_VIEW_API + "." + id;
- subscribe(subscribeName, callback);
- publishHandler(publishViewMethodName(pageId), { id, name, args }, pageId);
- return () => {
- unsubscribe(subscribeName);
- };
- };
- const ServiceJSBridge = /* @__PURE__ */ shared.extend(
- /* @__PURE__ */ initBridge(
- "view"
- /* view 指的是 service 层订阅的是 view 层事件 */
- ),
- {
- invokeOnCallback,
- invokeViewMethod,
- invokeViewMethodKeepAlive
- }
- );
- function initAppVm(appVm2) {
- appVm2.$vm = appVm2;
- appVm2.$mpType = "app";
- const locale = vue.ref(useI18n().getLocale());
- Object.defineProperty(appVm2, "$locale", {
- get() {
- return locale.value;
- },
- set(v2) {
- locale.value = v2;
- }
- });
- }
- function initPageVm(pageVm, page) {
- pageVm.route = page.route;
- pageVm.$vm = pageVm;
- pageVm.$page = page;
- pageVm.$mpType = "page";
- if (page.meta.isTabBar) {
- pageVm.$.__isTabBar = true;
- pageVm.$.__isActive = true;
- }
- }
- function defineGlobalData(app, defaultGlobalData) {
- const options = app.$options || {};
- options.globalData = shared.extend(options.globalData || {}, defaultGlobalData);
- Object.defineProperty(app, "globalData", {
- get() {
- return options.globalData;
- },
- set(newGlobalData) {
- options.globalData = newGlobalData;
- }
- });
- }
- function converPx(value) {
- if (/^-?\d+[ur]px$/i.test(value)) {
- return value.replace(/(^-?\d+)[ur]px$/i, (text, num) => {
- return `${uni.upx2px(parseFloat(num))}px`;
- });
- } else if (/^-?[\d\.]+$/.test(value)) {
- return `${value}px`;
- }
- return value || "";
- }
- function converType(type) {
- return type.replace(/[A-Z]/g, (text) => {
- return `-${text.toLowerCase()}`;
- }).replace("webkit", "-webkit");
- }
- function getStyle(action) {
- const animateTypes1 = [
- "matrix",
- "matrix3d",
- "scale",
- "scale3d",
- "rotate3d",
- "skew",
- "translate",
- "translate3d"
- ];
- const animateTypes2 = [
- "scaleX",
- "scaleY",
- "scaleZ",
- "rotate",
- "rotateX",
- "rotateY",
- "rotateZ",
- "skewX",
- "skewY",
- "translateX",
- "translateY",
- "translateZ"
- ];
- const animateTypes3 = ["opacity", "background-color"];
- const animateTypes4 = ["width", "height", "left", "right", "top", "bottom"];
- const animates = action.animates;
- const option = action.option;
- const transition = option.transition;
- const style = {};
- const transform = [];
- animates.forEach((animate) => {
- let type = animate.type;
- let args = [...animate.args];
- if (animateTypes1.concat(animateTypes2).includes(type)) {
- if (type.startsWith("rotate") || type.startsWith("skew")) {
- args = args.map((value) => parseFloat(value) + "deg");
- } else if (type.startsWith("translate")) {
- args = args.map(converPx);
- }
- if (animateTypes2.indexOf(type) >= 0) {
- args.length = 1;
- }
- transform.push(`${type}(${args.join(",")})`);
- } else if (animateTypes3.concat(animateTypes4).includes(args[0])) {
- type = args[0];
- const value = args[1];
- style[type] = animateTypes4.includes(type) ? converPx(value) : value;
- }
- });
- style.transform = style.webkitTransform = transform.join(" ");
- style.transition = style.webkitTransition = Object.keys(style).map(
- (type) => `${converType(type)} ${transition.duration}ms ${transition.timingFunction} ${transition.delay}ms`
- ).join(",");
- style.transformOrigin = style.webkitTransformOrigin = option.transformOrigin;
- return style;
- }
- function startAnimation(context) {
- const animation2 = context.animation;
- if (!animation2 || !animation2.actions || !animation2.actions.length) {
- return;
- }
- let index2 = 0;
- const actions = animation2.actions;
- const length = animation2.actions.length;
- function animate() {
- const action = actions[index2];
- const transition = action.option.transition;
- const style = getStyle(action);
- Object.keys(style).forEach((key) => {
- context.$el.style[key] = style[key];
- });
- index2 += 1;
- if (index2 < length) {
- setTimeout(animate, transition.duration + transition.delay);
- }
- }
- setTimeout(() => {
- animate();
- }, 0);
- }
- const animation = {
- props: ["animation"],
- watch: {
- animation: {
- deep: true,
- handler() {
- startAnimation(this);
- }
- }
- },
- mounted() {
- startAnimation(this);
- }
- };
- const defineBuiltInComponent = (options) => {
- options.__reserved = true;
- const { props: props2, mixins } = options;
- if (!props2 || !props2.animation) {
- (mixins || (options.mixins = [])).push(animation);
- }
- return defineSystemComponent(options);
- };
- const defineSystemComponent = (options) => {
- options.__reserved = true;
- options.compatConfig = {
- MODE: 3
- // 标记为vue3
- };
- return vue.defineComponent(options);
- };
- const defineUnsupportedComponent = (name) => {
- return defineBuiltInComponent({
- name: shared.capitalize(shared.camelize(name)),
- setup() {
- return () => (vue.openBlock(), vue.createElementBlock("uni-" + name, null, name + " is unsupported"));
- }
- });
- };
- function withWebEvent(fn) {
- return fn.__wwe = true, fn;
- }
- function useCustomEvent(ref, emit2) {
- return (name, evt, detail) => {
- if (ref.value) {
- emit2(name, normalizeCustomEvent(name, evt, ref.value, detail || {}));
- }
- };
- }
- function useNativeEvent(emit2) {
- return (name, evt) => {
- emit2(name, createNativeEvent(evt));
- };
- }
- function normalizeCustomEvent(name, domEvt, el, detail) {
- let target;
- target = uniShared.normalizeTarget(el);
- return {
- type: detail.type || name,
- timeStamp: domEvt.timeStamp || 0,
- target,
- currentTarget: target,
- detail
- };
- }
- const hoverProps = {
- hoverClass: {
- type: String,
- default: "none"
- },
- hoverStopPropagation: {
- type: Boolean,
- default: false
- },
- hoverStartTime: {
- type: [Number, String],
- default: 50
- },
- hoverStayTime: {
- type: [Number, String],
- default: 400
- }
- };
- function useHover(props2) {
- const hovering = vue.ref(false);
- let hoverTouch = false;
- let hoverStartTimer;
- let hoverStayTimer;
- function hoverReset() {
- requestAnimationFrame(() => {
- clearTimeout(hoverStayTimer);
- hoverStayTimer = setTimeout(() => {
- hovering.value = false;
- }, parseInt(props2.hoverStayTime));
- });
- }
- function onTouchstartPassive(evt) {
- if (evt.touches.length > 1) {
- return;
- }
- handleHoverStart(evt);
- }
- function onMousedown(evt) {
- if (hoverTouch) {
- return;
- }
- handleHoverStart(evt);
- window.addEventListener("mouseup", handlePCHoverEnd);
- }
- function handleHoverStart(evt) {
- if (evt._hoverPropagationStopped) {
- return;
- }
- if (!props2.hoverClass || props2.hoverClass === "none" || props2.disabled) {
- return;
- }
- if (props2.hoverStopPropagation) {
- evt._hoverPropagationStopped = true;
- }
- hoverTouch = true;
- hoverStartTimer = setTimeout(() => {
- hovering.value = true;
- if (!hoverTouch) {
- hoverReset();
- }
- }, parseInt(props2.hoverStartTime));
- }
- function onTouchend() {
- handleHoverEnd();
- }
- function onMouseup() {
- if (!hoverTouch) {
- return;
- }
- handlePCHoverEnd();
- }
- function handleHoverEnd() {
- hoverTouch = false;
- if (hovering.value) {
- hoverReset();
- }
- }
- function handlePCHoverEnd() {
- handleHoverEnd();
- window.removeEventListener("mouseup", handlePCHoverEnd);
- }
- function onTouchcancel() {
- hoverTouch = false;
- hovering.value = false;
- clearTimeout(hoverStartTimer);
- }
- return {
- hovering,
- binding: {
- onTouchstartPassive: withWebEvent(onTouchstartPassive),
- onMousedown: withWebEvent(onMousedown),
- onTouchend: withWebEvent(onTouchend),
- onMouseup: withWebEvent(onMouseup),
- onTouchcancel: withWebEvent(onTouchcancel)
- }
- };
- }
- function useBooleanAttr(props2, keys) {
- if (shared.isString(keys)) {
- keys = [keys];
- }
- return keys.reduce((res, key) => {
- if (props2[key]) {
- res[key] = true;
- }
- return res;
- }, /* @__PURE__ */ Object.create(null));
- }
- function transformRpx(value) {
- if (/(-?(?:\d+\.)?\d+)[ur]px/gi.test(value)) {
- return value.replace(/(-?(?:\d+\.)?\d+)[ur]px/gi, (text, num) => {
- return `${uni.upx2px(parseFloat(num))}px`;
- });
- }
- return value;
- }
- class UniElement extends HTMLElement {
- constructor() {
- super();
- this._props = {};
- this.__isUniElement = true;
- }
- attachVmProps(props2) {
- this._props = props2;
- }
- getAttribute(qualifiedName) {
- const name = shared.camelize(qualifiedName);
- return name in this._props ? this._props[name] + "" : super.getAttribute(qualifiedName) || null;
- }
- get style() {
- const originalStyle = super.style;
- if (originalStyle.__patchRpx__) {
- return originalStyle;
- }
- originalStyle.__patchRpx__ = true;
- const originalSetProperty = originalStyle.setProperty.bind(originalStyle);
- super.style.setProperty = function(property, value, priority) {
- return originalSetProperty(
- property,
- value ? transformRpx(value + "") : value,
- priority || void 0
- );
- };
- return super.style;
- }
- get tagName() {
- return super.tagName.replace(/^UNI-/, "");
- }
- get nodeName() {
- return super.nodeName.replace(/^UNI-/, "");
- }
- }
- const uniFormKey = PolySymbol(process.env.NODE_ENV !== "production" ? "uniForm" : "uf");
- class UniFormElement extends UniElement {
- }
- const index$D = /* @__PURE__ */ defineBuiltInComponent({
- name: "Form",
- emits: ["submit", "reset"],
- setup(_props, {
- slots,
- emit: emit2
- }) {
- const rootRef = vue.ref(null);
- provideForm(useCustomEvent(rootRef, emit2));
- return () => vue.createVNode("uni-form", {
- "ref": rootRef
- }, [vue.createVNode("span", null, [slots.default && slots.default()])], 512);
- }
- });
- function provideForm(trigger) {
- const fields2 = [];
- vue.provide(uniFormKey, {
- addField(field) {
- fields2.push(field);
- },
- removeField(field) {
- fields2.splice(fields2.indexOf(field), 1);
- },
- submit(evt) {
- trigger("submit", evt, {
- value: fields2.reduce((res, field) => {
- if (field.submit) {
- const [name, value] = field.submit();
- name && (res[name] = value);
- }
- return res;
- }, /* @__PURE__ */ Object.create(null))
- });
- },
- reset(evt) {
- fields2.forEach((field) => field.reset && field.reset());
- trigger("reset", evt);
- }
- });
- return fields2;
- }
- const labelProps = {
- for: {
- type: String,
- default: ""
- }
- };
- const uniLabelKey = PolySymbol(process.env.NODE_ENV !== "production" ? "uniLabel" : "ul");
- function useProvideLabel() {
- const handlers = [];
- vue.provide(uniLabelKey, {
- addHandler(handler) {
- handlers.push(handler);
- },
- removeHandler(handler) {
- handlers.splice(handlers.indexOf(handler), 1);
- }
- });
- return handlers;
- }
- class UniLabelElement extends UniElement {
- }
- const index$C = /* @__PURE__ */ defineBuiltInComponent({
- name: "Label",
- props: labelProps,
- setup(props2, {
- slots
- }) {
- const rootRef = vue.ref(null);
- const pageId = useCurrentPageId();
- const handlers = useProvideLabel();
- const pointer = vue.computed(() => props2.for || slots.default && slots.default.length);
- const _onClick = withWebEvent(($event) => {
- const EventTarget = $event.target;
- let stopPropagation = /^uni-(checkbox|radio|switch)-/.test(EventTarget.className);
- if (!stopPropagation) {
- stopPropagation = /^uni-(checkbox|radio|switch|button)$|^(svg|path)$/i.test(EventTarget.tagName);
- }
- if (stopPropagation) {
- return;
- }
- if (props2.for) {
- UniViewJSBridge.emit("uni-label-click-" + pageId + "-" + props2.for, $event, true);
- } else {
- handlers.length && handlers[0]($event, true);
- }
- });
- return () => vue.createVNode("uni-label", {
- "ref": rootRef,
- "class": {
- "uni-label-pointer": pointer
- },
- "onClick": _onClick
- }, [slots.default && slots.default()], 10, ["onClick"]);
- }
- });
- const buttonProps = {
- id: {
- type: String,
- default: ""
- },
- hoverClass: {
- type: String,
- default: "button-hover"
- },
- hoverStartTime: {
- type: [Number, String],
- default: 20
- },
- hoverStayTime: {
- type: [Number, String],
- default: 70
- },
- hoverStopPropagation: {
- type: Boolean,
- default: false
- },
- disabled: {
- type: [Boolean, String],
- default: false
- },
- formType: {
- type: String,
- default: ""
- },
- openType: {
- type: String,
- default: ""
- },
- loading: {
- type: [Boolean, String],
- default: false
- },
- plain: {
- type: [Boolean, String],
- default: false
- }
- };
- class UniButtonElement extends UniElement {
- }
- const index$B = /* @__PURE__ */ defineBuiltInComponent({
- name: "Button",
- props: buttonProps,
- setup(props2, {
- slots
- }) {
- const rootRef = vue.ref(null);
- const uniForm = vue.inject(uniFormKey, false);
- const {
- hovering,
- binding
- } = useHover(props2);
- useI18n();
- const onClick = withWebEvent((e2, isLabelClick) => {
- if (props2.disabled) {
- return e2.stopImmediatePropagation();
- }
- if (isLabelClick) {
- rootRef.value.click();
- }
- const formType = props2.formType;
- if (formType) {
- if (!uniForm) {
- return;
- }
- if (formType === "submit") {
- uniForm.submit(e2);
- } else if (formType === "reset") {
- uniForm.reset(e2);
- }
- return;
- }
- });
- const uniLabel = vue.inject(uniLabelKey, false);
- if (uniLabel) {
- uniLabel.addHandler(onClick);
- }
- return () => {
- const hoverClass = props2.hoverClass;
- const booleanAttrs = useBooleanAttr(props2, "disabled");
- const loadingAttrs = useBooleanAttr(props2, "loading");
- const plainAttrs = useBooleanAttr(props2, "plain");
- const hasHoverClass = hoverClass && hoverClass !== "none";
- return vue.createVNode("uni-button", vue.mergeProps({
- "ref": rootRef,
- "onClick": onClick,
- "id": props2.id,
- "class": hasHoverClass && hovering.value ? hoverClass : ""
- }, hasHoverClass && binding, booleanAttrs, loadingAttrs, plainAttrs), [slots.default && slots.default()], 16, ["onClick", "id"]);
- };
- }
- });
- function addBase(filePath) {
- const { base: baseUrl } = __uniConfig.router;
- if (uniShared.addLeadingSlash(filePath).indexOf(baseUrl) === 0) {
- return uniShared.addLeadingSlash(filePath);
- }
- return baseUrl + filePath;
- }
- function getRealPath(filePath) {
- const { base, assets } = __uniConfig.router;
- if (base === "./") {
- if (filePath.indexOf("./static/") === 0 || assets && filePath.indexOf("./" + assets + "/") === 0) {
- filePath = filePath.slice(1);
- }
- }
- if (filePath.indexOf("/") === 0) {
- if (filePath.indexOf("//") === 0) {
- filePath = "https:" + filePath;
- } else {
- return addBase(filePath.slice(1));
- }
- }
- if (uniShared.SCHEME_RE.test(filePath) || uniShared.DATA_RE.test(filePath) || filePath.indexOf("blob:") === 0) {
- return filePath;
- }
- {
- if (process.env.NODE_ENV !== "production") {
- if (!filePath.includes("/static/")) {
- return filePath;
- }
- }
- }
- const pages = getCurrentPages();
- if (pages.length) {
- return addBase(
- getRealRoute(pages[pages.length - 1].$page.route, filePath).slice(1)
- );
- }
- return filePath;
- }
- const HTTP_METHODS = [
- "GET",
- "OPTIONS",
- "HEAD",
- "POST",
- "PUT",
- "DELETE",
- "TRACE",
- "CONNECT",
- "PATCH"
- ];
- function elemInArray(str, arr) {
- if (!str || arr.indexOf(str) === -1) {
- return arr[0];
- }
- return str;
- }
- function validateProtocolFail(name, msg) {
- console.warn(`${name}: ${msg}`);
- }
- function validateProtocol(name, data, protocol, onFail) {
- if (!onFail) {
- onFail = validateProtocolFail;
- }
- for (const key in protocol) {
- const errMsg = validateProp(
- key,
- data[key],
- protocol[key],
- !shared.hasOwn(data, key)
- );
- if (shared.isString(errMsg)) {
- onFail(name, errMsg);
- }
- }
- }
- function validateProtocols(name, args, protocol, onFail) {
- if (!protocol) {
- return;
- }
- if (!shared.isArray(protocol)) {
- return validateProtocol(
- name,
- args[0] || /* @__PURE__ */ Object.create(null),
- protocol,
- onFail
- );
- }
- const len = protocol.length;
- const argsLen = args.length;
- for (let i = 0; i < len; i++) {
- const opts = protocol[i];
- const data = /* @__PURE__ */ Object.create(null);
- if (argsLen > i) {
- data[opts.name] = args[i];
- }
- validateProtocol(name, data, { [opts.name]: opts }, onFail);
- }
- }
- function validateProp(name, value, prop, isAbsent) {
- if (!shared.isPlainObject(prop)) {
- prop = { type: prop };
- }
- const { type, required, validator } = prop;
- if (required && isAbsent) {
- return 'Missing required args: "' + name + '"';
- }
- if (value == null && !required) {
- return;
- }
- if (type != null) {
- let isValid = false;
- const types = shared.isArray(type) ? type : [type];
- const expectedTypes = [];
- for (let i = 0; i < types.length && !isValid; i++) {
- const { valid, expectedType } = assertType(value, types[i]);
- expectedTypes.push(expectedType || "");
- isValid = valid;
- }
- if (!isValid) {
- return getInvalidTypeMessage(name, value, expectedTypes);
- }
- }
- if (validator) {
- return validator(value);
- }
- }
- const isSimpleType = /* @__PURE__ */ shared.makeMap(
- "String,Number,Boolean,Function,Symbol"
- );
- function assertType(value, type) {
- let valid;
- const expectedType = getType(type);
- if (isSimpleType(expectedType)) {
- const t2 = typeof value;
- valid = t2 === expectedType.toLowerCase();
- if (!valid && t2 === "object") {
- valid = value instanceof type;
- }
- } else if (expectedType === "Object") {
- valid = shared.isObject(value);
- } else if (expectedType === "Array") {
- valid = shared.isArray(value);
- } else {
- {
- valid = value instanceof type;
- }
- }
- return {
- valid,
- expectedType
- };
- }
- function getInvalidTypeMessage(name, value, expectedTypes) {
- let message = `Invalid args: type check failed for args "${name}". Expected ${expectedTypes.map(shared.capitalize).join(", ")}`;
- const expectedType = expectedTypes[0];
- const receivedType = shared.toRawType(value);
- const expectedValue = styleValue(value, expectedType);
- const receivedValue = styleValue(value, receivedType);
- if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {
- message += ` with value ${expectedValue}`;
- }
- message += `, got ${receivedType} `;
- if (isExplicable(receivedType)) {
- message += `with value ${receivedValue}.`;
- }
- return message;
- }
- function getType(ctor) {
- const match = ctor && ctor.toString().match(/^\s*function (\w+)/);
- return match ? match[1] : "";
- }
- function styleValue(value, type) {
- if (type === "String") {
- return `"${value}"`;
- } else if (type === "Number") {
- return `${Number(value)}`;
- } else {
- return `${value}`;
- }
- }
- function isExplicable(type) {
- const explicitTypes = ["string", "number", "boolean"];
- return explicitTypes.some((elem) => type.toLowerCase() === elem);
- }
- function isBoolean(...args) {
- return args.some((elem) => elem.toLowerCase() === "boolean");
- }
- function tryCatch(fn) {
- return function() {
- try {
- return fn.apply(fn, arguments);
- } catch (e2) {
- console.error(e2);
- }
- };
- }
- let invokeCallbackId = 1;
- const invokeCallbacks = {};
- function addInvokeCallback(id, name, callback, keepAlive = false) {
- invokeCallbacks[id] = {
- name,
- keepAlive,
- callback
- };
- return id;
- }
- function invokeCallback(id, res, extras) {
- if (typeof id === "number") {
- const opts = invokeCallbacks[id];
- if (opts) {
- if (!opts.keepAlive) {
- delete invokeCallbacks[id];
- }
- return opts.callback(res, extras);
- }
- }
- return res;
- }
- const API_SUCCESS = "success";
- const API_FAIL = "fail";
- const API_COMPLETE = "complete";
- function getApiCallbacks(args) {
- const apiCallbacks = {};
- for (const name in args) {
- const fn = args[name];
- if (shared.isFunction(fn)) {
- apiCallbacks[name] = tryCatch(fn);
- delete args[name];
- }
- }
- return apiCallbacks;
- }
- function normalizeErrMsg$1(errMsg, name) {
- if (!errMsg || errMsg.indexOf(":fail") === -1) {
- return name + ":ok";
- }
- return name + errMsg.substring(errMsg.indexOf(":fail"));
- }
- function createAsyncApiCallback(name, args = {}, { beforeAll, beforeSuccess } = {}) {
- if (!shared.isPlainObject(args)) {
- args = {};
- }
- const { success, fail, complete } = getApiCallbacks(args);
- const hasSuccess = shared.isFunction(success);
- const hasFail = shared.isFunction(fail);
- const hasComplete = shared.isFunction(complete);
- const callbackId = invokeCallbackId++;
- addInvokeCallback(callbackId, name, (res) => {
- res = res || {};
- res.errMsg = normalizeErrMsg$1(res.errMsg, name);
- shared.isFunction(beforeAll) && beforeAll(res);
- if (res.errMsg === name + ":ok") {
- shared.isFunction(beforeSuccess) && beforeSuccess(res, args);
- hasSuccess && success(res);
- } else {
- hasFail && fail(res);
- }
- hasComplete && complete(res);
- });
- return callbackId;
- }
- const HOOK_SUCCESS = "success";
- const HOOK_FAIL = "fail";
- const HOOK_COMPLETE = "complete";
- const globalInterceptors = {};
- const scopedInterceptors = {};
- function wrapperHook(hook, params) {
- return function(data) {
- return hook(data, params) || data;
- };
- }
- function queue(hooks, data, params) {
- let promise = false;
- for (let i = 0; i < hooks.length; i++) {
- const hook = hooks[i];
- if (promise) {
- promise = Promise.resolve(wrapperHook(hook, params));
- } else {
- const res = hook(data, params);
- if (shared.isPromise(res)) {
- promise = Promise.resolve(res);
- }
- if (res === false) {
- return {
- then() {
- },
- catch() {
- }
- };
- }
- }
- }
- return promise || {
- then(callback) {
- return callback(data);
- },
- catch() {
- }
- };
- }
- function wrapperOptions(interceptors, options = {}) {
- [HOOK_SUCCESS, HOOK_FAIL, HOOK_COMPLETE].forEach((name) => {
- const hooks = interceptors[name];
- if (!shared.isArray(hooks)) {
- return;
- }
- const oldCallback = options[name];
- options[name] = function callbackInterceptor(res) {
- queue(hooks, res, options).then((res2) => {
- return shared.isFunction(oldCallback) && oldCallback(res2) || res2;
- });
- };
- });
- return options;
- }
- function wrapperReturnValue(method, returnValue) {
- const returnValueHooks = [];
- if (shared.isArray(globalInterceptors.returnValue)) {
- returnValueHooks.push(...globalInterceptors.returnValue);
- }
- const interceptor = scopedInterceptors[method];
- if (interceptor && shared.isArray(interceptor.returnValue)) {
- returnValueHooks.push(...interceptor.returnValue);
- }
- returnValueHooks.forEach((hook) => {
- returnValue = hook(returnValue) || returnValue;
- });
- return returnValue;
- }
- function getApiInterceptorHooks(method) {
- const interceptor = /* @__PURE__ */ Object.create(null);
- Object.keys(globalInterceptors).forEach((hook) => {
- if (hook !== "returnValue") {
- interceptor[hook] = globalInterceptors[hook].slice();
- }
- });
- const scopedInterceptor = scopedInterceptors[method];
- if (scopedInterceptor) {
- Object.keys(scopedInterceptor).forEach((hook) => {
- if (hook !== "returnValue") {
- interceptor[hook] = (interceptor[hook] || []).concat(
- scopedInterceptor[hook]
- );
- }
- });
- }
- return interceptor;
- }
- function invokeApi(method, api2, options, params) {
- const interceptor = getApiInterceptorHooks(method);
- if (interceptor && Object.keys(interceptor).length) {
- if (shared.isArray(interceptor.invoke)) {
- const res = queue(interceptor.invoke, options);
- return res.then((options2) => {
- return api2(
- wrapperOptions(getApiInterceptorHooks(method), options2),
- ...params
- );
- });
- } else {
- return api2(wrapperOptions(interceptor, options), ...params);
- }
- }
- return api2(options, ...params);
- }
- function hasCallback(args) {
- if (shared.isPlainObject(args) && [API_SUCCESS, API_FAIL, API_COMPLETE].find(
- (cb) => shared.isFunction(args[cb])
- )) {
- return true;
- }
- return false;
- }
- function handlePromise(promise) {
- return promise;
- }
- function promisify(name, fn) {
- return (args = {}, ...rest) => {
- if (hasCallback(args)) {
- return wrapperReturnValue(name, invokeApi(name, fn, args, rest));
- }
- return wrapperReturnValue(
- name,
- handlePromise(
- new Promise((resolve, reject) => {
- invokeApi(
- name,
- fn,
- shared.extend(args, { success: resolve, fail: reject }),
- rest
- );
- })
- )
- );
- };
- }
- function formatApiArgs(args, options) {
- const params = args[0];
- if (!options || !shared.isPlainObject(options.formatArgs) && shared.isPlainObject(params)) {
- return;
- }
- const formatArgs = options.formatArgs;
- const keys = Object.keys(formatArgs);
- for (let i = 0; i < keys.length; i++) {
- const name = keys[i];
- const formatterOrDefaultValue = formatArgs[name];
- if (shared.isFunction(formatterOrDefaultValue)) {
- const errMsg = formatterOrDefaultValue(args[0][name], params);
- if (shared.isString(errMsg)) {
- return errMsg;
- }
- } else {
- if (!shared.hasOwn(params, name)) {
- params[name] = formatterOrDefaultValue;
- }
- }
- }
- }
- function invokeSuccess(id, name, res) {
- const result = {
- errMsg: name + ":ok"
- };
- result.errSubject = name;
- return invokeCallback(id, shared.extend(res || {}, result));
- }
- function invokeFail(id, name, errMsg, errRes = {}) {
- const apiErrMsg = name + ":fail" + (errMsg ? " " + errMsg : "");
- return invokeCallback(
- id,
- typeof UniError !== "undefined" ? typeof errRes.errCode !== "undefined" ? new UniError(name, errRes.errCode, apiErrMsg) : new UniError(apiErrMsg, errRes) : shared.extend({ errMsg: apiErrMsg }, errRes)
- );
- }
- function beforeInvokeApi(name, args, protocol, options) {
- if (process.env.NODE_ENV !== "production") {
- validateProtocols(name, args, protocol);
- }
- if (options && options.beforeInvoke) {
- const errMsg2 = options.beforeInvoke(args);
- if (shared.isString(errMsg2)) {
- return errMsg2;
- }
- }
- const errMsg = formatApiArgs(args, options);
- if (errMsg) {
- return errMsg;
- }
- }
- function normalizeErrMsg(errMsg) {
- if (!errMsg || shared.isString(errMsg)) {
- return errMsg;
- }
- if (errMsg.stack) {
- console.error(errMsg.message + uniShared.LINEFEED + errMsg.stack);
- return errMsg.message;
- }
- return errMsg;
- }
- function wrapperTaskApi(name, fn, protocol, options) {
- return (args) => {
- const id = createAsyncApiCallback(name, args, options);
- const errMsg = beforeInvokeApi(name, [args], protocol, options);
- if (errMsg) {
- return invokeFail(id, name, errMsg);
- }
- return fn(args, {
- resolve: (res) => invokeSuccess(id, name, res),
- reject: (errMsg2, errRes) => invokeFail(id, name, normalizeErrMsg(errMsg2), errRes)
- });
- };
- }
- function wrapperSyncApi(name, fn, protocol, options) {
- return (...args) => {
- const errMsg = beforeInvokeApi(name, args, protocol, options);
- if (errMsg) {
- throw new Error(errMsg);
- }
- return fn.apply(null, args);
- };
- }
- function wrapperAsyncApi(name, fn, protocol, options) {
- return wrapperTaskApi(name, fn, protocol, options);
- }
- function defineTaskApi(name, fn, protocol, options) {
- return promisify(
- name,
- wrapperTaskApi(name, fn, process.env.NODE_ENV !== "production" ? protocol : void 0, options)
- );
- }
- function defineSyncApi(name, fn, protocol, options) {
- return wrapperSyncApi(
- name,
- fn,
- process.env.NODE_ENV !== "production" ? protocol : void 0,
- options
- );
- }
- function defineAsyncApi(name, fn, protocol, options) {
- return promisify(
- name,
- wrapperAsyncApi(name, fn, process.env.NODE_ENV !== "production" ? protocol : void 0, options)
- );
- }
- const API_ON_TAB_BAR_MID_BUTTON_TAP = "onTabBarMidButtonTap";
- const API_GET_LOCALE = "getLocale";
- const getLocale = /* @__PURE__ */ defineSyncApi(
- API_GET_LOCALE,
- () => {
- const app = getApp({ allowDefault: true });
- if (app && app.$vm) {
- return app.$vm.$locale;
- }
- return useI18n().getLocale();
- }
- );
- const API_GET_STORAGE = "getStorage";
- const GetStorageProtocol = {
- key: {
- type: String,
- required: true
- }
- };
- const API_GET_STORAGE_SYNC = "getStorageSync";
- const GetStorageSyncProtocol = [
- {
- name: "key",
- type: String,
- required: true
- }
- ];
- const API_SET_STORAGE = "setStorage";
- const SetStorageProtocol = {
- key: {
- type: String,
- required: true
- },
- data: {
- required: true
- }
- };
- const API_SET_STORAGE_SYNC = "setStorageSync";
- const SetStorageSyncProtocol = [
- {
- name: "key",
- type: String,
- required: true
- },
- {
- name: "data",
- required: true
- }
- ];
- const API_REMOVE_STORAGE = "removeStorage";
- const RemoveStorageProtocol = GetStorageProtocol;
- const RemoveStorageSyncProtocol = GetStorageSyncProtocol;
- const API_REQUEST = "request";
- const dataType = {
- JSON: "json"
- };
- const RESPONSE_TYPE = ["text", "arraybuffer"];
- const DEFAULT_RESPONSE_TYPE = "text";
- const encode = encodeURIComponent;
- function stringifyQuery(url, data) {
- let str = url.split("#");
- const hash = str[1] || "";
- str = str[0].split("?");
- let query = str[1] || "";
- url = str[0];
- const search = query.split("&").filter((item) => item);
- const params = {};
- search.forEach((item) => {
- const part = item.split("=");
- params[part[0]] = part[1];
- });
- for (const key in data) {
- if (shared.hasOwn(data, key)) {
- let v2 = data[key];
- if (typeof v2 === "undefined" || v2 === null) {
- v2 = "";
- } else if (shared.isPlainObject(v2)) {
- v2 = JSON.stringify(v2);
- }
- params[encode(key)] = encode(v2);
- }
- }
- query = Object.keys(params).map((item) => `${item}=${params[item]}`).join("&");
- return url + (query ? "?" + query : "") + (hash ? "#" + hash : "");
- }
- const RequestProtocol = {
- method: String,
- data: [Object, String, Array, ArrayBuffer],
- url: {
- type: String,
- required: true
- },
- header: Object,
- dataType: String,
- responseType: String,
- withCredentials: Boolean
- };
- const RequestOptions = {
- formatArgs: {
- method(value, params) {
- params.method = elemInArray(
- (value || "").toUpperCase(),
- HTTP_METHODS
- );
- },
- data(value, params) {
- params.data = value || "";
- },
- url(value, params) {
- if (params.method === HTTP_METHODS[0] && shared.isPlainObject(params.data) && Object.keys(params.data).length) {
- params.url = stringifyQuery(value, params.data);
- }
- },
- header(value, params) {
- const header = params.header = value || {};
- if (params.method !== HTTP_METHODS[0]) {
- if (!Object.keys(header).find(
- (key) => key.toLowerCase() === "content-type"
- )) {
- header["Content-Type"] = "application/json";
- }
- }
- },
- dataType(value, params) {
- params.dataType = (value || dataType.JSON).toLowerCase();
- },
- responseType(value, params) {
- params.responseType = (value || "").toLowerCase();
- if (RESPONSE_TYPE.indexOf(params.responseType) === -1) {
- params.responseType = DEFAULT_RESPONSE_TYPE;
- }
- }
- }
- };
- const API_SET_NAVIGATION_BAR_COLOR = "setNavigationBarColor";
- const API_SET_NAVIGATION_BAR_TITLE = "setNavigationBarTitle";
- const SetNavigationBarTitleProtocol = {
- title: {
- type: String,
- required: true
- }
- };
- const API_SHOW_NAVIGATION_BAR_LOADING = "showNavigationBarLoading";
- const API_HIDE_NAVIGATION_BAR_LOADING = "hideNavigationBarLoading";
- function saveImage(base64, dirname, callback) {
- callback(null, base64);
- }
- const files = {};
- function urlToFile(url, local) {
- const file = files[url];
- if (file) {
- return Promise.resolve(file);
- }
- if (/^data:[a-z-]+\/[a-z-]+;base64,/.test(url)) {
- return Promise.resolve(base64ToFile(url));
- }
- if (local) {
- return Promise.reject(new Error("not find"));
- }
- return new Promise((resolve, reject) => {
- const xhr = new XMLHttpRequest();
- xhr.open("GET", url, true);
- xhr.responseType = "blob";
- xhr.onload = function() {
- resolve(this.response);
- };
- xhr.onerror = reject;
- xhr.send();
- });
- }
- function base64ToFile(base64) {
- const base64Array = base64.split(",");
- const res = base64Array[0].match(/:(.*?);/);
- const type = res ? res[1] : "";
- const str = atob(base64Array[1]);
- let n = str.length;
- const array = new Uint8Array(n);
- while (n--) {
- array[n] = str.charCodeAt(n);
- }
- return blobToFile(array, type);
- }
- function getExtname(type) {
- const extname = type.split("/")[1];
- return extname ? `.${extname}` : "";
- }
- function blobToFile(blob, type) {
- let file;
- if (blob instanceof File) {
- file = blob;
- } else {
- type = type || blob.type || "";
- const filename = `${Date.now()}${getExtname(type)}`;
- try {
- file = new File([blob], filename, { type });
- } catch (error) {
- blob = blob instanceof Blob ? blob : new Blob([blob], { type });
- file = blob;
- file.name = file.name || filename;
- }
- }
- return file;
- }
- function fileToUrl(file) {
- for (const key in files) {
- if (shared.hasOwn(files, key)) {
- const oldFile = files[key];
- if (oldFile === file) {
- return key;
- }
- }
- }
- var url = (window.URL || window.webkitURL).createObjectURL(file);
- files[url] = file;
- return url;
- }
- function getSameOriginUrl(url) {
- const a = document.createElement("a");
- a.href = url;
- if (a.origin === location.origin) {
- return Promise.resolve(url);
- }
- return urlToFile(url).then(fileToUrl);
- }
- const inflateRaw = (...args) => {
- };
- const deflateRaw = (...args) => {
- };
- const ResizeSensor = /* @__PURE__ */ defineBuiltInComponent({
- name: "ResizeSensor",
- props: {
- initial: {
- type: Boolean,
- default: false
- }
- },
- emits: ["resize"],
- setup(props2, {
- emit: emit2
- }) {
- const rootRef = vue.ref(null);
- const reset = useResizeSensorReset(rootRef);
- const update = useResizeSensorUpdate(rootRef, emit2, reset);
- return () => vue.createVNode("uni-resize-sensor", {
- "ref": rootRef,
- "onAnimationstartOnce": update
- }, [vue.createVNode("div", {
- "onScroll": update
- }, [vue.createVNode("div", null, null)], 40, ["onScroll"]), vue.createVNode("div", {
- "onScroll": update
- }, [vue.createVNode("div", null, null)], 40, ["onScroll"])], 40, ["onAnimationstartOnce"]);
- }
- });
- function useResizeSensorUpdate(rootRef, emit2, reset) {
- const size = vue.reactive({
- width: -1,
- height: -1
- });
- vue.watch(() => shared.extend({}, size), (value) => emit2("resize", value));
- return () => {
- const rootEl = rootRef.value;
- size.width = rootEl.offsetWidth;
- size.height = rootEl.offsetHeight;
- reset();
- };
- }
- function useResizeSensorReset(rootRef) {
- return () => {
- const {
- firstElementChild,
- lastElementChild
- } = rootRef.value;
- firstElementChild.scrollLeft = 1e5;
- firstElementChild.scrollTop = 1e5;
- lastElementChild.scrollLeft = 1e5;
- lastElementChild.scrollTop = 1e5;
- };
- }
- const pixelRatio = 1;
- function wrapper(canvas, hidpi = true) {
- const pixel_ratio = hidpi ? pixelRatio : 1;
- canvas.width = canvas.offsetWidth * pixel_ratio;
- canvas.height = canvas.offsetHeight * pixel_ratio;
- canvas.getContext("2d").__hidpi__ = hidpi;
- }
- const initHidpiOnce = /* @__PURE__ */ uniShared.once(() => {
- return void 0;
- });
- function $getRealPath(src) {
- return src ? getRealPath(src) : src;
- }
- function resolveColor(color) {
- color = color.slice(0);
- color[3] = color[3] / 255;
- return "rgba(" + color.join(",") + ")";
- }
- function processTouches(rect, touches) {
- Array.from(touches).forEach((touch) => {
- touch.x = touch.clientX - rect.left;
- touch.y = touch.clientY - rect.top;
- });
- }
- let tempCanvas;
- function getTempCanvas(width = 0, height = 0) {
- if (!tempCanvas) {
- tempCanvas = document.createElement("canvas");
- }
- tempCanvas.width = width;
- tempCanvas.height = height;
- return tempCanvas;
- }
- const props$q = {
- canvasId: {
- type: String,
- default: ""
- },
- disableScroll: {
- type: [Boolean, String],
- default: false
- },
- hidpi: {
- type: Boolean,
- default: true
- }
- };
- class UniCanvasElement extends UniElement {
- }
- const index$A = /* @__PURE__ */ defineBuiltInComponent({
- inheritAttrs: false,
- name: "Canvas",
- compatConfig: {
- MODE: 3
- },
- props: props$q,
- computed: {
- id() {
- return this.canvasId;
- }
- },
- setup(props2, {
- emit: emit2,
- slots
- }) {
- initHidpiOnce();
- const rootRef = vue.ref(null);
- const canvas = vue.ref(null);
- const sensor = vue.ref(null);
- const actionsWaiting = vue.ref(false);
- const trigger = useNativeEvent(emit2);
- const {
- $attrs,
- $excludeAttrs,
- $listeners
- } = useAttrs({
- excludeListeners: true
- });
- const {
- _listeners
- } = useListeners(props2, $listeners, trigger);
- const {
- _handleSubscribe,
- _resize
- } = useMethods(props2, canvas, actionsWaiting);
- useSubscribe(_handleSubscribe, useContextInfo(props2.canvasId));
- return () => {
- const {
- canvasId,
- disableScroll
- } = props2;
- return vue.createVNode("uni-canvas", vue.mergeProps({
- "ref": rootRef,
- "canvas-id": canvasId,
- "disable-scroll": disableScroll
- }, $attrs.value, $excludeAttrs.value, _listeners.value), [vue.createVNode("canvas", {
- "ref": canvas,
- "class": "uni-canvas-canvas",
- "width": "300",
- "height": "150"
- }, null, 512), vue.createVNode("div", {
- "style": "position: absolute;top: 0;left: 0;width: 100%;height: 100%;overflow: hidden;"
- }, [slots.default && slots.default()]), vue.createVNode(ResizeSensor, {
- "ref": sensor,
- "onResize": _resize
- }, null, 8, ["onResize"])], 16, ["canvas-id", "disable-scroll"]);
- };
- }
- });
- function useListeners(props2, Listeners, trigger) {
- const _listeners = vue.computed(() => {
- let events = ["onTouchstart", "onTouchmove", "onTouchend"];
- let _$listeners = Listeners.value;
- let $listeners = shared.extend({}, (() => {
- let obj = {};
- for (const key in _$listeners) {
- if (shared.hasOwn(_$listeners, key)) {
- const event = _$listeners[key];
- obj[key] = event;
- }
- }
- return obj;
- })());
- events.forEach((event) => {
- let existing = $listeners[event];
- let eventHandler = [];
- if (existing) {
- eventHandler.push(withWebEvent(($event) => {
- const rect = $event.currentTarget.getBoundingClientRect();
- processTouches(rect, $event.touches);
- processTouches(rect, $event.changedTouches);
- trigger(event.replace("on", "").toLocaleLowerCase(), $event);
- }));
- }
- if (props2.disableScroll && event === "onTouchmove") {
- eventHandler.push(onEventPrevent);
- }
- $listeners[event] = eventHandler;
- });
- return $listeners;
- });
- return {
- _listeners
- };
- }
- function useMethods(props2, canvasRef, actionsWaiting) {
- let _actionsDefer = [];
- let _images = {};
- const _pixelRatio = vue.computed(() => props2.hidpi ? pixelRatio : 1);
- function _resize(size) {
- let canvas = canvasRef.value;
- var hasChanged = !size || canvas.width !== Math.floor(size.width * _pixelRatio.value) || canvas.height !== Math.floor(size.height * _pixelRatio.value);
- if (!hasChanged)
- return;
- if (canvas.width > 0 && canvas.height > 0) {
- let context = canvas.getContext("2d");
- let imageData = context.getImageData(0, 0, canvas.width, canvas.height);
- wrapper(canvas, props2.hidpi);
- context.putImageData(imageData, 0, 0);
- } else {
- wrapper(canvas, props2.hidpi);
- }
- }
- function actionsChanged({
- actions,
- reserve
- }, resolve) {
- if (!actions) {
- return;
- }
- if (actionsWaiting.value) {
- _actionsDefer.push([actions, reserve]);
- return;
- }
- let canvas = canvasRef.value;
- let c2d = canvas.getContext("2d");
- if (!reserve) {
- c2d.fillStyle = "#000000";
- c2d.strokeStyle = "#000000";
- c2d.shadowColor = "#000000";
- c2d.shadowBlur = 0;
- c2d.shadowOffsetX = 0;
- c2d.shadowOffsetY = 0;
- c2d.setTransform(1, 0, 0, 1, 0, 0);
- c2d.clearRect(0, 0, canvas.width, canvas.height);
- }
- preloadImage(actions);
- for (let index2 = 0; index2 < actions.length; index2++) {
- const action = actions[index2];
- let method = action.method;
- const data = action.data;
- const actionType = data[0];
- if (/^set/.test(method) && method !== "setTransform") {
- const method1 = method[3].toLowerCase() + method.slice(4);
- let color;
- if (method1 === "fillStyle" || method1 === "strokeStyle") {
- if (actionType === "normal") {
- color = resolveColor(data[1]);
- } else if (actionType === "linear") {
- const LinearGradient = c2d.createLinearGradient(...data[1]);
- data[2].forEach(function(data2) {
- const offset = data2[0];
- const color2 = resolveColor(data2[1]);
- LinearGradient.addColorStop(offset, color2);
- });
- color = LinearGradient;
- } else if (actionType === "radial") {
- let _data = data[1];
- const x = _data[0];
- const y = _data[1];
- const r = _data[2];
- const LinearGradient = c2d.createRadialGradient(x, y, 0, x, y, r);
- data[2].forEach(function(data2) {
- const offset = data2[0];
- const color2 = resolveColor(data2[1]);
- LinearGradient.addColorStop(offset, color2);
- });
- color = LinearGradient;
- } else if (actionType === "pattern") {
- const loaded = checkImageLoaded(data[1], actions.slice(index2 + 1), resolve, function(image) {
- if (image) {
- c2d[method1] = c2d.createPattern(image, data[2]);
- }
- });
- if (!loaded) {
- break;
- }
- continue;
- }
- c2d[method1] = color;
- } else if (method1 === "globalAlpha") {
- c2d[method1] = Number(actionType) / 255;
- } else if (method1 === "shadow") {
- let shadowArray = ["shadowOffsetX", "shadowOffsetY", "shadowBlur", "shadowColor"];
- data.forEach(function(color_, method_) {
- c2d[shadowArray[method_]] = shadowArray[method_] === "shadowColor" ? resolveColor(color_) : color_;
- });
- } else if (method1 === "fontSize") {
- const font = c2d.__font__ || c2d.font;
- c2d.__font__ = c2d.font = font.replace(/\d+\.?\d*px/, actionType + "px");
- } else if (method1 === "lineDash") {
- c2d.setLineDash(actionType);
- c2d.lineDashOffset = data[1] || 0;
- } else if (method1 === "textBaseline") {
- if (actionType === "normal") {
- data[0] = "alphabetic";
- }
- c2d[method1] = actionType;
- } else if (method1 === "font") {
- c2d.__font__ = c2d.font = actionType;
- } else {
- c2d[method1] = actionType;
- }
- } else if (method === "fillPath" || method === "strokePath") {
- method = method.replace(/Path/, "");
- c2d.beginPath();
- data.forEach(function(data_) {
- c2d[data_.method].apply(c2d, data_.data);
- });
- c2d[method]();
- } else if (method === "fillText") {
- c2d.fillText.apply(c2d, data);
- } else if (method === "drawImage") {
- let drawImage = function() {
- let dataArray = [...data];
- let url = dataArray[0];
- let otherData = dataArray.slice(1);
- _images = _images || {};
- if (!checkImageLoaded(url, actions.slice(index2 + 1), resolve, function(image) {
- if (image) {
- c2d.drawImage.apply(
- c2d,
- // @ts-ignore
- [image].concat(
- // @ts-ignore
- [...otherData.slice(4, 8)],
- [...otherData.slice(0, 4)]
- )
- );
- }
- }))
- return "break";
- }();
- if (drawImage === "break") {
- break;
- }
- } else {
- if (method === "clip") {
- data.forEach(function(data_) {
- c2d[data_.method].apply(c2d, data_.data);
- });
- c2d.clip();
- } else {
- c2d[method].apply(c2d, data);
- }
- }
- }
- if (!actionsWaiting.value) {
- resolve({
- errMsg: "drawCanvas:ok"
- });
- }
- }
- function preloadImage(actions) {
- actions.forEach(function(action) {
- let method = action.method;
- let data = action.data;
- let src = "";
- if (method === "drawImage") {
- src = data[0];
- src = $getRealPath(src);
- data[0] = src;
- } else if (method === "setFillStyle" && data[0] === "pattern") {
- src = data[1];
- src = $getRealPath(src);
- data[1] = src;
- }
- if (src && !_images[src]) {
- loadImage();
- }
- function loadImage() {
- const image = _images[src] = new Image();
- image.onload = function() {
- image.ready = true;
- };
- getSameOriginUrl(src).then((src2) => {
- image.src = src2;
- }).catch(() => {
- image.src = src;
- });
- }
- });
- }
- function checkImageLoaded(src, actions, resolve, fn) {
- let image = _images[src];
- if (image.ready) {
- fn(image);
- return true;
- } else {
- _actionsDefer.unshift([actions, true]);
- actionsWaiting.value = true;
- image.onload = function() {
- image.ready = true;
- fn(image);
- actionsWaiting.value = false;
- let actions2 = _actionsDefer.slice(0);
- _actionsDefer = [];
- for (let action = actions2.shift(); action; ) {
- actionsChanged({
- actions: action[0],
- reserve: action[1]
- }, resolve);
- action = actions2.shift();
- }
- };
- return false;
- }
- }
- function getImageData({
- x = 0,
- y = 0,
- width,
- height,
- destWidth,
- destHeight,
- hidpi = true,
- dataType: dataType2,
- quality = 1,
- type = "png"
- }, resolve) {
- const canvas = canvasRef.value;
- let data;
- const maxWidth = canvas.offsetWidth - x;
- width = width ? Math.min(width, maxWidth) : maxWidth;
- const maxHeight = canvas.offsetHeight - y;
- height = height ? Math.min(height, maxHeight) : maxHeight;
- if (!hidpi) {
- if (!destWidth && !destHeight) {
- destWidth = Math.round(width * _pixelRatio.value);
- destHeight = Math.round(height * _pixelRatio.value);
- } else if (!destWidth) {
- destWidth = Math.round(width / height * destHeight);
- } else if (!destHeight) {
- destHeight = Math.round(height / width * destWidth);
- }
- } else {
- destWidth = width;
- destHeight = height;
- }
- const newCanvas = getTempCanvas(destWidth, destHeight);
- const context = newCanvas.getContext("2d");
- if (type === "jpeg" || type === "jpg") {
- type = "jpeg";
- context.fillStyle = "#fff";
- context.fillRect(0, 0, destWidth, destHeight);
- }
- context.__hidpi__ = true;
- context.drawImageByCanvas(canvas, x, y, width, height, 0, 0, destWidth, destHeight, false);
- let result;
- try {
- let compressed;
- if (dataType2 === "base64") {
- data = newCanvas.toDataURL(`image/${type}`, quality);
- } else {
- const imgData = context.getImageData(0, 0, destWidth, destHeight);
- if (false)
- ;
- else {
- data = Array.prototype.slice.call(imgData.data);
- }
- }
- result = {
- data,
- compressed,
- width: destWidth,
- height: destHeight
- };
- } catch (error) {
- result = {
- errMsg: `canvasGetImageData:fail ${error}`
- };
- }
- newCanvas.height = newCanvas.width = 0;
- context.__hidpi__ = false;
- if (!resolve) {
- return result;
- } else {
- resolve(result);
- }
- }
- function putImageData({
- data,
- x,
- y,
- width,
- height,
- compressed
- }, resolve) {
- try {
- if (false)
- ;
- if (!height) {
- height = Math.round(data.length / 4 / width);
- }
- const canvas = getTempCanvas(width, height);
- const context = canvas.getContext("2d");
- context.putImageData(new ImageData(new Uint8ClampedArray(data), width, height), 0, 0);
- canvasRef.value.getContext("2d").drawImage(canvas, x, y, width, height);
- canvas.height = canvas.width = 0;
- } catch (error) {
- resolve({
- errMsg: "canvasPutImageData:fail"
- });
- return;
- }
- resolve({
- errMsg: "canvasPutImageData:ok"
- });
- }
- function toTempFilePath({
- x = 0,
- y = 0,
- width,
- height,
- destWidth,
- destHeight,
- fileType,
- quality,
- dirname
- }, resolve) {
- const res = getImageData({
- x,
- y,
- width,
- height,
- destWidth,
- destHeight,
- hidpi: false,
- dataType: "base64",
- type: fileType,
- quality
- });
- if (!res.data || !res.data.length) {
- resolve({
- errMsg: res.errMsg.replace("canvasPutImageData", "toTempFilePath")
- });
- return;
- }
- saveImage(res.data, dirname, (error, tempFilePath) => {
- let errMsg = `toTempFilePath:${error ? "fail" : "ok"}`;
- if (error) {
- errMsg += ` ${error.message}`;
- }
- resolve({
- errMsg,
- tempFilePath
- });
- });
- }
- const methods = {
- actionsChanged,
- getImageData,
- putImageData,
- toTempFilePath
- };
- function _handleSubscribe(type, data, resolve) {
- let method = methods[type];
- if (type.indexOf("_") !== 0 && shared.isFunction(method)) {
- method(data, resolve);
- }
- }
- return shared.extend(methods, {
- _resize,
- _handleSubscribe
- });
- }
- const uniCheckGroupKey = PolySymbol(process.env.NODE_ENV !== "production" ? "uniCheckGroup" : "ucg");
- const props$p = {
- name: {
- type: String,
- default: ""
- }
- };
- class UniCheckboxGroupElement extends UniElement {
- }
- const index$z = /* @__PURE__ */ defineBuiltInComponent({
- name: "CheckboxGroup",
- props: props$p,
- emits: ["change"],
- setup(props2, {
- emit: emit2,
- slots
- }) {
- const rootRef = vue.ref(null);
- const trigger = useCustomEvent(rootRef, emit2);
- useProvideCheckGroup(props2, trigger);
- return () => {
- return vue.createVNode("uni-checkbox-group", {
- "ref": rootRef
- }, [slots.default && slots.default()], 512);
- };
- }
- });
- function useProvideCheckGroup(props2, trigger) {
- const fields2 = [];
- const getFieldsValue = () => fields2.reduce((res, field) => {
- if (field.value.checkboxChecked) {
- res.push(field.value.value);
- }
- return res;
- }, new Array());
- vue.provide(uniCheckGroupKey, {
- addField(field) {
- fields2.push(field);
- },
- removeField(field) {
- fields2.splice(fields2.indexOf(field), 1);
- },
- checkboxChange($event) {
- trigger("change", $event, {
- value: getFieldsValue()
- });
- }
- });
- const uniForm = vue.inject(uniFormKey, false);
- if (uniForm) {
- uniForm.addField({
- submit: () => {
- let data = ["", null];
- if (props2.name !== "") {
- data[0] = props2.name;
- data[1] = getFieldsValue();
- }
- return data;
- }
- });
- }
- return getFieldsValue;
- }
- const props$o = {
- checked: {
- type: [Boolean, String],
- default: false
- },
- id: {
- type: String,
- default: ""
- },
- disabled: {
- type: [Boolean, String],
- default: false
- },
- value: {
- type: String,
- default: ""
- },
- color: {
- type: String,
- default: "#007aff"
- },
- backgroundColor: {
- type: String,
- default: ""
- },
- borderColor: {
- type: String,
- default: ""
- },
- activeBackgroundColor: {
- type: String,
- default: ""
- },
- activeBorderColor: {
- type: String,
- default: ""
- },
- iconColor: {
- type: String,
- default: ""
- }
- };
- class UniCheckboxElement extends UniElement {
- }
- const index$y = /* @__PURE__ */ defineBuiltInComponent({
- name: "Checkbox",
- props: props$o,
- setup(props2, {
- slots
- }) {
- const rootRef = vue.ref(null);
- const checkboxChecked = vue.ref(props2.checked);
- const checkboxCheckedBool = vue.computed(() => {
- return checkboxChecked.value === "true" || checkboxChecked.value === true;
- });
- const checkboxValue = vue.ref(props2.value);
- function getCheckBoxStyle(checked) {
- if (props2.disabled) {
- return {
- backgroundColor: "#E1E1E1",
- borderColor: "#D1D1D1"
- };
- }
- const style = {};
- if (checked) {
- if (props2.activeBorderColor)
- style.borderColor = props2.activeBorderColor;
- if (props2.activeBackgroundColor)
- style.backgroundColor = props2.activeBackgroundColor;
- } else {
- if (props2.borderColor)
- style.borderColor = props2.borderColor;
- if (props2.backgroundColor)
- style.backgroundColor = props2.backgroundColor;
- }
- return style;
- }
- const checkboxStyle = vue.computed(() => {
- return getCheckBoxStyle(checkboxCheckedBool.value);
- });
- vue.watch([() => props2.checked, () => props2.value], ([newChecked, newModelValue]) => {
- checkboxChecked.value = newChecked;
- checkboxValue.value = newModelValue;
- });
- const reset = () => {
- checkboxChecked.value = false;
- };
- const {
- uniCheckGroup,
- uniLabel
- } = useCheckboxInject(checkboxChecked, checkboxValue, reset);
- const _onClick = ($event) => {
- if (props2.disabled) {
- return;
- }
- checkboxChecked.value = !checkboxChecked.value;
- uniCheckGroup && uniCheckGroup.checkboxChange($event);
- $event.stopPropagation();
- };
- if (!!uniLabel) {
- uniLabel.addHandler(_onClick);
- }
- return () => {
- const booleanAttrs = useBooleanAttr(props2, "disabled");
- let realCheckValue;
- realCheckValue = checkboxChecked.value;
- return vue.createVNode("uni-checkbox", vue.mergeProps(booleanAttrs, {
- "id": props2.id,
- "onClick": _onClick,
- "ref": rootRef
- }), [vue.createVNode("div", {
- "class": "uni-checkbox-wrapper",
- "style": {
- "--HOVER-BD-COLOR": props2.activeBorderColor
- }
- }, [vue.createVNode("div", {
- "class": ["uni-checkbox-input", {
- "uni-checkbox-input-disabled": props2.disabled
- }],
- "style": checkboxStyle.value
- }, [realCheckValue ? createSvgIconVNode(ICON_PATH_SUCCESS_NO_CIRCLE, props2.disabled ? "#ADADAD" : props2.iconColor || props2.color, 22) : ""], 6), slots.default && slots.default()], 4)], 16, ["id", "onClick"]);
- };
- }
- });
- function useCheckboxInject(checkboxChecked, checkboxValue, reset) {
- const field = vue.computed(() => ({
- checkboxChecked: Boolean(checkboxChecked.value),
- value: checkboxValue.value
- }));
- const formField = {
- reset
- };
- const uniCheckGroup = vue.inject(uniCheckGroupKey, false);
- if (!!uniCheckGroup) {
- uniCheckGroup.addField(field);
- }
- const uniForm = vue.inject(uniFormKey, false);
- if (!!uniForm) {
- uniForm.addField(formField);
- }
- const uniLabel = vue.inject(uniLabelKey, false);
- return {
- uniCheckGroup,
- uniForm,
- uniLabel
- };
- }
- let resetTimer;
- function iosHideKeyboard() {
- }
- const props$n = {
- cursorSpacing: {
- type: [Number, String],
- default: 0
- },
- showConfirmBar: {
- type: [Boolean, String],
- default: "auto"
- },
- adjustPosition: {
- type: [Boolean, String],
- default: true
- },
- autoBlur: {
- type: [Boolean, String],
- default: false
- }
- };
- const emit$1 = ["keyboardheightchange"];
- function useKeyboard$1(props2, elRef, trigger) {
- function initKeyboard(el) {
- const isApple = vue.computed(
- () => String(navigator.vendor).indexOf("Apple") === 0
- );
- el.addEventListener("focus", () => {
- clearTimeout(resetTimer);
- document.addEventListener("click", iosHideKeyboard, false);
- });
- const onKeyboardHide = () => {
- document.removeEventListener("click", iosHideKeyboard, false);
- if (isApple.value) {
- document.documentElement.scrollTo(
- document.documentElement.scrollLeft,
- document.documentElement.scrollTop
- );
- }
- };
- el.addEventListener("blur", () => {
- if (isApple.value) {
- el.blur();
- }
- onKeyboardHide();
- });
- }
- vue.watch(
- () => elRef.value,
- (el) => el && initKeyboard(el)
- );
- }
- var startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/;
- var endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/;
- var attr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;
- var empty = /* @__PURE__ */ makeMap(
- "area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr"
- );
- var block = /* @__PURE__ */ makeMap(
- "a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video"
- );
- var inline = /* @__PURE__ */ makeMap(
- "abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"
- );
- var closeSelf = /* @__PURE__ */ makeMap(
- "colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"
- );
- var fillAttrs = /* @__PURE__ */ makeMap(
- "checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"
- );
- var special = /* @__PURE__ */ makeMap("script,style");
- function HTMLParser(html, handler) {
- var index2;
- var chars;
- var match;
- var stack = [];
- var last = html;
- stack.last = function() {
- return this[this.length - 1];
- };
- while (html) {
- chars = true;
- if (!stack.last() || !special[stack.last()]) {
- if (html.indexOf("<!--") == 0) {
- index2 = html.indexOf("-->");
- if (index2 >= 0) {
- if (handler.comment) {
- handler.comment(html.substring(4, index2));
- }
- html = html.substring(index2 + 3);
- chars = false;
- }
- } else if (html.indexOf("</") == 0) {
- match = html.match(endTag);
- if (match) {
- html = html.substring(match[0].length);
- match[0].replace(endTag, parseEndTag);
- chars = false;
- }
- } else if (html.indexOf("<") == 0) {
- match = html.match(startTag);
- if (match) {
- html = html.substring(match[0].length);
- match[0].replace(startTag, parseStartTag);
- chars = false;
- }
- }
- if (chars) {
- index2 = html.indexOf("<");
- var text = index2 < 0 ? html : html.substring(0, index2);
- html = index2 < 0 ? "" : html.substring(index2);
- if (handler.chars) {
- handler.chars(text);
- }
- }
- } else {
- html = html.replace(
- new RegExp("([\\s\\S]*?)</" + stack.last() + "[^>]*>"),
- function(all, text2) {
- text2 = text2.replace(
- /<!--([\s\S]*?)-->|<!\[CDATA\[([\s\S]*?)]]>/g,
- "$1$2"
- );
- if (handler.chars) {
- handler.chars(text2);
- }
- return "";
- }
- );
- parseEndTag("", stack.last());
- }
- if (html == last) {
- throw "Parse Error: " + html;
- }
- last = html;
- }
- parseEndTag();
- function parseStartTag(tag, tagName, rest, unary) {
- tagName = tagName.toLowerCase();
- if (block[tagName]) {
- while (stack.last() && inline[stack.last()]) {
- parseEndTag("", stack.last());
- }
- }
- if (closeSelf[tagName] && stack.last() == tagName) {
- parseEndTag("", tagName);
- }
- unary = empty[tagName] || !!unary;
- if (!unary) {
- stack.push(tagName);
- }
- if (handler.start) {
- var attrs = [];
- rest.replace(attr, function(match2, name) {
- var value = arguments[2] ? arguments[2] : arguments[3] ? arguments[3] : arguments[4] ? arguments[4] : fillAttrs[name] ? name : "";
- attrs.push({
- name,
- value,
- escaped: value.replace(/(^|[^\\])"/g, '$1\\"')
- // "
- });
- });
- if (handler.start) {
- handler.start(tagName, attrs, unary);
- }
- }
- }
- function parseEndTag(tag, tagName) {
- if (!tagName) {
- var pos = 0;
- } else {
- for (var pos = stack.length - 1; pos >= 0; pos--) {
- if (stack[pos] == tagName) {
- break;
- }
- }
- }
- if (pos >= 0) {
- for (var i = stack.length - 1; i >= pos; i--) {
- if (handler.end) {
- handler.end(stack[i]);
- }
- }
- stack.length = pos;
- }
- }
- }
- function makeMap(str) {
- var obj = {};
- var items = str.split(",");
- for (var i = 0; i < items.length; i++) {
- obj[items[i]] = true;
- }
- return obj;
- }
- function useQuill(props2, rootRef, trigger) {
- vue.watch(
- () => props2.readOnly,
- (value) => {
- }
- );
- vue.watch(
- () => props2.placeholder,
- (value) => {
- }
- );
- useContextInfo();
- useSubscribe();
- }
- const props$m = /* @__PURE__ */ shared.extend({}, props$n, {
- id: {
- type: String,
- default: ""
- },
- readOnly: {
- type: [Boolean, String],
- default: false
- },
- placeholder: {
- type: String,
- default: ""
- },
- showImgSize: {
- type: [Boolean, String],
- default: false
- },
- showImgToolbar: {
- type: [Boolean, String],
- default: false
- },
- showImgResize: {
- type: [Boolean, String],
- default: false
- }
- });
- class UniEditorElement extends UniElement {
- }
- const index$x = /* @__PURE__ */ defineBuiltInComponent({
- name: "Editor",
- props: props$m,
- emit: ["ready", "focus", "blur", "input", "statuschange", ...emit$1],
- setup(props2, {
- emit: emit2
- }) {
- const rootRef = vue.ref(null);
- useQuill(props2);
- useKeyboard$1(props2, rootRef);
- return () => {
- return vue.createVNode("uni-editor", {
- "ref": rootRef,
- "id": props2.id,
- "class": "ql-container"
- }, null, 8, ["id"]);
- };
- }
- });
- const INFO_COLOR = "#10aeff";
- const WARN_COLOR = "#f76260";
- const GREY_COLOR = "#b2b2b2";
- const CANCEL_COLOR = "#f43530";
- const ICONS = {
- success: {
- d: ICON_PATH_SUCCESS,
- c: uniShared.PRIMARY_COLOR
- },
- success_no_circle: {
- d: ICON_PATH_SUCCESS_NO_CIRCLE,
- c: uniShared.PRIMARY_COLOR
- },
- info: {
- d: ICON_PATH_INFO,
- c: INFO_COLOR
- },
- warn: {
- d: ICON_PATH_WARN,
- c: WARN_COLOR
- },
- waiting: {
- d: ICON_PATH_WAITING,
- c: INFO_COLOR
- },
- cancel: {
- d: ICON_PATH_CANCEL,
- c: CANCEL_COLOR
- },
- download: {
- d: ICON_PATH_DOWNLOAD,
- c: uniShared.PRIMARY_COLOR
- },
- search: {
- d: ICON_PATH_SEARCH,
- c: GREY_COLOR
- },
- clear: {
- d: ICON_PATH_CLEAR,
- c: GREY_COLOR
- }
- };
- class UniIconElement extends UniElement {
- }
- const index$w = /* @__PURE__ */ defineBuiltInComponent({
- name: "Icon",
- props: {
- type: {
- type: String,
- required: true,
- default: ""
- },
- size: {
- type: [String, Number],
- default: 23
- },
- color: {
- type: String,
- default: ""
- }
- },
- setup(props2) {
- const rootRef = vue.ref(null);
- const path = vue.computed(() => ICONS[props2.type]);
- return () => {
- const {
- value
- } = path;
- return vue.createVNode("uni-icon", {
- "ref": rootRef
- }, [value && value.d && createSvgIconVNode(value.d, props2.color || value.c, rpx2px(props2.size))], 512);
- };
- }
- });
- const props$l = {
- src: {
- type: String,
- default: ""
- },
- mode: {
- type: String,
- default: "scaleToFill"
- },
- lazyLoad: {
- type: [Boolean, String],
- default: false
- },
- draggable: {
- type: Boolean,
- default: false
- }
- };
- const FIX_MODES = {
- widthFix: ["offsetWidth", "height", (value, ratio) => value / ratio],
- heightFix: ["offsetHeight", "width", (value, ratio) => value * ratio]
- };
- const IMAGE_MODES = {
- aspectFit: ["center center", "contain"],
- aspectFill: ["center center", "cover"],
- widthFix: [, "100% 100%"],
- heightFix: [, "100% 100%"],
- top: ["center top"],
- bottom: ["center bottom"],
- center: ["center center"],
- left: ["left center"],
- right: ["right center"],
- "top left": ["left top"],
- "top right": ["right top"],
- "bottom left": ["left bottom"],
- "bottom right": ["right bottom"]
- };
- class UniImageElement extends UniElement {
- }
- const index$v = /* @__PURE__ */ defineBuiltInComponent({
- name: "Image",
- props: props$l,
- setup(props2, {
- emit: emit2
- }) {
- const rootRef = vue.ref(null);
- const state = useImageState(rootRef, props2);
- const trigger = useCustomEvent(rootRef, emit2);
- const {
- fixSize
- } = useImageSize(rootRef, props2, state);
- useImageLoader(state, props2, rootRef, fixSize, trigger);
- return () => {
- return vue.createVNode("uni-image", {
- "ref": rootRef
- }, [vue.createVNode("div", {
- "style": state.modeStyle
- }, null, 4), FIX_MODES[props2.mode] ? (
- // @ts-ignore
- vue.createVNode(ResizeSensor, {
- "onResize": fixSize
- }, null, 8, ["onResize"])
- ) : vue.createVNode("span", null, null)], 512);
- };
- }
- });
- function useImageState(rootRef, props2) {
- const imgSrc = vue.ref("");
- const modeStyleRef = vue.computed(() => {
- let size = "auto";
- let position = "";
- const opts = IMAGE_MODES[props2.mode];
- if (!opts) {
- position = "0% 0%";
- size = "100% 100%";
- } else {
- opts[0] && (position = opts[0]);
- opts[1] && (size = opts[1]);
- }
- return `background-image:${imgSrc.value ? 'url("' + imgSrc.value + '")' : "none"};background-position:${position};background-size:${size};`;
- });
- const state = vue.reactive({
- rootEl: rootRef,
- src: vue.computed(() => props2.src ? getRealPath(props2.src) : ""),
- origWidth: 0,
- origHeight: 0,
- origStyle: {
- width: "",
- height: ""
- },
- modeStyle: modeStyleRef,
- imgSrc
- });
- return state;
- }
- function useImageLoader(state, props2, rootRef, fixSize, trigger) {
- let img;
- let draggableImg;
- const setState = (width = 0, height = 0, imgSrc = "") => {
- state.origWidth = width;
- state.origHeight = height;
- state.imgSrc = imgSrc;
- };
- const loadImage = (src) => {
- if (!src) {
- resetImage();
- setState();
- return;
- }
- img = img || new Image();
- img.onload = (evt) => {
- const {
- width,
- height
- } = img;
- setState(width, height, src);
- fixSize();
- img.draggable = props2.draggable;
- if (draggableImg) {
- draggableImg.remove();
- }
- draggableImg = img;
- rootRef.value.appendChild(img);
- resetImage();
- trigger("load", evt, {
- width,
- height
- });
- };
- img.onerror = (evt) => {
- setState();
- resetImage();
- trigger("error", evt, {
- errMsg: `GET ${state.src} 404 (Not Found)`
- });
- };
- img.src = src;
- };
- const resetImage = () => {
- if (img) {
- img.onload = null;
- img.onerror = null;
- img = null;
- }
- };
- vue.watch(() => state.src, (value) => loadImage(value));
- vue.watch(() => state.imgSrc, (value) => {
- if (!value && draggableImg) {
- draggableImg.remove();
- draggableImg = null;
- }
- });
- }
- function fixNumber(num) {
- return num;
- }
- function useImageSize(rootRef, props2, state) {
- const fixSize = () => {
- const {
- mode: mode2
- } = props2;
- const names = FIX_MODES[mode2];
- if (!names) {
- return;
- }
- const {
- origWidth,
- origHeight
- } = state;
- const ratio = origWidth && origHeight ? origWidth / origHeight : 0;
- if (!ratio) {
- return;
- }
- const rootEl = rootRef.value;
- const value = rootEl[names[0]];
- if (value) {
- rootEl.style[names[1]] = fixNumber(names[2](value, ratio)) + "px";
- }
- };
- const resetSize = () => {
- const {
- style
- } = rootRef.value;
- const {
- origStyle: {
- width,
- height
- }
- } = state;
- style.width = width;
- style.height = height;
- };
- vue.watch(() => props2.mode, (value, oldValue) => {
- if (FIX_MODES[oldValue]) {
- resetSize();
- }
- if (FIX_MODES[value]) {
- fixSize();
- }
- });
- return {
- fixSize,
- resetSize
- };
- }
- function throttle(fn, wait) {
- let last = 0;
- let timeout;
- let waitCallback;
- const newFn = function(...arg) {
- const now = Date.now();
- clearTimeout(timeout);
- waitCallback = () => {
- waitCallback = null;
- last = now;
- fn.apply(this, arg);
- };
- if (now - last < wait) {
- timeout = setTimeout(waitCallback, wait - (now - last));
- return;
- }
- waitCallback();
- };
- newFn.cancel = function() {
- clearTimeout(timeout);
- waitCallback = null;
- };
- newFn.flush = function() {
- clearTimeout(timeout);
- waitCallback && waitCallback();
- };
- return newFn;
- }
- function useUserAction() {
- const state = vue.reactive({
- /**
- * 是否用户激活
- */
- userAction: false
- });
- return {
- state
- };
- }
- function useScopedAttrs() {
- const state = vue.reactive({
- attrs: {}
- });
- return {
- state
- };
- }
- function useFormField(nameKey, value) {
- const uniForm = vue.inject(
- uniFormKey,
- false
- // remove warning
- );
- if (!uniForm) {
- return;
- }
- const instance = vue.getCurrentInstance();
- const ctx = {
- submit() {
- const proxy = instance.proxy;
- return [
- proxy[nameKey],
- shared.isString(value) ? proxy[value] : value.value
- ];
- },
- reset() {
- if (shared.isString(value)) {
- instance.proxy[value] = "";
- } else {
- value.value = "";
- }
- }
- };
- uniForm.addField(ctx);
- }
- function getSelectedTextRange(_, resolve) {
- const activeElement = document.activeElement;
- if (!activeElement) {
- return resolve({});
- }
- const data = {};
- if (["input", "textarea"].includes(activeElement.tagName.toLowerCase())) {
- data.start = activeElement.selectionStart;
- data.end = activeElement.selectionEnd;
- }
- resolve(data);
- }
- const UniViewJSBridgeSubscribe = function() {
- registerViewMethod(
- getCurrentPageId(),
- "getSelectedTextRange",
- getSelectedTextRange
- );
- };
- function getValueString(value, type) {
- if (type === "number" && isNaN(Number(value))) {
- value = "";
- }
- return value === null ? "" : String(value);
- }
- const INPUT_MODES = [
- "none",
- "text",
- "decimal",
- "numeric",
- "tel",
- "search",
- "email",
- "url"
- ];
- const props$k = /* @__PURE__ */ shared.extend(
- {},
- {
- name: {
- type: String,
- default: ""
- },
- modelValue: {
- type: [String, Number],
- default: ""
- },
- value: {
- type: [String, Number],
- default: ""
- },
- disabled: {
- type: [Boolean, String],
- default: false
- },
- /**
- * 已废弃属性,用于历史兼容
- */
- autoFocus: {
- type: [Boolean, String],
- default: false
- },
- focus: {
- type: [Boolean, String],
- default: false
- },
- cursor: {
- type: [Number, String],
- default: -1
- },
- selectionStart: {
- type: [Number, String],
- default: -1
- },
- selectionEnd: {
- type: [Number, String],
- default: -1
- },
- type: {
- type: String,
- default: "text"
- },
- password: {
- type: [Boolean, String],
- default: false
- },
- placeholder: {
- type: String,
- default: ""
- },
- placeholderStyle: {
- type: String,
- default: ""
- },
- placeholderClass: {
- type: String,
- default: ""
- },
- maxlength: {
- type: [Number, String],
- default: 140
- },
- confirmType: {
- type: String,
- default: "done"
- },
- confirmHold: {
- type: Boolean,
- default: false
- },
- ignoreCompositionEvent: {
- type: Boolean,
- default: true
- },
- step: {
- type: String,
- default: "0.000000000000000001"
- },
- inputmode: {
- type: String,
- default: void 0,
- validator: (value) => !!~INPUT_MODES.indexOf(value)
- },
- cursorColor: {
- type: String,
- default: ""
- }
- },
- props$n
- );
- const emit = [
- "input",
- "focus",
- "blur",
- "update:value",
- "update:modelValue",
- "update:focus",
- "compositionstart",
- "compositionupdate",
- "compositionend",
- ...emit$1
- ];
- function useBase(props2, rootRef, emit2) {
- const fieldRef = vue.ref(null);
- const trigger = useCustomEvent(rootRef, emit2);
- const selectionStart = vue.computed(() => {
- const selectionStart2 = Number(props2.selectionStart);
- return isNaN(selectionStart2) ? -1 : selectionStart2;
- });
- const selectionEnd = vue.computed(() => {
- const selectionEnd2 = Number(props2.selectionEnd);
- return isNaN(selectionEnd2) ? -1 : selectionEnd2;
- });
- const cursor = vue.computed(() => {
- const cursor2 = Number(props2.cursor);
- return isNaN(cursor2) ? -1 : cursor2;
- });
- const maxlength = vue.computed(() => {
- var maxlength2 = Number(props2.maxlength);
- return isNaN(maxlength2) ? 140 : maxlength2;
- });
- const value = getValueString(props2.modelValue, props2.type) || getValueString(props2.value, props2.type);
- const state = vue.reactive({
- value,
- valueOrigin: value,
- maxlength,
- focus: props2.focus,
- composing: false,
- selectionStart,
- selectionEnd,
- cursor
- });
- vue.watch(
- () => state.focus,
- (val) => emit2("update:focus", val)
- );
- vue.watch(
- () => state.maxlength,
- (val) => state.value = state.value.slice(0, val)
- );
- return {
- fieldRef,
- state,
- trigger
- };
- }
- function useValueSync(props2, state, emit2, trigger) {
- const valueChangeFn = uniShared.debounce(
- (val) => {
- state.value = getValueString(val, props2.type);
- },
- 100,
- { setTimeout, clearTimeout }
- );
- vue.watch(() => props2.modelValue, valueChangeFn);
- vue.watch(() => props2.value, valueChangeFn);
- const triggerInputFn = throttle((event, detail) => {
- valueChangeFn.cancel();
- emit2("update:modelValue", detail.value);
- emit2("update:value", detail.value);
- trigger("input", event, detail);
- }, 100);
- const triggerInput = (event, detail, force) => {
- valueChangeFn.cancel();
- triggerInputFn(event, detail);
- if (force) {
- triggerInputFn.flush();
- }
- };
- return {
- trigger,
- triggerInput
- };
- }
- function useAutoFocus(props2, fieldRef) {
- useUserAction();
- const needFocus = vue.computed(() => props2.autoFocus || props2.focus);
- function focus() {
- if (!needFocus.value) {
- return;
- }
- const field = fieldRef.value;
- if (!field || false) {
- setTimeout(focus, 100);
- return;
- }
- {
- field.focus();
- }
- }
- function blur() {
- const field = fieldRef.value;
- if (field) {
- field.blur();
- }
- }
- vue.watch(
- () => props2.focus,
- (value) => {
- if (value) {
- focus();
- } else {
- blur();
- }
- }
- );
- }
- function useEvent(fieldRef, state, props2, trigger, triggerInput, beforeInput) {
- function checkSelection() {
- const field = fieldRef.value;
- if (field && state.focus && state.selectionStart > -1 && state.selectionEnd > -1 && field.type !== "number") {
- field.selectionStart = state.selectionStart;
- field.selectionEnd = state.selectionEnd;
- }
- }
- function checkCursor() {
- const field = fieldRef.value;
- if (field && state.focus && state.selectionStart < 0 && state.selectionEnd < 0 && state.cursor > -1 && field.type !== "number") {
- field.selectionEnd = field.selectionStart = state.cursor;
- }
- }
- function getFieldSelectionEnd(field) {
- if (field.type === "number") {
- return null;
- } else {
- return field.selectionEnd;
- }
- }
- function initField() {
- const field = fieldRef.value;
- if (!field)
- return;
- const onFocus = function(event) {
- state.focus = true;
- trigger("focus", event, {
- value: state.value
- });
- checkSelection();
- checkCursor();
- };
- const onInput = function(event, force) {
- event.stopPropagation();
- if (shared.isFunction(beforeInput) && beforeInput(event, state) === false) {
- return;
- }
- state.value = field.value;
- if (!state.composing || !props2.ignoreCompositionEvent) {
- triggerInput(
- event,
- {
- value: field.value,
- cursor: getFieldSelectionEnd(field)
- },
- force
- );
- }
- };
- const onBlur = function(event) {
- if (state.composing) {
- state.composing = false;
- onInput(event, true);
- }
- state.focus = false;
- trigger("blur", event, {
- value: state.value,
- cursor: getFieldSelectionEnd(event.target)
- });
- };
- field.addEventListener("change", (event) => event.stopPropagation());
- field.addEventListener("focus", onFocus);
- field.addEventListener("blur", onBlur);
- field.addEventListener("input", onInput);
- field.addEventListener("compositionstart", (event) => {
- event.stopPropagation();
- state.composing = true;
- _onComposition(event);
- });
- field.addEventListener("compositionend", (event) => {
- event.stopPropagation();
- if (state.composing) {
- state.composing = false;
- onInput(event);
- }
- _onComposition(event);
- });
- field.addEventListener("compositionupdate", _onComposition);
- function _onComposition(event) {
- if (!props2.ignoreCompositionEvent) {
- trigger(event.type, event, {
- value: event.data
- });
- }
- }
- }
- vue.watch([() => state.selectionStart, () => state.selectionEnd], checkSelection);
- vue.watch(() => state.cursor, checkCursor);
- vue.watch(() => fieldRef.value, initField);
- }
- function useField(props2, rootRef, emit2, beforeInput) {
- UniViewJSBridgeSubscribe();
- const { fieldRef, state, trigger } = useBase(props2, rootRef, emit2);
- const { triggerInput } = useValueSync(props2, state, emit2, trigger);
- useAutoFocus(props2, fieldRef);
- useKeyboard$1(props2, fieldRef);
- const { state: scopedAttrsState } = useScopedAttrs();
- useFormField("name", state);
- useEvent(fieldRef, state, props2, trigger, triggerInput, beforeInput);
- const fixDisabledColor = false;
- return {
- fieldRef,
- state,
- scopedAttrsState,
- fixDisabledColor,
- trigger
- };
- }
- const props$j = /* @__PURE__ */ shared.extend({}, props$k, {
- placeholderClass: {
- type: String,
- default: "input-placeholder"
- },
- textContentType: {
- type: String,
- default: ""
- }
- });
- class UniInputElement extends UniElement {
- focus(options) {
- var _a;
- (_a = this.querySelector("input")) == null ? void 0 : _a.focus(options);
- }
- }
- const Input = /* @__PURE__ */ defineBuiltInComponent({
- name: "Input",
- props: props$j,
- emits: ["confirm", ...emit],
- setup(props2, {
- emit: emit2,
- expose
- }) {
- const INPUT_TYPES = ["text", "number", "idcard", "digit", "password", "tel"];
- const AUTOCOMPLETES = ["off", "one-time-code"];
- const type = vue.computed(() => {
- let type2 = "";
- switch (props2.type) {
- case "text":
- if (props2.confirmType === "search") {
- type2 = "search";
- }
- break;
- case "idcard":
- type2 = "text";
- break;
- case "digit":
- type2 = "number";
- break;
- default:
- type2 = ~INPUT_TYPES.includes(props2.type) ? props2.type : "text";
- break;
- }
- return props2.password ? "password" : type2;
- });
- const autocomplete = vue.computed(() => {
- const camelizeIndex = AUTOCOMPLETES.indexOf(props2.textContentType);
- const kebabCaseIndex = AUTOCOMPLETES.indexOf(shared.hyphenate(props2.textContentType));
- const index2 = camelizeIndex !== -1 ? camelizeIndex : kebabCaseIndex !== -1 ? kebabCaseIndex : 0;
- return AUTOCOMPLETES[index2];
- });
- let cache = vue.ref("");
- let resetCache;
- const rootRef = vue.ref(null);
- const {
- fieldRef,
- state,
- scopedAttrsState,
- fixDisabledColor,
- trigger
- } = useField(props2, rootRef, emit2, (event, state2) => {
- const input = event.target;
- if (type.value === "number") {
- if (resetCache) {
- input.removeEventListener("blur", resetCache);
- resetCache = null;
- }
- if (input.validity && !input.validity.valid) {
- if ((!cache.value || !input.value) && event.data === "-" || cache.value[0] === "-" && event.inputType === "deleteContentBackward") {
- cache.value = "-";
- state2.value = "";
- resetCache = () => {
- cache.value = input.value = "";
- };
- input.addEventListener("blur", resetCache);
- return false;
- }
- if (cache.value) {
- if (cache.value.indexOf(".") !== -1) {
- if (event.data !== "." && event.inputType === "deleteContentBackward") {
- const dotIndex = cache.value.indexOf(".");
- cache.value = input.value = state2.value = cache.value.slice(0, dotIndex);
- return true;
- }
- } else if (event.data === ".") {
- cache.value += ".";
- resetCache = () => {
- cache.value = input.value = cache.value.slice(0, -1);
- };
- input.addEventListener("blur", resetCache);
- return false;
- }
- }
- cache.value = state2.value = input.value = cache.value === "-" ? "" : cache.value;
- return false;
- } else {
- cache.value = input.value;
- }
- const maxlength = state2.maxlength;
- if (maxlength > 0 && input.value.length > maxlength) {
- input.value = input.value.slice(0, maxlength);
- state2.value = input.value;
- return false;
- }
- }
- });
- vue.watch(() => state.value, (value) => {
- if (props2.type === "number" && !(cache.value === "-" && value === "")) {
- cache.value = value;
- }
- });
- const NUMBER_TYPES = ["number", "digit"];
- const step = vue.computed(() => NUMBER_TYPES.includes(props2.type) ? props2.step : "");
- function onKeyUpEnter(event) {
- if (event.key !== "Enter") {
- return;
- }
- const input = event.target;
- event.stopPropagation();
- trigger("confirm", event, {
- value: input.value
- });
- !props2.confirmHold && input.blur();
- }
- expose({
- $triggerInput: (detail) => {
- emit2("update:modelValue", detail.value);
- emit2("update:value", detail.value);
- state.value = detail.value;
- }
- });
- return () => {
- let inputNode = props2.disabled && fixDisabledColor ? vue.createVNode("input", {
- "key": "disabled-input",
- "ref": fieldRef,
- "value": state.value,
- "tabindex": "-1",
- "readonly": !!props2.disabled,
- "type": type.value,
- "maxlength": state.maxlength,
- "step": step.value,
- "class": "uni-input-input",
- "style": props2.cursorColor ? {
- caretColor: props2.cursorColor
- } : {},
- "onFocus": (event) => event.target.blur()
- }, null, 44, ["value", "readonly", "type", "maxlength", "step", "onFocus"]) : vue.withDirectives(vue.createVNode("input", {
- "key": "input",
- "ref": fieldRef,
- "onUpdate:modelValue": ($event) => state.value = $event,
- "disabled": !!props2.disabled,
- "type": type.value,
- "maxlength": state.maxlength,
- "step": step.value,
- "enterkeyhint": props2.confirmType,
- "pattern": props2.type === "number" ? "[0-9]*" : void 0,
- "class": "uni-input-input",
- "style": props2.cursorColor ? {
- caretColor: props2.cursorColor
- } : {},
- "autocomplete": autocomplete.value,
- "onKeyup": onKeyUpEnter,
- "inputmode": props2.inputmode
- }, null, 44, ["onUpdate:modelValue", "disabled", "type", "maxlength", "step", "enterkeyhint", "pattern", "autocomplete", "onKeyup", "inputmode"]), [[vue.vModelDynamic, state.value]]);
- return vue.createVNode("uni-input", {
- "ref": rootRef
- }, [vue.createVNode("div", {
- "class": "uni-input-wrapper"
- }, [vue.withDirectives(vue.createVNode("div", vue.mergeProps(scopedAttrsState.attrs, {
- "style": props2.placeholderStyle,
- "class": ["uni-input-placeholder", props2.placeholderClass]
- }), [props2.placeholder], 16), [[vue.vShow, !(state.value.length || cache.value === "-")]]), props2.confirmType === "search" ? vue.createVNode("form", {
- "action": "",
- "onSubmit": (event) => event.preventDefault(),
- "class": "uni-input-form"
- }, [inputNode], 40, ["onSubmit"]) : inputNode])], 512);
- };
- }
- });
- function entries(obj) {
- return Object.keys(obj).map((key) => [key, obj[key]]);
- }
- const DEFAULT_EXCLUDE_KEYS = ["class", "style"];
- const LISTENER_PREFIX = /^on[A-Z]+/;
- const useAttrs = (params = {}) => {
- const { excludeListeners = false, excludeKeys = [] } = params;
- const instance = vue.getCurrentInstance();
- const attrs = vue.shallowRef({});
- const listeners = vue.shallowRef({});
- const excludeAttrs = vue.shallowRef({});
- const allExcludeKeys = excludeKeys.concat(DEFAULT_EXCLUDE_KEYS);
- instance.attrs = vue.reactive(instance.attrs);
- vue.watchEffect(() => {
- const res = entries(instance.attrs).reduce(
- (acc, [key, val]) => {
- if (allExcludeKeys.includes(key)) {
- acc.exclude[key] = val;
- } else if (LISTENER_PREFIX.test(key)) {
- if (!excludeListeners) {
- acc.attrs[key] = val;
- }
- acc.listeners[key] = val;
- } else {
- acc.attrs[key] = val;
- }
- return acc;
- },
- {
- exclude: {},
- attrs: {},
- listeners: {}
- }
- );
- attrs.value = res.attrs;
- listeners.value = res.listeners;
- excludeAttrs.value = res.exclude;
- });
- return { $attrs: attrs, $listeners: listeners, $excludeAttrs: excludeAttrs };
- };
- function flatVNode(nodes) {
- const array = [];
- if (shared.isArray(nodes)) {
- nodes.forEach((vnode) => {
- if (vue.isVNode(vnode)) {
- if (vnode.type === vue.Fragment) {
- array.push(...flatVNode(vnode.children));
- } else {
- array.push(vnode);
- }
- } else if (shared.isArray(vnode)) {
- array.push(...flatVNode(vnode));
- }
- });
- }
- return array;
- }
- const movableAreaProps = {
- scaleArea: {
- type: Boolean,
- default: false
- }
- };
- class UniMovableAreaElement extends UniElement {
- }
- const index$u = /* @__PURE__ */ defineBuiltInComponent({
- inheritAttrs: false,
- name: "MovableArea",
- props: movableAreaProps,
- setup(props2, {
- slots
- }) {
- const rootRef = vue.ref(null);
- const _isMounted = vue.ref(false);
- let {
- setContexts,
- events: movableAreaEvents
- } = useMovableAreaState(props2, rootRef);
- const {
- $listeners,
- $attrs,
- $excludeAttrs
- } = useAttrs();
- const _listeners = $listeners.value;
- let events = ["onTouchstart", "onTouchmove", "onTouchend"];
- events.forEach((event) => {
- let existing = _listeners[event];
- let ours = movableAreaEvents[`_${event}`];
- _listeners[event] = existing ? [].concat(existing, ours) : ours;
- });
- let movableViewItems = [];
- const originMovableViewContexts = [];
- function updateMovableViewContexts() {
- const contexts = [];
- for (let index2 = 0; index2 < movableViewItems.length; index2++) {
- let movableViewItem = movableViewItems[index2];
- {
- movableViewItem = movableViewItem.el;
- }
- const movableViewContext = originMovableViewContexts.find((context) => movableViewItem === context.rootRef.value);
- if (movableViewContext) {
- contexts.push(vue.markRaw(movableViewContext));
- }
- }
- setContexts(contexts);
- }
- const addMovableViewContext = (movableViewContext) => {
- originMovableViewContexts.push(movableViewContext);
- updateMovableViewContexts();
- };
- const removeMovableViewContext = (movableViewContext) => {
- const index2 = originMovableViewContexts.indexOf(movableViewContext);
- if (index2 >= 0) {
- originMovableViewContexts.splice(index2, 1);
- updateMovableViewContexts();
- }
- };
- vue.provide("_isMounted", _isMounted);
- vue.provide("movableAreaRootRef", rootRef);
- vue.provide("addMovableViewContext", addMovableViewContext);
- vue.provide("removeMovableViewContext", removeMovableViewContext);
- return () => {
- const defaultSlots = slots.default && slots.default();
- {
- movableViewItems = flatVNode(defaultSlots);
- }
- return vue.createVNode("uni-movable-area", vue.mergeProps({
- "ref": rootRef
- }, $attrs.value, $excludeAttrs.value, _listeners), [vue.createVNode(ResizeSensor, {
- "onResize": movableAreaEvents._resize
- }, null, 8, ["onResize"]), movableViewItems], 16);
- };
- }
- });
- function calc(e2) {
- return Math.sqrt(e2.x * e2.x + e2.y * e2.y);
- }
- function useMovableAreaState(props2, rootRef) {
- const width = vue.ref(0);
- const height = vue.ref(0);
- const gapV = vue.reactive({
- x: null,
- y: null
- });
- const pinchStartLen = vue.ref(null);
- let _scaleMovableView = null;
- let movableViewContexts = [];
- function _updateScale(e2) {
- if (e2 && e2 !== 1) {
- if (props2.scaleArea) {
- movableViewContexts.forEach(function(item) {
- item._setScale(e2);
- });
- } else {
- if (_scaleMovableView) {
- _scaleMovableView._setScale(e2);
- }
- }
- }
- }
- function _find(target, items = movableViewContexts) {
- let root = rootRef.value;
- function get(node) {
- for (let i = 0; i < items.length; i++) {
- const item = items[i];
- if (node === item.rootRef.value) {
- return item;
- }
- }
- if (node === root || node === document.body || node === document) {
- return null;
- }
- return get(node.parentNode);
- }
- return get(target);
- }
- const _onTouchstart = withWebEvent((t2) => {
- let i = t2.touches;
- if (i) {
- if (i.length > 1) {
- let r = {
- x: i[1].pageX - i[0].pageX,
- y: i[1].pageY - i[0].pageY
- };
- pinchStartLen.value = calc(r);
- gapV.x = r.x;
- gapV.y = r.y;
- if (!props2.scaleArea) {
- let touch0 = _find(i[0].target);
- let touch1 = _find(i[1].target);
- _scaleMovableView = touch0 && touch0 === touch1 ? touch0 : null;
- }
- }
- }
- });
- const _onTouchmove = withWebEvent((t2) => {
- let n = t2.touches;
- if (n) {
- if (n.length > 1) {
- t2.preventDefault();
- let i = {
- x: n[1].pageX - n[0].pageX,
- y: n[1].pageY - n[0].pageY
- };
- if (gapV.x !== null && pinchStartLen.value && pinchStartLen.value > 0) {
- let r = calc(i) / pinchStartLen.value;
- _updateScale(r);
- }
- gapV.x = i.x;
- gapV.y = i.y;
- }
- }
- });
- const _onTouchend = withWebEvent((e2) => {
- let t2 = e2.touches;
- if (!(t2 && t2.length)) {
- if (e2.changedTouches) {
- gapV.x = 0;
- gapV.y = 0;
- pinchStartLen.value = null;
- if (props2.scaleArea) {
- movableViewContexts.forEach(function(item) {
- item._endScale();
- });
- } else {
- if (_scaleMovableView) {
- _scaleMovableView._endScale();
- }
- }
- }
- }
- });
- function _resize() {
- _getWH();
- movableViewContexts.forEach(function(item, index2) {
- item.setParent();
- });
- }
- function _getWH() {
- let style = window.getComputedStyle(rootRef.value);
- let rect = rootRef.value.getBoundingClientRect();
- width.value = rect.width - ["Left", "Right"].reduce(function(all, item) {
- const LEFT = "border" + item + "Width";
- const RIGHT = "padding" + item;
- return all + parseFloat(style[LEFT]) + parseFloat(style[RIGHT]);
- }, 0);
- height.value = rect.height - ["Top", "Bottom"].reduce(function(all, item) {
- const TOP = "border" + item + "Width";
- const BOTTOM = "padding" + item;
- return all + parseFloat(style[TOP]) + parseFloat(style[BOTTOM]);
- }, 0);
- }
- vue.provide("movableAreaWidth", width);
- vue.provide("movableAreaHeight", height);
- return {
- setContexts(contexts) {
- movableViewContexts = contexts;
- },
- events: {
- _onTouchstart,
- _onTouchmove,
- _onTouchend,
- _resize
- }
- };
- }
- function e(e2, t2, n) {
- return e2 > t2 - n && e2 < t2 + n;
- }
- function t(t2, n) {
- return e(t2, 0, n);
- }
- function Friction(e2, t2) {
- this._m = e2;
- this._f = 1e3 * t2;
- this._startTime = 0;
- this._v = 0;
- }
- Friction.prototype.setV = function(x, y) {
- const n = Math.pow(Math.pow(x, 2) + Math.pow(y, 2), 0.5);
- this._x_v = x;
- this._y_v = y;
- this._x_a = -this._f * this._x_v / n;
- this._y_a = -this._f * this._y_v / n;
- this._t = Math.abs(x / this._x_a) || Math.abs(y / this._y_a);
- this._lastDt = null;
- this._startTime = (/* @__PURE__ */ new Date()).getTime();
- };
- Friction.prototype.setS = function(x, y) {
- this._x_s = x;
- this._y_s = y;
- };
- Friction.prototype.s = function(t2) {
- if (void 0 === t2) {
- t2 = ((/* @__PURE__ */ new Date()).getTime() - this._startTime) / 1e3;
- }
- if (t2 > this._t) {
- t2 = this._t;
- this._lastDt = t2;
- }
- let x = this._x_v * t2 + 0.5 * this._x_a * Math.pow(t2, 2) + this._x_s;
- let y = this._y_v * t2 + 0.5 * this._y_a * Math.pow(t2, 2) + this._y_s;
- if (this._x_a > 0 && x < this._endPositionX || this._x_a < 0 && x > this._endPositionX) {
- x = this._endPositionX;
- }
- if (this._y_a > 0 && y < this._endPositionY || this._y_a < 0 && y > this._endPositionY) {
- y = this._endPositionY;
- }
- return {
- x,
- y
- };
- };
- Friction.prototype.ds = function(t2) {
- if (void 0 === t2) {
- t2 = ((/* @__PURE__ */ new Date()).getTime() - this._startTime) / 1e3;
- }
- if (t2 > this._t) {
- t2 = this._t;
- }
- return {
- dx: this._x_v + this._x_a * t2,
- dy: this._y_v + this._y_a * t2
- };
- };
- Friction.prototype.delta = function() {
- return {
- x: -1.5 * Math.pow(this._x_v, 2) / this._x_a || 0,
- y: -1.5 * Math.pow(this._y_v, 2) / this._y_a || 0
- };
- };
- Friction.prototype.dt = function() {
- return -this._x_v / this._x_a;
- };
- Friction.prototype.done = function() {
- const t2 = e(this.s().x, this._endPositionX) || e(this.s().y, this._endPositionY) || this._lastDt === this._t;
- this._lastDt = null;
- return t2;
- };
- Friction.prototype.setEnd = function(x, y) {
- this._endPositionX = x;
- this._endPositionY = y;
- };
- Friction.prototype.reconfigure = function(m, f2) {
- this._m = m;
- this._f = 1e3 * f2;
- };
- function Spring(m, k, c) {
- this._m = m;
- this._k = k;
- this._c = c;
- this._solution = null;
- this._endPosition = 0;
- this._startTime = 0;
- }
- Spring.prototype._solve = function(e2, t2) {
- const n = this._c;
- const i = this._m;
- const r = this._k;
- const o = n * n - 4 * i * r;
- if (o === 0) {
- const a = -n / (2 * i);
- const s = e2;
- const l = t2 / (a * e2);
- return {
- x: function(e3) {
- return (s + l * e3) * Math.pow(Math.E, a * e3);
- },
- dx: function(e3) {
- const t3 = Math.pow(Math.E, a * e3);
- return a * (s + l * e3) * t3 + l * t3;
- }
- };
- }
- if (o > 0) {
- const c = (-n - Math.sqrt(o)) / (2 * i);
- const u = (-n + Math.sqrt(o)) / (2 * i);
- const d = (t2 - c * e2) / (u - c);
- const h = e2 - d;
- return {
- x: function(e3) {
- let t3;
- let n2;
- if (e3 === this._t) {
- t3 = this._powER1T;
- n2 = this._powER2T;
- }
- this._t = e3;
- if (!t3) {
- t3 = this._powER1T = Math.pow(Math.E, c * e3);
- }
- if (!n2) {
- n2 = this._powER2T = Math.pow(Math.E, u * e3);
- }
- return h * t3 + d * n2;
- },
- dx: function(e3) {
- let t3;
- let n2;
- if (e3 === this._t) {
- t3 = this._powER1T;
- n2 = this._powER2T;
- }
- this._t = e3;
- if (!t3) {
- t3 = this._powER1T = Math.pow(Math.E, c * e3);
- }
- if (!n2) {
- n2 = this._powER2T = Math.pow(Math.E, u * e3);
- }
- return h * c * t3 + d * u * n2;
- }
- };
- }
- const p2 = Math.sqrt(4 * i * r - n * n) / (2 * i);
- const f2 = -n / 2 * i;
- const v2 = e2;
- const g2 = (t2 - f2 * e2) / p2;
- return {
- x: function(e3) {
- return Math.pow(Math.E, f2 * e3) * (v2 * Math.cos(p2 * e3) + g2 * Math.sin(p2 * e3));
- },
- dx: function(e3) {
- const t3 = Math.pow(Math.E, f2 * e3);
- const n2 = Math.cos(p2 * e3);
- const i2 = Math.sin(p2 * e3);
- return t3 * (g2 * p2 * n2 - v2 * p2 * i2) + f2 * t3 * (g2 * i2 + v2 * n2);
- }
- };
- };
- Spring.prototype.x = function(e2) {
- if (void 0 === e2) {
- e2 = ((/* @__PURE__ */ new Date()).getTime() - this._startTime) / 1e3;
- }
- return this._solution ? this._endPosition + this._solution.x(e2) : 0;
- };
- Spring.prototype.dx = function(e2) {
- if (void 0 === e2) {
- e2 = ((/* @__PURE__ */ new Date()).getTime() - this._startTime) / 1e3;
- }
- return this._solution ? this._solution.dx(e2) : 0;
- };
- Spring.prototype.setEnd = function(e2, n, i) {
- if (!i) {
- i = (/* @__PURE__ */ new Date()).getTime();
- }
- if (e2 !== this._endPosition || !t(n, 0.1)) {
- n = n || 0;
- let r = this._endPosition;
- if (this._solution) {
- if (t(n, 0.1)) {
- n = this._solution.dx((i - this._startTime) / 1e3);
- }
- r = this._solution.x((i - this._startTime) / 1e3);
- if (t(n, 0.1)) {
- n = 0;
- }
- if (t(r, 0.1)) {
- r = 0;
- }
- r += this._endPosition;
- }
- if (!(this._solution && t(r - e2, 0.1) && t(n, 0.1))) {
- this._endPosition = e2;
- this._solution = this._solve(r - this._endPosition, n);
- this._startTime = i;
- }
- }
- };
- Spring.prototype.snap = function(e2) {
- this._startTime = (/* @__PURE__ */ new Date()).getTime();
- this._endPosition = e2;
- this._solution = {
- x: function() {
- return 0;
- },
- dx: function() {
- return 0;
- }
- };
- };
- Spring.prototype.done = function(n) {
- if (!n) {
- n = (/* @__PURE__ */ new Date()).getTime();
- }
- return e(this.x(), this._endPosition, 0.1) && t(this.dx(), 0.1);
- };
- Spring.prototype.reconfigure = function(m, t2, c) {
- this._m = m;
- this._k = t2;
- this._c = c;
- if (!this.done()) {
- this._solution = this._solve(this.x() - this._endPosition, this.dx());
- this._startTime = (/* @__PURE__ */ new Date()).getTime();
- }
- };
- Spring.prototype.springConstant = function() {
- return this._k;
- };
- Spring.prototype.damping = function() {
- return this._c;
- };
- Spring.prototype.configuration = function() {
- function e2(e3, t3) {
- e3.reconfigure(1, t3, e3.damping());
- }
- function t2(e3, t3) {
- e3.reconfigure(1, e3.springConstant(), t3);
- }
- return [
- {
- label: "Spring Constant",
- read: this.springConstant.bind(this),
- write: e2.bind(this, this),
- min: 100,
- max: 1e3
- },
- {
- label: "Damping",
- read: this.damping.bind(this),
- write: t2.bind(this, this),
- min: 1,
- max: 500
- }
- ];
- };
- function STD(e2, t2, n) {
- this._springX = new Spring(e2, t2, n);
- this._springY = new Spring(e2, t2, n);
- this._springScale = new Spring(e2, t2, n);
- this._startTime = 0;
- }
- STD.prototype.setEnd = function(e2, t2, n, i) {
- const r = (/* @__PURE__ */ new Date()).getTime();
- this._springX.setEnd(e2, i, r);
- this._springY.setEnd(t2, i, r);
- this._springScale.setEnd(n, i, r);
- this._startTime = r;
- };
- STD.prototype.x = function() {
- const e2 = ((/* @__PURE__ */ new Date()).getTime() - this._startTime) / 1e3;
- return {
- x: this._springX.x(e2),
- y: this._springY.x(e2),
- scale: this._springScale.x(e2)
- };
- };
- STD.prototype.done = function() {
- const e2 = (/* @__PURE__ */ new Date()).getTime();
- return this._springX.done(e2) && this._springY.done(e2) && this._springScale.done(e2);
- };
- STD.prototype.reconfigure = function(e2, t2, n) {
- this._springX.reconfigure(e2, t2, n);
- this._springY.reconfigure(e2, t2, n);
- this._springScale.reconfigure(e2, t2, n);
- };
- const movableViewProps = {
- direction: {
- type: String,
- default: "none"
- },
- inertia: {
- type: [Boolean, String],
- default: false
- },
- outOfBounds: {
- type: [Boolean, String],
- default: false
- },
- x: {
- type: [Number, String],
- default: 0
- },
- y: {
- type: [Number, String],
- default: 0
- },
- damping: {
- type: [Number, String],
- default: 20
- },
- friction: {
- type: [Number, String],
- default: 2
- },
- disabled: {
- type: [Boolean, String],
- default: false
- },
- scale: {
- type: [Boolean, String],
- default: false
- },
- scaleMin: {
- type: [Number, String],
- default: 0.5
- },
- scaleMax: {
- type: [Number, String],
- default: 10
- },
- scaleValue: {
- type: [Number, String],
- default: 1
- },
- animation: {
- type: [Boolean, String],
- default: true
- }
- };
- function v(a, b) {
- return +((1e3 * a - 1e3 * b) / 1e3).toFixed(1);
- }
- class UniMovableViewElement extends UniElement {
- }
- const index$t = /* @__PURE__ */ defineBuiltInComponent({
- name: "MovableView",
- props: movableViewProps,
- emits: ["change", "scale"],
- setup(props2, {
- slots,
- emit: emit2
- }) {
- const rootRef = vue.ref(null);
- const trigger = useCustomEvent(rootRef, emit2);
- const {
- setParent
- } = useMovableViewState(props2, trigger, rootRef);
- return () => {
- return vue.createVNode("uni-movable-view", {
- "ref": rootRef
- }, [vue.createVNode(ResizeSensor, {
- "onResize": setParent
- }, null, 8, ["onResize"]), slots.default && slots.default()], 512);
- };
- }
- });
- let requesting = false;
- function _requestAnimationFrame(e2) {
- if (!requesting) {
- requesting = true;
- requestAnimationFrame(function() {
- e2();
- requesting = false;
- });
- }
- }
- function p(t2, n) {
- if (t2 === n) {
- return 0;
- }
- let i = t2.offsetLeft;
- return t2.offsetParent ? i += p(t2.offsetParent, n) : 0;
- }
- function f(t2, n) {
- if (t2 === n) {
- return 0;
- }
- let i = t2.offsetTop;
- return t2.offsetParent ? i += f(t2.offsetParent, n) : 0;
- }
- function g(friction, execute, endCallback) {
- let record = {
- id: 0,
- cancelled: false
- };
- let cancel = function(record2) {
- if (record2 && record2.id) {
- cancelAnimationFrame(record2.id);
- }
- if (record2) {
- record2.cancelled = true;
- }
- };
- function fn(record2, friction2, execute2, endCallback2) {
- if (!record2 || !record2.cancelled) {
- execute2(friction2);
- let isDone = friction2.done();
- if (!isDone) {
- if (!record2.cancelled) {
- record2.id = requestAnimationFrame(fn.bind(null, record2, friction2, execute2, endCallback2));
- }
- }
- if (isDone && endCallback2) {
- endCallback2(friction2);
- }
- }
- }
- fn(record, friction, execute, endCallback);
- return {
- cancel: cancel.bind(null, record),
- model: friction
- };
- }
- function _getPx(val) {
- if (/\d+[ur]px$/i.test(val)) {
- return uni.upx2px(parseFloat(val));
- }
- return Number(val) || 0;
- }
- function useMovableViewLayout(rootRef, _scale, _adjustScale) {
- const movableAreaWidth = vue.inject("movableAreaWidth", vue.ref(0));
- const movableAreaHeight = vue.inject("movableAreaHeight", vue.ref(0));
- const movableAreaRootRef = vue.inject("movableAreaRootRef");
- const _offset = {
- x: 0,
- y: 0
- };
- const _scaleOffset = {
- x: 0,
- y: 0
- };
- const width = vue.ref(0);
- const height = vue.ref(0);
- const minX = vue.ref(0);
- const minY = vue.ref(0);
- const maxX = vue.ref(0);
- const maxY = vue.ref(0);
- function _updateBoundary() {
- let x = 0 - _offset.x + _scaleOffset.x;
- let _width = movableAreaWidth.value - width.value - _offset.x - _scaleOffset.x;
- minX.value = Math.min(x, _width);
- maxX.value = Math.max(x, _width);
- let y = 0 - _offset.y + _scaleOffset.y;
- let _height = movableAreaHeight.value - height.value - _offset.y - _scaleOffset.y;
- minY.value = Math.min(y, _height);
- maxY.value = Math.max(y, _height);
- }
- function _updateOffset() {
- _offset.x = p(rootRef.value, movableAreaRootRef.value);
- _offset.y = f(rootRef.value, movableAreaRootRef.value);
- }
- function _updateWH(scale) {
- scale = scale || _scale.value;
- scale = _adjustScale(scale);
- let rect = rootRef.value.getBoundingClientRect();
- height.value = rect.height / _scale.value;
- width.value = rect.width / _scale.value;
- let _height = height.value * scale;
- let _width = width.value * scale;
- _scaleOffset.x = (_width - width.value) / 2;
- _scaleOffset.y = (_height - height.value) / 2;
- }
- return {
- _updateBoundary,
- _updateOffset,
- _updateWH,
- _scaleOffset,
- minX,
- minY,
- maxX,
- maxY
- };
- }
- function useMovableViewTransform(rootRef, props2, _scaleOffset, _scale, maxX, maxY, minX, minY, _translateX, _translateY, _SFA, _FA, _adjustScale, trigger) {
- const dampingNumber = vue.computed(() => {
- let val = Number(props2.damping);
- return isNaN(val) ? 20 : val;
- });
- const xMove = vue.computed(() => props2.direction === "all" || props2.direction === "horizontal");
- const yMove = vue.computed(() => props2.direction === "all" || props2.direction === "vertical");
- const xSync = vue.ref(_getPx(props2.x));
- const ySync = vue.ref(_getPx(props2.y));
- vue.watch(() => props2.x, (val) => {
- xSync.value = _getPx(val);
- });
- vue.watch(() => props2.y, (val) => {
- ySync.value = _getPx(val);
- });
- vue.watch(xSync, (val) => {
- _setX(val);
- });
- vue.watch(ySync, (val) => {
- _setY(val);
- });
- const _STD = new STD(1, 9 * Math.pow(dampingNumber.value, 2) / 40, dampingNumber.value);
- function _getLimitXY(x, y) {
- let outOfBounds = false;
- if (x > maxX.value) {
- x = maxX.value;
- outOfBounds = true;
- } else {
- if (x < minX.value) {
- x = minX.value;
- outOfBounds = true;
- }
- }
- if (y > maxY.value) {
- y = maxY.value;
- outOfBounds = true;
- } else {
- if (y < minY.value) {
- y = minY.value;
- outOfBounds = true;
- }
- }
- return {
- x,
- y,
- outOfBounds
- };
- }
- function FAandSFACancel() {
- if (_FA) {
- _FA.cancel();
- }
- if (_SFA) {
- _SFA.cancel();
- }
- }
- function _animationTo(x, y, scale, source, r, o) {
- FAandSFACancel();
- if (!xMove.value) {
- x = _translateX.value;
- }
- if (!yMove.value) {
- y = _translateY.value;
- }
- if (!props2.scale) {
- scale = _scale.value;
- }
- let limitXY = _getLimitXY(x, y);
- x = limitXY.x;
- y = limitXY.y;
- if (!props2.animation) {
- _setTransform(x, y, scale, source, r, o);
- return;
- }
- _STD._springX._solution = null;
- _STD._springY._solution = null;
- _STD._springScale._solution = null;
- _STD._springX._endPosition = _translateX.value;
- _STD._springY._endPosition = _translateY.value;
- _STD._springScale._endPosition = _scale.value;
- _STD.setEnd(x, y, scale, 1);
- _SFA = g(_STD, function() {
- let data = _STD.x();
- let x2 = data.x;
- let y2 = data.y;
- let scale2 = data.scale;
- _setTransform(x2, y2, scale2, source, r, o);
- }, function() {
- _SFA.cancel();
- });
- }
- function _setTransform(x, y, scale, source = "", r, o) {
- if (!(x !== null && x.toString() !== "NaN" && typeof x === "number")) {
- x = _translateX.value || 0;
- }
- if (!(y !== null && y.toString() !== "NaN" && typeof y === "number")) {
- y = _translateY.value || 0;
- }
- x = Number(x.toFixed(1));
- y = Number(y.toFixed(1));
- scale = Number(scale.toFixed(1));
- if (!(_translateX.value === x && _translateY.value === y)) {
- if (!r) {
- trigger("change", {}, {
- x: v(x, _scaleOffset.x),
- y: v(y, _scaleOffset.y),
- source
- });
- }
- }
- if (!props2.scale) {
- scale = _scale.value;
- }
- scale = _adjustScale(scale);
- scale = +scale.toFixed(3);
- if (o && scale !== _scale.value) {
- trigger("scale", {}, {
- x,
- y,
- scale
- });
- }
- let transform = "translateX(" + x + "px) translateY(" + y + "px) translateZ(0px) scale(" + scale + ")";
- if (rootRef.value) {
- rootRef.value.style.transform = transform;
- rootRef.value.style.webkitTransform = transform;
- _translateX.value = x;
- _translateY.value = y;
- _scale.value = scale;
- }
- }
- function _revise(source) {
- let limitXY = _getLimitXY(_translateX.value, _translateY.value);
- let x = limitXY.x;
- let y = limitXY.y;
- let outOfBounds = limitXY.outOfBounds;
- if (outOfBounds) {
- _animationTo(x, y, _scale.value, source);
- }
- return outOfBounds;
- }
- function _setX(val) {
- if (xMove.value) {
- if (val + _scaleOffset.x === _translateX.value) {
- return _translateX;
- } else {
- if (_SFA) {
- _SFA.cancel();
- }
- _animationTo(val + _scaleOffset.x, ySync.value + _scaleOffset.y, _scale.value);
- }
- }
- return val;
- }
- function _setY(val) {
- if (yMove.value) {
- if (val + _scaleOffset.y === _translateY.value) {
- return _translateY;
- } else {
- if (_SFA) {
- _SFA.cancel();
- }
- _animationTo(xSync.value + _scaleOffset.x, val + _scaleOffset.y, _scale.value);
- }
- }
- return val;
- }
- return {
- FAandSFACancel,
- _getLimitXY,
- _animationTo,
- _setTransform,
- _revise,
- dampingNumber,
- xMove,
- yMove,
- xSync,
- ySync,
- _STD
- };
- }
- function useMovableViewInit(props2, rootRef, trigger, _scale, _oldScale, _isScaling, _translateX, _translateY, _SFA, _FA) {
- const scaleMinNumber = vue.computed(() => {
- let val = Number(props2.scaleMin);
- return isNaN(val) ? 0.5 : val;
- });
- const scaleMaxNumber = vue.computed(() => {
- let val = Number(props2.scaleMax);
- return isNaN(val) ? 10 : val;
- });
- const scaleValueSync = vue.ref(Number(props2.scaleValue) || 1);
- vue.watch(scaleValueSync, (val) => {
- _setScaleValue(val);
- });
- vue.watch(scaleMinNumber, () => {
- _setScaleMinOrMax();
- });
- vue.watch(scaleMaxNumber, () => {
- _setScaleMinOrMax();
- });
- vue.watch(() => props2.scaleValue, (val) => {
- scaleValueSync.value = Number(val) || 0;
- });
- const {
- _updateBoundary,
- _updateOffset,
- _updateWH,
- _scaleOffset,
- minX,
- minY,
- maxX,
- maxY
- } = useMovableViewLayout(rootRef, _scale, _adjustScale);
- const {
- FAandSFACancel,
- _getLimitXY,
- _animationTo,
- _setTransform,
- _revise,
- dampingNumber,
- xMove,
- yMove,
- xSync,
- ySync,
- _STD
- } = useMovableViewTransform(rootRef, props2, _scaleOffset, _scale, maxX, maxY, minX, minY, _translateX, _translateY, _SFA, _FA, _adjustScale, trigger);
- function _updateScale(scale, animat) {
- if (props2.scale) {
- scale = _adjustScale(scale);
- _updateWH(scale);
- _updateBoundary();
- const limitXY = _getLimitXY(_translateX.value, _translateY.value);
- const x = limitXY.x;
- const y = limitXY.y;
- if (animat) {
- _animationTo(x, y, scale, "", true, true);
- } else {
- _requestAnimationFrame(function() {
- _setTransform(x, y, scale, "", true, true);
- });
- }
- }
- }
- function _beginScale() {
- _isScaling.value = true;
- }
- function _updateOldScale(scale) {
- _oldScale.value = scale;
- }
- function _adjustScale(scale) {
- scale = Math.max(0.5, scaleMinNumber.value, scale);
- scale = Math.min(10, scaleMaxNumber.value, scale);
- return scale;
- }
- function _setScaleMinOrMax() {
- if (!props2.scale) {
- return false;
- }
- _updateScale(_scale.value, true);
- _updateOldScale(_scale.value);
- }
- function _setScaleValue(scale) {
- if (!props2.scale) {
- return false;
- }
- scale = _adjustScale(scale);
- _updateScale(scale, true);
- _updateOldScale(scale);
- return scale;
- }
- function _endScale() {
- _isScaling.value = false;
- _updateOldScale(_scale.value);
- }
- function _setScale(scale) {
- if (scale) {
- scale = _oldScale.value * scale;
- _beginScale();
- _updateScale(scale);
- }
- }
- return {
- // scale
- _updateOldScale,
- _endScale,
- _setScale,
- scaleValueSync,
- // layout
- _updateBoundary,
- _updateOffset,
- _updateWH,
- _scaleOffset,
- minX,
- minY,
- maxX,
- maxY,
- // transform
- FAandSFACancel,
- _getLimitXY,
- _animationTo,
- _setTransform,
- _revise,
- dampingNumber,
- xMove,
- yMove,
- xSync,
- ySync,
- _STD
- };
- }
- function useMovableViewState(props2, trigger, rootRef) {
- const _isMounted = vue.inject("_isMounted", vue.ref(false));
- vue.inject("addMovableViewContext", () => {
- });
- vue.inject("removeMovableViewContext", () => {
- });
- let _scale = vue.ref(1);
- let _oldScale = vue.ref(1);
- let _isScaling = vue.ref(false);
- let _translateX = vue.ref(0);
- let _translateY = vue.ref(0);
- let _SFA = null;
- let _FA = null;
- const frictionNumber = vue.computed(() => {
- let val = Number(props2.friction);
- return isNaN(val) || val <= 0 ? 2 : val;
- });
- new Friction(1, frictionNumber.value);
- vue.watch(() => props2.disabled, () => {
- __handleTouchStart();
- });
- const {
- // scale
- _updateOldScale,
- _endScale,
- _setScale,
- scaleValueSync,
- // layout
- _updateBoundary,
- _updateOffset,
- _updateWH,
- _scaleOffset,
- minX,
- minY,
- maxX,
- maxY,
- // transform
- FAandSFACancel,
- _getLimitXY,
- _setTransform,
- _revise,
- dampingNumber,
- xMove,
- yMove,
- xSync,
- ySync,
- _STD
- } = useMovableViewInit(props2, rootRef, trigger, _scale, _oldScale, _isScaling, _translateX, _translateY, _SFA, _FA);
- function __handleTouchStart() {
- if (!_isScaling.value) {
- if (!props2.disabled) {
- FAandSFACancel();
- if (xMove.value) {
- _translateX.value;
- }
- if (yMove.value) {
- _translateY.value;
- }
- rootRef.value.style.willChange = "transform";
- }
- }
- }
- function setParent() {
- if (!_isMounted.value) {
- return;
- }
- FAandSFACancel();
- let scale = props2.scale ? scaleValueSync.value : 1;
- _updateOffset();
- _updateWH(scale);
- _updateBoundary();
- let limitXY = _getLimitXY(xSync.value + _scaleOffset.x, ySync.value + _scaleOffset.y);
- let x = limitXY.x;
- let y = limitXY.y;
- _setTransform(x, y, scale, "", true);
- _updateOldScale(scale);
- }
- return {
- setParent
- };
- }
- const OPEN_TYPES = [
- "navigate",
- "redirect",
- "switchTab",
- "reLaunch",
- "navigateBack"
- ];
- const ANIMATION_IN = [
- "slide-in-right",
- "slide-in-left",
- "slide-in-top",
- "slide-in-bottom",
- "fade-in",
- "zoom-out",
- "zoom-fade-out",
- "pop-in",
- "none"
- ];
- const ANIMATION_OUT = [
- "slide-out-right",
- "slide-out-left",
- "slide-out-top",
- "slide-out-bottom",
- "fade-out",
- "zoom-in",
- "zoom-fade-in",
- "pop-out",
- "none"
- ];
- const navigatorProps = {
- hoverClass: {
- type: String,
- default: "navigator-hover"
- },
- url: {
- type: String,
- default: ""
- },
- openType: {
- type: String,
- default: "navigate",
- validator(value) {
- return Boolean(~OPEN_TYPES.indexOf(value));
- }
- },
- delta: {
- type: Number,
- default: 1
- },
- hoverStartTime: {
- type: [Number, String],
- default: 50
- },
- hoverStayTime: {
- type: [Number, String],
- default: 600
- },
- exists: {
- type: String,
- default: ""
- },
- hoverStopPropagation: {
- type: Boolean,
- default: false
- },
- animationType: {
- type: String,
- default: "",
- validator(value) {
- return !value || ANIMATION_IN.concat(ANIMATION_OUT).includes(value);
- }
- },
- animationDuration: {
- type: [String, Number],
- default: 300
- }
- };
- function createNavigatorOnClick(props2) {
- return () => {
- if (props2.openType !== "navigateBack" && !props2.url) {
- console.error(
- "<navigator/> should have url attribute when using navigateTo, redirectTo, reLaunch or switchTab"
- );
- return;
- }
- const animationDuration = parseInt(props2.animationDuration);
- switch (props2.openType) {
- case "navigate":
- uni.navigateTo({
- url: props2.url,
- animationType: props2.animationType || "pop-in",
- animationDuration
- });
- break;
- case "redirect":
- uni.redirectTo({
- url: props2.url,
- // @ts-ignore
- exists: props2.exists
- });
- break;
- case "switchTab":
- uni.switchTab({
- url: props2.url
- });
- break;
- case "reLaunch":
- uni.reLaunch({
- url: props2.url
- });
- break;
- case "navigateBack":
- uni.navigateBack({
- delta: props2.delta,
- animationType: props2.animationType || "pop-out",
- animationDuration
- });
- break;
- }
- };
- }
- class UniNavigatorElement extends UniElement {
- }
- const index$s = /* @__PURE__ */ defineBuiltInComponent({
- name: "Navigator",
- inheritAttrs: false,
- compatConfig: {
- MODE: 3
- },
- props: shared.extend({}, navigatorProps, {
- renderLink: {
- type: Boolean,
- default: true
- }
- }),
- setup(props2, {
- slots
- }) {
- const rootRef = vue.ref(null);
- const vm = vue.getCurrentInstance();
- const __scopeId = vm && vm.vnode.scopeId || "";
- const {
- hovering,
- binding
- } = useHover(props2);
- const onClick = createNavigatorOnClick(props2);
- return () => {
- const {
- hoverClass,
- url
- } = props2;
- const hasHoverClass = props2.hoverClass && props2.hoverClass !== "none";
- const innerNode = props2.renderLink ? vue.createVNode("a", {
- "class": "navigator-wrap",
- "href": url,
- "onClick": onEventPrevent,
- "onMousedown": onEventPrevent
- }, [slots.default && slots.default()], 40, ["href", "onClick", "onMousedown"]) : slots.default && slots.default();
- return vue.createVNode("uni-navigator", vue.mergeProps({
- "class": hasHoverClass && hovering.value ? hoverClass : "",
- "ref": rootRef
- }, hasHoverClass && binding, vm ? vm.attrs : {}, {
- [__scopeId]: ""
- }, {
- "onClick": onClick
- }), [innerNode], 16, ["onClick"]);
- };
- }
- });
- const pickerViewProps = {
- value: {
- type: Array,
- default() {
- return [];
- },
- validator: function(val) {
- return shared.isArray(val) && val.filter((val2) => typeof val2 === "number").length === val.length;
- }
- },
- indicatorStyle: {
- type: String,
- default: ""
- },
- indicatorClass: {
- type: String,
- default: ""
- },
- maskStyle: {
- type: String,
- default: ""
- },
- maskClass: {
- type: String,
- default: ""
- }
- };
- function useState$2(props2) {
- const value = vue.reactive([...props2.value]);
- const state = vue.reactive({
- value,
- height: 34
- });
- vue.watch(() => props2.value, (val, oldVal) => {
- {
- state.value.length = val.length;
- val.forEach((val2, index2) => {
- if (val2 !== state.value[index2]) {
- state.value.splice(index2, 1, val2);
- }
- });
- }
- });
- return state;
- }
- class UniPickerViewElement extends UniElement {
- }
- const PickerView = /* @__PURE__ */ defineBuiltInComponent({
- name: "PickerView",
- props: pickerViewProps,
- emits: ["change", "pickstart", "pickend", "update:value"],
- setup(props2, {
- slots,
- emit: emit2
- }) {
- const rootRef = vue.ref(null);
- const wrapperRef = vue.ref(null);
- const trigger = useCustomEvent(rootRef, emit2);
- const state = useState$2(props2);
- const resizeSensorRef = vue.ref(null);
- let ColumnsPreRef = vue.ref([]);
- let columnsRef = vue.ref([]);
- function getItemIndex(vnode) {
- let columnVNodes = columnsRef.value;
- {
- columnVNodes = columnVNodes.filter((vnode2) => vnode2.type !== vue.Comment);
- }
- let index2 = columnVNodes.indexOf(vnode);
- return index2 !== -1 ? index2 : ColumnsPreRef.value.indexOf(vnode);
- }
- const getPickerViewColumn = function(columnInstance) {
- const ref = vue.computed({
- get() {
- const index2 = getItemIndex(columnInstance.vnode);
- return state.value[index2] || 0;
- },
- set(current) {
- const index2 = getItemIndex(columnInstance.vnode);
- if (index2 < 0) {
- return;
- }
- const oldCurrent = state.value[index2];
- if (oldCurrent !== current) {
- state.value[index2] = current;
- const value = state.value.map((val) => val);
- emit2("update:value", value);
- trigger("change", {}, {
- value
- });
- }
- }
- });
- return ref;
- };
- vue.provide("getPickerViewColumn", getPickerViewColumn);
- vue.provide("pickerViewProps", props2);
- vue.provide("pickerViewState", state);
- return () => {
- const defaultSlots = slots.default && slots.default();
- {
- const vnode = flatVNode(defaultSlots);
- ColumnsPreRef.value = vnode;
- vue.nextTick(() => {
- columnsRef.value = vnode;
- });
- }
- return vue.createVNode("uni-picker-view", {
- "ref": rootRef
- }, [vue.createVNode(ResizeSensor, {
- "ref": resizeSensorRef,
- "onResize": ({
- height
- }) => state.height = height
- }, null, 8, ["onResize"]), vue.createVNode("div", {
- "ref": wrapperRef,
- "class": "uni-picker-view-wrapper"
- }, [defaultSlots], 512)], 512);
- };
- }
- });
- let scopedIndex = 0;
- function useScopedClass(indicatorHeightRef) {
- const className = `uni-picker-view-content-${scopedIndex++}`;
- function updateStyle() {
- const style = document.createElement("style");
- style.innerText = `.uni-picker-view-content.${className}>*{height: ${indicatorHeightRef.value}px;overflow: hidden;}`;
- document.head.appendChild(style);
- }
- vue.watch(() => indicatorHeightRef.value, updateStyle);
- return className;
- }
- class UniPickerViewColumnElement extends UniElement {
- }
- const PickerViewColumn = /* @__PURE__ */ defineBuiltInComponent({
- name: "PickerViewColumn",
- setup(props2, {
- slots,
- emit: emit2
- }) {
- const rootRef = vue.ref(null);
- const contentRef = vue.ref(null);
- const getPickerViewColumn = vue.inject("getPickerViewColumn");
- const instance = vue.getCurrentInstance();
- const currentRef = getPickerViewColumn ? getPickerViewColumn(instance) : vue.ref(0);
- const pickerViewProps2 = vue.inject("pickerViewProps");
- const pickerViewState = vue.inject("pickerViewState");
- const indicatorHeight = vue.ref(34);
- const resizeSensorRef = vue.ref(null);
- const maskSize = vue.computed(() => (pickerViewState.height - indicatorHeight.value) / 2);
- const {
- state: scopedAttrsState
- } = useScopedAttrs();
- const className = useScopedClass(indicatorHeight);
- let scroller;
- const state = vue.reactive({
- current: currentRef.value,
- length: 0
- });
- function updatesScroller() {
- }
- vue.watch(() => currentRef.value, (current) => {
- if (current !== state.current) {
- state.current = current;
- }
- });
- vue.watch(() => state.current, (current) => currentRef.value = current);
- vue.watch([() => indicatorHeight.value, () => state.length, () => pickerViewState.height], updatesScroller);
- let oldDeltaY = 0;
- function handleWheel(event) {
- const deltaY = oldDeltaY + event.deltaY;
- if (Math.abs(deltaY) > 10) {
- oldDeltaY = 0;
- let current = Math.min(state.current + (deltaY < 0 ? -1 : 1), state.length - 1);
- state.current = current = Math.max(current, 0);
- scroller.scrollTo(current * indicatorHeight.value);
- } else {
- oldDeltaY = deltaY;
- }
- event.preventDefault();
- }
- function handleTap({
- clientY
- }) {
- const el = rootRef.value;
- if (!scroller.isScrolling()) {
- const rect = el.getBoundingClientRect();
- const r = clientY - rect.top - pickerViewState.height / 2;
- const o = indicatorHeight.value / 2;
- if (!(Math.abs(r) <= o)) {
- const a = Math.ceil((Math.abs(r) - o) / indicatorHeight.value);
- const s = r < 0 ? -a : a;
- let current = Math.min(state.current + s, state.length - 1);
- state.current = current = Math.max(current, 0);
- scroller.scrollTo(current * indicatorHeight.value);
- }
- }
- }
- return () => {
- const defaultSlots = slots.default && slots.default();
- {
- state.length = flatVNode(defaultSlots).length;
- }
- const padding = `${maskSize.value}px 0`;
- return vue.createVNode("uni-picker-view-column", {
- "ref": rootRef
- }, [vue.createVNode("div", {
- "onWheel": handleWheel,
- "onClick": handleTap,
- "class": "uni-picker-view-group"
- }, [vue.createVNode("div", vue.mergeProps(scopedAttrsState.attrs, {
- "class": ["uni-picker-view-mask", pickerViewProps2.maskClass],
- "style": `background-size: 100% ${maskSize.value}px;${pickerViewProps2.maskStyle}`
- }), null, 16), vue.createVNode("div", vue.mergeProps(scopedAttrsState.attrs, {
- "class": ["uni-picker-view-indicator", pickerViewProps2.indicatorClass],
- "style": pickerViewProps2.indicatorStyle
- }), [vue.createVNode(ResizeSensor, {
- "ref": resizeSensorRef,
- "onResize": ({
- height
- }) => indicatorHeight.value = height
- }, null, 8, ["onResize"])], 16), vue.createVNode("div", {
- "ref": contentRef,
- "class": ["uni-picker-view-content", className],
- "style": {
- padding
- }
- }, [defaultSlots], 6)], 40, ["onWheel", "onClick"])], 512);
- };
- }
- });
- const FONT_SIZE = 16;
- const PROGRESS_VALUES = {
- activeColor: uniShared.PRIMARY_COLOR,
- backgroundColor: "#EBEBEB",
- activeMode: "backwards"
- };
- const progressProps = {
- percent: {
- type: [Number, String],
- default: 0,
- validator(value) {
- return !isNaN(parseFloat(value));
- }
- },
- fontSize: {
- type: [String, Number],
- default: FONT_SIZE
- },
- showInfo: {
- type: [Boolean, String],
- default: false
- },
- strokeWidth: {
- type: [Number, String],
- default: 6,
- validator(value) {
- return !isNaN(parseFloat(value));
- }
- },
- color: {
- type: String,
- default: PROGRESS_VALUES.activeColor
- },
- activeColor: {
- type: String,
- default: PROGRESS_VALUES.activeColor
- },
- backgroundColor: {
- type: String,
- default: PROGRESS_VALUES.backgroundColor
- },
- active: {
- type: [Boolean, String],
- default: false
- },
- activeMode: {
- type: String,
- default: PROGRESS_VALUES.activeMode
- },
- duration: {
- type: [Number, String],
- default: 30,
- validator(value) {
- return !isNaN(parseFloat(value));
- }
- },
- borderRadius: {
- type: [Number, String],
- default: 0
- }
- };
- class UniProgressElement extends UniElement {
- }
- const index$r = /* @__PURE__ */ defineBuiltInComponent({
- name: "Progress",
- props: progressProps,
- setup(props2) {
- const rootRef = vue.ref(null);
- const state = useProgressState(props2);
- _activeAnimation(state, props2);
- vue.watch(() => state.realPercent, (newValue, oldValue) => {
- state.strokeTimer && clearInterval(state.strokeTimer);
- state.lastPercent = oldValue || 0;
- _activeAnimation(state, props2);
- });
- return () => {
- const {
- showInfo
- } = props2;
- const {
- outerBarStyle,
- innerBarStyle,
- currentPercent
- } = state;
- return vue.createVNode("uni-progress", {
- "class": "uni-progress",
- "ref": rootRef
- }, [vue.createVNode("div", {
- "style": outerBarStyle,
- "class": "uni-progress-bar"
- }, [vue.createVNode("div", {
- "style": innerBarStyle,
- "class": "uni-progress-inner-bar"
- }, null, 4)], 4), showInfo ? (
- // {currentPercent}% 的写法会影响 SSR Hydration (tsx插件的问题)
- vue.createVNode("p", {
- "class": "uni-progress-info"
- }, [currentPercent + "%"])
- ) : ""], 512);
- };
- }
- });
- function useProgressState(props2) {
- const currentPercent = vue.ref(0);
- const outerBarStyle = vue.computed(() => `background-color: ${props2.backgroundColor}; height: ${props2.strokeWidth}px;`);
- const innerBarStyle = vue.computed(() => {
- const backgroundColor = props2.color !== PROGRESS_VALUES.activeColor && props2.activeColor === PROGRESS_VALUES.activeColor ? props2.color : props2.activeColor;
- return `width: ${currentPercent.value}%;background-color: ${backgroundColor}`;
- });
- const realPercent = vue.computed(() => {
- let realValue = parseFloat(props2.percent);
- realValue < 0 && (realValue = 0);
- realValue > 100 && (realValue = 100);
- return realValue;
- });
- const state = vue.reactive({
- outerBarStyle,
- innerBarStyle,
- realPercent,
- currentPercent,
- strokeTimer: 0,
- lastPercent: 0
- });
- return state;
- }
- function _activeAnimation(state, props2) {
- if (props2.active) {
- state.currentPercent = props2.activeMode === PROGRESS_VALUES.activeMode ? 0 : state.lastPercent;
- state.strokeTimer = setInterval(() => {
- if (state.currentPercent + 1 > state.realPercent) {
- state.currentPercent = state.realPercent;
- state.strokeTimer && clearInterval(state.strokeTimer);
- } else {
- state.currentPercent += 1;
- }
- }, parseFloat(props2.duration));
- } else {
- state.currentPercent = state.realPercent;
- }
- }
- const uniRadioGroupKey = PolySymbol(process.env.NODE_ENV !== "production" ? "uniCheckGroup" : "ucg");
- const props$i = {
- name: {
- type: String,
- default: ""
- }
- };
- class UniRadioGroupElement extends UniElement {
- }
- const index$q = /* @__PURE__ */ defineBuiltInComponent({
- name: "RadioGroup",
- props: props$i,
- // emits: ['change'],
- setup(props2, {
- emit: emit2,
- slots
- }) {
- const rootRef = vue.ref(null);
- const trigger = useCustomEvent(rootRef, emit2);
- useProvideRadioGroup(props2, trigger);
- return () => {
- return vue.createVNode("uni-radio-group", {
- "ref": rootRef
- }, [slots.default && slots.default()], 512);
- };
- }
- });
- function useProvideRadioGroup(props2, trigger) {
- const fields2 = [];
- const getFieldsValue = () => {
- var _a;
- return (_a = fields2.find((field) => field.value.radioChecked)) == null ? void 0 : _a.value.value;
- };
- vue.provide(uniRadioGroupKey, {
- addField(field) {
- fields2.push(field);
- },
- removeField(field) {
- fields2.splice(fields2.indexOf(field), 1);
- },
- radioChange($event, field) {
- const index2 = fields2.indexOf(field);
- _resetRadioGroupValue(index2, true);
- trigger("change", $event, {
- value: getFieldsValue()
- });
- }
- });
- const uniForm = vue.inject(uniFormKey, false);
- const formField = {
- submit: () => {
- let data = ["", null];
- if (props2.name !== "") {
- data[0] = props2.name;
- data[1] = getFieldsValue();
- }
- return data;
- }
- };
- if (uniForm) {
- uniForm.addField(formField);
- }
- function setFieldChecked(field, radioChecked) {
- field.value = {
- radioChecked,
- value: field.value.value
- };
- }
- function _resetRadioGroupValue(key, change) {
- fields2.forEach((value, index2) => {
- if (index2 === key) {
- return;
- }
- if (change) {
- setFieldChecked(fields2[index2], false);
- } else {
- fields2.forEach((v2, i) => {
- if (index2 >= i) {
- return;
- }
- if (fields2[i].value.radioChecked) {
- setFieldChecked(fields2[index2], false);
- }
- });
- }
- });
- }
- return fields2;
- }
- const props$h = {
- checked: {
- type: [Boolean, String],
- default: false
- },
- id: {
- type: String,
- default: ""
- },
- disabled: {
- type: [Boolean, String],
- default: false
- },
- value: {
- type: String,
- default: ""
- },
- color: {
- type: String,
- default: "#007aff"
- },
- backgroundColor: {
- type: String,
- default: ""
- },
- borderColor: {
- type: String,
- default: ""
- },
- activeBackgroundColor: {
- type: String,
- default: ""
- },
- activeBorderColor: {
- type: String,
- default: ""
- },
- iconColor: {
- type: String,
- default: "#ffffff"
- }
- };
- class UniRadioElement extends UniElement {
- }
- const indexX$2 = /* @__PURE__ */ defineBuiltInComponent({
- name: "Radio",
- props: props$h,
- setup(props2, {
- slots
- }) {
- const rootRef = vue.ref(null);
- const radioChecked = vue.ref(props2.checked);
- const radioValue = vue.ref(props2.value);
- function getRadioStyle(checked) {
- if (props2.disabled) {
- return {
- backgroundColor: "#E1E1E1",
- borderColor: "#D1D1D1"
- };
- }
- const style = {};
- if (radioChecked.value) {
- style.backgroundColor = props2.activeBackgroundColor || props2.color;
- style.borderColor = props2.activeBorderColor || style.backgroundColor;
- } else {
- if (props2.borderColor)
- style.borderColor = props2.borderColor;
- if (props2.backgroundColor)
- style.backgroundColor = props2.backgroundColor;
- }
- return style;
- }
- const radioStyle = vue.computed(() => {
- return getRadioStyle(radioChecked.value);
- });
- vue.watch([() => props2.checked, () => props2.value], ([newChecked, newModelValue]) => {
- radioChecked.value = newChecked;
- radioValue.value = newModelValue;
- });
- const reset = () => {
- radioChecked.value = false;
- };
- const {
- uniCheckGroup,
- uniLabel,
- field
- } = useRadioInject(radioChecked, radioValue, reset);
- const _onClick = ($event) => {
- if (props2.disabled || radioChecked.value) {
- return;
- }
- radioChecked.value = true;
- uniCheckGroup && uniCheckGroup.radioChange($event, field);
- $event.stopPropagation();
- };
- if (!!uniLabel) {
- uniLabel.addHandler(_onClick);
- }
- return () => {
- const booleanAttrs = useBooleanAttr(props2, "disabled");
- let realCheckValue;
- realCheckValue = radioChecked.value;
- return vue.createVNode("uni-radio", vue.mergeProps(booleanAttrs, {
- "onClick": _onClick,
- "ref": rootRef,
- "id": props2.id,
- "class": "uni-radio-wrapper",
- "style": {
- "--HOVER-BD-COLOR": !radioChecked.value ? props2.activeBorderColor : radioStyle.value.borderColor
- }
- }), [vue.createVNode("div", {
- "class": ["uni-radio-input", {
- "uni-radio-input-disabled": props2.disabled
- }],
- "style": radioStyle.value
- }, [realCheckValue ? createSvgIconVNode(ICON_PATH_SUCCESS_NO_CIRCLE, props2.disabled ? "#ADADAD" : props2.iconColor, 18) : ""], 6), slots.default && slots.default()], 16, ["onClick", "id"]);
- };
- }
- });
- function useRadioInject(radioChecked, radioValue, reset) {
- const field = vue.computed({
- get: () => ({
- radioChecked: Boolean(radioChecked.value),
- value: radioValue.value
- }),
- set: ({
- radioChecked: checked
- }) => {
- radioChecked.value = checked;
- }
- });
- const formField = {
- reset
- };
- const uniCheckGroup = vue.inject(uniRadioGroupKey, false);
- if (!!uniCheckGroup) {
- uniCheckGroup.addField(field);
- }
- const uniForm = vue.inject(uniFormKey, false);
- if (!!uniForm) {
- uniForm.addField(formField);
- }
- const uniLabel = vue.inject(uniLabelKey, false);
- return {
- uniCheckGroup,
- uniForm,
- uniLabel,
- field
- };
- }
- const TAGS = {
- a: "",
- abbr: "",
- address: "",
- article: "",
- aside: "",
- b: "",
- bdi: "",
- bdo: ["dir"],
- big: "",
- blockquote: "",
- br: "",
- caption: "",
- center: "",
- cite: "",
- code: "",
- col: ["span", "width"],
- colgroup: ["span", "width"],
- dd: "",
- del: "",
- div: "",
- dl: "",
- dt: "",
- em: "",
- fieldset: "",
- font: "",
- footer: "",
- h1: "",
- h2: "",
- h3: "",
- h4: "",
- h5: "",
- h6: "",
- header: "",
- hr: "",
- i: "",
- img: ["alt", "src", "height", "width"],
- ins: "",
- label: "",
- legend: "",
- li: "",
- mark: "",
- nav: "",
- ol: ["start", "type"],
- p: "",
- pre: "",
- q: "",
- rt: "",
- ruby: "",
- s: "",
- section: "",
- small: "",
- span: "",
- strong: "",
- sub: "",
- sup: "",
- table: ["width"],
- tbody: "",
- td: ["colspan", "height", "rowspan", "width"],
- tfoot: "",
- th: ["colspan", "height", "rowspan", "width"],
- thead: "",
- tr: ["colspan", "height", "rowspan", "width"],
- tt: "",
- u: "",
- ul: ""
- };
- const CHARS = {
- amp: "&",
- gt: ">",
- lt: "<",
- nbsp: " ",
- quot: '"',
- apos: "'",
- ldquo: "“",
- rdquo: "”",
- yen: "¥",
- radic: "√",
- lceil: "⌈",
- rceil: "⌉",
- lfloor: "⌊",
- rfloor: "⌋",
- hellip: "…"
- };
- function decodeEntities(htmlString) {
- return htmlString.replace(
- /&(([a-zA-Z]+)|(#x{0,1}[\da-zA-Z]+));/gi,
- function(match, stage) {
- if (shared.hasOwn(CHARS, stage) && CHARS[stage]) {
- return CHARS[stage];
- }
- if (/^#[0-9]{1,4}$/.test(stage)) {
- return String.fromCharCode(stage.slice(1));
- }
- if (/^#x[0-9a-f]{1,4}$/i.test(stage)) {
- return String.fromCharCode(0 + stage.slice(1));
- }
- return match;
- }
- );
- }
- function processClickEvent(node, triggerItemClick) {
- if (["a", "img"].includes(node.name) && triggerItemClick) {
- return {
- onClick: (e2) => {
- triggerItemClick(e2, { node });
- e2.stopPropagation();
- e2.preventDefault();
- e2.returnValue = false;
- }
- };
- }
- }
- function normalizeAttrs(tagName, attrs) {
- if (!shared.isPlainObject(attrs))
- return;
- for (const key in attrs) {
- if (shared.hasOwn(attrs, key)) {
- const value = attrs[key];
- if (tagName === "img" && key === "src")
- attrs[key] = getRealPath(value);
- }
- }
- }
- const nodeList2VNode = (scopeId, triggerItemClick, nodeList) => {
- if (!nodeList || shared.isArray(nodeList) && !nodeList.length)
- return [];
- return nodeList.map((node) => {
- if (!shared.isPlainObject(node)) {
- return;
- }
- if (!shared.hasOwn(node, "type") || node.type === "node") {
- let nodeProps = { [scopeId]: "" };
- const tagName = node.name.toLowerCase();
- if (!shared.hasOwn(TAGS, tagName)) {
- return;
- }
- normalizeAttrs(tagName, node.attrs);
- nodeProps = shared.extend(
- nodeProps,
- processClickEvent(node, triggerItemClick),
- node.attrs
- );
- return vue.h(
- node.name,
- nodeProps,
- nodeList2VNode(scopeId, triggerItemClick, node.children)
- );
- }
- if (node.type === "text" && shared.isString(node.text) && node.text !== "")
- return vue.createTextVNode(decodeEntities(node.text || ""));
- });
- };
- function removeDOCTYPE(html) {
- return html.replace(/<\?xml.*\?>\n/, "").replace(/<!doctype.*>\n/, "").replace(/<!DOCTYPE.*>\n/, "");
- }
- function parseAttrs(attrs) {
- return attrs.reduce(function(pre, attr2) {
- let value = attr2.value;
- const name = attr2.name;
- if (value.match(/ /) && ["style", "src"].indexOf(name) === -1) {
- value = value.split(" ");
- }
- if (pre[name]) {
- if (Array.isArray(pre[name])) {
- pre[name].push(value);
- } else {
- pre[name] = [pre[name], value];
- }
- } else {
- pre[name] = value;
- }
- return pre;
- }, {});
- }
- function parseHtml(html) {
- html = removeDOCTYPE(html);
- const stacks = [];
- const results = {
- node: "root",
- children: []
- };
- HTMLParser(html, {
- start: function(tag, attrs, unary) {
- const node = {
- name: tag
- };
- if (attrs.length !== 0) {
- node.attrs = parseAttrs(attrs);
- }
- if (unary) {
- const parent = stacks[0] || results;
- if (!parent.children) {
- parent.children = [];
- }
- parent.children.push(node);
- } else {
- stacks.unshift(node);
- }
- },
- end: function(tag) {
- const node = stacks.shift();
- if (node.name !== tag)
- console.error("invalid state: mismatch end tag");
- if (stacks.length === 0) {
- results.children.push(node);
- } else {
- const parent = stacks[0];
- if (!parent.children) {
- parent.children = [];
- }
- parent.children.push(node);
- }
- },
- chars: function(text) {
- const node = {
- type: "text",
- text
- };
- if (stacks.length === 0) {
- results.children.push(node);
- } else {
- const parent = stacks[0];
- if (!parent.children) {
- parent.children = [];
- }
- parent.children.push(node);
- }
- },
- comment: function(text) {
- const node = {
- node: "comment",
- text
- };
- const parent = stacks[0];
- if (!parent.children) {
- parent.children = [];
- }
- parent.children.push(node);
- }
- });
- return results.children;
- }
- const props$g = {
- nodes: {
- type: [Array, String],
- default: function() {
- return [];
- }
- }
- };
- class UniRichTextElement extends UniElement {
- }
- const index$p = /* @__PURE__ */ defineBuiltInComponent({
- name: "RichText",
- compatConfig: {
- MODE: 3
- },
- props: props$g,
- emits: ["click", "touchstart", "touchmove", "touchcancel", "touchend", "longpress", "itemclick"],
- setup(props2, {
- emit: emit2
- }) {
- const vm = vue.getCurrentInstance();
- const scopeId = vm && vm.vnode.scopeId || "";
- const rootRef = vue.ref(null);
- const _vnode = vue.ref([]);
- const trigger = useCustomEvent(rootRef, emit2);
- function triggerItemClick(e2, detail = {}) {
- trigger("itemclick", e2, detail);
- }
- function renderVNode() {
- let nodeList = props2.nodes;
- if (shared.isString(nodeList)) {
- nodeList = parseHtml(props2.nodes);
- }
- _vnode.value = nodeList2VNode(scopeId, triggerItemClick, nodeList);
- }
- vue.watch(() => props2.nodes, renderVNode, {
- immediate: true
- });
- return () => vue.h("uni-rich-text", {
- ref: rootRef
- }, vue.h("div", {}, _vnode.value));
- }
- });
- const props$f = {
- direction: {
- type: [String],
- default: "vertical"
- },
- scrollX: {
- type: [Boolean, String],
- default: false
- },
- scrollY: {
- type: [Boolean, String],
- default: false
- },
- showScrollbar: {
- type: [Boolean, String],
- default: true
- },
- upperThreshold: {
- type: [Number, String],
- default: 50
- },
- lowerThreshold: {
- type: [Number, String],
- default: 50
- },
- scrollTop: {
- type: [Number, String],
- default: 0
- },
- scrollLeft: {
- type: [Number, String],
- default: 0
- },
- scrollIntoView: {
- type: String,
- default: ""
- },
- scrollWithAnimation: {
- type: [Boolean, String],
- default: false
- },
- enableBackToTop: {
- type: [Boolean, String],
- default: false
- },
- refresherEnabled: {
- type: [Boolean, String],
- default: false
- },
- refresherThreshold: {
- type: Number,
- default: 45
- },
- refresherDefaultStyle: {
- type: String,
- default: "back"
- },
- refresherBackground: {
- type: String,
- default: "#fff"
- },
- refresherTriggered: {
- type: [Boolean, String],
- default: false
- }
- };
- class UniScrollViewElement extends UniElement {
- }
- const index$o = /* @__PURE__ */ defineBuiltInComponent({
- name: "ScrollView",
- compatConfig: {
- MODE: 3
- },
- props: props$f,
- emits: ["scroll", "scrolltoupper", "scrolltolower", "refresherrefresh", "refresherrestore", "refresherpulling", "refresherabort", "update:refresherTriggered"],
- setup(props2, {
- emit: emit2,
- slots
- }) {
- const rootRef = vue.ref(null);
- const main = vue.ref(null);
- const wrap = vue.ref(null);
- const content = vue.ref(null);
- const refresherinner = vue.ref(null);
- const trigger = useCustomEvent(rootRef, emit2);
- const {
- state,
- scrollTopNumber,
- scrollLeftNumber
- } = useScrollViewState(props2);
- const {
- realScrollX,
- realScrollY
- } = useScrollViewLoader(props2, state, scrollTopNumber, scrollLeftNumber, trigger, rootRef, main, content, emit2);
- const mainStyle = vue.computed(() => {
- let style = "";
- realScrollX.value ? style += "overflow-x:auto;" : style += "overflow-x:hidden;";
- realScrollY.value ? style += "overflow-y:auto;" : style += "overflow-y:hidden;";
- return style;
- });
- const scrollBarClassName = vue.computed(() => {
- let className = "uni-scroll-view";
- if (props2.showScrollbar === false) {
- className += " uni-scroll-view-scrollbar-hidden";
- }
- return className;
- });
- return () => {
- const {
- refresherEnabled,
- refresherBackground,
- refresherDefaultStyle
- } = props2;
- const {
- refresherHeight,
- refreshState,
- refreshRotate
- } = state;
- return vue.createVNode("uni-scroll-view", {
- "ref": rootRef
- }, [vue.createVNode("div", {
- "ref": wrap,
- "class": "uni-scroll-view"
- }, [vue.createVNode("div", {
- "ref": main,
- "style": mainStyle.value,
- "class": scrollBarClassName.value
- }, [vue.createVNode("div", {
- "ref": content,
- "class": "uni-scroll-view-content"
- }, [refresherEnabled ? vue.createVNode("div", {
- "ref": refresherinner,
- "style": {
- backgroundColor: refresherBackground,
- height: refresherHeight + "px"
- },
- "class": "uni-scroll-view-refresher"
- }, [refresherDefaultStyle !== "none" ? vue.createVNode("div", {
- "class": "uni-scroll-view-refresh"
- }, [vue.createVNode("div", {
- "class": "uni-scroll-view-refresh-inner"
- }, [refreshState == "pulling" ? vue.createVNode("svg", {
- "key": "refresh__icon",
- "style": {
- transform: "rotate(" + refreshRotate + "deg)"
- },
- "fill": "#2BD009",
- "class": "uni-scroll-view-refresh__icon",
- "width": "24",
- "height": "24",
- "viewBox": "0 0 24 24"
- }, [vue.createVNode("path", {
- "d": "M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"
- }, null), vue.createVNode("path", {
- "d": "M0 0h24v24H0z",
- "fill": "none"
- }, null)], 4) : null, refreshState == "refreshing" ? vue.createVNode("svg", {
- "key": "refresh__spinner",
- "class": "uni-scroll-view-refresh__spinner",
- "width": "24",
- "height": "24",
- "viewBox": "25 25 50 50"
- }, [vue.createVNode("circle", {
- "cx": "50",
- "cy": "50",
- "r": "20",
- "fill": "none",
- "style": "color: #2bd009",
- "stroke-width": "3"
- }, null)]) : null])]) : null, refresherDefaultStyle == "none" ? slots.refresher && slots.refresher() : null], 4) : null, slots.default && slots.default()], 512)], 6)], 512)], 512);
- };
- }
- });
- function useScrollViewState(props2) {
- const scrollTopNumber = vue.computed(() => {
- return Number(props2.scrollTop) || 0;
- });
- const scrollLeftNumber = vue.computed(() => {
- return Number(props2.scrollLeft) || 0;
- });
- const state = vue.reactive({
- lastScrollTop: scrollTopNumber.value,
- lastScrollLeft: scrollLeftNumber.value,
- lastScrollToUpperTime: 0,
- lastScrollToLowerTime: 0,
- refresherHeight: 0,
- refreshRotate: 0,
- refreshState: ""
- });
- return {
- state,
- scrollTopNumber,
- scrollLeftNumber
- };
- }
- function useScrollViewLoader(props2, state, scrollTopNumber, scrollLeftNumber, trigger, rootRef, main, content, emit2) {
- let beforeRefreshing = false;
- let triggerAbort = false;
- let __transitionEnd = () => {
- };
- const realScrollX = vue.computed(() => {
- if (props2.direction === "horizontal" || props2.direction === "all") {
- return true;
- }
- return false;
- });
- const realScrollY = vue.computed(() => {
- if (props2.direction === "vertical" || props2.direction === "all") {
- return true;
- }
- return false;
- });
- vue.computed(() => {
- let val = Number(props2.upperThreshold);
- return isNaN(val) ? 50 : val;
- });
- vue.computed(() => {
- let val = Number(props2.lowerThreshold);
- return isNaN(val) ? 50 : val;
- });
- function scrollTo(scrollToValue, direction) {
- const container = main.value;
- let transformValue = 0;
- let transform = "";
- scrollToValue < 0 ? scrollToValue = 0 : direction === "x" && scrollToValue > container.scrollWidth - container.offsetWidth ? scrollToValue = container.scrollWidth - container.offsetWidth : direction === "y" && scrollToValue > container.scrollHeight - container.offsetHeight && (scrollToValue = container.scrollHeight - container.offsetHeight);
- direction === "x" ? transformValue = container.scrollLeft - scrollToValue : direction === "y" && (transformValue = container.scrollTop - scrollToValue);
- if (transformValue === 0)
- return;
- let _content = content.value;
- _content.style.transition = "transform .3s ease-out";
- _content.style.webkitTransition = "-webkit-transform .3s ease-out";
- if (direction === "x") {
- transform = "translateX(" + transformValue + "px) translateZ(0)";
- } else {
- direction === "y" && (transform = "translateY(" + transformValue + "px) translateZ(0)");
- }
- _content.removeEventListener("transitionend", __transitionEnd);
- _content.removeEventListener("webkitTransitionEnd", __transitionEnd);
- __transitionEnd = () => _transitionEnd(scrollToValue, direction);
- _content.addEventListener("transitionend", __transitionEnd);
- _content.addEventListener("webkitTransitionEnd", __transitionEnd);
- if (direction === "x") {
- container.style.overflowX = "hidden";
- } else if (direction === "y") {
- container.style.overflowY = "hidden";
- }
- _content.style.transform = transform;
- _content.style.webkitTransform = transform;
- }
- function _scrollTopChanged(val) {
- if (realScrollY.value) {
- {
- if (props2.scrollWithAnimation) {
- scrollTo(val, "y");
- } else {
- main.value.scrollTop = val;
- }
- }
- }
- }
- function _scrollLeftChanged(val) {
- if (realScrollX.value) {
- {
- if (props2.scrollWithAnimation) {
- scrollTo(val, "x");
- } else {
- main.value.scrollLeft = val;
- }
- }
- }
- }
- function _scrollIntoViewChanged(val) {
- if (val) {
- if (!/^[_a-zA-Z][-_a-zA-Z0-9:]*$/.test(val)) {
- console.error(`id error: scroll-into-view=${val}`);
- return;
- }
- let element = rootRef.value.querySelector("#" + val);
- if (element) {
- let mainRect = main.value.getBoundingClientRect();
- let elRect = element.getBoundingClientRect();
- if (realScrollX.value) {
- let left = elRect.left - mainRect.left;
- let scrollLeft = main.value.scrollLeft;
- let x = scrollLeft + left;
- if (props2.scrollWithAnimation) {
- scrollTo(x, "x");
- } else {
- main.value.scrollLeft = x;
- }
- }
- if (realScrollY.value) {
- let top = elRect.top - mainRect.top;
- let scrollTop = main.value.scrollTop;
- let y = scrollTop + top;
- if (props2.scrollWithAnimation) {
- scrollTo(y, "y");
- } else {
- main.value.scrollTop = y;
- }
- }
- }
- }
- }
- function _transitionEnd(val, direction) {
- content.value.style.transition = "";
- content.value.style.webkitTransition = "";
- content.value.style.transform = "";
- content.value.style.webkitTransform = "";
- let _main = main.value;
- if (direction === "x") {
- _main.style.overflowX = realScrollX.value ? "auto" : "hidden";
- _main.scrollLeft = val;
- } else if (direction === "y") {
- _main.style.overflowY = realScrollY.value ? "auto" : "hidden";
- _main.scrollTop = val;
- }
- content.value.removeEventListener("transitionend", __transitionEnd);
- content.value.removeEventListener("webkitTransitionEnd", __transitionEnd);
- }
- function _setRefreshState(_state) {
- if (!props2.refresherEnabled)
- return;
- switch (_state) {
- case "refreshing":
- state.refresherHeight = props2.refresherThreshold;
- if (!beforeRefreshing) {
- beforeRefreshing = true;
- trigger("refresherrefresh", {}, {});
- emit2("update:refresherTriggered", true);
- }
- break;
- case "restore":
- case "refresherabort":
- beforeRefreshing = false;
- state.refresherHeight = 0;
- if (_state === "restore") {
- triggerAbort = false;
- trigger("refresherrestore", {}, {});
- }
- if (_state === "refresherabort" && triggerAbort) {
- triggerAbort = false;
- trigger("refresherabort", {}, {});
- }
- break;
- }
- state.refreshState = _state;
- }
- vue.watch(scrollTopNumber, (val) => {
- _scrollTopChanged(val);
- });
- vue.watch(scrollLeftNumber, (val) => {
- _scrollLeftChanged(val);
- });
- vue.watch(() => props2.scrollIntoView, (val) => {
- _scrollIntoViewChanged(val);
- });
- vue.watch(() => props2.refresherTriggered, (val) => {
- if (val === true) {
- _setRefreshState("refreshing");
- } else if (val === false) {
- _setRefreshState("restore");
- }
- });
- return {
- realScrollX,
- realScrollY
- };
- }
- const SLIDER_BLOCK_SIZE_MIN_VALUE = 12;
- const SLIDER_BLOCK_SIZE_MAX_VALUE = 28;
- const props$e = {
- name: {
- type: String,
- default: ""
- },
- min: {
- type: [Number, String],
- default: 0
- },
- max: {
- type: [Number, String],
- default: 100
- },
- value: {
- type: [Number, String],
- default: 0
- },
- step: {
- type: [Number, String],
- default: 1
- },
- disabled: {
- type: [Boolean, String],
- default: false
- },
- color: {
- type: String,
- default: "#e9e9e9"
- },
- backgroundColor: {
- type: String,
- default: "#e9e9e9"
- },
- activeColor: {
- type: String,
- default: "#007aff"
- },
- selectedColor: {
- type: String,
- default: "#007aff"
- },
- blockColor: {
- type: String,
- default: "#ffffff"
- },
- blockSize: {
- type: [Number, String],
- default: 28
- },
- showValue: {
- type: [Boolean, String],
- default: false
- }
- };
- const getValuePercentage = (value, min, max) => {
- return 100 * (value - min) / (max - min) + "%";
- };
- class UniSliderElement extends UniElement {
- constructor() {
- super(...arguments);
- __publicField(this, "_initialValue", 0);
- }
- init() {
- this.htmlSlider = this.querySelector(".uni-slider-browser-input-range");
- this.trackValue = this.querySelector(".uni-slider-track-value");
- this.thumbValue = this.querySelector(".uni-slider-thumb-value");
- this.inputValue = this.querySelector(".uni-slider-value");
- this.updateValue(this.value);
- }
- get value() {
- return Number(this.htmlSlider.value);
- }
- set value(value) {
- this.htmlSlider.value = value.toString();
- this.updateValue(value);
- }
- reset() {
- this.value = this._initialValue;
- }
- updateValue(value) {
- const min = Number(this.htmlSlider.getAttribute("min"));
- const max = Number(this.htmlSlider.getAttribute("max"));
- if (value < min) {
- value = min;
- } else if (value > max) {
- value = max;
- }
- const percentage = getValuePercentage(value, min, max);
- this.trackValue.style.width = percentage;
- this.thumbValue.style.left = percentage;
- this.inputValue.innerText = value.toString();
- }
- }
- const indexX$1 = /* @__PURE__ */ defineBuiltInComponent({
- name: "Slider",
- props: props$e,
- emits: ["changing", "change"],
- rootElement: {
- name: "uni-slider",
- class: UniSliderElement
- },
- setup(props2, {
- emit: emit2
- }) {
- const sliderRef = vue.ref(null);
- const sliderValueRef = vue.ref(null);
- let uniSliderElement;
- vue.watch(() => props2.value, (val) => {
- uniSliderElement.value = Number(val);
- });
- const trigger = useCustomEvent(sliderRef, emit2);
- const state = useSliderState(props2);
- const {
- _onInput,
- _onChange
- } = useSliderLoader(props2, sliderRef, trigger);
- return () => {
- const {
- setTrackBgColor,
- setActiveColor,
- setThumbStyle,
- thumbTrackStyle
- } = state;
- return vue.createVNode("uni-slider", {
- "ref": sliderRef
- }, [vue.createVNode("div", {
- "class": "uni-slider-wrapper"
- }, [vue.createVNode("div", {
- "class": "uni-slider-input"
- }, [vue.createVNode("div", {
- "style": setTrackBgColor.value,
- "class": "uni-slider-track"
- }, [vue.createVNode("div", {
- "style": setActiveColor.value,
- "class": "uni-slider-track-value"
- }, null, 4)], 4), vue.createVNode("div", {
- "style": thumbTrackStyle.value,
- "class": "uni-slider-thumb-track"
- }, [vue.createVNode("div", {
- "style": setThumbStyle.value,
- "class": "uni-slider-thumb-value"
- }, null, 4)], 4), vue.createVNode("input", {
- "class": "uni-slider-browser-input-range",
- "type": "range",
- "min": props2.min,
- "max": props2.max,
- "step": props2.step,
- "value": props2.value,
- "onInput": withWebEvent(_onInput),
- "onChange": withWebEvent(_onChange)
- }, null, 40, ["min", "max", "step", "value", "onInput", "onChange"])]), vue.withDirectives(vue.createVNode("span", {
- "ref": sliderValueRef,
- "class": "uni-slider-value"
- }, null, 512), [[vue.vShow, props2.showValue]])]), vue.createVNode("slot", null, null)], 512);
- };
- }
- });
- function useSliderState(props2) {
- const _getBgColor = () => {
- return props2.backgroundColor !== "#e9e9e9" ? props2.backgroundColor : props2.color !== "#007aff" ? props2.color : "#007aff";
- };
- const _getActiveColor = () => {
- return props2.activeColor !== "#007aff" ? props2.activeColor : props2.selectedColor !== "#e9e9e9" ? props2.selectedColor : "#e9e9e9";
- };
- const _getBlockSizeString = () => {
- const blockSize = Math.min(Math.max(Number(props2.blockSize), SLIDER_BLOCK_SIZE_MIN_VALUE), SLIDER_BLOCK_SIZE_MAX_VALUE);
- return blockSize + "px";
- };
- const state = {
- setTrackBgColor: vue.computed(() => ({
- backgroundColor: _getBgColor()
- })),
- setActiveColor: vue.computed(() => ({
- backgroundColor: _getActiveColor()
- })),
- thumbTrackStyle: vue.computed(() => ({
- marginRight: _getBlockSizeString()
- })),
- setThumbStyle: vue.computed(() => ({
- width: _getBlockSizeString(),
- height: _getBlockSizeString(),
- backgroundColor: props2.blockColor
- }))
- };
- return state;
- }
- function useSliderLoader(props2, sliderRef, trigger) {
- const _onInput = (event) => {
- if (props2.disabled) {
- return;
- }
- const valueNumber = Number(event.target.value);
- sliderRef.value.updateValue(valueNumber);
- trigger("changing", event, {
- value: valueNumber
- });
- };
- const _onChange = (event) => {
- if (props2.disabled) {
- return;
- }
- const valueNumber = Number(event.target.value);
- sliderRef.value.updateValue(valueNumber);
- trigger("change", event, {
- value: valueNumber
- });
- };
- const uniForm = vue.inject(uniFormKey, false);
- if (!!uniForm) {
- const field = {
- reset: () => {
- sliderRef.value.reset();
- },
- submit: () => {
- const data = ["", null];
- const value = sliderRef.value.value;
- if (props2.name !== "") {
- data[0] = props2.name;
- data[1] = value;
- }
- return data;
- }
- };
- uniForm.addField(field);
- }
- return {
- _onInput,
- _onChange
- };
- }
- const props$d = {
- indicatorDots: {
- type: [Boolean, String],
- default: false
- },
- vertical: {
- type: [Boolean, String],
- default: false
- },
- autoplay: {
- type: [Boolean, String],
- default: false
- },
- circular: {
- type: [Boolean, String],
- default: false
- },
- interval: {
- type: [Number, String],
- default: 5e3
- },
- duration: {
- type: [Number, String],
- default: 500
- },
- current: {
- type: [Number, String],
- default: 0
- },
- indicatorColor: {
- type: String,
- default: ""
- },
- indicatorActiveColor: {
- type: String,
- default: ""
- },
- previousMargin: {
- type: String,
- default: ""
- },
- nextMargin: {
- type: String,
- default: ""
- },
- currentItemId: {
- type: String,
- default: ""
- },
- skipHiddenItemLayout: {
- type: [Boolean, String],
- default: false
- },
- displayMultipleItems: {
- type: [Number, String],
- default: 1
- },
- disableTouch: {
- type: [Boolean, String],
- default: false
- },
- navigation: {
- type: [Boolean, String],
- default: false
- },
- navigationColor: {
- type: String,
- default: "#fff"
- },
- navigationActiveColor: {
- type: String,
- default: "rgba(53, 53, 53, 0.6)"
- }
- };
- function useState$1(props2) {
- const interval = vue.computed(() => {
- const interval2 = Number(props2.interval);
- return isNaN(interval2) ? 5e3 : interval2;
- });
- const duration = vue.computed(() => {
- const duration2 = Number(props2.duration);
- return isNaN(duration2) ? 500 : duration2;
- });
- const displayMultipleItems = vue.computed(() => {
- const displayMultipleItems2 = Math.round(props2.displayMultipleItems);
- return isNaN(displayMultipleItems2) ? 1 : displayMultipleItems2;
- });
- const state = vue.reactive({
- interval,
- duration,
- displayMultipleItems,
- current: Math.round(props2.current) || 0,
- currentItemId: props2.currentItemId,
- userTracking: false
- });
- return state;
- }
- function useLayout(props2, state, swiperContexts, slideFrameRef, emit2, trigger) {
- function cancelSchedule() {
- if (timer) {
- clearTimeout(timer);
- timer = null;
- }
- }
- let timer = null;
- let invalid = true;
- let viewportPosition = 0;
- let viewportMoveRatio = 1;
- let animating = null;
- let requestedAnimation = false;
- let contentTrackViewport = 0;
- let transitionStart;
- let currentChangeSource = "";
- const swiperEnabled = vue.computed(() => swiperContexts.value.length > state.displayMultipleItems);
- const circularEnabled = vue.computed(() => props2.circular && swiperEnabled.value);
- function checkCircularLayout(index2) {
- if (!invalid) {
- for (let items = swiperContexts.value, n = items.length, i = index2 + state.displayMultipleItems, r = 0; r < n; r++) {
- const item = items[r];
- const s = Math.floor(index2 / n) * n + r;
- const l = s + n;
- const c = s - n;
- const u = Math.max(index2 - (s + 1), s - i, 0);
- const d = Math.max(index2 - (l + 1), l - i, 0);
- const h = Math.max(index2 - (c + 1), c - i, 0);
- const p2 = Math.min(u, d, h);
- const position = [s, l, c][[u, d, h].indexOf(p2)];
- item.updatePosition(position, props2.vertical);
- }
- }
- }
- function updateViewport(index2) {
- if (!(Math.floor(2 * viewportPosition) === Math.floor(2 * index2) && Math.ceil(2 * viewportPosition) === Math.ceil(2 * index2))) {
- if (circularEnabled.value) {
- checkCircularLayout(index2);
- }
- }
- const x = props2.vertical ? "0" : 100 * -index2 * viewportMoveRatio + "%";
- const y = props2.vertical ? 100 * -index2 * viewportMoveRatio + "%" : "0";
- const transform = "translate(" + x + ", " + y + ") translateZ(0)";
- const slideFrame = slideFrameRef.value;
- if (slideFrame) {
- slideFrame.style.webkitTransform = transform;
- slideFrame.style.transform = transform;
- }
- viewportPosition = index2;
- if (!transitionStart) {
- if (index2 % 1 === 0) {
- return;
- }
- transitionStart = index2;
- }
- index2 -= Math.floor(transitionStart);
- const items = swiperContexts.value;
- if (index2 <= -(items.length - 1)) {
- index2 += items.length;
- } else if (index2 >= items.length) {
- index2 -= items.length;
- }
- index2 = transitionStart % 1 > 0.5 || transitionStart < 0 ? index2 - 1 : index2;
- trigger("transition", {}, {
- dx: props2.vertical ? 0 : index2 * slideFrame.offsetWidth,
- dy: props2.vertical ? index2 * slideFrame.offsetHeight : 0
- });
- }
- function endViewportAnimation() {
- if (animating) {
- updateViewport(animating.toPos);
- animating = null;
- }
- }
- function normalizeCurrentValue(current) {
- const length = swiperContexts.value.length;
- if (!length) {
- return -1;
- }
- const index2 = (Math.round(current) % length + length) % length;
- if (circularEnabled.value) {
- if (length <= state.displayMultipleItems) {
- return 0;
- }
- } else if (index2 > length - state.displayMultipleItems) {
- return length - state.displayMultipleItems;
- }
- return index2;
- }
- function cancelViewportAnimation() {
- animating = null;
- }
- function animateFrameFuncProto() {
- if (!animating) {
- requestedAnimation = false;
- return;
- }
- const _animating = animating;
- const toPos = _animating.toPos;
- const acc = _animating.acc;
- const endTime = _animating.endTime;
- const source = _animating.source;
- const time = endTime - Date.now();
- if (time <= 0) {
- updateViewport(toPos);
- animating = null;
- requestedAnimation = false;
- transitionStart = null;
- const item = swiperContexts.value[state.current];
- if (item) {
- const currentItemId = item.getItemId();
- trigger("animationfinish", {}, {
- current: state.current,
- currentItemId,
- source
- });
- }
- return;
- }
- const s = acc * time * time / 2;
- const l = toPos + s;
- updateViewport(l);
- requestAnimationFrame(animateFrameFuncProto);
- }
- function animateViewport(current, source, n) {
- cancelViewportAnimation();
- const duration = state.duration;
- const length = swiperContexts.value.length;
- let position = viewportPosition;
- if (circularEnabled.value) {
- if (n < 0) {
- for (; position < current; ) {
- position += length;
- }
- for (; position - length > current; ) {
- position -= length;
- }
- } else if (n > 0) {
- for (; position > current; ) {
- position -= length;
- }
- for (; position + length < current; ) {
- position += length;
- }
- if (position + length - current < current - position) {
- position += length;
- }
- } else {
- for (; position + length < current; ) {
- position += length;
- }
- for (; position - length > current; ) {
- position -= length;
- }
- if (position + length - current < current - position) {
- position += length;
- }
- }
- } else if (source === "click") {
- current = current + state.displayMultipleItems - 1 < length ? current : 0;
- }
- animating = {
- toPos: current,
- acc: 2 * (position - current) / (duration * duration),
- endTime: Date.now() + duration,
- source
- };
- if (!requestedAnimation) {
- requestedAnimation = true;
- requestAnimationFrame(animateFrameFuncProto);
- }
- }
- function scheduleAutoplay() {
- cancelSchedule();
- const items = swiperContexts.value;
- const callback = function() {
- timer = null;
- currentChangeSource = "autoplay";
- if (circularEnabled.value) {
- state.current = normalizeCurrentValue(state.current + 1);
- } else {
- state.current = state.current + state.displayMultipleItems < items.length ? state.current + 1 : 0;
- }
- animateViewport(state.current, "autoplay", circularEnabled.value ? 1 : 0);
- timer = setTimeout(callback, state.interval);
- };
- if (!(invalid || items.length <= state.displayMultipleItems)) {
- timer = setTimeout(callback, state.interval);
- }
- }
- function resetLayout() {
- cancelSchedule();
- endViewportAnimation();
- const items = swiperContexts.value;
- for (let i = 0; i < items.length; i++) {
- items[i].updatePosition(i, props2.vertical);
- }
- viewportMoveRatio = 1;
- const slideFrameEl = slideFrameRef.value;
- if (state.displayMultipleItems === 1 && items.length) {
- const itemRect = items[0].getBoundingClientRect();
- const slideFrameRect = slideFrameEl.getBoundingClientRect();
- viewportMoveRatio = itemRect.width / slideFrameRect.width;
- if (!(viewportMoveRatio > 0 && viewportMoveRatio < 1)) {
- viewportMoveRatio = 1;
- }
- }
- const position = viewportPosition;
- viewportPosition = -2;
- const current = state.current;
- if (current >= 0) {
- invalid = false;
- if (state.userTracking) {
- updateViewport(position + current - contentTrackViewport);
- contentTrackViewport = current;
- } else {
- updateViewport(current);
- if (props2.autoplay) {
- scheduleAutoplay();
- }
- }
- } else {
- invalid = true;
- updateViewport(-state.displayMultipleItems - 1);
- }
- }
- vue.watch([() => props2.current, () => props2.currentItemId, () => [...swiperContexts.value]], () => {
- let current = -1;
- if (props2.currentItemId) {
- for (let i = 0, items = swiperContexts.value; i < items.length; i++) {
- const itemId = items[i].getItemId();
- if (itemId === props2.currentItemId) {
- current = i;
- break;
- }
- }
- }
- if (current < 0) {
- current = Math.round(props2.current) || 0;
- }
- current = current < 0 ? 0 : current;
- if (state.current !== current) {
- currentChangeSource = "";
- state.current = current;
- }
- });
- vue.watch([() => props2.vertical, () => circularEnabled.value, () => state.displayMultipleItems, () => [...swiperContexts.value]], resetLayout);
- vue.watch(() => state.interval, () => {
- if (timer) {
- cancelSchedule();
- scheduleAutoplay();
- }
- });
- function currentChanged(current, history) {
- const source = currentChangeSource;
- currentChangeSource = "";
- const items = swiperContexts.value;
- if (!source) {
- const length = items.length;
- animateViewport(current, "", circularEnabled.value && history + (length - current) % length > length / 2 ? 1 : 0);
- }
- const item = items[current];
- if (item) {
- const currentItemId = state.currentItemId = item.getItemId();
- trigger("change", {}, {
- current: state.current,
- currentItemId,
- source
- });
- }
- }
- vue.watch(() => state.current, (val, oldVal) => {
- currentChanged(val, oldVal);
- emit2("update:current", val);
- });
- vue.watch(() => state.currentItemId, (val) => {
- emit2("update:currentItemId", val);
- });
- function inintAutoplay(enable) {
- if (enable) {
- scheduleAutoplay();
- } else {
- cancelSchedule();
- }
- }
- vue.watch(() => props2.autoplay && !state.userTracking, inintAutoplay);
- inintAutoplay(props2.autoplay && !state.userTracking);
- function onSwiperDotClick(index2) {
- animateViewport(state.current = index2, currentChangeSource = "click", circularEnabled.value ? 1 : 0);
- }
- return {
- onSwiperDotClick,
- circularEnabled,
- swiperEnabled
- };
- }
- class UniSwiperElement extends UniElement {
- }
- const index$n = /* @__PURE__ */ defineBuiltInComponent({
- name: "Swiper",
- props: props$d,
- emits: ["change", "transition", "animationfinish", "update:current", "update:currentItemId"],
- setup(props2, {
- slots,
- emit: emit2
- }) {
- const rootRef = vue.ref(null);
- const trigger = useCustomEvent(rootRef, emit2);
- const slidesWrapperRef = vue.ref(null);
- const slideFrameRef = vue.ref(null);
- const state = useState$1(props2);
- const slidesStyle = vue.computed(() => {
- let style = {};
- if (props2.nextMargin || props2.previousMargin) {
- style = props2.vertical ? {
- left: 0,
- right: 0,
- top: rpx2px(props2.previousMargin, true),
- bottom: rpx2px(props2.nextMargin, true)
- } : {
- top: 0,
- bottom: 0,
- left: rpx2px(props2.previousMargin, true),
- right: rpx2px(props2.nextMargin, true)
- };
- }
- return style;
- });
- const slideFrameStyle = vue.computed(() => {
- const value = Math.abs(100 / state.displayMultipleItems) + "%";
- return {
- width: props2.vertical ? "100%" : value,
- height: !props2.vertical ? "100%" : value
- };
- });
- let swiperItems = [];
- const originSwiperContexts = [];
- const swiperContexts = vue.ref([]);
- function updateSwiperContexts() {
- const contexts = [];
- for (let index2 = 0; index2 < swiperItems.length; index2++) {
- let swiperItem = swiperItems[index2];
- if (!(swiperItem instanceof Element)) {
- swiperItem = swiperItem.el;
- }
- const swiperContext = originSwiperContexts.find((context) => swiperItem === context.rootRef.value);
- if (swiperContext) {
- contexts.push(vue.markRaw(swiperContext));
- }
- }
- swiperContexts.value = contexts;
- }
- const addSwiperContext = function(swiperContext) {
- originSwiperContexts.push(swiperContext);
- updateSwiperContexts();
- };
- vue.provide("addSwiperContext", addSwiperContext);
- const removeSwiperContext = function(swiperContext) {
- const index2 = originSwiperContexts.indexOf(swiperContext);
- if (index2 >= 0) {
- originSwiperContexts.splice(index2, 1);
- updateSwiperContexts();
- }
- };
- vue.provide("removeSwiperContext", removeSwiperContext);
- const {
- onSwiperDotClick,
- circularEnabled,
- swiperEnabled
- } = useLayout(props2, state, swiperContexts, slideFrameRef, emit2, trigger);
- let createNavigationTsx = () => null;
- {
- createNavigationTsx = useSwiperNavigation(rootRef, props2, state, onSwiperDotClick, swiperContexts, circularEnabled, swiperEnabled);
- }
- return () => {
- const defaultSlots = slots.default && slots.default();
- swiperItems = flatVNode(defaultSlots);
- return vue.createVNode("uni-swiper", {
- "ref": rootRef
- }, [vue.createVNode("div", {
- "ref": slidesWrapperRef,
- "class": "uni-swiper-wrapper"
- }, [vue.createVNode("div", {
- "class": "uni-swiper-slides",
- "style": slidesStyle.value
- }, [vue.createVNode("div", {
- "ref": slideFrameRef,
- "class": "uni-swiper-slide-frame",
- "style": slideFrameStyle.value
- }, [defaultSlots], 4)], 4), props2.indicatorDots && vue.createVNode("div", {
- "class": ["uni-swiper-dots", props2.vertical ? "uni-swiper-dots-vertical" : "uni-swiper-dots-horizontal"]
- }, [swiperContexts.value.map((_, index2, array) => vue.createVNode("div", {
- "onClick": () => onSwiperDotClick(index2),
- "class": {
- "uni-swiper-dot": true,
- "uni-swiper-dot-active": index2 < state.current + state.displayMultipleItems && index2 >= state.current || index2 < state.current + state.displayMultipleItems - array.length
- },
- "style": {
- background: index2 === state.current ? props2.indicatorActiveColor : props2.indicatorColor
- }
- }, null, 14, ["onClick"]))], 2), createNavigationTsx()], 512)], 512);
- };
- }
- });
- const useSwiperNavigation = (rootRef, props2, state, onSwiperDotClick, swiperContext, circularEnabled, swiperEnabled) => {
- let isNavigationAuto = false;
- let prevDisabled = false;
- let nextDisabled = false;
- let hideNavigation = vue.ref(false);
- vue.watchEffect(() => {
- isNavigationAuto = props2.navigation === "auto";
- hideNavigation.value = props2.navigation !== true || isNavigationAuto;
- swiperAddMouseEvent();
- });
- vue.watchEffect(() => {
- const swiperItemLength = swiperContext.value.length;
- const notCircular = !circularEnabled.value;
- prevDisabled = state.current === 0 && notCircular;
- nextDisabled = state.current === swiperItemLength - 1 && notCircular || notCircular && state.current + state.displayMultipleItems >= swiperItemLength;
- if (!swiperEnabled.value) {
- prevDisabled = true;
- nextDisabled = true;
- isNavigationAuto && (hideNavigation.value = true);
- }
- });
- function navigationHover(event, type) {
- const target = event.currentTarget;
- if (!target)
- return;
- target.style.backgroundColor = type === "over" ? props2.navigationActiveColor : "";
- }
- const navigationAttr = {
- onMouseover: (event) => navigationHover(event, "over"),
- onMouseout: (event) => navigationHover(event, "out")
- };
- function navigationClick($event, type, disabled) {
- $event.stopPropagation();
- if (disabled)
- return;
- const swiperItemLength = swiperContext.value.length;
- let _current = state.current;
- switch (type) {
- case "prev":
- _current--;
- if (_current < 0 && circularEnabled.value) {
- _current = swiperItemLength - 1;
- }
- break;
- case "next":
- _current++;
- if (_current >= swiperItemLength && circularEnabled.value) {
- _current = 0;
- }
- break;
- }
- onSwiperDotClick(_current);
- }
- const createNavigationSVG = () => createSvgIconVNode(ICON_PATH_BACK, props2.navigationColor, 26);
- let setHideNavigationTimer;
- const _mousemove = (e2) => {
- clearTimeout(setHideNavigationTimer);
- const {
- clientX,
- clientY
- } = e2;
- const {
- left,
- right,
- top,
- bottom,
- width,
- height
- } = rootRef.value.getBoundingClientRect();
- let hide = false;
- if (props2.vertical) {
- hide = !(clientY - top < height / 3 || bottom - clientY < height / 3);
- } else {
- hide = !(clientX - left < width / 3 || right - clientX < width / 3);
- }
- if (hide) {
- return setHideNavigationTimer = setTimeout(() => {
- hideNavigation.value = hide;
- }, 300);
- }
- hideNavigation.value = hide;
- };
- const _mouseleave = () => {
- hideNavigation.value = true;
- };
- function swiperAddMouseEvent() {
- if (rootRef.value) {
- rootRef.value.removeEventListener("mousemove", _mousemove);
- rootRef.value.removeEventListener("mouseleave", _mouseleave);
- if (isNavigationAuto) {
- rootRef.value.addEventListener("mousemove", _mousemove);
- rootRef.value.addEventListener("mouseleave", _mouseleave);
- }
- }
- }
- function createNavigationTsx() {
- const navigationClass = {
- "uni-swiper-navigation-hide": hideNavigation.value,
- "uni-swiper-navigation-vertical": props2.vertical
- };
- if (props2.navigation) {
- return vue.createVNode(vue.Fragment, null, [vue.createVNode("div", vue.mergeProps({
- "class": ["uni-swiper-navigation uni-swiper-navigation-prev", shared.extend({
- "uni-swiper-navigation-disabled": prevDisabled
- }, navigationClass)],
- "onClick": (e2) => navigationClick(e2, "prev", prevDisabled)
- }, navigationAttr), [createNavigationSVG()], 16, ["onClick"]), vue.createVNode("div", vue.mergeProps({
- "class": ["uni-swiper-navigation uni-swiper-navigation-next", shared.extend({
- "uni-swiper-navigation-disabled": nextDisabled
- }, navigationClass)],
- "onClick": (e2) => navigationClick(e2, "next", nextDisabled)
- }, navigationAttr), [createNavigationSVG()], 16, ["onClick"])]);
- }
- return null;
- }
- return createNavigationTsx;
- };
- const props$c = {
- itemId: {
- type: String,
- default: ""
- }
- };
- class UniSwiperItemElement extends UniElement {
- }
- const index$m = /* @__PURE__ */ defineBuiltInComponent({
- name: "SwiperItem",
- props: props$c,
- setup(props2, {
- slots
- }) {
- const rootRef = vue.ref(null);
- return () => {
- return vue.createVNode("uni-swiper-item", {
- "ref": rootRef,
- "style": {
- position: "absolute",
- width: "100%",
- height: "100%"
- }
- }, [slots.default && slots.default()], 512);
- };
- }
- });
- const props$b = {
- name: {
- type: String,
- default: ""
- },
- checked: {
- type: [Boolean, String],
- default: false
- },
- type: {
- type: String,
- default: "switch"
- },
- id: {
- type: String,
- default: ""
- },
- disabled: {
- type: [Boolean, String],
- default: false
- },
- color: {
- type: String,
- default: ""
- }
- };
- class UniSwitchElement extends UniElement {
- }
- const index$l = /* @__PURE__ */ defineBuiltInComponent({
- name: "Switch",
- props: props$b,
- emits: ["change"],
- setup(props2, {
- emit: emit2
- }) {
- const rootRef = vue.ref(null);
- const switchChecked = vue.ref(props2.checked);
- const uniLabel = useSwitchInject(props2, switchChecked);
- const trigger = useCustomEvent(rootRef, emit2);
- vue.watch(() => props2.checked, (val) => {
- switchChecked.value = val;
- });
- const _onClick = ($event) => {
- if (props2.disabled) {
- return;
- }
- switchChecked.value = !switchChecked.value;
- trigger("change", $event, {
- value: switchChecked.value
- });
- };
- if (!!uniLabel) {
- uniLabel.addHandler(_onClick);
- }
- return () => {
- const {
- color,
- type
- } = props2;
- const booleanAttrs = useBooleanAttr(props2, "disabled");
- const switchInputStyle = {};
- if (color && switchChecked.value) {
- switchInputStyle["backgroundColor"] = color;
- switchInputStyle["borderColor"] = color;
- }
- let realCheckValue;
- realCheckValue = switchChecked.value;
- return vue.createVNode("uni-switch", vue.mergeProps({
- "id": props2.id,
- "ref": rootRef
- }, booleanAttrs, {
- "onClick": _onClick
- }), [vue.createVNode("div", {
- "class": "uni-switch-wrapper"
- }, [vue.withDirectives(vue.createVNode("div", {
- "class": ["uni-switch-input", [switchChecked.value ? "uni-switch-input-checked" : ""]],
- "style": switchInputStyle
- }, null, 6), [[vue.vShow, type === "switch"]]), vue.withDirectives(vue.createVNode("div", {
- "class": "uni-checkbox-input"
- }, [realCheckValue ? createSvgIconVNode(ICON_PATH_SUCCESS_NO_CIRCLE, props2.color, 22) : ""], 512), [[vue.vShow, type === "checkbox"]])])], 16, ["id", "onClick"]);
- };
- }
- });
- function useSwitchInject(props2, switchChecked) {
- const uniForm = vue.inject(uniFormKey, false);
- const uniLabel = vue.inject(uniLabelKey, false);
- const formField = {
- submit: () => {
- const data = ["", null];
- if (props2.name) {
- data[0] = props2.name;
- data[1] = switchChecked.value;
- }
- return data;
- },
- reset: () => {
- switchChecked.value = false;
- }
- };
- if (!!uniForm) {
- uniForm.addField(formField);
- }
- return uniLabel;
- }
- const SPACE_UNICODE = {
- ensp: " ",
- emsp: " ",
- nbsp: " "
- };
- function normalizeText(text, { space, decode }) {
- let result = "";
- let isEscape = false;
- for (let char of text) {
- if (space && SPACE_UNICODE[space] && char === " ") {
- char = SPACE_UNICODE[space];
- }
- if (isEscape) {
- if (char === "n") {
- result += uniShared.LINEFEED;
- } else if (char === "\\") {
- result += "\\";
- } else {
- result += "\\" + char;
- }
- isEscape = false;
- } else {
- if (char === "\\") {
- isEscape = true;
- } else {
- result += char;
- }
- }
- }
- if (!decode) {
- return result;
- }
- return result.replace(/ /g, SPACE_UNICODE.nbsp).replace(/ /g, SPACE_UNICODE.ensp).replace(/ /g, SPACE_UNICODE.emsp).replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/"/g, '"').replace(/'/g, "'");
- }
- function parseText(text, options) {
- return normalizeText(text, options).split(uniShared.LINEFEED);
- }
- class UniTextElement extends UniElement {
- }
- const index$k = /* @__PURE__ */ defineBuiltInComponent({
- name: "Text",
- props: {
- selectable: {
- type: [Boolean, String],
- default: false
- },
- space: {
- type: String,
- default: ""
- },
- decode: {
- type: [Boolean, String],
- default: false
- }
- },
- setup(props2, {
- slots
- }) {
- const rootRef = vue.ref(null);
- return () => {
- const children = [];
- if (slots.default) {
- slots.default().forEach((vnode) => {
- if (vnode.shapeFlag & 8 && vnode.type !== vue.Comment) {
- const lines = parseText(vnode.children, {
- space: props2.space,
- decode: props2.decode
- });
- const len = lines.length - 1;
- lines.forEach((line, index2) => {
- if (index2 === 0 && !line)
- ;
- else {
- children.push(vue.createTextVNode(line));
- }
- if (index2 !== len) {
- children.push(vue.createVNode("br"));
- }
- });
- } else {
- if (process.env.NODE_ENV !== "production" && vnode.shapeFlag & 6 && vnode.type.name !== "Text") {
- console.warn("Do not nest other components in the text component, as there may be display differences on different platforms.");
- }
- children.push(vnode);
- }
- });
- }
- return vue.createVNode("uni-text", {
- "ref": rootRef,
- "selectable": props2.selectable ? true : null
- }, [vue.createVNode("span", null, children)], 8, ["selectable"]);
- };
- }
- });
- const props$a = /* @__PURE__ */ shared.extend({}, props$k, {
- placeholderClass: {
- type: String,
- default: "input-placeholder"
- },
- autoHeight: {
- type: [Boolean, String],
- default: false
- },
- confirmType: {
- type: String,
- default: "return",
- validator(val) {
- return ConfirmTypes.concat("return").includes(val);
- }
- }
- });
- let fixMargin = false;
- const ConfirmTypes = ["done", "go", "next", "search", "send"];
- class UniTextareaElement extends UniElement {
- focus(options) {
- var _a;
- (_a = this.querySelector("textarea")) == null ? void 0 : _a.focus(options);
- }
- }
- const index$j = /* @__PURE__ */ defineBuiltInComponent({
- name: "Textarea",
- props: props$a,
- emits: ["confirm", "linechange", ...emit],
- setup(props2, {
- emit: emit2,
- expose
- }) {
- const rootRef = vue.ref(null);
- const wrapperRef = vue.ref(null);
- const {
- fieldRef,
- state,
- scopedAttrsState,
- fixDisabledColor,
- trigger
- } = useField(props2, rootRef, emit2);
- const valueCompute = vue.computed(() => state.value.split(uniShared.LINEFEED));
- const isDone = vue.computed(() => ConfirmTypes.includes(props2.confirmType));
- const heightRef = vue.ref(0);
- const lineRef = vue.ref(null);
- vue.watch(() => heightRef.value, (height) => {
- const el = rootRef.value;
- const lineEl = lineRef.value;
- const wrapper2 = wrapperRef.value;
- let lineHeight = parseFloat(getComputedStyle(el).lineHeight);
- if (isNaN(lineHeight)) {
- lineHeight = lineEl.offsetHeight;
- }
- var lineCount = Math.round(height / lineHeight);
- trigger("linechange", {}, {
- height,
- heightRpx: 750 / window.innerWidth * height,
- lineCount
- });
- if (props2.autoHeight) {
- el.style.height = "auto";
- wrapper2.style.height = height + "px";
- }
- });
- function onResize({
- height
- }) {
- heightRef.value = height;
- }
- function confirm(event) {
- trigger("confirm", event, {
- value: state.value
- });
- }
- function onKeyDownEnter(event) {
- if (event.key !== "Enter") {
- return;
- }
- if (isDone.value) {
- event.preventDefault();
- }
- }
- function onKeyUpEnter(event) {
- if (event.key !== "Enter") {
- return;
- }
- if (isDone.value) {
- confirm(event);
- const textarea = event.target;
- !props2.confirmHold && textarea.blur();
- }
- }
- expose({
- $triggerInput: (detail) => {
- emit2("update:modelValue", detail.value);
- emit2("update:value", detail.value);
- state.value = detail.value;
- }
- });
- return () => {
- let textareaNode = props2.disabled && fixDisabledColor ? vue.createVNode("textarea", {
- "key": "disabled-textarea",
- "ref": fieldRef,
- "value": state.value,
- "tabindex": "-1",
- "readonly": !!props2.disabled,
- "maxlength": state.maxlength,
- "class": {
- "uni-textarea-textarea": true,
- "uni-textarea-textarea-fix-margin": fixMargin
- },
- "style": {
- overflowY: props2.autoHeight ? "hidden" : "auto",
- /* eslint-disable no-restricted-syntax */
- ...props2.cursorColor && {
- caretColor: props2.cursorColor
- }
- },
- "onFocus": (event) => event.target.blur()
- }, null, 46, ["value", "readonly", "maxlength", "onFocus"]) : vue.createVNode("textarea", {
- "key": "textarea",
- "ref": fieldRef,
- "value": state.value,
- "disabled": !!props2.disabled,
- "maxlength": state.maxlength,
- "enterkeyhint": props2.confirmType,
- "inputmode": props2.inputmode,
- "class": {
- "uni-textarea-textarea": true,
- "uni-textarea-textarea-fix-margin": fixMargin
- },
- "style": {
- overflowY: props2.autoHeight ? "hidden" : "auto",
- /* eslint-disable no-restricted-syntax */
- ...props2.cursorColor && {
- caretColor: props2.cursorColor
- }
- },
- "onKeydown": onKeyDownEnter,
- "onKeyup": onKeyUpEnter
- }, null, 46, ["value", "disabled", "maxlength", "enterkeyhint", "inputmode", "onKeydown", "onKeyup"]);
- return vue.createVNode("uni-textarea", {
- "ref": rootRef
- }, [vue.createVNode("div", {
- "ref": wrapperRef,
- "class": "uni-textarea-wrapper"
- }, [vue.withDirectives(vue.createVNode("div", vue.mergeProps(scopedAttrsState.attrs, {
- "style": props2.placeholderStyle,
- "class": ["uni-textarea-placeholder", props2.placeholderClass]
- }), [props2.placeholder], 16), [[vue.vShow, !state.value.length]]), vue.createVNode("div", {
- "ref": lineRef,
- "class": "uni-textarea-line"
- }, [" "], 512), vue.createVNode("div", {
- "class": "uni-textarea-compute"
- }, [valueCompute.value.map((item) => vue.createVNode("div", null, [item.trim() ? item : "."])), vue.createVNode(ResizeSensor, {
- "initial": true,
- "onResize": onResize
- }, null, 8, ["initial", "onResize"])]), props2.confirmType === "search" ? vue.createVNode("form", {
- "action": "",
- "onSubmit": () => false,
- "class": "uni-input-form"
- }, [textareaNode], 40, ["onSubmit"]) : textareaNode], 512)], 512);
- };
- }
- });
- class UniViewElement extends UniElement {
- }
- const index$i = /* @__PURE__ */ defineBuiltInComponent({
- name: "View",
- props: shared.extend({}, hoverProps),
- setup(props2, {
- slots
- }) {
- const rootRef = vue.ref(null);
- const {
- hovering,
- binding
- } = useHover(props2);
- return () => {
- const hoverClass = props2.hoverClass;
- if (hoverClass && hoverClass !== "none") {
- return vue.createVNode("uni-view", vue.mergeProps({
- "class": hovering.value ? hoverClass : "",
- "ref": rootRef
- }, binding), [slots.default && slots.default()], 16);
- }
- return vue.createVNode("uni-view", {
- "ref": rootRef
- }, [slots.default && slots.default()], 512);
- };
- }
- });
- function isHTMlElement(node) {
- return !!(node && node.nodeType === 1);
- }
- function getChildren(root) {
- const children = [];
- if (root) {
- walk(root, children);
- }
- return children;
- }
- function walk(vnode, children) {
- if (vnode.component) {
- children.push(vnode);
- } else if (vnode.shapeFlag & 16) {
- const vnodes = vnode.children;
- for (let i = 0; i < vnodes.length; i++) {
- walk(vnodes[i], children);
- }
- }
- }
- function traverseListView(visibleVNode, callback) {
- const children = getChildren(visibleVNode);
- for (let i = 0; i < children.length; i++) {
- const child = children[i];
- callback(child);
- }
- }
- function traverseStickySection(stickySectionVNode, callback) {
- const children = getChildren(stickySectionVNode.component.subTree);
- for (let i = 0; i < children.length; i++) {
- const child = children[i];
- callback(child);
- }
- }
- class UniListViewElement extends UniElement {
- }
- const index$h = /* @__PURE__ */ defineBuiltInComponent({
- name: "ListView",
- props: {
- direction: {
- type: String,
- default: "vertical",
- validator: (val) => {
- return ["none", "vertical", "horizontal"].includes(val);
- }
- },
- showScrollbar: {
- type: [Boolean, String],
- default: true
- },
- upperThreshold: {
- type: [Number, String],
- default: 50
- },
- lowerThreshold: {
- type: [Number, String],
- default: 50
- },
- scrollTop: {
- type: [Number, String],
- default: 0
- },
- scrollLeft: {
- type: [Number, String],
- default: 0
- },
- // 暂不支持
- // scrollIntoView: {
- // type: String,
- // default: '',
- // },
- scrollWithAnimation: {
- type: [Boolean, String],
- default: false
- }
- },
- emits: [
- "scroll",
- "scrolltoupper",
- "scrolltolower"
- // 有触发时机,但是由于没有原生事件暂不支持
- // 'scrollend',
- ],
- setup(props2, {
- slots,
- expose,
- emit: emit2
- }) {
- const rootRef = vue.ref(null);
- const containerRef = vue.ref(null);
- const visibleRef = vue.ref(null);
- const placehoderSize = vue.ref(0);
- const visibleSize = vue.ref(0);
- const totalSize = vue.ref(0);
- const isVertical = vue.computed(() => {
- return props2.direction !== "horizontal";
- });
- const defaultItemSize = 40;
- const cacheScreenCount = 5;
- let containerSize = 0;
- vue.provide("__listViewIsVertical", isVertical);
- vue.provide("__listViewDefaultItemSize", defaultItemSize);
- const onItemChange = uniShared.debounce(() => {
- vue.nextTick(() => {
- rearrange();
- });
- }, 10, {
- clearTimeout,
- setTimeout
- });
- vue.provide("__listViewRegisterItem", (status) => {
- onItemChange();
- });
- vue.provide("__listViewUnregisterItem", (status) => {
- onItemChange();
- });
- function resetContainerSize() {
- const containerEl = containerRef.value;
- containerSize = isVertical.value ? containerEl.clientHeight : containerEl.clientWidth;
- }
- vue.watch(isVertical, () => {
- resetContainerSize();
- });
- vue.computed(() => {
- const val = Number(props2.upperThreshold);
- return isNaN(val) ? 50 : val;
- });
- vue.computed(() => {
- const val = Number(props2.lowerThreshold);
- return isNaN(val) ? 50 : val;
- });
- const scrollTopNumber = vue.computed(() => {
- return Number(props2.scrollTop) || 0;
- });
- const scrollLeftNumber = vue.computed(() => {
- return Number(props2.scrollLeft) || 0;
- });
- vue.watch(scrollTopNumber, (val) => {
- if (containerRef.value) {
- containerRef.value.scrollTop = val;
- }
- });
- vue.watch(scrollLeftNumber, (val) => {
- if (containerRef.value) {
- containerRef.value.scrollLeft = val;
- }
- });
- function refresh() {
- traverseAllItems((child) => {
- const exposed = child.component.exposed;
- if (exposed == null ? void 0 : exposed.__listViewChildStatus.seen.value) {
- exposed.__listViewChildStatus.seen.value = false;
- }
- });
- vue.nextTick(() => {
- vue.nextTick(() => {
- rearrange();
- });
- });
- }
- expose({
- refresh
- });
- function onResize() {
- resetContainerSize();
- refresh();
- }
- function traverseAllItems(callback) {
- traverseListView(visibleVNode, (child) => {
- var _a;
- const childType = (_a = child.component) == null ? void 0 : _a.type.name;
- if (childType === "StickySection") {
- traverseStickySection(child, function() {
- var _a2;
- const childType2 = (_a2 = child.component) == null ? void 0 : _a2.type.name;
- if (childType2 === "ListItem") {
- callback(child);
- }
- });
- } else if (childType === "ListItem") {
- callback(child);
- }
- });
- }
- function rearrange() {
- if (!visibleVNode) {
- return;
- }
- const containerEl = containerRef.value;
- if (!containerEl) {
- return;
- }
- const offset = isVertical.value ? containerEl.scrollTop : containerEl.scrollLeft;
- const offsetMin = Math.max(offset - containerSize * cacheScreenCount, 0);
- const offsetMax = Math.max(offset + containerSize * (cacheScreenCount + 1), offsetMin + 1);
- let tempTotalSize = 0;
- let tempVisibleSize = 0;
- let tempPlaceholderSize = 0;
- let start = false, end = false;
- function callback(child) {
- var _a, _b, _c;
- const childType = (_a = child.component) == null ? void 0 : _a.type.name;
- const status = (_c = (_b = child.component) == null ? void 0 : _b.exposed) == null ? void 0 : _c.__listViewChildStatus;
- if (childType === "StickySection") {
- const {
- headSize,
- tailSize
- } = status;
- tempTotalSize += headSize.value;
- traverseStickySection(child, callback);
- tempTotalSize += tailSize.value;
- } else if (childType === "ListItem") {
- const {
- cachedSize
- } = status;
- const itemSize = cachedSize;
- tempTotalSize += itemSize;
- if (!start && tempTotalSize > offsetMin) {
- start = true;
- }
- if (!start) {
- tempPlaceholderSize += itemSize;
- }
- if (start && !end) {
- tempVisibleSize += itemSize;
- status.visible.value = true;
- } else {
- status.visible.value = false;
- }
- if (!end && tempTotalSize >= offsetMax) {
- end = true;
- }
- } else if (childType === "StickyHeader") {
- const {
- cachedSize
- } = status;
- tempTotalSize += cachedSize;
- tempVisibleSize += cachedSize;
- }
- }
- traverseListView(visibleVNode, callback);
- totalSize.value = tempTotalSize;
- visibleSize.value = tempVisibleSize;
- placehoderSize.value = tempPlaceholderSize;
- }
- const containerStyle = vue.computed(() => {
- return `${props2.direction === "none" ? "overflow: hidden;" : isVertical.value ? "overflow-y: auto;" : "overflow-x: auto;"}scroll-behavior: ${props2.scrollWithAnimation ? "smooth" : "auto"};`;
- });
- const contentStyle = vue.computed(() => {
- return `position: relative; ${isVertical.value ? "height" : "width"}: ${totalSize.value}px;`;
- });
- const visibleStyle = vue.computed(() => {
- return `position: absolute; ${isVertical.value ? "width" : "height"}: 100%; ${isVertical.value ? "top" : "left"}: ${placehoderSize.value}px;`;
- });
- let visibleVNode = null;
- return () => {
- const defaultSlot = slots.default && slots.default();
- visibleVNode = vue.createVNode("div", {
- "ref": visibleRef,
- "class": "uni-list-view-visible",
- "style": visibleStyle.value
- }, [defaultSlot], 4);
- return vue.createVNode("uni-list-view", {
- "ref": rootRef,
- "class": "uni-list-view"
- }, [vue.createVNode("div", {
- "ref": containerRef,
- "class": `uni-list-view-container ${props2.showScrollbar === false ? "uni-list-view-scrollbar-hidden" : ""}`,
- "style": containerStyle.value
- }, [vue.createVNode("div", {
- "class": "uni-list-view-content",
- "style": contentStyle.value
- }, [visibleVNode], 4)], 4), vue.createVNode(ResizeSensor, {
- "onResize": onResize
- }, null, 8, ["onResize"])], 512);
- };
- }
- });
- function getSize(isVertical, el) {
- var style = window.getComputedStyle(el);
- if (isVertical) {
- return parseFloat(style.marginTop) + el.getBoundingClientRect().height + parseFloat(style.marginBottom);
- } else {
- return parseFloat(style.marginLeft) + el.getBoundingClientRect().width + parseFloat(style.marginRight);
- }
- }
- class UniListItemElement extends UniElement {
- }
- const index$g = /* @__PURE__ */ defineBuiltInComponent({
- name: "ListItem",
- props: {},
- setup(props2, {
- slots,
- expose
- }) {
- const rootRef = vue.ref(null);
- const isVertical = vue.inject("__listViewIsVertical");
- const visible = vue.ref(false);
- const seen = vue.ref(false);
- const status = {
- type: "ListItem",
- visible,
- cachedSize: 0,
- seen
- };
- expose({
- __listViewChildStatus: status
- });
- vue.inject("__listViewRegisterItem");
- vue.inject("__listViewUnregisterItem");
- const realVisible = vue.computed(() => {
- return visible.value || !status.seen.value;
- });
- return () => {
- vue.nextTick(() => {
- const rootNode = rootRef.value;
- if (realVisible.value && isHTMlElement(rootNode)) {
- status.cachedSize = getSize(isVertical.value, rootNode);
- seen.value = true;
- }
- });
- if (!realVisible.value) {
- return null;
- }
- return vue.createVNode("uni-list-item", {
- "ref": rootRef
- }, [slots.default && slots.default()], 512);
- };
- }
- });
- class UniStickySectionElement extends UniElement {
- }
- const index$f = /* @__PURE__ */ defineBuiltInComponent({
- name: "StickySection",
- props: {
- padding: {
- type: Array,
- default: [0, 0, 0, 0]
- }
- },
- setup(props2, {
- slots,
- expose
- }) {
- const rootRef = vue.ref(null);
- const isVertical = vue.inject("__listViewIsVertical");
- const style = vue.computed(() => {
- return {
- paddingTop: props2.padding[0] + "px",
- paddingRight: props2.padding[1] + "px",
- paddingBottom: props2.padding[2] + "px",
- paddingLeft: props2.padding[3] + "px"
- };
- });
- const headSize = vue.computed(() => {
- return isVertical ? props2.padding[0] : props2.padding[3];
- });
- const tailSize = vue.computed(() => {
- return isVertical ? props2.padding[2] : props2.padding[1];
- });
- const status = {
- type: "StickySection",
- headSize,
- tailSize
- };
- expose({
- __listViewChildStatus: status
- });
- return () => {
- var _a;
- return vue.createVNode("uni-sticky-section", {
- "ref": rootRef,
- "style": style.value
- }, [(_a = slots.default) == null ? void 0 : _a.call(slots)], 4);
- };
- }
- });
- class UniStickyHeaderElement extends UniElement {
- }
- const index$e = /* @__PURE__ */ defineBuiltInComponent({
- name: "StickyHeader",
- props: {
- padding: {
- type: Array,
- default: [0, 0, 0, 0]
- }
- },
- setup(props2, {
- slots,
- expose
- }) {
- const rootRef = vue.ref(null);
- const isVertical = vue.inject("__listViewIsVertical");
- const style = vue.computed(() => {
- return {
- paddingTop: props2.padding[0] + "px",
- paddingRight: props2.padding[1] + "px",
- paddingBottom: props2.padding[2] + "px",
- paddingLeft: props2.padding[3] + "px",
- top: 0 - props2.padding[0] + "px"
- };
- });
- const status = {
- type: "StickyHeader",
- cachedSize: 0
- };
- expose({
- __listViewChildStatus: status
- });
- return () => {
- var _a;
- vue.nextTick(() => {
- const rootEl = rootRef.value;
- const rect = rootEl.getBoundingClientRect();
- status.cachedSize = isVertical ? rect.height : rect.width;
- });
- return vue.createVNode("uni-sticky-header", {
- "ref": rootRef,
- "style": style.value
- }, [(_a = slots.default) == null ? void 0 : _a.call(slots)], 4);
- };
- }
- });
- function useSubscribe(callback, name, multiple, pageId) {
- const instance = vue.getCurrentInstance();
- instance.proxy;
- }
- let index$d = 0;
- function useContextInfo(_id) {
- useCurrentPageId();
- const instance = vue.getCurrentInstance();
- const vm = instance.proxy;
- const type = vm.$options.name.toLowerCase();
- const id = _id || vm.id || `context${index$d++}`;
- return `${type}.${id}`;
- }
- function injectLifecycleHook(name, hook, publicThis, instance) {
- if (shared.isFunction(hook)) {
- vue.injectHook(name, hook.bind(publicThis), instance);
- }
- }
- function initHooks(options, instance, publicThis) {
- var _a;
- const mpType = options.mpType || publicThis.$mpType;
- if (!mpType || mpType === "component") {
- return;
- }
- Object.keys(options).forEach((name) => {
- if (uniShared.isUniLifecycleHook(name, options[name], false)) {
- const hooks = options[name];
- if (shared.isArray(hooks)) {
- hooks.forEach(
- (hook) => injectLifecycleHook(name, hook, publicThis, instance)
- );
- } else {
- injectLifecycleHook(name, hooks, publicThis, instance);
- }
- }
- });
- if (mpType === "page") {
- instance.__isVisible = true;
- try {
- invokeHook(publicThis, uniShared.ON_LOAD, instance.attrs.__pageQuery);
- delete instance.attrs.__pageQuery;
- if (((_a = publicThis.$page) == null ? void 0 : _a.openType) !== "preloadPage") {
- invokeHook(publicThis, uniShared.ON_SHOW);
- }
- } catch (e2) {
- console.error(e2.message + uniShared.LINEFEED + e2.stack);
- }
- }
- }
- function applyOptions(options, instance, publicThis) {
- initHooks(options, instance, publicThis);
- }
- function set(target, key, val) {
- return target[key] = val;
- }
- function $callMethod(method, ...args) {
- const fn = this[method];
- if (fn) {
- return fn(...args);
- }
- console.error(`method ${method} not found`);
- return null;
- }
- function createErrorHandler(app) {
- return function errorHandler(err, instance, _info) {
- if (!instance) {
- throw err;
- }
- const appInstance = app._instance;
- if (!appInstance || !appInstance.proxy) {
- throw err;
- }
- {
- invokeHook(appInstance.proxy, uniShared.ON_ERROR, err);
- }
- };
- }
- function mergeAsArray(to, from) {
- return to ? [...new Set([].concat(to, from))] : from;
- }
- function initOptionMergeStrategies(optionMergeStrategies) {
- uniShared.UniLifecycleHooks.forEach((name) => {
- optionMergeStrategies[name] = mergeAsArray;
- });
- }
- let realAtob;
- const b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
- const b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
- if (typeof atob !== "function") {
- realAtob = function(str) {
- str = String(str).replace(/[\t\n\f\r ]+/g, "");
- if (!b64re.test(str)) {
- throw new Error(
- "Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded."
- );
- }
- str += "==".slice(2 - (str.length & 3));
- var bitmap;
- var result = "";
- var r1;
- var r2;
- var i = 0;
- for (; i < str.length; ) {
- bitmap = b64.indexOf(str.charAt(i++)) << 18 | b64.indexOf(str.charAt(i++)) << 12 | (r1 = b64.indexOf(str.charAt(i++))) << 6 | (r2 = b64.indexOf(str.charAt(i++)));
- result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) : r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) : String.fromCharCode(
- bitmap >> 16 & 255,
- bitmap >> 8 & 255,
- bitmap & 255
- );
- }
- return result;
- };
- } else {
- realAtob = atob;
- }
- function b64DecodeUnicode(str) {
- return decodeURIComponent(
- realAtob(str).split("").map(function(c) {
- return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
- }).join("")
- );
- }
- function getCurrentUserInfo() {
- const token = uni.getStorageSync("uni_id_token") || "";
- const tokenArr = token.split(".");
- if (!token || tokenArr.length !== 3) {
- return {
- uid: null,
- role: [],
- permission: [],
- tokenExpired: 0
- };
- }
- let userInfo;
- try {
- userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]));
- } catch (error) {
- throw new Error("获取当前用户信息出错,详细错误信息为:" + error.message);
- }
- userInfo.tokenExpired = userInfo.exp * 1e3;
- delete userInfo.exp;
- delete userInfo.iat;
- return userInfo;
- }
- function uniIdMixin(globalProperties) {
- globalProperties.uniIDHasRole = function(roleId) {
- const { role } = getCurrentUserInfo();
- return role.indexOf(roleId) > -1;
- };
- globalProperties.uniIDHasPermission = function(permissionId) {
- const { permission } = getCurrentUserInfo();
- return this.uniIDHasRole("admin") || permission.indexOf(permissionId) > -1;
- };
- globalProperties.uniIDTokenValid = function() {
- const { tokenExpired } = getCurrentUserInfo();
- return tokenExpired > Date.now();
- };
- }
- function initApp$1(app) {
- const appConfig = app._context.config;
- appConfig.errorHandler = uniShared.invokeCreateErrorHandler(app, createErrorHandler);
- initOptionMergeStrategies(appConfig.optionMergeStrategies);
- const globalProperties = appConfig.globalProperties;
- {
- if (__UNI_FEATURE_UNI_CLOUD__) {
- uniIdMixin(globalProperties);
- }
- }
- {
- globalProperties.$set = set;
- globalProperties.$applyOptions = applyOptions;
- globalProperties.$callMethod = $callMethod;
- }
- {
- uniShared.invokeCreateVueAppHook(app);
- }
- }
- const pageMetaKey = PolySymbol(process.env.NODE_ENV !== "production" ? "UniPageMeta" : "upm");
- function usePageMeta() {
- return vue.inject(pageMetaKey);
- }
- function providePageMeta(id) {
- const pageMeta = initPageMeta(id);
- vue.provide(pageMetaKey, pageMeta);
- return pageMeta;
- }
- function usePageRoute() {
- if (__UNI_FEATURE_PAGES__) {
- return vueRouter.useRoute();
- }
- const url = location.href;
- const searchPos = url.indexOf("?");
- const hashPos = url.indexOf("#", searchPos > -1 ? searchPos : 0);
- let query = {};
- if (searchPos > -1) {
- query = uniShared.parseQuery(
- url.slice(searchPos + 1, hashPos > -1 ? hashPos : url.length)
- );
- }
- const { meta } = __uniRoutes[0];
- const path = uniShared.addLeadingSlash(meta.route);
- return {
- meta,
- query,
- path,
- matched: [{ path }]
- };
- }
- function initPageMeta(id) {
- if (__UNI_FEATURE_PAGES__) {
- return vue.reactive(
- normalizePageMeta(
- JSON.parse(
- JSON.stringify(
- initRouteMeta(
- vueRouter.useRoute().meta,
- id
- )
- )
- )
- )
- );
- }
- return vue.reactive(
- normalizePageMeta(
- JSON.parse(JSON.stringify(initRouteMeta(__uniRoutes[0].meta, id)))
- )
- );
- }
- function normalizePageMeta(pageMeta) {
- if (__UNI_FEATURE_PULL_DOWN_REFRESH__) {
- const { enablePullDownRefresh, navigationBar } = pageMeta;
- if (enablePullDownRefresh) {
- const pullToRefresh = normalizePullToRefreshRpx(
- shared.extend(
- {
- support: true,
- color: "#2BD009",
- style: "circle",
- height: 70,
- range: 150,
- offset: 0
- },
- pageMeta.pullToRefresh
- )
- );
- const { type, style } = navigationBar;
- if (style !== "custom" && type !== "transparent") {
- pullToRefresh.offset += uniShared.NAVBAR_HEIGHT + 0;
- }
- pageMeta.pullToRefresh = pullToRefresh;
- }
- }
- if (__UNI_FEATURE_NAVIGATIONBAR__) {
- const { navigationBar } = pageMeta;
- const { titleSize, titleColor, backgroundColor } = navigationBar;
- navigationBar.titleText = navigationBar.titleText || "";
- navigationBar.type = navigationBar.type || "default";
- navigationBar.titleSize = titleSize || "16px";
- navigationBar.titleColor = titleColor || "#000000";
- navigationBar.backgroundColor = backgroundColor || "#F8F8F8";
- __UNI_FEATURE_I18N_LOCALE__ && initNavigationBarI18n(navigationBar);
- }
- return pageMeta;
- }
- function getStateId() {
- {
- return 1;
- }
- }
- let tabBar;
- function useTabBar() {
- if (!tabBar) {
- tabBar = __uniConfig.tabBar && vue.reactive(initTabBarI18n(__uniConfig.tabBar));
- }
- return tabBar;
- }
- const envMethod = /* @__PURE__ */ (() => "env")();
- function normalizeWindowBottom(windowBottom) {
- return envMethod ? `calc(${windowBottom}px + ${envMethod}(safe-area-inset-bottom))` : `${windowBottom}px`;
- }
- const SEP = "$$";
- const currentPagesMap = /* @__PURE__ */ new Map();
- function pruneCurrentPages() {
- currentPagesMap.forEach((page, id2) => {
- if (page.$.isUnmounted) {
- currentPagesMap.delete(id2);
- }
- });
- }
- function getCurrentPages$1() {
- const curPages = [];
- const pages = currentPagesMap.values();
- for (const page of pages) {
- if (page.$.__isTabBar) {
- if (page.$.__isActive) {
- curPages.push(page);
- }
- } else {
- curPages.push(page);
- }
- }
- return curPages;
- }
- function initPublicPage(route) {
- const meta = usePageMeta();
- if (!__UNI_FEATURE_PAGES__) {
- return initPageInternalInstance("navigateTo", __uniRoutes[0].path, {}, meta);
- }
- let fullPath = route.fullPath;
- if (route.meta.isEntry && fullPath.indexOf(route.meta.route) === -1) {
- fullPath = "/" + route.meta.route + fullPath.replace("/", "");
- }
- return initPageInternalInstance("navigateTo", fullPath, {}, meta);
- }
- function initPage(vm) {
- const route = vm.$route;
- const page = initPublicPage(route);
- initPageVm(vm, page);
- currentPagesMap.set(normalizeRouteKey(page.path, page.id), vm);
- }
- function normalizeRouteKey(path, id2) {
- return path + SEP + id2;
- }
- function useKeepAliveRoute() {
- const route = vueRouter.useRoute();
- const routeKey = vue.computed(
- () => normalizeRouteKey("/" + route.meta.route, getStateId())
- );
- const isTabBar = vue.computed(() => route.meta.isTabBar);
- return {
- routeKey,
- isTabBar,
- routeCache
- };
- }
- const pageCacheMap = /* @__PURE__ */ new Map();
- const routeCache = {
- get(key) {
- return pageCacheMap.get(key);
- },
- set(key, value) {
- pruneRouteCache(key);
- pageCacheMap.set(key, value);
- },
- delete(key) {
- const vnode = pageCacheMap.get(key);
- if (!vnode) {
- return;
- }
- pageCacheMap.delete(key);
- },
- forEach(fn) {
- pageCacheMap.forEach(fn);
- }
- };
- function isTabBarVNode(vnode) {
- return vnode.props.type === "tabBar";
- }
- function pruneRouteCache(key) {
- const pageId = parseInt(key.split(SEP)[1]);
- if (!pageId) {
- return;
- }
- routeCache.forEach((vnode, key2) => {
- const cPageId = parseInt(key2.split(SEP)[1]);
- if (cPageId && cPageId > pageId) {
- if (__UNI_FEATURE_TABBAR__ && isTabBarVNode(vnode)) {
- return;
- }
- routeCache.delete(key2);
- routeCache.pruneCacheEntry(vnode);
- vue.nextTick(() => pruneCurrentPages());
- }
- });
- }
- function usePopupStyle(props2) {
- const popupWidth = vue.ref(0);
- const popupHeight = vue.ref(0);
- const isDesktop = vue.computed(
- () => popupWidth.value >= 500 && popupHeight.value >= 500
- );
- const popupStyle = vue.computed(() => {
- const style = {
- content: {
- transform: "",
- left: "",
- top: "",
- bottom: ""
- },
- triangle: {
- left: "",
- top: "",
- bottom: "",
- "border-width": "",
- "border-color": ""
- }
- };
- const contentStyle = style.content;
- const triangleStyle = style.triangle;
- const popover = props2.popover;
- function getNumber(value) {
- return Number(value) || 0;
- }
- if (isDesktop.value && popover) {
- shared.extend(triangleStyle, {
- position: "absolute",
- width: "0",
- height: "0",
- "margin-left": "-6px",
- "border-style": "solid"
- });
- const popoverLeft = getNumber(popover.left);
- const popoverWidth = getNumber(popover.width);
- const popoverTop = getNumber(popover.top);
- const popoverHeight = getNumber(popover.height);
- const center = popoverLeft + popoverWidth / 2;
- contentStyle.transform = "none !important";
- const contentLeft = Math.max(0, center - 300 / 2);
- contentStyle.left = `${contentLeft}px`;
- let triangleLeft = Math.max(12, center - contentLeft);
- triangleLeft = Math.min(300 - 12, triangleLeft);
- triangleStyle.left = `${triangleLeft}px`;
- const vcl = popupHeight.value / 2;
- if (popoverTop + popoverHeight - vcl > vcl - popoverTop) {
- contentStyle.top = "auto";
- contentStyle.bottom = `${popupHeight.value - popoverTop + 6}px`;
- triangleStyle.bottom = "-6px";
- triangleStyle["border-width"] = "6px 6px 0 6px";
- triangleStyle["border-color"] = "#fcfcfd transparent transparent transparent";
- } else {
- contentStyle.top = `${popoverTop + popoverHeight + 6}px`;
- triangleStyle.top = "-6px";
- triangleStyle["border-width"] = "0 6px 6px 6px";
- triangleStyle["border-color"] = "transparent transparent #fcfcfd transparent";
- }
- }
- return style;
- });
- return {
- isDesktop,
- popupStyle
- };
- }
- function useKeyboard() {
- const key = vue.ref("");
- const disable = vue.ref(false);
- return {
- key,
- disable
- };
- }
- function getTheme() {
- if (__uniConfig.darkmode !== true)
- return shared.isString(__uniConfig.darkmode) ? __uniConfig.darkmode : "light";
- try {
- return window.matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark";
- } catch (error) {
- return "light";
- }
- }
- function onThemeChange(callback) {
- if (__uniConfig.darkmode) {
- UniServiceJSBridge.on(uniShared.ON_THEME_CHANGE, callback);
- }
- }
- function parseTheme(pageStyle) {
- let parsedStyle = {};
- if (__uniConfig.darkmode) {
- parsedStyle = uniShared.normalizeStyles(
- pageStyle,
- __uniConfig.themeConfig,
- getTheme()
- );
- }
- return __uniConfig.darkmode ? parsedStyle : pageStyle;
- }
- function useTheme(pageStyle, onThemeChangeCallback) {
- const isReactived = vue.isReactive(pageStyle);
- const reactivePageStyle = isReactived ? vue.reactive(parseTheme(pageStyle)) : parseTheme(pageStyle);
- if (__uniConfig.darkmode && isReactived) {
- vue.watch(pageStyle, (value) => {
- const _pageStyle = parseTheme(value);
- for (const key in _pageStyle) {
- reactivePageStyle[key] = _pageStyle[key];
- }
- });
- }
- onThemeChangeCallback && onThemeChange(onThemeChangeCallback);
- return reactivePageStyle;
- }
- let showActionSheetState;
- const hideActionSheet = () => {
- if (showActionSheetState) {
- showActionSheetState.visible = false;
- }
- };
- let showModalState;
- const hideModal = () => {
- if (showModalState) {
- showModalState.visible = false;
- }
- };
- function initRouter(app) {
- const router = vueRouter.createRouter(createRouterOptions());
- router.beforeEach((to, from) => {
- hideActionSheet();
- hideModal();
- uni.hideToast();
- uni.hideLoading();
- });
- app.router = router;
- app.use(router);
- }
- const scrollBehavior = (_to, _from, savedPosition) => {
- if (savedPosition) {
- return savedPosition;
- }
- };
- function createRouterOptions() {
- return {
- history: initHistory(),
- strict: !!__uniConfig.router.strict,
- routes: __uniRoutes,
- scrollBehavior
- };
- }
- function initHistory() {
- let { routerBase } = __uniConfig.router;
- if (routerBase === "/") {
- routerBase = "";
- }
- {
- return vueRouter.createMemoryHistory(routerBase);
- }
- }
- const index$c = {
- install(app) {
- initApp$1(app);
- if (!app.config.warnHandler) {
- app.config.warnHandler = warnHandler;
- }
- if (__UNI_FEATURE_PAGES__) {
- initRouter(app);
- }
- }
- };
- function warnHandler(msg, instance, trace) {
- if (instance) {
- const name = instance.$.type.name;
- if ("PageMetaHead" === name) {
- return;
- }
- const parent = instance.$.parent;
- if (parent && parent.type.name === "PageMeta") {
- return;
- }
- }
- const warnArgs = [`[Vue warn]: ${msg}`];
- if (trace.length) {
- warnArgs.push(`
- `, trace);
- }
- console.warn(...warnArgs);
- }
- const clazz = { class: "uni-async-loading" };
- const loadingVNode = /* @__PURE__ */ vue.createVNode(
- "i",
- { class: "uni-loading" },
- null,
- -1
- /* HOISTED */
- );
- const AsyncLoadingComponent = /* @__PURE__ */ defineSystemComponent({
- name: "AsyncLoading",
- render() {
- return vue.openBlock(), vue.createBlock("div", clazz, [loadingVNode]);
- }
- });
- function reload() {
- window.location.reload();
- }
- const AsyncErrorComponent = /* @__PURE__ */ defineSystemComponent({
- name: "AsyncError",
- setup() {
- initI18nAsyncMsgsOnce();
- const {
- t: t2
- } = useI18n();
- return () => vue.createVNode("div", {
- "class": "uni-async-error",
- "onClick": reload
- }, [t2("uni.async.error")], 8, ["onClick"]);
- }
- });
- let appVm;
- function getApp$1() {
- return appVm;
- }
- function initApp(vm) {
- appVm = vm;
- Object.defineProperty(appVm.$.ctx, "$children", {
- get() {
- return getCurrentPages().map((page) => page.$vm);
- }
- });
- const app = appVm.$.appContext.app;
- if (!app.component(AsyncLoadingComponent.name)) {
- app.component(AsyncLoadingComponent.name, AsyncLoadingComponent);
- }
- if (!app.component(AsyncErrorComponent.name)) {
- app.component(AsyncErrorComponent.name, AsyncErrorComponent);
- }
- initAppVm(appVm);
- defineGlobalData(appVm);
- }
- function wrapperComponentSetup(comp, { clone, init, setup, before }) {
- if (clone) {
- comp = shared.extend({}, comp);
- }
- before && before(comp);
- const oldSetup = comp.setup;
- comp.setup = (props2, ctx) => {
- const instance = vue.getCurrentInstance();
- init(instance.proxy);
- const query = setup(instance);
- if (oldSetup) {
- return oldSetup(query || props2, ctx);
- }
- };
- return comp;
- }
- function setupComponent(comp, options) {
- if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) {
- return wrapperComponentSetup(comp.default, options);
- }
- return wrapperComponentSetup(comp, options);
- }
- function setupWindow(comp, id) {
- return setupComponent(comp, {
- init: (vm) => {
- vm.$page = {
- id
- };
- },
- setup(instance) {
- instance.$pageInstance = instance;
- }
- });
- }
- function setupPage(comp) {
- if (process.env.NODE_ENV !== "production") {
- comp.__mpType = "page";
- }
- return setupComponent(comp, {
- clone: true,
- // 页面组件可能会被其他地方手动引用,比如 windows 等,需要 clone 一份新的作为页面组件
- init: initPage,
- setup(instance) {
- instance.$pageInstance = instance;
- const route = usePageRoute();
- const query = uniShared.decodedQuery(route.query);
- instance.attrs.__pageQuery = query;
- instance.proxy.$page.options = query;
- instance.proxy.options = query;
- {
- return query;
- }
- }
- });
- }
- function setupApp(comp) {
- if (process.env.NODE_ENV !== "production") {
- comp.__mpType = "app";
- }
- return setupComponent(comp, {
- init: initApp,
- setup(instance) {
- const route = usePageRoute();
- {
- return route.query;
- }
- },
- before(comp2) {
- comp2.mpType = "app";
- const { setup } = comp2;
- const render = () => {
- return vue.openBlock(), vue.createBlock(LayoutComponent);
- };
- comp2.setup = (props2, ctx) => {
- const res = setup && setup(props2, ctx);
- return shared.isFunction(res) ? render : res;
- };
- comp2.render = render;
- }
- });
- }
- function formatTime(val) {
- val = val > 0 && val < Infinity ? val : 0;
- const h = Math.floor(val / 3600);
- const m = Math.floor(val % 3600 / 60);
- const s = Math.floor(val % 3600 % 60);
- const hStr = (h < 10 ? "0" : "") + h;
- const mStr = (m < 10 ? "0" : "") + m;
- const sStr = (s < 10 ? "0" : "") + s;
- let str = mStr + ":" + sStr;
- if (hStr !== "00") {
- str = hStr + ":" + str;
- }
- return str;
- }
- function useGesture(props2, videoRef, fullscreenState) {
- const state = vue.reactive({
- gestureType: "none",
- volumeOld: 0,
- volumeNew: 0,
- currentTimeOld: 0,
- currentTimeNew: 0
- });
- const touchStartOrigin = {
- x: 0,
- y: 0
- };
- function onTouchstart(event) {
- const toucher = event.targetTouches[0];
- touchStartOrigin.x = toucher.pageX;
- touchStartOrigin.y = toucher.pageY;
- state.gestureType = "none";
- state.volumeOld = 0;
- state.currentTimeOld = state.currentTimeNew = 0;
- }
- function onTouchmove(event) {
- function stop() {
- event.stopPropagation();
- event.preventDefault();
- }
- if (fullscreenState.fullscreen) {
- stop();
- }
- const gestureType = state.gestureType;
- if (gestureType === "stop") {
- return;
- }
- const toucher = event.targetTouches[0];
- const pageX = toucher.pageX;
- const pageY = toucher.pageY;
- const origin = touchStartOrigin;
- const video = videoRef.value;
- if (gestureType === "progress") {
- changeProgress(pageX - origin.x);
- } else if (gestureType === "volume") {
- changeVolume(pageY - origin.y);
- }
- if (gestureType !== "none") {
- return;
- }
- if (Math.abs(pageX - origin.x) > Math.abs(pageY - origin.y)) {
- if (!props2.enableProgressGesture) {
- state.gestureType = "stop";
- return;
- }
- state.gestureType = "progress";
- state.currentTimeOld = state.currentTimeNew = video.currentTime;
- if (!fullscreenState.fullscreen) {
- stop();
- }
- } else {
- if (!props2.pageGesture) {
- state.gestureType = "stop";
- return;
- }
- state.gestureType = "volume";
- state.volumeOld = video.volume;
- if (!fullscreenState.fullscreen) {
- stop();
- }
- }
- }
- function onTouchend(event) {
- const video = videoRef.value;
- if (state.gestureType !== "none" && state.gestureType !== "stop") {
- event.stopPropagation();
- event.preventDefault();
- }
- if (state.gestureType === "progress" && state.currentTimeOld !== state.currentTimeNew) {
- video.currentTime = state.currentTimeNew;
- }
- state.gestureType = "none";
- }
- function changeProgress(x) {
- const video = videoRef.value;
- const duration = video.duration;
- let currentTimeNew = x / 600 * duration + state.currentTimeOld;
- if (currentTimeNew < 0) {
- currentTimeNew = 0;
- } else if (currentTimeNew > duration) {
- currentTimeNew = duration;
- }
- state.currentTimeNew = currentTimeNew;
- }
- function changeVolume(y) {
- const video = videoRef.value;
- const valueOld = state.volumeOld;
- let value;
- if (typeof valueOld === "number") {
- value = valueOld - y / 200;
- if (value < 0) {
- value = 0;
- } else if (value > 1) {
- value = 1;
- }
- video.volume = value;
- state.volumeNew = value;
- }
- }
- return {
- state,
- onTouchstart,
- onTouchmove,
- onTouchend
- };
- }
- function useFullscreen(trigger, containerRef, videoRef, userActionState, rootRef) {
- const state = vue.reactive({
- fullscreen: false
- });
- const isSafari = /^Apple/.test(navigator.vendor);
- function onFullscreenChange($event, webkit) {
- if (webkit && document.fullscreenEnabled) {
- return;
- }
- emitFullscreenChange(!!(document.fullscreenElement || document.webkitFullscreenElement));
- }
- function emitFullscreenChange(val) {
- state.fullscreen = val;
- trigger("fullscreenchange", {}, {
- fullScreen: val,
- direction: "vertical"
- });
- }
- function toggleFullscreen(val) {
- const root = rootRef.value;
- const container = containerRef.value;
- const video = videoRef.value;
- let mockFullScreen;
- if (val) {
- if ((document.fullscreenEnabled || document.webkitFullscreenEnabled) && (!isSafari || userActionState.userAction)) {
- container[document.fullscreenEnabled ? "requestFullscreen" : "webkitRequestFullscreen"]();
- } else if (video.webkitEnterFullScreen) {
- video.webkitEnterFullScreen();
- } else {
- mockFullScreen = true;
- container.remove();
- container.classList.add("uni-video-type-fullscreen");
- document.body.appendChild(container);
- }
- } else {
- if (document.fullscreenEnabled || document.webkitFullscreenEnabled) {
- if (document.fullscreenElement) {
- document.exitFullscreen();
- } else if (document.webkitFullscreenElement) {
- document.webkitExitFullscreen();
- }
- } else if (video.webkitExitFullScreen) {
- video.webkitExitFullScreen();
- } else {
- mockFullScreen = true;
- container.remove();
- container.classList.remove("uni-video-type-fullscreen");
- root.appendChild(container);
- }
- }
- if (mockFullScreen) {
- emitFullscreenChange(val);
- }
- }
- function requestFullScreen() {
- toggleFullscreen(true);
- }
- function exitFullScreen() {
- toggleFullscreen(false);
- }
- return {
- state,
- onFullscreenChange,
- emitFullscreenChange,
- toggleFullscreen,
- requestFullScreen,
- exitFullScreen
- };
- }
- function useVideo(props2, attrs, trigger) {
- const videoRef = vue.ref(null);
- const src = vue.computed(() => getRealPath(props2.src));
- const muted = vue.computed(() => props2.muted === "true" || props2.muted === true);
- const state = vue.reactive({
- start: false,
- src,
- playing: false,
- currentTime: 0,
- duration: 0,
- progress: 0,
- buffered: 0,
- muted
- });
- vue.watch(() => src.value, () => {
- state.playing = false;
- state.currentTime = 0;
- });
- vue.watch(() => state.buffered, (buffered) => {
- trigger("progress", {}, {
- buffered
- });
- });
- vue.watch(() => muted.value, (muted2) => {
- const video = videoRef.value;
- video.muted = muted2;
- });
- function onDurationChange({
- target
- }) {
- state.duration = target.duration;
- }
- function onLoadedMetadata($event) {
- const initialTime = Number(props2.initialTime) || 0;
- const video = $event.target;
- if (initialTime > 0) {
- video.currentTime = initialTime;
- }
- trigger("loadedmetadata", $event, {
- width: video.videoWidth,
- height: video.videoHeight,
- duration: video.duration
- });
- onProgress($event);
- }
- function onProgress($event) {
- const video = $event.target;
- const buffered = video.buffered;
- if (buffered.length) {
- state.buffered = buffered.end(buffered.length - 1) / video.duration * 100;
- }
- }
- function onWaiting($event) {
- trigger("waiting", $event, {});
- }
- function onVideoError($event) {
- state.playing = false;
- trigger("error", $event, {});
- }
- function onPlay($event) {
- state.start = true;
- state.playing = true;
- trigger("play", $event, {});
- }
- function onPause($event) {
- state.playing = false;
- trigger("pause", $event, {});
- }
- function onEnded($event) {
- state.playing = false;
- trigger("ended", $event, {});
- }
- function onTimeUpdate($event) {
- const video = $event.target;
- const currentTime = state.currentTime = video.currentTime;
- trigger("timeupdate", $event, {
- currentTime,
- duration: video.duration
- });
- }
- function toggle() {
- const video = videoRef.value;
- if (state.playing) {
- video.pause();
- } else {
- video.play();
- }
- }
- function play() {
- const video = videoRef.value;
- state.start = true;
- video.play();
- }
- function pause() {
- const video = videoRef.value;
- video.pause();
- }
- function seek(position) {
- const video = videoRef.value;
- position = Number(position);
- if (typeof position === "number" && !isNaN(position)) {
- video.currentTime = position;
- }
- }
- function stop() {
- seek(0);
- pause();
- }
- function playbackRate(rate) {
- const video = videoRef.value;
- video.playbackRate = rate;
- }
- return {
- videoRef,
- state,
- play,
- pause,
- stop,
- seek,
- playbackRate,
- toggle,
- onDurationChange,
- onLoadedMetadata,
- onProgress,
- onWaiting,
- onVideoError,
- onPlay,
- onPause,
- onEnded,
- onTimeUpdate
- };
- }
- function useControls(props2, videoState, seek) {
- const progressRef = vue.ref(null);
- const ballRef = vue.ref(null);
- const centerPlayBtnShow = vue.computed(() => props2.showCenterPlayBtn && !videoState.start);
- const controlsVisible = vue.ref(true);
- const controlsShow = vue.computed(() => !centerPlayBtnShow.value && props2.controls && controlsVisible.value);
- const state = vue.reactive({
- touching: false,
- controlsTouching: false,
- centerPlayBtnShow,
- controlsShow,
- controlsVisible
- });
- function clickProgress(event) {
- const $progress = progressRef.value;
- let element = event.target;
- let x = event.offsetX;
- while (element && element !== $progress) {
- x += element.offsetLeft;
- element = element.parentNode;
- }
- const w = $progress.offsetWidth;
- let progress = 0;
- if (x >= 0 && x <= w) {
- progress = x / w;
- seek(videoState.duration * progress);
- }
- }
- function toggleControls() {
- state.controlsVisible = !state.controlsVisible;
- }
- let hideTiming;
- function autoHideStart() {
- hideTiming = setTimeout(() => {
- state.controlsVisible = false;
- }, 3e3);
- }
- function autoHideEnd() {
- if (hideTiming) {
- clearTimeout(hideTiming);
- hideTiming = null;
- }
- }
- vue.watch(() => state.controlsShow && videoState.playing && !state.controlsTouching, (val) => {
- if (val) {
- autoHideStart();
- } else {
- autoHideEnd();
- }
- });
- vue.watch([() => videoState.currentTime, () => {
- props2.duration;
- }], function updateProgress() {
- if (!state.touching) {
- videoState.progress = videoState.currentTime / videoState.duration * 100;
- }
- });
- return {
- state,
- progressRef,
- ballRef,
- clickProgress,
- toggleControls,
- autoHideStart,
- autoHideEnd
- };
- }
- function useDanmu(props2, videoState) {
- const danmuRef = vue.ref(null);
- const state = vue.reactive({
- enable: Boolean(props2.enableDanmu)
- });
- let danmuIndex = {
- time: 0,
- index: -1
- };
- const danmuList = shared.isArray(props2.danmuList) ? JSON.parse(JSON.stringify(props2.danmuList)) : [];
- danmuList.sort(function(a, b) {
- return (a.time || 0) - (b.time || 0);
- });
- function toggleDanmu() {
- state.enable = !state.enable;
- }
- function updateDanmu(event) {
- const video = event.target;
- const currentTime = video.currentTime;
- const oldDanmuIndex = danmuIndex;
- const newDanmuIndex = {
- time: currentTime,
- index: oldDanmuIndex.index
- };
- if (currentTime > oldDanmuIndex.time) {
- for (let index2 = oldDanmuIndex.index + 1; index2 < danmuList.length; index2++) {
- const element = danmuList[index2];
- if (currentTime >= (element.time || 0)) {
- newDanmuIndex.index = index2;
- if (videoState.playing && state.enable) {
- playDanmu(element);
- }
- } else {
- break;
- }
- }
- } else if (currentTime < oldDanmuIndex.time) {
- for (let index2 = oldDanmuIndex.index - 1; index2 > -1; index2--) {
- const element = danmuList[index2];
- if (currentTime <= (element.time || 0)) {
- newDanmuIndex.index = index2 - 1;
- } else {
- break;
- }
- }
- }
- danmuIndex = newDanmuIndex;
- }
- function playDanmu(danmu) {
- const p2 = document.createElement("p");
- p2.className = "uni-video-danmu-item";
- p2.innerText = danmu.text;
- let style = `bottom: ${Math.random() * 100}%;color: ${danmu.color};`;
- p2.setAttribute("style", style);
- const danmuEl = danmuRef.value;
- danmuEl.appendChild(p2);
- setTimeout(function() {
- style += "left: 0;-webkit-transform: translateX(-100%);transform: translateX(-100%);";
- p2.setAttribute("style", style);
- setTimeout(function() {
- p2.remove();
- }, 4e3);
- }, 17);
- }
- function sendDanmu(danmu) {
- danmuList.splice(danmuIndex.index + 1, 0, {
- text: String(danmu.text),
- color: danmu.color,
- time: videoState.currentTime || 0
- });
- }
- return {
- state,
- danmuRef,
- updateDanmu,
- toggleDanmu,
- sendDanmu
- };
- }
- function useContext(play, pause, stop, seek, sendDanmu, playbackRate, requestFullScreen, exitFullScreen) {
- useContextInfo();
- useSubscribe();
- }
- const props$9 = {
- id: {
- type: String,
- default: ""
- },
- src: {
- type: String,
- default: ""
- },
- duration: {
- type: [Number, String],
- default: ""
- },
- controls: {
- type: [Boolean, String],
- default: true
- },
- danmuList: {
- type: Array,
- default() {
- return [];
- }
- },
- danmuBtn: {
- type: [Boolean, String],
- default: false
- },
- enableDanmu: {
- type: [Boolean, String],
- default: false
- },
- autoplay: {
- type: [Boolean, String],
- default: false
- },
- loop: {
- type: [Boolean, String],
- default: false
- },
- muted: {
- type: [Boolean, String],
- default: false
- },
- objectFit: {
- type: String,
- default: "contain"
- },
- poster: {
- type: String,
- default: ""
- },
- direction: {
- type: [String, Number],
- default: ""
- },
- showProgress: {
- type: Boolean,
- default: true
- },
- initialTime: {
- type: [String, Number],
- default: 0
- },
- showFullscreenBtn: {
- type: [Boolean, String],
- default: true
- },
- pageGesture: {
- type: [Boolean, String],
- default: false
- },
- enableProgressGesture: {
- type: [Boolean, String],
- default: true
- },
- showPlayBtn: {
- type: [Boolean, String],
- default: true
- },
- showCenterPlayBtn: {
- type: [Boolean, String],
- default: true
- }
- };
- class UniVideoElement extends UniElement {
- }
- const index$b = /* @__PURE__ */ defineBuiltInComponent({
- name: "Video",
- props: props$9,
- emits: ["fullscreenchange", "progress", "loadedmetadata", "waiting", "error", "play", "pause", "ended", "timeupdate"],
- setup(props2, {
- emit: emit2,
- attrs,
- slots
- }) {
- const rootRef = vue.ref(null);
- const containerRef = vue.ref(null);
- const trigger = useCustomEvent(rootRef, emit2);
- const {
- state: userActionState
- } = useUserAction();
- const {
- $attrs: videoAttrs
- } = useAttrs({
- excludeListeners: true
- });
- const {
- t: t2
- } = useI18n();
- initI18nVideoMsgsOnce();
- const {
- videoRef,
- state: videoState,
- play,
- pause,
- stop,
- seek,
- playbackRate,
- toggle,
- onDurationChange,
- onLoadedMetadata,
- onProgress,
- onWaiting,
- onVideoError,
- onPlay,
- onPause,
- onEnded,
- onTimeUpdate
- } = useVideo(props2, attrs, trigger);
- const {
- state: danmuState,
- danmuRef,
- updateDanmu,
- toggleDanmu,
- sendDanmu
- } = useDanmu(props2, videoState);
- const {
- state: fullscreenState,
- onFullscreenChange,
- emitFullscreenChange,
- toggleFullscreen,
- requestFullScreen,
- exitFullScreen
- } = useFullscreen(trigger, containerRef, videoRef, userActionState, rootRef);
- const {
- state: gestureState,
- onTouchstart,
- onTouchend,
- onTouchmove
- } = useGesture(props2, videoRef, fullscreenState);
- const {
- state: controlsState,
- progressRef,
- ballRef,
- clickProgress,
- toggleControls
- } = useControls(props2, videoState, seek);
- useContext();
- return () => {
- return vue.createVNode("uni-video", {
- "ref": rootRef,
- "id": props2.id,
- "onClick": toggleControls
- }, [vue.createVNode("div", {
- "ref": containerRef,
- "class": "uni-video-container",
- "onTouchstart": onTouchstart,
- "onTouchend": onTouchend,
- "onTouchmove": onTouchmove,
- "onFullscreenchange": vue.withModifiers(onFullscreenChange, ["stop"]),
- "onWebkitfullscreenchange": vue.withModifiers(($event) => onFullscreenChange($event, true), ["stop"])
- }, [vue.createVNode("video", vue.mergeProps({
- "ref": videoRef,
- "style": {
- "object-fit": props2.objectFit
- },
- "muted": !!props2.muted,
- "loop": !!props2.loop,
- "src": videoState.src,
- "poster": props2.poster,
- "autoplay": !!props2.autoplay
- }, videoAttrs.value, {
- "class": "uni-video-video",
- "webkit-playsinline": true,
- "playsinline": true,
- "onDurationchange": onDurationChange,
- "onLoadedmetadata": onLoadedMetadata,
- "onProgress": onProgress,
- "onWaiting": onWaiting,
- "onError": onVideoError,
- "onPlay": onPlay,
- "onPause": onPause,
- "onEnded": onEnded,
- "onTimeupdate": (event) => {
- onTimeUpdate(event);
- updateDanmu(event);
- },
- "onWebkitbeginfullscreen": () => emitFullscreenChange(true),
- "onX5videoenterfullscreen": () => emitFullscreenChange(true),
- "onWebkitendfullscreen": () => emitFullscreenChange(false),
- "onX5videoexitfullscreen": () => emitFullscreenChange(false)
- }), null, 16, ["muted", "loop", "src", "poster", "autoplay", "webkit-playsinline", "playsinline", "onDurationchange", "onLoadedmetadata", "onProgress", "onWaiting", "onError", "onPlay", "onPause", "onEnded", "onTimeupdate", "onWebkitbeginfullscreen", "onX5videoenterfullscreen", "onWebkitendfullscreen", "onX5videoexitfullscreen"]), vue.withDirectives(vue.createVNode("div", {
- "class": "uni-video-bar uni-video-bar-full",
- "onClick": vue.withModifiers(() => {
- }, ["stop"])
- }, [vue.createVNode("div", {
- "class": "uni-video-controls"
- }, [vue.withDirectives(vue.createVNode("div", {
- "class": {
- "uni-video-control-button": true,
- "uni-video-control-button-play": !videoState.playing,
- "uni-video-control-button-pause": videoState.playing
- },
- "onClick": vue.withModifiers(toggle, ["stop"])
- }, null, 10, ["onClick"]), [[vue.vShow, props2.showPlayBtn]]), vue.withDirectives(vue.createVNode("div", {
- "class": "uni-video-current-time"
- }, [formatTime(videoState.currentTime)], 512), [[vue.vShow, props2.showProgress]]), vue.withDirectives(vue.createVNode("div", {
- "ref": progressRef,
- "class": "uni-video-progress-container",
- "onClick": vue.withModifiers(clickProgress, ["stop"])
- }, [vue.createVNode("div", {
- "class": "uni-video-progress"
- }, [vue.createVNode("div", {
- "style": {
- width: videoState.buffered + "%"
- },
- "class": "uni-video-progress-buffered"
- }, null, 4), vue.createVNode("div", {
- "ref": ballRef,
- "style": {
- left: videoState.progress + "%"
- },
- "class": "uni-video-ball"
- }, [vue.createVNode("div", {
- "class": "uni-video-inner"
- }, null)], 4)])], 8, ["onClick"]), [[vue.vShow, props2.showProgress]]), vue.withDirectives(vue.createVNode("div", {
- "class": "uni-video-duration"
- }, [formatTime(Number(props2.duration) || videoState.duration)], 512), [[vue.vShow, props2.showProgress]])]), vue.withDirectives(vue.createVNode("div", {
- "class": {
- "uni-video-danmu-button": true,
- "uni-video-danmu-button-active": danmuState.enable
- },
- "onClick": vue.withModifiers(toggleDanmu, ["stop"])
- }, [t2("uni.video.danmu")], 10, ["onClick"]), [[vue.vShow, props2.danmuBtn]]), vue.withDirectives(vue.createVNode("div", {
- "class": {
- "uni-video-fullscreen": true,
- "uni-video-type-fullscreen": fullscreenState.fullscreen
- },
- "onClick": vue.withModifiers(() => toggleFullscreen(!fullscreenState.fullscreen), ["stop"])
- }, null, 10, ["onClick"]), [[vue.vShow, props2.showFullscreenBtn]])], 8, ["onClick"]), [[vue.vShow, controlsState.controlsShow]]), vue.withDirectives(vue.createVNode("div", {
- "ref": danmuRef,
- "style": "z-index: 0;",
- "class": "uni-video-danmu"
- }, null, 512), [[vue.vShow, videoState.start && danmuState.enable]]), controlsState.centerPlayBtnShow && vue.createVNode("div", {
- "class": "uni-video-cover",
- "onClick": vue.withModifiers(() => {
- }, ["stop"])
- }, [vue.createVNode("div", {
- "class": "uni-video-cover-play-button",
- "onClick": vue.withModifiers(play, ["stop"])
- }, null, 8, ["onClick"]), vue.createVNode("p", {
- "class": "uni-video-cover-duration"
- }, [formatTime(Number(props2.duration) || videoState.duration)])], 8, ["onClick"]), vue.createVNode("div", {
- "class": {
- "uni-video-toast": true,
- "uni-video-toast-volume": gestureState.gestureType === "volume"
- }
- }, [vue.createVNode("div", {
- "class": "uni-video-toast-title"
- }, [t2("uni.video.volume")]), vue.createVNode("svg", {
- "class": "uni-video-toast-icon",
- "width": "200px",
- "height": "200px",
- "viewBox": "0 0 1024 1024",
- "version": "1.1",
- "xmlns": "http://www.w3.org/2000/svg"
- }, [vue.createVNode("path", {
- "d": "M475.400704 201.19552l0 621.674496q0 14.856192-10.856448 25.71264t-25.71264 10.856448-25.71264-10.856448l-190.273536-190.273536-149.704704 0q-14.856192 0-25.71264-10.856448t-10.856448-25.71264l0-219.414528q0-14.856192 10.856448-25.71264t25.71264-10.856448l149.704704 0 190.273536-190.273536q10.856448-10.856448 25.71264-10.856448t25.71264 10.856448 10.856448 25.71264zm219.414528 310.837248q0 43.425792-24.28416 80.851968t-64.2816 53.425152q-5.71392 2.85696-14.2848 2.85696-14.856192 0-25.71264-10.570752t-10.856448-25.998336q0-11.999232 6.856704-20.284416t16.570368-14.2848 19.427328-13.142016 16.570368-20.284416 6.856704-32.569344-6.856704-32.569344-16.570368-20.284416-19.427328-13.142016-16.570368-14.2848-6.856704-20.284416q0-15.427584 10.856448-25.998336t25.71264-10.570752q8.57088 0 14.2848 2.85696 39.99744 15.427584 64.2816 53.139456t24.28416 81.137664zm146.276352 0q0 87.422976-48.56832 161.41824t-128.5632 107.707392q-7.428096 2.85696-14.2848 2.85696-15.427584 0-26.284032-10.856448t-10.856448-25.71264q0-22.284288 22.284288-33.712128 31.997952-16.570368 43.425792-25.141248 42.283008-30.855168 65.995776-77.423616t23.712768-99.136512-23.712768-99.136512-65.995776-77.423616q-11.42784-8.57088-43.425792-25.141248-22.284288-11.42784-22.284288-33.712128 0-14.856192 10.856448-25.71264t25.71264-10.856448q7.428096 0 14.856192 2.85696 79.99488 33.712128 128.5632 107.707392t48.56832 161.41824zm146.276352 0q0 131.42016-72.566784 241.41312t-193.130496 161.989632q-7.428096 2.85696-14.856192 2.85696-14.856192 0-25.71264-10.856448t-10.856448-25.71264q0-20.570112 22.284288-33.712128 3.999744-2.285568 12.85632-5.999616t12.85632-5.999616q26.284032-14.2848 46.854144-29.140992 70.281216-51.996672 109.707264-129.705984t39.426048-165.132288-39.426048-165.132288-109.707264-129.705984q-20.570112-14.856192-46.854144-29.140992-3.999744-2.285568-12.85632-5.999616t-12.85632-5.999616q-22.284288-13.142016-22.284288-33.712128 0-14.856192 10.856448-25.71264t25.71264-10.856448q7.428096 0 14.856192 2.85696 120.563712 51.996672 193.130496 161.989632t72.566784 241.41312z"
- }, null)]), vue.createVNode("div", {
- "class": "uni-video-toast-value"
- }, [vue.createVNode("div", {
- "style": {
- width: gestureState.volumeNew * 100 + "%"
- },
- "class": "uni-video-toast-value-content"
- }, [vue.createVNode("div", {
- "class": "uni-video-toast-volume-grids"
- }, [vue.renderList(10, () => vue.createVNode("div", {
- "class": "uni-video-toast-volume-grids-item"
- }, null))])], 4)])], 2), vue.createVNode("div", {
- "class": {
- "uni-video-toast": true,
- "uni-video-toast-progress": gestureState.gestureType === "progress"
- }
- }, [vue.createVNode("div", {
- "class": "uni-video-toast-title"
- }, [formatTime(gestureState.currentTimeNew), " / ", formatTime(videoState.duration)])], 2), vue.createVNode("div", {
- "class": "uni-video-slots"
- }, [slots.default && slots.default()])], 40, ["onTouchstart", "onTouchend", "onTouchmove", "onFullscreenchange", "onWebkitfullscreenchange"])], 8, ["id", "onClick"]);
- };
- }
- });
- const onWebInvokeAppService = ({ name, arg }) => {
- if (name === "postMessage")
- ;
- else {
- uni[name](arg);
- }
- };
- const Invoke = /* @__PURE__ */ uniShared.once(() => UniServiceJSBridge.on(uniShared.ON_WEB_INVOKE_APP_SERVICE, onWebInvokeAppService));
- const props$8 = {
- src: {
- type: String,
- default: ""
- }
- };
- class UniWebViewElement extends UniElement {
- }
- const indexX = /* @__PURE__ */ defineBuiltInComponent({
- inheritAttrs: false,
- name: "WebView",
- props: props$8,
- setup(props2) {
- Invoke();
- const rootRef = vue.ref(null);
- vue.ref(null);
- const {
- $attrs,
- $excludeAttrs,
- $listeners
- } = useAttrs({
- excludeListeners: true
- });
- return () => {
- return vue.createVNode("uni-web-view", vue.mergeProps({
- "class": "uni-webview"
- }, $listeners.value, $excludeAttrs.value, {
- "ref": rootRef
- }), null, 16);
- };
- }
- });
- const ICON_PATH_ORIGIN = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAMAAABmmnOVAAAC01BMVEUAAAAAef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef96quGStdqStdpbnujMzMzCyM7Gyc7Ky83MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMwAef8GfP0yjfNWnOp0qOKKsdyYt9mju9aZt9mMstx1qeJYnekyjvIIfP0qivVmouaWttnMzMyat9lppOUujPQKffxhoOfNzc3Y2Njh4eHp6enu7u7y8vL19fXv7+/i4uLZ2dnOzs6auNgOf/sKff15quHR0dHx8fH9/f3////j4+N6quFdn+iywdPb29vw8PD+/v7c3NyywtLa2tr29vbS0tLd3d38/Pzf39/o6Ojc7f+q0v+HwP9rsf9dqv9Hnv9Vpv/q6urj8P+Vx/9Am/8Pgf8Iff/z8/OAvP95uf/n5+c5l//V6f+52v+y1//7+/vt7e0rkP/09PTQ0NDq9P8Whf+cy//W1tbe3t7A3v/m5ubs7OxOov/r6+vk5OQiaPjKAAAAknRSTlMACBZ9oB71/jiqywJBZATT6hBukRXv+zDCAVrkDIf4JbQsTb7eVeJLbwfa8Rh4G/OlPS/6/kxQ9/xdmZudoJxNVhng7B6wtWdzAtQOipcF1329wS44doK/BAkyP1pvgZOsrbnGXArAg34G2IsD1eMRe7bi7k5YnqFT9V0csyPedQyYD3p/Fje+hDpskq/MwpRBC6yKp2MAAAQdSURBVHja7Zn1exMxGIAPHbrhDsPdneHuNtzd3d3dIbjLh93o2o4i7TpgG1Jk0g0mMNwd/gTa5rq129reHnK5e/bk/TFNk/dJ7r5894XjGAwGg8GgTZasCpDIll1+hxw5vXLJLpEboTx5ZXbIhyzkl9fB28cqUaCgrBKFkI3CcjoUKYolihWXUSI7EihRUjaHXF52CVRKLoe8eZIdUOkyMknkRw6UlcehYAFHiXK+skgURk6Ul8OhQjFnCVRRBolKqRxQ5SzUHaqgNGSj7VCmalqJnDkoS5RF6ZCbroNvufQkUD6qEuXTdUA+3hQdqiEXVKfnUKOmK4latalJ1EEuoZZ6162HJ9x/4OChw0eOHj12/MTJU6dxG7XUu751tjNnz4ET5y9ctLZTSr0beKFLl89bpuUDrqgC1RqNWqsKuqqzNFw7e51S6u3tc+OmZUJ9kCHY6ECwOkRvab51iUrqXej2HYDQsHBjWgx3Ae7dppB6N2wEcF9jdMGDUIDGTaR2aNoM9FqjG7QmaN5CWgc/gIePjG559BigpZQOrYB/4jBfRGRUtDkmJjY6KjLCofkpD62lc2gDfMpWPIuLdwyV8XEpHgaddBZ+wBuSFcwJqSN2ovmZ/dfnOvCTxqGtwzq8SEjv4EhISn48eWgnhUP7DvDSvgzxrs6vV6+FLiro2EkCic4QKkzwJsH1KYreCp0eQhfyDl1B/w4P/xa5JVJ4U03QjbRD9x7wXlgH5IE3wmMBHXoSlugFAcI6f/AkkSi8q6HQm6xDn77wEQ8djTwSj3tqAMguRTe4ikeOQyJ4YV+KfkQl+oNW5GbY4gWOWgbwJ+kwAD6Fi90MK2ZsrIeBBCUGwRXbqJ+/iJMQliIEBhOU6AJhtlG/IpHE2bqrYQg5h6HA4yQiRqwEfkGCdTCMmMRw+IbPDCQaHCsCYAQxiZHw3TbmD/ESOHgHwShiEqPhp/gggYkSztIxxCRawy/bmEniJaJtfwiEscQkxkFgRqJESqQwwHhiEuMBp3Vm8RK/cZoHEzKXhCK2QxEPpiJe0YlKCFaKCNv/cYBNUsBRPlkJSc0U+dM7E9H0ThGJbgZT/iR7yj+VqMS06Qr4+OFm2JdCxIa8lugzkJs5K6MfxAaYPUcBpYG5khZJEkUUSb7DPCnKRfPBXj6M8FwuegoLpCgXcQszVjhbJFUJUee2hBhLoYTIcYtB57KY+opSMdVqwatSlZVj05aV//CwJLMX2DluaUcwhXm4ali2XOoLjxUrPV26zFtF4f5p0Gp310+z13BUWNvbehEXona6iAtX/zVZmtfN4WixfsNky4S6gCCVVq3RPLdfSfpv3MRRZfPoLc6Xs/5bt3EyMGzE9h07/Xft2t15z6i9+zgGg8FgMBgMBoPBYDAYDAYj8/APG67Rie8pUDsAAAAASUVORK5CYII=";
- var MapType = /* @__PURE__ */ ((MapType2) => {
- MapType2["QQ"] = "qq";
- MapType2["GOOGLE"] = "google";
- MapType2["AMAP"] = "AMap";
- MapType2["BMAP"] = "BMapGL";
- MapType2["UNKNOWN"] = "";
- return MapType2;
- })(MapType || {});
- function getMapInfo() {
- if (__uniConfig.bMapKey) {
- return {
- type: "BMapGL",
- key: __uniConfig.bMapKey
- };
- }
- if (__uniConfig.qqMapKey) {
- return {
- type: "qq",
- key: __uniConfig.qqMapKey
- };
- }
- if (__uniConfig.googleMapKey) {
- return {
- type: "google",
- key: __uniConfig.googleMapKey
- };
- }
- if (__uniConfig.aMapKey) {
- return {
- type: "AMap",
- key: __uniConfig.aMapKey,
- securityJsCode: __uniConfig.aMapSecurityJsCode,
- serviceHost: __uniConfig.aMapServiceHost
- };
- }
- return {
- type: "",
- key: ""
- };
- }
- let IS_AMAP = false;
- let hasGetIsAMap = false;
- const getIsAMap = () => {
- if (hasGetIsAMap) {
- return IS_AMAP;
- } else {
- hasGetIsAMap = true;
- return IS_AMAP = getMapInfo().type === "AMap";
- }
- };
- const getIsBMap = () => {
- return getMapInfo().type === "BMapGL";
- };
- const props$7 = {
- id: {
- type: [Number, String],
- default: ""
- },
- latitude: {
- type: [Number, String],
- require: true
- },
- longitude: {
- type: [Number, String],
- require: true
- },
- title: {
- type: String,
- default: ""
- },
- iconPath: {
- type: String,
- require: true
- },
- rotate: {
- type: [Number, String],
- default: 0
- },
- alpha: {
- type: [Number, String],
- default: 1
- },
- width: {
- type: [Number, String],
- default: ""
- },
- height: {
- type: [Number, String],
- default: ""
- },
- callout: {
- type: Object,
- default: null
- },
- label: {
- type: Object,
- default: null
- },
- anchor: {
- type: Object,
- default: null
- },
- clusterId: {
- type: [Number, String],
- default: ""
- },
- customCallout: {
- type: Object,
- default: null
- },
- ariaLabel: {
- type: String,
- default: ""
- }
- };
- function useMarkerLabelStyle(id) {
- const className = "uni-map-marker-label-" + id;
- const styleEl = document.createElement("style");
- styleEl.id = className;
- document.head.appendChild(styleEl);
- return function updateMarkerLabelStyle(style) {
- const newStyle = Object.assign({}, style, {
- position: "absolute",
- top: "70px",
- borderStyle: "solid"
- });
- const div = document.createElement("div");
- Object.keys(newStyle).forEach((key) => {
- div.style[key] = newStyle[key] || "";
- });
- styleEl.innerText = `.${className}{${div.getAttribute("style")}}`;
- return className;
- };
- }
- const MapMarker = /* @__PURE__ */ defineSystemComponent({
- name: "MapMarker",
- props: props$7,
- setup(props2) {
- const id = String(!isNaN(Number(props2.id)) ? props2.id : "");
- const onMapReady = vue.inject("onMapReady");
- const updateMarkerLabelStyle = useMarkerLabelStyle(id);
- let marker;
- function removeMarkerCallout(callout) {
- if (getIsAMap()) {
- callout.removeAMapText();
- } else {
- callout.setMap(null);
- }
- }
- onMapReady((map, maps, trigger) => {
- function updateMarker(option) {
- const title = option.title;
- let position;
- if (getIsAMap()) {
- position = new maps.LngLat(option.longitude, option.latitude);
- } else if (getIsBMap()) {
- position = new maps.Point(option.longitude, option.latitude);
- } else {
- position = new maps.LatLng(option.latitude, option.longitude);
- }
- const img = new Image();
- let imgHeight = 0;
- img.onload = () => {
- const anchor = option.anchor || {};
- let icon;
- let w;
- let h;
- let top;
- let x = typeof anchor.x === "number" ? anchor.x : 0.5;
- let y = typeof anchor.y === "number" ? anchor.y : 1;
- if (option.iconPath && (option.width || option.height)) {
- w = option.width || img.width / img.height * option.height;
- h = option.height || img.height / img.width * option.width;
- } else {
- w = img.width / 2;
- h = img.height / 2;
- }
- imgHeight = h;
- top = h - (h - y * h);
- if ("MarkerImage" in maps) {
- icon = new maps.MarkerImage(img.src, null, null, new maps.Point(x * w, y * h), new maps.Size(w, h));
- } else if ("Icon" in maps) {
- icon = new maps.Icon({
- image: img.src,
- size: new maps.Size(w, h),
- imageSize: new maps.Size(w, h),
- imageOffset: new maps.Pixel(x * w, y * h)
- });
- } else {
- icon = {
- url: img.src,
- anchor: new maps.Point(x, y),
- size: new maps.Size(w, h)
- };
- }
- if (getIsBMap()) {
- marker = new maps.Marker(new maps.Point(position.lng, position.lat));
- map.addOverlay(marker);
- } else {
- marker.setPosition(position);
- marker.setIcon(icon);
- }
- if ("setRotation" in marker) {
- marker.setRotation(option.rotate || 0);
- }
- const labelOpt = option.label || {};
- if ("label" in marker) {
- marker.label.setMap(null);
- delete marker.label;
- }
- let label;
- if (labelOpt.content) {
- const labelStyle = {
- borderColor: labelOpt.borderColor,
- borderWidth: (Number(labelOpt.borderWidth) || 0) + "px",
- padding: (Number(labelOpt.padding) || 0) + "px",
- borderRadius: (Number(labelOpt.borderRadius) || 0) + "px",
- backgroundColor: labelOpt.bgColor,
- color: labelOpt.color,
- fontSize: (labelOpt.fontSize || 14) + "px",
- lineHeight: (labelOpt.fontSize || 14) + "px",
- marginLeft: (Number(labelOpt.anchorX || labelOpt.x) || 0) + "px",
- marginTop: (Number(labelOpt.anchorY || labelOpt.y) || 0) + "px"
- };
- if ("Label" in maps) {
- label = new maps.Label({
- position,
- map,
- clickable: false,
- content: labelOpt.content,
- style: labelStyle
- });
- marker.label = label;
- } else if ("setLabel" in marker) {
- if (getIsAMap()) {
- const content = `<div style="
- margin-left:${labelStyle.marginLeft};
- margin-top:${labelStyle.marginTop};
- padding:${labelStyle.padding};
- background-color:${labelStyle.backgroundColor};
- border-radius:${labelStyle.borderRadius};
- line-height:${labelStyle.lineHeight};
- color:${labelStyle.color};
- font-size:${labelStyle.fontSize};
- ">
- ${labelOpt.content}
- <div>`;
- marker.setLabel({
- content,
- direction: "bottom-right"
- });
- } else {
- const className = updateMarkerLabelStyle(labelStyle);
- marker.setLabel({
- text: labelOpt.content,
- color: labelStyle.color,
- fontSize: labelStyle.fontSize,
- className
- });
- }
- }
- }
- const calloutOpt = option.callout || {};
- let callout = marker.callout;
- let calloutStyle;
- if (calloutOpt.content || title) {
- if (getIsAMap() && calloutOpt.content) {
- calloutOpt.content = calloutOpt.content.replaceAll("\n", "<br/>");
- }
- const boxShadow = "0px 0px 3px 1px rgba(0,0,0,0.5)";
- let offsetY = -imgHeight / 2;
- if (option.width || option.height) {
- offsetY += 14 - imgHeight / 2;
- }
- calloutStyle = calloutOpt.content ? {
- position,
- map,
- top,
- // handle AMap callout offset
- offsetY,
- content: calloutOpt.content,
- color: calloutOpt.color,
- fontSize: calloutOpt.fontSize,
- borderRadius: calloutOpt.borderRadius,
- bgColor: calloutOpt.bgColor,
- padding: calloutOpt.padding,
- boxShadow: calloutOpt.boxShadow || boxShadow,
- display: calloutOpt.display
- } : {
- position,
- map,
- top,
- // handle AMap callout offset
- offsetY,
- content: title,
- boxShadow
- };
- if (callout) {
- callout.setOption(calloutStyle);
- } else {
- if (getIsAMap()) {
- const callback = (id2) => {
- if (id2 !== "") {
- trigger("callouttap", {}, {
- markerId: Number(id2)
- });
- }
- };
- callout = marker.callout = new maps.Callout(calloutStyle, callback);
- } else {
- callout = marker.callout = new maps.Callout(calloutStyle);
- callout.div.onclick = function($event) {
- if (id !== "") {
- trigger("callouttap", $event, {
- markerId: Number(id)
- });
- }
- $event.stopPropagation();
- $event.preventDefault();
- };
- if (getMapInfo().type === MapType.GOOGLE) {
- callout.div.ontouchstart = function($event) {
- $event.stopPropagation();
- };
- callout.div.onpointerdown = function($event) {
- $event.stopPropagation();
- };
- }
- }
- }
- } else {
- if (callout) {
- removeMarkerCallout(callout);
- delete marker.callout;
- }
- }
- };
- if (option.iconPath) {
- img.src = getRealPath(option.iconPath);
- } else {
- console.error("Marker.iconPath is required.");
- }
- }
- function addMarker(props3) {
- if (!getIsBMap()) {
- marker = new maps.Marker({
- map,
- flat: true,
- autoRotation: false
- });
- }
- updateMarker(props3);
- const MapsEvent = maps.event || maps.Event;
- if (getIsBMap())
- ;
- else {
- MapsEvent.addListener(marker, "click", () => {
- const callout = marker.callout;
- if (callout && !callout.alwaysVisible) {
- if (getIsAMap()) {
- callout.visible = !callout.visible;
- if (callout.visible) {
- marker.callout.createAMapText();
- } else {
- marker.callout.removeAMapText();
- }
- } else {
- callout.set("visible", !callout.visible);
- if (callout.visible) {
- const div = callout.div;
- const parent = div.parentNode;
- parent.removeChild(div);
- parent.appendChild(div);
- }
- }
- }
- if (id) {
- trigger("markertap", {}, {
- markerId: Number(id),
- latitude: props3.latitude,
- longitude: props3.longitude
- });
- }
- });
- }
- }
- addMarker(props2);
- vue.watch(props2, updateMarker);
- });
- if (id) {
- const addMapChidlContext = vue.inject("addMapChidlContext");
- vue.inject("removeMapChidlContext");
- const context = {
- id,
- translate(data) {
- onMapReady((map, maps, trigger) => {
- const destination = data.destination;
- const duration = data.duration;
- const autoRotate = !!data.autoRotate;
- let rotate = Number(data.rotate) || 0;
- let rotation = 0;
- if ("getRotation" in marker) {
- rotation = marker.getRotation();
- }
- const a = marker.getPosition();
- const b = new maps.LatLng(destination.latitude, destination.longitude);
- const distance = maps.geometry.spherical.computeDistanceBetween(a, b) / 1e3;
- const time = (typeof duration === "number" ? duration : 1e3) / (1e3 * 60 * 60);
- const speed = distance / time;
- const MapsEvent = maps.event || maps.Event;
- const movingEvent = MapsEvent.addListener(marker, "moving", (e2) => {
- const latLng = e2.latLng;
- const label = marker.label;
- if (label) {
- label.setPosition(latLng);
- }
- const callout = marker.callout;
- if (callout) {
- callout.setPosition(latLng);
- }
- });
- const event = MapsEvent.addListener(marker, "moveend", () => {
- event.remove();
- movingEvent.remove();
- marker.lastPosition = a;
- marker.setPosition(b);
- const label = marker.label;
- if (label) {
- label.setPosition(b);
- }
- const callout = marker.callout;
- if (callout) {
- callout.setPosition(b);
- }
- const cb = data.animationEnd;
- if (shared.isFunction(cb)) {
- cb();
- }
- });
- let lastRtate = 0;
- if (autoRotate) {
- if (marker.lastPosition) {
- lastRtate = maps.geometry.spherical.computeHeading(marker.lastPosition, a);
- }
- rotate = maps.geometry.spherical.computeHeading(a, b) - lastRtate;
- }
- if ("setRotation" in marker) {
- marker.setRotation(rotation + rotate);
- }
- if ("moveTo" in marker) {
- marker.moveTo(b, speed);
- } else {
- marker.setPosition(b);
- MapsEvent.trigger(marker, "moveend", {});
- }
- });
- }
- };
- addMapChidlContext(context);
- }
- return () => {
- return null;
- };
- }
- });
- function hexToRgba(hex) {
- if (!hex) {
- return {
- r: 0,
- g: 0,
- b: 0,
- a: 0
- };
- }
- let tmpHex = hex.slice(1);
- const tmpHexLen = tmpHex.length;
- if (![3, 4, 6, 8].includes(tmpHexLen)) {
- return {
- r: 0,
- g: 0,
- b: 0,
- a: 0
- };
- }
- if (tmpHexLen === 3 || tmpHexLen === 4) {
- tmpHex = tmpHex.replace(/(\w{1})/g, "$1$1");
- }
- let [sr, sg, sb, sa] = tmpHex.match(/(\w{2})/g);
- const r = parseInt(sr, 16), g2 = parseInt(sg, 16), b = parseInt(sb, 16);
- if (!sa) {
- return { r, g: g2, b, a: 1 };
- }
- return {
- r,
- g: g2,
- b,
- a: (`0x100${sa}` - 65536) / 255
- };
- }
- const props$6 = {
- points: {
- type: Array,
- require: true
- },
- color: {
- type: String,
- default: "#000000"
- },
- width: {
- type: [Number, String],
- default: ""
- },
- dottedLine: {
- type: [Boolean, String],
- default: false
- },
- arrowLine: {
- type: [Boolean, String],
- default: false
- },
- arrowIconPath: {
- type: String,
- default: ""
- },
- borderColor: {
- type: String,
- default: "#000000"
- },
- borderWidth: {
- type: [Number, String],
- default: ""
- },
- colorList: {
- type: Array,
- default() {
- return [];
- }
- },
- level: {
- type: String,
- default: ""
- }
- };
- const MapPolyline = /* @__PURE__ */ defineSystemComponent({
- name: "MapPolyline",
- props: props$6,
- setup(props2) {
- const onMapReady = vue.inject("onMapReady");
- let polyline;
- let polylineBorder;
- function removePolyline() {
- if (polyline) {
- polyline.setMap(null);
- }
- if (polylineBorder) {
- polylineBorder.setMap(null);
- }
- }
- onMapReady((map, maps) => {
- function updatePolyline(option) {
- removePolyline();
- addPolyline(option);
- }
- function addPolyline(option) {
- const path = [];
- option.points.forEach((point) => {
- let pointPosition;
- if (getIsAMap()) {
- pointPosition = [point.longitude, point.latitude];
- } else if (getIsBMap()) {
- pointPosition = new maps.Point(point.longitude, point.latitude);
- } else {
- pointPosition = new maps.LatLng(point.latitude, point.longitude);
- }
- path.push(pointPosition);
- });
- const strokeWeight = Number(option.width) || 1;
- const {
- r: sr,
- g: sg,
- b: sb,
- a: sa
- } = hexToRgba(option.color);
- const {
- r: br,
- g: bg,
- b: bb,
- a: ba
- } = hexToRgba(option.borderColor);
- const polylineOptions = {
- map,
- clickable: false,
- path,
- strokeWeight,
- strokeColor: option.color || void 0,
- strokeDashStyle: option.dottedLine ? "dash" : "solid"
- };
- const borderWidth = Number(option.borderWidth) || 0;
- const polylineBorderOptions = {
- map,
- clickable: false,
- path,
- strokeWeight: strokeWeight + borderWidth * 2,
- strokeColor: option.borderColor || void 0,
- strokeDashStyle: option.dottedLine ? "dash" : "solid"
- };
- if ("Color" in maps) {
- polylineOptions.strokeColor = new maps.Color(sr, sg, sb, sa);
- polylineBorderOptions.strokeColor = new maps.Color(br, bg, bb, ba);
- } else {
- polylineOptions.strokeColor = `rgb(${sr}, ${sg}, ${sb})`;
- polylineOptions.strokeOpacity = sa;
- polylineBorderOptions.strokeColor = `rgb(${br}, ${bg}, ${bb})`;
- polylineBorderOptions.strokeOpacity = ba;
- }
- if (borderWidth) {
- polylineBorder = new maps.Polyline(polylineBorderOptions);
- }
- if (getIsBMap()) {
- polyline = new maps.Polyline(polylineOptions.path, polylineOptions);
- map.addOverlay(polyline);
- } else {
- polyline = new maps.Polyline(polylineOptions);
- }
- }
- addPolyline(props2);
- vue.watch(props2, updatePolyline);
- });
- return () => {
- return null;
- };
- }
- });
- const props$5 = {
- latitude: {
- type: [Number, String],
- require: true
- },
- longitude: {
- type: [Number, String],
- require: true
- },
- color: {
- type: String,
- default: "#000000"
- },
- fillColor: {
- type: String,
- default: "#00000000"
- },
- radius: {
- type: [Number, String],
- require: true
- },
- strokeWidth: {
- type: [Number, String],
- default: ""
- },
- level: {
- type: String,
- default: ""
- }
- };
- const MapCircle = /* @__PURE__ */ defineSystemComponent({
- name: "MapCircle",
- props: props$5,
- setup(props2) {
- const onMapReady = vue.inject("onMapReady");
- let circle;
- function removeCircle() {
- if (circle) {
- circle.setMap(null);
- }
- }
- onMapReady((map, maps) => {
- function updateCircle(option) {
- removeCircle();
- addCircle(option);
- }
- function addCircle(option) {
- const center = getIsAMap() || getIsBMap() ? [option.longitude, option.latitude] : new maps.LatLng(option.latitude, option.longitude);
- const circleOptions = {
- map,
- center,
- clickable: false,
- radius: option.radius,
- strokeWeight: Number(option.strokeWidth) || 1,
- strokeDashStyle: "solid"
- };
- if (getIsBMap()) {
- circleOptions.strokeColor = option.color;
- circleOptions.fillColor = option.fillColor || "#000";
- circleOptions.fillOpacity = 1;
- } else {
- const {
- r: fr,
- g: fg,
- b: fb,
- a: fa
- } = hexToRgba(option.fillColor);
- const {
- r: sr,
- g: sg,
- b: sb,
- a: sa
- } = hexToRgba(option.color);
- if ("Color" in maps) {
- circleOptions.fillColor = new maps.Color(fr, fg, fb, fa);
- circleOptions.strokeColor = new maps.Color(sr, sg, sb, sa);
- } else {
- circleOptions.fillColor = `rgb(${fr}, ${fg}, ${fb})`;
- circleOptions.fillOpacity = fa;
- circleOptions.strokeColor = `rgb(${sr}, ${sg}, ${sb})`;
- circleOptions.strokeOpacity = sa;
- }
- }
- if (getIsBMap()) {
- let pt = new maps.Point(
- // @ts-ignore
- circleOptions.center[0],
- // @ts-ignore
- circleOptions.center[1]
- );
- circle = new maps.Circle(pt, circleOptions.radius, circleOptions);
- map.addOverlay(circle);
- } else {
- circle = new maps.Circle(circleOptions);
- if (getIsAMap()) {
- map.add(circle);
- }
- }
- }
- addCircle(props2);
- vue.watch(props2, updateCircle);
- });
- return () => {
- return null;
- };
- }
- });
- const props$4 = {
- id: {
- type: [Number, String],
- default: ""
- },
- position: {
- type: Object,
- required: true
- },
- iconPath: {
- type: String,
- required: true
- },
- clickable: {
- type: [Boolean, String],
- default: ""
- },
- trigger: {
- type: Function,
- required: true
- }
- };
- const MapControl = /* @__PURE__ */ defineSystemComponent({
- name: "MapControl",
- props: props$4,
- setup(props2) {
- const imgPath = vue.computed(() => getRealPath(props2.iconPath));
- const positionStyle = vue.computed(() => {
- let positionStyle2 = `top:${props2.position.top || 0}px;left:${props2.position.left || 0}px;`;
- if (props2.position.width) {
- positionStyle2 += `width:${props2.position.width}px;`;
- }
- if (props2.position.height) {
- positionStyle2 += `height:${props2.position.height}px;`;
- }
- return positionStyle2;
- });
- const handleClick = ($event) => {
- if (props2.clickable) {
- props2.trigger("controltap", $event, {
- controlId: props2.id
- });
- }
- };
- return () => {
- return vue.createVNode("div", {
- "class": "uni-map-control"
- }, [vue.createVNode("img", {
- "src": imgPath.value,
- "style": positionStyle.value,
- "class": "uni-map-control-icon",
- "onClick": handleClick
- }, null, 12, ["src", "onClick"])]);
- };
- }
- });
- const CONTEXT_ID = "MAP_LOCATION";
- const MapLocation = /* @__PURE__ */ defineSystemComponent({
- name: "MapLocation",
- setup() {
- const state = vue.reactive({
- latitude: 0,
- longitude: 0,
- rotate: 0
- });
- return () => {
- return state.latitude ? vue.createVNode(MapMarker, vue.mergeProps({
- "anchor": {
- x: 0.5,
- y: 0.5
- },
- "width": "44",
- "height": "44",
- "iconPath": ICON_PATH_ORIGIN
- }, state), null, 16, ["iconPath"]) : null;
- };
- }
- });
- const props$3 = {
- // 边框虚线,腾讯地图支持,google 高德 地图不支持,默认值为[0, 0] 为实线,非 [0, 0] 为虚线,H5 端无法像微信小程序一样控制虚线的间隔像素大小
- dashArray: {
- type: Array,
- default: () => [0, 0]
- },
- // 经纬度数组,[{latitude: 0, longitude: 0}]
- points: {
- type: Array,
- required: true
- },
- // 描边的宽度
- strokeWidth: {
- type: Number,
- default: 1
- },
- // 描边的颜色,十六进制
- strokeColor: {
- type: String,
- default: "#000000"
- },
- // 填充颜色,十六进制
- fillColor: {
- type: String,
- default: "#00000000"
- },
- // 设置多边形 Z 轴数值
- zIndex: {
- type: Number,
- default: 0
- }
- };
- const MapPolygon = /* @__PURE__ */ defineSystemComponent({
- name: "MapPolygon",
- props: props$3,
- setup(props2) {
- let polygonIns;
- const onMapReady = vue.inject("onMapReady");
- onMapReady((map, maps, trigger) => {
- function drawPolygon() {
- const {
- points,
- strokeWidth,
- strokeColor,
- dashArray,
- fillColor,
- zIndex
- } = props2;
- const path = points.map((item) => {
- const {
- latitude,
- longitude
- } = item;
- if (getIsAMap()) {
- return [longitude, latitude];
- } else if (getIsBMap()) {
- return new maps.Point(longitude, latitude);
- } else {
- return new maps.LatLng(latitude, longitude);
- }
- });
- const {
- r: fcR,
- g: fcG,
- b: fcB,
- a: fcA
- } = hexToRgba(fillColor);
- const {
- r: scR,
- g: scG,
- b: scB,
- a: scA
- } = hexToRgba(strokeColor);
- const polygonOptions = {
- //多边形是否可点击。
- clickable: true,
- //鼠标在多边形内的光标样式。
- cursor: "crosshair",
- //多边形是否可编辑。
- editable: false,
- // 地图实例,即要显示多边形的地图
- // @ts-ignore
- map,
- // 区域填充色
- fillColor: "",
- //多边形的路径,以经纬度坐标数组构成。
- path,
- // 区域边框
- strokeColor: "",
- //多边形的边框样式。实线是solid,虚线是dash。
- strokeDashStyle: dashArray.some((item) => item > 0) ? "dash" : "solid",
- //多边形的边框线宽。
- strokeWeight: strokeWidth,
- //多边形是否可见。
- visible: true,
- //多边形的zIndex值。
- zIndex
- };
- if (maps.Color) {
- polygonOptions.fillColor = new maps.Color(fcR, fcG, fcB, fcA);
- polygonOptions.strokeColor = new maps.Color(scR, scG, scB, scA);
- } else {
- polygonOptions.fillColor = `rgb(${fcR}, ${fcG}, ${fcB})`;
- polygonOptions.fillOpacity = fcA;
- polygonOptions.strokeColor = `rgb(${scR}, ${scG}, ${scB})`;
- polygonOptions.strokeOpacity = scA;
- }
- if (polygonIns) {
- polygonIns.setOptions(polygonOptions);
- return;
- }
- if (getIsBMap()) {
- polygonIns = new maps.Polygon(polygonOptions.path, polygonOptions);
- map.addOverlay(polygonIns);
- } else {
- polygonIns = new maps.Polygon(polygonOptions);
- }
- }
- drawPolygon();
- vue.watch(props2, drawPolygon);
- });
- return () => null;
- }
- });
- const props$2 = {
- id: {
- type: String,
- default: ""
- },
- latitude: {
- type: [String, Number],
- default: 0
- },
- longitude: {
- type: [String, Number],
- default: 0
- },
- scale: {
- type: [String, Number],
- default: 16
- },
- markers: {
- type: Array,
- default() {
- return [];
- }
- },
- includePoints: {
- type: Array,
- default() {
- return [];
- }
- },
- polyline: {
- type: Array,
- default() {
- return [];
- }
- },
- circles: {
- type: Array,
- default() {
- return [];
- }
- },
- controls: {
- type: Array,
- default() {
- return [];
- }
- },
- showLocation: {
- type: [Boolean, String],
- default: false
- },
- libraries: {
- type: Array,
- default() {
- return [];
- }
- },
- polygons: {
- type: Array,
- default: () => []
- }
- };
- function getPoints(points) {
- const newPoints = [];
- if (shared.isArray(points)) {
- points.forEach((point) => {
- if (point && point.latitude && point.longitude) {
- newPoints.push({
- latitude: point.latitude,
- longitude: point.longitude
- });
- }
- });
- }
- return newPoints;
- }
- function getAMapPosition(maps, latitude, longitude) {
- return new maps.LngLat(longitude, latitude);
- }
- function getBMapPosition(maps, latitude, longitude) {
- return new maps.Point(longitude, latitude);
- }
- function getGoogleOrQQMapPosition(maps, latitude, longitude) {
- return new maps.LatLng(latitude, longitude);
- }
- function getMapPosition(maps, latitude, longitude) {
- if (getIsBMap()) {
- return getBMapPosition(maps, latitude, longitude);
- } else if (getIsAMap()) {
- return getAMapPosition(maps, latitude, longitude);
- } else {
- return getGoogleOrQQMapPosition(maps, latitude, longitude);
- }
- }
- function getLat(latLng) {
- if ("getLat" in latLng) {
- return latLng.getLat();
- } else {
- if (getIsBMap()) {
- return latLng.lat;
- }
- return latLng.lat();
- }
- }
- function getLng(latLng) {
- if ("getLng" in latLng) {
- return latLng.getLng();
- } else {
- if (getIsBMap()) {
- return latLng.lng;
- }
- return latLng.lng();
- }
- }
- function useMap(props2, rootRef, emit2) {
- const trigger = useCustomEvent(rootRef, emit2);
- const mapRef = vue.ref(null);
- let maps;
- let map;
- const state = vue.reactive({
- latitude: Number(props2.latitude),
- longitude: Number(props2.longitude),
- includePoints: getPoints(props2.includePoints)
- });
- function onMapReady(callback) {
- }
- let isBoundsReady;
- function onBoundsReady(callback) {
- }
- const contexts = {};
- function addMapChidlContext(context) {
- contexts[context.id] = context;
- }
- function removeMapChidlContext(context) {
- delete contexts[context.id];
- }
- vue.watch([() => props2.latitude, () => props2.longitude], ([latitudeVlaue, longitudeVlaue]) => {
- const latitude = Number(latitudeVlaue);
- const longitude = Number(longitudeVlaue);
- if (latitude !== state.latitude || longitude !== state.longitude) {
- state.latitude = latitude;
- state.longitude = longitude;
- }
- });
- vue.watch(() => props2.includePoints, (points) => {
- state.includePoints = getPoints(points);
- }, {
- deep: true
- });
- function updateBounds() {
- if (getIsAMap()) {
- const points = [];
- state.includePoints.forEach((point) => {
- points.push([point.longitude, point.latitude]);
- });
- const bounds = new maps.Bounds(...points);
- map.setBounds(bounds);
- } else if (getIsBMap())
- ;
- else {
- const bounds = new maps.LatLngBounds();
- state.includePoints.forEach(({
- latitude,
- longitude
- }) => {
- const latLng = new maps.LatLng(latitude, longitude);
- bounds.extend(latLng);
- });
- map.fitBounds(bounds);
- }
- }
- try {
- const id = useContextInfo();
- useSubscribe((type, data = {}) => {
- switch (type) {
- case "getCenterLocation":
- onMapReady(() => {
- const center = map.getCenter();
- uniShared.callOptions(data, {
- latitude: getLat(center),
- longitude: getLng(center),
- errMsg: `${type}:ok`
- });
- });
- break;
- case "moveToLocation":
- {
- let latitude = Number(data.latitude);
- let longitude = Number(data.longitude);
- if (!latitude || !longitude) {
- const context = contexts[CONTEXT_ID];
- if (context) {
- latitude = context.state.latitude;
- longitude = context.state.longitude;
- }
- }
- if (latitude && longitude) {
- state.latitude = latitude;
- state.longitude = longitude;
- if (map)
- ;
- onMapReady(() => {
- uniShared.callOptions(data, `${type}:ok`);
- });
- } else {
- uniShared.callOptions(data, `${type}:fail`);
- }
- }
- break;
- case "translateMarker":
- onMapReady(() => {
- const context = contexts[data.markerId];
- if (context) {
- try {
- context.translate(data);
- } catch (error) {
- uniShared.callOptions(data, `${type}:fail ${error.message}`);
- }
- uniShared.callOptions(data, `${type}:ok`);
- } else {
- uniShared.callOptions(data, `${type}:fail not found`);
- }
- });
- break;
- case "includePoints":
- state.includePoints = getPoints(data.includePoints);
- if (isBoundsReady || getIsAMap()) {
- updateBounds();
- }
- onBoundsReady(() => {
- uniShared.callOptions(data, `${type}:ok`);
- });
- break;
- case "getRegion":
- onBoundsReady(() => {
- const latLngBounds = map.getBounds();
- const southwest = latLngBounds.getSouthWest();
- const northeast = latLngBounds.getNorthEast();
- uniShared.callOptions(data, {
- southwest: {
- latitude: getLat(southwest),
- longitude: getLng(southwest)
- },
- northeast: {
- latitude: getLat(northeast),
- longitude: getLng(northeast)
- },
- errMsg: `${type}:ok`
- });
- });
- break;
- case "getScale":
- onMapReady(() => {
- uniShared.callOptions(data, {
- scale: map.getZoom(),
- errMsg: `${type}:ok`
- });
- });
- break;
- }
- }, id, true);
- } catch (error) {
- }
- vue.provide("onMapReady", onMapReady);
- vue.provide("addMapChidlContext", addMapChidlContext);
- vue.provide("removeMapChidlContext", removeMapChidlContext);
- return {
- state,
- mapRef,
- trigger
- };
- }
- class UniMapElement extends UniElement {
- }
- const index$a = /* @__PURE__ */ defineBuiltInComponent({
- name: "Map",
- props: props$2,
- emits: ["markertap", "labeltap", "callouttap", "controltap", "regionchange", "tap", "click", "updated", "update:scale", "update:latitude", "update:longitude"],
- setup(props2, {
- emit: emit2,
- slots
- }) {
- const rootRef = vue.ref(null);
- const {
- mapRef,
- trigger
- } = useMap(props2, rootRef, emit2);
- return () => {
- return vue.createVNode("uni-map", {
- "ref": rootRef,
- "id": props2.id
- }, [vue.createVNode("div", {
- "ref": mapRef,
- "style": "width: 100%; height: 100%; position: relative; overflow: hidden"
- }, null, 512), props2.markers.map((item) => vue.createVNode(MapMarker, vue.mergeProps({
- "key": item.id
- }, item), null, 16)), props2.polyline.map((item) => vue.createVNode(MapPolyline, item, null, 16)), props2.circles.map((item) => vue.createVNode(MapCircle, item, null, 16)), props2.controls.map((item) => vue.createVNode(MapControl, vue.mergeProps(item, {
- "trigger": trigger
- }), null, 16, ["trigger"])), props2.showLocation && vue.createVNode(MapLocation, null, null), props2.polygons.map((item) => vue.createVNode(MapPolygon, item, null, 16)), vue.createVNode("div", {
- "style": "position: absolute;top: 0;width: 100%;height: 100%;overflow: hidden;pointer-events: none;"
- }, [slots.default && slots.default()])], 8, ["id"]);
- };
- }
- });
- const props$1 = {
- scrollTop: {
- type: [String, Number],
- default: 0
- }
- };
- class UniCoverViewElement extends UniElement {
- }
- const index$9 = /* @__PURE__ */ defineBuiltInComponent({
- name: "CoverView",
- compatConfig: {
- MODE: 3
- },
- props: props$1,
- setup(props2, {
- slots
- }) {
- const root = vue.ref(null);
- const content = vue.ref(null);
- vue.watch(() => props2.scrollTop, (val) => {
- setScrollTop(val);
- });
- function setScrollTop(val) {
- let _content = content.value;
- if (getComputedStyle(_content).overflowY === "scroll") {
- _content.scrollTop = _upx2pxNum(val);
- }
- }
- function _upx2pxNum(val) {
- let _val = String(val);
- if (/\d+[ur]px$/i.test(_val)) {
- _val.replace(/\d+[ur]px$/i, (text) => {
- return String(uni.upx2px(parseFloat(text)));
- });
- }
- return parseFloat(_val) || 0;
- }
- return () => {
- return vue.createVNode("uni-cover-view", {
- "scroll-top": props2.scrollTop,
- "ref": root
- }, [vue.createVNode("div", {
- "ref": content,
- "class": "uni-cover-view"
- }, [slots.default && slots.default()], 512)], 8, ["scroll-top"]);
- };
- }
- });
- class UniCoverImageElement extends UniElement {
- }
- const index$8 = /* @__PURE__ */ defineBuiltInComponent({
- name: "CoverImage",
- compatConfig: {
- MODE: 3
- },
- props: {
- src: {
- type: String,
- default: ""
- }
- },
- emits: ["load", "error"],
- setup(props2, {
- emit: emit2
- }) {
- const root = vue.ref(null);
- const trigger = useCustomEvent(root, emit2);
- function load($event) {
- trigger("load", $event);
- }
- function error($event) {
- trigger("error", $event);
- }
- return () => {
- const {
- src
- } = props2;
- return vue.createVNode("uni-cover-image", {
- "ref": root,
- "src": src
- }, [vue.createVNode("div", {
- "class": "uni-cover-image"
- }, [src ? vue.createVNode("img", {
- "src": getRealPath(src),
- "onLoad": load,
- "onError": error
- }, null, 40, ["src", "onLoad", "onError"]) : null])], 8, ["src"]);
- };
- }
- });
- function _isSlot(s) {
- return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
- }
- function getDefaultStartValue(props2) {
- if (props2.mode === mode.TIME) {
- return "00:00";
- }
- if (props2.mode === mode.DATE) {
- const year = (/* @__PURE__ */ new Date()).getFullYear() - 150;
- switch (props2.fields) {
- case fields.YEAR:
- return year.toString();
- case fields.MONTH:
- return year + "-01";
- default:
- return year + "-01-01";
- }
- }
- return "";
- }
- function getDefaultEndValue(props2) {
- if (props2.mode === mode.TIME) {
- return "23:59";
- }
- if (props2.mode === mode.DATE) {
- const year = (/* @__PURE__ */ new Date()).getFullYear() + 150;
- switch (props2.fields) {
- case fields.YEAR:
- return year.toString();
- case fields.MONTH:
- return year + "-12";
- default:
- return year + "-12-31";
- }
- }
- return "";
- }
- function getDateValueArray(props2, state, valueStr, defaultValue) {
- const splitStr = props2.mode === mode.DATE ? "-" : ":";
- const array = props2.mode === mode.DATE ? state.dateArray : state.timeArray;
- let max;
- if (props2.mode === mode.TIME) {
- max = 2;
- } else {
- switch (props2.fields) {
- case fields.YEAR:
- max = 1;
- break;
- case fields.MONTH:
- max = 2;
- break;
- default:
- max = 3;
- break;
- }
- }
- const inputArray = String(valueStr).split(splitStr);
- let value = [];
- for (let i = 0; i < max; i++) {
- const val = inputArray[i];
- value.push(array[i].indexOf(val));
- }
- if (value.indexOf(-1) >= 0) {
- value = defaultValue ? getDateValueArray(props2, state, defaultValue) : value.map(() => 0);
- }
- return value;
- }
- const mode = {
- SELECTOR: "selector",
- MULTISELECTOR: "multiSelector",
- TIME: "time",
- DATE: "date"
- // 暂不支持城市选择
- // REGION: 'region'
- };
- const fields = {
- YEAR: "year",
- MONTH: "month",
- DAY: "day"
- };
- const selectorType = {
- PICKER: "picker",
- SELECT: "select"
- };
- const props = {
- name: {
- type: String,
- default: ""
- },
- range: {
- type: Array,
- default() {
- return [];
- }
- },
- rangeKey: {
- type: String,
- default: ""
- },
- value: {
- type: [Number, String, Array],
- default: 0
- },
- mode: {
- type: String,
- default: mode.SELECTOR,
- validator(val) {
- return Object.values(mode).includes(val);
- }
- },
- fields: {
- type: String,
- default: ""
- },
- start: {
- type: String,
- default: (props2) => {
- return getDefaultStartValue(props2);
- }
- },
- end: {
- type: String,
- default: (props2) => {
- return getDefaultEndValue(props2);
- }
- },
- disabled: {
- type: [Boolean, String],
- default: false
- },
- selectorType: {
- type: String,
- default: ""
- }
- };
- class UniPickerElement extends UniElement {
- }
- const index$7 = /* @__PURE__ */ defineBuiltInComponent({
- name: "Picker",
- compatConfig: {
- MODE: 3
- },
- props,
- emits: ["change", "cancel", "columnchange"],
- setup(props2, {
- emit: emit2,
- slots
- }) {
- initI18nPickerMsgsOnce();
- const {
- t: t2
- } = useI18n();
- const rootRef = vue.ref(null);
- const pickerRef = vue.ref(null);
- const selectRef = vue.ref(null);
- const inputRef = vue.ref(null);
- const pickerRender = vue.ref(false);
- const {
- state,
- rangeArray
- } = usePickerState(props2);
- const trigger = useCustomEvent(rootRef, emit2);
- const {
- system,
- selectorTypeComputed,
- _show,
- _l10nColumn,
- _l10nItem,
- _input,
- _fixInputPosition,
- _pickerViewChange,
- _cancel,
- _change,
- _resetFormData,
- _getFormData,
- _createTime,
- _createDate,
- _setValueSync
- } = usePickerMethods(props2, state, trigger, rootRef, pickerRef, selectRef, inputRef);
- usePickerWatch(state, _cancel, _change);
- usePickerForm(_resetFormData, _getFormData);
- _createTime();
- _createDate();
- _setValueSync();
- const popup = usePopupStyle(state);
- vue.watchEffect(() => {
- state.isDesktop = popup.isDesktop.value;
- state.popupStyle = popup.popupStyle.value;
- });
- return () => {
- let _slot2;
- const {
- visible,
- contentVisible,
- valueArray,
- popupStyle,
- valueSync
- } = state;
- const {
- rangeKey,
- mode: mode2,
- start,
- end
- } = props2;
- const booleanAttrs = useBooleanAttr(props2, "disabled");
- return vue.createVNode("uni-picker", vue.mergeProps({
- "ref": rootRef
- }, booleanAttrs, {
- "onClick": withWebEvent(_show)
- }), [pickerRender.value ? vue.createVNode("div", {
- "ref": pickerRef,
- "class": ["uni-picker-container", `uni-${mode2}-${selectorTypeComputed.value}`],
- "onWheel": onEventPrevent,
- "onTouchmove": onEventPrevent
- }, [vue.createVNode(vue.Transition, {
- "name": "uni-fade"
- }, {
- default: () => [vue.withDirectives(vue.createVNode("div", {
- "class": "uni-mask uni-picker-mask",
- "onClick": withWebEvent(_cancel),
- "onMousemove": _fixInputPosition
- }, null, 40, ["onClick", "onMousemove"]), [[vue.vShow, visible]])]
- }), !system.value ? vue.createVNode("div", {
- "class": [{
- "uni-picker-toggle": visible
- }, "uni-picker-custom"],
- "style": popupStyle.content
- }, [vue.createVNode("div", {
- "class": "uni-picker-header",
- "onClick": onEventStop
- }, [vue.createVNode("div", {
- "class": "uni-picker-action uni-picker-action-cancel",
- "onClick": withWebEvent(_cancel)
- }, [t2("uni.picker.cancel")], 8, ["onClick"]), vue.createVNode("div", {
- "class": "uni-picker-action uni-picker-action-confirm",
- "onClick": _change
- }, [t2("uni.picker.done")], 8, ["onClick"])], 8, ["onClick"]), contentVisible ? vue.createVNode(PickerView, {
- "value": _l10nColumn(valueArray),
- "class": "uni-picker-content",
- "onChange": _pickerViewChange
- }, _isSlot(_slot2 = vue.renderList(_l10nColumn(rangeArray.value), (rangeItem, index0) => {
- let _slot;
- return vue.createVNode(PickerViewColumn, {
- "key": index0
- }, _isSlot(_slot = vue.renderList(rangeItem, (item, index2) => vue.createVNode("div", {
- "key": index2,
- "class": "uni-picker-item"
- }, [typeof item === "object" ? item[rangeKey] || "" : _l10nItem(item, index0)]))) ? _slot : {
- default: () => [_slot],
- _: 1
- });
- })) ? _slot2 : {
- default: () => [_slot2],
- _: 1
- }, 8, ["value", "onChange"]) : null, vue.createVNode("div", {
- "ref": selectRef,
- "class": "uni-picker-select",
- "onWheel": onEventStop,
- "onTouchmove": onEventStop
- }, [vue.renderList(rangeArray.value[0], (item, index2) => vue.createVNode("div", {
- "key": index2,
- "class": ["uni-picker-item", {
- selected: valueArray[0] === index2
- }],
- "onClick": () => {
- valueArray[0] = index2;
- _change();
- }
- }, [typeof item === "object" ? item[rangeKey] || "" : item], 10, ["onClick"]))], 40, ["onWheel", "onTouchmove"]), vue.createVNode("div", {
- "style": popupStyle.triangle
- }, null, 4)], 6) : null], 40, ["onWheel", "onTouchmove"]) : null, vue.createVNode("div", null, [slots.default && slots.default()]), system.value ? vue.createVNode("div", {
- "class": "uni-picker-system",
- "onMousemove": withWebEvent(_fixInputPosition)
- }, [vue.createVNode("input", {
- "class": ["uni-picker-system_input", system.value],
- "ref": inputRef,
- "value": valueSync,
- "type": mode2,
- "tabindex": "-1",
- "min": start,
- "max": end,
- "onChange": ($event) => {
- _input($event);
- onEventStop($event);
- }
- }, null, 42, ["value", "type", "min", "max", "onChange"])], 40, ["onMousemove"]) : null], 16, ["onClick"]);
- };
- }
- });
- function usePickerState(props2) {
- const state = vue.reactive({
- valueSync: void 0,
- visible: false,
- contentVisible: false,
- popover: null,
- valueChangeSource: "",
- timeArray: [],
- dateArray: [],
- valueArray: [],
- oldValueArray: [],
- isDesktop: false,
- popupStyle: {
- content: {},
- triangle: {}
- }
- });
- const rangeArray = vue.computed(() => {
- let val = props2.range;
- switch (props2.mode) {
- case mode.SELECTOR:
- return [val];
- case mode.MULTISELECTOR:
- return val;
- case mode.TIME:
- return state.timeArray;
- case mode.DATE: {
- const dateArray = state.dateArray;
- switch (props2.fields) {
- case fields.YEAR:
- return [dateArray[0]];
- case fields.MONTH:
- return [dateArray[0], dateArray[1]];
- default:
- return [dateArray[0], dateArray[1], dateArray[2]];
- }
- }
- }
- return [];
- });
- return {
- state,
- rangeArray
- };
- }
- function useIsiPad() {
- const isiPad = vue.ref(false);
- return isiPad;
- }
- function useSystem() {
- const _system = vue.ref("");
- return _system;
- }
- let __contentVisibleDelay;
- function usePickerMethods(props2, state, trigger, rootRef, pickerRef, selectRef, inputRef) {
- const isiPad = useIsiPad();
- const _system = useSystem();
- const selectorTypeComputed = vue.computed(() => {
- const type = props2.selectorType;
- if (Object.values(selectorType).includes(type)) {
- return type;
- }
- return isiPad.value ? selectorType.PICKER : selectorType.SELECT;
- });
- const system = vue.computed(() => {
- if (props2.mode === mode.DATE && !Object.values(fields).includes(props2.fields) && state.isDesktop) {
- return _system.value;
- }
- return "";
- });
- const startArray = vue.computed(() => {
- return getDateValueArray(props2, state, props2.start, getDefaultStartValue(props2));
- });
- const endArray = vue.computed(() => {
- return getDateValueArray(props2, state, props2.end, getDefaultEndValue(props2));
- });
- function _show(event) {
- if (props2.disabled) {
- return;
- }
- state.valueChangeSource = "";
- let $picker = pickerRef.value;
- let _currentTarget = event.currentTarget;
- $picker.remove();
- (document.querySelector("uni-app") || document.body).appendChild($picker);
- $picker.style.display = "block";
- const rect = _currentTarget.getBoundingClientRect();
- state.popover = {
- top: rect.top,
- left: rect.left,
- width: rect.width,
- height: rect.height
- };
- setTimeout(() => {
- state.visible = true;
- }, 20);
- }
- function _getFormData() {
- return {
- value: state.valueSync,
- key: props2.name
- };
- }
- function _resetFormData() {
- switch (props2.mode) {
- case mode.SELECTOR:
- state.valueSync = 0;
- break;
- case mode.MULTISELECTOR:
- state.valueSync = props2.value.map((val) => 0);
- break;
- case mode.DATE:
- case mode.TIME:
- state.valueSync = "";
- break;
- }
- }
- function _createTime() {
- let hours = [];
- let minutes = [];
- for (let i = 0; i < 24; i++) {
- hours.push((i < 10 ? "0" : "") + i);
- }
- for (let i = 0; i < 60; i++) {
- minutes.push((i < 10 ? "0" : "") + i);
- }
- state.timeArray.push(hours, minutes);
- }
- function getYearStartEnd() {
- let year = (/* @__PURE__ */ new Date()).getFullYear();
- let start = year - 150;
- let end = year + 150;
- if (props2.start) {
- const _year = new Date(props2.start).getFullYear();
- if (!isNaN(_year) && _year < start) {
- start = _year;
- }
- }
- if (props2.end) {
- const _year = new Date(props2.end).getFullYear();
- if (!isNaN(_year) && _year > end) {
- end = _year;
- }
- }
- return {
- start,
- end
- };
- }
- function _createDate() {
- let years = [];
- const year = getYearStartEnd();
- for (let i = year.start, end = year.end; i <= end; i++) {
- years.push(String(i));
- }
- let months = [];
- for (let i = 1; i <= 12; i++) {
- months.push((i < 10 ? "0" : "") + i);
- }
- let days = [];
- for (let i = 1; i <= 31; i++) {
- days.push((i < 10 ? "0" : "") + i);
- }
- state.dateArray.push(years, months, days);
- }
- function _getTimeValue(val) {
- return val[0] * 60 + val[1];
- }
- function _getDateValue(val) {
- const DAY = 31;
- return val[0] * DAY * 12 + (val[1] || 0) * DAY + (val[2] || 0);
- }
- function _cloneArray(val1, val2) {
- for (let i = 0; i < val1.length && i < val2.length; i++) {
- val1[i] = val2[i];
- }
- }
- function _setValueSync() {
- let val = props2.value;
- switch (props2.mode) {
- case mode.MULTISELECTOR:
- {
- if (!shared.isArray(val)) {
- val = state.valueArray;
- }
- if (!shared.isArray(state.valueSync)) {
- state.valueSync = [];
- }
- const length = state.valueSync.length = Math.max(val.length, props2.range.length);
- for (let index2 = 0; index2 < length; index2++) {
- const val0 = Number(val[index2]);
- const val1 = Number(state.valueSync[index2]);
- const val2 = isNaN(val0) ? isNaN(val1) ? 0 : val1 : val0;
- const maxVal = props2.range[index2] ? props2.range[index2].length - 1 : 0;
- state.valueSync.splice(index2, 1, val2 < 0 || val2 > maxVal ? 0 : val2);
- }
- }
- break;
- case mode.TIME:
- case mode.DATE:
- state.valueSync = String(val);
- break;
- default: {
- const valueSync = Number(val);
- state.valueSync = valueSync < 0 ? 0 : valueSync;
- break;
- }
- }
- }
- function _setValueArray() {
- let val = state.valueSync;
- let valueArray;
- switch (props2.mode) {
- case mode.MULTISELECTOR:
- valueArray = [...val];
- break;
- case mode.TIME:
- valueArray = getDateValueArray(props2, state, val, uniShared.formatDateTime({
- mode: mode.TIME
- }));
- break;
- case mode.DATE:
- valueArray = getDateValueArray(props2, state, val, uniShared.formatDateTime({
- mode: mode.DATE
- }));
- break;
- default:
- valueArray = [val];
- break;
- }
- state.oldValueArray = [...valueArray];
- state.valueArray = [...valueArray];
- }
- function _getValue() {
- let val = state.valueArray;
- switch (props2.mode) {
- case mode.SELECTOR:
- return val[0];
- case mode.MULTISELECTOR:
- return val.map((val2) => val2);
- case mode.TIME:
- return state.valueArray.map((val2, i) => state.timeArray[i][val2]).join(":");
- case mode.DATE:
- return state.valueArray.map((val2, i) => state.dateArray[i][val2]).join("-");
- }
- }
- function _change() {
- _close();
- state.valueChangeSource = "click";
- const value = _getValue();
- state.valueSync = shared.isArray(value) ? value.map((val) => val) : value;
- trigger("change", {}, {
- value
- });
- }
- function _cancel($event) {
- if (system.value === "firefox" && $event) {
- const {
- top,
- left,
- width,
- height
- } = state.popover;
- const {
- pageX,
- pageY
- } = $event;
- if (pageX > left && pageX < left + width && pageY > top && pageY < top + height) {
- return;
- }
- }
- _close();
- trigger("cancel", {}, {});
- }
- function _close() {
- state.visible = false;
- setTimeout(() => {
- let $picker = pickerRef.value;
- $picker.remove();
- rootRef.value.prepend($picker);
- $picker.style.display = "none";
- }, 260);
- }
- function _select() {
- if (props2.mode === mode.SELECTOR && selectorTypeComputed.value === selectorType.SELECT) {
- selectRef.value.scrollTop = state.valueArray[0] * 34;
- }
- }
- function _input($event) {
- const EventTarget = $event.target;
- state.valueSync = EventTarget.value;
- vue.nextTick(() => {
- _change();
- });
- }
- function _fixInputPosition($event) {
- if (system.value === "chrome") {
- const rect = rootRef.value.getBoundingClientRect();
- const fontSize = 32;
- inputRef.value.style.left = `${$event.clientX - rect.left - fontSize * 1.5}px`;
- inputRef.value.style.top = `${$event.clientY - rect.top - fontSize * 0.5}px`;
- }
- }
- function _pickerViewChange(event) {
- state.valueArray = _l10nColumn(event.detail.value, true);
- }
- function _l10nColumn(array, normalize) {
- const {
- getLocale: getLocale2
- } = useI18n();
- if (props2.mode === mode.DATE) {
- const locale = getLocale2();
- if (!locale.startsWith("zh")) {
- switch (props2.fields) {
- case fields.YEAR:
- return array;
- case fields.MONTH:
- return [array[1], array[0]];
- default:
- switch (locale) {
- case "es":
- case "fr":
- return [array[2], array[1], array[0]];
- default:
- return normalize ? [array[2], array[0], array[1]] : [array[1], array[2], array[0]];
- }
- }
- }
- }
- return array;
- }
- function _l10nItem(item, index2) {
- const {
- getLocale: getLocale2
- } = useI18n();
- if (props2.mode === mode.DATE) {
- const locale = getLocale2();
- if (locale.startsWith("zh")) {
- const array = ["年", "月", "日"];
- return item + array[index2];
- } else if (props2.fields !== fields.YEAR && index2 === (props2.fields !== fields.MONTH && (locale === "es" || locale === "fr") ? 1 : 0)) {
- let array;
- switch (locale) {
- case "es":
- array = ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"];
- break;
- case "fr":
- array = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"];
- break;
- default:
- array = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
- break;
- }
- return array[Number(item) - 1];
- }
- }
- return item;
- }
- vue.watch(() => state.visible, (val) => {
- if (val) {
- clearTimeout(__contentVisibleDelay);
- state.contentVisible = val;
- _select();
- } else {
- __contentVisibleDelay = setTimeout(() => {
- state.contentVisible = val;
- }, 300);
- }
- });
- vue.watch([() => props2.mode, () => props2.value, () => props2.range], _setValueSync, {
- deep: true
- });
- vue.watch(() => state.valueSync, _setValueArray, {
- deep: true
- });
- vue.watch(() => state.valueArray, (val) => {
- if (props2.mode === mode.TIME || props2.mode === mode.DATE) {
- const getValue = props2.mode === mode.TIME ? _getTimeValue : _getDateValue;
- const valueArray = state.valueArray;
- const _startArray = startArray.value;
- const _endArray = endArray.value;
- if (props2.mode === mode.DATE) {
- const dateArray = state.dateArray;
- const max = dateArray[2].length;
- const day = Number(dateArray[2][valueArray[2]]) || 1;
- const realDay = (/* @__PURE__ */ new Date(`${dateArray[0][valueArray[0]]}/${dateArray[1][valueArray[1]]}/${day}`)).getDate();
- if (realDay < day) {
- valueArray[2] -= realDay + max - day;
- }
- }
- if (getValue(valueArray) < getValue(_startArray)) {
- _cloneArray(valueArray, _startArray);
- } else if (getValue(valueArray) > getValue(_endArray)) {
- _cloneArray(valueArray, _endArray);
- }
- }
- val.forEach((value, column) => {
- if (value !== state.oldValueArray[column]) {
- state.oldValueArray[column] = value;
- if (props2.mode === mode.MULTISELECTOR) {
- trigger("columnchange", {}, {
- column,
- value
- });
- }
- }
- });
- });
- return {
- selectorTypeComputed,
- system,
- _show,
- _cancel,
- _change,
- _l10nColumn,
- _l10nItem,
- _input,
- _resetFormData,
- _getFormData,
- _createTime,
- _createDate,
- _setValueSync,
- _fixInputPosition,
- _pickerViewChange
- };
- }
- function usePickerWatch(state, _cancel, _change) {
- const {
- key,
- disable
- } = useKeyboard();
- vue.watchEffect(() => {
- disable.value = !state.visible;
- });
- vue.watch(key, (value) => {
- if (value === "esc") {
- _cancel();
- } else if (value === "enter") {
- _change();
- }
- });
- }
- function usePickerForm(_resetFormData, _getFormData) {
- const uniForm = vue.inject(uniFormKey, false);
- if (uniForm) {
- const field = {
- reset: _resetFormData,
- submit: () => {
- const data = ["", null];
- const {
- key,
- value
- } = _getFormData();
- if (key !== "") {
- data[0] = key;
- data[1] = value;
- }
- return data;
- }
- };
- uniForm.addField(field);
- }
- }
- const index$6 = /* @__PURE__ */ defineUnsupportedComponent("ad");
- const index$5 = /* @__PURE__ */ defineUnsupportedComponent("ad-content-page");
- const index$4 = /* @__PURE__ */ defineUnsupportedComponent("ad-draw");
- const index$3 = /* @__PURE__ */ defineUnsupportedComponent("camera");
- const index$2 = /* @__PURE__ */ defineUnsupportedComponent("live-player");
- const index$1 = /* @__PURE__ */ defineUnsupportedComponent("live-pusher");
- const UniViewJSBridge$1 = /* @__PURE__ */ shared.extend(ViewJSBridge, {
- publishHandler(event, args, pageId) {
- UniServiceJSBridge.subscribeHandler(event, args, pageId);
- }
- });
- const request = /* @__PURE__ */ defineTaskApi(
- API_REQUEST,
- ({
- url,
- data,
- header = {},
- method,
- dataType: dataType2,
- responseType,
- withCredentials,
- timeout = __uniConfig.networkTimeout.request
- }, { resolve, reject }) => {
- {
- timeout = timeout == null ? __uniConfig.networkTimeout.request : timeout;
- }
- let body = null;
- const contentType = normalizeContentType(header);
- if (method !== "GET") {
- if (shared.isString(data) || data instanceof ArrayBuffer) {
- body = data;
- } else {
- if (contentType === "json") {
- try {
- body = JSON.stringify(data);
- } catch (error) {
- body = data.toString();
- }
- } else if (contentType === "urlencoded") {
- const bodyArray = [];
- for (const key in data) {
- if (shared.hasOwn(data, key)) {
- bodyArray.push(
- encodeURIComponent(key) + "=" + encodeURIComponent(data[key])
- );
- }
- }
- body = bodyArray.join("&");
- } else {
- body = data.toString();
- }
- }
- }
- const xhr = new XMLHttpRequest();
- const requestTask = new RequestTask(xhr);
- xhr.open(method, url);
- for (const key in header) {
- if (shared.hasOwn(header, key)) {
- xhr.setRequestHeader(key, header[key]);
- }
- }
- const timer = setTimeout(function() {
- xhr.onload = xhr.onabort = xhr.onerror = null;
- requestTask.abort();
- reject("timeout", { errCode: 5 });
- }, timeout);
- xhr.responseType = responseType;
- xhr.onload = function() {
- clearTimeout(timer);
- const statusCode = xhr.status;
- let res = responseType === "text" ? xhr.responseText : xhr.response;
- if (responseType === "text" && dataType2 === "json") {
- try {
- res = new globalThis.UTSJSONObject(JSON.parse(res));
- } catch (error) {
- }
- }
- resolve({
- data: res,
- statusCode,
- header: parseHeaders(xhr.getAllResponseHeaders()),
- cookies: []
- });
- };
- xhr.onabort = function() {
- clearTimeout(timer);
- reject("abort", { errCode: 600003 });
- };
- xhr.onerror = function() {
- clearTimeout(timer);
- reject(void 0, { errCode: 5 });
- };
- xhr.withCredentials = withCredentials;
- xhr.send(body);
- return requestTask;
- },
- RequestProtocol,
- RequestOptions
- );
- function normalizeContentType(header) {
- const name = Object.keys(header).find(
- (name2) => name2.toLowerCase() === "content-type"
- );
- if (!name) {
- return;
- }
- const contentType = header[name];
- if (name !== "Content-Type") {
- header["Content-Type"] = header[name];
- delete header[name];
- }
- if (contentType.indexOf("application/json") === 0) {
- return "json";
- } else if (contentType.indexOf("application/x-www-form-urlencoded") === 0) {
- return "urlencoded";
- }
- return "string";
- }
- class RequestTask {
- constructor(xhr) {
- this._xhr = xhr;
- }
- abort() {
- if (this._xhr) {
- this._xhr.abort();
- delete this._xhr;
- }
- }
- onHeadersReceived(callback) {
- throw new Error("Method not implemented.");
- }
- offHeadersReceived(callback) {
- throw new Error("Method not implemented.");
- }
- }
- function parseHeaders(headers) {
- const headersObject = {};
- headers.split(uniShared.LINEFEED).forEach((header) => {
- const find = header.match(/(\S+\s*):\s*(.*)/);
- if (!find || find.length !== 3) {
- return;
- }
- headersObject[find[1]] = find[2];
- });
- return headersObject;
- }
- const STORAGE_KEYS = "uni-storage-keys";
- function parseValue(value) {
- const types = ["object", "string", "number", "boolean", "undefined"];
- try {
- const object = shared.isString(value) ? JSON.parse(value) : value;
- const type = object.type;
- if (types.indexOf(type) >= 0) {
- const keys = Object.keys(object);
- if (keys.length === 2 && "data" in object) {
- if (typeof object.data === type) {
- if (type === "object" && !Array.isArray(object.data)) {
- return new globalThis.UTSJSONObject(object.data);
- }
- return object.data;
- }
- if (type === "object" && /^\d{4}-\d{2}-\d{2}T\d{2}\:\d{2}\:\d{2}\.\d{3}Z$/.test(object.data)) {
- return new Date(object.data);
- }
- } else if (keys.length === 1) {
- return "";
- }
- }
- } catch (error) {
- }
- }
- const setStorageSync = /* @__PURE__ */ defineSyncApi(
- API_SET_STORAGE_SYNC,
- (key, data) => {
- const type = typeof data;
- const value = type === "string" ? data : JSON.stringify({
- type,
- data
- });
- localStorage.setItem(key, value);
- },
- SetStorageSyncProtocol
- );
- const setStorage = /* @__PURE__ */ defineAsyncApi(
- API_SET_STORAGE,
- ({ key, data }, { resolve, reject }) => {
- try {
- setStorageSync(key, data);
- resolve();
- } catch (error) {
- reject(error.message);
- }
- },
- SetStorageProtocol
- );
- function getStorageOrigin(key) {
- const value = localStorage && localStorage.getItem(key);
- if (!shared.isString(value)) {
- throw new Error("data not found");
- }
- let data = value;
- try {
- const object = JSON.parse(value);
- const result = parseValue(object);
- if (result !== void 0) {
- data = result;
- }
- } catch (error) {
- }
- return data;
- }
- const getStorageSync = /* @__PURE__ */ defineSyncApi(
- API_GET_STORAGE_SYNC,
- (key) => {
- try {
- return getStorageOrigin(key);
- } catch (error) {
- return "";
- }
- },
- GetStorageSyncProtocol
- );
- const getStorage = /* @__PURE__ */ defineAsyncApi(
- API_GET_STORAGE,
- ({ key }, { resolve, reject }) => {
- try {
- const data = getStorageOrigin(key);
- resolve({
- data
- });
- } catch (error) {
- reject(error.message);
- }
- },
- GetStorageProtocol
- );
- const removeStorageSync = /* @__PURE__ */ defineSyncApi(
- API_REMOVE_STORAGE,
- (key) => {
- if (localStorage) {
- localStorage.removeItem(key);
- }
- },
- RemoveStorageSyncProtocol
- );
- const removeStorage = /* @__PURE__ */ defineAsyncApi(
- API_REMOVE_STORAGE,
- ({ key }, { resolve }) => {
- removeStorageSync(key);
- resolve();
- },
- RemoveStorageProtocol
- );
- const clearStorageSync = /* @__PURE__ */ defineSyncApi(
- "clearStorageSync",
- () => {
- if (localStorage) {
- localStorage.clear();
- }
- }
- );
- const clearStorage = /* @__PURE__ */ defineAsyncApi(
- "clearStorage",
- (_, { resolve }) => {
- clearStorageSync();
- resolve();
- }
- );
- const getStorageInfoSync = /* @__PURE__ */ defineSyncApi(
- "getStorageInfoSync",
- () => {
- const length = localStorage && localStorage.length || 0;
- const keys = [];
- let currentSize = 0;
- for (let index2 = 0; index2 < length; index2++) {
- const key = localStorage.key(index2);
- const value = localStorage.getItem(key) || "";
- currentSize += key.length + value.length;
- if (key !== STORAGE_KEYS) {
- keys.push(key);
- }
- }
- return {
- keys,
- currentSize: Math.ceil(currentSize * 2 / 1024),
- limitSize: Number.MAX_VALUE
- };
- }
- );
- const getStorageInfo = /* @__PURE__ */ defineAsyncApi(
- "getStorageInfo",
- (_, { resolve }) => {
- resolve(getStorageInfoSync());
- }
- );
- let browserInfo;
- function initBrowserInfo() {
- {
- return browserInfo = {};
- }
- }
- const getDeviceInfo = /* @__PURE__ */ defineSyncApi(
- "getDeviceInfo",
- () => {
- initBrowserInfo();
- const {
- deviceBrand,
- deviceModel,
- brand,
- model,
- platform,
- system,
- deviceOrientation,
- deviceType
- } = browserInfo;
- return {
- brand,
- deviceBrand,
- deviceModel,
- devicePixelRatio: 1,
- deviceId: Date.now() + "" + Math.floor(Math.random() * 1e7),
- deviceOrientation,
- deviceType,
- model,
- platform,
- system
- };
- }
- );
- const getAppBaseInfo = /* @__PURE__ */ defineSyncApi(
- "getAppBaseInfo",
- () => {
- initBrowserInfo();
- const { theme, language, browserName, browserVersion } = browserInfo;
- return {
- appId: __uniConfig.appId,
- appName: __uniConfig.appName,
- appVersion: __uniConfig.appVersion,
- appVersionCode: __uniConfig.appVersionCode,
- appLanguage: getLocale ? getLocale() : language,
- enableDebug: false,
- hostSDKVersion: void 0,
- hostPackageName: void 0,
- hostFontSizeSetting: void 0,
- hostName: browserName,
- hostVersion: browserVersion,
- hostTheme: theme,
- hostLanguage: language,
- language,
- SDKVersion: "",
- theme,
- version: ""
- };
- }
- );
- const getSystemInfoSync = /* @__PURE__ */ defineSyncApi(
- "getSystemInfoSync",
- () => {
- {
- return {
- deviceId: Date.now() + "" + Math.floor(Math.random() * 1e7),
- platform: "nodejs"
- };
- }
- }
- );
- function updateDocumentTitle(title) {
- {
- const ssrContext = getApp$1().$.appContext.provides[vue.ssrContextKey];
- if (ssrContext) {
- ssrContext[uniShared.UNI_SSR_TITLE] = title;
- }
- }
- UniServiceJSBridge.emit(uniShared.ON_NAVIGATION_BAR_CHANGE, { titleText: title });
- }
- function useDocumentTitle(pageMeta) {
- function update() {
- updateDocumentTitle(pageMeta.navigationBar.titleText);
- }
- vue.watchEffect(update);
- }
- function setNavigationBar(pageMeta, type, args, resolve, reject) {
- if (!pageMeta) {
- return reject("page not found");
- }
- const { navigationBar } = pageMeta;
- switch (type) {
- case API_SET_NAVIGATION_BAR_COLOR:
- const { frontColor, backgroundColor, animation: animation2 } = args;
- const { duration, timingFunc } = animation2;
- if (frontColor) {
- navigationBar.titleColor = frontColor === "#000000" ? "#000000" : "#ffffff";
- }
- if (backgroundColor) {
- navigationBar.backgroundColor = backgroundColor;
- }
- navigationBar.duration = duration + "ms";
- navigationBar.timingFunc = timingFunc;
- break;
- case API_SHOW_NAVIGATION_BAR_LOADING:
- navigationBar.loading = true;
- break;
- case API_HIDE_NAVIGATION_BAR_LOADING:
- navigationBar.loading = false;
- break;
- case API_SET_NAVIGATION_BAR_TITLE:
- const { title } = args;
- navigationBar.titleText = title;
- {
- updateDocumentTitle(args.title);
- }
- break;
- }
- resolve();
- }
- const setNavigationBarTitle = /* @__PURE__ */ defineAsyncApi(
- API_SET_NAVIGATION_BAR_TITLE,
- (args, { resolve, reject }) => {
- setNavigationBar(
- getCurrentPageMeta(),
- API_SET_NAVIGATION_BAR_TITLE,
- args,
- resolve,
- reject
- );
- },
- SetNavigationBarTitleProtocol
- );
- require("localstorage-polyfill");
- global.XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
- const api = /* @__PURE__ */ Object.defineProperty({
- __proto__: null,
- clearStorage,
- clearStorageSync,
- getAppBaseInfo,
- getDeviceInfo,
- getStorage,
- getStorageInfo,
- getStorageInfoSync,
- getStorageSync,
- getSystemInfoSync,
- removeStorage,
- removeStorageSync,
- request,
- setNavigationBarTitle,
- setStorage,
- setStorageSync
- }, Symbol.toStringTag, { value: "Module" });
- const uni$1 = api;
- const UniServiceJSBridge$1 = /* @__PURE__ */ shared.extend(ServiceJSBridge, {
- publishHandler(event, args, pageId) {
- UniViewJSBridge.subscribeHandler(event, args, pageId);
- }
- });
- const _middleButton = {
- width: "50px",
- height: "50px",
- iconWidth: "24px"
- };
- const TabBar = /* @__PURE__ */ defineSystemComponent({
- name: "TabBar",
- setup() {
- const visibleList = vue.ref([]);
- const _tabBar = useTabBar();
- const tabBar2 = useTheme(_tabBar, () => {
- const tabBarStyle = parseTheme(_tabBar);
- tabBar2.backgroundColor = tabBarStyle.backgroundColor;
- tabBar2.borderStyle = tabBarStyle.borderStyle;
- tabBar2.color = tabBarStyle.color;
- tabBar2.selectedColor = tabBarStyle.selectedColor;
- tabBar2.blurEffect = tabBarStyle.blurEffect;
- if (tabBarStyle.list && tabBarStyle.list.length) {
- tabBarStyle.list.forEach((item, index2) => {
- tabBar2.list[index2].iconPath = item.iconPath;
- tabBar2.list[index2].selectedIconPath = item.selectedIconPath;
- });
- }
- });
- useVisibleList(tabBar2, visibleList);
- useTabBarCssVar(tabBar2);
- const onSwitchTab = useSwitchTab(vueRouter.useRoute(), tabBar2, visibleList);
- const {
- style,
- borderStyle,
- placeholderStyle
- } = useTabBarStyle(tabBar2);
- return () => {
- const tabBarItemsTsx = createTabBarItemsTsx(tabBar2, onSwitchTab, visibleList);
- return vue.createVNode("uni-tabbar", {
- "class": "uni-tabbar-" + tabBar2.position
- }, [vue.createVNode("div", {
- "class": "uni-tabbar",
- "style": style.value
- }, [vue.createVNode("div", {
- "class": "uni-tabbar-border",
- "style": borderStyle.value
- }, null, 4), tabBarItemsTsx], 4), vue.createVNode("div", {
- "class": "uni-placeholder",
- "style": placeholderStyle.value
- }, null, 4)], 2);
- };
- }
- });
- function useTabBarCssVar(tabBar2) {
- vue.watch(() => tabBar2.shown, (value) => {
- updatePageCssVar({
- "--window-bottom": normalizeWindowBottom(value ? parseInt(tabBar2.height) : 0)
- });
- });
- }
- function useVisibleList(tabBar2, visibleList) {
- const internalMidButton = vue.ref(shared.extend({
- type: "midButton"
- }, tabBar2.midButton));
- function setVisibleList() {
- let tempList = [];
- tempList = tabBar2.list.filter((item) => item.visible !== false);
- if (__UNI_FEATURE_TABBAR_MIDBUTTON__ && tabBar2.midButton) {
- internalMidButton.value = shared.extend({}, _middleButton, internalMidButton.value, tabBar2.midButton);
- tempList = tempList.filter((item) => !isMidButton(item));
- if (tempList.length % 2 === 0) {
- tempList.splice(Math.floor(tempList.length / 2), 0, internalMidButton.value);
- }
- }
- visibleList.value = tempList;
- }
- vue.watchEffect(setVisibleList);
- }
- function useSwitchTab(route, tabBar2, visibleList) {
- vue.watchEffect(() => {
- const meta = route.meta;
- if (meta.isTabBar) {
- const pagePath = meta.route;
- const index2 = visibleList.value.findIndex((item) => item.pagePath === pagePath);
- tabBar2.selectedIndex = index2;
- }
- });
- return (tabBarItem, index2) => {
- const {
- type
- } = tabBarItem;
- return () => {
- if (__UNI_FEATURE_TABBAR_MIDBUTTON__ && type === "midButton") {
- return UniServiceJSBridge.invokeOnCallback(API_ON_TAB_BAR_MID_BUTTON_TAP);
- }
- const {
- pagePath,
- text
- } = tabBarItem;
- let url = uniShared.addLeadingSlash(pagePath);
- if (url === __uniRoutes[0].alias) {
- url = "/";
- }
- if (route.path !== url) {
- uni.switchTab({
- from: "tabBar",
- url,
- tabBarText: text
- });
- } else {
- invokeHook("onTabItemTap", {
- index: index2,
- text,
- pagePath
- });
- }
- };
- };
- }
- const DEFAULT_BG_COLOR = "#f7f7fa";
- const BLUR_EFFECT_COLOR_DARK = "rgb(0, 0, 0, 0.8)";
- const BLUR_EFFECT_COLOR_LIGHT = "rgb(250, 250, 250, 0.8)";
- const BLUR_EFFECT_COLORS = {
- dark: BLUR_EFFECT_COLOR_DARK,
- light: BLUR_EFFECT_COLOR_LIGHT,
- extralight: BLUR_EFFECT_COLOR_LIGHT
- };
- const BORDER_COLORS = {
- white: "rgba(255, 255, 255, 0.33)",
- black: "rgba(0, 0, 0, 0.33)"
- };
- function useTabBarStyle(tabBar2) {
- const style = vue.computed(() => {
- let backgroundColor = tabBar2.backgroundColor;
- const blurEffect = tabBar2.blurEffect;
- if (!backgroundColor) {
- if (blurEffect && blurEffect !== "none") {
- backgroundColor = BLUR_EFFECT_COLORS[blurEffect];
- }
- }
- return {
- backgroundColor: backgroundColor || DEFAULT_BG_COLOR,
- backdropFilter: blurEffect !== "none" ? "blur(10px)" : blurEffect
- };
- });
- const borderStyle = vue.computed(() => {
- const {
- borderStyle: borderStyle2
- } = tabBar2;
- return {
- backgroundColor: BORDER_COLORS[borderStyle2] || borderStyle2
- };
- });
- const placeholderStyle = vue.computed(() => {
- return {
- height: tabBar2.height
- };
- });
- return {
- style,
- borderStyle,
- placeholderStyle
- };
- }
- function isMidButton(item) {
- return item.type === "midButton";
- }
- function createTabBarItemsTsx(tabBar2, onSwitchTab, visibleList) {
- const {
- selectedIndex,
- selectedColor,
- color
- } = tabBar2;
- return visibleList.value.map((item, index2) => {
- const selected = selectedIndex === index2;
- const textColor = selected ? selectedColor : color;
- const iconPath = (selected ? item.selectedIconPath || item.iconPath : item.iconPath) || "";
- const iconfontText = item.iconfont ? selected ? item.iconfont.selectedText || item.iconfont.text : item.iconfont.text : void 0;
- const iconfontColor = item.iconfont ? selected ? item.iconfont.selectedColor || item.iconfont.color : item.iconfont.color : void 0;
- if (!__UNI_FEATURE_TABBAR_MIDBUTTON__) {
- return createTabBarItemTsx(textColor, iconPath, iconfontText, iconfontColor, item, tabBar2, index2, onSwitchTab);
- }
- return isMidButton(item) ? createTabBarMidButtonTsx(textColor, iconPath, iconfontText, iconfontColor, item, tabBar2, index2, onSwitchTab) : createTabBarItemTsx(textColor, iconPath, iconfontText, iconfontColor, item, tabBar2, index2, onSwitchTab);
- });
- }
- function createTabBarItemTsx(color, iconPath, iconfontText, iconfontColor, tabBarItem, tabBar2, index2, onSwitchTab) {
- return vue.createVNode("div", {
- "key": index2,
- "class": "uni-tabbar__item",
- "onClick": onSwitchTab(tabBarItem, index2)
- }, [createTabBarItemBdTsx(color, iconPath || "", iconfontText, iconfontColor, tabBarItem, tabBar2)], 8, ["onClick"]);
- }
- function createTabBarItemBdTsx(color, iconPath, iconfontText, iconfontColor, tabBarItem, tabBar2) {
- const {
- height
- } = tabBar2;
- return vue.createVNode("div", {
- "class": "uni-tabbar__bd",
- "style": {
- height
- }
- }, [iconfontText ? createTabBarItemIconfontTsx(iconfontText, iconfontColor || BLUR_EFFECT_COLOR_DARK, tabBarItem, tabBar2) : iconPath && createTabBarItemIconTsx(iconPath, tabBarItem, tabBar2), tabBarItem.text && createTabBarItemTextTsx(color, tabBarItem, tabBar2), tabBarItem.redDot && createTabBarItemRedDotTsx(tabBarItem.badge)], 4);
- }
- function createTabBarItemIconTsx(iconPath, tabBarItem, tabBar2) {
- const {
- type,
- text
- } = tabBarItem;
- const {
- iconWidth
- } = tabBar2;
- const clazz2 = "uni-tabbar__icon" + (text ? " uni-tabbar__icon__diff" : "");
- const style = {
- width: iconWidth,
- height: iconWidth
- };
- return vue.createVNode("div", {
- "class": clazz2,
- "style": style
- }, [type !== "midButton" && vue.createVNode("img", {
- "src": getRealPath(iconPath)
- }, null, 8, ["src"])], 6);
- }
- function createTabBarItemIconfontTsx(iconfontText, iconfontColor, tabBarItem, tabBar2) {
- var _a;
- const {
- type,
- text
- } = tabBarItem;
- const {
- iconWidth
- } = tabBar2;
- const clazz2 = "uni-tabbar__icon" + (text ? " uni-tabbar__icon__diff" : "");
- const style = {
- width: iconWidth,
- height: iconWidth
- };
- const iconfontStyle = {
- fontSize: ((_a = tabBarItem.iconfont) == null ? void 0 : _a.fontSize) || iconWidth,
- color: iconfontColor
- };
- return vue.createVNode("div", {
- "class": clazz2,
- "style": style
- }, [type !== "midButton" && vue.createVNode("div", {
- "class": "uni-tabbar__iconfont",
- "style": iconfontStyle
- }, [iconfontText], 4)], 6);
- }
- function createTabBarItemTextTsx(color, tabBarItem, tabBar2) {
- const {
- iconPath,
- text
- } = tabBarItem;
- const {
- fontSize,
- spacing
- } = tabBar2;
- const style = {
- color,
- fontSize,
- lineHeight: !iconPath ? 1.8 : "normal",
- marginTop: !iconPath ? "inherit" : spacing
- };
- return vue.createVNode("div", {
- "class": "uni-tabbar__label",
- "style": style
- }, [text], 4);
- }
- function createTabBarItemRedDotTsx(badge) {
- const clazz2 = "uni-tabbar__reddot" + (badge ? " uni-tabbar__badge" : "");
- return vue.createVNode("div", {
- "class": clazz2
- }, [badge], 2);
- }
- function createTabBarMidButtonTsx(color, iconPath, iconfontText, iconfontColor, midButton, tabBar2, index2, onSwitchTab) {
- const {
- width,
- height,
- backgroundImage,
- iconWidth
- } = midButton;
- return vue.createVNode("div", {
- "key": "midButton",
- "class": "uni-tabbar__item",
- "style": {
- flex: "0 0 " + width,
- position: "relative"
- },
- "onClick": onSwitchTab(midButton, index2)
- }, [vue.createVNode("div", {
- "class": "uni-tabbar__mid",
- "style": {
- width,
- height,
- backgroundImage: backgroundImage ? "url('" + getRealPath(backgroundImage) + "')" : "none"
- }
- }, [iconPath && vue.createVNode("img", {
- "style": {
- width: iconWidth,
- height: iconWidth
- },
- "src": getRealPath(iconPath)
- }, null, 12, ["src"])], 4), createTabBarItemBdTsx(color, iconPath, iconfontText, iconfontColor, midButton, tabBar2)], 12, ["onClick"]);
- }
- const LayoutComponent = /* @__PURE__ */ defineSystemComponent({
- name: "Layout",
- setup(_props, {
- emit: emit2
- }) {
- const rootRef = vue.ref(null);
- const keepAliveRoute = __UNI_FEATURE_PAGES__ && useKeepAliveRoute();
- const {
- layoutState,
- windowState
- } = useState();
- useMaxWidth(layoutState, rootRef);
- const topWindow = __UNI_FEATURE_TOPWINDOW__ && useTopWindow(layoutState);
- const leftWindow = __UNI_FEATURE_LEFTWINDOW__ && useLeftWindow(layoutState);
- const rightWindow = __UNI_FEATURE_RIGHTWINDOW__ && useRightWindow(layoutState);
- const showTabBar = __UNI_FEATURE_TABBAR__ && useShowTabBar();
- const clazz2 = useAppClass(showTabBar);
- return () => {
- const layoutTsx = createLayoutTsx(keepAliveRoute, layoutState, windowState, topWindow, leftWindow, rightWindow);
- const tabBarTsx = __UNI_FEATURE_TABBAR__ && createTabBarTsx(showTabBar);
- return vue.createVNode("uni-app", {
- "ref": rootRef,
- "class": clazz2.value
- }, [layoutTsx, tabBarTsx], 2);
- };
- }
- });
- function useAppClass(showTabBar) {
- const showMaxWidth = vue.ref(false);
- return vue.computed(() => {
- return {
- "uni-app--showtabbar": showTabBar && showTabBar.value,
- "uni-app--maxwidth": showMaxWidth.value
- };
- });
- }
- function initMediaQuery(minWidth, callback) {
- {
- return false;
- }
- }
- function useMaxWidth(layoutState, rootRef) {
- const route = usePageRoute();
- function checkMaxWidth() {
- const windowWidth = document.body.clientWidth;
- const pages = getCurrentPages();
- let meta = {};
- if (pages.length > 0) {
- const curPage = pages[pages.length - 1];
- meta = curPage.$page.meta;
- } else {
- const routeOptions = getRouteOptions(route.path, true);
- if (routeOptions) {
- meta = routeOptions.meta;
- }
- }
- const maxWidth = parseInt(String((shared.hasOwn(meta, "maxWidth") ? meta.maxWidth : __uniConfig.globalStyle.maxWidth) || Number.MAX_SAFE_INTEGER));
- let showMaxWidth = false;
- if (windowWidth > maxWidth) {
- showMaxWidth = true;
- } else {
- showMaxWidth = false;
- }
- if (showMaxWidth && maxWidth) {
- layoutState.marginWidth = (windowWidth - maxWidth) / 2;
- vue.nextTick(() => {
- const rootEl = rootRef.value;
- if (rootEl) {
- rootEl.setAttribute("style", "max-width:" + maxWidth + "px;margin:0 auto;");
- }
- });
- } else {
- layoutState.marginWidth = 0;
- vue.nextTick(() => {
- const rootEl = rootRef.value;
- if (rootEl) {
- rootEl.removeAttribute("style");
- }
- });
- }
- }
- vue.watch([() => route.path], checkMaxWidth);
- }
- function useState() {
- const route = usePageRoute();
- if (!__UNI_FEATURE_RESPONSIVE__) {
- const layoutState2 = vue.reactive({
- marginWidth: 0,
- leftWindowWidth: 0,
- rightWindowWidth: 0
- });
- vue.watch(() => layoutState2.marginWidth, (value) => updateCssVar({
- "--window-margin": value + "px"
- }));
- vue.watch(() => layoutState2.leftWindowWidth + layoutState2.marginWidth, (value) => {
- updateCssVar({
- "--window-left": value + "px"
- });
- });
- vue.watch(() => layoutState2.rightWindowWidth + layoutState2.marginWidth, (value) => {
- updateCssVar({
- "--window-right": value + "px"
- });
- });
- return {
- layoutState: layoutState2,
- windowState: vue.computed(() => ({}))
- };
- }
- const topWindowMediaQuery = vue.ref(false);
- const leftWindowMediaQuery = vue.ref(false);
- const rightWindowMediaQuery = vue.ref(false);
- const showTopWindow = vue.computed(() => __UNI_FEATURE_TOPWINDOW__ && route.meta.topWindow !== false && topWindowMediaQuery.value);
- const showLeftWindow = vue.computed(() => __UNI_FEATURE_LEFTWINDOW__ && route.meta.leftWindow !== false && leftWindowMediaQuery.value);
- const showRightWindow = vue.computed(() => __UNI_FEATURE_RIGHTWINDOW__ && route.meta.rightWindow !== false && rightWindowMediaQuery.value);
- const layoutState = vue.reactive({
- topWindowMediaQuery,
- showTopWindow,
- apiShowTopWindow: false,
- leftWindowMediaQuery,
- showLeftWindow,
- apiShowLeftWindow: false,
- rightWindowMediaQuery,
- showRightWindow,
- apiShowRightWindow: false,
- topWindowHeight: 0,
- marginWidth: 0,
- leftWindowWidth: 0,
- rightWindowWidth: 0,
- navigationBarTitleText: "",
- topWindowStyle: {},
- leftWindowStyle: {},
- rightWindowStyle: {}
- });
- const props2 = ["topWindow", "leftWindow", "rightWindow"];
- props2.forEach((prop) => {
- var _a;
- const matchMedia = (_a = __uniConfig[prop]) == null ? void 0 : _a.matchMedia;
- if (matchMedia && shared.hasOwn(matchMedia, "minWidth")) {
- matchMedia.minWidth;
- }
- const matches = initMediaQuery();
- layoutState[`${prop}MediaQuery`] = matches;
- });
- vue.watch(() => layoutState.topWindowHeight, (value) => updateCssVar({
- "--top-window-height": value + "px"
- }));
- vue.watch(() => layoutState.marginWidth, (value) => updateCssVar({
- "--window-margin": value + "px"
- }));
- vue.watch(() => layoutState.leftWindowWidth + layoutState.marginWidth, (value) => {
- updateCssVar({
- "--window-left": value + "px"
- });
- });
- vue.watch(() => layoutState.rightWindowWidth + layoutState.marginWidth, (value) => {
- updateCssVar({
- "--window-right": value + "px"
- });
- });
- UniServiceJSBridge.on(uniShared.ON_NAVIGATION_BAR_CHANGE, (navigationBar) => {
- layoutState.navigationBarTitleText = navigationBar.titleText;
- });
- const windowState = vue.computed(() => ({
- matchTopWindow: layoutState.topWindowMediaQuery,
- showTopWindow: layoutState.showTopWindow || layoutState.apiShowTopWindow,
- matchLeftWindow: layoutState.leftWindowMediaQuery,
- showLeftWindow: layoutState.showLeftWindow || layoutState.apiShowLeftWindow,
- matchRightWindow: layoutState.rightWindowMediaQuery,
- showRightWindow: layoutState.showRightWindow || layoutState.apiShowRightWindow
- }));
- return {
- layoutState,
- windowState
- };
- }
- function createLayoutTsx(keepAliveRoute, layoutState, windowState, topWindow, leftWindow, rightWindow) {
- const routerVNode = __UNI_FEATURE_PAGES__ ? createRouterViewVNode(keepAliveRoute) : createPageVNode();
- if (!__UNI_FEATURE_RESPONSIVE__) {
- return routerVNode;
- }
- const topWindowTsx = __UNI_FEATURE_TOPWINDOW__ ? createTopWindowTsx(topWindow, layoutState, windowState.value) : null;
- const leftWindowTsx = __UNI_FEATURE_LEFTWINDOW__ ? createLeftWindowTsx(leftWindow, layoutState, windowState.value) : null;
- const rightWindowTsx = __UNI_FEATURE_RIGHTWINDOW__ ? createRightWindowTsx(rightWindow, layoutState, windowState.value) : null;
- return vue.createVNode("uni-layout", {
- "class": {
- "uni-app--showtopwindow": __UNI_FEATURE_TOPWINDOW__ && layoutState.showTopWindow,
- "uni-app--showleftwindow": __UNI_FEATURE_LEFTWINDOW__ && layoutState.showLeftWindow,
- "uni-app--showrightwindow": __UNI_FEATURE_RIGHTWINDOW__ && layoutState.showRightWindow
- }
- }, [topWindowTsx, vue.createVNode("uni-content", null, [vue.createVNode("uni-main", null, [routerVNode]), leftWindowTsx, rightWindowTsx])], 2);
- }
- function useShowTabBar(emit2) {
- const route = usePageRoute();
- const tabBar2 = useTabBar();
- const showTabBar = vue.computed(() => route.meta.isTabBar && tabBar2.shown);
- return showTabBar;
- }
- function createTabBarTsx(showTabBar) {
- return vue.withDirectives(vue.createVNode(TabBar, null, null, 512), [[vue.vShow, showTabBar.value]]);
- }
- function createPageVNode() {
- return vue.createVNode(__uniRoutes[0].component);
- }
- function createRouterViewVNode({
- routeKey,
- isTabBar,
- routeCache: routeCache2
- }) {
- return vue.createVNode(vueRouter.RouterView, null, {
- default: vue.withCtx(({
- Component
- }) => [(vue.openBlock(), vue.createBlock(vue.KeepAlive, {
- matchBy: "key",
- cache: routeCache2
- }, [(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(Component), {
- type: isTabBar.value ? "tabBar" : "",
- key: routeKey.value
- }))], 1032, ["cache"]))]),
- _: 1
- /* STABLE */
- });
- }
- function useTopWindow(layoutState) {
- const {
- component,
- style
- } = __uniConfig.topWindow;
- const windowRef = vue.ref(null);
- function updateWindow() {
- const instance = windowRef.value;
- const el = uniShared.resolveOwnerEl(instance.$);
- const height = el.getBoundingClientRect().height;
- layoutState.topWindowHeight = height;
- }
- vue.watch(() => layoutState.showTopWindow || layoutState.apiShowTopWindow, () => vue.nextTick(updateWindow));
- layoutState.topWindowStyle = style;
- return {
- component,
- windowRef
- };
- }
- function useLeftWindow(layoutState) {
- const {
- component,
- style
- } = __uniConfig.leftWindow;
- const windowRef = vue.ref(null);
- function updateWindow() {
- const instance = windowRef.value;
- const el = uniShared.resolveOwnerEl(instance.$);
- const width = el.getBoundingClientRect().width;
- layoutState.leftWindowWidth = width;
- }
- vue.watch(() => layoutState.showLeftWindow || layoutState.apiShowLeftWindow, () => vue.nextTick(updateWindow));
- layoutState.leftWindowStyle = style;
- return {
- component,
- windowRef
- };
- }
- function useRightWindow(layoutState) {
- const {
- component,
- style
- } = __uniConfig.rightWindow;
- const windowRef = vue.ref(null);
- function updateWindow() {
- const instance = windowRef.value;
- const el = uniShared.resolveOwnerEl(instance.$);
- const width = el.getBoundingClientRect().width;
- layoutState.rightWindowWidth = width;
- }
- vue.watch(() => layoutState.showRightWindow || layoutState.apiShowRightWindow, () => vue.nextTick(updateWindow));
- layoutState.rightWindowStyle = style;
- return {
- component,
- windowRef
- };
- }
- function createTopWindowTsx(topWindow, layoutState, windowState) {
- if (topWindow) {
- const {
- component: TopWindow,
- windowRef
- } = topWindow;
- return vue.withDirectives(vue.createVNode("uni-top-window", null, [vue.createVNode("div", {
- "class": "uni-top-window",
- "style": layoutState.topWindowStyle
- }, [vue.createVNode(TopWindow, vue.mergeProps({
- "ref": windowRef,
- "navigation-bar-title-text": layoutState.navigationBarTitleText
- }, windowState), null, 16, ["navigation-bar-title-text"])], 4), vue.createVNode("div", {
- "class": "uni-top-window--placeholder",
- "style": {
- height: layoutState.topWindowHeight + "px"
- }
- }, null, 4)], 512), [[vue.vShow, layoutState.showTopWindow || layoutState.apiShowTopWindow]]);
- }
- }
- function createLeftWindowTsx(leftWindow, layoutState, windowState) {
- if (leftWindow) {
- const {
- component: LeftWindow,
- windowRef
- } = leftWindow;
- return vue.withDirectives(vue.createVNode("uni-left-window", {
- "data-show": layoutState.apiShowLeftWindow || void 0,
- "style": layoutState.leftWindowStyle
- }, [layoutState.apiShowLeftWindow ? vue.createVNode("div", {
- "class": "uni-mask",
- "onClick": () => layoutState.apiShowLeftWindow = false
- }, null, 8, ["onClick"]) : null, vue.createVNode("div", {
- "class": "uni-left-window"
- }, [vue.createVNode(LeftWindow, vue.mergeProps({
- "ref": windowRef
- }, windowState), null, 16)])], 12, ["data-show"]), [[vue.vShow, layoutState.showLeftWindow || layoutState.apiShowLeftWindow]]);
- }
- }
- function createRightWindowTsx(rightWindow, layoutState, windowState) {
- if (rightWindow) {
- const {
- component: RightWindow,
- windowRef
- } = rightWindow;
- return vue.withDirectives(vue.createVNode("uni-right-window", {
- "data-show": layoutState.apiShowRightWindow || void 0,
- "style": layoutState.rightWindowStyle
- }, [layoutState.apiShowRightWindow ? vue.createVNode("div", {
- "class": "uni-mask",
- "onClick": () => layoutState.apiShowRightWindow = false
- }, null, 8, ["onClick"]) : null, vue.createVNode("div", {
- "class": "uni-right-window"
- }, [vue.createVNode(RightWindow, vue.mergeProps({
- "ref": windowRef
- }, windowState), null, 16)])], 12, ["data-show"]), [[vue.vShow, layoutState.showRightWindow || layoutState.apiShowRightWindow]]);
- }
- }
- function usePageHeadTransparentBackgroundColor(backgroundColor) {
- const { r, g: g2, b } = hexToRgba(backgroundColor);
- return `rgba(${r},${g2},${b},0)`;
- }
- function usePageHeadTransparent(headRef, {
- id,
- navigationBar: { titleColor, coverage, backgroundColor }
- }) {
- vue.computed(() => hexToRgba(backgroundColor));
- }
- const ICON_PATHS = {
- none: "",
- forward: "M11 7.844q-0.25-0.219-0.25-0.578t0.25-0.578q0.219-0.25 0.563-0.25t0.563 0.25l9.656 9.125q0.125 0.125 0.188 0.297t0.063 0.328q0 0.188-0.063 0.359t-0.188 0.297l-9.656 9.125q-0.219 0.25-0.563 0.25t-0.563-0.25q-0.25-0.219-0.25-0.578t0.25-0.609l9.063-8.594-9.063-8.594z",
- back: ICON_PATH_BACK,
- select: ICON_PATH_BACK,
- share: "M26.563 24.844q0 0.125-0.109 0.234t-0.234 0.109h-17.938q-0.125 0-0.219-0.109t-0.094-0.234v-13.25q0-0.156 0.094-0.25t0.219-0.094h5.5v-1.531h-6q-0.531 0-0.906 0.391t-0.375 0.922v14.375q0 0.531 0.375 0.922t0.906 0.391h18.969q0.531 0 0.891-0.391t0.359-0.953v-5.156h-1.438v4.625zM29.813 10.969l-5.125-5.375-1.031 1.094 3.438 3.594-3.719 0.031q-2.313 0.188-4.344 1.125t-3.578 2.422-2.5 3.453-1.109 4.188l-0.031 0.25h1.469v-0.219q0.156-1.875 1-3.594t2.25-3.063 3.234-2.125 3.828-0.906l0.188-0.031 3.313-0.031-3.438 3.625 1.031 1.063 5.125-5.375-0.031-0.063 0.031-0.063z",
- favorite: "M27.594 13.375q-0.063-0.188-0.219-0.313t-0.344-0.156l-7.094-0.969-3.219-6.406q-0.094-0.188-0.25-0.281t-0.375-0.094q-0.188 0-0.344 0.094t-0.25 0.281l-3.125 6.438-7.094 1.094q-0.188 0.031-0.344 0.156t-0.219 0.313q-0.031 0.188 0.016 0.375t0.172 0.313l5.156 4.969-1.156 7.063q-0.031 0.188 0.047 0.375t0.234 0.313q0.094 0.063 0.188 0.094t0.219 0.031q0.063 0 0.141-0.031t0.172-0.063l6.313-3.375 6.375 3.313q0.063 0.031 0.141 0.047t0.172 0.016q0.188 0 0.344-0.094t0.25-0.281q0.063-0.094 0.078-0.234t-0.016-0.234q0-0.031 0-0.063l-1.25-6.938 5.094-5.031q0.156-0.156 0.203-0.344t-0.016-0.375zM11.469 19.063q0.031-0.188-0.016-0.344t-0.172-0.281l-4.406-4.25 6.063-0.906q0.156-0.031 0.297-0.125t0.203-0.25l2.688-5.531 2.75 5.5q0.063 0.156 0.203 0.25t0.297 0.125l6.094 0.844-4.375 4.281q-0.125 0.125-0.172 0.297t-0.016 0.328l1.063 6.031-5.438-2.813q-0.156-0.094-0.328-0.078t-0.297 0.078l-5.438 2.875 1-6.031z",
- home: "M23.719 16.5q-0.313 0-0.531 0.219t-0.219 0.5v7.063q0 0.219-0.172 0.391t-0.391 0.172h-12.344q-0.25 0-0.422-0.172t-0.172-0.391v-7.063q0-0.281-0.219-0.5t-0.531-0.219q-0.281 0-0.516 0.219t-0.234 0.5v7.063q0.031 0.844 0.625 1.453t1.438 0.609h12.375q0.844 0 1.453-0.609t0.609-1.453v-7.063q0-0.125-0.063-0.266t-0.156-0.234q-0.094-0.125-0.234-0.172t-0.297-0.047zM26.5 14.875l-8.813-8.813q-0.313-0.313-0.688-0.453t-0.781-0.141-0.781 0.141-0.656 0.422l-8.813 8.844q-0.188 0.219-0.188 0.516t0.219 0.484q0.094 0.125 0.234 0.172t0.297 0.047q0.125 0 0.25-0.047t0.25-0.141l8.781-8.781q0.156-0.156 0.406-0.156t0.406 0.156l8.813 8.781q0.219 0.188 0.516 0.188t0.516-0.219q0.188-0.188 0.203-0.484t-0.172-0.516z",
- menu: "M8.938 18.313q0.875 0 1.484-0.609t0.609-1.453-0.609-1.453-1.484-0.609q-0.844 0-1.453 0.609t-0.609 1.453 0.609 1.453 1.453 0.609zM16.188 18.313q0.875 0 1.484-0.609t0.609-1.453-0.609-1.453-1.484-0.609q-0.844 0-1.453 0.609t-0.609 1.453 0.609 1.453 1.453 0.609zM23.469 18.313q0.844 0 1.453-0.609t0.609-1.453-0.609-1.453-1.453-0.609q-0.875 0-1.484 0.609t-0.609 1.453 0.609 1.453 1.484 0.609z",
- close: ICON_PATH_CLOSE
- };
- const PageHead = /* @__PURE__ */ defineSystemComponent({
- name: "PageHead",
- setup() {
- const headRef = vue.ref(null);
- const pageMeta = usePageMeta();
- const navigationBar = useTheme(pageMeta.navigationBar, () => {
- const _navigationBar = parseTheme(pageMeta.navigationBar);
- navigationBar.backgroundColor = _navigationBar.backgroundColor;
- navigationBar.titleColor = _navigationBar.titleColor;
- });
- const {
- clazz: clazz2,
- style
- } = usePageHead(navigationBar);
- const buttons = __UNI_FEATURE_NAVIGATIONBAR_BUTTONS__ && usePageHeadButtons(pageMeta);
- const searchInput = __UNI_FEATURE_NAVIGATIONBAR_SEARCHINPUT__ && navigationBar.searchInput && usePageHeadSearchInput(pageMeta);
- __UNI_FEATURE_NAVIGATIONBAR_TRANSPARENT__ && navigationBar.type === "transparent" && usePageHeadTransparent(headRef, pageMeta);
- return () => {
- const backButtonTsx = __UNI_FEATURE_PAGES__ ? createBackButtonTsx(navigationBar, pageMeta.isQuit) : null;
- const leftButtonsTsx = __UNI_FEATURE_NAVIGATIONBAR_BUTTONS__ ? createButtonsTsx(buttons.left) : [];
- const rightButtonsTsx = __UNI_FEATURE_NAVIGATIONBAR_BUTTONS__ ? createButtonsTsx(buttons.right) : [];
- const type = navigationBar.type || "default";
- const placeholderTsx = type !== "transparent" && type !== "float" && vue.createVNode("div", {
- "class": {
- "uni-placeholder": true,
- "uni-placeholder-titlePenetrate": navigationBar.titlePenetrate
- }
- }, null, 2);
- return vue.createVNode("uni-page-head", {
- "uni-page-head-type": type
- }, [vue.createVNode("div", {
- "ref": headRef,
- "class": clazz2.value,
- "style": style.value
- }, [vue.createVNode("div", {
- "class": "uni-page-head-hd"
- }, [backButtonTsx, ...leftButtonsTsx]), createPageHeadBdTsx(navigationBar, searchInput), vue.createVNode("div", {
- "class": "uni-page-head-ft"
- }, [...rightButtonsTsx])], 6), placeholderTsx], 8, ["uni-page-head-type"]);
- };
- }
- });
- function createBackButtonTsx(navigationBar, isQuit) {
- if (!isQuit) {
- return vue.createVNode("div", {
- "class": "uni-page-head-btn",
- "onClick": onPageHeadBackButton
- }, [createSvgIconVNode(ICON_PATH_BACK, navigationBar.type === "transparent" ? "#fff" : navigationBar.titleColor, 26)], 8, ["onClick"]);
- }
- }
- function createButtonsTsx(btns) {
- return btns.map(({
- onClick,
- btnClass,
- btnStyle,
- btnText,
- btnIconPath,
- badgeText,
- iconStyle,
- btnSelect
- }, index2) => {
- return vue.createVNode("div", {
- "key": index2,
- "class": btnClass,
- "style": btnStyle,
- "onClick": onClick,
- "badge-text": badgeText
- }, [btnIconPath ? createSvgIconVNode(btnIconPath, iconStyle.color, iconStyle.fontSize) : btnSelect ? vue.createVNode("span", {
- "style": iconStyle
- }, [vue.createVNode("i", {
- "class": "uni-btn-icon",
- "innerHTML": btnText
- }, null, 8, ["innerHTML"]), createSvgIconVNode(ICON_PATHS["select"], "#000", 14)], 4) : vue.createVNode("i", {
- "class": "uni-btn-icon",
- "style": iconStyle,
- "innerHTML": btnText
- }, null, 12, ["innerHTML"])], 14, ["onClick", "badge-text"]);
- });
- }
- function createPageHeadBdTsx(navigationBar, searchInput) {
- if (!__UNI_FEATURE_NAVIGATIONBAR_SEARCHINPUT__ || !navigationBar.searchInput) {
- return createPageHeadTitleTextTsx(navigationBar);
- }
- return createPageHeadSearchInputTsx(navigationBar, searchInput);
- }
- function createPageHeadTitleTextTsx({
- type,
- loading,
- titleSize,
- titleText,
- titleImage
- }) {
- return vue.createVNode("div", {
- "class": "uni-page-head-bd"
- }, [vue.createVNode("div", {
- "style": {
- fontSize: titleSize,
- opacity: type === "transparent" ? 0 : 1
- },
- "class": "uni-page-head__title"
- }, [loading ? vue.createVNode("i", {
- "class": "uni-loading"
- }, null) : titleImage ? vue.createVNode("img", {
- "src": titleImage,
- "class": "uni-page-head__title_image"
- }, null, 8, ["src"]) : titleText], 4)]);
- }
- function createPageHeadSearchInputTsx(navigationBar, {
- text,
- focus,
- composing,
- onBlur,
- onFocus,
- onInput,
- onConfirm,
- onClick
- }) {
- const {
- color,
- align,
- autoFocus,
- disabled,
- borderRadius,
- backgroundColor,
- placeholder,
- placeholderColor
- } = navigationBar.searchInput;
- const searchStyle = {
- borderRadius,
- backgroundColor
- };
- const placeholderClass = ["uni-page-head-search-placeholder", `uni-page-head-search-placeholder-${focus.value || text.value ? "left" : align}`];
- return vue.createVNode("div", {
- "class": "uni-page-head-search",
- "style": searchStyle
- }, [vue.createVNode("div", {
- "style": {
- color: placeholderColor
- },
- "class": placeholderClass
- }, [vue.createVNode("div", {
- "class": "uni-page-head-search-icon"
- }, [createSvgIconVNode(ICON_PATH_SEARCH, placeholderColor, 20)]), text.value || composing.value ? "" : placeholder], 6), disabled ? vue.createVNode(Input, {
- "disabled": true,
- "style": {
- color
- },
- "placeholder-style": "color: " + placeholderColor,
- "class": "uni-page-head-search-input",
- "confirm-type": "search",
- "onClick": onClick
- }, null, 8, ["style", "placeholder-style", "onClick"]) : vue.createVNode(Input, {
- "focus": autoFocus,
- "style": {
- color
- },
- "placeholder-style": "color: " + placeholderColor,
- "class": "uni-page-head-search-input",
- "confirm-type": "search",
- "onFocus": onFocus,
- "onBlur": onBlur,
- "onInput": onInput,
- "onConfirm": onConfirm
- }, null, 8, ["focus", "style", "placeholder-style", "onFocus", "onBlur", "onInput", "onConfirm"])], 4);
- }
- function onPageHeadBackButton() {
- if (getCurrentPages().length === 1) {
- uni.reLaunch({
- url: "/"
- });
- } else {
- uni.navigateBack({
- from: "backbutton",
- success() {
- }
- // 传入空方法,避免返回Promise,因为onBackPress可能导致fail
- });
- }
- }
- function usePageHead(navigationBar) {
- const clazz2 = vue.computed(() => {
- const {
- type,
- titlePenetrate,
- shadowColorType
- } = navigationBar;
- const clazz3 = {
- "uni-page-head": true,
- "uni-page-head-transparent": type === "transparent",
- "uni-page-head-titlePenetrate": titlePenetrate === "YES",
- "uni-page-head-shadow": !!shadowColorType
- };
- if (shadowColorType) {
- clazz3[`uni-page-head-shadow-${shadowColorType}`] = true;
- }
- return clazz3;
- });
- const style = vue.computed(() => {
- const backgroundColor = __UNI_FEATURE_NAVIGATIONBAR_TRANSPARENT__ && navigationBar.type === "transparent" ? usePageHeadTransparentBackgroundColor(navigationBar.backgroundColor) : navigationBar.backgroundColor;
- return {
- backgroundColor,
- color: navigationBar.titleColor,
- transitionDuration: navigationBar.duration,
- transitionTimingFunction: navigationBar.timingFunc
- };
- });
- return {
- clazz: clazz2,
- style
- };
- }
- function usePageHeadButtons({
- id,
- navigationBar
- }) {
- const left = [];
- const right = [];
- const {
- buttons
- } = navigationBar;
- if (shared.isArray(buttons)) {
- const {
- type
- } = navigationBar;
- const isTransparent = type === "transparent";
- const fonts = /* @__PURE__ */ Object.create(null);
- buttons.forEach((btn, index2) => {
- if (btn.fontSrc && !btn.fontFamily) {
- const fontSrc = getRealPath(btn.fontSrc);
- let fontFamily = fonts[fontSrc];
- if (!fontFamily) {
- fontFamily = `font${Date.now()}`;
- fonts[fontSrc] = fontFamily;
- }
- btn.fontFamily = fontFamily;
- }
- const pageHeadBtn = usePageHeadButton(id, index2, btn, isTransparent);
- if (btn.float === "left") {
- left.push(pageHeadBtn);
- } else {
- right.push(pageHeadBtn);
- }
- });
- }
- return {
- left,
- right
- };
- }
- function usePageHeadButton(pageId, index2, btn, isTransparent) {
- const iconStyle = {
- color: btn.color,
- fontSize: btn.fontSize,
- fontWeight: btn.fontWeight
- };
- if (btn.fontFamily) {
- iconStyle.fontFamily = btn.fontFamily;
- }
- return new Proxy({
- btnClass: {
- // 类似这样的大量重复的字符串,会在gzip时压缩大小,无需在代码层考虑优化相同字符串
- "uni-page-head-btn": true,
- "uni-page-head-btn-red-dot": !!(btn.redDot || btn.badgeText),
- "uni-page-head-btn-select": !!btn.select
- },
- btnStyle: {
- backgroundColor: isTransparent ? btn.background : "transparent",
- width: btn.width
- },
- btnText: "",
- btnIconPath: ICON_PATHS[btn.type],
- badgeText: btn.badgeText,
- iconStyle,
- onClick() {
- invokeHook(pageId, uniShared.ON_NAVIGATION_BAR_BUTTON_TAP, shared.extend({
- index: index2
- }, btn));
- },
- btnSelect: btn.select
- }, {
- get(target, key, receiver) {
- if (["btnText"].includes(key)) {
- return btn.fontSrc && btn.fontFamily ? btn.text.replace("\\u", "&#x") : btn.text;
- } else {
- return Reflect.get(target, key, receiver);
- }
- }
- });
- }
- function usePageHeadSearchInput({
- id,
- navigationBar: {
- searchInput
- }
- }) {
- const focus = vue.ref(false);
- const text = vue.ref("");
- const composing = vue.ref(false);
- const {
- disabled
- } = searchInput;
- if (disabled) {
- const onClick = () => {
- invokeHook(id, uniShared.ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED);
- };
- return {
- focus,
- text,
- composing,
- onClick
- };
- }
- const onFocus = () => {
- focus.value = true;
- invokeHook(id, uniShared.ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED, {
- focus: true
- });
- };
- const onBlur = () => {
- focus.value = false;
- invokeHook(id, uniShared.ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED, {
- focus: false
- });
- };
- const onInput = (evt) => {
- text.value = evt.detail.value;
- invokeHook(id, uniShared.ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, {
- text: text.value
- });
- };
- const onConfirm = (evt) => {
- invokeHook(id, uniShared.ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, {
- text: text.value
- });
- };
- return {
- focus,
- text,
- composing,
- onFocus,
- onBlur,
- onInput,
- onConfirm
- };
- }
- const _sfc_main = {
- name: "PageRefresh",
- setup() {
- const { pullToRefresh } = usePageMeta();
- return {
- offset: pullToRefresh.offset,
- color: pullToRefresh.color
- };
- }
- };
- const _export_sfc = (sfc, props2) => {
- const target = sfc.__vccOpts || sfc;
- for (const [key, val] of props2) {
- target[key] = val;
- }
- return target;
- };
- const _hoisted_1 = { class: "uni-page-refresh-inner" };
- const _hoisted_2 = ["fill"];
- const _hoisted_3 = /* @__PURE__ */ vue.createElementVNode("path", { d: "M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z" }, null, -1);
- const _hoisted_4 = /* @__PURE__ */ vue.createElementVNode("path", {
- d: "M0 0h24v24H0z",
- fill: "none"
- }, null, -1);
- const _hoisted_5 = [
- _hoisted_3,
- _hoisted_4
- ];
- const _hoisted_6 = {
- class: "uni-page-refresh__spinner",
- width: "24",
- height: "24",
- viewBox: "25 25 50 50"
- };
- const _hoisted_7 = ["stroke"];
- function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
- return vue.openBlock(), vue.createElementBlock("uni-page-refresh", null, [
- vue.createElementVNode("div", {
- style: vue.normalizeStyle({ "margin-top": $setup.offset + "px" }),
- class: "uni-page-refresh"
- }, [
- vue.createElementVNode("div", _hoisted_1, [
- (vue.openBlock(), vue.createElementBlock("svg", {
- fill: $setup.color,
- class: "uni-page-refresh__icon",
- width: "24",
- height: "24",
- viewBox: "0 0 24 24"
- }, _hoisted_5, 8, _hoisted_2)),
- (vue.openBlock(), vue.createElementBlock("svg", _hoisted_6, [
- vue.createElementVNode("circle", {
- stroke: $setup.color,
- class: "uni-page-refresh__path",
- cx: "50",
- cy: "50",
- r: "20",
- fill: "none",
- "stroke-width": "4",
- "stroke-miterlimit": "10"
- }, null, 8, _hoisted_7)
- ]))
- ])
- ], 4)
- ]);
- }
- const PageRefresh = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
- const PageBody = defineSystemComponent({
- name: "PageBody",
- setup(props2, ctx) {
- const pageMeta = __UNI_FEATURE_PULL_DOWN_REFRESH__ && usePageMeta();
- const refreshRef = __UNI_FEATURE_PULL_DOWN_REFRESH__ && vue.ref(null);
- const pageRefresh = null;
- return () => {
- const pageRefreshTsx = __UNI_FEATURE_PULL_DOWN_REFRESH__ && createPageRefreshTsx(refreshRef, pageMeta);
- return vue.createVNode(vue.Fragment, null, [pageRefreshTsx, vue.createVNode("uni-page-wrapper", pageRefresh, [vue.createVNode("uni-page-body", null, [vue.renderSlot(ctx.slots, "default")])], 16)]);
- };
- }
- });
- function createPageRefreshTsx(refreshRef, pageMeta) {
- if (!__UNI_FEATURE_PULL_DOWN_REFRESH__ || !pageMeta.enablePullDownRefresh) {
- return null;
- }
- return vue.createVNode(PageRefresh, {
- "ref": refreshRef
- }, null, 512);
- }
- const index = defineSystemComponent({
- name: "Page",
- setup(_props, ctx) {
- const pageMeta = providePageMeta(getStateId());
- const navigationBar = pageMeta.navigationBar;
- useDocumentTitle(pageMeta);
- return () => vue.createVNode(
- "uni-page",
- { "data-page": pageMeta.route },
- __UNI_FEATURE_NAVIGATIONBAR__ && navigationBar.style !== "custom" ? [vue.createVNode(PageHead), createPageBodyVNode(ctx)] : [createPageBodyVNode(ctx)]
- );
- }
- });
- function createPageBodyVNode(ctx) {
- return vue.openBlock(), vue.createBlock(
- PageBody,
- { key: 0 },
- {
- default: vue.withCtx(() => [vue.renderSlot(ctx.slots, "page")]),
- _: 3
- }
- );
- }
- exports.Ad = index$6;
- exports.AdContentPage = index$5;
- exports.AdDraw = index$4;
- exports.AsyncErrorComponent = AsyncErrorComponent;
- exports.AsyncLoadingComponent = AsyncLoadingComponent;
- exports.Button = index$B;
- exports.Camera = index$3;
- exports.Canvas = index$A;
- exports.Checkbox = index$y;
- exports.CheckboxGroup = index$z;
- exports.CoverImage = index$8;
- exports.CoverView = index$9;
- exports.Editor = index$x;
- exports.Form = index$D;
- exports.Icon = index$w;
- exports.Image = index$v;
- exports.Input = Input;
- exports.Label = index$C;
- exports.LayoutComponent = LayoutComponent;
- exports.ListItem = index$g;
- exports.ListView = index$h;
- exports.LivePlayer = index$2;
- exports.LivePusher = index$1;
- exports.Map = index$a;
- exports.MovableArea = index$u;
- exports.MovableView = index$t;
- exports.Navigator = index$s;
- exports.PageComponent = index;
- exports.Picker = index$7;
- exports.PickerView = PickerView;
- exports.PickerViewColumn = PickerViewColumn;
- exports.Progress = index$r;
- exports.Radio = indexX$2;
- exports.RadioGroup = index$q;
- exports.ResizeSensor = ResizeSensor;
- exports.RichText = index$p;
- exports.ScrollView = index$o;
- exports.Slider = indexX$1;
- exports.StickyHeader = index$e;
- exports.StickySection = index$f;
- exports.Swiper = index$n;
- exports.SwiperItem = index$m;
- exports.Switch = index$l;
- exports.Text = index$k;
- exports.Textarea = index$j;
- exports.UniButtonElement = UniButtonElement;
- exports.UniCanvasElement = UniCanvasElement;
- exports.UniCheckboxElement = UniCheckboxElement;
- exports.UniCheckboxGroupElement = UniCheckboxGroupElement;
- exports.UniCoverImageElement = UniCoverImageElement;
- exports.UniCoverViewElement = UniCoverViewElement;
- exports.UniEditorElement = UniEditorElement;
- exports.UniElement = UniElement;
- exports.UniElementImpl = UniElement;
- exports.UniFormElement = UniFormElement;
- exports.UniIconElement = UniIconElement;
- exports.UniImageElement = UniImageElement;
- exports.UniInputElement = UniInputElement;
- exports.UniLabelElement = UniLabelElement;
- exports.UniListItemElement = UniListItemElement;
- exports.UniListViewElement = UniListViewElement;
- exports.UniMapElement = UniMapElement;
- exports.UniMovableAreaElement = UniMovableAreaElement;
- exports.UniMovableViewElement = UniMovableViewElement;
- exports.UniNavigatorElement = UniNavigatorElement;
- exports.UniPickerElement = UniPickerElement;
- exports.UniPickerViewColumnElement = UniPickerViewColumnElement;
- exports.UniPickerViewElement = UniPickerViewElement;
- exports.UniProgressElement = UniProgressElement;
- exports.UniRadioElement = UniRadioElement;
- exports.UniRadioGroupElement = UniRadioGroupElement;
- exports.UniRichTextElement = UniRichTextElement;
- exports.UniScrollViewElement = UniScrollViewElement;
- exports.UniServiceJSBridge = UniServiceJSBridge$1;
- exports.UniSliderElement = UniSliderElement;
- exports.UniStickyHeaderElement = UniStickyHeaderElement;
- exports.UniStickySectionElement = UniStickySectionElement;
- exports.UniSwiperElement = UniSwiperElement;
- exports.UniSwiperItemElement = UniSwiperItemElement;
- exports.UniSwitchElement = UniSwitchElement;
- exports.UniTextElement = UniTextElement;
- exports.UniTextareaElement = UniTextareaElement;
- exports.UniVideoElement = UniVideoElement;
- exports.UniViewElement = UniViewElement;
- exports.UniViewJSBridge = UniViewJSBridge$1;
- exports.UniWebViewElement = UniWebViewElement;
- exports.Video = index$b;
- exports.View = index$i;
- exports.WebView = indexX;
- exports.clearStorage = clearStorage;
- exports.clearStorageSync = clearStorageSync;
- exports.getApp = getApp$1;
- exports.getAppBaseInfo = getAppBaseInfo;
- exports.getCurrentPages = getCurrentPages$1;
- exports.getDeviceInfo = getDeviceInfo;
- exports.getRealPath = getRealPath;
- exports.getStorage = getStorage;
- exports.getStorageInfo = getStorageInfo;
- exports.getStorageInfoSync = getStorageInfoSync;
- exports.getStorageSync = getStorageSync;
- exports.getSystemInfoSync = getSystemInfoSync;
- exports.plugin = index$c;
- exports.removeStorage = removeStorage;
- exports.removeStorageSync = removeStorageSync;
- exports.request = request;
- exports.setNavigationBarTitle = setNavigationBarTitle;
- exports.setStorage = setStorage;
- exports.setStorageSync = setStorageSync;
- exports.setupApp = setupApp;
- exports.setupPage = setupPage;
- exports.setupWindow = setupWindow;
- exports.uni = uni$1;
- exports.useI18n = useI18n;
- exports.useTabBar = useTabBar;
|