1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675 |
- function makeMap(str, expectsLowerCase) {
- const map = /* @__PURE__ */ Object.create(null);
- const list = str.split(",");
- for (let i = 0; i < list.length; i++) {
- map[list[i]] = true;
- }
- return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];
- }
- const EMPTY_OBJ = Object.freeze({}) ;
- const EMPTY_ARR = Object.freeze([]) ;
- const NOOP = () => {
- };
- const NO = () => false;
- const onRE = /^on[^a-z]/;
- const isOn = (key) => onRE.test(key);
- const isModelListener = (key) => key.startsWith("onUpdate:");
- const extend = Object.assign;
- const remove = (arr, el) => {
- const i = arr.indexOf(el);
- if (i > -1) {
- arr.splice(i, 1);
- }
- };
- const hasOwnProperty$1 = Object.prototype.hasOwnProperty;
- const hasOwn = (val, key) => hasOwnProperty$1.call(val, key);
- const isArray = Array.isArray;
- const isMap = (val) => toTypeString(val) === "[object Map]";
- const isSet = (val) => toTypeString(val) === "[object Set]";
- const isDate = (val) => toTypeString(val) === "[object Date]";
- const isFunction = (val) => typeof val === "function";
- const isString = (val) => typeof val === "string";
- const isSymbol = (val) => typeof val === "symbol";
- const isObject = (val) => val !== null && typeof val === "object";
- const isPromise = (val) => {
- return isObject(val) && isFunction(val.then) && isFunction(val.catch);
- };
- const objectToString = Object.prototype.toString;
- const toTypeString = (value) => objectToString.call(value);
- const toRawType = (value) => {
- return toTypeString(value).slice(8, -1);
- };
- const isPlainObject = (val) => toTypeString(val) === "[object Object]";
- const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
- const isReservedProp = /* @__PURE__ */ makeMap(
- // the leading comma is intentional so empty string "" is also included
- ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"
- );
- const isBuiltInDirective = /* @__PURE__ */ makeMap(
- "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
- );
- const cacheStringFunction = (fn) => {
- const cache = /* @__PURE__ */ Object.create(null);
- return (str) => {
- const hit = cache[str];
- return hit || (cache[str] = fn(str));
- };
- };
- const camelizeRE = /-(\w)/g;
- const camelize = cacheStringFunction((str) => {
- return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
- });
- const hyphenateRE = /\B([A-Z])/g;
- const hyphenate = cacheStringFunction(
- (str) => str.replace(hyphenateRE, "-$1").toLowerCase()
- );
- const capitalize = cacheStringFunction(
- (str) => str.charAt(0).toUpperCase() + str.slice(1)
- );
- const toHandlerKey = cacheStringFunction(
- (str) => str ? `on${capitalize(str)}` : ``
- );
- const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
- const invokeArrayFns = (fns, arg) => {
- for (let i = 0; i < fns.length; i++) {
- fns[i](arg);
- }
- };
- const def = (obj, key, value) => {
- Object.defineProperty(obj, key, {
- configurable: true,
- enumerable: false,
- value
- });
- };
- const looseToNumber = (val) => {
- const n = parseFloat(val);
- return isNaN(n) ? val : n;
- };
- let _globalThis;
- const getGlobalThis = () => {
- return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
- };
- function normalizeStyle(value) {
- if (isArray(value)) {
- const res = {};
- for (let i = 0; i < value.length; i++) {
- const item = value[i];
- const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);
- if (normalized) {
- for (const key in normalized) {
- res[key] = normalized[key];
- }
- }
- }
- return res;
- } else if (isString(value)) {
- return value;
- } else if (isObject(value)) {
- return value;
- }
- }
- const listDelimiterRE = /;(?![^(]*\))/g;
- const propertyDelimiterRE = /:([^]+)/;
- const styleCommentRE = /\/\*[^]*?\*\//g;
- function parseStringStyle(cssText) {
- const ret = {};
- cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
- if (item) {
- const tmp = item.split(propertyDelimiterRE);
- tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
- }
- });
- return ret;
- }
- function stringifyStyle(styles) {
- let ret = "";
- if (!styles || isString(styles)) {
- return ret;
- }
- for (const key in styles) {
- const value = styles[key];
- const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);
- if (isString(value) || typeof value === "number") {
- ret += `${normalizedKey}:${value};`;
- }
- }
- return ret;
- }
- function normalizeClass(value) {
- let res = "";
- if (isString(value)) {
- res = value;
- } else if (isArray(value)) {
- for (let i = 0; i < value.length; i++) {
- const normalized = normalizeClass(value[i]);
- if (normalized) {
- res += normalized + " ";
- }
- }
- } else if (isObject(value)) {
- for (const name in value) {
- if (value[name]) {
- res += name + " ";
- }
- }
- }
- return res.trim();
- }
- const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot";
- const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view";
- const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr";
- const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
- const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
- const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);
- const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
- const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
- const isBooleanAttr = /* @__PURE__ */ makeMap(
- specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`
- );
- function includeBooleanAttr(value) {
- return !!value || value === "";
- }
- const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/;
- const attrValidationCache = {};
- function isSSRSafeAttrName(name) {
- if (attrValidationCache.hasOwnProperty(name)) {
- return attrValidationCache[name];
- }
- const isUnsafe = unsafeAttrCharRE.test(name);
- if (isUnsafe) {
- console.error(`unsafe attribute name: ${name}`);
- }
- return attrValidationCache[name] = !isUnsafe;
- }
- const propsToAttrMap = {
- acceptCharset: "accept-charset",
- className: "class",
- htmlFor: "for",
- httpEquiv: "http-equiv"
- };
- const escapeRE = /["'&<>]/;
- function escapeHtml(string) {
- const str = "" + string;
- const match = escapeRE.exec(str);
- if (!match) {
- return str;
- }
- let html = "";
- let escaped;
- let index;
- let lastIndex = 0;
- for (index = match.index; index < str.length; index++) {
- switch (str.charCodeAt(index)) {
- case 34:
- escaped = """;
- break;
- case 38:
- escaped = "&";
- break;
- case 39:
- escaped = "'";
- break;
- case 60:
- escaped = "<";
- break;
- case 62:
- escaped = ">";
- break;
- default:
- continue;
- }
- if (lastIndex !== index) {
- html += str.slice(lastIndex, index);
- }
- lastIndex = index + 1;
- html += escaped;
- }
- return lastIndex !== index ? html + str.slice(lastIndex, index) : html;
- }
- const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;
- function escapeHtmlComment(src) {
- return src.replace(commentStripRE, "");
- }
- function looseCompareArrays(a, b) {
- if (a.length !== b.length)
- return false;
- let equal = true;
- for (let i = 0; equal && i < a.length; i++) {
- equal = looseEqual(a[i], b[i]);
- }
- return equal;
- }
- function looseEqual(a, b) {
- if (a === b)
- return true;
- let aValidType = isDate(a);
- let bValidType = isDate(b);
- if (aValidType || bValidType) {
- return aValidType && bValidType ? a.getTime() === b.getTime() : false;
- }
- aValidType = isSymbol(a);
- bValidType = isSymbol(b);
- if (aValidType || bValidType) {
- return a === b;
- }
- aValidType = isArray(a);
- bValidType = isArray(b);
- if (aValidType || bValidType) {
- return aValidType && bValidType ? looseCompareArrays(a, b) : false;
- }
- aValidType = isObject(a);
- bValidType = isObject(b);
- if (aValidType || bValidType) {
- if (!aValidType || !bValidType) {
- return false;
- }
- const aKeysCount = Object.keys(a).length;
- const bKeysCount = Object.keys(b).length;
- if (aKeysCount !== bKeysCount) {
- return false;
- }
- for (const key in a) {
- const aHasKey = a.hasOwnProperty(key);
- const bHasKey = b.hasOwnProperty(key);
- if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {
- return false;
- }
- }
- }
- return String(a) === String(b);
- }
- function looseIndexOf(arr, val) {
- return arr.findIndex((item) => looseEqual(item, val));
- }
- const toDisplayString = (val) => {
- return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);
- };
- const replacer = (_key, val) => {
- if (val && val.__v_isRef) {
- return replacer(_key, val.value);
- } else if (isMap(val)) {
- return {
- [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {
- entries[`${key} =>`] = val2;
- return entries;
- }, {})
- };
- } else if (isSet(val)) {
- return {
- [`Set(${val.size})`]: [...val.values()]
- };
- } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {
- return String(val);
- }
- return val;
- };
- function warn$1(msg, ...args) {
- console.warn(`[Vue warn] ${msg}`, ...args);
- }
- let activeEffectScope;
- class EffectScope {
- constructor(detached = false) {
- this.detached = detached;
- /**
- * @internal
- */
- this._active = true;
- /**
- * @internal
- */
- this.effects = [];
- /**
- * @internal
- */
- this.cleanups = [];
- this.parent = activeEffectScope;
- if (!detached && activeEffectScope) {
- this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(
- this
- ) - 1;
- }
- }
- get active() {
- return this._active;
- }
- run(fn) {
- if (this._active) {
- const currentEffectScope = activeEffectScope;
- try {
- activeEffectScope = this;
- return fn();
- } finally {
- activeEffectScope = currentEffectScope;
- }
- } else {
- warn$1(`cannot run an inactive effect scope.`);
- }
- }
- /**
- * This should only be called on non-detached scopes
- * @internal
- */
- on() {
- activeEffectScope = this;
- }
- /**
- * This should only be called on non-detached scopes
- * @internal
- */
- off() {
- activeEffectScope = this.parent;
- }
- stop(fromParent) {
- if (this._active) {
- let i, l;
- for (i = 0, l = this.effects.length; i < l; i++) {
- this.effects[i].stop();
- }
- for (i = 0, l = this.cleanups.length; i < l; i++) {
- this.cleanups[i]();
- }
- if (this.scopes) {
- for (i = 0, l = this.scopes.length; i < l; i++) {
- this.scopes[i].stop(true);
- }
- }
- if (!this.detached && this.parent && !fromParent) {
- const last = this.parent.scopes.pop();
- if (last && last !== this) {
- this.parent.scopes[this.index] = last;
- last.index = this.index;
- }
- }
- this.parent = void 0;
- this._active = false;
- }
- }
- }
- function recordEffectScope(effect, scope = activeEffectScope) {
- if (scope && scope.active) {
- scope.effects.push(effect);
- }
- }
- function getCurrentScope() {
- return activeEffectScope;
- }
- const createDep = (effects) => {
- const dep = new Set(effects);
- dep.w = 0;
- dep.n = 0;
- return dep;
- };
- const wasTracked = (dep) => (dep.w & trackOpBit) > 0;
- const newTracked = (dep) => (dep.n & trackOpBit) > 0;
- const initDepMarkers = ({ deps }) => {
- if (deps.length) {
- for (let i = 0; i < deps.length; i++) {
- deps[i].w |= trackOpBit;
- }
- }
- };
- const finalizeDepMarkers = (effect) => {
- const { deps } = effect;
- if (deps.length) {
- let ptr = 0;
- for (let i = 0; i < deps.length; i++) {
- const dep = deps[i];
- if (wasTracked(dep) && !newTracked(dep)) {
- dep.delete(effect);
- } else {
- deps[ptr++] = dep;
- }
- dep.w &= ~trackOpBit;
- dep.n &= ~trackOpBit;
- }
- deps.length = ptr;
- }
- };
- const targetMap = /* @__PURE__ */ new WeakMap();
- let effectTrackDepth = 0;
- let trackOpBit = 1;
- const maxMarkerBits = 30;
- let activeEffect;
- const ITERATE_KEY = Symbol("iterate" );
- const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate" );
- class ReactiveEffect {
- constructor(fn, scheduler = null, scope) {
- this.fn = fn;
- this.scheduler = scheduler;
- this.active = true;
- this.deps = [];
- this.parent = void 0;
- recordEffectScope(this, scope);
- }
- run() {
- if (!this.active) {
- return this.fn();
- }
- let parent = activeEffect;
- let lastShouldTrack = shouldTrack;
- while (parent) {
- if (parent === this) {
- return;
- }
- parent = parent.parent;
- }
- try {
- this.parent = activeEffect;
- activeEffect = this;
- shouldTrack = true;
- trackOpBit = 1 << ++effectTrackDepth;
- if (effectTrackDepth <= maxMarkerBits) {
- initDepMarkers(this);
- } else {
- cleanupEffect(this);
- }
- return this.fn();
- } finally {
- if (effectTrackDepth <= maxMarkerBits) {
- finalizeDepMarkers(this);
- }
- trackOpBit = 1 << --effectTrackDepth;
- activeEffect = this.parent;
- shouldTrack = lastShouldTrack;
- this.parent = void 0;
- if (this.deferStop) {
- this.stop();
- }
- }
- }
- stop() {
- if (activeEffect === this) {
- this.deferStop = true;
- } else if (this.active) {
- cleanupEffect(this);
- if (this.onStop) {
- this.onStop();
- }
- this.active = false;
- }
- }
- }
- function cleanupEffect(effect2) {
- const { deps } = effect2;
- if (deps.length) {
- for (let i = 0; i < deps.length; i++) {
- deps[i].delete(effect2);
- }
- deps.length = 0;
- }
- }
- let shouldTrack = true;
- const trackStack = [];
- function pauseTracking() {
- trackStack.push(shouldTrack);
- shouldTrack = false;
- }
- function resetTracking() {
- const last = trackStack.pop();
- shouldTrack = last === void 0 ? true : last;
- }
- function track(target, type, key) {
- if (shouldTrack && activeEffect) {
- let depsMap = targetMap.get(target);
- if (!depsMap) {
- targetMap.set(target, depsMap = /* @__PURE__ */ new Map());
- }
- let dep = depsMap.get(key);
- if (!dep) {
- depsMap.set(key, dep = createDep());
- }
- const eventInfo = { effect: activeEffect, target, type, key } ;
- trackEffects(dep, eventInfo);
- }
- }
- function trackEffects(dep, debuggerEventExtraInfo) {
- let shouldTrack2 = false;
- if (effectTrackDepth <= maxMarkerBits) {
- if (!newTracked(dep)) {
- dep.n |= trackOpBit;
- shouldTrack2 = !wasTracked(dep);
- }
- } else {
- shouldTrack2 = !dep.has(activeEffect);
- }
- if (shouldTrack2) {
- dep.add(activeEffect);
- activeEffect.deps.push(dep);
- if (activeEffect.onTrack) {
- activeEffect.onTrack(
- extend(
- {
- effect: activeEffect
- },
- debuggerEventExtraInfo
- )
- );
- }
- }
- }
- function trigger(target, type, key, newValue, oldValue, oldTarget) {
- const depsMap = targetMap.get(target);
- if (!depsMap) {
- return;
- }
- let deps = [];
- if (type === "clear") {
- deps = [...depsMap.values()];
- } else if (key === "length" && isArray(target)) {
- const newLength = Number(newValue);
- depsMap.forEach((dep, key2) => {
- if (key2 === "length" || key2 >= newLength) {
- deps.push(dep);
- }
- });
- } else {
- if (key !== void 0) {
- deps.push(depsMap.get(key));
- }
- switch (type) {
- case "add":
- if (!isArray(target)) {
- deps.push(depsMap.get(ITERATE_KEY));
- if (isMap(target)) {
- deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));
- }
- } else if (isIntegerKey(key)) {
- deps.push(depsMap.get("length"));
- }
- break;
- case "delete":
- if (!isArray(target)) {
- deps.push(depsMap.get(ITERATE_KEY));
- if (isMap(target)) {
- deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));
- }
- }
- break;
- case "set":
- if (isMap(target)) {
- deps.push(depsMap.get(ITERATE_KEY));
- }
- break;
- }
- }
- const eventInfo = { target, type, key, newValue, oldValue, oldTarget } ;
- if (deps.length === 1) {
- if (deps[0]) {
- {
- triggerEffects(deps[0], eventInfo);
- }
- }
- } else {
- const effects = [];
- for (const dep of deps) {
- if (dep) {
- effects.push(...dep);
- }
- }
- {
- triggerEffects(createDep(effects), eventInfo);
- }
- }
- }
- function triggerEffects(dep, debuggerEventExtraInfo) {
- const effects = isArray(dep) ? dep : [...dep];
- for (const effect2 of effects) {
- if (effect2.computed) {
- triggerEffect(effect2, debuggerEventExtraInfo);
- }
- }
- for (const effect2 of effects) {
- if (!effect2.computed) {
- triggerEffect(effect2, debuggerEventExtraInfo);
- }
- }
- }
- function triggerEffect(effect2, debuggerEventExtraInfo) {
- if (effect2 !== activeEffect || effect2.allowRecurse) {
- if (effect2.onTrigger) {
- effect2.onTrigger(extend({ effect: effect2 }, debuggerEventExtraInfo));
- }
- if (effect2.scheduler) {
- effect2.scheduler();
- } else {
- effect2.run();
- }
- }
- }
- const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);
- const builtInSymbols = new Set(
- /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol)
- );
- const get$1 = /* @__PURE__ */ createGetter();
- const shallowGet = /* @__PURE__ */ createGetter(false, true);
- const readonlyGet = /* @__PURE__ */ createGetter(true);
- const shallowReadonlyGet = /* @__PURE__ */ createGetter(true, true);
- const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();
- function createArrayInstrumentations() {
- const instrumentations = {};
- ["includes", "indexOf", "lastIndexOf"].forEach((key) => {
- instrumentations[key] = function(...args) {
- const arr = toRaw(this);
- for (let i = 0, l = this.length; i < l; i++) {
- track(arr, "get", i + "");
- }
- const res = arr[key](...args);
- if (res === -1 || res === false) {
- return arr[key](...args.map(toRaw));
- } else {
- return res;
- }
- };
- });
- ["push", "pop", "shift", "unshift", "splice"].forEach((key) => {
- instrumentations[key] = function(...args) {
- pauseTracking();
- const res = toRaw(this)[key].apply(this, args);
- resetTracking();
- return res;
- };
- });
- return instrumentations;
- }
- function hasOwnProperty(key) {
- const obj = toRaw(this);
- track(obj, "has", key);
- return obj.hasOwnProperty(key);
- }
- function createGetter(isReadonly2 = false, shallow = false) {
- return function get2(target, key, receiver) {
- if (key === "__v_isReactive") {
- return !isReadonly2;
- } else if (key === "__v_isReadonly") {
- return isReadonly2;
- } else if (key === "__v_isShallow") {
- return shallow;
- } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {
- return target;
- }
- const targetIsArray = isArray(target);
- if (!isReadonly2) {
- if (targetIsArray && hasOwn(arrayInstrumentations, key)) {
- return Reflect.get(arrayInstrumentations, key, receiver);
- }
- if (key === "hasOwnProperty") {
- return hasOwnProperty;
- }
- }
- const res = Reflect.get(target, key, receiver);
- if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
- return res;
- }
- if (!isReadonly2) {
- track(target, "get", key);
- }
- if (shallow) {
- return res;
- }
- if (isRef(res)) {
- return targetIsArray && isIntegerKey(key) ? res : res.value;
- }
- if (isObject(res)) {
- return isReadonly2 ? readonly(res) : reactive(res);
- }
- return res;
- };
- }
- const set$1 = /* @__PURE__ */ createSetter();
- const shallowSet = /* @__PURE__ */ createSetter(true);
- function createSetter(shallow = false) {
- return function set2(target, key, value, receiver) {
- let oldValue = target[key];
- if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
- return false;
- }
- if (!shallow) {
- if (!isShallow(value) && !isReadonly(value)) {
- oldValue = toRaw(oldValue);
- value = toRaw(value);
- }
- if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
- oldValue.value = value;
- return true;
- }
- }
- const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);
- const result = Reflect.set(target, key, value, receiver);
- if (target === toRaw(receiver)) {
- if (!hadKey) {
- trigger(target, "add", key, value);
- } else if (hasChanged(value, oldValue)) {
- trigger(target, "set", key, value, oldValue);
- }
- }
- return result;
- };
- }
- function deleteProperty(target, key) {
- const hadKey = hasOwn(target, key);
- const oldValue = target[key];
- const result = Reflect.deleteProperty(target, key);
- if (result && hadKey) {
- trigger(target, "delete", key, void 0, oldValue);
- }
- return result;
- }
- function has$1(target, key) {
- const result = Reflect.has(target, key);
- if (!isSymbol(key) || !builtInSymbols.has(key)) {
- track(target, "has", key);
- }
- return result;
- }
- function ownKeys(target) {
- track(target, "iterate", isArray(target) ? "length" : ITERATE_KEY);
- return Reflect.ownKeys(target);
- }
- const mutableHandlers = {
- get: get$1,
- set: set$1,
- deleteProperty,
- has: has$1,
- ownKeys
- };
- const readonlyHandlers = {
- get: readonlyGet,
- set(target, key) {
- {
- warn$1(
- `Set operation on key "${String(key)}" failed: target is readonly.`,
- target
- );
- }
- return true;
- },
- deleteProperty(target, key) {
- {
- warn$1(
- `Delete operation on key "${String(key)}" failed: target is readonly.`,
- target
- );
- }
- return true;
- }
- };
- const shallowReactiveHandlers = /* @__PURE__ */ extend(
- {},
- mutableHandlers,
- {
- get: shallowGet,
- set: shallowSet
- }
- );
- const shallowReadonlyHandlers = /* @__PURE__ */ extend(
- {},
- readonlyHandlers,
- {
- get: shallowReadonlyGet
- }
- );
- const toShallow = (value) => value;
- const getProto = (v) => Reflect.getPrototypeOf(v);
- function get(target, key, isReadonly = false, isShallow = false) {
- target = target["__v_raw"];
- const rawTarget = toRaw(target);
- const rawKey = toRaw(key);
- if (!isReadonly) {
- if (key !== rawKey) {
- track(rawTarget, "get", key);
- }
- track(rawTarget, "get", rawKey);
- }
- const { has: has2 } = getProto(rawTarget);
- const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
- if (has2.call(rawTarget, key)) {
- return wrap(target.get(key));
- } else if (has2.call(rawTarget, rawKey)) {
- return wrap(target.get(rawKey));
- } else if (target !== rawTarget) {
- target.get(key);
- }
- }
- function has(key, isReadonly = false) {
- const target = this["__v_raw"];
- const rawTarget = toRaw(target);
- const rawKey = toRaw(key);
- if (!isReadonly) {
- if (key !== rawKey) {
- track(rawTarget, "has", key);
- }
- track(rawTarget, "has", rawKey);
- }
- return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);
- }
- function size(target, isReadonly = false) {
- target = target["__v_raw"];
- !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY);
- return Reflect.get(target, "size", target);
- }
- function add(value) {
- value = toRaw(value);
- const target = toRaw(this);
- const proto = getProto(target);
- const hadKey = proto.has.call(target, value);
- if (!hadKey) {
- target.add(value);
- trigger(target, "add", value, value);
- }
- return this;
- }
- function set(key, value) {
- value = toRaw(value);
- const target = toRaw(this);
- const { has: has2, get: get2 } = getProto(target);
- let hadKey = has2.call(target, key);
- if (!hadKey) {
- key = toRaw(key);
- hadKey = has2.call(target, key);
- } else {
- checkIdentityKeys(target, has2, key);
- }
- const oldValue = get2.call(target, key);
- target.set(key, value);
- if (!hadKey) {
- trigger(target, "add", key, value);
- } else if (hasChanged(value, oldValue)) {
- trigger(target, "set", key, value, oldValue);
- }
- return this;
- }
- function deleteEntry(key) {
- const target = toRaw(this);
- const { has: has2, get: get2 } = getProto(target);
- let hadKey = has2.call(target, key);
- if (!hadKey) {
- key = toRaw(key);
- hadKey = has2.call(target, key);
- } else {
- checkIdentityKeys(target, has2, key);
- }
- const oldValue = get2 ? get2.call(target, key) : void 0;
- const result = target.delete(key);
- if (hadKey) {
- trigger(target, "delete", key, void 0, oldValue);
- }
- return result;
- }
- function clear() {
- const target = toRaw(this);
- const hadItems = target.size !== 0;
- const oldTarget = isMap(target) ? new Map(target) : new Set(target) ;
- const result = target.clear();
- if (hadItems) {
- trigger(target, "clear", void 0, void 0, oldTarget);
- }
- return result;
- }
- function createForEach(isReadonly, isShallow) {
- return function forEach(callback, thisArg) {
- const observed = this;
- const target = observed["__v_raw"];
- const rawTarget = toRaw(target);
- const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
- !isReadonly && track(rawTarget, "iterate", ITERATE_KEY);
- return target.forEach((value, key) => {
- return callback.call(thisArg, wrap(value), wrap(key), observed);
- });
- };
- }
- function createIterableMethod(method, isReadonly, isShallow) {
- return function(...args) {
- const target = this["__v_raw"];
- const rawTarget = toRaw(target);
- const targetIsMap = isMap(rawTarget);
- const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
- const isKeyOnly = method === "keys" && targetIsMap;
- const innerIterator = target[method](...args);
- const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
- !isReadonly && track(
- rawTarget,
- "iterate",
- isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY
- );
- return {
- // iterator protocol
- next() {
- const { value, done } = innerIterator.next();
- return done ? { value, done } : {
- value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
- done
- };
- },
- // iterable protocol
- [Symbol.iterator]() {
- return this;
- }
- };
- };
- }
- function createReadonlyMethod(type) {
- return function(...args) {
- {
- const key = args[0] ? `on key "${args[0]}" ` : ``;
- console.warn(
- `${capitalize(type)} operation ${key}failed: target is readonly.`,
- toRaw(this)
- );
- }
- return type === "delete" ? false : this;
- };
- }
- function createInstrumentations() {
- const mutableInstrumentations2 = {
- get(key) {
- return get(this, key);
- },
- get size() {
- return size(this);
- },
- has,
- add,
- set,
- delete: deleteEntry,
- clear,
- forEach: createForEach(false, false)
- };
- const shallowInstrumentations2 = {
- get(key) {
- return get(this, key, false, true);
- },
- get size() {
- return size(this);
- },
- has,
- add,
- set,
- delete: deleteEntry,
- clear,
- forEach: createForEach(false, true)
- };
- const readonlyInstrumentations2 = {
- get(key) {
- return get(this, key, true);
- },
- get size() {
- return size(this, true);
- },
- has(key) {
- return has.call(this, key, true);
- },
- add: createReadonlyMethod("add"),
- set: createReadonlyMethod("set"),
- delete: createReadonlyMethod("delete"),
- clear: createReadonlyMethod("clear"),
- forEach: createForEach(true, false)
- };
- const shallowReadonlyInstrumentations2 = {
- get(key) {
- return get(this, key, true, true);
- },
- get size() {
- return size(this, true);
- },
- has(key) {
- return has.call(this, key, true);
- },
- add: createReadonlyMethod("add"),
- set: createReadonlyMethod("set"),
- delete: createReadonlyMethod("delete"),
- clear: createReadonlyMethod("clear"),
- forEach: createForEach(true, true)
- };
- const iteratorMethods = ["keys", "values", "entries", Symbol.iterator];
- iteratorMethods.forEach((method) => {
- mutableInstrumentations2[method] = createIterableMethod(
- method,
- false,
- false
- );
- readonlyInstrumentations2[method] = createIterableMethod(
- method,
- true,
- false
- );
- shallowInstrumentations2[method] = createIterableMethod(
- method,
- false,
- true
- );
- shallowReadonlyInstrumentations2[method] = createIterableMethod(
- method,
- true,
- true
- );
- });
- return [
- mutableInstrumentations2,
- readonlyInstrumentations2,
- shallowInstrumentations2,
- shallowReadonlyInstrumentations2
- ];
- }
- const [
- mutableInstrumentations,
- readonlyInstrumentations,
- shallowInstrumentations,
- shallowReadonlyInstrumentations
- ] = /* @__PURE__ */ createInstrumentations();
- function createInstrumentationGetter(isReadonly, shallow) {
- const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;
- return (target, key, receiver) => {
- if (key === "__v_isReactive") {
- return !isReadonly;
- } else if (key === "__v_isReadonly") {
- return isReadonly;
- } else if (key === "__v_raw") {
- return target;
- }
- return Reflect.get(
- hasOwn(instrumentations, key) && key in target ? instrumentations : target,
- key,
- receiver
- );
- };
- }
- const mutableCollectionHandlers = {
- get: /* @__PURE__ */ createInstrumentationGetter(false, false)
- };
- const shallowCollectionHandlers = {
- get: /* @__PURE__ */ createInstrumentationGetter(false, true)
- };
- const readonlyCollectionHandlers = {
- get: /* @__PURE__ */ createInstrumentationGetter(true, false)
- };
- const shallowReadonlyCollectionHandlers = {
- get: /* @__PURE__ */ createInstrumentationGetter(true, true)
- };
- function checkIdentityKeys(target, has2, key) {
- const rawKey = toRaw(key);
- if (rawKey !== key && has2.call(target, rawKey)) {
- const type = toRawType(target);
- console.warn(
- `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`
- );
- }
- }
- const reactiveMap = /* @__PURE__ */ new WeakMap();
- const shallowReactiveMap = /* @__PURE__ */ new WeakMap();
- const readonlyMap = /* @__PURE__ */ new WeakMap();
- const shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
- function targetTypeMap(rawType) {
- switch (rawType) {
- case "Object":
- case "Array":
- return 1 /* COMMON */;
- case "Map":
- case "Set":
- case "WeakMap":
- case "WeakSet":
- return 2 /* COLLECTION */;
- default:
- return 0 /* INVALID */;
- }
- }
- function getTargetType(value) {
- return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));
- }
- function reactive(target) {
- if (isReadonly(target)) {
- return target;
- }
- return createReactiveObject(
- target,
- false,
- mutableHandlers,
- mutableCollectionHandlers,
- reactiveMap
- );
- }
- function shallowReactive(target) {
- return createReactiveObject(
- target,
- false,
- shallowReactiveHandlers,
- shallowCollectionHandlers,
- shallowReactiveMap
- );
- }
- function readonly(target) {
- return createReactiveObject(
- target,
- true,
- readonlyHandlers,
- readonlyCollectionHandlers,
- readonlyMap
- );
- }
- function shallowReadonly(target) {
- return createReactiveObject(
- target,
- true,
- shallowReadonlyHandlers,
- shallowReadonlyCollectionHandlers,
- shallowReadonlyMap
- );
- }
- function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {
- if (!isObject(target)) {
- {
- console.warn(`value cannot be made reactive: ${String(target)}`);
- }
- return target;
- }
- if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) {
- return target;
- }
- const existingProxy = proxyMap.get(target);
- if (existingProxy) {
- return existingProxy;
- }
- const targetType = getTargetType(target);
- if (targetType === 0 /* INVALID */) {
- return target;
- }
- const proxy = new Proxy(
- target,
- targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers
- );
- proxyMap.set(target, proxy);
- return proxy;
- }
- function isReactive(value) {
- if (isReadonly(value)) {
- return isReactive(value["__v_raw"]);
- }
- return !!(value && value["__v_isReactive"]);
- }
- function isReadonly(value) {
- return !!(value && value["__v_isReadonly"]);
- }
- function isShallow(value) {
- return !!(value && value["__v_isShallow"]);
- }
- function isProxy(value) {
- return isReactive(value) || isReadonly(value);
- }
- function toRaw(observed) {
- const raw = observed && observed["__v_raw"];
- return raw ? toRaw(raw) : observed;
- }
- function markRaw(value) {
- def(value, "__v_skip", true);
- return value;
- }
- const toReactive = (value) => isObject(value) ? reactive(value) : value;
- const toReadonly = (value) => isObject(value) ? readonly(value) : value;
- function trackRefValue(ref2) {
- if (shouldTrack && activeEffect) {
- ref2 = toRaw(ref2);
- {
- trackEffects(ref2.dep || (ref2.dep = createDep()), {
- target: ref2,
- type: "get",
- key: "value"
- });
- }
- }
- }
- function triggerRefValue(ref2, newVal) {
- ref2 = toRaw(ref2);
- const dep = ref2.dep;
- if (dep) {
- {
- triggerEffects(dep, {
- target: ref2,
- type: "set",
- key: "value",
- newValue: newVal
- });
- }
- }
- }
- function isRef(r) {
- return !!(r && r.__v_isRef === true);
- }
- function unref(ref2) {
- return isRef(ref2) ? ref2.value : ref2;
- }
- const shallowUnwrapHandlers = {
- get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),
- set: (target, key, value, receiver) => {
- const oldValue = target[key];
- if (isRef(oldValue) && !isRef(value)) {
- oldValue.value = value;
- return true;
- } else {
- return Reflect.set(target, key, value, receiver);
- }
- }
- };
- function proxyRefs(objectWithRefs) {
- return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);
- }
- class ComputedRefImpl {
- constructor(getter, _setter, isReadonly, isSSR) {
- this._setter = _setter;
- this.dep = void 0;
- this.__v_isRef = true;
- this["__v_isReadonly"] = false;
- this._dirty = true;
- this.effect = new ReactiveEffect(getter, () => {
- if (!this._dirty) {
- this._dirty = true;
- triggerRefValue(this);
- }
- });
- this.effect.computed = this;
- this.effect.active = this._cacheable = !isSSR;
- this["__v_isReadonly"] = isReadonly;
- }
- get value() {
- const self = toRaw(this);
- trackRefValue(self);
- if (self._dirty || !self._cacheable) {
- self._dirty = false;
- self._value = self.effect.run();
- }
- return self._value;
- }
- set value(newValue) {
- this._setter(newValue);
- }
- }
- function computed$1(getterOrOptions, debugOptions, isSSR = false) {
- let getter;
- let setter;
- const onlyGetter = isFunction(getterOrOptions);
- if (onlyGetter) {
- getter = getterOrOptions;
- setter = () => {
- console.warn("Write operation failed: computed value is readonly");
- } ;
- } else {
- getter = getterOrOptions.get;
- setter = getterOrOptions.set;
- }
- const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);
- if (debugOptions && !isSSR) {
- cRef.effect.onTrack = debugOptions.onTrack;
- cRef.effect.onTrigger = debugOptions.onTrigger;
- }
- return cRef;
- }
- const stack = [];
- function pushWarningContext(vnode) {
- stack.push(vnode);
- }
- function popWarningContext() {
- stack.pop();
- }
- function warn(msg, ...args) {
- pauseTracking();
- const instance = stack.length ? stack[stack.length - 1].component : null;
- const appWarnHandler = instance && instance.appContext.config.warnHandler;
- const trace = getComponentTrace();
- if (appWarnHandler) {
- callWithErrorHandling(
- appWarnHandler,
- instance,
- 11,
- [
- msg + args.join(""),
- instance && instance.proxy,
- trace.map(
- ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`
- ).join("\n"),
- trace
- ]
- );
- } else {
- const warnArgs = [`[Vue warn]: ${msg}`, ...args];
- if (trace.length && // avoid spamming console during tests
- true) {
- warnArgs.push(`
- `, ...formatTrace(trace));
- }
- console.warn(...warnArgs);
- }
- resetTracking();
- }
- function getComponentTrace() {
- let currentVNode = stack[stack.length - 1];
- if (!currentVNode) {
- return [];
- }
- const normalizedStack = [];
- while (currentVNode) {
- const last = normalizedStack[0];
- if (last && last.vnode === currentVNode) {
- last.recurseCount++;
- } else {
- normalizedStack.push({
- vnode: currentVNode,
- recurseCount: 0
- });
- }
- const parentInstance = currentVNode.component && currentVNode.component.parent;
- currentVNode = parentInstance && parentInstance.vnode;
- }
- return normalizedStack;
- }
- function formatTrace(trace) {
- const logs = [];
- trace.forEach((entry, i) => {
- logs.push(...i === 0 ? [] : [`
- `], ...formatTraceEntry(entry));
- });
- return logs;
- }
- function formatTraceEntry({ vnode, recurseCount }) {
- const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;
- const isRoot = vnode.component ? vnode.component.parent == null : false;
- const open = ` at <${formatComponentName(
- vnode.component,
- vnode.type,
- isRoot
- )}`;
- const close = `>` + postfix;
- return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];
- }
- function formatProps(props) {
- const res = [];
- const keys = Object.keys(props);
- keys.slice(0, 3).forEach((key) => {
- res.push(...formatProp(key, props[key]));
- });
- if (keys.length > 3) {
- res.push(` ...`);
- }
- return res;
- }
- function formatProp(key, value, raw) {
- if (isString(value)) {
- value = JSON.stringify(value);
- return raw ? value : [`${key}=${value}`];
- } else if (typeof value === "number" || typeof value === "boolean" || value == null) {
- return raw ? value : [`${key}=${value}`];
- } else if (isRef(value)) {
- value = formatProp(key, toRaw(value.value), true);
- return raw ? value : [`${key}=Ref<`, value, `>`];
- } else if (isFunction(value)) {
- return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];
- } else {
- value = toRaw(value);
- return raw ? value : [`${key}=`, value];
- }
- }
- const ErrorTypeStrings = {
- ["sp"]: "serverPrefetch hook",
- ["bc"]: "beforeCreate hook",
- ["c"]: "created hook",
- ["bm"]: "beforeMount hook",
- ["m"]: "mounted hook",
- ["bu"]: "beforeUpdate hook",
- ["u"]: "updated",
- ["bum"]: "beforeUnmount hook",
- ["um"]: "unmounted hook",
- ["a"]: "activated hook",
- ["da"]: "deactivated hook",
- ["ec"]: "errorCaptured hook",
- ["rtc"]: "renderTracked hook",
- ["rtg"]: "renderTriggered hook",
- [0]: "setup function",
- [1]: "render function",
- [2]: "watcher getter",
- [3]: "watcher callback",
- [4]: "watcher cleanup function",
- [5]: "native event handler",
- [6]: "component event handler",
- [7]: "vnode hook",
- [8]: "directive hook",
- [9]: "transition hook",
- [10]: "app errorHandler",
- [11]: "app warnHandler",
- [12]: "ref function",
- [13]: "async component loader",
- [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"
- };
- function callWithErrorHandling(fn, instance, type, args) {
- let res;
- try {
- res = args ? fn(...args) : fn();
- } catch (err) {
- handleError(err, instance, type);
- }
- return res;
- }
- function callWithAsyncErrorHandling(fn, instance, type, args) {
- if (isFunction(fn)) {
- const res = callWithErrorHandling(fn, instance, type, args);
- if (res && isPromise(res)) {
- res.catch((err) => {
- handleError(err, instance, type);
- });
- }
- return res;
- }
- const values = [];
- for (let i = 0; i < fn.length; i++) {
- values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));
- }
- return values;
- }
- function handleError(err, instance, type, throwInDev = true) {
- const contextVNode = instance ? instance.vnode : null;
- if (instance) {
- let cur = instance.parent;
- const exposedInstance = instance.proxy;
- const errorInfo = ErrorTypeStrings[type] ;
- while (cur) {
- const errorCapturedHooks = cur.ec;
- if (errorCapturedHooks) {
- for (let i = 0; i < errorCapturedHooks.length; i++) {
- if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {
- return;
- }
- }
- }
- cur = cur.parent;
- }
- const appErrorHandler = instance.appContext.config.errorHandler;
- if (appErrorHandler) {
- callWithErrorHandling(
- appErrorHandler,
- null,
- 10,
- [err, exposedInstance, errorInfo]
- );
- return;
- }
- }
- logError(err, type, contextVNode, throwInDev);
- }
- function logError(err, type, contextVNode, throwInDev = true) {
- {
- const info = ErrorTypeStrings[type];
- if (contextVNode) {
- pushWarningContext(contextVNode);
- }
- warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);
- if (contextVNode) {
- popWarningContext();
- }
- if (throwInDev) {
- throw err;
- } else {
- console.error(err);
- }
- }
- }
- let isFlushing = false;
- let isFlushPending = false;
- const queue = [];
- let flushIndex = 0;
- const pendingPostFlushCbs = [];
- let activePostFlushCbs = null;
- let postFlushIndex = 0;
- const resolvedPromise = /* @__PURE__ */ Promise.resolve();
- let currentFlushPromise = null;
- const RECURSION_LIMIT = 100;
- function nextTick(fn) {
- const p = currentFlushPromise || resolvedPromise;
- return fn ? p.then(this ? fn.bind(this) : fn) : p;
- }
- function findInsertionIndex(id) {
- let start = flushIndex + 1;
- let end = queue.length;
- while (start < end) {
- const middle = start + end >>> 1;
- const middleJobId = getId(queue[middle]);
- middleJobId < id ? start = middle + 1 : end = middle;
- }
- return start;
- }
- function queueJob(job) {
- if (!queue.length || !queue.includes(
- job,
- isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex
- )) {
- if (job.id == null) {
- queue.push(job);
- } else {
- queue.splice(findInsertionIndex(job.id), 0, job);
- }
- queueFlush();
- }
- }
- function queueFlush() {
- if (!isFlushing && !isFlushPending) {
- isFlushPending = true;
- currentFlushPromise = resolvedPromise.then(flushJobs);
- }
- }
- function invalidateJob(job) {
- const i = queue.indexOf(job);
- if (i > flushIndex) {
- queue.splice(i, 1);
- }
- }
- function queuePostFlushCb(cb) {
- if (!isArray(cb)) {
- if (!activePostFlushCbs || !activePostFlushCbs.includes(
- cb,
- cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex
- )) {
- pendingPostFlushCbs.push(cb);
- }
- } else {
- pendingPostFlushCbs.push(...cb);
- }
- queueFlush();
- }
- function flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) {
- {
- seen = seen || /* @__PURE__ */ new Map();
- }
- for (; i < queue.length; i++) {
- const cb = queue[i];
- if (cb && cb.pre) {
- if (checkRecursiveUpdates(seen, cb)) {
- continue;
- }
- queue.splice(i, 1);
- i--;
- cb();
- }
- }
- }
- function flushPostFlushCbs(seen) {
- if (pendingPostFlushCbs.length) {
- const deduped = [...new Set(pendingPostFlushCbs)];
- pendingPostFlushCbs.length = 0;
- if (activePostFlushCbs) {
- activePostFlushCbs.push(...deduped);
- return;
- }
- activePostFlushCbs = deduped;
- {
- seen = seen || /* @__PURE__ */ new Map();
- }
- activePostFlushCbs.sort((a, b) => getId(a) - getId(b));
- for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
- if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {
- continue;
- }
- activePostFlushCbs[postFlushIndex]();
- }
- activePostFlushCbs = null;
- postFlushIndex = 0;
- }
- }
- const getId = (job) => job.id == null ? Infinity : job.id;
- const comparator = (a, b) => {
- const diff = getId(a) - getId(b);
- if (diff === 0) {
- if (a.pre && !b.pre)
- return -1;
- if (b.pre && !a.pre)
- return 1;
- }
- return diff;
- };
- function flushJobs(seen) {
- isFlushPending = false;
- isFlushing = true;
- {
- seen = seen || /* @__PURE__ */ new Map();
- }
- queue.sort(comparator);
- const check = (job) => checkRecursiveUpdates(seen, job) ;
- try {
- for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {
- const job = queue[flushIndex];
- if (job && job.active !== false) {
- if (check(job)) {
- continue;
- }
- callWithErrorHandling(job, null, 14);
- }
- }
- } finally {
- flushIndex = 0;
- queue.length = 0;
- flushPostFlushCbs(seen);
- isFlushing = false;
- currentFlushPromise = null;
- if (queue.length || pendingPostFlushCbs.length) {
- flushJobs(seen);
- }
- }
- }
- function checkRecursiveUpdates(seen, fn) {
- if (!seen.has(fn)) {
- seen.set(fn, 1);
- } else {
- const count = seen.get(fn);
- if (count > RECURSION_LIMIT) {
- const instance = fn.ownerInstance;
- const componentName = instance && getComponentName(instance.type);
- warn(
- `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`
- );
- return true;
- } else {
- seen.set(fn, count + 1);
- }
- }
- }
- let isHmrUpdating = false;
- const hmrDirtyComponents = /* @__PURE__ */ new Set();
- {
- getGlobalThis().__VUE_HMR_RUNTIME__ = {
- createRecord: tryWrap(createRecord),
- rerender: tryWrap(rerender),
- reload: tryWrap(reload)
- };
- }
- const map = /* @__PURE__ */ new Map();
- function registerHMR(instance) {
- const id = instance.type.__hmrId;
- let record = map.get(id);
- if (!record) {
- createRecord(id, instance.type);
- record = map.get(id);
- }
- record.instances.add(instance);
- }
- function unregisterHMR(instance) {
- map.get(instance.type.__hmrId).instances.delete(instance);
- }
- function createRecord(id, initialDef) {
- if (map.has(id)) {
- return false;
- }
- map.set(id, {
- initialDef: normalizeClassComponent(initialDef),
- instances: /* @__PURE__ */ new Set()
- });
- return true;
- }
- function normalizeClassComponent(component) {
- return isClassComponent(component) ? component.__vccOpts : component;
- }
- function rerender(id, newRender) {
- const record = map.get(id);
- if (!record) {
- return;
- }
- record.initialDef.render = newRender;
- [...record.instances].forEach((instance) => {
- if (newRender) {
- instance.render = newRender;
- normalizeClassComponent(instance.type).render = newRender;
- }
- instance.renderCache = [];
- isHmrUpdating = true;
- instance.update();
- isHmrUpdating = false;
- });
- }
- function reload(id, newComp) {
- const record = map.get(id);
- if (!record)
- return;
- newComp = normalizeClassComponent(newComp);
- updateComponentDef(record.initialDef, newComp);
- const instances = [...record.instances];
- for (const instance of instances) {
- const oldComp = normalizeClassComponent(instance.type);
- if (!hmrDirtyComponents.has(oldComp)) {
- if (oldComp !== record.initialDef) {
- updateComponentDef(oldComp, newComp);
- }
- hmrDirtyComponents.add(oldComp);
- }
- instance.appContext.propsCache.delete(instance.type);
- instance.appContext.emitsCache.delete(instance.type);
- instance.appContext.optionsCache.delete(instance.type);
- if (instance.ceReload) {
- hmrDirtyComponents.add(oldComp);
- instance.ceReload(newComp.styles);
- hmrDirtyComponents.delete(oldComp);
- } else if (instance.parent) {
- queueJob(instance.parent.update);
- } else if (instance.appContext.reload) {
- instance.appContext.reload();
- } else if (typeof window !== "undefined") {
- window.location.reload();
- } else {
- console.warn(
- "[HMR] Root or manually mounted instance modified. Full reload required."
- );
- }
- }
- queuePostFlushCb(() => {
- for (const instance of instances) {
- hmrDirtyComponents.delete(
- normalizeClassComponent(instance.type)
- );
- }
- });
- }
- function updateComponentDef(oldComp, newComp) {
- extend(oldComp, newComp);
- for (const key in oldComp) {
- if (key !== "__file" && !(key in newComp)) {
- delete oldComp[key];
- }
- }
- }
- function tryWrap(fn) {
- return (id, arg) => {
- try {
- return fn(id, arg);
- } catch (e) {
- console.error(e);
- console.warn(
- `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`
- );
- }
- };
- }
- let devtools;
- let buffer = [];
- let devtoolsNotInstalled = false;
- function emit$1(event, ...args) {
- if (devtools) {
- devtools.emit(event, ...args);
- } else if (!devtoolsNotInstalled) {
- buffer.push({ event, args });
- }
- }
- function setDevtoolsHook(hook, target) {
- var _a, _b;
- devtools = hook;
- if (devtools) {
- devtools.enabled = true;
- buffer.forEach(({ event, args }) => devtools.emit(event, ...args));
- buffer = [];
- } else if (
- // handle late devtools injection - only do this if we are in an actual
- // browser environment to avoid the timer handle stalling test runner exit
- // (#4815)
- typeof window !== "undefined" && // some envs mock window but not fully
- window.HTMLElement && // also exclude jsdom
- !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom"))
- ) {
- const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];
- replay.push((newHook) => {
- setDevtoolsHook(newHook, target);
- });
- setTimeout(() => {
- if (!devtools) {
- target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;
- devtoolsNotInstalled = true;
- buffer = [];
- }
- }, 3e3);
- } else {
- devtoolsNotInstalled = true;
- buffer = [];
- }
- }
- function devtoolsInitApp(app, version) {
- emit$1("app:init" /* APP_INIT */, app, version, {
- Fragment,
- Text,
- Comment,
- Static
- });
- }
- function devtoolsUnmountApp(app) {
- emit$1("app:unmount" /* APP_UNMOUNT */, app);
- }
- const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(
- "component:added" /* COMPONENT_ADDED */
- );
- const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */);
- const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(
- "component:removed" /* COMPONENT_REMOVED */
- );
- const devtoolsComponentRemoved = (component) => {
- if (devtools && typeof devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered
- !devtools.cleanupBuffer(component)) {
- _devtoolsComponentRemoved(component);
- }
- };
- function createDevtoolsComponentHook(hook) {
- return (component) => {
- emit$1(
- hook,
- component.appContext.app,
- component.uid,
- component.parent ? component.parent.uid : void 0,
- component
- );
- };
- }
- const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(
- "perf:start" /* PERFORMANCE_START */
- );
- const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(
- "perf:end" /* PERFORMANCE_END */
- );
- function createDevtoolsPerformanceHook(hook) {
- return (component, type, time) => {
- emit$1(hook, component.appContext.app, component.uid, component, type, time);
- };
- }
- function devtoolsComponentEmit(component, event, params) {
- emit$1(
- "component:emit" /* COMPONENT_EMIT */,
- component.appContext.app,
- component,
- event,
- params
- );
- }
- function emit(instance, event, ...rawArgs) {
- if (instance.isUnmounted)
- return;
- const props = instance.vnode.props || EMPTY_OBJ;
- {
- const {
- emitsOptions,
- propsOptions: [propsOptions]
- } = instance;
- if (emitsOptions) {
- if (!(event in emitsOptions) && true) {
- if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {
- warn(
- `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.`
- );
- }
- } else {
- const validator = emitsOptions[event];
- if (isFunction(validator)) {
- const isValid = validator(...rawArgs);
- if (!isValid) {
- warn(
- `Invalid event arguments: event validation failed for event "${event}".`
- );
- }
- }
- }
- }
- }
- let args = rawArgs;
- const isModelListener = event.startsWith("update:");
- const modelArg = isModelListener && event.slice(7);
- if (modelArg && modelArg in props) {
- const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`;
- const { number, trim } = props[modifiersKey] || EMPTY_OBJ;
- if (trim) {
- args = rawArgs.map((a) => isString(a) ? a.trim() : a);
- }
- if (number) {
- args = rawArgs.map(looseToNumber);
- }
- }
- {
- devtoolsComponentEmit(instance, event, args);
- }
- {
- const lowerCaseEvent = event.toLowerCase();
- if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {
- warn(
- `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName(
- instance,
- instance.type
- )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate(event)}" instead of "${event}".`
- );
- }
- }
- let handlerName;
- let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)
- props[handlerName = toHandlerKey(camelize(event))];
- if (!handler && isModelListener) {
- handler = props[handlerName = toHandlerKey(hyphenate(event))];
- }
- if (handler) {
- callWithAsyncErrorHandling(
- handler,
- instance,
- 6,
- args
- );
- }
- const onceHandler = props[handlerName + `Once`];
- if (onceHandler) {
- if (!instance.emitted) {
- instance.emitted = {};
- } else if (instance.emitted[handlerName]) {
- return;
- }
- instance.emitted[handlerName] = true;
- callWithAsyncErrorHandling(
- onceHandler,
- instance,
- 6,
- args
- );
- }
- }
- function normalizeEmitsOptions(comp, appContext, asMixin = false) {
- const cache = appContext.emitsCache;
- const cached = cache.get(comp);
- if (cached !== void 0) {
- return cached;
- }
- const raw = comp.emits;
- let normalized = {};
- let hasExtends = false;
- if (!isFunction(comp)) {
- const extendEmits = (raw2) => {
- const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);
- if (normalizedFromExtend) {
- hasExtends = true;
- extend(normalized, normalizedFromExtend);
- }
- };
- if (!asMixin && appContext.mixins.length) {
- appContext.mixins.forEach(extendEmits);
- }
- if (comp.extends) {
- extendEmits(comp.extends);
- }
- if (comp.mixins) {
- comp.mixins.forEach(extendEmits);
- }
- }
- if (!raw && !hasExtends) {
- if (isObject(comp)) {
- cache.set(comp, null);
- }
- return null;
- }
- if (isArray(raw)) {
- raw.forEach((key) => normalized[key] = null);
- } else {
- extend(normalized, raw);
- }
- if (isObject(comp)) {
- cache.set(comp, normalized);
- }
- return normalized;
- }
- function isEmitListener(options, key) {
- if (!options || !isOn(key)) {
- return false;
- }
- key = key.slice(2).replace(/Once$/, "");
- return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);
- }
- let currentRenderingInstance = null;
- let currentScopeId = null;
- function setCurrentRenderingInstance$1(instance) {
- const prev = currentRenderingInstance;
- currentRenderingInstance = instance;
- currentScopeId = instance && instance.type.__scopeId || null;
- return prev;
- }
- function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {
- if (!ctx)
- return fn;
- if (fn._n) {
- return fn;
- }
- const renderFnWithContext = (...args) => {
- if (renderFnWithContext._d) {
- setBlockTracking(-1);
- }
- const prevInstance = setCurrentRenderingInstance$1(ctx);
- let res;
- try {
- res = fn(...args);
- } finally {
- setCurrentRenderingInstance$1(prevInstance);
- if (renderFnWithContext._d) {
- setBlockTracking(1);
- }
- }
- {
- devtoolsComponentUpdated(ctx);
- }
- return res;
- };
- renderFnWithContext._n = true;
- renderFnWithContext._c = true;
- renderFnWithContext._d = true;
- return renderFnWithContext;
- }
- let accessedAttrs = false;
- function markAttrsAccessed() {
- accessedAttrs = true;
- }
- function renderComponentRoot$1(instance) {
- const {
- type: Component,
- vnode,
- proxy,
- withProxy,
- props,
- propsOptions: [propsOptions],
- slots,
- attrs,
- emit,
- render,
- renderCache,
- data,
- setupState,
- ctx,
- inheritAttrs
- } = instance;
- let result;
- let fallthroughAttrs;
- const prev = setCurrentRenderingInstance$1(instance);
- {
- accessedAttrs = false;
- }
- try {
- if (vnode.shapeFlag & 4) {
- const proxyToUse = withProxy || proxy;
- result = normalizeVNode$1(
- render.call(
- proxyToUse,
- proxyToUse,
- renderCache,
- props,
- setupState,
- data,
- ctx
- )
- );
- fallthroughAttrs = attrs;
- } else {
- const render2 = Component;
- if (attrs === props) {
- markAttrsAccessed();
- }
- result = normalizeVNode$1(
- render2.length > 1 ? render2(
- props,
- true ? {
- get attrs() {
- markAttrsAccessed();
- return attrs;
- },
- slots,
- emit
- } : { attrs, slots, emit }
- ) : render2(
- props,
- null
- /* we know it doesn't need it */
- )
- );
- fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
- }
- } catch (err) {
- handleError(err, instance, 1);
- result = createVNode(Comment);
- }
- let root = result;
- let setRoot = void 0;
- if (result.patchFlag > 0 && result.patchFlag & 2048) {
- [root, setRoot] = getChildRoot(result);
- }
- if (fallthroughAttrs && inheritAttrs !== false) {
- const keys = Object.keys(fallthroughAttrs);
- const { shapeFlag } = root;
- if (keys.length) {
- if (shapeFlag & (1 | 6)) {
- if (propsOptions && keys.some(isModelListener)) {
- fallthroughAttrs = filterModelListeners(
- fallthroughAttrs,
- propsOptions
- );
- }
- root = cloneVNode(root, fallthroughAttrs);
- } else if (!accessedAttrs && root.type !== Comment) {
- const allAttrs = Object.keys(attrs);
- const eventAttrs = [];
- const extraAttrs = [];
- for (let i = 0, l = allAttrs.length; i < l; i++) {
- const key = allAttrs[i];
- if (isOn(key)) {
- if (!isModelListener(key)) {
- eventAttrs.push(key[2].toLowerCase() + key.slice(3));
- }
- } else {
- extraAttrs.push(key);
- }
- }
- if (extraAttrs.length) {
- warn(
- `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`
- );
- }
- if (eventAttrs.length) {
- warn(
- `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.`
- );
- }
- }
- }
- }
- if (vnode.dirs) {
- if (!isElementRoot(root)) {
- warn(
- `Runtime directive used on component with non-element root node. The directives will not function as intended.`
- );
- }
- root = cloneVNode(root);
- root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;
- }
- if (vnode.transition) {
- if (!isElementRoot(root)) {
- warn(
- `Component inside <Transition> renders non-element root node that cannot be animated.`
- );
- }
- root.transition = vnode.transition;
- }
- if (setRoot) {
- setRoot(root);
- } else {
- result = root;
- }
- setCurrentRenderingInstance$1(prev);
- return result;
- }
- const getChildRoot = (vnode) => {
- const rawChildren = vnode.children;
- const dynamicChildren = vnode.dynamicChildren;
- const childRoot = filterSingleRoot(rawChildren);
- if (!childRoot) {
- return [vnode, void 0];
- }
- const index = rawChildren.indexOf(childRoot);
- const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;
- const setRoot = (updatedRoot) => {
- rawChildren[index] = updatedRoot;
- if (dynamicChildren) {
- if (dynamicIndex > -1) {
- dynamicChildren[dynamicIndex] = updatedRoot;
- } else if (updatedRoot.patchFlag > 0) {
- vnode.dynamicChildren = [...dynamicChildren, updatedRoot];
- }
- }
- };
- return [normalizeVNode$1(childRoot), setRoot];
- };
- function filterSingleRoot(children) {
- let singleRoot;
- for (let i = 0; i < children.length; i++) {
- const child = children[i];
- if (isVNode$2(child)) {
- if (child.type !== Comment || child.children === "v-if") {
- if (singleRoot) {
- return;
- } else {
- singleRoot = child;
- }
- }
- } else {
- return;
- }
- }
- return singleRoot;
- }
- const getFunctionalFallthrough = (attrs) => {
- let res;
- for (const key in attrs) {
- if (key === "class" || key === "style" || isOn(key)) {
- (res || (res = {}))[key] = attrs[key];
- }
- }
- return res;
- };
- const filterModelListeners = (attrs, props) => {
- const res = {};
- for (const key in attrs) {
- if (!isModelListener(key) || !(key.slice(9) in props)) {
- res[key] = attrs[key];
- }
- }
- return res;
- };
- const isElementRoot = (vnode) => {
- return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;
- };
- function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
- const { props: prevProps, children: prevChildren, component } = prevVNode;
- const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;
- const emits = component.emitsOptions;
- if ((prevChildren || nextChildren) && isHmrUpdating) {
- return true;
- }
- if (nextVNode.dirs || nextVNode.transition) {
- return true;
- }
- if (optimized && patchFlag >= 0) {
- if (patchFlag & 1024) {
- return true;
- }
- if (patchFlag & 16) {
- if (!prevProps) {
- return !!nextProps;
- }
- return hasPropsChanged(prevProps, nextProps, emits);
- } else if (patchFlag & 8) {
- const dynamicProps = nextVNode.dynamicProps;
- for (let i = 0; i < dynamicProps.length; i++) {
- const key = dynamicProps[i];
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
- return true;
- }
- }
- }
- } else {
- if (prevChildren || nextChildren) {
- if (!nextChildren || !nextChildren.$stable) {
- return true;
- }
- }
- if (prevProps === nextProps) {
- return false;
- }
- if (!prevProps) {
- return !!nextProps;
- }
- if (!nextProps) {
- return true;
- }
- return hasPropsChanged(prevProps, nextProps, emits);
- }
- return false;
- }
- function hasPropsChanged(prevProps, nextProps, emitsOptions) {
- const nextKeys = Object.keys(nextProps);
- if (nextKeys.length !== Object.keys(prevProps).length) {
- return true;
- }
- for (let i = 0; i < nextKeys.length; i++) {
- const key = nextKeys[i];
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
- return true;
- }
- }
- return false;
- }
- function updateHOCHostEl({ vnode, parent }, el) {
- while (parent && parent.subTree === vnode) {
- (vnode = parent.vnode).el = el;
- parent = parent.parent;
- }
- }
- const isSuspense = (type) => type.__isSuspense;
- function queueEffectWithSuspense(fn, suspense) {
- if (suspense && suspense.pendingBranch) {
- if (isArray(fn)) {
- suspense.effects.push(...fn);
- } else {
- suspense.effects.push(fn);
- }
- } else {
- queuePostFlushCb(fn);
- }
- }
- const INITIAL_WATCHER_VALUE = {};
- function watch(source, cb, options) {
- if (!isFunction(cb)) {
- warn(
- `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.`
- );
- }
- return doWatch(source, cb, options);
- }
- function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {
- var _a;
- if (!cb) {
- if (immediate !== void 0) {
- warn(
- `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.`
- );
- }
- if (deep !== void 0) {
- warn(
- `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.`
- );
- }
- }
- const warnInvalidSource = (s) => {
- warn(
- `Invalid watch source: `,
- s,
- `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`
- );
- };
- const instance = getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null;
- let getter;
- let forceTrigger = false;
- let isMultiSource = false;
- if (isRef(source)) {
- getter = () => source.value;
- forceTrigger = isShallow(source);
- } else if (isReactive(source)) {
- getter = () => source;
- deep = true;
- } else if (isArray(source)) {
- isMultiSource = true;
- forceTrigger = source.some((s) => isReactive(s) || isShallow(s));
- getter = () => source.map((s) => {
- if (isRef(s)) {
- return s.value;
- } else if (isReactive(s)) {
- return traverse(s);
- } else if (isFunction(s)) {
- return callWithErrorHandling(s, instance, 2);
- } else {
- warnInvalidSource(s);
- }
- });
- } else if (isFunction(source)) {
- if (cb) {
- getter = () => callWithErrorHandling(source, instance, 2);
- } else {
- getter = () => {
- if (instance && instance.isUnmounted) {
- return;
- }
- if (cleanup) {
- cleanup();
- }
- return callWithAsyncErrorHandling(
- source,
- instance,
- 3,
- [onCleanup]
- );
- };
- }
- } else {
- getter = NOOP;
- warnInvalidSource(source);
- }
- if (cb && deep) {
- const baseGetter = getter;
- getter = () => traverse(baseGetter());
- }
- let cleanup;
- let onCleanup = (fn) => {
- cleanup = effect.onStop = () => {
- callWithErrorHandling(fn, instance, 4);
- };
- };
- let ssrCleanup;
- if (isInSSRComponentSetup) {
- onCleanup = NOOP;
- if (!cb) {
- getter();
- } else if (immediate) {
- callWithAsyncErrorHandling(cb, instance, 3, [
- getter(),
- isMultiSource ? [] : void 0,
- onCleanup
- ]);
- }
- if (flush === "sync") {
- const ctx = useSSRContext();
- ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);
- } else {
- return NOOP;
- }
- }
- let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
- const job = () => {
- if (!effect.active) {
- return;
- }
- if (cb) {
- const newValue = effect.run();
- if (deep || forceTrigger || (isMultiSource ? newValue.some(
- (v, i) => hasChanged(v, oldValue[i])
- ) : hasChanged(newValue, oldValue)) || false) {
- if (cleanup) {
- cleanup();
- }
- callWithAsyncErrorHandling(cb, instance, 3, [
- newValue,
- // pass undefined as the old value when it's changed for the first time
- oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
- onCleanup
- ]);
- oldValue = newValue;
- }
- } else {
- effect.run();
- }
- };
- job.allowRecurse = !!cb;
- let scheduler;
- if (flush === "sync") {
- scheduler = job;
- } else if (flush === "post") {
- scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);
- } else {
- job.pre = true;
- if (instance)
- job.id = instance.uid;
- scheduler = () => queueJob(job);
- }
- const effect = new ReactiveEffect(getter, scheduler);
- {
- effect.onTrack = onTrack;
- effect.onTrigger = onTrigger;
- }
- if (cb) {
- if (immediate) {
- job();
- } else {
- oldValue = effect.run();
- }
- } else if (flush === "post") {
- queuePostRenderEffect(
- effect.run.bind(effect),
- instance && instance.suspense
- );
- } else {
- effect.run();
- }
- const unwatch = () => {
- effect.stop();
- if (instance && instance.scope) {
- remove(instance.scope.effects, effect);
- }
- };
- if (ssrCleanup)
- ssrCleanup.push(unwatch);
- return unwatch;
- }
- function instanceWatch(source, value, options) {
- const publicThis = this.proxy;
- const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);
- let cb;
- if (isFunction(value)) {
- cb = value;
- } else {
- cb = value.handler;
- options = value;
- }
- const cur = currentInstance;
- setCurrentInstance(this);
- const res = doWatch(getter, cb.bind(publicThis), options);
- if (cur) {
- setCurrentInstance(cur);
- } else {
- unsetCurrentInstance();
- }
- return res;
- }
- function createPathGetter(ctx, path) {
- const segments = path.split(".");
- return () => {
- let cur = ctx;
- for (let i = 0; i < segments.length && cur; i++) {
- cur = cur[segments[i]];
- }
- return cur;
- };
- }
- function traverse(value, seen) {
- if (!isObject(value) || value["__v_skip"]) {
- return value;
- }
- seen = seen || /* @__PURE__ */ new Set();
- if (seen.has(value)) {
- return value;
- }
- seen.add(value);
- if (isRef(value)) {
- traverse(value.value, seen);
- } else if (isArray(value)) {
- for (let i = 0; i < value.length; i++) {
- traverse(value[i], seen);
- }
- } else if (isSet(value) || isMap(value)) {
- value.forEach((v) => {
- traverse(v, seen);
- });
- } else if (isPlainObject(value)) {
- for (const key in value) {
- traverse(value[key], seen);
- }
- }
- return value;
- }
- function validateDirectiveName(name) {
- if (isBuiltInDirective(name)) {
- warn("Do not use built-in directive ids as custom directive id: " + name);
- }
- }
- function invokeDirectiveHook(vnode, prevVNode, instance, name) {
- const bindings = vnode.dirs;
- const oldBindings = prevVNode && prevVNode.dirs;
- for (let i = 0; i < bindings.length; i++) {
- const binding = bindings[i];
- if (oldBindings) {
- binding.oldValue = oldBindings[i].value;
- }
- let hook = binding.dir[name];
- if (hook) {
- pauseTracking();
- callWithAsyncErrorHandling(hook, instance, 8, [
- vnode.el,
- binding,
- vnode,
- prevVNode
- ]);
- resetTracking();
- }
- }
- }
- const isAsyncWrapper = (i) => !!i.type.__asyncLoader;
- const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
- function onActivated(hook, target) {
- registerKeepAliveHook(hook, "a", target);
- }
- function onDeactivated(hook, target) {
- registerKeepAliveHook(hook, "da", target);
- }
- function registerKeepAliveHook(hook, type, target = currentInstance) {
- const wrappedHook = hook.__wdc || (hook.__wdc = () => {
- let current = target;
- while (current) {
- if (current.isDeactivated) {
- return;
- }
- current = current.parent;
- }
- return hook();
- });
- injectHook(type, wrappedHook, target);
- if (target) {
- let current = target.parent;
- while (current && current.parent) {
- if (isKeepAlive(current.parent.vnode)) {
- injectToKeepAliveRoot(wrappedHook, type, target, current);
- }
- current = current.parent;
- }
- }
- }
- function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
- const injected = injectHook(
- type,
- hook,
- keepAliveRoot,
- true
- /* prepend */
- );
- onUnmounted(() => {
- remove(keepAliveRoot[type], injected);
- }, target);
- }
- function injectHook(type, hook, target = currentInstance, prepend = false) {
- if (target) {
- const hooks = target[type] || (target[type] = []);
- const wrappedHook = hook.__weh || (hook.__weh = (...args) => {
- if (target.isUnmounted) {
- return;
- }
- pauseTracking();
- setCurrentInstance(target);
- const res = callWithAsyncErrorHandling(hook, target, type, args);
- unsetCurrentInstance();
- resetTracking();
- return res;
- });
- if (prepend) {
- hooks.unshift(wrappedHook);
- } else {
- hooks.push(wrappedHook);
- }
- return wrappedHook;
- } else {
- const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ""));
- warn(
- `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )
- );
- }
- }
- const createHook = (lifecycle) => (hook, target = currentInstance) => (
- // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
- (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target)
- );
- const onBeforeMount = createHook("bm");
- const onMounted = createHook("m");
- const onBeforeUpdate = createHook("bu");
- const onUpdated = createHook("u");
- const onBeforeUnmount = createHook("bum");
- const onUnmounted = createHook("um");
- const onServerPrefetch = createHook("sp");
- const onRenderTriggered = createHook(
- "rtg"
- );
- const onRenderTracked = createHook(
- "rtc"
- );
- function onErrorCaptured(hook, target = currentInstance) {
- injectHook("ec", hook, target);
- }
- const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc");
- const getPublicInstance = (i) => {
- if (!i)
- return null;
- if (isStatefulComponent(i))
- return getExposeProxy(i) || i.proxy;
- return getPublicInstance(i.parent);
- };
- const publicPropertiesMap = (
- // Move PURE marker to new line to workaround compiler discarding it
- // due to type annotation
- /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {
- $: (i) => i,
- $el: (i) => i.vnode.el,
- $data: (i) => i.data,
- $props: (i) => shallowReadonly(i.props) ,
- $attrs: (i) => shallowReadonly(i.attrs) ,
- $slots: (i) => shallowReadonly(i.slots) ,
- $refs: (i) => shallowReadonly(i.refs) ,
- $parent: (i) => getPublicInstance(i.parent),
- $root: (i) => getPublicInstance(i.root),
- $emit: (i) => i.emit,
- $options: (i) => resolveMergedOptions(i) ,
- $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)),
- $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),
- $watch: (i) => instanceWatch.bind(i)
- })
- );
- const isReservedPrefix = (key) => key === "_" || key === "$";
- const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);
- const PublicInstanceProxyHandlers = {
- get({ _: instance }, key) {
- const { ctx, setupState, data, props, accessCache, type, appContext } = instance;
- if (key === "__isVue") {
- return true;
- }
- let normalizedProps;
- if (key[0] !== "$") {
- const n = accessCache[key];
- if (n !== void 0) {
- switch (n) {
- case 1 /* SETUP */:
- return setupState[key];
- case 2 /* DATA */:
- return data[key];
- case 4 /* CONTEXT */:
- return ctx[key];
- case 3 /* PROPS */:
- return props[key];
- }
- } else if (hasSetupBinding(setupState, key)) {
- accessCache[key] = 1 /* SETUP */;
- return setupState[key];
- } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
- accessCache[key] = 2 /* DATA */;
- return data[key];
- } else if (
- // only cache other properties when instance has declared (thus stable)
- // props
- (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)
- ) {
- accessCache[key] = 3 /* PROPS */;
- return props[key];
- } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
- accessCache[key] = 4 /* CONTEXT */;
- return ctx[key];
- } else if (shouldCacheAccess) {
- accessCache[key] = 0 /* OTHER */;
- }
- }
- const publicGetter = publicPropertiesMap[key];
- let cssModule, globalProperties;
- if (publicGetter) {
- if (key === "$attrs") {
- track(instance, "get", key);
- markAttrsAccessed();
- } else if (key === "$slots") {
- track(instance, "get", key);
- }
- return publicGetter(instance);
- } else if (
- // css module (injected by vue-loader)
- (cssModule = type.__cssModules) && (cssModule = cssModule[key])
- ) {
- return cssModule;
- } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
- accessCache[key] = 4 /* CONTEXT */;
- return ctx[key];
- } else if (
- // global properties
- globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)
- ) {
- {
- return globalProperties[key];
- }
- } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading
- // to infinite warning loop
- key.indexOf("__v") !== 0)) {
- if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {
- warn(
- `Property ${JSON.stringify(
- key
- )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`
- );
- } else if (instance === currentRenderingInstance) {
- warn(
- `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`
- );
- }
- }
- },
- set({ _: instance }, key, value) {
- const { data, setupState, ctx } = instance;
- if (hasSetupBinding(setupState, key)) {
- setupState[key] = value;
- return true;
- } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) {
- warn(`Cannot mutate <script setup> binding "${key}" from Options API.`);
- return false;
- } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
- data[key] = value;
- return true;
- } else if (hasOwn(instance.props, key)) {
- warn(`Attempting to mutate prop "${key}". Props are readonly.`);
- return false;
- }
- if (key[0] === "$" && key.slice(1) in instance) {
- warn(
- `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.`
- );
- return false;
- } else {
- if (key in instance.appContext.config.globalProperties) {
- Object.defineProperty(ctx, key, {
- enumerable: true,
- configurable: true,
- value
- });
- } else {
- ctx[key] = value;
- }
- }
- return true;
- },
- has({
- _: { data, setupState, accessCache, ctx, appContext, propsOptions }
- }, key) {
- let normalizedProps;
- return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);
- },
- defineProperty(target, key, descriptor) {
- if (descriptor.get != null) {
- target._.accessCache[key] = 0;
- } else if (hasOwn(descriptor, "value")) {
- this.set(target, key, descriptor.value, null);
- }
- return Reflect.defineProperty(target, key, descriptor);
- }
- };
- {
- PublicInstanceProxyHandlers.ownKeys = (target) => {
- warn(
- `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`
- );
- return Reflect.ownKeys(target);
- };
- }
- function createDevRenderContext(instance) {
- const target = {};
- Object.defineProperty(target, `_`, {
- configurable: true,
- enumerable: false,
- get: () => instance
- });
- Object.keys(publicPropertiesMap).forEach((key) => {
- Object.defineProperty(target, key, {
- configurable: true,
- enumerable: false,
- get: () => publicPropertiesMap[key](instance),
- // intercepted by the proxy so no need for implementation,
- // but needed to prevent set errors
- set: NOOP
- });
- });
- return target;
- }
- function exposePropsOnRenderContext(instance) {
- const {
- ctx,
- propsOptions: [propsOptions]
- } = instance;
- if (propsOptions) {
- Object.keys(propsOptions).forEach((key) => {
- Object.defineProperty(ctx, key, {
- enumerable: true,
- configurable: true,
- get: () => instance.props[key],
- set: NOOP
- });
- });
- }
- }
- function exposeSetupStateOnRenderContext(instance) {
- const { ctx, setupState } = instance;
- Object.keys(toRaw(setupState)).forEach((key) => {
- if (!setupState.__isScriptSetup) {
- if (isReservedPrefix(key[0])) {
- warn(
- `setup() return property ${JSON.stringify(
- key
- )} should not start with "$" or "_" which are reserved prefixes for Vue internals.`
- );
- return;
- }
- Object.defineProperty(ctx, key, {
- enumerable: true,
- configurable: true,
- get: () => setupState[key],
- set: NOOP
- });
- }
- });
- }
- function normalizePropsOrEmits(props) {
- return isArray(props) ? props.reduce(
- (normalized, p) => (normalized[p] = null, normalized),
- {}
- ) : props;
- }
- function createDuplicateChecker() {
- const cache = /* @__PURE__ */ Object.create(null);
- return (type, key) => {
- if (cache[key]) {
- warn(`${type} property "${key}" is already defined in ${cache[key]}.`);
- } else {
- cache[key] = type;
- }
- };
- }
- let shouldCacheAccess = true;
- function applyOptions(instance) {
- const options = resolveMergedOptions(instance);
- const publicThis = instance.proxy;
- const ctx = instance.ctx;
- shouldCacheAccess = false;
- if (options.beforeCreate) {
- callHook(options.beforeCreate, instance, "bc");
- }
- const {
- // state
- data: dataOptions,
- computed: computedOptions,
- methods,
- watch: watchOptions,
- provide: provideOptions,
- inject: injectOptions,
- // lifecycle
- created,
- beforeMount,
- mounted,
- beforeUpdate,
- updated,
- activated,
- deactivated,
- beforeDestroy,
- beforeUnmount,
- destroyed,
- unmounted,
- render,
- renderTracked,
- renderTriggered,
- errorCaptured,
- serverPrefetch,
- // public API
- expose,
- inheritAttrs,
- // assets
- components,
- directives,
- filters
- } = options;
- const checkDuplicateProperties = createDuplicateChecker() ;
- {
- const [propsOptions] = instance.propsOptions;
- if (propsOptions) {
- for (const key in propsOptions) {
- checkDuplicateProperties("Props" /* PROPS */, key);
- }
- }
- }
- if (injectOptions) {
- resolveInjections(injectOptions, ctx, checkDuplicateProperties);
- }
- if (methods) {
- for (const key in methods) {
- const methodHandler = methods[key];
- if (isFunction(methodHandler)) {
- {
- Object.defineProperty(ctx, key, {
- value: methodHandler.bind(publicThis),
- configurable: true,
- enumerable: true,
- writable: true
- });
- }
- {
- checkDuplicateProperties("Methods" /* METHODS */, key);
- }
- } else {
- warn(
- `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?`
- );
- }
- }
- }
- if (dataOptions) {
- if (!isFunction(dataOptions)) {
- warn(
- `The data option must be a function. Plain object usage is no longer supported.`
- );
- }
- const data = dataOptions.call(publicThis, publicThis);
- if (isPromise(data)) {
- warn(
- `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`
- );
- }
- if (!isObject(data)) {
- warn(`data() should return an object.`);
- } else {
- instance.data = reactive(data);
- {
- for (const key in data) {
- checkDuplicateProperties("Data" /* DATA */, key);
- if (!isReservedPrefix(key[0])) {
- Object.defineProperty(ctx, key, {
- configurable: true,
- enumerable: true,
- get: () => data[key],
- set: NOOP
- });
- }
- }
- }
- }
- }
- shouldCacheAccess = true;
- if (computedOptions) {
- for (const key in computedOptions) {
- const opt = computedOptions[key];
- const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;
- if (get === NOOP) {
- warn(`Computed property "${key}" has no getter.`);
- }
- const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : () => {
- warn(
- `Write operation failed: computed property "${key}" is readonly.`
- );
- } ;
- const c = computed({
- get,
- set
- });
- Object.defineProperty(ctx, key, {
- enumerable: true,
- configurable: true,
- get: () => c.value,
- set: (v) => c.value = v
- });
- {
- checkDuplicateProperties("Computed" /* COMPUTED */, key);
- }
- }
- }
- if (watchOptions) {
- for (const key in watchOptions) {
- createWatcher(watchOptions[key], ctx, publicThis, key);
- }
- }
- if (provideOptions) {
- const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;
- Reflect.ownKeys(provides).forEach((key) => {
- provide(key, provides[key]);
- });
- }
- if (created) {
- callHook(created, instance, "c");
- }
- function registerLifecycleHook(register, hook) {
- if (isArray(hook)) {
- hook.forEach((_hook) => register(_hook.bind(publicThis)));
- } else if (hook) {
- register(hook.bind(publicThis));
- }
- }
- registerLifecycleHook(onBeforeMount, beforeMount);
- registerLifecycleHook(onMounted, mounted);
- registerLifecycleHook(onBeforeUpdate, beforeUpdate);
- registerLifecycleHook(onUpdated, updated);
- registerLifecycleHook(onActivated, activated);
- registerLifecycleHook(onDeactivated, deactivated);
- registerLifecycleHook(onErrorCaptured, errorCaptured);
- registerLifecycleHook(onRenderTracked, renderTracked);
- registerLifecycleHook(onRenderTriggered, renderTriggered);
- registerLifecycleHook(onBeforeUnmount, beforeUnmount);
- registerLifecycleHook(onUnmounted, unmounted);
- registerLifecycleHook(onServerPrefetch, serverPrefetch);
- if (isArray(expose)) {
- if (expose.length) {
- const exposed = instance.exposed || (instance.exposed = {});
- expose.forEach((key) => {
- Object.defineProperty(exposed, key, {
- get: () => publicThis[key],
- set: (val) => publicThis[key] = val
- });
- });
- } else if (!instance.exposed) {
- instance.exposed = {};
- }
- }
- if (render && instance.render === NOOP) {
- instance.render = render;
- }
- if (inheritAttrs != null) {
- instance.inheritAttrs = inheritAttrs;
- }
- if (components)
- instance.components = components;
- if (directives)
- instance.directives = directives;
- }
- function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {
- if (isArray(injectOptions)) {
- injectOptions = normalizeInject(injectOptions);
- }
- for (const key in injectOptions) {
- const opt = injectOptions[key];
- let injected;
- if (isObject(opt)) {
- if ("default" in opt) {
- injected = inject(
- opt.from || key,
- opt.default,
- true
- /* treat default function as factory */
- );
- } else {
- injected = inject(opt.from || key);
- }
- } else {
- injected = inject(opt);
- }
- if (isRef(injected)) {
- Object.defineProperty(ctx, key, {
- enumerable: true,
- configurable: true,
- get: () => injected.value,
- set: (v) => injected.value = v
- });
- } else {
- ctx[key] = injected;
- }
- {
- checkDuplicateProperties("Inject" /* INJECT */, key);
- }
- }
- }
- function callHook(hook, instance, type) {
- callWithAsyncErrorHandling(
- isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),
- instance,
- type
- );
- }
- function createWatcher(raw, ctx, publicThis, key) {
- const getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key];
- if (isString(raw)) {
- const handler = ctx[raw];
- if (isFunction(handler)) {
- watch(getter, handler);
- } else {
- warn(`Invalid watch handler specified by key "${raw}"`, handler);
- }
- } else if (isFunction(raw)) {
- watch(getter, raw.bind(publicThis));
- } else if (isObject(raw)) {
- if (isArray(raw)) {
- raw.forEach((r) => createWatcher(r, ctx, publicThis, key));
- } else {
- const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];
- if (isFunction(handler)) {
- watch(getter, handler, raw);
- } else {
- warn(`Invalid watch handler specified by key "${raw.handler}"`, handler);
- }
- }
- } else {
- warn(`Invalid watch option: "${key}"`, raw);
- }
- }
- function resolveMergedOptions(instance) {
- const base = instance.type;
- const { mixins, extends: extendsOptions } = base;
- const {
- mixins: globalMixins,
- optionsCache: cache,
- config: { optionMergeStrategies }
- } = instance.appContext;
- const cached = cache.get(base);
- let resolved;
- if (cached) {
- resolved = cached;
- } else if (!globalMixins.length && !mixins && !extendsOptions) {
- {
- resolved = base;
- }
- } else {
- resolved = {};
- if (globalMixins.length) {
- globalMixins.forEach(
- (m) => mergeOptions(resolved, m, optionMergeStrategies, true)
- );
- }
- mergeOptions(resolved, base, optionMergeStrategies);
- }
- if (isObject(base)) {
- cache.set(base, resolved);
- }
- return resolved;
- }
- function mergeOptions(to, from, strats, asMixin = false) {
- const { mixins, extends: extendsOptions } = from;
- if (extendsOptions) {
- mergeOptions(to, extendsOptions, strats, true);
- }
- if (mixins) {
- mixins.forEach(
- (m) => mergeOptions(to, m, strats, true)
- );
- }
- for (const key in from) {
- if (asMixin && key === "expose") {
- warn(
- `"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`
- );
- } else {
- const strat = internalOptionMergeStrats[key] || strats && strats[key];
- to[key] = strat ? strat(to[key], from[key]) : from[key];
- }
- }
- return to;
- }
- const internalOptionMergeStrats = {
- data: mergeDataFn,
- props: mergeEmitsOrPropsOptions,
- emits: mergeEmitsOrPropsOptions,
- // objects
- methods: mergeObjectOptions,
- computed: mergeObjectOptions,
- // lifecycle
- beforeCreate: mergeAsArray,
- created: mergeAsArray,
- beforeMount: mergeAsArray,
- mounted: mergeAsArray,
- beforeUpdate: mergeAsArray,
- updated: mergeAsArray,
- beforeDestroy: mergeAsArray,
- beforeUnmount: mergeAsArray,
- destroyed: mergeAsArray,
- unmounted: mergeAsArray,
- activated: mergeAsArray,
- deactivated: mergeAsArray,
- errorCaptured: mergeAsArray,
- serverPrefetch: mergeAsArray,
- // assets
- components: mergeObjectOptions,
- directives: mergeObjectOptions,
- // watch
- watch: mergeWatchOptions,
- // provide / inject
- provide: mergeDataFn,
- inject: mergeInject
- };
- function mergeDataFn(to, from) {
- if (!from) {
- return to;
- }
- if (!to) {
- return from;
- }
- return function mergedDataFn() {
- return (extend)(
- isFunction(to) ? to.call(this, this) : to,
- isFunction(from) ? from.call(this, this) : from
- );
- };
- }
- function mergeInject(to, from) {
- return mergeObjectOptions(normalizeInject(to), normalizeInject(from));
- }
- function normalizeInject(raw) {
- if (isArray(raw)) {
- const res = {};
- for (let i = 0; i < raw.length; i++) {
- res[raw[i]] = raw[i];
- }
- return res;
- }
- return raw;
- }
- function mergeAsArray(to, from) {
- return to ? [...new Set([].concat(to, from))] : from;
- }
- function mergeObjectOptions(to, from) {
- return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;
- }
- function mergeEmitsOrPropsOptions(to, from) {
- if (to) {
- if (isArray(to) && isArray(from)) {
- return [.../* @__PURE__ */ new Set([...to, ...from])];
- }
- return extend(
- /* @__PURE__ */ Object.create(null),
- normalizePropsOrEmits(to),
- normalizePropsOrEmits(from != null ? from : {})
- );
- } else {
- return from;
- }
- }
- function mergeWatchOptions(to, from) {
- if (!to)
- return from;
- if (!from)
- return to;
- const merged = extend(/* @__PURE__ */ Object.create(null), to);
- for (const key in from) {
- merged[key] = mergeAsArray(to[key], from[key]);
- }
- return merged;
- }
- function createAppContext() {
- return {
- app: null,
- config: {
- isNativeTag: NO,
- performance: false,
- globalProperties: {},
- optionMergeStrategies: {},
- errorHandler: void 0,
- warnHandler: void 0,
- compilerOptions: {}
- },
- mixins: [],
- components: {},
- directives: {},
- provides: /* @__PURE__ */ Object.create(null),
- optionsCache: /* @__PURE__ */ new WeakMap(),
- propsCache: /* @__PURE__ */ new WeakMap(),
- emitsCache: /* @__PURE__ */ new WeakMap()
- };
- }
- let uid$1 = 0;
- function createAppAPI(render, hydrate) {
- return function createApp(rootComponent, rootProps = null) {
- if (!isFunction(rootComponent)) {
- rootComponent = extend({}, rootComponent);
- }
- if (rootProps != null && !isObject(rootProps)) {
- warn(`root props passed to app.mount() must be an object.`);
- rootProps = null;
- }
- const context = createAppContext();
- {
- Object.defineProperty(context.config, "unwrapInjectedRef", {
- get() {
- return true;
- },
- set() {
- warn(
- `app.config.unwrapInjectedRef has been deprecated. 3.3 now alawys unwraps injected refs in Options API.`
- );
- }
- });
- }
- const installedPlugins = /* @__PURE__ */ new Set();
- let isMounted = false;
- const app = context.app = {
- _uid: uid$1++,
- _component: rootComponent,
- _props: rootProps,
- _container: null,
- _context: context,
- _instance: null,
- version,
- get config() {
- return context.config;
- },
- set config(v) {
- {
- warn(
- `app.config cannot be replaced. Modify individual options instead.`
- );
- }
- },
- use(plugin, ...options) {
- if (installedPlugins.has(plugin)) {
- warn(`Plugin has already been applied to target app.`);
- } else if (plugin && isFunction(plugin.install)) {
- installedPlugins.add(plugin);
- plugin.install(app, ...options);
- } else if (isFunction(plugin)) {
- installedPlugins.add(plugin);
- plugin(app, ...options);
- } else {
- warn(
- `A plugin must either be a function or an object with an "install" function.`
- );
- }
- return app;
- },
- mixin(mixin) {
- {
- if (!context.mixins.includes(mixin)) {
- context.mixins.push(mixin);
- } else {
- warn(
- "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "")
- );
- }
- }
- return app;
- },
- component(name, component) {
- {
- validateComponentName(name, context.config);
- }
- if (!component) {
- return context.components[name];
- }
- if (context.components[name]) {
- warn(`Component "${name}" has already been registered in target app.`);
- }
- context.components[name] = component;
- return app;
- },
- directive(name, directive) {
- {
- validateDirectiveName(name);
- }
- if (!directive) {
- return context.directives[name];
- }
- if (context.directives[name]) {
- warn(`Directive "${name}" has already been registered in target app.`);
- }
- context.directives[name] = directive;
- return app;
- },
- mount(rootContainer, isHydrate, isSVG) {
- if (!isMounted) {
- if (rootContainer.__vue_app__) {
- warn(
- `There is already an app instance mounted on the host container.
- If you want to mount another app on the same host container, you need to unmount the previous app by calling \`app.unmount()\` first.`
- );
- }
- const vnode = createVNode(
- rootComponent,
- rootProps
- );
- vnode.appContext = context;
- {
- context.reload = () => {
- render(cloneVNode(vnode), rootContainer, isSVG);
- };
- }
- if (isHydrate && hydrate) {
- hydrate(vnode, rootContainer);
- } else {
- render(vnode, rootContainer, isSVG);
- }
- isMounted = true;
- app._container = rootContainer;
- rootContainer.__vue_app__ = app;
- {
- app._instance = vnode.component;
- devtoolsInitApp(app, version);
- }
- return getExposeProxy(vnode.component) || vnode.component.proxy;
- } else {
- warn(
- `App has already been mounted.
- If you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \`const createMyApp = () => createApp(App)\``
- );
- }
- },
- unmount() {
- if (isMounted) {
- render(null, app._container);
- {
- app._instance = null;
- devtoolsUnmountApp(app);
- }
- delete app._container.__vue_app__;
- } else {
- warn(`Cannot unmount an app that is not mounted.`);
- }
- },
- provide(key, value) {
- if (key in context.provides) {
- warn(
- `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
- );
- }
- context.provides[key] = value;
- return app;
- },
- runWithContext(fn) {
- currentApp = app;
- try {
- return fn();
- } finally {
- currentApp = null;
- }
- }
- };
- return app;
- };
- }
- let currentApp = null;
- function provide(key, value) {
- if (!currentInstance) {
- {
- warn(`provide() can only be used inside setup().`);
- }
- } else {
- let provides = currentInstance.provides;
- const parentProvides = currentInstance.parent && currentInstance.parent.provides;
- if (parentProvides === provides) {
- provides = currentInstance.provides = Object.create(parentProvides);
- }
- provides[key] = value;
- }
- }
- function inject(key, defaultValue, treatDefaultAsFactory = false) {
- const instance = currentInstance || currentRenderingInstance;
- if (instance || currentApp) {
- const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides;
- if (provides && key in provides) {
- return provides[key];
- } else if (arguments.length > 1) {
- return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;
- } else {
- warn(`injection "${String(key)}" not found.`);
- }
- } else {
- warn(`inject() can only be used inside setup() or functional components.`);
- }
- }
- function initProps(instance, rawProps, isStateful, isSSR = false) {
- const props = {};
- const attrs = {};
- def(attrs, InternalObjectKey, 1);
- instance.propsDefaults = /* @__PURE__ */ Object.create(null);
- setFullProps(instance, rawProps, props, attrs);
- for (const key in instance.propsOptions[0]) {
- if (!(key in props)) {
- props[key] = void 0;
- }
- }
- {
- validateProps(rawProps || {}, props, instance);
- }
- if (isStateful) {
- instance.props = isSSR ? props : shallowReactive(props);
- } else {
- if (!instance.type.props) {
- instance.props = attrs;
- } else {
- instance.props = props;
- }
- }
- instance.attrs = attrs;
- }
- function isInHmrContext(instance) {
- while (instance) {
- if (instance.type.__hmrId)
- return true;
- instance = instance.parent;
- }
- }
- function updateProps(instance, rawProps, rawPrevProps, optimized) {
- const {
- props,
- attrs,
- vnode: { patchFlag }
- } = instance;
- const rawCurrentProps = toRaw(props);
- const [options] = instance.propsOptions;
- let hasAttrsChanged = false;
- if (
- // always force full diff in dev
- // - #1942 if hmr is enabled with sfc component
- // - vite#872 non-sfc component used by sfc component
- !isInHmrContext(instance) && (optimized || patchFlag > 0) && !(patchFlag & 16)
- ) {
- if (patchFlag & 8) {
- const propsToUpdate = instance.vnode.dynamicProps;
- for (let i = 0; i < propsToUpdate.length; i++) {
- let key = propsToUpdate[i];
- if (isEmitListener(instance.emitsOptions, key)) {
- continue;
- }
- const value = rawProps[key];
- if (options) {
- if (hasOwn(attrs, key)) {
- if (value !== attrs[key]) {
- attrs[key] = value;
- hasAttrsChanged = true;
- }
- } else {
- const camelizedKey = camelize(key);
- props[camelizedKey] = resolvePropValue(
- options,
- rawCurrentProps,
- camelizedKey,
- value,
- instance,
- false
- /* isAbsent */
- );
- }
- } else {
- if (value !== attrs[key]) {
- attrs[key] = value;
- hasAttrsChanged = true;
- }
- }
- }
- }
- } else {
- if (setFullProps(instance, rawProps, props, attrs)) {
- hasAttrsChanged = true;
- }
- let kebabKey;
- for (const key in rawCurrentProps) {
- if (!rawProps || // for camelCase
- !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case
- // and converted to camelCase (#955)
- ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {
- if (options) {
- if (rawPrevProps && // for camelCase
- (rawPrevProps[key] !== void 0 || // for kebab-case
- rawPrevProps[kebabKey] !== void 0)) {
- props[key] = resolvePropValue(
- options,
- rawCurrentProps,
- key,
- void 0,
- instance,
- true
- /* isAbsent */
- );
- }
- } else {
- delete props[key];
- }
- }
- }
- if (attrs !== rawCurrentProps) {
- for (const key in attrs) {
- if (!rawProps || !hasOwn(rawProps, key) && true) {
- delete attrs[key];
- hasAttrsChanged = true;
- }
- }
- }
- }
- if (hasAttrsChanged) {
- trigger(instance, "set", "$attrs");
- }
- {
- validateProps(rawProps || {}, props, instance);
- }
- }
- function setFullProps(instance, rawProps, props, attrs) {
- const [options, needCastKeys] = instance.propsOptions;
- let hasAttrsChanged = false;
- let rawCastValues;
- if (rawProps) {
- for (let key in rawProps) {
- if (isReservedProp(key)) {
- continue;
- }
- const value = rawProps[key];
- let camelKey;
- if (options && hasOwn(options, camelKey = camelize(key))) {
- if (!needCastKeys || !needCastKeys.includes(camelKey)) {
- props[camelKey] = value;
- } else {
- (rawCastValues || (rawCastValues = {}))[camelKey] = value;
- }
- } else if (!isEmitListener(instance.emitsOptions, key)) {
- if (!(key in attrs) || value !== attrs[key]) {
- attrs[key] = value;
- hasAttrsChanged = true;
- }
- }
- }
- }
- if (needCastKeys) {
- const rawCurrentProps = toRaw(props);
- const castValues = rawCastValues || EMPTY_OBJ;
- for (let i = 0; i < needCastKeys.length; i++) {
- const key = needCastKeys[i];
- props[key] = resolvePropValue(
- options,
- rawCurrentProps,
- key,
- castValues[key],
- instance,
- !hasOwn(castValues, key)
- );
- }
- }
- return hasAttrsChanged;
- }
- function resolvePropValue(options, props, key, value, instance, isAbsent) {
- const opt = options[key];
- if (opt != null) {
- const hasDefault = hasOwn(opt, "default");
- if (hasDefault && value === void 0) {
- const defaultValue = opt.default;
- if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {
- const { propsDefaults } = instance;
- if (key in propsDefaults) {
- value = propsDefaults[key];
- } else {
- setCurrentInstance(instance);
- value = propsDefaults[key] = defaultValue.call(
- null,
- props
- );
- unsetCurrentInstance();
- }
- } else {
- value = defaultValue;
- }
- }
- if (opt[0 /* shouldCast */]) {
- if (isAbsent && !hasDefault) {
- value = false;
- } else if (opt[1 /* shouldCastTrue */] && (value === "" || value === hyphenate(key))) {
- value = true;
- }
- }
- }
- return value;
- }
- function normalizePropsOptions(comp, appContext, asMixin = false) {
- const cache = appContext.propsCache;
- const cached = cache.get(comp);
- if (cached) {
- return cached;
- }
- const raw = comp.props;
- const normalized = {};
- const needCastKeys = [];
- let hasExtends = false;
- if (!isFunction(comp)) {
- const extendProps = (raw2) => {
- hasExtends = true;
- const [props, keys] = normalizePropsOptions(raw2, appContext, true);
- extend(normalized, props);
- if (keys)
- needCastKeys.push(...keys);
- };
- if (!asMixin && appContext.mixins.length) {
- appContext.mixins.forEach(extendProps);
- }
- if (comp.extends) {
- extendProps(comp.extends);
- }
- if (comp.mixins) {
- comp.mixins.forEach(extendProps);
- }
- }
- if (!raw && !hasExtends) {
- if (isObject(comp)) {
- cache.set(comp, EMPTY_ARR);
- }
- return EMPTY_ARR;
- }
- if (isArray(raw)) {
- for (let i = 0; i < raw.length; i++) {
- if (!isString(raw[i])) {
- warn(`props must be strings when using array syntax.`, raw[i]);
- }
- const normalizedKey = camelize(raw[i]);
- if (validatePropName(normalizedKey)) {
- normalized[normalizedKey] = EMPTY_OBJ;
- }
- }
- } else if (raw) {
- if (!isObject(raw)) {
- warn(`invalid props options`, raw);
- }
- for (const key in raw) {
- const normalizedKey = camelize(key);
- if (validatePropName(normalizedKey)) {
- const opt = raw[key];
- const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt);
- if (prop) {
- const booleanIndex = getTypeIndex(Boolean, prop.type);
- const stringIndex = getTypeIndex(String, prop.type);
- prop[0 /* shouldCast */] = booleanIndex > -1;
- prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex;
- if (booleanIndex > -1 || hasOwn(prop, "default")) {
- needCastKeys.push(normalizedKey);
- }
- }
- }
- }
- }
- const res = [normalized, needCastKeys];
- if (isObject(comp)) {
- cache.set(comp, res);
- }
- return res;
- }
- function validatePropName(key) {
- if (key[0] !== "$") {
- return true;
- } else {
- warn(`Invalid prop name: "${key}" is a reserved property.`);
- }
- return false;
- }
- function getType(ctor) {
- const match = ctor && ctor.toString().match(/^\s*(function|class) (\w+)/);
- return match ? match[2] : ctor === null ? "null" : "";
- }
- function isSameType(a, b) {
- return getType(a) === getType(b);
- }
- function getTypeIndex(type, expectedTypes) {
- if (isArray(expectedTypes)) {
- return expectedTypes.findIndex((t) => isSameType(t, type));
- } else if (isFunction(expectedTypes)) {
- return isSameType(expectedTypes, type) ? 0 : -1;
- }
- return -1;
- }
- function validateProps(rawProps, props, instance) {
- const resolvedValues = toRaw(props);
- const options = instance.propsOptions[0];
- for (const key in options) {
- let opt = options[key];
- if (opt == null)
- continue;
- validateProp(
- key,
- resolvedValues[key],
- opt,
- !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key))
- );
- }
- }
- function validateProp(name, value, prop, isAbsent) {
- const { type, required, validator, skipCheck } = prop;
- if (required && isAbsent) {
- warn('Missing required prop: "' + name + '"');
- return;
- }
- if (value == null && !required) {
- return;
- }
- if (type != null && type !== true && !skipCheck) {
- let isValid = false;
- const types = 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) {
- warn(getInvalidTypeMessage(name, value, expectedTypes));
- return;
- }
- }
- if (validator && !validator(value)) {
- warn('Invalid prop: custom validator check failed for prop "' + name + '".');
- }
- }
- const isSimpleType = /* @__PURE__ */ makeMap(
- "String,Number,Boolean,Function,Symbol,BigInt"
- );
- function assertType(value, type) {
- let valid;
- const expectedType = getType(type);
- if (isSimpleType(expectedType)) {
- const t = typeof value;
- valid = t === expectedType.toLowerCase();
- if (!valid && t === "object") {
- valid = value instanceof type;
- }
- } else if (expectedType === "Object") {
- valid = isObject(value);
- } else if (expectedType === "Array") {
- valid = isArray(value);
- } else if (expectedType === "null") {
- valid = value === null;
- } else {
- valid = value instanceof type;
- }
- return {
- valid,
- expectedType
- };
- }
- function getInvalidTypeMessage(name, value, expectedTypes) {
- let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(capitalize).join(" | ")}`;
- const expectedType = expectedTypes[0];
- const receivedType = 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 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");
- }
- const isInternalKey = (key) => key[0] === "_" || key === "$stable";
- const normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode$1) : [normalizeVNode$1(value)];
- const normalizeSlot = (key, rawSlot, ctx) => {
- if (rawSlot._n) {
- return rawSlot;
- }
- const normalized = withCtx((...args) => {
- if (currentInstance) {
- warn(
- `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`
- );
- }
- return normalizeSlotValue(rawSlot(...args));
- }, ctx);
- normalized._c = false;
- return normalized;
- };
- const normalizeObjectSlots = (rawSlots, slots, instance) => {
- const ctx = rawSlots._ctx;
- for (const key in rawSlots) {
- if (isInternalKey(key))
- continue;
- const value = rawSlots[key];
- if (isFunction(value)) {
- slots[key] = normalizeSlot(key, value, ctx);
- } else if (value != null) {
- {
- warn(
- `Non-function value encountered for slot "${key}". Prefer function slots for better performance.`
- );
- }
- const normalized = normalizeSlotValue(value);
- slots[key] = () => normalized;
- }
- }
- };
- const normalizeVNodeSlots = (instance, children) => {
- if (!isKeepAlive(instance.vnode) && true) {
- warn(
- `Non-function value encountered for default slot. Prefer function slots for better performance.`
- );
- }
- const normalized = normalizeSlotValue(children);
- instance.slots.default = () => normalized;
- };
- const initSlots = (instance, children) => {
- if (instance.vnode.shapeFlag & 32) {
- const type = children._;
- if (type) {
- instance.slots = toRaw(children);
- def(children, "_", type);
- } else {
- normalizeObjectSlots(
- children,
- instance.slots = {});
- }
- } else {
- instance.slots = {};
- if (children) {
- normalizeVNodeSlots(instance, children);
- }
- }
- def(instance.slots, InternalObjectKey, 1);
- };
- const updateSlots = (instance, children, optimized) => {
- const { vnode, slots } = instance;
- let needDeletionCheck = true;
- let deletionComparisonTarget = EMPTY_OBJ;
- if (vnode.shapeFlag & 32) {
- const type = children._;
- if (type) {
- if (isHmrUpdating) {
- extend(slots, children);
- trigger(instance, "set", "$slots");
- } else if (optimized && type === 1) {
- needDeletionCheck = false;
- } else {
- extend(slots, children);
- if (!optimized && type === 1) {
- delete slots._;
- }
- }
- } else {
- needDeletionCheck = !children.$stable;
- normalizeObjectSlots(children, slots);
- }
- deletionComparisonTarget = children;
- } else if (children) {
- normalizeVNodeSlots(instance, children);
- deletionComparisonTarget = { default: 1 };
- }
- if (needDeletionCheck) {
- for (const key in slots) {
- if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {
- delete slots[key];
- }
- }
- }
- };
- function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
- if (isArray(rawRef)) {
- rawRef.forEach(
- (r, i) => setRef(
- r,
- oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),
- parentSuspense,
- vnode,
- isUnmount
- )
- );
- return;
- }
- if (isAsyncWrapper(vnode) && !isUnmount) {
- return;
- }
- const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el;
- const value = isUnmount ? null : refValue;
- const { i: owner, r: ref } = rawRef;
- if (!owner) {
- warn(
- `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`
- );
- return;
- }
- const oldRef = oldRawRef && oldRawRef.r;
- const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
- const setupState = owner.setupState;
- if (oldRef != null && oldRef !== ref) {
- if (isString(oldRef)) {
- refs[oldRef] = null;
- if (hasOwn(setupState, oldRef)) {
- setupState[oldRef] = null;
- }
- } else if (isRef(oldRef)) {
- oldRef.value = null;
- }
- }
- if (isFunction(ref)) {
- callWithErrorHandling(ref, owner, 12, [value, refs]);
- } else {
- const _isString = isString(ref);
- const _isRef = isRef(ref);
- if (_isString || _isRef) {
- const doSet = () => {
- if (rawRef.f) {
- const existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;
- if (isUnmount) {
- isArray(existing) && remove(existing, refValue);
- } else {
- if (!isArray(existing)) {
- if (_isString) {
- refs[ref] = [refValue];
- if (hasOwn(setupState, ref)) {
- setupState[ref] = refs[ref];
- }
- } else {
- ref.value = [refValue];
- if (rawRef.k)
- refs[rawRef.k] = ref.value;
- }
- } else if (!existing.includes(refValue)) {
- existing.push(refValue);
- }
- }
- } else if (_isString) {
- refs[ref] = value;
- if (hasOwn(setupState, ref)) {
- setupState[ref] = value;
- }
- } else if (_isRef) {
- ref.value = value;
- if (rawRef.k)
- refs[rawRef.k] = value;
- } else {
- warn("Invalid template ref type:", ref, `(${typeof ref})`);
- }
- };
- if (value) {
- doSet.id = -1;
- queuePostRenderEffect(doSet, parentSuspense);
- } else {
- doSet();
- }
- } else {
- warn("Invalid template ref type:", ref, `(${typeof ref})`);
- }
- }
- }
- let supported;
- let perf;
- function startMeasure(instance, type) {
- if (instance.appContext.config.performance && isSupported()) {
- perf.mark(`vue-${type}-${instance.uid}`);
- }
- {
- devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());
- }
- }
- function endMeasure(instance, type) {
- if (instance.appContext.config.performance && isSupported()) {
- const startTag = `vue-${type}-${instance.uid}`;
- const endTag = startTag + `:end`;
- perf.mark(endTag);
- perf.measure(
- `<${formatComponentName(instance, instance.type)}> ${type}`,
- startTag,
- endTag
- );
- perf.clearMarks(startTag);
- perf.clearMarks(endTag);
- }
- {
- devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());
- }
- }
- function isSupported() {
- if (supported !== void 0) {
- return supported;
- }
- if (typeof window !== "undefined" && window.performance) {
- supported = true;
- perf = window.performance;
- } else {
- supported = false;
- }
- return supported;
- }
- const queuePostRenderEffect = queueEffectWithSuspense ;
- function createRenderer(options) {
- return baseCreateRenderer(options);
- }
- function baseCreateRenderer(options, createHydrationFns) {
- const target = getGlobalThis();
- target.__VUE__ = true;
- {
- setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);
- }
- const {
- insert: hostInsert,
- remove: hostRemove,
- patchProp: hostPatchProp,
- createElement: hostCreateElement,
- createText: hostCreateText,
- createComment: hostCreateComment,
- setText: hostSetText,
- setElementText: hostSetElementText,
- parentNode: hostParentNode,
- nextSibling: hostNextSibling,
- setScopeId: hostSetScopeId = NOOP,
- insertStaticContent: hostInsertStaticContent
- } = options;
- const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => {
- if (n1 === n2) {
- return;
- }
- if (n1 && !isSameVNodeType(n1, n2)) {
- anchor = getNextHostNode(n1);
- unmount(n1, parentComponent, parentSuspense, true);
- n1 = null;
- }
- if (n2.patchFlag === -2) {
- optimized = false;
- n2.dynamicChildren = null;
- }
- const { type, ref, shapeFlag } = n2;
- switch (type) {
- case Text:
- processText(n1, n2, container, anchor);
- break;
- case Comment:
- processCommentNode(n1, n2, container, anchor);
- break;
- case Static:
- if (n1 == null) {
- mountStaticNode(n2, container, anchor, isSVG);
- } else {
- patchStaticNode(n1, n2, container, isSVG);
- }
- break;
- case Fragment:
- processFragment(
- n1,
- n2,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- break;
- default:
- if (shapeFlag & 1) {
- processElement(
- n1,
- n2,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- } else if (shapeFlag & 6) {
- processComponent(
- n1,
- n2,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- } else if (shapeFlag & 64) {
- type.process(
- n1,
- n2,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized,
- internals
- );
- } else if (shapeFlag & 128) {
- type.process(
- n1,
- n2,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized,
- internals
- );
- } else {
- warn("Invalid VNode type:", type, `(${typeof type})`);
- }
- }
- if (ref != null && parentComponent) {
- setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);
- }
- };
- const processText = (n1, n2, container, anchor) => {
- if (n1 == null) {
- hostInsert(
- n2.el = hostCreateText(n2.children),
- container,
- anchor
- );
- } else {
- const el = n2.el = n1.el;
- if (n2.children !== n1.children) {
- hostSetText(el, n2.children);
- }
- }
- };
- const processCommentNode = (n1, n2, container, anchor) => {
- if (n1 == null) {
- hostInsert(
- n2.el = hostCreateComment(n2.children || ""),
- container,
- anchor
- );
- } else {
- n2.el = n1.el;
- }
- };
- const mountStaticNode = (n2, container, anchor, isSVG) => {
- [n2.el, n2.anchor] = hostInsertStaticContent(
- n2.children,
- container,
- anchor,
- isSVG,
- n2.el,
- n2.anchor
- );
- };
- const patchStaticNode = (n1, n2, container, isSVG) => {
- if (n2.children !== n1.children) {
- const anchor = hostNextSibling(n1.anchor);
- removeStaticNode(n1);
- [n2.el, n2.anchor] = hostInsertStaticContent(
- n2.children,
- container,
- anchor,
- isSVG
- );
- } else {
- n2.el = n1.el;
- n2.anchor = n1.anchor;
- }
- };
- const moveStaticNode = ({ el, anchor }, container, nextSibling) => {
- let next;
- while (el && el !== anchor) {
- next = hostNextSibling(el);
- hostInsert(el, container, nextSibling);
- el = next;
- }
- hostInsert(anchor, container, nextSibling);
- };
- const removeStaticNode = ({ el, anchor }) => {
- let next;
- while (el && el !== anchor) {
- next = hostNextSibling(el);
- hostRemove(el);
- el = next;
- }
- hostRemove(anchor);
- };
- const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
- isSVG = isSVG || n2.type === "svg";
- if (n1 == null) {
- mountElement(
- n2,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- } else {
- patchElement(
- n1,
- n2,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- }
- };
- const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
- let el;
- let vnodeHook;
- const { type, props, shapeFlag, transition, dirs } = vnode;
- el = vnode.el = hostCreateElement(
- vnode.type,
- isSVG,
- props && props.is,
- props
- );
- if (shapeFlag & 8) {
- hostSetElementText(el, vnode.children);
- } else if (shapeFlag & 16) {
- mountChildren(
- vnode.children,
- el,
- null,
- parentComponent,
- parentSuspense,
- isSVG && type !== "foreignObject",
- slotScopeIds,
- optimized
- );
- }
- if (dirs) {
- invokeDirectiveHook(vnode, null, parentComponent, "created");
- }
- setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);
- if (props) {
- for (const key in props) {
- if (key !== "value" && !isReservedProp(key)) {
- hostPatchProp(
- el,
- key,
- null,
- props[key],
- isSVG,
- vnode.children,
- parentComponent,
- parentSuspense,
- unmountChildren
- );
- }
- }
- if ("value" in props) {
- hostPatchProp(el, "value", null, props.value);
- }
- if (vnodeHook = props.onVnodeBeforeMount) {
- invokeVNodeHook(vnodeHook, parentComponent, vnode);
- }
- }
- {
- Object.defineProperty(el, "__vnode", {
- value: vnode,
- enumerable: false
- });
- Object.defineProperty(el, "__vueParentComponent", {
- value: parentComponent,
- enumerable: false
- });
- }
- if (dirs) {
- invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
- }
- const needCallTransitionHooks = (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;
- if (needCallTransitionHooks) {
- transition.beforeEnter(el);
- }
- hostInsert(el, container, anchor);
- if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {
- queuePostRenderEffect(() => {
- vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
- needCallTransitionHooks && transition.enter(el);
- dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
- }, parentSuspense);
- }
- };
- const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {
- if (scopeId) {
- hostSetScopeId(el, scopeId);
- }
- if (slotScopeIds) {
- for (let i = 0; i < slotScopeIds.length; i++) {
- hostSetScopeId(el, slotScopeIds[i]);
- }
- }
- if (parentComponent) {
- let subTree = parentComponent.subTree;
- if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) {
- subTree = filterSingleRoot(subTree.children) || subTree;
- }
- if (vnode === subTree) {
- const parentVNode = parentComponent.vnode;
- setScopeId(
- el,
- parentVNode,
- parentVNode.scopeId,
- parentVNode.slotScopeIds,
- parentComponent.parent
- );
- }
- }
- };
- const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {
- for (let i = start; i < children.length; i++) {
- const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode$1(children[i]);
- patch(
- null,
- child,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- }
- };
- const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
- const el = n2.el = n1.el;
- let { patchFlag, dynamicChildren, dirs } = n2;
- patchFlag |= n1.patchFlag & 16;
- const oldProps = n1.props || EMPTY_OBJ;
- const newProps = n2.props || EMPTY_OBJ;
- let vnodeHook;
- parentComponent && toggleRecurse(parentComponent, false);
- if (vnodeHook = newProps.onVnodeBeforeUpdate) {
- invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
- }
- if (dirs) {
- invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
- }
- parentComponent && toggleRecurse(parentComponent, true);
- if (isHmrUpdating) {
- patchFlag = 0;
- optimized = false;
- dynamicChildren = null;
- }
- const areChildrenSVG = isSVG && n2.type !== "foreignObject";
- if (dynamicChildren) {
- patchBlockChildren(
- n1.dynamicChildren,
- dynamicChildren,
- el,
- parentComponent,
- parentSuspense,
- areChildrenSVG,
- slotScopeIds
- );
- {
- traverseStaticChildren(n1, n2);
- }
- } else if (!optimized) {
- patchChildren(
- n1,
- n2,
- el,
- null,
- parentComponent,
- parentSuspense,
- areChildrenSVG,
- slotScopeIds,
- false
- );
- }
- if (patchFlag > 0) {
- if (patchFlag & 16) {
- patchProps(
- el,
- n2,
- oldProps,
- newProps,
- parentComponent,
- parentSuspense,
- isSVG
- );
- } else {
- if (patchFlag & 2) {
- if (oldProps.class !== newProps.class) {
- hostPatchProp(el, "class", null, newProps.class, isSVG);
- }
- }
- if (patchFlag & 4) {
- hostPatchProp(el, "style", oldProps.style, newProps.style, isSVG);
- }
- if (patchFlag & 8) {
- const propsToUpdate = n2.dynamicProps;
- for (let i = 0; i < propsToUpdate.length; i++) {
- const key = propsToUpdate[i];
- const prev = oldProps[key];
- const next = newProps[key];
- if (next !== prev || key === "value") {
- hostPatchProp(
- el,
- key,
- prev,
- next,
- isSVG,
- n1.children,
- parentComponent,
- parentSuspense,
- unmountChildren
- );
- }
- }
- }
- }
- if (patchFlag & 1) {
- if (n1.children !== n2.children) {
- hostSetElementText(el, n2.children);
- }
- }
- } else if (!optimized && dynamicChildren == null) {
- patchProps(
- el,
- n2,
- oldProps,
- newProps,
- parentComponent,
- parentSuspense,
- isSVG
- );
- }
- if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {
- queuePostRenderEffect(() => {
- vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
- dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
- }, parentSuspense);
- }
- };
- const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {
- for (let i = 0; i < newChildren.length; i++) {
- const oldVNode = oldChildren[i];
- const newVNode = newChildren[i];
- const container = (
- // oldVNode may be an errored async setup() component inside Suspense
- // which will not have a mounted element
- oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent
- // of the Fragment itself so it can move its children.
- (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
- // which also requires the correct parent container
- !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
- oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (
- // In other cases, the parent container is not actually used so we
- // just pass the block element here to avoid a DOM parentNode call.
- fallbackContainer
- )
- );
- patch(
- oldVNode,
- newVNode,
- container,
- null,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- true
- );
- }
- };
- const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {
- if (oldProps !== newProps) {
- if (oldProps !== EMPTY_OBJ) {
- for (const key in oldProps) {
- if (!isReservedProp(key) && !(key in newProps)) {
- hostPatchProp(
- el,
- key,
- oldProps[key],
- null,
- isSVG,
- vnode.children,
- parentComponent,
- parentSuspense,
- unmountChildren
- );
- }
- }
- }
- for (const key in newProps) {
- if (isReservedProp(key))
- continue;
- const next = newProps[key];
- const prev = oldProps[key];
- if (next !== prev && key !== "value") {
- hostPatchProp(
- el,
- key,
- prev,
- next,
- isSVG,
- vnode.children,
- parentComponent,
- parentSuspense,
- unmountChildren
- );
- }
- }
- if ("value" in newProps) {
- hostPatchProp(el, "value", oldProps.value, newProps.value);
- }
- }
- };
- const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
- const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText("");
- const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText("");
- let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;
- if (
- // #5523 dev root fragment may inherit directives
- isHmrUpdating || patchFlag & 2048
- ) {
- patchFlag = 0;
- optimized = false;
- dynamicChildren = null;
- }
- if (fragmentSlotScopeIds) {
- slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
- }
- if (n1 == null) {
- hostInsert(fragmentStartAnchor, container, anchor);
- hostInsert(fragmentEndAnchor, container, anchor);
- mountChildren(
- n2.children,
- container,
- fragmentEndAnchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- } else {
- if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result
- // of renderSlot() with no valid children
- n1.dynamicChildren) {
- patchBlockChildren(
- n1.dynamicChildren,
- dynamicChildren,
- container,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds
- );
- {
- traverseStaticChildren(n1, n2);
- }
- } else {
- patchChildren(
- n1,
- n2,
- container,
- fragmentEndAnchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- }
- }
- };
- const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
- n2.slotScopeIds = slotScopeIds;
- if (n1 == null) {
- if (n2.shapeFlag & 512) {
- parentComponent.ctx.activate(
- n2,
- container,
- anchor,
- isSVG,
- optimized
- );
- } else {
- mountComponent(
- n2,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- optimized
- );
- }
- } else {
- updateComponent(n1, n2, optimized);
- }
- };
- const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {
- const instance = (initialVNode.component = createComponentInstance$1(
- initialVNode,
- parentComponent,
- parentSuspense
- ));
- if (instance.type.__hmrId) {
- registerHMR(instance);
- }
- {
- pushWarningContext(initialVNode);
- startMeasure(instance, `mount`);
- }
- if (isKeepAlive(initialVNode)) {
- instance.ctx.renderer = internals;
- }
- {
- {
- startMeasure(instance, `init`);
- }
- setupComponent$1(instance);
- {
- endMeasure(instance, `init`);
- }
- }
- if (instance.asyncDep) {
- parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);
- if (!initialVNode.el) {
- const placeholder = instance.subTree = createVNode(Comment);
- processCommentNode(null, placeholder, container, anchor);
- }
- return;
- }
- setupRenderEffect(
- instance,
- initialVNode,
- container,
- anchor,
- parentSuspense,
- isSVG,
- optimized
- );
- {
- popWarningContext();
- endMeasure(instance, `mount`);
- }
- };
- const updateComponent = (n1, n2, optimized) => {
- const instance = n2.component = n1.component;
- if (shouldUpdateComponent(n1, n2, optimized)) {
- if (instance.asyncDep && !instance.asyncResolved) {
- {
- pushWarningContext(n2);
- }
- updateComponentPreRender(instance, n2, optimized);
- {
- popWarningContext();
- }
- return;
- } else {
- instance.next = n2;
- invalidateJob(instance.update);
- instance.update();
- }
- } else {
- n2.el = n1.el;
- instance.vnode = n2;
- }
- };
- const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {
- const componentUpdateFn = () => {
- if (!instance.isMounted) {
- let vnodeHook;
- const { el, props } = initialVNode;
- const { bm, m, parent } = instance;
- const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);
- toggleRecurse(instance, false);
- if (bm) {
- invokeArrayFns(bm);
- }
- if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {
- invokeVNodeHook(vnodeHook, parent, initialVNode);
- }
- toggleRecurse(instance, true);
- if (el && hydrateNode) {
- const hydrateSubTree = () => {
- {
- startMeasure(instance, `render`);
- }
- instance.subTree = renderComponentRoot$1(instance);
- {
- endMeasure(instance, `render`);
- }
- {
- startMeasure(instance, `hydrate`);
- }
- hydrateNode(
- el,
- instance.subTree,
- instance,
- parentSuspense,
- null
- );
- {
- endMeasure(instance, `hydrate`);
- }
- };
- if (isAsyncWrapperVNode) {
- initialVNode.type.__asyncLoader().then(
- // note: we are moving the render call into an async callback,
- // which means it won't track dependencies - but it's ok because
- // a server-rendered async wrapper is already in resolved state
- // and it will never need to change.
- () => !instance.isUnmounted && hydrateSubTree()
- );
- } else {
- hydrateSubTree();
- }
- } else {
- {
- startMeasure(instance, `render`);
- }
- const subTree = instance.subTree = renderComponentRoot$1(instance);
- {
- endMeasure(instance, `render`);
- }
- {
- startMeasure(instance, `patch`);
- }
- patch(
- null,
- subTree,
- container,
- anchor,
- instance,
- parentSuspense,
- isSVG
- );
- {
- endMeasure(instance, `patch`);
- }
- initialVNode.el = subTree.el;
- }
- if (m) {
- queuePostRenderEffect(m, parentSuspense);
- }
- if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {
- const scopedInitialVNode = initialVNode;
- queuePostRenderEffect(
- () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),
- parentSuspense
- );
- }
- if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {
- instance.a && queuePostRenderEffect(instance.a, parentSuspense);
- }
- instance.isMounted = true;
- {
- devtoolsComponentAdded(instance);
- }
- initialVNode = container = anchor = null;
- } else {
- let { next, bu, u, parent, vnode } = instance;
- let originNext = next;
- let vnodeHook;
- {
- pushWarningContext(next || instance.vnode);
- }
- toggleRecurse(instance, false);
- if (next) {
- next.el = vnode.el;
- updateComponentPreRender(instance, next, optimized);
- } else {
- next = vnode;
- }
- if (bu) {
- invokeArrayFns(bu);
- }
- if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {
- invokeVNodeHook(vnodeHook, parent, next, vnode);
- }
- toggleRecurse(instance, true);
- {
- startMeasure(instance, `render`);
- }
- const nextTree = renderComponentRoot$1(instance);
- {
- endMeasure(instance, `render`);
- }
- const prevTree = instance.subTree;
- instance.subTree = nextTree;
- {
- startMeasure(instance, `patch`);
- }
- patch(
- prevTree,
- nextTree,
- // parent may have changed if it's in a teleport
- hostParentNode(prevTree.el),
- // anchor may have changed if it's in a fragment
- getNextHostNode(prevTree),
- instance,
- parentSuspense,
- isSVG
- );
- {
- endMeasure(instance, `patch`);
- }
- next.el = nextTree.el;
- if (originNext === null) {
- updateHOCHostEl(instance, nextTree.el);
- }
- if (u) {
- queuePostRenderEffect(u, parentSuspense);
- }
- if (vnodeHook = next.props && next.props.onVnodeUpdated) {
- queuePostRenderEffect(
- () => invokeVNodeHook(vnodeHook, parent, next, vnode),
- parentSuspense
- );
- }
- {
- devtoolsComponentUpdated(instance);
- }
- {
- popWarningContext();
- }
- }
- };
- const effect = instance.effect = new ReactiveEffect(
- componentUpdateFn,
- () => queueJob(update),
- instance.scope
- // track it in component's effect scope
- );
- const update = instance.update = () => effect.run();
- update.id = instance.uid;
- toggleRecurse(instance, true);
- {
- effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0;
- effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0;
- update.ownerInstance = instance;
- }
- update();
- };
- const updateComponentPreRender = (instance, nextVNode, optimized) => {
- nextVNode.component = instance;
- const prevProps = instance.vnode.props;
- instance.vnode = nextVNode;
- instance.next = null;
- updateProps(instance, nextVNode.props, prevProps, optimized);
- updateSlots(instance, nextVNode.children, optimized);
- pauseTracking();
- flushPreFlushCbs();
- resetTracking();
- };
- const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {
- const c1 = n1 && n1.children;
- const prevShapeFlag = n1 ? n1.shapeFlag : 0;
- const c2 = n2.children;
- const { patchFlag, shapeFlag } = n2;
- if (patchFlag > 0) {
- if (patchFlag & 128) {
- patchKeyedChildren(
- c1,
- c2,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- return;
- } else if (patchFlag & 256) {
- patchUnkeyedChildren(
- c1,
- c2,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- return;
- }
- }
- if (shapeFlag & 8) {
- if (prevShapeFlag & 16) {
- unmountChildren(c1, parentComponent, parentSuspense);
- }
- if (c2 !== c1) {
- hostSetElementText(container, c2);
- }
- } else {
- if (prevShapeFlag & 16) {
- if (shapeFlag & 16) {
- patchKeyedChildren(
- c1,
- c2,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- } else {
- unmountChildren(c1, parentComponent, parentSuspense, true);
- }
- } else {
- if (prevShapeFlag & 8) {
- hostSetElementText(container, "");
- }
- if (shapeFlag & 16) {
- mountChildren(
- c2,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- }
- }
- }
- };
- const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
- c1 = c1 || EMPTY_ARR;
- c2 = c2 || EMPTY_ARR;
- const oldLength = c1.length;
- const newLength = c2.length;
- const commonLength = Math.min(oldLength, newLength);
- let i;
- for (i = 0; i < commonLength; i++) {
- const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode$1(c2[i]);
- patch(
- c1[i],
- nextChild,
- container,
- null,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- }
- if (oldLength > newLength) {
- unmountChildren(
- c1,
- parentComponent,
- parentSuspense,
- true,
- false,
- commonLength
- );
- } else {
- mountChildren(
- c2,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized,
- commonLength
- );
- }
- };
- const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
- let i = 0;
- const l2 = c2.length;
- let e1 = c1.length - 1;
- let e2 = l2 - 1;
- while (i <= e1 && i <= e2) {
- const n1 = c1[i];
- const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode$1(c2[i]);
- if (isSameVNodeType(n1, n2)) {
- patch(
- n1,
- n2,
- container,
- null,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- } else {
- break;
- }
- i++;
- }
- while (i <= e1 && i <= e2) {
- const n1 = c1[e1];
- const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode$1(c2[e2]);
- if (isSameVNodeType(n1, n2)) {
- patch(
- n1,
- n2,
- container,
- null,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- } else {
- break;
- }
- e1--;
- e2--;
- }
- if (i > e1) {
- if (i <= e2) {
- const nextPos = e2 + 1;
- const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;
- while (i <= e2) {
- patch(
- null,
- c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode$1(c2[i]),
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- i++;
- }
- }
- } else if (i > e2) {
- while (i <= e1) {
- unmount(c1[i], parentComponent, parentSuspense, true);
- i++;
- }
- } else {
- const s1 = i;
- const s2 = i;
- const keyToNewIndexMap = /* @__PURE__ */ new Map();
- for (i = s2; i <= e2; i++) {
- const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode$1(c2[i]);
- if (nextChild.key != null) {
- if (keyToNewIndexMap.has(nextChild.key)) {
- warn(
- `Duplicate keys found during update:`,
- JSON.stringify(nextChild.key),
- `Make sure keys are unique.`
- );
- }
- keyToNewIndexMap.set(nextChild.key, i);
- }
- }
- let j;
- let patched = 0;
- const toBePatched = e2 - s2 + 1;
- let moved = false;
- let maxNewIndexSoFar = 0;
- const newIndexToOldIndexMap = new Array(toBePatched);
- for (i = 0; i < toBePatched; i++)
- newIndexToOldIndexMap[i] = 0;
- for (i = s1; i <= e1; i++) {
- const prevChild = c1[i];
- if (patched >= toBePatched) {
- unmount(prevChild, parentComponent, parentSuspense, true);
- continue;
- }
- let newIndex;
- if (prevChild.key != null) {
- newIndex = keyToNewIndexMap.get(prevChild.key);
- } else {
- for (j = s2; j <= e2; j++) {
- if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {
- newIndex = j;
- break;
- }
- }
- }
- if (newIndex === void 0) {
- unmount(prevChild, parentComponent, parentSuspense, true);
- } else {
- newIndexToOldIndexMap[newIndex - s2] = i + 1;
- if (newIndex >= maxNewIndexSoFar) {
- maxNewIndexSoFar = newIndex;
- } else {
- moved = true;
- }
- patch(
- prevChild,
- c2[newIndex],
- container,
- null,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- patched++;
- }
- }
- const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;
- j = increasingNewIndexSequence.length - 1;
- for (i = toBePatched - 1; i >= 0; i--) {
- const nextIndex = s2 + i;
- const nextChild = c2[nextIndex];
- const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;
- if (newIndexToOldIndexMap[i] === 0) {
- patch(
- null,
- nextChild,
- container,
- anchor,
- parentComponent,
- parentSuspense,
- isSVG,
- slotScopeIds,
- optimized
- );
- } else if (moved) {
- if (j < 0 || i !== increasingNewIndexSequence[j]) {
- move(nextChild, container, anchor, 2);
- } else {
- j--;
- }
- }
- }
- }
- };
- const move = (vnode, container, anchor, moveType, parentSuspense = null) => {
- const { el, type, transition, children, shapeFlag } = vnode;
- if (shapeFlag & 6) {
- move(vnode.component.subTree, container, anchor, moveType);
- return;
- }
- if (shapeFlag & 128) {
- vnode.suspense.move(container, anchor, moveType);
- return;
- }
- if (shapeFlag & 64) {
- type.move(vnode, container, anchor, internals);
- return;
- }
- if (type === Fragment) {
- hostInsert(el, container, anchor);
- for (let i = 0; i < children.length; i++) {
- move(children[i], container, anchor, moveType);
- }
- hostInsert(vnode.anchor, container, anchor);
- return;
- }
- if (type === Static) {
- moveStaticNode(vnode, container, anchor);
- return;
- }
- const needTransition = moveType !== 2 && shapeFlag & 1 && transition;
- if (needTransition) {
- if (moveType === 0) {
- transition.beforeEnter(el);
- hostInsert(el, container, anchor);
- queuePostRenderEffect(() => transition.enter(el), parentSuspense);
- } else {
- const { leave, delayLeave, afterLeave } = transition;
- const remove2 = () => hostInsert(el, container, anchor);
- const performLeave = () => {
- leave(el, () => {
- remove2();
- afterLeave && afterLeave();
- });
- };
- if (delayLeave) {
- delayLeave(el, remove2, performLeave);
- } else {
- performLeave();
- }
- }
- } else {
- hostInsert(el, container, anchor);
- }
- };
- const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {
- const {
- type,
- props,
- ref,
- children,
- dynamicChildren,
- shapeFlag,
- patchFlag,
- dirs
- } = vnode;
- if (ref != null) {
- setRef(ref, null, parentSuspense, vnode, true);
- }
- if (shapeFlag & 256) {
- parentComponent.ctx.deactivate(vnode);
- return;
- }
- const shouldInvokeDirs = shapeFlag & 1 && dirs;
- const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);
- let vnodeHook;
- if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {
- invokeVNodeHook(vnodeHook, parentComponent, vnode);
- }
- if (shapeFlag & 6) {
- unmountComponent(vnode.component, parentSuspense, doRemove);
- } else {
- if (shapeFlag & 128) {
- vnode.suspense.unmount(parentSuspense, doRemove);
- return;
- }
- if (shouldInvokeDirs) {
- invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount");
- }
- if (shapeFlag & 64) {
- vnode.type.remove(
- vnode,
- parentComponent,
- parentSuspense,
- optimized,
- internals,
- doRemove
- );
- } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments
- (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {
- unmountChildren(
- dynamicChildren,
- parentComponent,
- parentSuspense,
- false,
- true
- );
- } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {
- unmountChildren(children, parentComponent, parentSuspense);
- }
- if (doRemove) {
- remove(vnode);
- }
- }
- if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {
- queuePostRenderEffect(() => {
- vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
- shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted");
- }, parentSuspense);
- }
- };
- const remove = (vnode) => {
- const { type, el, anchor, transition } = vnode;
- if (type === Fragment) {
- if (vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {
- vnode.children.forEach((child) => {
- if (child.type === Comment) {
- hostRemove(child.el);
- } else {
- remove(child);
- }
- });
- } else {
- removeFragment(el, anchor);
- }
- return;
- }
- if (type === Static) {
- removeStaticNode(vnode);
- return;
- }
- const performRemove = () => {
- hostRemove(el);
- if (transition && !transition.persisted && transition.afterLeave) {
- transition.afterLeave();
- }
- };
- if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
- const { leave, delayLeave } = transition;
- const performLeave = () => leave(el, performRemove);
- if (delayLeave) {
- delayLeave(vnode.el, performRemove, performLeave);
- } else {
- performLeave();
- }
- } else {
- performRemove();
- }
- };
- const removeFragment = (cur, end) => {
- let next;
- while (cur !== end) {
- next = hostNextSibling(cur);
- hostRemove(cur);
- cur = next;
- }
- hostRemove(end);
- };
- const unmountComponent = (instance, parentSuspense, doRemove) => {
- if (instance.type.__hmrId) {
- unregisterHMR(instance);
- }
- const { bum, scope, update, subTree, um } = instance;
- if (bum) {
- invokeArrayFns(bum);
- }
- scope.stop();
- if (update) {
- update.active = false;
- unmount(subTree, instance, parentSuspense, doRemove);
- }
- if (um) {
- queuePostRenderEffect(um, parentSuspense);
- }
- queuePostRenderEffect(() => {
- instance.isUnmounted = true;
- }, parentSuspense);
- if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {
- parentSuspense.deps--;
- if (parentSuspense.deps === 0) {
- parentSuspense.resolve();
- }
- }
- {
- devtoolsComponentRemoved(instance);
- }
- };
- const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {
- for (let i = start; i < children.length; i++) {
- unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);
- }
- };
- const getNextHostNode = (vnode) => {
- if (vnode.shapeFlag & 6) {
- return getNextHostNode(vnode.component.subTree);
- }
- if (vnode.shapeFlag & 128) {
- return vnode.suspense.next();
- }
- return hostNextSibling(vnode.anchor || vnode.el);
- };
- const render = (vnode, container, isSVG) => {
- if (vnode == null) {
- if (container._vnode) {
- unmount(container._vnode, null, null, true);
- }
- } else {
- patch(container._vnode || null, vnode, container, null, null, null, isSVG);
- }
- flushPreFlushCbs();
- flushPostFlushCbs();
- container._vnode = vnode;
- };
- const internals = {
- p: patch,
- um: unmount,
- m: move,
- r: remove,
- mt: mountComponent,
- mc: mountChildren,
- pc: patchChildren,
- pbc: patchBlockChildren,
- n: getNextHostNode,
- o: options
- };
- let hydrate;
- let hydrateNode;
- if (createHydrationFns) {
- [hydrate, hydrateNode] = createHydrationFns(
- internals
- );
- }
- return {
- render,
- hydrate,
- createApp: createAppAPI(render, hydrate)
- };
- }
- function toggleRecurse({ effect, update }, allowed) {
- effect.allowRecurse = update.allowRecurse = allowed;
- }
- function traverseStaticChildren(n1, n2, shallow = false) {
- const ch1 = n1.children;
- const ch2 = n2.children;
- if (isArray(ch1) && isArray(ch2)) {
- for (let i = 0; i < ch1.length; i++) {
- const c1 = ch1[i];
- let c2 = ch2[i];
- if (c2.shapeFlag & 1 && !c2.dynamicChildren) {
- if (c2.patchFlag <= 0 || c2.patchFlag === 32) {
- c2 = ch2[i] = cloneIfMounted(ch2[i]);
- c2.el = c1.el;
- }
- if (!shallow)
- traverseStaticChildren(c1, c2);
- }
- if (c2.type === Text) {
- c2.el = c1.el;
- }
- if (c2.type === Comment && !c2.el) {
- c2.el = c1.el;
- }
- }
- }
- }
- function getSequence(arr) {
- const p = arr.slice();
- const result = [0];
- let i, j, u, v, c;
- const len = arr.length;
- for (i = 0; i < len; i++) {
- const arrI = arr[i];
- if (arrI !== 0) {
- j = result[result.length - 1];
- if (arr[j] < arrI) {
- p[i] = j;
- result.push(i);
- continue;
- }
- u = 0;
- v = result.length - 1;
- while (u < v) {
- c = u + v >> 1;
- if (arr[result[c]] < arrI) {
- u = c + 1;
- } else {
- v = c;
- }
- }
- if (arrI < arr[result[u]]) {
- if (u > 0) {
- p[i] = result[u - 1];
- }
- result[u] = i;
- }
- }
- }
- u = result.length;
- v = result[u - 1];
- while (u-- > 0) {
- result[u] = v;
- v = p[v];
- }
- return result;
- }
- const isTeleport = (type) => type.__isTeleport;
- const Fragment = Symbol.for("v-fgt");
- const Text = Symbol.for("v-txt");
- const Comment = Symbol.for("v-cmt");
- const Static = Symbol.for("v-stc");
- let currentBlock = null;
- let isBlockTreeEnabled = 1;
- function setBlockTracking(value) {
- isBlockTreeEnabled += value;
- }
- function isVNode$2(value) {
- return value ? value.__v_isVNode === true : false;
- }
- function isSameVNodeType(n1, n2) {
- if (n2.shapeFlag & 6 && hmrDirtyComponents.has(n2.type)) {
- n1.shapeFlag &= ~256;
- n2.shapeFlag &= ~512;
- return false;
- }
- return n1.type === n2.type && n1.key === n2.key;
- }
- const createVNodeWithArgsTransform = (...args) => {
- return _createVNode(
- ...args
- );
- };
- const InternalObjectKey = `__vInternal`;
- const normalizeKey = ({ key }) => key != null ? key : null;
- const normalizeRef = ({
- ref,
- ref_key,
- ref_for
- }) => {
- if (typeof ref === "number") {
- ref = "" + ref;
- }
- return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;
- };
- function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {
- const vnode = {
- __v_isVNode: true,
- __v_skip: true,
- type,
- props,
- key: props && normalizeKey(props),
- ref: props && normalizeRef(props),
- scopeId: currentScopeId,
- slotScopeIds: null,
- children,
- component: null,
- suspense: null,
- ssContent: null,
- ssFallback: null,
- dirs: null,
- transition: null,
- el: null,
- anchor: null,
- target: null,
- targetAnchor: null,
- staticCount: 0,
- shapeFlag,
- patchFlag,
- dynamicProps,
- dynamicChildren: null,
- appContext: null,
- ctx: currentRenderingInstance
- };
- if (needFullChildrenNormalization) {
- normalizeChildren(vnode, children);
- if (shapeFlag & 128) {
- type.normalize(vnode);
- }
- } else if (children) {
- vnode.shapeFlag |= isString(children) ? 8 : 16;
- }
- if (vnode.key !== vnode.key) {
- warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type);
- }
- if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself
- !isBlockNode && // has current parent block
- currentBlock && // presence of a patch flag indicates this node needs patching on updates.
- // component nodes also should always be patched, because even if the
- // component doesn't need to update, it needs to persist the instance on to
- // the next vnode so that it can be properly unmounted later.
- (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the
- // vnode should not be considered dynamic due to handler caching.
- vnode.patchFlag !== 32) {
- currentBlock.push(vnode);
- }
- return vnode;
- }
- const createVNode = createVNodeWithArgsTransform ;
- function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {
- if (!type || type === NULL_DYNAMIC_COMPONENT) {
- if (!type) {
- warn(`Invalid vnode type when creating vnode: ${type}.`);
- }
- type = Comment;
- }
- if (isVNode$2(type)) {
- const cloned = cloneVNode(
- type,
- props,
- true
- /* mergeRef: true */
- );
- if (children) {
- normalizeChildren(cloned, children);
- }
- if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {
- if (cloned.shapeFlag & 6) {
- currentBlock[currentBlock.indexOf(type)] = cloned;
- } else {
- currentBlock.push(cloned);
- }
- }
- cloned.patchFlag |= -2;
- return cloned;
- }
- if (isClassComponent(type)) {
- type = type.__vccOpts;
- }
- if (props) {
- props = guardReactiveProps(props);
- let { class: klass, style } = props;
- if (klass && !isString(klass)) {
- props.class = normalizeClass(klass);
- }
- if (isObject(style)) {
- if (isProxy(style) && !isArray(style)) {
- style = extend({}, style);
- }
- props.style = normalizeStyle(style);
- }
- }
- const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;
- if (shapeFlag & 4 && isProxy(type)) {
- type = toRaw(type);
- warn(
- `Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`,
- `
- Component that was made reactive: `,
- type
- );
- }
- return createBaseVNode(
- type,
- props,
- children,
- patchFlag,
- dynamicProps,
- shapeFlag,
- isBlockNode,
- true
- );
- }
- function guardReactiveProps(props) {
- if (!props)
- return null;
- return isProxy(props) || InternalObjectKey in props ? extend({}, props) : props;
- }
- function cloneVNode(vnode, extraProps, mergeRef = false) {
- const { props, ref, patchFlag, children } = vnode;
- const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;
- const cloned = {
- __v_isVNode: true,
- __v_skip: true,
- type: vnode.type,
- props: mergedProps,
- key: mergedProps && normalizeKey(mergedProps),
- ref: extraProps && extraProps.ref ? (
- // #2078 in the case of <component :is="vnode" ref="extra"/>
- // if the vnode itself already has a ref, cloneVNode will need to merge
- // the refs so the single vnode can be set on multiple refs
- mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)
- ) : ref,
- scopeId: vnode.scopeId,
- slotScopeIds: vnode.slotScopeIds,
- children: patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children,
- target: vnode.target,
- targetAnchor: vnode.targetAnchor,
- staticCount: vnode.staticCount,
- shapeFlag: vnode.shapeFlag,
- // if the vnode is cloned with extra props, we can no longer assume its
- // existing patch flag to be reliable and need to add the FULL_PROPS flag.
- // note: preserve flag for fragments since they use the flag for children
- // fast paths only.
- patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,
- dynamicProps: vnode.dynamicProps,
- dynamicChildren: vnode.dynamicChildren,
- appContext: vnode.appContext,
- dirs: vnode.dirs,
- transition: vnode.transition,
- // These should technically only be non-null on mounted VNodes. However,
- // they *should* be copied for kept-alive vnodes. So we just always copy
- // them since them being non-null during a mount doesn't affect the logic as
- // they will simply be overwritten.
- component: vnode.component,
- suspense: vnode.suspense,
- ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
- ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
- el: vnode.el,
- anchor: vnode.anchor,
- ctx: vnode.ctx,
- ce: vnode.ce
- };
- return cloned;
- }
- function deepCloneVNode(vnode) {
- const cloned = cloneVNode(vnode);
- if (isArray(vnode.children)) {
- cloned.children = vnode.children.map(deepCloneVNode);
- }
- return cloned;
- }
- function createTextVNode(text = " ", flag = 0) {
- return createVNode(Text, null, text, flag);
- }
- function normalizeVNode$1(child) {
- if (child == null || typeof child === "boolean") {
- return createVNode(Comment);
- } else if (isArray(child)) {
- return createVNode(
- Fragment,
- null,
- // #3666, avoid reference pollution when reusing vnode
- child.slice()
- );
- } else if (typeof child === "object") {
- return cloneIfMounted(child);
- } else {
- return createVNode(Text, null, String(child));
- }
- }
- function cloneIfMounted(child) {
- return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);
- }
- function normalizeChildren(vnode, children) {
- let type = 0;
- const { shapeFlag } = vnode;
- if (children == null) {
- children = null;
- } else if (isArray(children)) {
- type = 16;
- } else if (typeof children === "object") {
- if (shapeFlag & (1 | 64)) {
- const slot = children.default;
- if (slot) {
- slot._c && (slot._d = false);
- normalizeChildren(vnode, slot());
- slot._c && (slot._d = true);
- }
- return;
- } else {
- type = 32;
- const slotFlag = children._;
- if (!slotFlag && !(InternalObjectKey in children)) {
- children._ctx = currentRenderingInstance;
- } else if (slotFlag === 3 && currentRenderingInstance) {
- if (currentRenderingInstance.slots._ === 1) {
- children._ = 1;
- } else {
- children._ = 2;
- vnode.patchFlag |= 1024;
- }
- }
- }
- } else if (isFunction(children)) {
- children = { default: children, _ctx: currentRenderingInstance };
- type = 32;
- } else {
- children = String(children);
- if (shapeFlag & 64) {
- type = 16;
- children = [createTextVNode(children)];
- } else {
- type = 8;
- }
- }
- vnode.children = children;
- vnode.shapeFlag |= type;
- }
- function mergeProps(...args) {
- const ret = {};
- for (let i = 0; i < args.length; i++) {
- const toMerge = args[i];
- for (const key in toMerge) {
- if (key === "class") {
- if (ret.class !== toMerge.class) {
- ret.class = normalizeClass([ret.class, toMerge.class]);
- }
- } else if (key === "style") {
- ret.style = normalizeStyle([ret.style, toMerge.style]);
- } else if (isOn(key)) {
- const existing = ret[key];
- const incoming = toMerge[key];
- if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {
- ret[key] = existing ? [].concat(existing, incoming) : incoming;
- }
- } else if (key !== "") {
- ret[key] = toMerge[key];
- }
- }
- }
- return ret;
- }
- function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
- callWithAsyncErrorHandling(hook, instance, 7, [
- vnode,
- prevVNode
- ]);
- }
- const emptyAppContext = createAppContext();
- let uid = 0;
- function createComponentInstance$1(vnode, parent, suspense) {
- const type = vnode.type;
- const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
- const instance = {
- uid: uid++,
- vnode,
- type,
- parent,
- appContext,
- root: null,
- // to be immediately set
- next: null,
- subTree: null,
- // will be set synchronously right after creation
- effect: null,
- update: null,
- // will be set synchronously right after creation
- scope: new EffectScope(
- true
- /* detached */
- ),
- render: null,
- proxy: null,
- exposed: null,
- exposeProxy: null,
- withProxy: null,
- provides: parent ? parent.provides : Object.create(appContext.provides),
- accessCache: null,
- renderCache: [],
- // local resolved assets
- components: null,
- directives: null,
- // resolved props and emits options
- propsOptions: normalizePropsOptions(type, appContext),
- emitsOptions: normalizeEmitsOptions(type, appContext),
- // emit
- emit: null,
- // to be set immediately
- emitted: null,
- // props default value
- propsDefaults: EMPTY_OBJ,
- // inheritAttrs
- inheritAttrs: type.inheritAttrs,
- // state
- ctx: EMPTY_OBJ,
- data: EMPTY_OBJ,
- props: EMPTY_OBJ,
- attrs: EMPTY_OBJ,
- slots: EMPTY_OBJ,
- refs: EMPTY_OBJ,
- setupState: EMPTY_OBJ,
- setupContext: null,
- attrsProxy: null,
- slotsProxy: null,
- // suspense related
- suspense,
- suspenseId: suspense ? suspense.pendingId : 0,
- asyncDep: null,
- asyncResolved: false,
- // lifecycle hooks
- // not using enums here because it results in computed properties
- isMounted: false,
- isUnmounted: false,
- isDeactivated: false,
- bc: null,
- c: null,
- bm: null,
- m: null,
- bu: null,
- u: null,
- um: null,
- bum: null,
- da: null,
- a: null,
- rtg: null,
- rtc: null,
- ec: null,
- sp: null
- };
- {
- instance.ctx = createDevRenderContext(instance);
- }
- instance.root = parent ? parent.root : instance;
- instance.emit = emit.bind(null, instance);
- if (vnode.ce) {
- vnode.ce(instance);
- }
- return instance;
- }
- let currentInstance = null;
- let internalSetCurrentInstance;
- let globalCurrentInstanceSetters;
- let settersKey = "__VUE_INSTANCE_SETTERS__";
- {
- if (!(globalCurrentInstanceSetters = getGlobalThis()[settersKey])) {
- globalCurrentInstanceSetters = getGlobalThis()[settersKey] = [];
- }
- globalCurrentInstanceSetters.push((i) => currentInstance = i);
- internalSetCurrentInstance = (instance) => {
- if (globalCurrentInstanceSetters.length > 1) {
- globalCurrentInstanceSetters.forEach((s) => s(instance));
- } else {
- globalCurrentInstanceSetters[0](instance);
- }
- };
- }
- const setCurrentInstance = (instance) => {
- internalSetCurrentInstance(instance);
- instance.scope.on();
- };
- const unsetCurrentInstance = () => {
- currentInstance && currentInstance.scope.off();
- internalSetCurrentInstance(null);
- };
- const isBuiltInTag = /* @__PURE__ */ makeMap("slot,component");
- function validateComponentName(name, config) {
- const appIsNativeTag = config.isNativeTag || NO;
- if (isBuiltInTag(name) || appIsNativeTag(name)) {
- warn(
- "Do not use built-in or reserved HTML elements as component id: " + name
- );
- }
- }
- function isStatefulComponent(instance) {
- return instance.vnode.shapeFlag & 4;
- }
- let isInSSRComponentSetup = false;
- function setupComponent$1(instance, isSSR = false) {
- isInSSRComponentSetup = isSSR;
- const { props, children } = instance.vnode;
- const isStateful = isStatefulComponent(instance);
- initProps(instance, props, isStateful, isSSR);
- initSlots(instance, children);
- const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;
- isInSSRComponentSetup = false;
- return setupResult;
- }
- function setupStatefulComponent(instance, isSSR) {
- var _a;
- const Component = instance.type;
- {
- if (Component.name) {
- validateComponentName(Component.name, instance.appContext.config);
- }
- if (Component.components) {
- const names = Object.keys(Component.components);
- for (let i = 0; i < names.length; i++) {
- validateComponentName(names[i], instance.appContext.config);
- }
- }
- if (Component.directives) {
- const names = Object.keys(Component.directives);
- for (let i = 0; i < names.length; i++) {
- validateDirectiveName(names[i]);
- }
- }
- if (Component.compilerOptions && isRuntimeOnly()) {
- warn(
- `"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`
- );
- }
- }
- instance.accessCache = /* @__PURE__ */ Object.create(null);
- instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));
- {
- exposePropsOnRenderContext(instance);
- }
- const { setup } = Component;
- if (setup) {
- const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;
- setCurrentInstance(instance);
- pauseTracking();
- const setupResult = callWithErrorHandling(
- setup,
- instance,
- 0,
- [shallowReadonly(instance.props) , setupContext]
- );
- resetTracking();
- unsetCurrentInstance();
- if (isPromise(setupResult)) {
- setupResult.then(unsetCurrentInstance, unsetCurrentInstance);
- if (isSSR) {
- return setupResult.then((resolvedResult) => {
- handleSetupResult(instance, resolvedResult, isSSR);
- }).catch((e) => {
- handleError(e, instance, 0);
- });
- } else {
- instance.asyncDep = setupResult;
- if (!instance.suspense) {
- const name = (_a = Component.name) != null ? _a : "Anonymous";
- warn(
- `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`
- );
- }
- }
- } else {
- handleSetupResult(instance, setupResult, isSSR);
- }
- } else {
- finishComponentSetup(instance, isSSR);
- }
- }
- function handleSetupResult(instance, setupResult, isSSR) {
- if (isFunction(setupResult)) {
- if (instance.type.__ssrInlineRender) {
- instance.ssrRender = setupResult;
- } else {
- instance.render = setupResult;
- }
- } else if (isObject(setupResult)) {
- if (isVNode$2(setupResult)) {
- warn(
- `setup() should not return VNodes directly - return a render function instead.`
- );
- }
- {
- instance.devtoolsRawSetupState = setupResult;
- }
- instance.setupState = proxyRefs(setupResult);
- {
- exposeSetupStateOnRenderContext(instance);
- }
- } else if (setupResult !== void 0) {
- warn(
- `setup() should return an object. Received: ${setupResult === null ? "null" : typeof setupResult}`
- );
- }
- finishComponentSetup(instance, isSSR);
- }
- let compile;
- const isRuntimeOnly = () => !compile;
- function finishComponentSetup(instance, isSSR, skipOptions) {
- const Component = instance.type;
- if (!instance.render) {
- if (!isSSR && compile && !Component.render) {
- const template = Component.template || resolveMergedOptions(instance).template;
- if (template) {
- {
- startMeasure(instance, `compile`);
- }
- const { isCustomElement, compilerOptions } = instance.appContext.config;
- const { delimiters, compilerOptions: componentCompilerOptions } = Component;
- const finalCompilerOptions = extend(
- extend(
- {
- isCustomElement,
- delimiters
- },
- compilerOptions
- ),
- componentCompilerOptions
- );
- Component.render = compile(template, finalCompilerOptions);
- {
- endMeasure(instance, `compile`);
- }
- }
- }
- instance.render = Component.render || NOOP;
- }
- {
- setCurrentInstance(instance);
- pauseTracking();
- applyOptions(instance);
- resetTracking();
- unsetCurrentInstance();
- }
- if (!Component.render && instance.render === NOOP && !isSSR) {
- if (Component.template) {
- warn(
- `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Use "vue.esm-browser.js" instead.` )
- /* should not happen */
- );
- } else {
- warn(`Component is missing template or render function.`);
- }
- }
- }
- function getAttrsProxy(instance) {
- return instance.attrsProxy || (instance.attrsProxy = new Proxy(
- instance.attrs,
- {
- get(target, key) {
- markAttrsAccessed();
- track(instance, "get", "$attrs");
- return target[key];
- },
- set() {
- warn(`setupContext.attrs is readonly.`);
- return false;
- },
- deleteProperty() {
- warn(`setupContext.attrs is readonly.`);
- return false;
- }
- }
- ));
- }
- function getSlotsProxy(instance) {
- return instance.slotsProxy || (instance.slotsProxy = new Proxy(instance.slots, {
- get(target, key) {
- track(instance, "get", "$slots");
- return target[key];
- }
- }));
- }
- function createSetupContext(instance) {
- const expose = (exposed) => {
- {
- if (instance.exposed) {
- warn(`expose() should be called only once per setup().`);
- }
- if (exposed != null) {
- let exposedType = typeof exposed;
- if (exposedType === "object") {
- if (isArray(exposed)) {
- exposedType = "array";
- } else if (isRef(exposed)) {
- exposedType = "ref";
- }
- }
- if (exposedType !== "object") {
- warn(
- `expose() should be passed a plain object, received ${exposedType}.`
- );
- }
- }
- }
- instance.exposed = exposed || {};
- };
- {
- return Object.freeze({
- get attrs() {
- return getAttrsProxy(instance);
- },
- get slots() {
- return getSlotsProxy(instance);
- },
- get emit() {
- return (event, ...args) => instance.emit(event, ...args);
- },
- expose
- });
- }
- }
- function getExposeProxy(instance) {
- if (instance.exposed) {
- return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {
- get(target, key) {
- if (key in target) {
- return target[key];
- } else if (key in publicPropertiesMap) {
- return publicPropertiesMap[key](instance);
- }
- },
- has(target, key) {
- return key in target || key in publicPropertiesMap;
- }
- }));
- }
- }
- const classifyRE = /(?:^|[-_])(\w)/g;
- const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, "");
- function getComponentName(Component, includeInferred = true) {
- return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
- }
- function formatComponentName(instance, Component, isRoot = false) {
- let name = getComponentName(Component);
- if (!name && Component.__file) {
- const match = Component.__file.match(/([^/\\]+)\.\w+$/);
- if (match) {
- name = match[1];
- }
- }
- if (!name && instance && instance.parent) {
- const inferFromRegistry = (registry) => {
- for (const key in registry) {
- if (registry[key] === Component) {
- return key;
- }
- }
- };
- name = inferFromRegistry(
- instance.components || instance.parent.type.components
- ) || inferFromRegistry(instance.appContext.components);
- }
- return name ? classify(name) : isRoot ? `App` : `Anonymous`;
- }
- function isClassComponent(value) {
- return isFunction(value) && "__vccOpts" in value;
- }
- const computed = (getterOrOptions, debugOptions) => {
- return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
- };
- const ssrContextKey = Symbol.for("v-scx");
- const useSSRContext = () => {
- {
- const ctx = inject(ssrContextKey);
- if (!ctx) {
- warn(
- `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`
- );
- }
- return ctx;
- }
- };
- const version = "3.3.4";
- const _ssrUtils = {
- createComponentInstance: createComponentInstance$1,
- setupComponent: setupComponent$1,
- renderComponentRoot: renderComponentRoot$1,
- setCurrentRenderingInstance: setCurrentRenderingInstance$1,
- isVNode: isVNode$2,
- normalizeVNode: normalizeVNode$1
- };
- const ssrUtils = _ssrUtils ;
- const svgNS = "http://www.w3.org/2000/svg";
- const doc = typeof document !== "undefined" ? document : null;
- const templateContainer = doc && /* @__PURE__ */ doc.createElement("template");
- const nodeOps = {
- insert: (child, parent, anchor) => {
- parent.insertBefore(child, anchor || null);
- },
- remove: (child) => {
- const parent = child.parentNode;
- if (parent) {
- parent.removeChild(child);
- }
- },
- createElement: (tag, isSVG, is, props) => {
- const el = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0);
- if (tag === "select" && props && props.multiple != null) {
- el.setAttribute("multiple", props.multiple);
- }
- return el;
- },
- createText: (text) => doc.createTextNode(text),
- createComment: (text) => doc.createComment(text),
- setText: (node, text) => {
- node.nodeValue = text;
- },
- setElementText: (el, text) => {
- el.textContent = text;
- },
- parentNode: (node) => node.parentNode,
- nextSibling: (node) => node.nextSibling,
- querySelector: (selector) => doc.querySelector(selector),
- setScopeId(el, id) {
- el.setAttribute(id, "");
- },
- // __UNSAFE__
- // Reason: innerHTML.
- // Static content here can only come from compiled templates.
- // As long as the user only uses trusted templates, this is safe.
- insertStaticContent(content, parent, anchor, isSVG, start, end) {
- const before = anchor ? anchor.previousSibling : parent.lastChild;
- if (start && (start === end || start.nextSibling)) {
- while (true) {
- parent.insertBefore(start.cloneNode(true), anchor);
- if (start === end || !(start = start.nextSibling))
- break;
- }
- } else {
- templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;
- const template = templateContainer.content;
- if (isSVG) {
- const wrapper = template.firstChild;
- while (wrapper.firstChild) {
- template.appendChild(wrapper.firstChild);
- }
- template.removeChild(wrapper);
- }
- parent.insertBefore(template, anchor);
- }
- return [
- // first
- before ? before.nextSibling : parent.firstChild,
- // last
- anchor ? anchor.previousSibling : parent.lastChild
- ];
- }
- };
- function patchClass(el, value, isSVG) {
- const transitionClasses = el._vtc;
- if (transitionClasses) {
- value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" ");
- }
- if (value == null) {
- el.removeAttribute("class");
- } else if (isSVG) {
- el.setAttribute("class", value);
- } else {
- el.className = value;
- }
- }
- function patchStyle(el, prev, next) {
- const style = el.style;
- const isCssString = isString(next);
- if (next && !isCssString) {
- if (prev && !isString(prev)) {
- for (const key in prev) {
- if (next[key] == null) {
- setStyle(style, key, "");
- }
- }
- }
- for (const key in next) {
- setStyle(style, key, next[key]);
- }
- } else {
- const currentDisplay = style.display;
- if (isCssString) {
- if (prev !== next) {
- style.cssText = next;
- }
- } else if (prev) {
- el.removeAttribute("style");
- }
- if ("_vod" in el) {
- style.display = currentDisplay;
- }
- }
- }
- const semicolonRE = /[^\\];\s*$/;
- const importantRE = /\s*!important$/;
- function setStyle(style, name, val) {
- if (isArray(val)) {
- val.forEach((v) => setStyle(style, name, v));
- } else {
- if (val == null)
- val = "";
- {
- if (semicolonRE.test(val)) {
- warn(
- `Unexpected semicolon at the end of '${name}' style value: '${val}'`
- );
- }
- }
- if (name.startsWith("--")) {
- style.setProperty(name, val);
- } else {
- const prefixed = autoPrefix(style, name);
- if (importantRE.test(val)) {
- style.setProperty(
- hyphenate(prefixed),
- val.replace(importantRE, ""),
- "important"
- );
- } else {
- style[prefixed] = val;
- }
- }
- }
- }
- const prefixes = ["Webkit", "Moz", "ms"];
- const prefixCache = {};
- function autoPrefix(style, rawName) {
- const cached = prefixCache[rawName];
- if (cached) {
- return cached;
- }
- let name = camelize(rawName);
- if (name !== "filter" && name in style) {
- return prefixCache[rawName] = name;
- }
- name = capitalize(name);
- for (let i = 0; i < prefixes.length; i++) {
- const prefixed = prefixes[i] + name;
- if (prefixed in style) {
- return prefixCache[rawName] = prefixed;
- }
- }
- return rawName;
- }
- const xlinkNS = "http://www.w3.org/1999/xlink";
- function patchAttr(el, key, value, isSVG, instance) {
- if (isSVG && key.startsWith("xlink:")) {
- if (value == null) {
- el.removeAttributeNS(xlinkNS, key.slice(6, key.length));
- } else {
- el.setAttributeNS(xlinkNS, key, value);
- }
- } else {
- const isBoolean = isSpecialBooleanAttr(key);
- if (value == null || isBoolean && !includeBooleanAttr(value)) {
- el.removeAttribute(key);
- } else {
- el.setAttribute(key, isBoolean ? "" : value);
- }
- }
- }
- function patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {
- if (key === "innerHTML" || key === "textContent") {
- if (prevChildren) {
- unmountChildren(prevChildren, parentComponent, parentSuspense);
- }
- el[key] = value == null ? "" : value;
- return;
- }
- const tag = el.tagName;
- if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally
- !tag.includes("-")) {
- el._value = value;
- const oldValue = tag === "OPTION" ? el.getAttribute("value") : el.value;
- const newValue = value == null ? "" : value;
- if (oldValue !== newValue) {
- el.value = newValue;
- }
- if (value == null) {
- el.removeAttribute(key);
- }
- return;
- }
- let needRemove = false;
- if (value === "" || value == null) {
- const type = typeof el[key];
- if (type === "boolean") {
- value = includeBooleanAttr(value);
- } else if (value == null && type === "string") {
- value = "";
- needRemove = true;
- } else if (type === "number") {
- value = 0;
- needRemove = true;
- }
- }
- try {
- el[key] = value;
- } catch (e) {
- if (!needRemove) {
- warn(
- `Failed setting prop "${key}" on <${tag.toLowerCase()}>: value ${value} is invalid.`,
- e
- );
- }
- }
- needRemove && el.removeAttribute(key);
- }
- function addEventListener(el, event, handler, options) {
- el.addEventListener(event, handler, options);
- }
- function removeEventListener(el, event, handler, options) {
- el.removeEventListener(event, handler, options);
- }
- function patchEvent(el, rawName, prevValue, nextValue, instance = null) {
- const invokers = el._vei || (el._vei = {});
- const existingInvoker = invokers[rawName];
- if (nextValue && existingInvoker) {
- existingInvoker.value = nextValue;
- } else {
- const [name, options] = parseName(rawName);
- if (nextValue) {
- const invoker = invokers[rawName] = createInvoker(nextValue, instance);
- addEventListener(el, name, invoker, options);
- } else if (existingInvoker) {
- removeEventListener(el, name, existingInvoker, options);
- invokers[rawName] = void 0;
- }
- }
- }
- const optionsModifierRE = /(?:Once|Passive|Capture)$/;
- function parseName(name) {
- let options;
- if (optionsModifierRE.test(name)) {
- options = {};
- let m;
- while (m = name.match(optionsModifierRE)) {
- name = name.slice(0, name.length - m[0].length);
- options[m[0].toLowerCase()] = true;
- }
- }
- const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2));
- return [event, options];
- }
- let cachedNow = 0;
- const p = /* @__PURE__ */ Promise.resolve();
- const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());
- function createInvoker(initialValue, instance) {
- const invoker = (e) => {
- if (!e._vts) {
- e._vts = Date.now();
- } else if (e._vts <= invoker.attached) {
- return;
- }
- callWithAsyncErrorHandling(
- patchStopImmediatePropagation(e, invoker.value),
- instance,
- 5,
- [e]
- );
- };
- invoker.value = initialValue;
- invoker.attached = getNow();
- return invoker;
- }
- function patchStopImmediatePropagation(e, value) {
- if (isArray(value)) {
- const originalStop = e.stopImmediatePropagation;
- e.stopImmediatePropagation = () => {
- originalStop.call(e);
- e._stopped = true;
- };
- return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2));
- } else {
- return value;
- }
- }
- const nativeOnRE = /^on[a-z]/;
- const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
- if (key === "class") {
- patchClass(el, nextValue, isSVG);
- } else if (key === "style") {
- patchStyle(el, prevValue, nextValue);
- } else if (isOn(key)) {
- if (!isModelListener(key)) {
- patchEvent(el, key, prevValue, nextValue, parentComponent);
- }
- } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {
- patchDOMProp(
- el,
- key,
- nextValue,
- prevChildren,
- parentComponent,
- parentSuspense,
- unmountChildren
- );
- } else {
- if (key === "true-value") {
- el._trueValue = nextValue;
- } else if (key === "false-value") {
- el._falseValue = nextValue;
- }
- patchAttr(el, key, nextValue, isSVG);
- }
- };
- function shouldSetAsProp(el, key, value, isSVG) {
- if (isSVG) {
- if (key === "innerHTML" || key === "textContent") {
- return true;
- }
- if (key in el && nativeOnRE.test(key) && isFunction(value)) {
- return true;
- }
- return false;
- }
- if (key === "spellcheck" || key === "draggable" || key === "translate") {
- return false;
- }
- if (key === "form") {
- return false;
- }
- if (key === "list" && el.tagName === "INPUT") {
- return false;
- }
- if (key === "type" && el.tagName === "TEXTAREA") {
- return false;
- }
- if (nativeOnRE.test(key) && isString(value)) {
- return false;
- }
- return key in el;
- }
- const getModelAssigner = (vnode) => {
- const fn = vnode.props["onUpdate:modelValue"] || false;
- return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn;
- };
- function onCompositionStart(e) {
- e.target.composing = true;
- }
- function onCompositionEnd(e) {
- const target = e.target;
- if (target.composing) {
- target.composing = false;
- target.dispatchEvent(new Event("input"));
- }
- }
- const vModelText = {
- created(el, { modifiers: { lazy, trim, number } }, vnode) {
- el._assign = getModelAssigner(vnode);
- const castToNumber = number || vnode.props && vnode.props.type === "number";
- addEventListener(el, lazy ? "change" : "input", (e) => {
- if (e.target.composing)
- return;
- let domValue = el.value;
- if (trim) {
- domValue = domValue.trim();
- }
- if (castToNumber) {
- domValue = looseToNumber(domValue);
- }
- el._assign(domValue);
- });
- if (trim) {
- addEventListener(el, "change", () => {
- el.value = el.value.trim();
- });
- }
- if (!lazy) {
- addEventListener(el, "compositionstart", onCompositionStart);
- addEventListener(el, "compositionend", onCompositionEnd);
- addEventListener(el, "change", onCompositionEnd);
- }
- },
- // set value on mounted so it's after min/max for type="range"
- mounted(el, { value }) {
- el.value = value == null ? "" : value;
- },
- beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {
- el._assign = getModelAssigner(vnode);
- if (el.composing)
- return;
- if (document.activeElement === el && el.type !== "range") {
- if (lazy) {
- return;
- }
- if (trim && el.value.trim() === value) {
- return;
- }
- if ((number || el.type === "number") && looseToNumber(el.value) === value) {
- return;
- }
- }
- const newValue = value == null ? "" : value;
- if (el.value !== newValue) {
- el.value = newValue;
- }
- }
- };
- function initVModelForSSR() {
- vModelText.getSSRProps = ({ value }) => ({ value });
- }
- const vShow = {
- beforeMount(el, { value }, { transition }) {
- el._vod = el.style.display === "none" ? "" : el.style.display;
- if (transition && value) {
- transition.beforeEnter(el);
- } else {
- setDisplay(el, value);
- }
- },
- mounted(el, { value }, { transition }) {
- if (transition && value) {
- transition.enter(el);
- }
- },
- updated(el, { value, oldValue }, { transition }) {
- if (!value === !oldValue)
- return;
- if (transition) {
- if (value) {
- transition.beforeEnter(el);
- setDisplay(el, true);
- transition.enter(el);
- } else {
- transition.leave(el, () => {
- setDisplay(el, false);
- });
- }
- } else {
- setDisplay(el, value);
- }
- },
- beforeUnmount(el, { value }) {
- setDisplay(el, value);
- }
- };
- function setDisplay(el, value) {
- el.style.display = value ? el._vod : "none";
- }
- function initVShowForSSR() {
- vShow.getSSRProps = ({ value }) => {
- if (!value) {
- return { style: { display: "none" } };
- }
- };
- }
- const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);
- let renderer;
- function ensureRenderer() {
- return renderer || (renderer = createRenderer(rendererOptions));
- }
- const createApp = (...args) => {
- const app = ensureRenderer().createApp(...args);
- {
- injectNativeTagCheck(app);
- injectCompilerOptionsCheck(app);
- }
- const { mount } = app;
- app.mount = (containerOrSelector) => {
- const container = normalizeContainer(containerOrSelector);
- if (!container)
- return;
- const component = app._component;
- if (!isFunction(component) && !component.render && !component.template) {
- component.template = container.innerHTML;
- }
- container.innerHTML = "";
- const proxy = mount(container, false, container instanceof SVGElement);
- if (container instanceof Element) {
- container.removeAttribute("v-cloak");
- container.setAttribute("data-v-app", "");
- }
- return proxy;
- };
- return app;
- };
- function injectNativeTagCheck(app) {
- Object.defineProperty(app.config, "isNativeTag", {
- value: (tag) => isHTMLTag(tag) || isSVGTag(tag),
- writable: false
- });
- }
- function injectCompilerOptionsCheck(app) {
- {
- const isCustomElement = app.config.isCustomElement;
- Object.defineProperty(app.config, "isCustomElement", {
- get() {
- return isCustomElement;
- },
- set() {
- warn(
- `The \`isCustomElement\` config option is deprecated. Use \`compilerOptions.isCustomElement\` instead.`
- );
- }
- });
- const compilerOptions = app.config.compilerOptions;
- const msg = `The \`compilerOptions\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, \`compilerOptions\` must be passed to \`@vue/compiler-dom\` in the build setup instead.
- - For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option.
- - For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader
- - For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`;
- Object.defineProperty(app.config, "compilerOptions", {
- get() {
- warn(msg);
- return compilerOptions;
- },
- set() {
- warn(msg);
- }
- });
- }
- }
- function normalizeContainer(container) {
- if (isString(container)) {
- const res = document.querySelector(container);
- if (!res) {
- warn(
- `Failed to mount app: mount target selector "${container}" returned null.`
- );
- }
- return res;
- }
- if (window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === "closed") {
- warn(
- `mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs`
- );
- }
- return container;
- }
- let ssrDirectiveInitialized = false;
- const initDirectivesForSSR = () => {
- if (!ssrDirectiveInitialized) {
- ssrDirectiveInitialized = true;
- initVModelForSSR();
- initVShowForSSR();
- }
- } ;
- const shouldIgnoreProp = makeMap(
- `,key,ref,innerHTML,textContent,ref_key,ref_for`
- );
- function ssrRenderAttrs(props, tag) {
- let ret = "";
- for (const key in props) {
- if (shouldIgnoreProp(key) || isOn(key) || tag === "textarea" && key === "value") {
- continue;
- }
- const value = props[key];
- if (key === "class") {
- ret += ` class="${ssrRenderClass(value)}"`;
- } else if (key === "style") {
- ret += ` style="${ssrRenderStyle(value)}"`;
- } else {
- ret += ssrRenderDynamicAttr(key, value, tag);
- }
- }
- return ret;
- }
- function ssrRenderDynamicAttr(key, value, tag) {
- if (!isRenderableValue(value)) {
- return ``;
- }
- const attrKey = tag && (tag.indexOf("-") > 0 || isSVGTag(tag)) ? key : propsToAttrMap[key] || key.toLowerCase();
- if (isBooleanAttr(attrKey)) {
- return includeBooleanAttr(value) ? ` ${attrKey}` : ``;
- } else if (isSSRSafeAttrName(attrKey)) {
- return value === "" ? ` ${attrKey}` : ` ${attrKey}="${escapeHtml(value)}"`;
- } else {
- console.warn(
- `[@vue/server-renderer] Skipped rendering unsafe attribute name: ${attrKey}`
- );
- return ``;
- }
- }
- function ssrRenderAttr(key, value) {
- if (!isRenderableValue(value)) {
- return ``;
- }
- return ` ${key}="${escapeHtml(value)}"`;
- }
- function isRenderableValue(value) {
- if (value == null) {
- return false;
- }
- const type = typeof value;
- return type === "string" || type === "number" || type === "boolean";
- }
- function ssrRenderClass(raw) {
- return escapeHtml(normalizeClass(raw));
- }
- function ssrRenderStyle(raw) {
- if (!raw) {
- return "";
- }
- if (isString(raw)) {
- return escapeHtml(raw);
- }
- const styles = normalizeStyle(raw);
- return escapeHtml(stringifyStyle(styles));
- }
- function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) {
- return renderComponentVNode(
- createVNode(comp, props, children),
- parentComponent,
- slotScopeId
- );
- }
- function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) {
- push(`<!--[-->`);
- ssrRenderSlotInner(
- slots,
- slotName,
- slotProps,
- fallbackRenderFn,
- push,
- parentComponent,
- slotScopeId
- );
- push(`<!--]-->`);
- }
- function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) {
- const slotFn = slots[slotName];
- if (slotFn) {
- const slotBuffer = [];
- const bufferedPush = (item) => {
- slotBuffer.push(item);
- };
- const ret = slotFn(
- slotProps,
- bufferedPush,
- parentComponent,
- slotScopeId ? " " + slotScopeId : ""
- );
- if (isArray(ret)) {
- renderVNodeChildren(push, ret, parentComponent, slotScopeId);
- } else {
- let isEmptySlot = true;
- if (transition) {
- isEmptySlot = false;
- } else {
- for (let i = 0; i < slotBuffer.length; i++) {
- if (!isComment(slotBuffer[i])) {
- isEmptySlot = false;
- break;
- }
- }
- }
- if (isEmptySlot) {
- if (fallbackRenderFn) {
- fallbackRenderFn();
- }
- } else {
- for (let i = 0; i < slotBuffer.length; i++) {
- push(slotBuffer[i]);
- }
- }
- }
- } else if (fallbackRenderFn) {
- fallbackRenderFn();
- }
- }
- const commentTestRE = /^<!--.*-->$/s;
- const commentRE = /<!--[^]*?-->/gm;
- function isComment(item) {
- if (typeof item !== "string" || !commentTestRE.test(item))
- return false;
- if (item.length <= 8)
- return true;
- return !item.replace(commentRE, "").trim();
- }
- function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) {
- parentPush("<!--teleport start-->");
- const context = parentComponent.appContext.provides[ssrContextKey];
- const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {});
- const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []);
- const bufferIndex = targetBuffer.length;
- let teleportContent;
- if (disabled) {
- contentRenderFn(parentPush);
- teleportContent = `<!--teleport anchor-->`;
- } else {
- const { getBuffer, push } = createBuffer();
- contentRenderFn(push);
- push(`<!--teleport anchor-->`);
- teleportContent = getBuffer();
- }
- targetBuffer.splice(bufferIndex, 0, teleportContent);
- parentPush("<!--teleport end-->");
- }
- function ssrInterpolate(value) {
- return escapeHtml(toDisplayString(value));
- }
- function ssrRenderList(source, renderItem) {
- if (isArray(source) || isString(source)) {
- for (let i = 0, l = source.length; i < l; i++) {
- renderItem(source[i], i);
- }
- } else if (typeof source === "number") {
- if (!Number.isInteger(source)) {
- warn(`The v-for range expect an integer value but got ${source}.`);
- return;
- }
- for (let i = 0; i < source; i++) {
- renderItem(i + 1, i);
- }
- } else if (isObject(source)) {
- if (source[Symbol.iterator]) {
- const arr = Array.from(source);
- for (let i = 0, l = arr.length; i < l; i++) {
- renderItem(arr[i], i);
- }
- } else {
- const keys = Object.keys(source);
- for (let i = 0, l = keys.length; i < l; i++) {
- const key = keys[i];
- renderItem(source[key], key, i);
- }
- }
- }
- }
- async function ssrRenderSuspense(push, { default: renderContent }) {
- if (renderContent) {
- renderContent();
- } else {
- push(`<!---->`);
- }
- }
- function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {
- if (typeof dir !== "function" && dir.getSSRProps) {
- return dir.getSSRProps(
- {
- dir,
- instance,
- value,
- oldValue: void 0,
- arg,
- modifiers
- },
- null
- ) || {};
- }
- return {};
- }
- const ssrLooseEqual = looseEqual;
- function ssrLooseContain(arr, value) {
- return looseIndexOf(arr, value) > -1;
- }
- function ssrRenderDynamicModel(type, model, value) {
- switch (type) {
- case "radio":
- return looseEqual(model, value) ? " checked" : "";
- case "checkbox":
- return (isArray(model) ? ssrLooseContain(model, value) : model) ? " checked" : "";
- default:
- return ssrRenderAttr("value", model);
- }
- }
- function ssrGetDynamicModelProps(existingProps = {}, model) {
- const { type, value } = existingProps;
- switch (type) {
- case "radio":
- return looseEqual(model, value) ? { checked: true } : null;
- case "checkbox":
- return (isArray(model) ? ssrLooseContain(model, value) : model) ? { checked: true } : null;
- default:
- return { value: model };
- }
- }
- function ssrCompile(template, instance) {
- {
- throw new Error(
- `On-the-fly template compilation is not supported in the ESM build of @vue/server-renderer. All templates must be pre-compiled into render functions.`
- );
- }
- }
- const {
- createComponentInstance,
- setCurrentRenderingInstance,
- setupComponent,
- renderComponentRoot,
- normalizeVNode
- } = ssrUtils;
- function createBuffer() {
- let appendable = false;
- const buffer = [];
- return {
- getBuffer() {
- return buffer;
- },
- push(item) {
- const isStringItem = isString(item);
- if (appendable && isStringItem) {
- buffer[buffer.length - 1] += item;
- } else {
- buffer.push(item);
- }
- appendable = isStringItem;
- if (isPromise(item) || isArray(item) && item.hasAsync) {
- buffer.hasAsync = true;
- }
- }
- };
- }
- function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
- const instance = createComponentInstance(vnode, parentComponent, null);
- const res = setupComponent(
- instance,
- true
- /* isSSR */
- );
- const hasAsyncSetup = isPromise(res);
- const prefetches = instance.sp;
- if (hasAsyncSetup || prefetches) {
- let p = hasAsyncSetup ? res : Promise.resolve();
- if (prefetches) {
- p = p.then(
- () => Promise.all(prefetches.map((prefetch) => prefetch.call(instance.proxy)))
- ).catch(() => {
- });
- }
- return p.then(() => renderComponentSubTree(instance, slotScopeId));
- } else {
- return renderComponentSubTree(instance, slotScopeId);
- }
- }
- function renderComponentSubTree(instance, slotScopeId) {
- const comp = instance.type;
- const { getBuffer, push } = createBuffer();
- if (isFunction(comp)) {
- let root = renderComponentRoot(instance);
- if (!comp.props) {
- for (const key in instance.attrs) {
- if (key.startsWith(`data-v-`)) {
- (root.props || (root.props = {}))[key] = ``;
- }
- }
- }
- renderVNode(push, instance.subTree = root, instance, slotScopeId);
- } else {
- if ((!instance.render || instance.render === NOOP) && !instance.ssrRender && !comp.ssrRender && isString(comp.template)) {
- comp.ssrRender = ssrCompile(comp.template);
- }
- for (const e of instance.scope.effects) {
- if (e.computed)
- e.computed._cacheable = true;
- }
- const ssrRender = instance.ssrRender || comp.ssrRender;
- if (ssrRender) {
- let attrs = instance.inheritAttrs !== false ? instance.attrs : void 0;
- let hasCloned = false;
- let cur = instance;
- while (true) {
- const scopeId = cur.vnode.scopeId;
- if (scopeId) {
- if (!hasCloned) {
- attrs = { ...attrs };
- hasCloned = true;
- }
- attrs[scopeId] = "";
- }
- const parent = cur.parent;
- if (parent && parent.subTree && parent.subTree === cur.vnode) {
- cur = parent;
- } else {
- break;
- }
- }
- if (slotScopeId) {
- if (!hasCloned)
- attrs = { ...attrs };
- attrs[slotScopeId.trim()] = "";
- }
- const prev = setCurrentRenderingInstance(instance);
- try {
- ssrRender(
- instance.proxy,
- push,
- instance,
- attrs,
- // compiler-optimized bindings
- instance.props,
- instance.setupState,
- instance.data,
- instance.ctx
- );
- } finally {
- setCurrentRenderingInstance(prev);
- }
- } else if (instance.render && instance.render !== NOOP) {
- renderVNode(
- push,
- instance.subTree = renderComponentRoot(instance),
- instance,
- slotScopeId
- );
- } else {
- const componentName = comp.name || comp.__file || `<Anonymous>`;
- warn(`Component ${componentName} is missing template or render function.`);
- push(`<!---->`);
- }
- }
- return getBuffer();
- }
- function renderVNode(push, vnode, parentComponent, slotScopeId) {
- const { type, shapeFlag, children } = vnode;
- switch (type) {
- case Text:
- push(escapeHtml(children));
- break;
- case Comment:
- push(
- children ? `<!--${escapeHtmlComment(children)}-->` : `<!---->`
- );
- break;
- case Static:
- push(children);
- break;
- case Fragment:
- if (vnode.slotScopeIds) {
- slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" ");
- }
- push(`<!--[-->`);
- renderVNodeChildren(
- push,
- children,
- parentComponent,
- slotScopeId
- );
- push(`<!--]-->`);
- break;
- default:
- if (shapeFlag & 1) {
- renderElementVNode(push, vnode, parentComponent, slotScopeId);
- } else if (shapeFlag & 6) {
- push(renderComponentVNode(vnode, parentComponent, slotScopeId));
- } else if (shapeFlag & 64) {
- renderTeleportVNode(push, vnode, parentComponent, slotScopeId);
- } else if (shapeFlag & 128) {
- renderVNode(push, vnode.ssContent, parentComponent, slotScopeId);
- } else {
- warn(
- "[@vue/server-renderer] Invalid VNode type:",
- type,
- `(${typeof type})`
- );
- }
- }
- }
- function renderVNodeChildren(push, children, parentComponent, slotScopeId) {
- for (let i = 0; i < children.length; i++) {
- renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId);
- }
- }
- function renderElementVNode(push, vnode, parentComponent, slotScopeId) {
- const tag = vnode.type;
- let { props, children, shapeFlag, scopeId, dirs } = vnode;
- let openTag = `<${tag}`;
- if (dirs) {
- props = applySSRDirectives(vnode, props, dirs);
- }
- if (props) {
- openTag += ssrRenderAttrs(props, tag);
- }
- if (scopeId) {
- openTag += ` ${scopeId}`;
- }
- let curParent = parentComponent;
- let curVnode = vnode;
- while (curParent && curVnode === curParent.subTree) {
- curVnode = curParent.vnode;
- if (curVnode.scopeId) {
- openTag += ` ${curVnode.scopeId}`;
- }
- curParent = curParent.parent;
- }
- if (slotScopeId) {
- openTag += ` ${slotScopeId}`;
- }
- push(openTag + `>`);
- if (!isVoidTag(tag)) {
- let hasChildrenOverride = false;
- if (props) {
- if (props.innerHTML) {
- hasChildrenOverride = true;
- push(props.innerHTML);
- } else if (props.textContent) {
- hasChildrenOverride = true;
- push(escapeHtml(props.textContent));
- } else if (tag === "textarea" && props.value) {
- hasChildrenOverride = true;
- push(escapeHtml(props.value));
- }
- }
- if (!hasChildrenOverride) {
- if (shapeFlag & 8) {
- push(escapeHtml(children));
- } else if (shapeFlag & 16) {
- renderVNodeChildren(
- push,
- children,
- parentComponent,
- slotScopeId
- );
- }
- }
- push(`</${tag}>`);
- }
- }
- function applySSRDirectives(vnode, rawProps, dirs) {
- const toMerge = [];
- for (let i = 0; i < dirs.length; i++) {
- const binding = dirs[i];
- const {
- dir: { getSSRProps }
- } = binding;
- if (getSSRProps) {
- const props = getSSRProps(binding, vnode);
- if (props)
- toMerge.push(props);
- }
- }
- return mergeProps(rawProps || {}, ...toMerge);
- }
- function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
- const target = vnode.props && vnode.props.to;
- const disabled = vnode.props && vnode.props.disabled;
- if (!target) {
- if (!disabled) {
- warn(`[@vue/server-renderer] Teleport is missing target prop.`);
- }
- return [];
- }
- if (!isString(target)) {
- warn(
- `[@vue/server-renderer] Teleport target must be a query selector string.`
- );
- return [];
- }
- ssrRenderTeleport(
- push,
- (push2) => {
- renderVNodeChildren(
- push2,
- vnode.children,
- parentComponent,
- slotScopeId
- );
- },
- target,
- disabled || disabled === "",
- parentComponent
- );
- }
- const { isVNode: isVNode$1 } = ssrUtils;
- async function unrollBuffer$1(buffer) {
- if (buffer.hasAsync) {
- let ret = "";
- for (let i = 0; i < buffer.length; i++) {
- let item = buffer[i];
- if (isPromise(item)) {
- item = await item;
- }
- if (isString(item)) {
- ret += item;
- } else {
- ret += await unrollBuffer$1(item);
- }
- }
- return ret;
- } else {
- return unrollBufferSync$1(buffer);
- }
- }
- function unrollBufferSync$1(buffer) {
- let ret = "";
- for (let i = 0; i < buffer.length; i++) {
- let item = buffer[i];
- if (isString(item)) {
- ret += item;
- } else {
- ret += unrollBufferSync$1(item);
- }
- }
- return ret;
- }
- async function renderToString(input, context = {}) {
- if (isVNode$1(input)) {
- return renderToString(createApp({ render: () => input }), context);
- }
- const vnode = createVNode(input._component, input._props);
- vnode.appContext = input._context;
- input.provide(ssrContextKey, context);
- const buffer = await renderComponentVNode(vnode);
- const result = await unrollBuffer$1(buffer);
- await resolveTeleports(context);
- if (context.__watcherHandles) {
- for (const unwatch of context.__watcherHandles) {
- unwatch();
- }
- }
- return result;
- }
- async function resolveTeleports(context) {
- if (context.__teleportBuffers) {
- context.teleports = context.teleports || {};
- for (const key in context.__teleportBuffers) {
- context.teleports[key] = await unrollBuffer$1(
- await Promise.all([context.__teleportBuffers[key]])
- );
- }
- }
- }
- const { isVNode } = ssrUtils;
- async function unrollBuffer(buffer, stream) {
- if (buffer.hasAsync) {
- for (let i = 0; i < buffer.length; i++) {
- let item = buffer[i];
- if (isPromise(item)) {
- item = await item;
- }
- if (isString(item)) {
- stream.push(item);
- } else {
- await unrollBuffer(item, stream);
- }
- }
- } else {
- unrollBufferSync(buffer, stream);
- }
- }
- function unrollBufferSync(buffer, stream) {
- for (let i = 0; i < buffer.length; i++) {
- let item = buffer[i];
- if (isString(item)) {
- stream.push(item);
- } else {
- unrollBufferSync(item, stream);
- }
- }
- }
- function renderToSimpleStream(input, context, stream) {
- if (isVNode(input)) {
- return renderToSimpleStream(
- createApp({ render: () => input }),
- context,
- stream
- );
- }
- const vnode = createVNode(input._component, input._props);
- vnode.appContext = input._context;
- input.provide(ssrContextKey, context);
- Promise.resolve(renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => {
- if (context.__watcherHandles) {
- for (const unwatch of context.__watcherHandles) {
- unwatch();
- }
- }
- }).then(() => stream.push(null)).catch((error) => {
- stream.destroy(error);
- });
- return stream;
- }
- function renderToStream(input, context = {}) {
- console.warn(
- `[@vue/server-renderer] renderToStream is deprecated - use renderToNodeStream instead.`
- );
- return renderToNodeStream(input, context);
- }
- function renderToNodeStream(input, context = {}) {
- {
- throw new Error(
- `ESM build of renderToStream() does not support renderToNodeStream(). Use pipeToNodeWritable() with an existing Node.js Writable stream instance instead.`
- );
- }
- }
- function pipeToNodeWritable(input, context = {}, writable) {
- renderToSimpleStream(input, context, {
- push(content) {
- if (content != null) {
- writable.write(content);
- } else {
- writable.end();
- }
- },
- destroy(err) {
- writable.destroy(err);
- }
- });
- }
- function renderToWebStream(input, context = {}) {
- if (typeof ReadableStream !== "function") {
- throw new Error(
- `ReadableStream constructor is not available in the global scope. If the target environment does support web streams, consider using pipeToWebWritable() with an existing WritableStream instance instead.`
- );
- }
- const encoder = new TextEncoder();
- let cancelled = false;
- return new ReadableStream({
- start(controller) {
- renderToSimpleStream(input, context, {
- push(content) {
- if (cancelled)
- return;
- if (content != null) {
- controller.enqueue(encoder.encode(content));
- } else {
- controller.close();
- }
- },
- destroy(err) {
- controller.error(err);
- }
- });
- },
- cancel() {
- cancelled = true;
- }
- });
- }
- function pipeToWebWritable(input, context = {}, writable) {
- const writer = writable.getWriter();
- const encoder = new TextEncoder();
- let hasReady = false;
- try {
- hasReady = isPromise(writer.ready);
- } catch (e) {
- }
- renderToSimpleStream(input, context, {
- async push(content) {
- if (hasReady) {
- await writer.ready;
- }
- if (content != null) {
- return writer.write(encoder.encode(content));
- } else {
- return writer.close();
- }
- },
- destroy(err) {
- console.log(err);
- writer.close();
- }
- });
- }
- initDirectivesForSSR();
- export { pipeToNodeWritable, pipeToWebWritable, renderToNodeStream, renderToSimpleStream, renderToStream, renderToString, renderToWebStream, ssrGetDirectiveProps, ssrGetDynamicModelProps, includeBooleanAttr as ssrIncludeBooleanAttr, ssrInterpolate, ssrLooseContain, ssrLooseEqual, ssrRenderAttr, ssrRenderAttrs, ssrRenderClass, ssrRenderComponent, ssrRenderDynamicAttr, ssrRenderDynamicModel, ssrRenderList, ssrRenderSlot, ssrRenderSlotInner, ssrRenderStyle, ssrRenderSuspense, ssrRenderTeleport, renderVNode as ssrRenderVNode };
|