1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392 |
- /******/ (function(modules) { // webpackBootstrap
- /******/ // The module cache
- /******/ var installedModules = {};
- /******/
- /******/ // The require function
- /******/ function __webpack_require__(moduleId) {
- /******/
- /******/ // Check if module is in cache
- /******/ if(installedModules[moduleId]) {
- /******/ return installedModules[moduleId].exports;
- /******/ }
- /******/ // Create a new module (and put it into the cache)
- /******/ var module = installedModules[moduleId] = {
- /******/ i: moduleId,
- /******/ l: false,
- /******/ exports: {}
- /******/ };
- /******/
- /******/ // Execute the module function
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/
- /******/ // Flag the module as loaded
- /******/ module.l = true;
- /******/
- /******/ // Return the exports of the module
- /******/ return module.exports;
- /******/ }
- /******/
- /******/
- /******/ // expose the modules object (__webpack_modules__)
- /******/ __webpack_require__.m = modules;
- /******/
- /******/ // expose the module cache
- /******/ __webpack_require__.c = installedModules;
- /******/
- /******/ // define getter function for harmony exports
- /******/ __webpack_require__.d = function(exports, name, getter) {
- /******/ if(!__webpack_require__.o(exports, name)) {
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
- /******/ }
- /******/ };
- /******/
- /******/ // define __esModule on exports
- /******/ __webpack_require__.r = function(exports) {
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
- /******/ }
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
- /******/ };
- /******/
- /******/ // create a fake namespace object
- /******/ // mode & 1: value is a module id, require it
- /******/ // mode & 2: merge all properties of value into the ns
- /******/ // mode & 4: return value when already ns object
- /******/ // mode & 8|1: behave like require
- /******/ __webpack_require__.t = function(value, mode) {
- /******/ if(mode & 1) value = __webpack_require__(value);
- /******/ if(mode & 8) return value;
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
- /******/ var ns = Object.create(null);
- /******/ __webpack_require__.r(ns);
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
- /******/ return ns;
- /******/ };
- /******/
- /******/ // getDefaultExport function for compatibility with non-harmony modules
- /******/ __webpack_require__.n = function(module) {
- /******/ var getter = module && module.__esModule ?
- /******/ function getDefault() { return module['default']; } :
- /******/ function getModuleExports() { return module; };
- /******/ __webpack_require__.d(getter, 'a', getter);
- /******/ return getter;
- /******/ };
- /******/
- /******/ // Object.prototype.hasOwnProperty.call
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
- /******/
- /******/ // __webpack_public_path__
- /******/ __webpack_require__.p = "";
- /******/
- /******/
- /******/ // Load entry module and return exports
- /******/ return __webpack_require__(__webpack_require__.s = 160);
- /******/ })
- /************************************************************************/
- /******/ ({
- /***/ 0:
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return classify; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return camelize; });
- /* unused harmony export kebabize */
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return getComponentDisplayName; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return inDoc; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return UNDEFINED; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return INFINITY; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return NEGATIVE_INFINITY; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return NAN; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return SPECIAL_TOKENS; });
- /* unused harmony export MAX_STRING_SIZE */
- /* unused harmony export MAX_ARRAY_SIZE */
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "x", function() { return specialTokenToString; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "y", function() { return stringify; });
- /* unused harmony export getCustomMapDetails */
- /* unused harmony export reviveMap */
- /* unused harmony export getCustomSetDetails */
- /* unused harmony export reviveSet */
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return getComponentName; });
- /* unused harmony export getCustomComponentDefinitionDetails */
- /* unused harmony export getCustomFunctionDetails */
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return getCustomRefDetails; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return parse; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return isPlainObject; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "u", function() { return searchDeepInObject; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "w", function() { return sortByKey; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "v", function() { return set; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return get; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return has; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return scrollIntoView; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return focusInput; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return openInEditor; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return escape; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return copyToClipboard; });
- /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22);
- /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var _transfer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
- /* harmony import */ var src_backend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
- /* harmony import */ var src_backend_vuex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
- /* harmony import */ var src_backend_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13);
- /* harmony import */ var src_shared_data__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4);
- /* harmony import */ var _devtools_env__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2);
- function cached (fn) {
- var cache = Object.create(null)
- return function cachedFn (str) {
- var hit = cache[str]
- return hit || (cache[str] = fn(str))
- }
- }
- var classifyRE = /(?:^|[-_/])(\w)/g
- var classify = cached((str) => {
- return str && str.replace(classifyRE, toUpper)
- })
- var camelizeRE = /-(\w)/g
- var camelize = cached((str) => {
- return str.replace(camelizeRE, toUpper)
- })
- var kebabizeRE = /([a-z0-9])([A-Z])/g
- var kebabize = cached((str) => {
- return str && str
- .replace(kebabizeRE, (_, lowerCaseCharacter, upperCaseLetter) => {
- return `${lowerCaseCharacter}-${upperCaseLetter}`
- })
- .toLowerCase()
- })
- function toUpper (_, c) {
- return c ? c.toUpperCase() : ''
- }
- function getComponentDisplayName (originalName, style = 'class') {
- switch (style) {
- case 'class':
- return classify(originalName)
- case 'kebab':
- return kebabize(originalName)
- case 'original':
- default:
- return originalName
- }
- }
- function inDoc (node) {
- if (!node) { return false }
- var doc = node.ownerDocument.documentElement
- var parent = node.parentNode
- return doc === node ||
- doc === parent ||
- !!(parent && parent.nodeType === 1 && (doc.contains(parent)))
- }
- /**
- * Stringify/parse data using CircularJSON.
- */
- var UNDEFINED = '__vue_devtool_undefined__'
- var INFINITY = '__vue_devtool_infinity__'
- var NEGATIVE_INFINITY = '__vue_devtool_negative_infinity__'
- var NAN = '__vue_devtool_nan__'
- var SPECIAL_TOKENS = {
- 'true': true,
- 'false': false,
- 'undefined': UNDEFINED,
- 'null': null,
- '-Infinity': NEGATIVE_INFINITY,
- 'Infinity': INFINITY,
- 'NaN': NAN
- }
- var MAX_STRING_SIZE = 10000
- var MAX_ARRAY_SIZE = 5000
- function specialTokenToString (value) {
- if (value === null) {
- return 'null'
- } else if (value === UNDEFINED) {
- return 'undefined'
- } else if (value === NAN) {
- return 'NaN'
- } else if (value === INFINITY) {
- return 'Infinity'
- } else if (value === NEGATIVE_INFINITY) {
- return '-Infinity'
- }
- return false
- }
- /**
- * Needed to prevent stack overflow
- * while replacing complex objects
- * like components because we create
- * new objects with the CustomValue API
- * (.i.e `{ _custom: { ... } }`)
- */
- class EncodeCache {
- constructor () {
- this.map = new Map()
- }
- /**
- * Returns a result unique to each input data
- * @param {*} data Input data
- * @param {*} factory Function used to create the unique result
- */
- cache (data, factory) {
- var cached = this.map.get(data)
- if (cached) {
- return cached
- } else {
- var result = factory(data)
- this.map.set(data, result)
- return result
- }
- }
- clear () {
- this.map.clear()
- }
- }
- var encodeCache = new EncodeCache()
- function stringify (data) {
- // Create a fresh cache for each serialization
- encodeCache.clear()
- return _transfer__WEBPACK_IMPORTED_MODULE_1__[/* stringify */ "b"](data, replacer)
- }
- function replacer (key) {
- var val = this[key]
- var type = typeof val
- if (Array.isArray(val)) {
- var l = val.length
- if (l > MAX_ARRAY_SIZE) {
- return {
- _isArray: true,
- length: l,
- items: val.slice(0, MAX_ARRAY_SIZE)
- }
- }
- return val
- } else if (typeof val === 'string') {
- if (val.length > MAX_STRING_SIZE) {
- return val.substr(0, MAX_STRING_SIZE) + `... (${(val.length)} total length)`
- } else {
- return val
- }
- } else if (type === 'undefined') {
- return UNDEFINED
- } else if (val === Infinity) {
- return INFINITY
- } else if (val === -Infinity) {
- return NEGATIVE_INFINITY
- } else if (type === 'function') {
- return getCustomFunctionDetails(val)
- } else if (type === 'symbol') {
- return `[native Symbol ${Symbol.prototype.toString.call(val)}]`
- } else if (val !== null && type === 'object') {
- var proto = Object.prototype.toString.call(val)
- if (proto === '[object Map]') {
- return encodeCache.cache(val, () => getCustomMapDetails(val))
- } else if (proto === '[object Set]') {
- return encodeCache.cache(val, () => getCustomSetDetails(val))
- } else if (proto === '[object RegExp]') {
- // special handling of native type
- return `[native RegExp ${RegExp.prototype.toString.call(val)}]`
- } else if (proto === '[object Date]') {
- return `[native Date ${Date.prototype.toString.call(val)}]`
- } else if (val.state && val._vm) {
- return encodeCache.cache(val, () => Object(src_backend_vuex__WEBPACK_IMPORTED_MODULE_3__[/* getCustomStoreDetails */ "a"])(val))
- } else if (val.constructor && val.constructor.name === 'VueRouter') {
- return encodeCache.cache(val, () => Object(src_backend_router__WEBPACK_IMPORTED_MODULE_4__[/* getCustomRouterDetails */ "a"])(val))
- } else if (val._isVue) {
- return encodeCache.cache(val, () => Object(src_backend__WEBPACK_IMPORTED_MODULE_2__[/* getCustomInstanceDetails */ "a"])(val))
- } else if (typeof val.render === 'function') {
- return encodeCache.cache(val, () => getCustomComponentDefinitionDetails(val))
- } else if (val.constructor && val.constructor.name === 'VNode') {
- return `[native VNode <${val.tag}>]`
- }
- } else if (Number.isNaN(val)) {
- return NAN
- }
- return sanitize(val)
- }
- function getCustomMapDetails (val) {
- var list = []
- val.forEach(
- (value, key) => list.push({
- key,
- value
- })
- )
- return {
- _custom: {
- type: 'map',
- display: 'Map',
- value: list,
- readOnly: true,
- fields: {
- abstract: true
- }
- }
- }
- }
- function reviveMap (val) {
- var result = new Map()
- var list = val._custom.value
- for (var i = 0; i < list.length; i++) {
- var { key, value } = list[i]
- result.set(key, reviver(null, value))
- }
- return result
- }
- function getCustomSetDetails (val) {
- var list = Array.from(val)
- return {
- _custom: {
- type: 'set',
- display: `Set[${list.length}]`,
- value: list,
- readOnly: true
- }
- }
- }
- function reviveSet (val) {
- var result = new Set()
- var list = val._custom.value
- for (var i = 0; i < list.length; i++) {
- var value = list[i]
- result.add(reviver(null, value))
- }
- return result
- }
- // Use a custom basename functions instead of the shimed version
- // because it doesn't work on Windows
- function basename (filename, ext) {
- return path__WEBPACK_IMPORTED_MODULE_0___default.a.basename(
- filename.replace(/^[a-zA-Z]:/, '').replace(/\\/g, '/'),
- ext
- )
- }
- function getComponentName (options) {
- var name = options.name || options._componentTag
- if (name) {
- return name
- }
- var file = options.__file // injected by vue-loader
- if (file) {
- return classify(basename(file, '.vue'))
- }
- }
- function getCustomComponentDefinitionDetails (def) {
- var display = getComponentName(def)
- if (display) {
- if (def.name && def.__file) {
- display += ` <span>(${def.__file})</span>`
- }
- } else {
- display = '<i>Unknown Component</i>'
- }
- return {
- _custom: Object.assign({}, {type: 'component-definition',
- display,
- tooltip: 'Component definition'},
- def.__file ? {
- file: def.__file
- } : {})
- }
- }
- function getCustomFunctionDetails (func) {
- var string = ''
- var matches = null
- try {
- string = Function.prototype.toString.call(func)
- matches = String.prototype.match.call(string, /\([\s\S]*?\)/)
- } catch (e) {
- // Func is probably a Proxy, which can break Function.prototype.toString()
- }
- // Trim any excess whitespace from the argument string
- var match = matches && matches[0]
- var args = typeof match === 'string'
- ? `(${match.substr(1, match.length - 2).split(',').map(a => a.trim()).join(', ')})` : '(?)'
- var name = typeof func.name === 'string' ? func.name : ''
- return {
- _custom: {
- type: 'function',
- display: `<span>ƒ</span> ${escape(name)}${args}`
- }
- }
- }
- function getCustomRefDetails (instance, key, ref) {
- var value
- if (Array.isArray(ref)) {
- value = ref.map((r) => getCustomRefDetails(instance, key, r)).map(data => data.value)
- } else {
- var name
- if (ref._isVue) {
- name = getComponentName(ref.$options)
- } else {
- name = ref.tagName.toLowerCase()
- }
- value = {
- _custom: {
- display: `<${name}` +
- (ref.id ? ` <span class="attr-title">id</span>="${ref.id}"` : '') +
- (ref.className ? ` <span class="attr-title">class</span>="${ref.className}"` : '') + '>',
- uid: instance.__VUE_DEVTOOLS_UID__,
- type: 'reference'
- }
- }
- }
- return {
- type: '$refs',
- key: key,
- value,
- editable: false
- }
- }
- function parse (data, revive) {
- return revive
- ? _transfer__WEBPACK_IMPORTED_MODULE_1__[/* parse */ "a"](data, reviver)
- : _transfer__WEBPACK_IMPORTED_MODULE_1__[/* parse */ "a"](data)
- }
- var specialTypeRE = /^\[native (\w+) (.*)\]$/
- var symbolRE = /^\[native Symbol Symbol\((.*)\)\]$/
- function reviver (key, val) {
- if (val === UNDEFINED) {
- return undefined
- } else if (val === INFINITY) {
- return Infinity
- } else if (val === NEGATIVE_INFINITY) {
- return -Infinity
- } else if (val === NAN) {
- return NaN
- } else if (val && val._custom) {
- if (val._custom.type === 'component') {
- return src_backend__WEBPACK_IMPORTED_MODULE_2__[/* instanceMap */ "d"].get(val._custom.id)
- } else if (val._custom.type === 'map') {
- return reviveMap(val)
- } else if (val._custom.type === 'set') {
- return reviveSet(val)
- }
- } else if (symbolRE.test(val)) {
- var [, string] = symbolRE.exec(val)
- return Symbol.for(string)
- } else if (specialTypeRE.test(val)) {
- var [, type, string$1] = specialTypeRE.exec(val)
- return new window[type](string$1)
- } else {
- return val
- }
- }
- /**
- * Sanitize data to be posted to the other side.
- * Since the message posted is sent with structured clone,
- * we need to filter out any types that might cause an error.
- *
- * @param {*} data
- * @return {*}
- */
- function sanitize (data) {
- if (
- !isPrimitive(data) &&
- !Array.isArray(data) &&
- !isPlainObject(data)
- ) {
- // handle types that will probably cause issues in
- // the structured clone
- return Object.prototype.toString.call(data)
- } else {
- return data
- }
- }
- function isPlainObject (obj) {
- return Object.prototype.toString.call(obj) === '[object Object]'
- }
- function isPrimitive (data) {
- if (data == null) {
- return true
- }
- var type = typeof data
- return (
- type === 'string' ||
- type === 'number' ||
- type === 'boolean'
- )
- }
- /**
- * Searches a key or value in the object, with a maximum deepness
- * @param {*} obj Search target
- * @param {string} searchTerm Search string
- * @returns {boolean} Search match
- */
- function searchDeepInObject (obj, searchTerm) {
- var seen = new Map()
- var result = internalSearchObject(obj, searchTerm.toLowerCase(), seen, 0)
- seen.clear()
- return result
- }
- var SEARCH_MAX_DEPTH = 10
- /**
- * Executes a search on each field of the provided object
- * @param {*} obj Search target
- * @param {string} searchTerm Search string
- * @param {Map<any,boolean>} seen Map containing the search result to prevent stack overflow by walking on the same object multiple times
- * @param {number} depth Deep search depth level, which is capped to prevent performance issues
- * @returns {boolean} Search match
- */
- function internalSearchObject (obj, searchTerm, seen, depth) {
- if (depth > SEARCH_MAX_DEPTH) {
- return false
- }
- var match = false
- var keys = Object.keys(obj)
- var key, value
- for (var i = 0; i < keys.length; i++) {
- key = keys[i]
- value = obj[key]
- match = internalSearchCheck(searchTerm, key, value, seen, depth + 1)
- if (match) {
- break
- }
- }
- return match
- }
- /**
- * Executes a search on each value of the provided array
- * @param {*} array Search target
- * @param {string} searchTerm Search string
- * @param {Map<any,boolean>} seen Map containing the search result to prevent stack overflow by walking on the same object multiple times
- * @param {number} depth Deep search depth level, which is capped to prevent performance issues
- * @returns {boolean} Search match
- */
- function internalSearchArray (array, searchTerm, seen, depth) {
- if (depth > SEARCH_MAX_DEPTH) {
- return false
- }
- var match = false
- var value
- for (var i = 0; i < array.length; i++) {
- value = array[i]
- match = internalSearchCheck(searchTerm, null, value, seen, depth + 1)
- if (match) {
- break
- }
- }
- return match
- }
- /**
- * Checks if the provided field matches the search terms
- * @param {string} searchTerm Search string
- * @param {string} key Field key (null if from array)
- * @param {*} value Field value
- * @param {Map<any,boolean>} seen Map containing the search result to prevent stack overflow by walking on the same object multiple times
- * @param {number} depth Deep search depth level, which is capped to prevent performance issues
- * @returns {boolean} Search match
- */
- function internalSearchCheck (searchTerm, key, value, seen, depth) {
- var match = false
- var result
- if (key === '_custom') {
- key = value.display
- value = value.value
- }
- (result = specialTokenToString(value)) && (value = result)
- if (key && compare(key, searchTerm)) {
- match = true
- seen.set(value, true)
- } else if (seen.has(value)) {
- match = seen.get(value)
- } else if (Array.isArray(value)) {
- seen.set(value, null)
- match = internalSearchArray(value, searchTerm, seen, depth)
- seen.set(value, match)
- } else if (isPlainObject(value)) {
- seen.set(value, null)
- match = internalSearchObject(value, searchTerm, seen, depth)
- seen.set(value, match)
- } else if (compare(value, searchTerm)) {
- match = true
- seen.set(value, true)
- }
- return match
- }
- /**
- * Compares two values
- * @param {*} value Mixed type value that will be cast to string
- * @param {string} searchTerm Search string
- * @returns {boolean} Search match
- */
- function compare (value, searchTerm) {
- return ('' + value).toLowerCase().indexOf(searchTerm) !== -1
- }
- function sortByKey (state) {
- return state && state.slice().sort((a, b) => {
- if (a.key < b.key) { return -1 }
- if (a.key > b.key) { return 1 }
- return 0
- })
- }
- function set (object, path, value, cb = null) {
- var sections = Array.isArray(path) ? path : path.split('.')
- while (sections.length > 1) {
- object = object[sections.shift()]
- }
- var field = sections[0]
- if (cb) {
- cb(object, field, value)
- } else {
- object[field] = value
- }
- }
- function get (object, path) {
- var sections = Array.isArray(path) ? path : path.split('.')
- for (var i = 0; i < sections.length; i++) {
- object = object[sections[i]]
- if (!object) {
- return undefined
- }
- }
- return object
- }
- function has (object, path, parent = false) {
- if (typeof object === 'undefined') {
- return false
- }
- var sections = Array.isArray(path) ? path : path.split('.')
- var size = !parent ? 1 : 2
- while (object && sections.length > size) {
- object = object[sections.shift()]
- }
- return object != null && object.hasOwnProperty(sections[0])
- }
- function scrollIntoView (scrollParent, el, center = true) {
- var parentTop = scrollParent.scrollTop
- var parentHeight = scrollParent.offsetHeight
- var elBounds = el.getBoundingClientRect()
- var parentBounds = scrollParent.getBoundingClientRect()
- var top = elBounds.top - parentBounds.top + scrollParent.scrollTop
- var height = el.offsetHeight
- if (center) {
- scrollParent.scrollTop = top + (height - parentHeight) / 2
- } else if (top < parentTop) {
- scrollParent.scrollTop = top
- } else if (top + height > parentTop + parentHeight) {
- scrollParent.scrollTop = top - parentHeight + height
- }
- }
- function focusInput (el) {
- el.focus()
- el.setSelectionRange(0, el.value.length)
- }
- function openInEditor (file) {
- // Console display
- var fileName = file.replace(/\\/g, '\\\\')
- var src = `fetch('${src_shared_data__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].openInEditorHost}__open-in-editor?file=${encodeURI(file)}').then(response => {
- if (response.ok) {
- console.log('File ${fileName} opened in editor')
- } else {
- const msg = 'Opening component ${fileName} failed'
- const target = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {}
- if (target.__VUE_DEVTOOLS_TOAST__) {
- target.__VUE_DEVTOOLS_TOAST__(msg, 'error')
- } else {
- console.log('%c' + msg, 'color:red')
- }
- console.log('Check the setup of your project, see https://github.com/vuejs/vue-devtools/blob/master/docs/open-in-editor.md')
- }
- })`
- if (_devtools_env__WEBPACK_IMPORTED_MODULE_6__[/* isChrome */ "c"]) {
- chrome.devtools.inspectedWindow.eval(src)
- } else {
- // eslint-disable-next-line no-eval
- eval(src)
- }
- }
- var ESC = {
- '<': '<',
- '>': '>',
- '"': '"',
- '&': '&'
- }
- function escape (s) {
- return s.replace(/[<>"&]/g, escapeChar)
- }
- function escapeChar (a) {
- return ESC[a] || a
- }
- function copyToClipboard (state) {
- if (typeof document === 'undefined') { return }
- var dummyTextArea = document.createElement('textarea')
- dummyTextArea.textContent = stringify(state)
- document.body.appendChild(dummyTextArea)
- dummyTextArea.select()
- document.execCommand('copy')
- document.body.removeChild(dummyTextArea)
- }
- /***/ }),
- /***/ 10:
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return init; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return get; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return set; });
- /* unused harmony export remove */
- /* unused harmony export clear */
- // If we can, we use the browser extension API to store data
- // it's async though, so we synchronize changes from an intermediate
- // storageData object
- var useStorage = typeof chrome !== 'undefined' && typeof chrome.storage !== 'undefined'
- var storageData = null
- function init () {
- return new Promise((resolve) => {
- if (useStorage) {
- chrome.storage.local.get(null, result => {
- storageData = result
- resolve()
- })
- } else {
- storageData = {}
- resolve()
- }
- })
- }
- function get (key, defaultValue = null) {
- checkStorage()
- if (useStorage) {
- return getDefaultValue(storageData[key], defaultValue)
- } else {
- try {
- return getDefaultValue(JSON.parse(localStorage.getItem(key)), defaultValue)
- } catch (e) {}
- }
- }
- function set (key, val) {
- checkStorage()
- if (useStorage) {
- storageData[key] = val
- chrome.storage.local.set({ [key]: val })
- } else {
- try {
- localStorage.setItem(key, JSON.stringify(val))
- } catch (e) {}
- }
- }
- function remove (key) {
- checkStorage()
- if (useStorage) {
- delete storageData[key]
- chrome.storage.local.remove([key])
- } else {
- try {
- localStorage.removeItem(key)
- } catch (e) {}
- }
- }
- function clear () {
- checkStorage()
- if (useStorage) {
- storageData = {}
- chrome.storage.local.clear()
- } else {
- try {
- localStorage.clear()
- } catch (e) {}
- }
- }
- function checkStorage () {
- if (!storageData) {
- throw new Error(`Storage wasn't initialized with 'init()'`)
- }
- }
- function getDefaultValue (value, defaultValue) {
- if (value == null) {
- return defaultValue
- }
- return value
- }
- /***/ }),
- /***/ 12:
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return initVuexBackend; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getCustomStoreDetails; });
- /* harmony import */ var src_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
- /* harmony import */ var src_shared_data__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
- /* harmony import */ var _clone__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6);
- var isProd = "production" === 'production'
- class VuexBackend {
- constructor (hook, bridge, isLegacy) {
- bridge.send('vuex:init')
- this.hook = hook
- this.bridge = bridge
- this.isLegacy = isLegacy
- this.store = hook.store
- // Flush info from hook
- // (for example, modules registered before backend was created)
- this.earlyModules = hook.flushStoreModules()
- /** Initial store state */
- this.initialState = this.hook.initialState
- /** Internal store vm for mutation replaying */
- this.snapshotsVm = null
- /** Initial snapshot */
- this.baseStateSnapshot = null
- /** Snapshot cache */
- this.stateSnapshotCache = null
- /** Mutation history */
- this.mutations = null
- /** Last replayed state */
- this.lastState = null
- /** Currently registered dynamic modules */
- this.registeredModules = {}
- /** All dynamic modules ever registered, useful for mutation replaying */
- this.allTimeModules = {}
- /** Legacy base state */
- this.legacyBaseSnapshot = null
- // First-time snapshot VM creation
- this.resetSnapshotsVm()
- // Initial setup
- this.reset()
- // Override dynamic module handling in vuex
- if (this.store.registerModule) {
- this.origRegisterModule = this.store.registerModule.bind(this.store)
- this.store.registerModule = (path, module, options) => {
- this.addModule(path, module, options)
- this.origRegisterModule(path, module, options)
- if (!isProd) { console.log('register module', path) }
- }
- this.origUnregisterModule = this.store.unregisterModule.bind(this.store)
- this.store.unregisterModule = (path) => {
- this.removeModule(path)
- this.origUnregisterModule(path)
- if (!isProd) { console.log('unregister module', path) }
- }
- } else {
- this.origRegisterModule = this.origUnregisterModule = () => {}
- }
- // Register modules that were added before backend was created
- this.earlyModules.forEach((ref) => {
- var path = ref.path;
- var module = ref.module;
- var options = ref.options;
- var moduleInfo = this.addModule(path, module, options)
- moduleInfo.early = true
- })
- // deal with multiple backend injections
- hook.off('vuex:mutation')
- // application -> devtool
- hook.on('vuex:mutation', this.onMutation.bind(this))
- // devtool -> application
- bridge.on('vuex:travel-to-state', this.onTravelToState.bind(this))
- bridge.on('vuex:commit-all', this.onCommitAll.bind(this))
- bridge.on('vuex:revert-all', this.onRevertAll.bind(this))
- bridge.on('vuex:commit', this.onCommit.bind(this))
- bridge.on('vuex:revert', this.onRevert.bind(this))
- bridge.on('vuex:import-state', this.onImportState.bind(this))
- bridge.on('vuex:inspect-state', this.onInspectState.bind(this))
- bridge.on('vuex:edit-state', this.onEditState.bind(this))
- }
- /**
- * Register a mutation record
- */
- onMutation (ref) {
- var type = ref.type;
- var payload = ref.payload;
- if (!src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].recordVuex) { return }
- this.addMutation(type, payload)
- }
- /**
- * Time-travel to the state of a specific mutation (by index)
- */
- onTravelToState (ref) {
- var index = ref.index;
- var apply = ref.apply;
- var snapshot = this.replayMutations(index)
- var state = Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(this.lastState)
- this.bridge.send('vuex:inspected-state', {
- index,
- snapshot
- })
- if (apply) {
- this.ensureRegisteredModules(this.mutations[index])
- this.hook.emit('vuex:travel-to-state', state)
- }
- }
- onCommitAll () {
- this.reset(this.lastState)
- }
- onRevertAll () {
- this.reset()
- }
- /**
- * Reset the base state to a specific mutation (by index)
- *
- * ⚠️ State should be time-traveled to before executing this
- */
- onCommit (index) {
- if (src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].vuexNewBackend) {
- this.baseStateSnapshot = this.lastState
- } else {
- this.legacyBaseSnapshot = this.mutations[index].snapshot
- }
- this.resetSnapshotCache()
- this.mutations = this.mutations.slice(index + 1)
- this.mutations.forEach((mutation, index) => {
- mutation.index = index
- })
- }
- /**
- * Removes mutations after a specific mutation (by index)
- *
- * ⚠️ State should be time-traveled to before executing this
- */
- onRevert (index) {
- this.resetSnapshotCache()
- this.ensureRegisteredModules(this.mutations[index - 1])
- this.mutations = this.mutations.slice(0, index)
- }
- /**
- * Parse and time-travel to a state
- */
- onImportState (state) {
- var parsed = Object(src_util__WEBPACK_IMPORTED_MODULE_0__[/* parse */ "s"])(state, true)
- this.initialState = parsed
- this.hook.emit('vuex:travel-to-state', parsed)
- this.reset()
- this.bridge.send('vuex:init')
- this.onInspectState(-1)
- }
- /**
- * If the index is -1, sends the base state.
- * Else replays the mutations up to the <index> mutation.
- */
- onInspectState (index) {
- var snapshot = this.replayMutations(index)
- this.bridge.send('vuex:inspected-state', {
- index,
- snapshot
- })
- }
- onEditState (ref) {
- var index = ref.index;
- var value = ref.value;
- var path = ref.path;
- var parsedValue
- if (value) {
- parsedValue = Object(src_util__WEBPACK_IMPORTED_MODULE_0__[/* parse */ "s"])(value, true)
- }
- this.store._committing = true
- Object(src_util__WEBPACK_IMPORTED_MODULE_0__[/* set */ "v"])(this.store.state, path, parsedValue)
- this.store._committing = false
- this.bridge.send('vuex:inspected-state', {
- index,
- snapshot: this.getStoreSnapshot()
- })
- this.cacheStateSnapshot(index, true)
- }
- /**
- * Should be called when store structure changes,
- * for example when a dynamic module is registered
- */
- resetSnapshotsVm (state) {
- this.snapshotsVm = new vue__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"]({
- data: {
- $$state: state || {}
- },
- computed: this.store._vm.$options.computed
- })
- }
- /**
- * Reset vuex backend
- */
- reset (stateSnapshot = null) {
- if (src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].vuexNewBackend) {
- this.baseStateSnapshot = stateSnapshot || Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(this.initialState)
- } else {
- this.legacyBaseSnapshot = this.stringifyStore()
- }
- this.mutations = []
- this.resetSnapshotCache()
- }
- resetSnapshotCache () {
- this.stateSnapshotCache = [
- {
- index: -1,
- state: this.baseStateSnapshot,
- permanent: true
- }
- ]
- }
- /**
- * Handle adding a dynamic store module
- */
- addModule (path, module, options) {
- if (typeof path === 'string') { path = [path] }
- var state
- if (options && options.preserveState) {
- state = Object(src_util__WEBPACK_IMPORTED_MODULE_0__[/* get */ "k"])(this.store.state, path)
- }
- if (!state) {
- state = typeof module.state === 'function' ? module.state() : module.state
- }
- if (!state) {
- state = {}
- }
- var fakeModule = Object.assign({}, module)
- if (src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].vuexNewBackend) {
- // Ensure all children state are cloned
- var replaceNestedStates = (nestedModule) => {
- if (nestedModule.modules) {
- Object.keys(nestedModule.modules).forEach(key => {
- var child = nestedModule.modules[key]
- var state = {}
- if (child.state) {
- state = typeof child.state === 'function' ? child.state() : child.state
- }
- child.state = Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(state)
- replaceNestedStates(child)
- })
- }
- }
- replaceNestedStates(fakeModule)
- }
- var key = path.join('/')
- var moduleInfo = this.registeredModules[key] = this.allTimeModules[key] = {
- path,
- module: fakeModule,
- options: Object.assign({}, options,
- {preserveState: false}),
- state: src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].vuexNewBackend ? Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(state) : null
- }
- if (src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].recordVuex) {
- this.addMutation(`Register module: ${key}`, {
- path,
- module,
- options
- }, {
- registerModule: true
- })
- }
- return moduleInfo
- }
- /**
- * Handle removing a dynamic store module
- */
- removeModule (path) {
- if (typeof path === 'string') { path = [path] }
- delete this.registeredModules[path.join('/')]
- if (src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].recordVuex) {
- this.addMutation(`Unregister module: ${path.join('/')}`, {
- path
- }, {
- unregisterModule: true
- })
- }
- }
- /**
- * Make sure all (and only) the dynamic modules present at the moment of a mutation
- * are correctly registered in the store
- */
- ensureRegisteredModules (mutation) {
- if (mutation) {
- mutation.registeredModules.forEach(m => {
- if (!Object.keys(this.registeredModules).sort((a, b) => a.length - b.length).includes(m)) {
- var data = this.allTimeModules[m]
- if (data) {
- var { path, module, options, state } = data
- this.origRegisterModule(path, Object.assign({}, module,
- {state: Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(state)}), options)
- this.registeredModules[path.join('/')] = data
- }
- }
- })
- Object.keys(this.registeredModules).sort((a, b) => b.length - a.length).forEach(m => {
- if (!mutation.registeredModules.includes(m)) {
- this.origUnregisterModule(m.split('/'))
- delete this.registeredModules[m]
- }
- })
- this.resetSnapshotsVm(this.store.state)
- }
- }
- /**
- * Check if the store as a specific dynamic module
- */
- hasModule (path) {
- return !!this.store._modules.get(path)
- }
- stringifyStore () {
- return Object(src_util__WEBPACK_IMPORTED_MODULE_0__[/* stringify */ "y"])({
- state: this.store.state,
- getters: this.store.getters || {}
- })
- }
- /**
- * Handle a new mutation commited to the store
- */
- addMutation (type, payload, options = {}) {
- var index = this.mutations.length
- if (!src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].vuexNewBackend) {
- options.snapshot = this.stringifyStore()
- }
- this.mutations.push(Object.assign({}, {type,
- payload: src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].vuexNewBackend ? Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(payload) : null,
- index,
- handlers: this.store._mutations[type],
- registeredModules: Object.keys(this.registeredModules)},
- options))
- this.bridge.send('vuex:mutation', {
- mutation: {
- type: type,
- payload: Object(src_util__WEBPACK_IMPORTED_MODULE_0__[/* stringify */ "y"])(payload),
- index
- },
- timestamp: Date.now(),
- options
- })
- }
- /**
- * Replays mutations from the base state up to a specific index
- * to re-create what the vuex state should be at this point
- */
- replayMutations (index) {
- if (!src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].vuexNewBackend) {
- var snapshot = index === -1 ? this.legacyBaseSnapshot : this.mutations[index].snapshot
- this.lastState = Object(src_util__WEBPACK_IMPORTED_MODULE_0__[/* parse */ "s"])(snapshot, true).state
- return snapshot
- }
- var originalVm = this.store._vm
- var originalState = Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(this.store.state)
- this.store._vm = this.snapshotsVm
- var tempRemovedModules = []
- var tempAddedModules = []
- // If base state, we need to remove all dynamic registered modules
- // to prevent errors because their state is missing
- if (index === -1) {
- tempRemovedModules = Object.keys(this.registeredModules)
- tempRemovedModules.filter(m => this.hasModule(m.split('/'))).sort((a, b) => b.length - a.length).forEach(m => {
- this.origUnregisterModule(m.split('/'))
- if (!isProd) { console.log('before replay unregister', m) }
- })
- }
- // Get most recent snapshot for target index
- // for faster replay
- var stateSnapshot
- for (var i = 0; i < this.stateSnapshotCache.length; i++) {
- var s = this.stateSnapshotCache[i]
- if (s.index > index) {
- break
- } else {
- stateSnapshot = s
- }
- }
- var resultState
- // Snapshot was already replayed
- if (stateSnapshot.index === index) {
- resultState = stateSnapshot.state
- var state = Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(stateSnapshot.state)
- this.resetSnapshotsVm(state)
- this.store.replaceState(state)
- } else {
- // Update state when using fake vm to properly temporarily remove modules
- this.resetSnapshotsVm(originalState)
- this.store.replaceState(originalState)
- // Temporarily remove modules if they where not present during first mutation being replayed
- var startMutation = this.mutations[stateSnapshot.index]
- if (startMutation) {
- tempRemovedModules = Object.keys(this.registeredModules).filter(m => !startMutation.registeredModules.includes(m))
- } else {
- tempRemovedModules = Object.keys(this.registeredModules)
- }
- tempRemovedModules.filter(m => this.hasModule(m.split('/'))).sort((a, b) => b.length - a.length).forEach(m => {
- this.origUnregisterModule(m.split('/'))
- if (!isProd) { console.log('before replay unregister', m) }
- })
- var state$1 = Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(stateSnapshot.state)
- this.resetSnapshotsVm(state$1)
- this.store.replaceState(state$1)
- src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].snapshotLoading = true
- // Replay mutations
- for (var i$1 = stateSnapshot.index + 1; i$1 <= index; i$1++) {
- var mutation = this.mutations[i$1]
- if (mutation.registerModule) {
- var key = mutation.payload.path.join('/')
- var moduleInfo = this.allTimeModules[key]
- tempAddedModules.push(key)
- this.origRegisterModule(moduleInfo.path, Object.assign({}, moduleInfo.module,
- {state: Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(moduleInfo.state)}), moduleInfo.options)
- this.resetSnapshotsVm(this.store.state)
- if (!isProd) { console.log('replay register module', moduleInfo) }
- } else if (mutation.unregisterModule && this.hasModule(mutation.payload.path)) {
- var path = mutation.payload.path
- var index$1 = tempAddedModules.indexOf(path.join('/'))
- if (index$1 !== -1) { tempAddedModules.splice(index$1, 1) }
- this.origUnregisterModule(path)
- this.resetSnapshotsVm(this.store.state)
- if (!isProd) { console.log('replay unregister module', path) }
- } else if (mutation.handlers) {
- this.store._committing = true
- try {
- var payload = mutation.payload
- if (this.isLegacy && !Array.isArray(payload)) {
- payload = [payload]
- }
- if (Array.isArray(mutation.handlers)) {
- if (this.isLegacy) {
- mutation.handlers.forEach(handler => handler(this.store.state, ...payload))
- } else {
- mutation.handlers.forEach(handler => handler(payload))
- }
- } else {
- if (this.isLegacy) {
- mutation.handlers(this.store.state, ...payload)
- } else {
- mutation.handlers(payload)
- }
- }
- } catch (e) {
- throw e
- }
- this.store._committing = false
- }
- // Optimization: periodically cache snapshots
- if (i$1 === index || (i$1 % src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].cacheVuexSnapshotsEvery === 0)) {
- this.cacheStateSnapshot(i$1)
- }
- }
- // Send final state after replay
- resultState = Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(this.store.state)
- if (!isProd) { console.log(`replayed ${index - stateSnapshot.index} mutation(s)`) }
- }
- this.lastState = resultState
- var result = this.stringifyStore()
- // Restore user state
- tempAddedModules.sort((a, b) => b.length - a.length).forEach(m => {
- this.origUnregisterModule(m.split('/'))
- if (!isProd) { console.log('after replay unregister', m) }
- })
- tempRemovedModules.sort((a, b) => a.length - b.length).forEach(m => {
- var { path, module, options, state } = this.registeredModules[m]
- this.origRegisterModule(path, Object.assign({}, module,
- {state: Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(state)}), options)
- if (!isProd) { console.log('after replay register', m) }
- })
- this.store._vm = originalVm
- return result
- }
- cacheStateSnapshot (index, permanent = false) {
- this.removeCachedStateSnapshot(index)
- this.stateSnapshotCache.push({
- index,
- state: Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(this.store.state),
- permanent
- })
- if (!isProd) { console.log('cached snapshot', index) }
- // Delete old cached snapshots
- if (this.stateSnapshotCache.filter(s => !s.permanent).length > src_shared_data__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].cacheVuexSnapshotsLimit) {
- var i = this.stateSnapshotCache.findIndex(s => !s.permanent)
- if (i !== -1) {
- if (!isProd) { console.log('clean cached snapshot', this.stateSnapshotCache[i].index) }
- this.stateSnapshotCache.splice(i, 1)
- }
- }
- }
- removeCachedStateSnapshot (index) {
- var i = this.stateSnapshotCache.findIndex(s => s.idex === index)
- if (i !== -1) { this.stateSnapshotCache.splice(i, 1) }
- }
- /**
- * Get the serialized state and getters from the store
- */
- getStoreSnapshot (stateSnapshot = null) {
- var originalVm
- if (stateSnapshot) {
- originalVm = this.store._vm
- this.store._vm = this.snapshotsVm
- this.store.replaceState(Object(_clone__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(stateSnapshot))
- }
- var result = Object(src_util__WEBPACK_IMPORTED_MODULE_0__[/* stringify */ "y"])({
- state: this.store.state,
- getters: this.store.getters || {}
- })
- if (stateSnapshot) {
- // Restore user state
- this.store._vm = originalVm
- }
- return result
- }
- }
- function initVuexBackend (hook, bridge, isLegacy) {
- // eslint-disable-next-line no-new
- new VuexBackend(hook, bridge, isLegacy)
- }
- function getCustomStoreDetails (store) {
- return {
- _custom: {
- type: 'store',
- display: 'Store',
- value: {
- state: store.state,
- getters: store.getters
- },
- fields: {
- abstract: true
- }
- }
- }
- }
- /***/ }),
- /***/ 13:
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return initRouterBackend; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getCustomRouterDetails; });
- /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
- function initRouterBackend (Vue, bridge, rootInstances) {
- var recording = true
- var getSnapshot = () => {
- var routeChanges = []
- rootInstances.forEach(instance => {
- var router = instance._router
- if (router && router.options && router.options.routes) {
- routeChanges.push(...router.options.routes)
- }
- })
- return Object(_util__WEBPACK_IMPORTED_MODULE_0__[/* stringify */ "y"])({
- routeChanges
- })
- }
- bridge.send('routes:init', getSnapshot())
- bridge.on('router:toggle-recording', enabled => {
- recording = enabled
- })
- rootInstances.forEach(instance => {
- var router = instance._router
- if (router) {
- router.afterEach((to, from) => {
- if (!recording) { return }
- bridge.send('router:changed', Object(_util__WEBPACK_IMPORTED_MODULE_0__[/* stringify */ "y"])({
- to,
- from,
- timestamp: Date.now()
- }))
- })
- bridge.send('router:init', Object(_util__WEBPACK_IMPORTED_MODULE_0__[/* stringify */ "y"])({
- mode: router.mode,
- current: {
- from: router.history.current,
- to: router.history.current,
- timestamp: Date.now()
- }
- }))
- if (router.matcher && router.matcher.addRoutes) {
- var addRoutes = router.matcher.addRoutes
- router.matcher.addRoutes = function (routes) {
- routes.forEach((item) => {
- bridge.send('routes:changed', Object(_util__WEBPACK_IMPORTED_MODULE_0__[/* stringify */ "y"])(item))
- })
- addRoutes.call(this, routes)
- }
- }
- }
- })
- }
- function getCustomRouterDetails (router) {
- return {
- _custom: {
- type: 'router',
- display: 'VueRouter',
- value: {
- options: router.options,
- currentRoute: router.currentRoute
- },
- fields: {
- abstract: true
- }
- }
- }
- }
- /***/ }),
- /***/ 14:
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- // EXPORTS
- __webpack_require__.d(__webpack_exports__, "d", function() { return /* binding */ backend_instanceMap; });
- __webpack_require__.d(__webpack_exports__, "c", function() { return /* binding */ initBackend; });
- __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ getCustomInstanceDetails; });
- __webpack_require__.d(__webpack_exports__, "b", function() { return /* binding */ getInstanceName; });
- // UNUSED EXPORTS: functionalVnodeMap, findInstanceOrVnode, reduceStateList, toast, inspectInstance
- // EXTERNAL MODULE: D:/devtools-5.1.1/src/util.js
- var util = __webpack_require__(0);
- // EXTERNAL MODULE: D:/devtools-5.1.1/src/shared-data.js
- var shared_data = __webpack_require__(4);
- // EXTERNAL MODULE: D:/devtools-5.1.1/src/devtools/env.js
- var env = __webpack_require__(2);
- // CONCATENATED MODULE: D:/devtools-5.1.1/src/backend/highlighter.js
- var overlay
- var overlayContent
- function init () {
- if (overlay || !env["b" /* isBrowser */]) { return }
- overlay = document.createElement('div')
- overlay.style.backgroundColor = 'rgba(104, 182, 255, 0.35)'
- overlay.style.position = 'fixed'
- overlay.style.zIndex = '99999999999999'
- overlay.style.pointerEvents = 'none'
- overlay.style.display = 'flex'
- overlay.style.alignItems = 'center'
- overlay.style.justifyContent = 'center'
- overlay.style.borderRadius = '3px'
- overlayContent = document.createElement('div')
- overlayContent.style.backgroundColor = 'rgba(104, 182, 255, 0.9)'
- overlayContent.style.fontFamily = 'monospace'
- overlayContent.style.fontSize = '11px'
- overlayContent.style.padding = '2px 3px'
- overlayContent.style.borderRadius = '3px'
- overlayContent.style.color = 'white'
- overlay.appendChild(overlayContent)
- }
- /**
- * Highlight an instance.
- *
- * @param {Vue} instance
- */
- function highlight (instance) {
- if (!instance) { return }
- var rect = getInstanceOrVnodeRect(instance)
- if (!env["b" /* isBrowser */]) {
- // TODO: Highlight rect area.
- return
- }
- init()
- if (rect) {
- var content = []
- var name = instance.fnContext ? Object(util["m" /* getComponentName */])(instance.fnOptions) : getInstanceName(instance)
- name = Object(util["l" /* getComponentDisplayName */])(name, shared_data["a" /* default */].componentNameStyle)
- if (name) {
- var pre = document.createElement('span')
- pre.style.opacity = '0.6'
- pre.innerText = '<'
- var text = document.createTextNode(name)
- var post = document.createElement('span')
- post.style.opacity = '0.6'
- post.innerText = '>'
- content.push(pre, text, post)
- }
- showOverlay(rect, content)
- }
- }
- /**
- * Remove highlight overlay.
- */
- function unHighlight () {
- if (overlay && overlay.parentNode) {
- document.body.removeChild(overlay)
- }
- }
- /**
- * Get the client rect for an instance.
- *
- * @param {Vue|Vnode} instance
- * @return {Object}
- */
- function getInstanceOrVnodeRect (instance) {
- var el = instance.$el || instance.elm
- if (!env["b" /* isBrowser */]) {
- // TODO: Find position from instance or a vnode (for functional components).
- return
- }
- if (!Object(util["p" /* inDoc */])(el)) {
- return
- }
- if (instance._isFragment) {
- return getFragmentRect(instance)
- } else if (el.nodeType === 1) {
- return el.getBoundingClientRect()
- }
- }
- /**
- * Highlight a fragment instance.
- * Loop over its node range and determine its bounding box.
- *
- * @param {Vue} instance
- * @return {Object}
- */
- function getFragmentRect (ref) {
- var _fragmentStart = ref._fragmentStart;
- var _fragmentEnd = ref._fragmentEnd;
- var top, bottom, left, right
- highlighter_util().mapNodeRange(_fragmentStart, _fragmentEnd, function (node) {
- var rect
- if (node.nodeType === 1 || node.getBoundingClientRect) {
- rect = node.getBoundingClientRect()
- } else if (node.nodeType === 3 && node.data.trim()) {
- rect = getTextRect(node)
- }
- if (rect) {
- if (!top || rect.top < top) {
- top = rect.top
- }
- if (!bottom || rect.bottom > bottom) {
- bottom = rect.bottom
- }
- if (!left || rect.left < left) {
- left = rect.left
- }
- if (!right || rect.right > right) {
- right = rect.right
- }
- }
- })
- return {
- top,
- left,
- width: right - left,
- height: bottom - top
- }
- }
- var range
- /**
- * Get the bounding rect for a text node using a Range.
- *
- * @param {Text} node
- * @return {Rect}
- */
- function getTextRect (node) {
- if (!env["b" /* isBrowser */]) { return }
- if (!range) { range = document.createRange() }
- range.selectNode(node)
- return range.getBoundingClientRect()
- }
- /**
- * Display the overlay with given rect.
- *
- * @param {Rect}
- */
- function showOverlay (ref, content = []) {
- var width = ref.width; if ( width === void 0 ) width = 0;
- var height = ref.height; if ( height === void 0 ) height = 0;
- var top = ref.top; if ( top === void 0 ) top = 0;
- var left = ref.left; if ( left === void 0 ) left = 0;
- if (!env["b" /* isBrowser */]) { return }
- overlay.style.width = ~~width + 'px'
- overlay.style.height = ~~height + 'px'
- overlay.style.top = ~~top + 'px'
- overlay.style.left = ~~left + 'px'
- overlayContent.innerHTML = ''
- content.forEach(child => overlayContent.appendChild(child))
- document.body.appendChild(overlay)
- }
- /**
- * Get Vue's util
- */
- function highlighter_util () {
- return env["f" /* target */].__VUE_DEVTOOLS_GLOBAL_HOOK__.Vue.util
- }
- // EXTERNAL MODULE: D:/devtools-5.1.1/src/backend/vuex.js
- var vuex = __webpack_require__(12);
- // CONCATENATED MODULE: D:/devtools-5.1.1/src/backend/events.js
- var internalRE = /^(?:pre-)?hook:/
- function initEventsBackend (Vue, bridge) {
- var recording = true
- bridge.send('events:reset')
- bridge.on('events:toggle-recording', enabled => {
- recording = enabled
- })
- function logEvent (vm, type, eventName, payload) {
- // The string check is important for compat with 1.x where the first
- // argument may be an object instead of a string.
- // this also ensures the event is only logged for direct $emit (source)
- // instead of by $dispatch/$broadcast
- if (typeof eventName === 'string' && !internalRE.test(eventName)) {
- bridge.send('event:triggered', Object(util["y" /* stringify */])({
- eventName,
- type,
- payload,
- instanceId: vm._uid,
- instanceName: getInstanceName(vm._self || vm),
- timestamp: Date.now()
- }))
- }
- }
- function wrap (method) {
- var original = Vue.prototype[method]
- if (original) {
- Vue.prototype[method] = function (...args) {
- var res = original.apply(this, args)
- if (recording) {
- logEvent(this, method, args[0], args.slice(1))
- }
- return res
- }
- }
- }
- wrap('$emit')
- wrap('$broadcast')
- wrap('$dispatch')
- }
- // EXTERNAL MODULE: D:/devtools-5.1.1/src/backend/router.js
- var router = __webpack_require__(13);
- // CONCATENATED MODULE: D:/devtools-5.1.1/src/backend/perf.js
- var COMPONENT_HOOKS = [
- 'beforeCreate',
- 'created',
- 'beforeMount',
- 'mounted',
- 'beforeUpdate',
- 'updated',
- 'beforeDestroyed',
- 'destroyed'
- ]
- var RENDER_HOOKS = {
- beforeMount: { after: 'mountRender' },
- mounted: { before: 'mountRender' },
- beforeUpdate: { after: 'updateRender' },
- updated: { before: 'updateRender' }
- }
- var perf_frames = 0
- var frameTime
- var secondsTimer
- var perf_bridge
- var componentMetrics
- function initPerfBackend (Vue, _bridge, instanceMap) {
- perf_bridge = _bridge
- // Global mixin
- Vue.mixin({
- beforeCreate () {
- applyHooks(this)
- }
- })
- // Apply to existing components
- instanceMap.forEach(applyHooks)
- Object(shared_data["d" /* watch */])('recordPerf', value => {
- if (value) {
- startRecording()
- } else {
- stopRecording()
- }
- })
- }
- function startRecording () {
- perf_frames = 0
- frameTime = performance.now()
- secondsTimer = setInterval(frameInterval, 500)
- componentMetrics = {}
- requestAnimationFrame(perf_frame)
- }
- function stopRecording () {
- clearInterval(secondsTimer)
- }
- function perf_frame () {
- perf_frames++
- if (shared_data["a" /* default */].recordPerf) {
- requestAnimationFrame(perf_frame)
- }
- }
- function frameInterval () {
- var metric = {
- type: 'fps',
- time: Date.now(),
- start: frameTime,
- end: frameTime = performance.now()
- }
- metric.value = Math.round(perf_frames / (metric.end - metric.start) * 1000)
- perf_frames = 0
- perf_bridge.send('perf:add-metric', metric)
- }
- function applyHooks (vm) {
- if (vm.$options.$_devtoolsPerfHooks) { return }
- vm.$options.$_devtoolsPerfHooks = true
- var renderMetrics = {}
- COMPONENT_HOOKS.forEach(hook => {
- var renderHook = RENDER_HOOKS[hook]
- var handler = function () {
- if (shared_data["a" /* default */].recordPerf) {
- // Before
- var time = performance.now()
- if (renderHook && renderHook.before) {
- // Render hook ends before one hook
- var metric = renderMetrics[renderHook.before]
- if (metric) {
- metric.end = time
- addComponentMetric(vm.$options, renderHook.before, metric.start, metric.end)
- }
- }
- // After
- this.$once(`hook:${hook}`, () => {
- var newTime = performance.now()
- addComponentMetric(vm.$options, hook, time, newTime)
- if (renderHook && renderHook.after) {
- // Render hook starts after one hook
- renderMetrics[renderHook.after] = {
- start: newTime,
- end: 0
- }
- }
- })
- }
- }
- var currentValue = vm.$options[hook]
- if (Array.isArray(currentValue)) {
- vm.$options[hook] = [handler, ...currentValue]
- } else if (typeof currentValue === 'function') {
- vm.$options[hook] = [handler, currentValue]
- } else {
- vm.$options[hook] = [handler]
- }
- })
- }
- function addComponentMetric (options, type, start, end) {
- var duration = end - start
- var name = Object(util["m" /* getComponentName */])(options)
- var metric = componentMetrics[name] = componentMetrics[name] || {
- id: name,
- hooks: {},
- totalTime: 0
- }
- var hook = metric.hooks[type] = metric.hooks[type] || {
- count: 0,
- totalTime: 0
- }
- hook.count++
- hook.totalTime += duration
- metric.totalTime += duration
- perf_bridge.send('perf:upsert-metric', { type: 'componentRender', data: metric })
- }
- // CONCATENATED MODULE: D:/devtools-5.1.1/src/backend/utils.js
- function findRelatedComponent (el) {
- while (!el.__vue__ && el.parentElement) {
- el = el.parentElement
- }
- return el.__vue__
- }
- // CONCATENATED MODULE: D:/devtools-5.1.1/src/backend/component-selector.js
- class component_selector_ComponentSelector {
- constructor (bridge, instanceMap) {
- var self = this
- self.bridge = bridge
- self.instanceMap = instanceMap
- self.bindMethods()
- bridge.on('start-component-selector', self.startSelecting)
- bridge.on('stop-component-selector', self.stopSelecting)
- }
- /**
- * Adds event listeners for mouseover and mouseup
- */
- startSelecting () {
- if (!env["b" /* isBrowser */]) { return }
- window.addEventListener('mouseover', this.elementMouseOver, true)
- window.addEventListener('click', this.elementClicked, true)
- window.addEventListener('mouseout', this.cancelEvent, true)
- window.addEventListener('mouseenter', this.cancelEvent, true)
- window.addEventListener('mouseleave', this.cancelEvent, true)
- window.addEventListener('mousedown', this.cancelEvent, true)
- window.addEventListener('mouseup', this.cancelEvent, true)
- }
- /**
- * Removes event listeners
- */
- stopSelecting () {
- if (!env["b" /* isBrowser */]) { return }
- window.removeEventListener('mouseover', this.elementMouseOver, true)
- window.removeEventListener('click', this.elementClicked, true)
- window.removeEventListener('mouseout', this.cancelEvent, true)
- window.removeEventListener('mouseenter', this.cancelEvent, true)
- window.removeEventListener('mouseleave', this.cancelEvent, true)
- window.removeEventListener('mousedown', this.cancelEvent, true)
- window.removeEventListener('mouseup', this.cancelEvent, true)
- unHighlight()
- }
- /**
- * Highlights a component on element mouse over
- * @param {MouseEvent} e
- */
- elementMouseOver (e) {
- this.cancelEvent(e)
- var el = e.target
- if (el) {
- this.selectedInstance = findRelatedComponent(el)
- }
- unHighlight()
- if (this.selectedInstance) {
- highlight(this.selectedInstance)
- }
- }
- /**
- * Selects an instance in the component view
- * @param {MouseEvent} e
- */
- elementClicked (e) {
- this.cancelEvent(e)
- if (this.selectedInstance) {
- this.bridge.send('inspect-instance', this.selectedInstance.__VUE_DEVTOOLS_UID__)
- } else {
- this.bridge.send('stop-component-selector')
- }
- this.stopSelecting()
- }
- /**
- * Cancel a mouse event
- * @param {MouseEvent} e
- */
- cancelEvent (e) {
- e.stopImmediatePropagation()
- e.preventDefault()
- }
- /**
- * Bind class methods to the class scope to avoid rebind for event listeners
- */
- bindMethods () {
- this.startSelecting = this.startSelecting.bind(this)
- this.stopSelecting = this.stopSelecting.bind(this)
- this.elementMouseOver = this.elementMouseOver.bind(this)
- this.elementClicked = this.elementClicked.bind(this)
- }
- }
- // EXTERNAL MODULE: D:/devtools-5.1.1/src/storage.js
- var storage = __webpack_require__(10);
- // CONCATENATED MODULE: D:/devtools-5.1.1/src/backend/index.js
- // This is the backend that is injected into the page that a Vue app lives in
- // when the Vue Devtools panel is activated.
- // hook should have been injected before this executes.
- var backend_hook = env["f" /* target */].__VUE_DEVTOOLS_GLOBAL_HOOK__
- var rootInstances = []
- var propModes = ['default', 'sync', 'once']
- var backend_instanceMap = env["f" /* target */].__VUE_DEVTOOLS_INSTANCE_MAP__ = new Map()
- var functionalVnodeMap = env["f" /* target */].__VUE_DEVTOOLS_FUNCTIONAL_VNODE_MAP__ = new Map()
- var consoleBoundInstances = Array(5)
- var currentInspectedId
- var backend_bridge
- var filter = ''
- var captureCount = 0
- var isLegacy = false
- var rootUID = 0
- var functionalIds = new Map()
- // Dedupe instances
- // Some instances may be both on a component and on a child abstract/functional component
- var captureIds = new Map()
- function initBackend (_bridge) {
- backend_bridge = _bridge
- if (backend_hook.Vue) {
- isLegacy = backend_hook.Vue.version && backend_hook.Vue.version.split('.')[0] === '1'
- connect(backend_hook.Vue)
- } else {
- backend_hook.once('init', connect)
- }
- initRightClick()
- }
- function connect (Vue) {
- Object(storage["b" /* init */])().then(() => {
- Object(shared_data["c" /* init */])({
- bridge: backend_bridge,
- Vue
- })
- backend_hook.currentTab = 'components'
- backend_bridge.on('switch-tab', tab => {
- backend_hook.currentTab = tab
- if (tab === 'components') {
- flush()
- }
- })
- // the backend may get injected to the same page multiple times
- // if the user closes and reopens the devtools.
- // make sure there's only one flush listener.
- backend_hook.off('flush')
- backend_hook.on('flush', () => {
- if (backend_hook.currentTab === 'components') {
- flush()
- }
- })
- backend_bridge.on('select-instance', id => {
- currentInspectedId = id
- var instance = findInstanceOrVnode(id)
- if (!instance) { return }
- if (!/:functional:/.test(id)) { bindToConsole(instance) }
- flush()
- backend_bridge.send('instance-selected')
- })
- backend_bridge.on('scroll-to-instance', id => {
- var instance = findInstanceOrVnode(id)
- if (instance) {
- scrollIntoView(instance)
- highlight(instance)
- }
- })
- backend_bridge.on('filter-instances', _filter => {
- filter = _filter.toLowerCase()
- flush()
- })
- backend_bridge.on('refresh', scan)
- backend_bridge.on('enter-instance', id => {
- var instance = findInstanceOrVnode(id)
- if (instance) { highlight(instance) }
- })
- backend_bridge.on('leave-instance', unHighlight)
- // eslint-disable-next-line no-new
- new component_selector_ComponentSelector(backend_bridge, backend_instanceMap)
- // Get the instance id that is targeted by context menu
- backend_bridge.on('get-context-menu-target', () => {
- var instance = env["f" /* target */].__VUE_DEVTOOLS_CONTEXT_MENU_TARGET__
- env["f" /* target */].__VUE_DEVTOOLS_CONTEXT_MENU_TARGET__ = null
- env["f" /* target */].__VUE_DEVTOOLS_CONTEXT_MENU_HAS_TARGET__ = false
- if (instance) {
- var id = instance.__VUE_DEVTOOLS_UID__
- if (id) {
- return backend_bridge.send('inspect-instance', id)
- }
- }
- toast('No Vue component was found', 'warn')
- })
- backend_bridge.on('set-instance-data', args => {
- setStateValue(args)
- flush()
- })
- // vuex
- if (backend_hook.store) {
- Object(vuex["b" /* initVuexBackend */])(backend_hook, backend_bridge, backend_hook.store.commit === undefined)
- } else {
- backend_hook.once('vuex:init', store => {
- Object(vuex["b" /* initVuexBackend */])(backend_hook, backend_bridge, store.commit === undefined)
- })
- }
- backend_hook.once('router:init', () => {
- Object(router["b" /* initRouterBackend */])(backend_hook.Vue, backend_bridge, rootInstances)
- })
- // events
- initEventsBackend(Vue, backend_bridge)
- env["f" /* target */].__VUE_DEVTOOLS_INSPECT__ = inspectInstance
- // User project devtools config
- if (env["f" /* target */].hasOwnProperty('VUE_DEVTOOLS_CONFIG')) {
- var config = env["f" /* target */].VUE_DEVTOOLS_CONFIG
- // Open in editor
- if (config.hasOwnProperty('openInEditorHost')) {
- shared_data["a" /* default */].openInEditorHost = config.openInEditorHost
- }
- }
- backend_bridge.log('backend ready.')
- backend_bridge.send('ready', Vue.version)
- backend_bridge.on('log-detected-vue', () => {
- console.log(
- `%c vue-devtools %c Detected Vue v${Vue.version} %c`,
- 'background:#35495e ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff',
- 'background:#41b883 ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff',
- 'background:transparent'
- )
- })
- setTimeout(() => {
- scan()
- // perf
- initPerfBackend(Vue, backend_bridge, backend_instanceMap)
- }, 0)
- })
- }
- function findInstanceOrVnode (id) {
- if (/:functional:/.test(id)) {
- var [refId] = id.split(':functional:')
- var map = functionalVnodeMap.get(refId)
- return map && map[id]
- }
- return backend_instanceMap.get(id)
- }
- /**
- * Scan the page for root level Vue instances.
- */
- function scan () {
- rootInstances.length = 0
- var inFragment = false
- var currentFragment = null
- function processInstance (instance) {
- if (instance) {
- if (rootInstances.indexOf(instance.$root) === -1) {
- instance = instance.$root
- }
- if (instance._isFragment) {
- inFragment = true
- currentFragment = instance
- }
- // respect Vue.config.devtools option
- var baseVue = instance.constructor
- while (baseVue.super) {
- baseVue = baseVue.super
- }
- if (baseVue.config && baseVue.config.devtools) {
- // give a unique id to root instance so we can
- // 'namespace' its children
- if (typeof instance.__VUE_DEVTOOLS_ROOT_UID__ === 'undefined') {
- instance.__VUE_DEVTOOLS_ROOT_UID__ = ++rootUID
- }
- rootInstances.push(instance)
- }
- return true
- }
- }
- if (env["b" /* isBrowser */]) {
- walk(document, function (node) {
- if (inFragment) {
- if (node === currentFragment._fragmentEnd) {
- inFragment = false
- currentFragment = null
- }
- return true
- }
- var instance = node.__vue__
- return processInstance(instance)
- })
- } else {
- if (Array.isArray(env["f" /* target */].__VUE_ROOT_INSTANCES__)) {
- env["f" /* target */].__VUE_ROOT_INSTANCES__.map(processInstance)
- }
- }
- backend_hook.emit('router:init')
- flush()
- }
- /**
- * DOM walk helper
- *
- * @param {NodeList} nodes
- * @param {Function} fn
- */
- function walk (node, fn) {
- if (node.childNodes) {
- for (var i = 0, l = node.childNodes.length; i < l; i++) {
- var child = node.childNodes[i]
- var stop = fn(child)
- if (!stop) {
- walk(child, fn)
- }
- }
- }
- // also walk shadow DOM
- if (node.shadowRoot) {
- walk(node.shadowRoot, fn)
- }
- }
- /**
- * Called on every Vue.js batcher flush cycle.
- * Capture current component tree structure and the state
- * of the current inspected instance (if present) and
- * send it to the devtools.
- */
- function flush () {
- var start
- functionalIds.clear()
- captureIds.clear()
- if (false) {}
- var payload = Object(util["y" /* stringify */])({
- inspectedInstance: getInstanceDetails(currentInspectedId),
- instances: findQualifiedChildrenFromList(rootInstances)
- })
- if (false) {}
- backend_bridge.send('flush', payload)
- }
- /**
- * Iterate through an array of instances and flatten it into
- * an array of qualified instances. This is a depth-first
- * traversal - e.g. if an instance is not matched, we will
- * recursively go deeper until a qualified child is found.
- *
- * @param {Array} instances
- * @return {Array}
- */
- function findQualifiedChildrenFromList (instances) {
- instances = instances
- .filter(child => !child._isBeingDestroyed)
- return !filter
- ? instances.map(capture)
- : Array.prototype.concat.apply([], instances.map(findQualifiedChildren))
- }
- /**
- * Find qualified children from a single instance.
- * If the instance itself is qualified, just return itself.
- * This is ok because [].concat works in both cases.
- *
- * @param {Vue|Vnode} instance
- * @return {Vue|Array}
- */
- function findQualifiedChildren (instance) {
- return isQualified(instance)
- ? capture(instance)
- : findQualifiedChildrenFromList(instance.$children).concat(
- instance._vnode && instance._vnode.children
- // Find functional components in recursively in non-functional vnodes.
- ? flatten(instance._vnode.children.filter(child => !child.componentInstance).map(captureChild))
- // Filter qualified children.
- .filter(instance => isQualified(instance))
- : []
- )
- }
- /**
- * Check if an instance is qualified.
- *
- * @param {Vue|Vnode} instance
- * @return {Boolean}
- */
- function isQualified (instance) {
- var name = Object(util["g" /* classify */])(instance.name || getInstanceName(instance)).toLowerCase()
- return name.indexOf(filter) > -1
- }
- function flatten (items) {
- return items.reduce((acc, item) => {
- if (item instanceof Array) { acc.push(...flatten(item)) }
- else if (item) { acc.push(item) }
- return acc
- }, [])
- }
- function captureChild (child) {
- if (child.fnContext && !child.componentInstance) {
- return capture(child)
- } else if (child.componentInstance) {
- if (!child.componentInstance._isBeingDestroyed) { return capture(child.componentInstance) }
- } else if (child.children) {
- return flatten(child.children.map(captureChild))
- }
- }
- /**
- * Capture the meta information of an instance. (recursive)
- *
- * @param {Vue} instance
- * @return {Object}
- */
- function capture (instance, index, list) {
- if (false) {}
- if (instance.$options && instance.$options.abstract && instance._vnode && instance._vnode.componentInstance) {
- instance = instance._vnode.componentInstance
- }
- // Functional component.
- if (instance.fnContext && !instance.componentInstance) {
- var contextUid = instance.fnContext.__VUE_DEVTOOLS_UID__
- var id = functionalIds.get(contextUid)
- if (id == null) {
- id = 0
- } else {
- id++
- }
- functionalIds.set(contextUid, id)
- var functionalId = contextUid + ':functional:' + id
- markFunctional(functionalId, instance)
- return {
- id: functionalId,
- functional: true,
- name: getInstanceName(instance),
- renderKey: getRenderKey(instance.key),
- children: (instance.children ? instance.children.map(
- child => child.fnContext
- ? captureChild(child)
- : child.componentInstance
- ? capture(child.componentInstance)
- : undefined
- )
- // router-view has both fnContext and componentInstance on vnode.
- : instance.componentInstance ? [capture(instance.componentInstance)] : []).filter(Boolean),
- inactive: false,
- isFragment: false // TODO: Check what is it for.
- }
- }
- // instance._uid is not reliable in devtools as there
- // may be 2 roots with same _uid which causes unexpected
- // behaviour
- instance.__VUE_DEVTOOLS_UID__ = getUniqueId(instance)
- // Dedupe
- if (captureIds.has(instance.__VUE_DEVTOOLS_UID__)) {
- return
- } else {
- captureIds.set(instance.__VUE_DEVTOOLS_UID__, undefined)
- }
- mark(instance)
- var name = getInstanceName(instance)
- var ret = {
- uid: instance._uid,
- id: instance.__VUE_DEVTOOLS_UID__,
- name,
- renderKey: getRenderKey(instance.$vnode ? instance.$vnode['key'] : null),
- inactive: !!instance._inactive,
- isFragment: !!instance._isFragment,
- children: instance.$children
- .filter(child => !child._isBeingDestroyed)
- .map(capture)
- .filter(Boolean)
- }
- if (instance._vnode && instance._vnode.children) {
- ret.children = ret.children.concat(
- flatten(instance._vnode.children.map(captureChild))
- .filter(Boolean)
- )
- }
- // record screen position to ensure correct ordering
- if ((!list || list.length > 1) && !instance._inactive) {
- var rect = getInstanceOrVnodeRect(instance)
- ret.top = rect ? rect.top : Infinity
- } else {
- ret.top = Infinity
- }
- // check if instance is available in console
- var consoleId = consoleBoundInstances.indexOf(instance.__VUE_DEVTOOLS_UID__)
- ret.consoleId = consoleId > -1 ? '$vm' + consoleId : null
- // check router view
- var isRouterView2 = instance.$vnode && instance.$vnode.data.routerView
- if (instance._routerView || isRouterView2) {
- ret.isRouterView = true
- if (!instance._inactive && instance.$route) {
- var matched = instance.$route.matched
- var depth = isRouterView2
- ? instance.$vnode.data.routerViewDepth
- : instance._routerView.depth
- ret.matchedRouteSegment =
- matched &&
- matched[depth] &&
- (isRouterView2 ? matched[depth].path : matched[depth].handler.path)
- }
- }
- return ret
- }
- /**
- * Mark an instance as captured and store it in the instance map.
- *
- * @param {Vue} instance
- */
- function mark (instance) {
- if (!backend_instanceMap.has(instance.__VUE_DEVTOOLS_UID__)) {
- backend_instanceMap.set(instance.__VUE_DEVTOOLS_UID__, instance)
- instance.$on('hook:beforeDestroy', function () {
- backend_instanceMap.delete(instance.__VUE_DEVTOOLS_UID__)
- })
- }
- }
- function markFunctional (id, vnode) {
- var refId = vnode.fnContext.__VUE_DEVTOOLS_UID__
- if (!functionalVnodeMap.has(refId)) {
- functionalVnodeMap.set(refId, {})
- vnode.fnContext.$on('hook:beforeDestroy', function () {
- functionalVnodeMap.delete(refId)
- })
- }
- functionalVnodeMap.get(refId)[id] = vnode
- }
- /**
- * Get the detailed information of an inspected instance.
- *
- * @param {Number} id
- */
- function getInstanceDetails (id) {
- var instance = backend_instanceMap.get(id)
- if (!instance) {
- var vnode = findInstanceOrVnode(id)
- if (!vnode) { return {} }
- var data = {
- id,
- name: Object(util["m" /* getComponentName */])(vnode.fnOptions),
- file: vnode.fnOptions.__file || null,
- state: processProps(Object.assign({}, {$options: vnode.fnOptions}, (vnode.devtoolsMeta && vnode.devtoolsMeta.renderContext.props))),
- functional: true
- }
- return data
- } else {
- var data$1 = {
- id: id,
- name: getInstanceName(instance),
- state: getInstanceState(instance)
- }
- var i
- if ((i = instance.$vnode) && (i = i.componentOptions) && (i = i.Ctor) && (i = i.options)) {
- data$1.file = i.__file || null
- }
- return data$1
- }
- }
- function getInstanceState (instance) {
- return processProps(instance).concat(
- processState(instance),
- processRefs(instance),
- processComputed(instance),
- processInjected(instance),
- processRouteContext(instance),
- processVuexGetters(instance),
- processFirebaseBindings(instance),
- processObservables(instance),
- processAttrs(instance)
- )
- }
- function getCustomInstanceDetails (instance) {
- var state = getInstanceState(instance)
- return {
- _custom: {
- type: 'component',
- id: instance.__VUE_DEVTOOLS_UID__,
- display: getInstanceName(instance),
- tooltip: 'Component instance',
- value: reduceStateList(state),
- fields: {
- abstract: true
- }
- }
- }
- }
- function reduceStateList (list) {
- if (!list.length) {
- return undefined
- }
- return list.reduce((map, item) => {
- var key = item.type || 'data'
- var obj = map[key] = map[key] || {}
- obj[item.key] = item.value
- return map
- }, {})
- }
- /**
- * Get the appropriate display name for an instance.
- *
- * @param {Vue} instance
- * @return {String}
- */
- function getInstanceName (instance) {
- var name = Object(util["m" /* getComponentName */])(instance.$options || instance.fnOptions || {})
- if (name) { return name }
- return instance.$root === instance
- ? 'Root'
- : 'Anonymous Component'
- }
- /**
- * Process the props of an instance.
- * Make sure return a plain object because window.postMessage()
- * will throw an Error if the passed object contains Functions.
- *
- * @param {Vue} instance
- * @return {Array}
- */
- function processProps (instance) {
- var props
- if (isLegacy && (props = instance._props)) {
- // 1.x
- return Object.keys(props).map(key => {
- var prop = props[key]
- var options = prop.options
- return {
- type: 'props',
- key: prop.path,
- value: instance[prop.path],
- meta: options ? {
- type: options.type ? getPropType(options.type) : 'any',
- required: !!options.required,
- mode: propModes[prop.mode]
- } : {}
- }
- })
- } else if ((props = instance.$options.props)) {
- // 2.0
- var propsData = []
- for (var key in props) {
- var prop = props[key]
- key = Object(util["f" /* camelize */])(key)
- propsData.push({
- type: 'props',
- key,
- value: instance[key],
- meta: prop ? {
- type: prop.type ? getPropType(prop.type) : 'any',
- required: !!prop.required
- } : {
- type: 'invalid'
- },
- editable: shared_data["a" /* default */].editableProps
- })
- }
- return propsData
- } else {
- return []
- }
- }
- function processAttrs (instance) {
- return Object.entries(instance.$attrs || {}).map((ref) => {
- var key = ref[0];
- var value = ref[1];
- return {
- type: '$attrs',
- key,
- value
- }
- })
- }
- /**
- * Convert prop type constructor to string.
- *
- * @param {Function} fn
- */
- var fnTypeRE = /^(?:function|class) (\w+)/
- function getPropType (type) {
- var match = type.toString().match(fnTypeRE)
- return typeof type === 'function'
- ? (match && match[1]) || 'any'
- : 'any'
- }
- /**
- * Process state, filtering out props and "clean" the result
- * with a JSON dance. This removes functions which can cause
- * errors during structured clone used by window.postMessage.
- *
- * @param {Vue} instance
- * @return {Array}
- */
- function processState (instance) {
- var props = isLegacy
- ? instance._props
- : instance.$options.props
- var getters =
- instance.$options.vuex &&
- instance.$options.vuex.getters
- return Object.keys(instance._data)
- .filter(key => (
- !(props && key in props) &&
- !(getters && key in getters)
- ))
- .map(key => ({
- key,
- value: instance._data[key],
- editable: true
- }))
- }
- /**
- * Process refs
- *
- * @param {Vue} instance
- * @return {Array}
- */
- function processRefs (instance) {
- return Object.keys(instance.$refs)
- .filter(key => instance.$refs[key])
- .map(key => Object(util["n" /* getCustomRefDetails */])(instance, key, instance.$refs[key]))
- }
- /**
- * Process the computed properties of an instance.
- *
- * @param {Vue} instance
- * @return {Array}
- */
- function processComputed (instance) {
- var computed = []
- var defs = instance.$options.computed || {}
- // use for...in here because if 'computed' is not defined
- // on component, computed properties will be placed in prototype
- // and Object.keys does not include
- // properties from object's prototype
- for (var key in defs) {
- var def = defs[key]
- var type = typeof def === 'function' && def.vuex
- ? 'vuex bindings'
- : 'computed'
- // use try ... catch here because some computed properties may
- // throw error during its evaluation
- var computedProp = null
- try {
- computedProp = {
- type,
- key,
- value: instance[key]
- }
- } catch (e) {
- computedProp = {
- type,
- key,
- value: '(error during evaluation)'
- }
- }
- computed.push(computedProp)
- }
- return computed
- }
- /**
- * Process Vuex getters.
- *
- * @param {Vue} instance
- * @return {Array}
- */
- function processInjected (instance) {
- var injected = instance.$options.inject
- if (injected) {
- return Object.keys(injected).map(key => {
- return {
- key,
- type: 'injected',
- value: instance[key]
- }
- })
- } else {
- return []
- }
- }
- /**
- * Process possible vue-router $route context
- *
- * @param {Vue} instance
- * @return {Array}
- */
- function processRouteContext (instance) {
- try {
- var route = instance.$route
- if (route) {
- var { path, query, params } = route
- var value = { path, query, params }
- if (route.fullPath) { value.fullPath = route.fullPath }
- if (route.hash) { value.hash = route.hash }
- if (route.name) { value.name = route.name }
- if (route.meta) { value.meta = route.meta }
- return [{
- key: '$route',
- value: {
- _custom: {
- type: 'router',
- abstract: true,
- value
- }
- }
- }]
- }
- } catch (e) {
- // Invalid $router
- }
- return []
- }
- /**
- * Process Vuex getters.
- *
- * @param {Vue} instance
- * @return {Array}
- */
- function processVuexGetters (instance) {
- var getters =
- instance.$options.vuex &&
- instance.$options.vuex.getters
- if (getters) {
- return Object.keys(getters).map(key => {
- return {
- type: 'vuex getters',
- key,
- value: instance[key]
- }
- })
- } else {
- return []
- }
- }
- /**
- * Process Firebase bindings.
- *
- * @param {Vue} instance
- * @return {Array}
- */
- function processFirebaseBindings (instance) {
- var refs = instance.$firebaseRefs
- if (refs) {
- return Object.keys(refs).map(key => {
- return {
- type: 'firebase bindings',
- key,
- value: instance[key]
- }
- })
- } else {
- return []
- }
- }
- /**
- * Process vue-rx observable bindings.
- *
- * @param {Vue} instance
- * @return {Array}
- */
- function processObservables (instance) {
- var obs = instance.$observables
- if (obs) {
- return Object.keys(obs).map(key => {
- return {
- type: 'observables',
- key,
- value: instance[key]
- }
- })
- } else {
- return []
- }
- }
- /**
- * Sroll a node into view.
- *
- * @param {Vue} instance
- */
- function scrollIntoView (instance) {
- var rect = getInstanceOrVnodeRect(instance)
- if (rect) {
- // TODO: Handle this for non-browser environments.
- window.scrollBy(0, rect.top + (rect.height - window.innerHeight) / 2)
- }
- }
- /**
- * Binds given instance in console as $vm0.
- * For compatibility reasons it also binds it as $vm.
- *
- * @param {Vue} instance
- */
- function bindToConsole (instance) {
- if (!instance) { return }
- if (!env["b" /* isBrowser */]) { return }
- var id = instance.__VUE_DEVTOOLS_UID__
- var index = consoleBoundInstances.indexOf(id)
- if (index > -1) {
- consoleBoundInstances.splice(index, 1)
- } else {
- consoleBoundInstances.pop()
- }
- consoleBoundInstances.unshift(id)
- for (var i = 0; i < 5; i++) {
- window['$vm' + i] = backend_instanceMap.get(consoleBoundInstances[i])
- }
- window.$vm = instance
- }
- /**
- * Returns a devtools unique id for instance.
- * @param {Vue} instance
- */
- function getUniqueId (instance) {
- var rootVueId = instance.$root.__VUE_DEVTOOLS_ROOT_UID__
- return `${rootVueId}:${instance._uid}`
- }
- function getRenderKey (value) {
- if (value == null) { return }
- var type = typeof value
- if (type === 'number') {
- return value
- } else if (type === 'string') {
- return `'${value}'`
- } else if (Array.isArray(value)) {
- return 'Array'
- } else {
- return 'Object'
- }
- }
- /**
- * Display a toast message.
- * @param {any} message HTML content
- */
- function toast (message, type = 'normal') {
- var fn = env["f" /* target */].__VUE_DEVTOOLS_TOAST__
- fn && fn(message, type)
- }
- function inspectInstance (instance) {
- var id = instance.__VUE_DEVTOOLS_UID__
- id && backend_bridge.send('inspect-instance', id)
- }
- function setStateValue (ref) {
- var id = ref.id;
- var path = ref.path;
- var value = ref.value;
- var newKey = ref.newKey;
- var remove = ref.remove;
- var instance = backend_instanceMap.get(id)
- if (instance) {
- try {
- var parsedValue
- if (value) {
- parsedValue = Object(util["s" /* parse */])(value, true)
- }
- var api = isLegacy ? {
- $set: backend_hook.Vue.set,
- $delete: backend_hook.Vue.delete
- } : instance
- var data = Object(util["o" /* has */])(instance._props, path, newKey)
- ? instance._props
- : instance._data
- Object(util["v" /* set */])(data, path, parsedValue, (obj, field, value) => {
- (remove || newKey) && api.$delete(obj, field)
- !remove && api.$set(obj, newKey || field, value)
- })
- } catch (e) {
- console.error(e)
- }
- }
- }
- function initRightClick () {
- if (!env["b" /* isBrowser */]) { return }
- // Start recording context menu when Vue is detected
- // event if Vue devtools are not loaded yet
- document.addEventListener('contextmenu', event => {
- var el = event.target
- if (el) {
- // Search for parent that "is" a component instance
- var instance = findRelatedComponent(el)
- if (instance) {
- window.__VUE_DEVTOOLS_CONTEXT_MENU_HAS_TARGET__ = true
- window.__VUE_DEVTOOLS_CONTEXT_MENU_TARGET__ = instance
- return
- }
- }
- window.__VUE_DEVTOOLS_CONTEXT_MENU_HAS_TARGET__ = null
- window.__VUE_DEVTOOLS_CONTEXT_MENU_TARGET__ = null
- })
- }
- /***/ }),
- /***/ 15:
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return stringify; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return parse; });
- /* unused harmony export stringifyStrict */
- var MAX_SERIALIZED_SIZE = 512 * 1024 // 1MB
- function encode (data, replacer, list, seen) {
- var stored, key, value, i, l
- var seenIndex = seen.get(data)
- if (seenIndex != null) {
- return seenIndex
- }
- var index = list.length
- var proto = Object.prototype.toString.call(data)
- if (proto === '[object Object]') {
- stored = {}
- seen.set(data, index)
- list.push(stored)
- var keys = Object.keys(data)
- for (i = 0, l = keys.length; i < l; i++) {
- key = keys[i]
- value = data[key]
- if (replacer) { value = replacer.call(data, key, value) }
- stored[key] = encode(value, replacer, list, seen)
- }
- } else if (proto === '[object Array]') {
- stored = []
- seen.set(data, index)
- list.push(stored)
- for (i = 0, l = data.length; i < l; i++) {
- value = data[i]
- if (replacer) { value = replacer.call(data, i, value) }
- stored[i] = encode(value, replacer, list, seen)
- }
- } else {
- list.push(data)
- }
- return index
- }
- function decode (list, reviver) {
- var i = list.length
- var j, k, data, key, value, proto
- while (i--) {
- data = list[i]
- proto = Object.prototype.toString.call(data)
- if (proto === '[object Object]') {
- var keys = Object.keys(data)
- for (j = 0, k = keys.length; j < k; j++) {
- key = keys[j]
- value = list[data[key]]
- if (reviver) { value = reviver.call(data, key, value) }
- data[key] = value
- }
- } else if (proto === '[object Array]') {
- for (j = 0, k = data.length; j < k; j++) {
- value = list[data[j]]
- if (reviver) { value = reviver.call(data, j, value) }
- data[j] = value
- }
- }
- }
- }
- function stringify (data, replacer, space) {
- var result
- try {
- result = arguments.length === 1
- ? JSON.stringify(data)
- : JSON.stringify(data, replacer, space)
- } catch (e) {
- result = stringifyStrict(data, replacer, space)
- }
- if (result.length > MAX_SERIALIZED_SIZE) {
- var chunkCount = Math.ceil(result.length / MAX_SERIALIZED_SIZE)
- var chunks = []
- for (var i = 0; i < chunkCount; i++) {
- chunks.push(result.slice(i * MAX_SERIALIZED_SIZE, (i + 1) * MAX_SERIALIZED_SIZE))
- }
- return chunks
- }
- return result
- }
- function parse (data, reviver) {
- if (Array.isArray(data)) {
- data = data.join('')
- }
- var hasCircular = /^\s/.test(data)
- if (!hasCircular) {
- return arguments.length === 1
- ? JSON.parse(data)
- : JSON.parse(data, reviver)
- } else {
- var list = JSON.parse(data)
- decode(list, reviver)
- return list[0]
- }
- }
- function stringifyStrict (data, replacer, space) {
- var list = []
- encode(data, replacer, list, new Map())
- return space
- ? ' ' + JSON.stringify(list, null, space)
- : ' ' + JSON.stringify(list)
- }
- /***/ }),
- /***/ 160:
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony import */ var src_backend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
- /* harmony import */ var src_bridge__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
- // this is injected to the app page when the panel is activated.
- window.addEventListener('message', handshake)
- function handshake (e) {
- if (e.data.source === 'vue-devtools-proxy' && e.data.payload === 'init') {
- window.removeEventListener('message', handshake)
- var listeners = []
- var bridge = new src_bridge__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"]({
- listen (fn) {
- var listener = evt => {
- if (evt.data.source === 'vue-devtools-proxy' && evt.data.payload) {
- fn(evt.data.payload)
- }
- }
- window.addEventListener('message', listener)
- listeners.push(listener)
- },
- send (data) {
- window.postMessage({
- source: 'vue-devtools-backend',
- payload: data
- }, '*')
- }
- })
- bridge.on('shutdown', () => {
- listeners.forEach(l => {
- window.removeEventListener('message', l)
- })
- listeners = []
- })
- Object(src_backend__WEBPACK_IMPORTED_MODULE_0__[/* initBackend */ "c"])(bridge)
- }
- }
- /***/ }),
- /***/ 17:
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(global) {/*!
- * The buffer module from node.js, for the browser.
- *
- * @author Feross Aboukhadijeh <http://feross.org>
- * @license MIT
- */
- /* eslint-disable no-proto */
- var base64 = __webpack_require__(18)
- var ieee754 = __webpack_require__(19)
- var isArray = __webpack_require__(20)
- exports.Buffer = Buffer
- exports.SlowBuffer = SlowBuffer
- exports.INSPECT_MAX_BYTES = 50
- /**
- * If `Buffer.TYPED_ARRAY_SUPPORT`:
- * === true Use Uint8Array implementation (fastest)
- * === false Use Object implementation (most compatible, even IE6)
- *
- * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
- * Opera 11.6+, iOS 4.2+.
- *
- * Due to various browser bugs, sometimes the Object implementation will be used even
- * when the browser supports typed arrays.
- *
- * Note:
- *
- * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
- * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
- *
- * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
- *
- * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
- * incorrect length in some situations.
- * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
- * get the Object implementation, which is slower but behaves correctly.
- */
- Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
- ? global.TYPED_ARRAY_SUPPORT
- : typedArraySupport()
- /*
- * Export kMaxLength after typed array support is determined.
- */
- exports.kMaxLength = kMaxLength()
- function typedArraySupport () {
- try {
- var arr = new Uint8Array(1)
- arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
- return arr.foo() === 42 && // typed array instances can be augmented
- typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
- arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
- } catch (e) {
- return false
- }
- }
- function kMaxLength () {
- return Buffer.TYPED_ARRAY_SUPPORT
- ? 0x7fffffff
- : 0x3fffffff
- }
- function createBuffer (that, length) {
- if (kMaxLength() < length) {
- throw new RangeError('Invalid typed array length')
- }
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- // Return an augmented `Uint8Array` instance, for best performance
- that = new Uint8Array(length)
- that.__proto__ = Buffer.prototype
- } else {
- // Fallback: Return an object instance of the Buffer class
- if (that === null) {
- that = new Buffer(length)
- }
- that.length = length
- }
- return that
- }
- /**
- * The Buffer constructor returns instances of `Uint8Array` that have their
- * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
- * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
- * and the `Uint8Array` methods. Square bracket notation works as expected -- it
- * returns a single octet.
- *
- * The `Uint8Array` prototype remains unmodified.
- */
- function Buffer (arg, encodingOrOffset, length) {
- if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
- return new Buffer(arg, encodingOrOffset, length)
- }
- // Common case.
- if (typeof arg === 'number') {
- if (typeof encodingOrOffset === 'string') {
- throw new Error(
- 'If encoding is specified then the first argument must be a string'
- )
- }
- return allocUnsafe(this, arg)
- }
- return from(this, arg, encodingOrOffset, length)
- }
- Buffer.poolSize = 8192 // not used by this implementation
- // TODO: Legacy, not needed anymore. Remove in next major version.
- Buffer._augment = function (arr) {
- arr.__proto__ = Buffer.prototype
- return arr
- }
- function from (that, value, encodingOrOffset, length) {
- if (typeof value === 'number') {
- throw new TypeError('"value" argument must not be a number')
- }
- if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
- return fromArrayBuffer(that, value, encodingOrOffset, length)
- }
- if (typeof value === 'string') {
- return fromString(that, value, encodingOrOffset)
- }
- return fromObject(that, value)
- }
- /**
- * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
- * if value is a number.
- * Buffer.from(str[, encoding])
- * Buffer.from(array)
- * Buffer.from(buffer)
- * Buffer.from(arrayBuffer[, byteOffset[, length]])
- **/
- Buffer.from = function (value, encodingOrOffset, length) {
- return from(null, value, encodingOrOffset, length)
- }
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- Buffer.prototype.__proto__ = Uint8Array.prototype
- Buffer.__proto__ = Uint8Array
- if (typeof Symbol !== 'undefined' && Symbol.species &&
- Buffer[Symbol.species] === Buffer) {
- // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
- Object.defineProperty(Buffer, Symbol.species, {
- value: null,
- configurable: true
- })
- }
- }
- function assertSize (size) {
- if (typeof size !== 'number') {
- throw new TypeError('"size" argument must be a number')
- } else if (size < 0) {
- throw new RangeError('"size" argument must not be negative')
- }
- }
- function alloc (that, size, fill, encoding) {
- assertSize(size)
- if (size <= 0) {
- return createBuffer(that, size)
- }
- if (fill !== undefined) {
- // Only pay attention to encoding if it's a string. This
- // prevents accidentally sending in a number that would
- // be interpretted as a start offset.
- return typeof encoding === 'string'
- ? createBuffer(that, size).fill(fill, encoding)
- : createBuffer(that, size).fill(fill)
- }
- return createBuffer(that, size)
- }
- /**
- * Creates a new filled Buffer instance.
- * alloc(size[, fill[, encoding]])
- **/
- Buffer.alloc = function (size, fill, encoding) {
- return alloc(null, size, fill, encoding)
- }
- function allocUnsafe (that, size) {
- assertSize(size)
- that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
- if (!Buffer.TYPED_ARRAY_SUPPORT) {
- for (var i = 0; i < size; ++i) {
- that[i] = 0
- }
- }
- return that
- }
- /**
- * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
- * */
- Buffer.allocUnsafe = function (size) {
- return allocUnsafe(null, size)
- }
- /**
- * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
- */
- Buffer.allocUnsafeSlow = function (size) {
- return allocUnsafe(null, size)
- }
- function fromString (that, string, encoding) {
- if (typeof encoding !== 'string' || encoding === '') {
- encoding = 'utf8'
- }
- if (!Buffer.isEncoding(encoding)) {
- throw new TypeError('"encoding" must be a valid string encoding')
- }
- var length = byteLength(string, encoding) | 0
- that = createBuffer(that, length)
- var actual = that.write(string, encoding)
- if (actual !== length) {
- // Writing a hex string, for example, that contains invalid characters will
- // cause everything after the first invalid character to be ignored. (e.g.
- // 'abxxcd' will be treated as 'ab')
- that = that.slice(0, actual)
- }
- return that
- }
- function fromArrayLike (that, array) {
- var length = array.length < 0 ? 0 : checked(array.length) | 0
- that = createBuffer(that, length)
- for (var i = 0; i < length; i += 1) {
- that[i] = array[i] & 255
- }
- return that
- }
- function fromArrayBuffer (that, array, byteOffset, length) {
- array.byteLength // this throws if `array` is not a valid ArrayBuffer
- if (byteOffset < 0 || array.byteLength < byteOffset) {
- throw new RangeError('\'offset\' is out of bounds')
- }
- if (array.byteLength < byteOffset + (length || 0)) {
- throw new RangeError('\'length\' is out of bounds')
- }
- if (byteOffset === undefined && length === undefined) {
- array = new Uint8Array(array)
- } else if (length === undefined) {
- array = new Uint8Array(array, byteOffset)
- } else {
- array = new Uint8Array(array, byteOffset, length)
- }
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- // Return an augmented `Uint8Array` instance, for best performance
- that = array
- that.__proto__ = Buffer.prototype
- } else {
- // Fallback: Return an object instance of the Buffer class
- that = fromArrayLike(that, array)
- }
- return that
- }
- function fromObject (that, obj) {
- if (Buffer.isBuffer(obj)) {
- var len = checked(obj.length) | 0
- that = createBuffer(that, len)
- if (that.length === 0) {
- return that
- }
- obj.copy(that, 0, 0, len)
- return that
- }
- if (obj) {
- if ((typeof ArrayBuffer !== 'undefined' &&
- obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
- if (typeof obj.length !== 'number' || isnan(obj.length)) {
- return createBuffer(that, 0)
- }
- return fromArrayLike(that, obj)
- }
- if (obj.type === 'Buffer' && isArray(obj.data)) {
- return fromArrayLike(that, obj.data)
- }
- }
- throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
- }
- function checked (length) {
- // Note: cannot use `length < kMaxLength()` here because that fails when
- // length is NaN (which is otherwise coerced to zero.)
- if (length >= kMaxLength()) {
- throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
- 'size: 0x' + kMaxLength().toString(16) + ' bytes')
- }
- return length | 0
- }
- function SlowBuffer (length) {
- if (+length != length) { // eslint-disable-line eqeqeq
- length = 0
- }
- return Buffer.alloc(+length)
- }
- Buffer.isBuffer = function isBuffer (b) {
- return !!(b != null && b._isBuffer)
- }
- Buffer.compare = function compare (a, b) {
- if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
- throw new TypeError('Arguments must be Buffers')
- }
- if (a === b) return 0
- var x = a.length
- var y = b.length
- for (var i = 0, len = Math.min(x, y); i < len; ++i) {
- if (a[i] !== b[i]) {
- x = a[i]
- y = b[i]
- break
- }
- }
- if (x < y) return -1
- if (y < x) return 1
- return 0
- }
- Buffer.isEncoding = function isEncoding (encoding) {
- switch (String(encoding).toLowerCase()) {
- case 'hex':
- case 'utf8':
- case 'utf-8':
- case 'ascii':
- case 'latin1':
- case 'binary':
- case 'base64':
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return true
- default:
- return false
- }
- }
- Buffer.concat = function concat (list, length) {
- if (!isArray(list)) {
- throw new TypeError('"list" argument must be an Array of Buffers')
- }
- if (list.length === 0) {
- return Buffer.alloc(0)
- }
- var i
- if (length === undefined) {
- length = 0
- for (i = 0; i < list.length; ++i) {
- length += list[i].length
- }
- }
- var buffer = Buffer.allocUnsafe(length)
- var pos = 0
- for (i = 0; i < list.length; ++i) {
- var buf = list[i]
- if (!Buffer.isBuffer(buf)) {
- throw new TypeError('"list" argument must be an Array of Buffers')
- }
- buf.copy(buffer, pos)
- pos += buf.length
- }
- return buffer
- }
- function byteLength (string, encoding) {
- if (Buffer.isBuffer(string)) {
- return string.length
- }
- if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
- (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
- return string.byteLength
- }
- if (typeof string !== 'string') {
- string = '' + string
- }
- var len = string.length
- if (len === 0) return 0
- // Use a for loop to avoid recursion
- var loweredCase = false
- for (;;) {
- switch (encoding) {
- case 'ascii':
- case 'latin1':
- case 'binary':
- return len
- case 'utf8':
- case 'utf-8':
- case undefined:
- return utf8ToBytes(string).length
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return len * 2
- case 'hex':
- return len >>> 1
- case 'base64':
- return base64ToBytes(string).length
- default:
- if (loweredCase) return utf8ToBytes(string).length // assume utf8
- encoding = ('' + encoding).toLowerCase()
- loweredCase = true
- }
- }
- }
- Buffer.byteLength = byteLength
- function slowToString (encoding, start, end) {
- var loweredCase = false
- // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
- // property of a typed array.
- // This behaves neither like String nor Uint8Array in that we set start/end
- // to their upper/lower bounds if the value passed is out of range.
- // undefined is handled specially as per ECMA-262 6th Edition,
- // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
- if (start === undefined || start < 0) {
- start = 0
- }
- // Return early if start > this.length. Done here to prevent potential uint32
- // coercion fail below.
- if (start > this.length) {
- return ''
- }
- if (end === undefined || end > this.length) {
- end = this.length
- }
- if (end <= 0) {
- return ''
- }
- // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
- end >>>= 0
- start >>>= 0
- if (end <= start) {
- return ''
- }
- if (!encoding) encoding = 'utf8'
- while (true) {
- switch (encoding) {
- case 'hex':
- return hexSlice(this, start, end)
- case 'utf8':
- case 'utf-8':
- return utf8Slice(this, start, end)
- case 'ascii':
- return asciiSlice(this, start, end)
- case 'latin1':
- case 'binary':
- return latin1Slice(this, start, end)
- case 'base64':
- return base64Slice(this, start, end)
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return utf16leSlice(this, start, end)
- default:
- if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
- encoding = (encoding + '').toLowerCase()
- loweredCase = true
- }
- }
- }
- // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
- // Buffer instances.
- Buffer.prototype._isBuffer = true
- function swap (b, n, m) {
- var i = b[n]
- b[n] = b[m]
- b[m] = i
- }
- Buffer.prototype.swap16 = function swap16 () {
- var len = this.length
- if (len % 2 !== 0) {
- throw new RangeError('Buffer size must be a multiple of 16-bits')
- }
- for (var i = 0; i < len; i += 2) {
- swap(this, i, i + 1)
- }
- return this
- }
- Buffer.prototype.swap32 = function swap32 () {
- var len = this.length
- if (len % 4 !== 0) {
- throw new RangeError('Buffer size must be a multiple of 32-bits')
- }
- for (var i = 0; i < len; i += 4) {
- swap(this, i, i + 3)
- swap(this, i + 1, i + 2)
- }
- return this
- }
- Buffer.prototype.swap64 = function swap64 () {
- var len = this.length
- if (len % 8 !== 0) {
- throw new RangeError('Buffer size must be a multiple of 64-bits')
- }
- for (var i = 0; i < len; i += 8) {
- swap(this, i, i + 7)
- swap(this, i + 1, i + 6)
- swap(this, i + 2, i + 5)
- swap(this, i + 3, i + 4)
- }
- return this
- }
- Buffer.prototype.toString = function toString () {
- var length = this.length | 0
- if (length === 0) return ''
- if (arguments.length === 0) return utf8Slice(this, 0, length)
- return slowToString.apply(this, arguments)
- }
- Buffer.prototype.equals = function equals (b) {
- if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
- if (this === b) return true
- return Buffer.compare(this, b) === 0
- }
- Buffer.prototype.inspect = function inspect () {
- var str = ''
- var max = exports.INSPECT_MAX_BYTES
- if (this.length > 0) {
- str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
- if (this.length > max) str += ' ... '
- }
- return '<Buffer ' + str + '>'
- }
- Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
- if (!Buffer.isBuffer(target)) {
- throw new TypeError('Argument must be a Buffer')
- }
- if (start === undefined) {
- start = 0
- }
- if (end === undefined) {
- end = target ? target.length : 0
- }
- if (thisStart === undefined) {
- thisStart = 0
- }
- if (thisEnd === undefined) {
- thisEnd = this.length
- }
- if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
- throw new RangeError('out of range index')
- }
- if (thisStart >= thisEnd && start >= end) {
- return 0
- }
- if (thisStart >= thisEnd) {
- return -1
- }
- if (start >= end) {
- return 1
- }
- start >>>= 0
- end >>>= 0
- thisStart >>>= 0
- thisEnd >>>= 0
- if (this === target) return 0
- var x = thisEnd - thisStart
- var y = end - start
- var len = Math.min(x, y)
- var thisCopy = this.slice(thisStart, thisEnd)
- var targetCopy = target.slice(start, end)
- for (var i = 0; i < len; ++i) {
- if (thisCopy[i] !== targetCopy[i]) {
- x = thisCopy[i]
- y = targetCopy[i]
- break
- }
- }
- if (x < y) return -1
- if (y < x) return 1
- return 0
- }
- // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
- // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
- //
- // Arguments:
- // - buffer - a Buffer to search
- // - val - a string, Buffer, or number
- // - byteOffset - an index into `buffer`; will be clamped to an int32
- // - encoding - an optional encoding, relevant is val is a string
- // - dir - true for indexOf, false for lastIndexOf
- function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
- // Empty buffer means no match
- if (buffer.length === 0) return -1
- // Normalize byteOffset
- if (typeof byteOffset === 'string') {
- encoding = byteOffset
- byteOffset = 0
- } else if (byteOffset > 0x7fffffff) {
- byteOffset = 0x7fffffff
- } else if (byteOffset < -0x80000000) {
- byteOffset = -0x80000000
- }
- byteOffset = +byteOffset // Coerce to Number.
- if (isNaN(byteOffset)) {
- // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
- byteOffset = dir ? 0 : (buffer.length - 1)
- }
- // Normalize byteOffset: negative offsets start from the end of the buffer
- if (byteOffset < 0) byteOffset = buffer.length + byteOffset
- if (byteOffset >= buffer.length) {
- if (dir) return -1
- else byteOffset = buffer.length - 1
- } else if (byteOffset < 0) {
- if (dir) byteOffset = 0
- else return -1
- }
- // Normalize val
- if (typeof val === 'string') {
- val = Buffer.from(val, encoding)
- }
- // Finally, search either indexOf (if dir is true) or lastIndexOf
- if (Buffer.isBuffer(val)) {
- // Special case: looking for empty string/buffer always fails
- if (val.length === 0) {
- return -1
- }
- return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
- } else if (typeof val === 'number') {
- val = val & 0xFF // Search for a byte value [0-255]
- if (Buffer.TYPED_ARRAY_SUPPORT &&
- typeof Uint8Array.prototype.indexOf === 'function') {
- if (dir) {
- return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
- } else {
- return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
- }
- }
- return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
- }
- throw new TypeError('val must be string, number or Buffer')
- }
- function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
- var indexSize = 1
- var arrLength = arr.length
- var valLength = val.length
- if (encoding !== undefined) {
- encoding = String(encoding).toLowerCase()
- if (encoding === 'ucs2' || encoding === 'ucs-2' ||
- encoding === 'utf16le' || encoding === 'utf-16le') {
- if (arr.length < 2 || val.length < 2) {
- return -1
- }
- indexSize = 2
- arrLength /= 2
- valLength /= 2
- byteOffset /= 2
- }
- }
- function read (buf, i) {
- if (indexSize === 1) {
- return buf[i]
- } else {
- return buf.readUInt16BE(i * indexSize)
- }
- }
- var i
- if (dir) {
- var foundIndex = -1
- for (i = byteOffset; i < arrLength; i++) {
- if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
- if (foundIndex === -1) foundIndex = i
- if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
- } else {
- if (foundIndex !== -1) i -= i - foundIndex
- foundIndex = -1
- }
- }
- } else {
- if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
- for (i = byteOffset; i >= 0; i--) {
- var found = true
- for (var j = 0; j < valLength; j++) {
- if (read(arr, i + j) !== read(val, j)) {
- found = false
- break
- }
- }
- if (found) return i
- }
- }
- return -1
- }
- Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
- return this.indexOf(val, byteOffset, encoding) !== -1
- }
- Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
- return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
- }
- Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
- return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
- }
- function hexWrite (buf, string, offset, length) {
- offset = Number(offset) || 0
- var remaining = buf.length - offset
- if (!length) {
- length = remaining
- } else {
- length = Number(length)
- if (length > remaining) {
- length = remaining
- }
- }
- // must be an even number of digits
- var strLen = string.length
- if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
- if (length > strLen / 2) {
- length = strLen / 2
- }
- for (var i = 0; i < length; ++i) {
- var parsed = parseInt(string.substr(i * 2, 2), 16)
- if (isNaN(parsed)) return i
- buf[offset + i] = parsed
- }
- return i
- }
- function utf8Write (buf, string, offset, length) {
- return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
- }
- function asciiWrite (buf, string, offset, length) {
- return blitBuffer(asciiToBytes(string), buf, offset, length)
- }
- function latin1Write (buf, string, offset, length) {
- return asciiWrite(buf, string, offset, length)
- }
- function base64Write (buf, string, offset, length) {
- return blitBuffer(base64ToBytes(string), buf, offset, length)
- }
- function ucs2Write (buf, string, offset, length) {
- return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
- }
- Buffer.prototype.write = function write (string, offset, length, encoding) {
- // Buffer#write(string)
- if (offset === undefined) {
- encoding = 'utf8'
- length = this.length
- offset = 0
- // Buffer#write(string, encoding)
- } else if (length === undefined && typeof offset === 'string') {
- encoding = offset
- length = this.length
- offset = 0
- // Buffer#write(string, offset[, length][, encoding])
- } else if (isFinite(offset)) {
- offset = offset | 0
- if (isFinite(length)) {
- length = length | 0
- if (encoding === undefined) encoding = 'utf8'
- } else {
- encoding = length
- length = undefined
- }
- // legacy write(string, encoding, offset, length) - remove in v0.13
- } else {
- throw new Error(
- 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
- )
- }
- var remaining = this.length - offset
- if (length === undefined || length > remaining) length = remaining
- if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
- throw new RangeError('Attempt to write outside buffer bounds')
- }
- if (!encoding) encoding = 'utf8'
- var loweredCase = false
- for (;;) {
- switch (encoding) {
- case 'hex':
- return hexWrite(this, string, offset, length)
- case 'utf8':
- case 'utf-8':
- return utf8Write(this, string, offset, length)
- case 'ascii':
- return asciiWrite(this, string, offset, length)
- case 'latin1':
- case 'binary':
- return latin1Write(this, string, offset, length)
- case 'base64':
- // Warning: maxLength not taken into account in base64Write
- return base64Write(this, string, offset, length)
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return ucs2Write(this, string, offset, length)
- default:
- if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
- encoding = ('' + encoding).toLowerCase()
- loweredCase = true
- }
- }
- }
- Buffer.prototype.toJSON = function toJSON () {
- return {
- type: 'Buffer',
- data: Array.prototype.slice.call(this._arr || this, 0)
- }
- }
- function base64Slice (buf, start, end) {
- if (start === 0 && end === buf.length) {
- return base64.fromByteArray(buf)
- } else {
- return base64.fromByteArray(buf.slice(start, end))
- }
- }
- function utf8Slice (buf, start, end) {
- end = Math.min(buf.length, end)
- var res = []
- var i = start
- while (i < end) {
- var firstByte = buf[i]
- var codePoint = null
- var bytesPerSequence = (firstByte > 0xEF) ? 4
- : (firstByte > 0xDF) ? 3
- : (firstByte > 0xBF) ? 2
- : 1
- if (i + bytesPerSequence <= end) {
- var secondByte, thirdByte, fourthByte, tempCodePoint
- switch (bytesPerSequence) {
- case 1:
- if (firstByte < 0x80) {
- codePoint = firstByte
- }
- break
- case 2:
- secondByte = buf[i + 1]
- if ((secondByte & 0xC0) === 0x80) {
- tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
- if (tempCodePoint > 0x7F) {
- codePoint = tempCodePoint
- }
- }
- break
- case 3:
- secondByte = buf[i + 1]
- thirdByte = buf[i + 2]
- if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
- tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
- if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
- codePoint = tempCodePoint
- }
- }
- break
- case 4:
- secondByte = buf[i + 1]
- thirdByte = buf[i + 2]
- fourthByte = buf[i + 3]
- if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
- tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
- if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
- codePoint = tempCodePoint
- }
- }
- }
- }
- if (codePoint === null) {
- // we did not generate a valid codePoint so insert a
- // replacement char (U+FFFD) and advance only 1 byte
- codePoint = 0xFFFD
- bytesPerSequence = 1
- } else if (codePoint > 0xFFFF) {
- // encode to utf16 (surrogate pair dance)
- codePoint -= 0x10000
- res.push(codePoint >>> 10 & 0x3FF | 0xD800)
- codePoint = 0xDC00 | codePoint & 0x3FF
- }
- res.push(codePoint)
- i += bytesPerSequence
- }
- return decodeCodePointsArray(res)
- }
- // Based on http://stackoverflow.com/a/22747272/680742, the browser with
- // the lowest limit is Chrome, with 0x10000 args.
- // We go 1 magnitude less, for safety
- var MAX_ARGUMENTS_LENGTH = 0x1000
- function decodeCodePointsArray (codePoints) {
- var len = codePoints.length
- if (len <= MAX_ARGUMENTS_LENGTH) {
- return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
- }
- // Decode in chunks to avoid "call stack size exceeded".
- var res = ''
- var i = 0
- while (i < len) {
- res += String.fromCharCode.apply(
- String,
- codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
- )
- }
- return res
- }
- function asciiSlice (buf, start, end) {
- var ret = ''
- end = Math.min(buf.length, end)
- for (var i = start; i < end; ++i) {
- ret += String.fromCharCode(buf[i] & 0x7F)
- }
- return ret
- }
- function latin1Slice (buf, start, end) {
- var ret = ''
- end = Math.min(buf.length, end)
- for (var i = start; i < end; ++i) {
- ret += String.fromCharCode(buf[i])
- }
- return ret
- }
- function hexSlice (buf, start, end) {
- var len = buf.length
- if (!start || start < 0) start = 0
- if (!end || end < 0 || end > len) end = len
- var out = ''
- for (var i = start; i < end; ++i) {
- out += toHex(buf[i])
- }
- return out
- }
- function utf16leSlice (buf, start, end) {
- var bytes = buf.slice(start, end)
- var res = ''
- for (var i = 0; i < bytes.length; i += 2) {
- res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
- }
- return res
- }
- Buffer.prototype.slice = function slice (start, end) {
- var len = this.length
- start = ~~start
- end = end === undefined ? len : ~~end
- if (start < 0) {
- start += len
- if (start < 0) start = 0
- } else if (start > len) {
- start = len
- }
- if (end < 0) {
- end += len
- if (end < 0) end = 0
- } else if (end > len) {
- end = len
- }
- if (end < start) end = start
- var newBuf
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- newBuf = this.subarray(start, end)
- newBuf.__proto__ = Buffer.prototype
- } else {
- var sliceLen = end - start
- newBuf = new Buffer(sliceLen, undefined)
- for (var i = 0; i < sliceLen; ++i) {
- newBuf[i] = this[i + start]
- }
- }
- return newBuf
- }
- /*
- * Need to make sure that buffer isn't trying to write out of bounds.
- */
- function checkOffset (offset, ext, length) {
- if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
- if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
- }
- Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
- offset = offset | 0
- byteLength = byteLength | 0
- if (!noAssert) checkOffset(offset, byteLength, this.length)
- var val = this[offset]
- var mul = 1
- var i = 0
- while (++i < byteLength && (mul *= 0x100)) {
- val += this[offset + i] * mul
- }
- return val
- }
- Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
- offset = offset | 0
- byteLength = byteLength | 0
- if (!noAssert) {
- checkOffset(offset, byteLength, this.length)
- }
- var val = this[offset + --byteLength]
- var mul = 1
- while (byteLength > 0 && (mul *= 0x100)) {
- val += this[offset + --byteLength] * mul
- }
- return val
- }
- Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 1, this.length)
- return this[offset]
- }
- Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 2, this.length)
- return this[offset] | (this[offset + 1] << 8)
- }
- Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 2, this.length)
- return (this[offset] << 8) | this[offset + 1]
- }
- Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 4, this.length)
- return ((this[offset]) |
- (this[offset + 1] << 8) |
- (this[offset + 2] << 16)) +
- (this[offset + 3] * 0x1000000)
- }
- Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 4, this.length)
- return (this[offset] * 0x1000000) +
- ((this[offset + 1] << 16) |
- (this[offset + 2] << 8) |
- this[offset + 3])
- }
- Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
- offset = offset | 0
- byteLength = byteLength | 0
- if (!noAssert) checkOffset(offset, byteLength, this.length)
- var val = this[offset]
- var mul = 1
- var i = 0
- while (++i < byteLength && (mul *= 0x100)) {
- val += this[offset + i] * mul
- }
- mul *= 0x80
- if (val >= mul) val -= Math.pow(2, 8 * byteLength)
- return val
- }
- Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
- offset = offset | 0
- byteLength = byteLength | 0
- if (!noAssert) checkOffset(offset, byteLength, this.length)
- var i = byteLength
- var mul = 1
- var val = this[offset + --i]
- while (i > 0 && (mul *= 0x100)) {
- val += this[offset + --i] * mul
- }
- mul *= 0x80
- if (val >= mul) val -= Math.pow(2, 8 * byteLength)
- return val
- }
- Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 1, this.length)
- if (!(this[offset] & 0x80)) return (this[offset])
- return ((0xff - this[offset] + 1) * -1)
- }
- Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 2, this.length)
- var val = this[offset] | (this[offset + 1] << 8)
- return (val & 0x8000) ? val | 0xFFFF0000 : val
- }
- Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 2, this.length)
- var val = this[offset + 1] | (this[offset] << 8)
- return (val & 0x8000) ? val | 0xFFFF0000 : val
- }
- Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 4, this.length)
- return (this[offset]) |
- (this[offset + 1] << 8) |
- (this[offset + 2] << 16) |
- (this[offset + 3] << 24)
- }
- Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 4, this.length)
- return (this[offset] << 24) |
- (this[offset + 1] << 16) |
- (this[offset + 2] << 8) |
- (this[offset + 3])
- }
- Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 4, this.length)
- return ieee754.read(this, offset, true, 23, 4)
- }
- Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 4, this.length)
- return ieee754.read(this, offset, false, 23, 4)
- }
- Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 8, this.length)
- return ieee754.read(this, offset, true, 52, 8)
- }
- Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 8, this.length)
- return ieee754.read(this, offset, false, 52, 8)
- }
- function checkInt (buf, value, offset, ext, max, min) {
- if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
- if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
- if (offset + ext > buf.length) throw new RangeError('Index out of range')
- }
- Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset | 0
- byteLength = byteLength | 0
- if (!noAssert) {
- var maxBytes = Math.pow(2, 8 * byteLength) - 1
- checkInt(this, value, offset, byteLength, maxBytes, 0)
- }
- var mul = 1
- var i = 0
- this[offset] = value & 0xFF
- while (++i < byteLength && (mul *= 0x100)) {
- this[offset + i] = (value / mul) & 0xFF
- }
- return offset + byteLength
- }
- Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset | 0
- byteLength = byteLength | 0
- if (!noAssert) {
- var maxBytes = Math.pow(2, 8 * byteLength) - 1
- checkInt(this, value, offset, byteLength, maxBytes, 0)
- }
- var i = byteLength - 1
- var mul = 1
- this[offset + i] = value & 0xFF
- while (--i >= 0 && (mul *= 0x100)) {
- this[offset + i] = (value / mul) & 0xFF
- }
- return offset + byteLength
- }
- Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
- if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
- this[offset] = (value & 0xff)
- return offset + 1
- }
- function objectWriteUInt16 (buf, value, offset, littleEndian) {
- if (value < 0) value = 0xffff + value + 1
- for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
- buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
- (littleEndian ? i : 1 - i) * 8
- }
- }
- Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value & 0xff)
- this[offset + 1] = (value >>> 8)
- } else {
- objectWriteUInt16(this, value, offset, true)
- }
- return offset + 2
- }
- Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value >>> 8)
- this[offset + 1] = (value & 0xff)
- } else {
- objectWriteUInt16(this, value, offset, false)
- }
- return offset + 2
- }
- function objectWriteUInt32 (buf, value, offset, littleEndian) {
- if (value < 0) value = 0xffffffff + value + 1
- for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
- buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
- }
- }
- Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset + 3] = (value >>> 24)
- this[offset + 2] = (value >>> 16)
- this[offset + 1] = (value >>> 8)
- this[offset] = (value & 0xff)
- } else {
- objectWriteUInt32(this, value, offset, true)
- }
- return offset + 4
- }
- Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value >>> 24)
- this[offset + 1] = (value >>> 16)
- this[offset + 2] = (value >>> 8)
- this[offset + 3] = (value & 0xff)
- } else {
- objectWriteUInt32(this, value, offset, false)
- }
- return offset + 4
- }
- Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) {
- var limit = Math.pow(2, 8 * byteLength - 1)
- checkInt(this, value, offset, byteLength, limit - 1, -limit)
- }
- var i = 0
- var mul = 1
- var sub = 0
- this[offset] = value & 0xFF
- while (++i < byteLength && (mul *= 0x100)) {
- if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
- sub = 1
- }
- this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
- }
- return offset + byteLength
- }
- Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) {
- var limit = Math.pow(2, 8 * byteLength - 1)
- checkInt(this, value, offset, byteLength, limit - 1, -limit)
- }
- var i = byteLength - 1
- var mul = 1
- var sub = 0
- this[offset + i] = value & 0xFF
- while (--i >= 0 && (mul *= 0x100)) {
- if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
- sub = 1
- }
- this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
- }
- return offset + byteLength
- }
- Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
- if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
- if (value < 0) value = 0xff + value + 1
- this[offset] = (value & 0xff)
- return offset + 1
- }
- Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value & 0xff)
- this[offset + 1] = (value >>> 8)
- } else {
- objectWriteUInt16(this, value, offset, true)
- }
- return offset + 2
- }
- Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value >>> 8)
- this[offset + 1] = (value & 0xff)
- } else {
- objectWriteUInt16(this, value, offset, false)
- }
- return offset + 2
- }
- Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value & 0xff)
- this[offset + 1] = (value >>> 8)
- this[offset + 2] = (value >>> 16)
- this[offset + 3] = (value >>> 24)
- } else {
- objectWriteUInt32(this, value, offset, true)
- }
- return offset + 4
- }
- Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
- if (value < 0) value = 0xffffffff + value + 1
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value >>> 24)
- this[offset + 1] = (value >>> 16)
- this[offset + 2] = (value >>> 8)
- this[offset + 3] = (value & 0xff)
- } else {
- objectWriteUInt32(this, value, offset, false)
- }
- return offset + 4
- }
- function checkIEEE754 (buf, value, offset, ext, max, min) {
- if (offset + ext > buf.length) throw new RangeError('Index out of range')
- if (offset < 0) throw new RangeError('Index out of range')
- }
- function writeFloat (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
- }
- ieee754.write(buf, value, offset, littleEndian, 23, 4)
- return offset + 4
- }
- Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
- return writeFloat(this, value, offset, true, noAssert)
- }
- Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
- return writeFloat(this, value, offset, false, noAssert)
- }
- function writeDouble (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
- }
- ieee754.write(buf, value, offset, littleEndian, 52, 8)
- return offset + 8
- }
- Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
- return writeDouble(this, value, offset, true, noAssert)
- }
- Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
- return writeDouble(this, value, offset, false, noAssert)
- }
- // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
- Buffer.prototype.copy = function copy (target, targetStart, start, end) {
- if (!start) start = 0
- if (!end && end !== 0) end = this.length
- if (targetStart >= target.length) targetStart = target.length
- if (!targetStart) targetStart = 0
- if (end > 0 && end < start) end = start
- // Copy 0 bytes; we're done
- if (end === start) return 0
- if (target.length === 0 || this.length === 0) return 0
- // Fatal error conditions
- if (targetStart < 0) {
- throw new RangeError('targetStart out of bounds')
- }
- if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
- if (end < 0) throw new RangeError('sourceEnd out of bounds')
- // Are we oob?
- if (end > this.length) end = this.length
- if (target.length - targetStart < end - start) {
- end = target.length - targetStart + start
- }
- var len = end - start
- var i
- if (this === target && start < targetStart && targetStart < end) {
- // descending copy from end
- for (i = len - 1; i >= 0; --i) {
- target[i + targetStart] = this[i + start]
- }
- } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
- // ascending copy from start
- for (i = 0; i < len; ++i) {
- target[i + targetStart] = this[i + start]
- }
- } else {
- Uint8Array.prototype.set.call(
- target,
- this.subarray(start, start + len),
- targetStart
- )
- }
- return len
- }
- // Usage:
- // buffer.fill(number[, offset[, end]])
- // buffer.fill(buffer[, offset[, end]])
- // buffer.fill(string[, offset[, end]][, encoding])
- Buffer.prototype.fill = function fill (val, start, end, encoding) {
- // Handle string cases:
- if (typeof val === 'string') {
- if (typeof start === 'string') {
- encoding = start
- start = 0
- end = this.length
- } else if (typeof end === 'string') {
- encoding = end
- end = this.length
- }
- if (val.length === 1) {
- var code = val.charCodeAt(0)
- if (code < 256) {
- val = code
- }
- }
- if (encoding !== undefined && typeof encoding !== 'string') {
- throw new TypeError('encoding must be a string')
- }
- if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
- throw new TypeError('Unknown encoding: ' + encoding)
- }
- } else if (typeof val === 'number') {
- val = val & 255
- }
- // Invalid ranges are not set to a default, so can range check early.
- if (start < 0 || this.length < start || this.length < end) {
- throw new RangeError('Out of range index')
- }
- if (end <= start) {
- return this
- }
- start = start >>> 0
- end = end === undefined ? this.length : end >>> 0
- if (!val) val = 0
- var i
- if (typeof val === 'number') {
- for (i = start; i < end; ++i) {
- this[i] = val
- }
- } else {
- var bytes = Buffer.isBuffer(val)
- ? val
- : utf8ToBytes(new Buffer(val, encoding).toString())
- var len = bytes.length
- for (i = 0; i < end - start; ++i) {
- this[i + start] = bytes[i % len]
- }
- }
- return this
- }
- // HELPER FUNCTIONS
- // ================
- var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
- function base64clean (str) {
- // Node strips out invalid characters like \n and \t from the string, base64-js does not
- str = stringtrim(str).replace(INVALID_BASE64_RE, '')
- // Node converts strings with length < 2 to ''
- if (str.length < 2) return ''
- // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
- while (str.length % 4 !== 0) {
- str = str + '='
- }
- return str
- }
- function stringtrim (str) {
- if (str.trim) return str.trim()
- return str.replace(/^\s+|\s+$/g, '')
- }
- function toHex (n) {
- if (n < 16) return '0' + n.toString(16)
- return n.toString(16)
- }
- function utf8ToBytes (string, units) {
- units = units || Infinity
- var codePoint
- var length = string.length
- var leadSurrogate = null
- var bytes = []
- for (var i = 0; i < length; ++i) {
- codePoint = string.charCodeAt(i)
- // is surrogate component
- if (codePoint > 0xD7FF && codePoint < 0xE000) {
- // last char was a lead
- if (!leadSurrogate) {
- // no lead yet
- if (codePoint > 0xDBFF) {
- // unexpected trail
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- continue
- } else if (i + 1 === length) {
- // unpaired lead
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- continue
- }
- // valid lead
- leadSurrogate = codePoint
- continue
- }
- // 2 leads in a row
- if (codePoint < 0xDC00) {
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- leadSurrogate = codePoint
- continue
- }
- // valid surrogate pair
- codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
- } else if (leadSurrogate) {
- // valid bmp char, but last char was a lead
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- }
- leadSurrogate = null
- // encode utf8
- if (codePoint < 0x80) {
- if ((units -= 1) < 0) break
- bytes.push(codePoint)
- } else if (codePoint < 0x800) {
- if ((units -= 2) < 0) break
- bytes.push(
- codePoint >> 0x6 | 0xC0,
- codePoint & 0x3F | 0x80
- )
- } else if (codePoint < 0x10000) {
- if ((units -= 3) < 0) break
- bytes.push(
- codePoint >> 0xC | 0xE0,
- codePoint >> 0x6 & 0x3F | 0x80,
- codePoint & 0x3F | 0x80
- )
- } else if (codePoint < 0x110000) {
- if ((units -= 4) < 0) break
- bytes.push(
- codePoint >> 0x12 | 0xF0,
- codePoint >> 0xC & 0x3F | 0x80,
- codePoint >> 0x6 & 0x3F | 0x80,
- codePoint & 0x3F | 0x80
- )
- } else {
- throw new Error('Invalid code point')
- }
- }
- return bytes
- }
- function asciiToBytes (str) {
- var byteArray = []
- for (var i = 0; i < str.length; ++i) {
- // Node's code seems to be doing this and not & 0x7F..
- byteArray.push(str.charCodeAt(i) & 0xFF)
- }
- return byteArray
- }
- function utf16leToBytes (str, units) {
- var c, hi, lo
- var byteArray = []
- for (var i = 0; i < str.length; ++i) {
- if ((units -= 2) < 0) break
- c = str.charCodeAt(i)
- hi = c >> 8
- lo = c % 256
- byteArray.push(lo)
- byteArray.push(hi)
- }
- return byteArray
- }
- function base64ToBytes (str) {
- return base64.toByteArray(base64clean(str))
- }
- function blitBuffer (src, dst, offset, length) {
- for (var i = 0; i < length; ++i) {
- if ((i + offset >= dst.length) || (i >= src.length)) break
- dst[i + offset] = src[i]
- }
- return i
- }
- function isnan (val) {
- return val !== val // eslint-disable-line no-self-compare
- }
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(9)))
- /***/ }),
- /***/ 18:
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- exports.byteLength = byteLength
- exports.toByteArray = toByteArray
- exports.fromByteArray = fromByteArray
- var lookup = []
- var revLookup = []
- var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
- var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
- for (var i = 0, len = code.length; i < len; ++i) {
- lookup[i] = code[i]
- revLookup[code.charCodeAt(i)] = i
- }
- // Support decoding URL-safe base64 strings, as Node.js does.
- // See: https://en.wikipedia.org/wiki/Base64#URL_applications
- revLookup['-'.charCodeAt(0)] = 62
- revLookup['_'.charCodeAt(0)] = 63
- function getLens (b64) {
- var len = b64.length
- if (len % 4 > 0) {
- throw new Error('Invalid string. Length must be a multiple of 4')
- }
- // Trim off extra bytes after placeholder bytes are found
- // See: https://github.com/beatgammit/base64-js/issues/42
- var validLen = b64.indexOf('=')
- if (validLen === -1) validLen = len
- var placeHoldersLen = validLen === len
- ? 0
- : 4 - (validLen % 4)
- return [validLen, placeHoldersLen]
- }
- // base64 is 4/3 + up to two characters of the original data
- function byteLength (b64) {
- var lens = getLens(b64)
- var validLen = lens[0]
- var placeHoldersLen = lens[1]
- return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
- }
- function _byteLength (b64, validLen, placeHoldersLen) {
- return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
- }
- function toByteArray (b64) {
- var tmp
- var lens = getLens(b64)
- var validLen = lens[0]
- var placeHoldersLen = lens[1]
- var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
- var curByte = 0
- // if there are placeholders, only get up to the last complete 4 chars
- var len = placeHoldersLen > 0
- ? validLen - 4
- : validLen
- var i
- for (i = 0; i < len; i += 4) {
- tmp =
- (revLookup[b64.charCodeAt(i)] << 18) |
- (revLookup[b64.charCodeAt(i + 1)] << 12) |
- (revLookup[b64.charCodeAt(i + 2)] << 6) |
- revLookup[b64.charCodeAt(i + 3)]
- arr[curByte++] = (tmp >> 16) & 0xFF
- arr[curByte++] = (tmp >> 8) & 0xFF
- arr[curByte++] = tmp & 0xFF
- }
- if (placeHoldersLen === 2) {
- tmp =
- (revLookup[b64.charCodeAt(i)] << 2) |
- (revLookup[b64.charCodeAt(i + 1)] >> 4)
- arr[curByte++] = tmp & 0xFF
- }
- if (placeHoldersLen === 1) {
- tmp =
- (revLookup[b64.charCodeAt(i)] << 10) |
- (revLookup[b64.charCodeAt(i + 1)] << 4) |
- (revLookup[b64.charCodeAt(i + 2)] >> 2)
- arr[curByte++] = (tmp >> 8) & 0xFF
- arr[curByte++] = tmp & 0xFF
- }
- return arr
- }
- function tripletToBase64 (num) {
- return lookup[num >> 18 & 0x3F] +
- lookup[num >> 12 & 0x3F] +
- lookup[num >> 6 & 0x3F] +
- lookup[num & 0x3F]
- }
- function encodeChunk (uint8, start, end) {
- var tmp
- var output = []
- for (var i = start; i < end; i += 3) {
- tmp =
- ((uint8[i] << 16) & 0xFF0000) +
- ((uint8[i + 1] << 8) & 0xFF00) +
- (uint8[i + 2] & 0xFF)
- output.push(tripletToBase64(tmp))
- }
- return output.join('')
- }
- function fromByteArray (uint8) {
- var tmp
- var len = uint8.length
- var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
- var parts = []
- var maxChunkLength = 16383 // must be multiple of 3
- // go through the array every three bytes, we'll deal with trailing stuff later
- for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
- parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
- }
- // pad the end with zeros, but make sure to not forget the extra bytes
- if (extraBytes === 1) {
- tmp = uint8[len - 1]
- parts.push(
- lookup[tmp >> 2] +
- lookup[(tmp << 4) & 0x3F] +
- '=='
- )
- } else if (extraBytes === 2) {
- tmp = (uint8[len - 2] << 8) + uint8[len - 1]
- parts.push(
- lookup[tmp >> 10] +
- lookup[(tmp >> 4) & 0x3F] +
- lookup[(tmp << 2) & 0x3F] +
- '='
- )
- }
- return parts.join('')
- }
- /***/ }),
- /***/ 19:
- /***/ (function(module, exports) {
- /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
- exports.read = function (buffer, offset, isLE, mLen, nBytes) {
- var e, m
- var eLen = (nBytes * 8) - mLen - 1
- var eMax = (1 << eLen) - 1
- var eBias = eMax >> 1
- var nBits = -7
- var i = isLE ? (nBytes - 1) : 0
- var d = isLE ? -1 : 1
- var s = buffer[offset + i]
- i += d
- e = s & ((1 << (-nBits)) - 1)
- s >>= (-nBits)
- nBits += eLen
- for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
- m = e & ((1 << (-nBits)) - 1)
- e >>= (-nBits)
- nBits += mLen
- for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
- if (e === 0) {
- e = 1 - eBias
- } else if (e === eMax) {
- return m ? NaN : ((s ? -1 : 1) * Infinity)
- } else {
- m = m + Math.pow(2, mLen)
- e = e - eBias
- }
- return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
- }
- exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
- var e, m, c
- var eLen = (nBytes * 8) - mLen - 1
- var eMax = (1 << eLen) - 1
- var eBias = eMax >> 1
- var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
- var i = isLE ? 0 : (nBytes - 1)
- var d = isLE ? 1 : -1
- var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
- value = Math.abs(value)
- if (isNaN(value) || value === Infinity) {
- m = isNaN(value) ? 1 : 0
- e = eMax
- } else {
- e = Math.floor(Math.log(value) / Math.LN2)
- if (value * (c = Math.pow(2, -e)) < 1) {
- e--
- c *= 2
- }
- if (e + eBias >= 1) {
- value += rt / c
- } else {
- value += rt * Math.pow(2, 1 - eBias)
- }
- if (value * c >= 2) {
- e++
- c /= 2
- }
- if (e + eBias >= eMax) {
- m = 0
- e = eMax
- } else if (e + eBias >= 1) {
- m = ((value * c) - 1) * Math.pow(2, mLen)
- e = e + eBias
- } else {
- m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
- e = 0
- }
- }
- for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
- e = (e << mLen) | m
- eLen += mLen
- for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
- buffer[offset + i - d] |= s * 128
- }
- /***/ }),
- /***/ 2:
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return isBrowser; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return target; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return isChrome; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return isFirefox; });
- /* unused harmony export isWindows */
- /* unused harmony export isMac */
- /* unused harmony export isLinux */
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return keys; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return initEnv; });
- var isBrowser = typeof navigator !== 'undefined'
- var target = isBrowser
- ? window
- : typeof global !== 'undefined'
- ? global
- : {}
- var isChrome = typeof chrome !== 'undefined' && !!chrome.devtools
- var isFirefox = isBrowser && navigator.userAgent.indexOf('Firefox') > -1
- var isWindows = isBrowser && navigator.platform.indexOf('Win') === 0
- var isMac = isBrowser && navigator.platform === 'MacIntel'
- var isLinux = isBrowser && navigator.platform.indexOf('Linux') === 0
- var keys = {
- ctrl: isMac ? '⌘' : 'Ctrl',
- shift: 'Shift',
- alt: isMac ? '⌥' : 'Alt',
- del: 'Del',
- enter: 'Enter',
- esc: 'Esc'
- }
- function initEnv (Vue) {
- if (Vue.prototype.hasOwnProperty('$isChrome')) { return }
- Object.defineProperties(Vue.prototype, {
- '$isChrome': { get: () => isChrome },
- '$isFirefox': { get: () => isFirefox },
- '$isWindows': { get: () => isWindows },
- '$isMac': { get: () => isMac },
- '$isLinux': { get: () => isLinux },
- '$keys': { get: () => keys }
- })
- if (isWindows) { document.body.classList.add('platform-windows') }
- if (isMac) { document.body.classList.add('platform-mac') }
- if (isLinux) { document.body.classList.add('platform-linux') }
- }
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(9)))
- /***/ }),
- /***/ 20:
- /***/ (function(module, exports) {
- var toString = {}.toString;
- module.exports = Array.isArray || function (arr) {
- return toString.call(arr) == '[object Array]';
- };
- /***/ }),
- /***/ 21:
- /***/ (function(module, exports) {
- // shim for using process in browser
- var process = module.exports = {};
- // cached from whatever global is present so that test runners that stub it
- // don't break things. But we need to wrap it in a try catch in case it is
- // wrapped in strict mode code which doesn't define any globals. It's inside a
- // function because try/catches deoptimize in certain engines.
- var cachedSetTimeout;
- var cachedClearTimeout;
- function defaultSetTimout() {
- throw new Error('setTimeout has not been defined');
- }
- function defaultClearTimeout () {
- throw new Error('clearTimeout has not been defined');
- }
- (function () {
- try {
- if (typeof setTimeout === 'function') {
- cachedSetTimeout = setTimeout;
- } else {
- cachedSetTimeout = defaultSetTimout;
- }
- } catch (e) {
- cachedSetTimeout = defaultSetTimout;
- }
- try {
- if (typeof clearTimeout === 'function') {
- cachedClearTimeout = clearTimeout;
- } else {
- cachedClearTimeout = defaultClearTimeout;
- }
- } catch (e) {
- cachedClearTimeout = defaultClearTimeout;
- }
- } ())
- function runTimeout(fun) {
- if (cachedSetTimeout === setTimeout) {
- //normal enviroments in sane situations
- return setTimeout(fun, 0);
- }
- // if setTimeout wasn't available but was latter defined
- if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
- cachedSetTimeout = setTimeout;
- return setTimeout(fun, 0);
- }
- try {
- // when when somebody has screwed with setTimeout but no I.E. maddness
- return cachedSetTimeout(fun, 0);
- } catch(e){
- try {
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
- return cachedSetTimeout.call(null, fun, 0);
- } catch(e){
- // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
- return cachedSetTimeout.call(this, fun, 0);
- }
- }
- }
- function runClearTimeout(marker) {
- if (cachedClearTimeout === clearTimeout) {
- //normal enviroments in sane situations
- return clearTimeout(marker);
- }
- // if clearTimeout wasn't available but was latter defined
- if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
- cachedClearTimeout = clearTimeout;
- return clearTimeout(marker);
- }
- try {
- // when when somebody has screwed with setTimeout but no I.E. maddness
- return cachedClearTimeout(marker);
- } catch (e){
- try {
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
- return cachedClearTimeout.call(null, marker);
- } catch (e){
- // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
- // Some versions of I.E. have different rules for clearTimeout vs setTimeout
- return cachedClearTimeout.call(this, marker);
- }
- }
- }
- var queue = [];
- var draining = false;
- var currentQueue;
- var queueIndex = -1;
- function cleanUpNextTick() {
- if (!draining || !currentQueue) {
- return;
- }
- draining = false;
- if (currentQueue.length) {
- queue = currentQueue.concat(queue);
- } else {
- queueIndex = -1;
- }
- if (queue.length) {
- drainQueue();
- }
- }
- function drainQueue() {
- if (draining) {
- return;
- }
- var timeout = runTimeout(cleanUpNextTick);
- draining = true;
- var len = queue.length;
- while(len) {
- currentQueue = queue;
- queue = [];
- while (++queueIndex < len) {
- if (currentQueue) {
- currentQueue[queueIndex].run();
- }
- }
- queueIndex = -1;
- len = queue.length;
- }
- currentQueue = null;
- draining = false;
- runClearTimeout(timeout);
- }
- process.nextTick = function (fun) {
- var args = new Array(arguments.length - 1);
- if (arguments.length > 1) {
- for (var i = 1; i < arguments.length; i++) {
- args[i - 1] = arguments[i];
- }
- }
- queue.push(new Item(fun, args));
- if (queue.length === 1 && !draining) {
- runTimeout(drainQueue);
- }
- };
- // v8 likes predictible objects
- function Item(fun, array) {
- this.fun = fun;
- this.array = array;
- }
- Item.prototype.run = function () {
- this.fun.apply(null, this.array);
- };
- process.title = 'browser';
- process.browser = true;
- process.env = {};
- process.argv = [];
- process.version = ''; // empty string to avoid regexp issues
- process.versions = {};
- function noop() {}
- process.on = noop;
- process.addListener = noop;
- process.once = noop;
- process.off = noop;
- process.removeListener = noop;
- process.removeAllListeners = noop;
- process.emit = noop;
- process.prependListener = noop;
- process.prependOnceListener = noop;
- process.listeners = function (name) { return [] }
- process.binding = function (name) {
- throw new Error('process.binding is not supported');
- };
- process.cwd = function () { return '/' };
- process.chdir = function (dir) {
- throw new Error('process.chdir is not supported');
- };
- process.umask = function() { return 0; };
- /***/ }),
- /***/ 22:
- /***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(process) {// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,
- // backported and transplited with Babel, with backwards-compat fixes
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- // resolves . and .. elements in a path array with directory names there
- // must be no slashes, empty elements, or device names (c:\) in the array
- // (so also no leading and trailing slashes - it does not distinguish
- // relative and absolute paths)
- function normalizeArray(parts, allowAboveRoot) {
- // if the path tries to go above the root, `up` ends up > 0
- var up = 0;
- for (var i = parts.length - 1; i >= 0; i--) {
- var last = parts[i];
- if (last === '.') {
- parts.splice(i, 1);
- } else if (last === '..') {
- parts.splice(i, 1);
- up++;
- } else if (up) {
- parts.splice(i, 1);
- up--;
- }
- }
- // if the path is allowed to go above the root, restore leading ..s
- if (allowAboveRoot) {
- for (; up--; up) {
- parts.unshift('..');
- }
- }
- return parts;
- }
- // path.resolve([from ...], to)
- // posix version
- exports.resolve = function() {
- var resolvedPath = '',
- resolvedAbsolute = false;
- for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
- var path = (i >= 0) ? arguments[i] : process.cwd();
- // Skip empty and invalid entries
- if (typeof path !== 'string') {
- throw new TypeError('Arguments to path.resolve must be strings');
- } else if (!path) {
- continue;
- }
- resolvedPath = path + '/' + resolvedPath;
- resolvedAbsolute = path.charAt(0) === '/';
- }
- // At this point the path should be resolved to a full absolute path, but
- // handle relative paths to be safe (might happen when process.cwd() fails)
- // Normalize the path
- resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
- return !!p;
- }), !resolvedAbsolute).join('/');
- return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
- };
- // path.normalize(path)
- // posix version
- exports.normalize = function(path) {
- var isAbsolute = exports.isAbsolute(path),
- trailingSlash = substr(path, -1) === '/';
- // Normalize the path
- path = normalizeArray(filter(path.split('/'), function(p) {
- return !!p;
- }), !isAbsolute).join('/');
- if (!path && !isAbsolute) {
- path = '.';
- }
- if (path && trailingSlash) {
- path += '/';
- }
- return (isAbsolute ? '/' : '') + path;
- };
- // posix version
- exports.isAbsolute = function(path) {
- return path.charAt(0) === '/';
- };
- // posix version
- exports.join = function() {
- var paths = Array.prototype.slice.call(arguments, 0);
- return exports.normalize(filter(paths, function(p, index) {
- if (typeof p !== 'string') {
- throw new TypeError('Arguments to path.join must be strings');
- }
- return p;
- }).join('/'));
- };
- // path.relative(from, to)
- // posix version
- exports.relative = function(from, to) {
- from = exports.resolve(from).substr(1);
- to = exports.resolve(to).substr(1);
- function trim(arr) {
- var start = 0;
- for (; start < arr.length; start++) {
- if (arr[start] !== '') break;
- }
- var end = arr.length - 1;
- for (; end >= 0; end--) {
- if (arr[end] !== '') break;
- }
- if (start > end) return [];
- return arr.slice(start, end - start + 1);
- }
- var fromParts = trim(from.split('/'));
- var toParts = trim(to.split('/'));
- var length = Math.min(fromParts.length, toParts.length);
- var samePartsLength = length;
- for (var i = 0; i < length; i++) {
- if (fromParts[i] !== toParts[i]) {
- samePartsLength = i;
- break;
- }
- }
- var outputParts = [];
- for (var i = samePartsLength; i < fromParts.length; i++) {
- outputParts.push('..');
- }
- outputParts = outputParts.concat(toParts.slice(samePartsLength));
- return outputParts.join('/');
- };
- exports.sep = '/';
- exports.delimiter = ':';
- exports.dirname = function (path) {
- if (typeof path !== 'string') path = path + '';
- if (path.length === 0) return '.';
- var code = path.charCodeAt(0);
- var hasRoot = code === 47 /*/*/;
- var end = -1;
- var matchedSlash = true;
- for (var i = path.length - 1; i >= 1; --i) {
- code = path.charCodeAt(i);
- if (code === 47 /*/*/) {
- if (!matchedSlash) {
- end = i;
- break;
- }
- } else {
- // We saw the first non-path separator
- matchedSlash = false;
- }
- }
- if (end === -1) return hasRoot ? '/' : '.';
- if (hasRoot && end === 1) {
- // return '//';
- // Backwards-compat fix:
- return '/';
- }
- return path.slice(0, end);
- };
- function basename(path) {
- if (typeof path !== 'string') path = path + '';
- var start = 0;
- var end = -1;
- var matchedSlash = true;
- var i;
- for (i = path.length - 1; i >= 0; --i) {
- if (path.charCodeAt(i) === 47 /*/*/) {
- // If we reached a path separator that was not part of a set of path
- // separators at the end of the string, stop now
- if (!matchedSlash) {
- start = i + 1;
- break;
- }
- } else if (end === -1) {
- // We saw the first non-path separator, mark this as the end of our
- // path component
- matchedSlash = false;
- end = i + 1;
- }
- }
- if (end === -1) return '';
- return path.slice(start, end);
- }
- // Uses a mixed approach for backwards-compatibility, as ext behavior changed
- // in new Node.js versions, so only basename() above is backported here
- exports.basename = function (path, ext) {
- var f = basename(path);
- if (ext && f.substr(-1 * ext.length) === ext) {
- f = f.substr(0, f.length - ext.length);
- }
- return f;
- };
- exports.extname = function (path) {
- if (typeof path !== 'string') path = path + '';
- var startDot = -1;
- var startPart = 0;
- var end = -1;
- var matchedSlash = true;
- // Track the state of characters (if any) we see before our first dot and
- // after any path separator we find
- var preDotState = 0;
- for (var i = path.length - 1; i >= 0; --i) {
- var code = path.charCodeAt(i);
- if (code === 47 /*/*/) {
- // If we reached a path separator that was not part of a set of path
- // separators at the end of the string, stop now
- if (!matchedSlash) {
- startPart = i + 1;
- break;
- }
- continue;
- }
- if (end === -1) {
- // We saw the first non-path separator, mark this as the end of our
- // extension
- matchedSlash = false;
- end = i + 1;
- }
- if (code === 46 /*.*/) {
- // If this is our first dot, mark it as the start of our extension
- if (startDot === -1)
- startDot = i;
- else if (preDotState !== 1)
- preDotState = 1;
- } else if (startDot !== -1) {
- // We saw a non-dot and non-path separator before our dot, so we should
- // have a good chance at having a non-empty extension
- preDotState = -1;
- }
- }
- if (startDot === -1 || end === -1 ||
- // We saw a non-dot character immediately before the dot
- preDotState === 0 ||
- // The (right-most) trimmed path component is exactly '..'
- preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
- return '';
- }
- return path.slice(startDot, end);
- };
- function filter (xs, f) {
- if (xs.filter) return xs.filter(f);
- var res = [];
- for (var i = 0; i < xs.length; i++) {
- if (f(xs[i], i, xs)) res.push(xs[i]);
- }
- return res;
- }
- // String.prototype.substr - negative index don't work in IE8
- var substr = 'ab'.substr(-1) === 'b'
- ? function (str, start, len) { return str.substr(start, len) }
- : function (str, start, len) {
- if (start < 0) start = str.length + start;
- return str.substr(start, len);
- }
- ;
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(21)))
- /***/ }),
- /***/ 23:
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Bridge; });
- /* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(24);
- /* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);
- var BATCH_DURATION = 100
- class Bridge extends events__WEBPACK_IMPORTED_MODULE_0__["EventEmitter"] {
- constructor (wall) {
- super()
- this.setMaxListeners(Infinity)
- this.wall = wall
- wall.listen(messages => {
- if (Array.isArray(messages)) {
- messages.forEach(message => this._emit(message))
- } else {
- this._emit(messages)
- }
- })
- this._batchingQueue = []
- this._sendingQueue = []
- this._receivingQueue = []
- this._sending = false
- this._time = null
- }
- /**
- * Send an event.
- *
- * @param {String} event
- * @param {*} payload
- */
- send (event, payload) {
- if (Array.isArray(payload)) {
- var lastIndex = payload.length - 1
- payload.forEach((chunk, index) => {
- this._send({
- event,
- _chunk: chunk,
- last: index === lastIndex
- })
- })
- this._flush()
- } else if (this._time === null) {
- this._send([{ event, payload }])
- this._time = Date.now()
- } else {
- this._batchingQueue.push({
- event,
- payload
- })
- var now = Date.now()
- if (now - this._time > BATCH_DURATION) {
- this._flush()
- } else {
- this._timer = setTimeout(() => this._flush(), BATCH_DURATION)
- }
- }
- }
- /**
- * Log a message to the devtools background page.
- *
- * @param {String} message
- */
- log (message) {
- this.send('log', message)
- }
- _flush () {
- if (this._batchingQueue.length) { this._send(this._batchingQueue) }
- clearTimeout(this._timer)
- this._batchingQueue = []
- this._time = null
- }
- _emit (message) {
- if (typeof message === 'string') {
- this.emit(message)
- } else if (message._chunk) {
- this._receivingQueue.push(message._chunk)
- if (message.last) {
- this.emit(message.event, this._receivingQueue)
- this._receivingQueue = []
- }
- } else {
- this.emit(message.event, message.payload)
- }
- }
- _send (messages) {
- this._sendingQueue.push(messages)
- this._nextSend()
- }
- _nextSend () {
- if (!this._sendingQueue.length || this._sending) { return }
- this._sending = true
- var messages = this._sendingQueue.shift()
- try {
- this.wall.send(messages)
- } catch (err) {
- if (err.message === 'Message length exceeded maximum allowed length.') {
- this._sendingQueue.splice(0, 0, messages.map(message => [message]))
- }
- }
- this._sending = false
- requestAnimationFrame(() => this._nextSend())
- }
- }
- /***/ }),
- /***/ 24:
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- var R = typeof Reflect === 'object' ? Reflect : null
- var ReflectApply = R && typeof R.apply === 'function'
- ? R.apply
- : function ReflectApply(target, receiver, args) {
- return Function.prototype.apply.call(target, receiver, args);
- }
- var ReflectOwnKeys
- if (R && typeof R.ownKeys === 'function') {
- ReflectOwnKeys = R.ownKeys
- } else if (Object.getOwnPropertySymbols) {
- ReflectOwnKeys = function ReflectOwnKeys(target) {
- return Object.getOwnPropertyNames(target)
- .concat(Object.getOwnPropertySymbols(target));
- };
- } else {
- ReflectOwnKeys = function ReflectOwnKeys(target) {
- return Object.getOwnPropertyNames(target);
- };
- }
- function ProcessEmitWarning(warning) {
- if (console && console.warn) console.warn(warning);
- }
- var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
- return value !== value;
- }
- function EventEmitter() {
- EventEmitter.init.call(this);
- }
- module.exports = EventEmitter;
- module.exports.once = once;
- // Backwards-compat with node 0.10.x
- EventEmitter.EventEmitter = EventEmitter;
- EventEmitter.prototype._events = undefined;
- EventEmitter.prototype._eventsCount = 0;
- EventEmitter.prototype._maxListeners = undefined;
- // By default EventEmitters will print a warning if more than 10 listeners are
- // added to it. This is a useful default which helps finding memory leaks.
- var defaultMaxListeners = 10;
- function checkListener(listener) {
- if (typeof listener !== 'function') {
- throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
- }
- }
- Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
- enumerable: true,
- get: function() {
- return defaultMaxListeners;
- },
- set: function(arg) {
- if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
- throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.');
- }
- defaultMaxListeners = arg;
- }
- });
- EventEmitter.init = function() {
- if (this._events === undefined ||
- this._events === Object.getPrototypeOf(this)._events) {
- this._events = Object.create(null);
- this._eventsCount = 0;
- }
- this._maxListeners = this._maxListeners || undefined;
- };
- // Obviously not all Emitters should be limited to 10. This function allows
- // that to be increased. Set to zero for unlimited.
- EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
- if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
- throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.');
- }
- this._maxListeners = n;
- return this;
- };
- function _getMaxListeners(that) {
- if (that._maxListeners === undefined)
- return EventEmitter.defaultMaxListeners;
- return that._maxListeners;
- }
- EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
- return _getMaxListeners(this);
- };
- EventEmitter.prototype.emit = function emit(type) {
- var args = [];
- for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);
- var doError = (type === 'error');
- var events = this._events;
- if (events !== undefined)
- doError = (doError && events.error === undefined);
- else if (!doError)
- return false;
- // If there is no 'error' event listener then throw.
- if (doError) {
- var er;
- if (args.length > 0)
- er = args[0];
- if (er instanceof Error) {
- // Note: The comments on the `throw` lines are intentional, they show
- // up in Node's output if this results in an unhandled exception.
- throw er; // Unhandled 'error' event
- }
- // At least give some kind of context to the user
- var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));
- err.context = er;
- throw err; // Unhandled 'error' event
- }
- var handler = events[type];
- if (handler === undefined)
- return false;
- if (typeof handler === 'function') {
- ReflectApply(handler, this, args);
- } else {
- var len = handler.length;
- var listeners = arrayClone(handler, len);
- for (var i = 0; i < len; ++i)
- ReflectApply(listeners[i], this, args);
- }
- return true;
- };
- function _addListener(target, type, listener, prepend) {
- var m;
- var events;
- var existing;
- checkListener(listener);
- events = target._events;
- if (events === undefined) {
- events = target._events = Object.create(null);
- target._eventsCount = 0;
- } else {
- // To avoid recursion in the case that type === "newListener"! Before
- // adding it to the listeners, first emit "newListener".
- if (events.newListener !== undefined) {
- target.emit('newListener', type,
- listener.listener ? listener.listener : listener);
- // Re-assign `events` because a newListener handler could have caused the
- // this._events to be assigned to a new object
- events = target._events;
- }
- existing = events[type];
- }
- if (existing === undefined) {
- // Optimize the case of one listener. Don't need the extra array object.
- existing = events[type] = listener;
- ++target._eventsCount;
- } else {
- if (typeof existing === 'function') {
- // Adding the second element, need to change to array.
- existing = events[type] =
- prepend ? [listener, existing] : [existing, listener];
- // If we've already got an array, just append.
- } else if (prepend) {
- existing.unshift(listener);
- } else {
- existing.push(listener);
- }
- // Check for listener leak
- m = _getMaxListeners(target);
- if (m > 0 && existing.length > m && !existing.warned) {
- existing.warned = true;
- // No error code for this since it is a Warning
- // eslint-disable-next-line no-restricted-syntax
- var w = new Error('Possible EventEmitter memory leak detected. ' +
- existing.length + ' ' + String(type) + ' listeners ' +
- 'added. Use emitter.setMaxListeners() to ' +
- 'increase limit');
- w.name = 'MaxListenersExceededWarning';
- w.emitter = target;
- w.type = type;
- w.count = existing.length;
- ProcessEmitWarning(w);
- }
- }
- return target;
- }
- EventEmitter.prototype.addListener = function addListener(type, listener) {
- return _addListener(this, type, listener, false);
- };
- EventEmitter.prototype.on = EventEmitter.prototype.addListener;
- EventEmitter.prototype.prependListener =
- function prependListener(type, listener) {
- return _addListener(this, type, listener, true);
- };
- function onceWrapper() {
- if (!this.fired) {
- this.target.removeListener(this.type, this.wrapFn);
- this.fired = true;
- if (arguments.length === 0)
- return this.listener.call(this.target);
- return this.listener.apply(this.target, arguments);
- }
- }
- function _onceWrap(target, type, listener) {
- var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };
- var wrapped = onceWrapper.bind(state);
- wrapped.listener = listener;
- state.wrapFn = wrapped;
- return wrapped;
- }
- EventEmitter.prototype.once = function once(type, listener) {
- checkListener(listener);
- this.on(type, _onceWrap(this, type, listener));
- return this;
- };
- EventEmitter.prototype.prependOnceListener =
- function prependOnceListener(type, listener) {
- checkListener(listener);
- this.prependListener(type, _onceWrap(this, type, listener));
- return this;
- };
- // Emits a 'removeListener' event if and only if the listener was removed.
- EventEmitter.prototype.removeListener =
- function removeListener(type, listener) {
- var list, events, position, i, originalListener;
- checkListener(listener);
- events = this._events;
- if (events === undefined)
- return this;
- list = events[type];
- if (list === undefined)
- return this;
- if (list === listener || list.listener === listener) {
- if (--this._eventsCount === 0)
- this._events = Object.create(null);
- else {
- delete events[type];
- if (events.removeListener)
- this.emit('removeListener', type, list.listener || listener);
- }
- } else if (typeof list !== 'function') {
- position = -1;
- for (i = list.length - 1; i >= 0; i--) {
- if (list[i] === listener || list[i].listener === listener) {
- originalListener = list[i].listener;
- position = i;
- break;
- }
- }
- if (position < 0)
- return this;
- if (position === 0)
- list.shift();
- else {
- spliceOne(list, position);
- }
- if (list.length === 1)
- events[type] = list[0];
- if (events.removeListener !== undefined)
- this.emit('removeListener', type, originalListener || listener);
- }
- return this;
- };
- EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
- EventEmitter.prototype.removeAllListeners =
- function removeAllListeners(type) {
- var listeners, events, i;
- events = this._events;
- if (events === undefined)
- return this;
- // not listening for removeListener, no need to emit
- if (events.removeListener === undefined) {
- if (arguments.length === 0) {
- this._events = Object.create(null);
- this._eventsCount = 0;
- } else if (events[type] !== undefined) {
- if (--this._eventsCount === 0)
- this._events = Object.create(null);
- else
- delete events[type];
- }
- return this;
- }
- // emit removeListener for all listeners on all events
- if (arguments.length === 0) {
- var keys = Object.keys(events);
- var key;
- for (i = 0; i < keys.length; ++i) {
- key = keys[i];
- if (key === 'removeListener') continue;
- this.removeAllListeners(key);
- }
- this.removeAllListeners('removeListener');
- this._events = Object.create(null);
- this._eventsCount = 0;
- return this;
- }
- listeners = events[type];
- if (typeof listeners === 'function') {
- this.removeListener(type, listeners);
- } else if (listeners !== undefined) {
- // LIFO order
- for (i = listeners.length - 1; i >= 0; i--) {
- this.removeListener(type, listeners[i]);
- }
- }
- return this;
- };
- function _listeners(target, type, unwrap) {
- var events = target._events;
- if (events === undefined)
- return [];
- var evlistener = events[type];
- if (evlistener === undefined)
- return [];
- if (typeof evlistener === 'function')
- return unwrap ? [evlistener.listener || evlistener] : [evlistener];
- return unwrap ?
- unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
- }
- EventEmitter.prototype.listeners = function listeners(type) {
- return _listeners(this, type, true);
- };
- EventEmitter.prototype.rawListeners = function rawListeners(type) {
- return _listeners(this, type, false);
- };
- EventEmitter.listenerCount = function(emitter, type) {
- if (typeof emitter.listenerCount === 'function') {
- return emitter.listenerCount(type);
- } else {
- return listenerCount.call(emitter, type);
- }
- };
- EventEmitter.prototype.listenerCount = listenerCount;
- function listenerCount(type) {
- var events = this._events;
- if (events !== undefined) {
- var evlistener = events[type];
- if (typeof evlistener === 'function') {
- return 1;
- } else if (evlistener !== undefined) {
- return evlistener.length;
- }
- }
- return 0;
- }
- EventEmitter.prototype.eventNames = function eventNames() {
- return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
- };
- function arrayClone(arr, n) {
- var copy = new Array(n);
- for (var i = 0; i < n; ++i)
- copy[i] = arr[i];
- return copy;
- }
- function spliceOne(list, index) {
- for (; index + 1 < list.length; index++)
- list[index] = list[index + 1];
- list.pop();
- }
- function unwrapListeners(arr) {
- var ret = new Array(arr.length);
- for (var i = 0; i < ret.length; ++i) {
- ret[i] = arr[i].listener || arr[i];
- }
- return ret;
- }
- function once(emitter, name) {
- return new Promise(function (resolve, reject) {
- function errorListener(err) {
- emitter.removeListener(name, resolver);
- reject(err);
- }
- function resolver() {
- if (typeof emitter.removeListener === 'function') {
- emitter.removeListener('error', errorListener);
- }
- resolve([].slice.call(arguments));
- };
- eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });
- if (name !== 'error') {
- addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });
- }
- });
- }
- function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
- if (typeof emitter.on === 'function') {
- eventTargetAgnosticAddListener(emitter, 'error', handler, flags);
- }
- }
- function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
- if (typeof emitter.on === 'function') {
- if (flags.once) {
- emitter.once(name, listener);
- } else {
- emitter.on(name, listener);
- }
- } else if (typeof emitter.addEventListener === 'function') {
- // EventTarget does not have `error` event semantics like Node
- // EventEmitters, we do not listen for `error` events here.
- emitter.addEventListener(name, function wrapListener(arg) {
- // IE does not have builtin `{ once: true }` support so we
- // have to do it manually.
- if (flags.once) {
- emitter.removeEventListener(name, wrapListener);
- }
- listener(arg);
- });
- } else {
- throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter);
- }
- }
- /***/ }),
- /***/ 35:
- /***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== "undefined" && global) ||
- (typeof self !== "undefined" && self) ||
- window;
- var apply = Function.prototype.apply;
- // DOM APIs, for completeness
- exports.setTimeout = function() {
- return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);
- };
- exports.setInterval = function() {
- return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);
- };
- exports.clearTimeout =
- exports.clearInterval = function(timeout) {
- if (timeout) {
- timeout.close();
- }
- };
- function Timeout(id, clearFn) {
- this._id = id;
- this._clearFn = clearFn;
- }
- Timeout.prototype.unref = Timeout.prototype.ref = function() {};
- Timeout.prototype.close = function() {
- this._clearFn.call(scope, this._id);
- };
- // Does not start the time, just sets up the members needed.
- exports.enroll = function(item, msecs) {
- clearTimeout(item._idleTimeoutId);
- item._idleTimeout = msecs;
- };
- exports.unenroll = function(item) {
- clearTimeout(item._idleTimeoutId);
- item._idleTimeout = -1;
- };
- exports._unrefActive = exports.active = function(item) {
- clearTimeout(item._idleTimeoutId);
- var msecs = item._idleTimeout;
- if (msecs >= 0) {
- item._idleTimeoutId = setTimeout(function onTimeout() {
- if (item._onTimeout)
- item._onTimeout();
- }, msecs);
- }
- };
- // setimmediate attaches itself to the global object
- __webpack_require__(36);
- // On some exotic environments, it's not clear which object `setimmediate` was
- // able to install onto. Search each possibility in the same order as the
- // `setimmediate` library.
- exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) ||
- (typeof global !== "undefined" && global.setImmediate) ||
- (this && this.setImmediate);
- exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) ||
- (typeof global !== "undefined" && global.clearImmediate) ||
- (this && this.clearImmediate);
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(9)))
- /***/ }),
- /***/ 36:
- /***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {
- "use strict";
- if (global.setImmediate) {
- return;
- }
- var nextHandle = 1; // Spec says greater than zero
- var tasksByHandle = {};
- var currentlyRunningATask = false;
- var doc = global.document;
- var registerImmediate;
- function setImmediate(callback) {
- // Callback can either be a function or a string
- if (typeof callback !== "function") {
- callback = new Function("" + callback);
- }
- // Copy function arguments
- var args = new Array(arguments.length - 1);
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i + 1];
- }
- // Store and register the task
- var task = { callback: callback, args: args };
- tasksByHandle[nextHandle] = task;
- registerImmediate(nextHandle);
- return nextHandle++;
- }
- function clearImmediate(handle) {
- delete tasksByHandle[handle];
- }
- function run(task) {
- var callback = task.callback;
- var args = task.args;
- switch (args.length) {
- case 0:
- callback();
- break;
- case 1:
- callback(args[0]);
- break;
- case 2:
- callback(args[0], args[1]);
- break;
- case 3:
- callback(args[0], args[1], args[2]);
- break;
- default:
- callback.apply(undefined, args);
- break;
- }
- }
- function runIfPresent(handle) {
- // From the spec: "Wait until any invocations of this algorithm started before this one have completed."
- // So if we're currently running a task, we'll need to delay this invocation.
- if (currentlyRunningATask) {
- // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
- // "too much recursion" error.
- setTimeout(runIfPresent, 0, handle);
- } else {
- var task = tasksByHandle[handle];
- if (task) {
- currentlyRunningATask = true;
- try {
- run(task);
- } finally {
- clearImmediate(handle);
- currentlyRunningATask = false;
- }
- }
- }
- }
- function installNextTickImplementation() {
- registerImmediate = function(handle) {
- process.nextTick(function () { runIfPresent(handle); });
- };
- }
- function canUsePostMessage() {
- // The test against `importScripts` prevents this implementation from being installed inside a web worker,
- // where `global.postMessage` means something completely different and can't be used for this purpose.
- if (global.postMessage && !global.importScripts) {
- var postMessageIsAsynchronous = true;
- var oldOnMessage = global.onmessage;
- global.onmessage = function() {
- postMessageIsAsynchronous = false;
- };
- global.postMessage("", "*");
- global.onmessage = oldOnMessage;
- return postMessageIsAsynchronous;
- }
- }
- function installPostMessageImplementation() {
- // Installs an event handler on `global` for the `message` event: see
- // * https://developer.mozilla.org/en/DOM/window.postMessage
- // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages
- var messagePrefix = "setImmediate$" + Math.random() + "$";
- var onGlobalMessage = function(event) {
- if (event.source === global &&
- typeof event.data === "string" &&
- event.data.indexOf(messagePrefix) === 0) {
- runIfPresent(+event.data.slice(messagePrefix.length));
- }
- };
- if (global.addEventListener) {
- global.addEventListener("message", onGlobalMessage, false);
- } else {
- global.attachEvent("onmessage", onGlobalMessage);
- }
- registerImmediate = function(handle) {
- global.postMessage(messagePrefix + handle, "*");
- };
- }
- function installMessageChannelImplementation() {
- var channel = new MessageChannel();
- channel.port1.onmessage = function(event) {
- var handle = event.data;
- runIfPresent(handle);
- };
- registerImmediate = function(handle) {
- channel.port2.postMessage(handle);
- };
- }
- function installReadyStateChangeImplementation() {
- var html = doc.documentElement;
- registerImmediate = function(handle) {
- // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
- // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
- var script = doc.createElement("script");
- script.onreadystatechange = function () {
- runIfPresent(handle);
- script.onreadystatechange = null;
- html.removeChild(script);
- script = null;
- };
- html.appendChild(script);
- };
- }
- function installSetTimeoutImplementation() {
- registerImmediate = function(handle) {
- setTimeout(runIfPresent, 0, handle);
- };
- }
- // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
- var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
- attachTo = attachTo && attachTo.setTimeout ? attachTo : global;
- // Don't get fooled by e.g. browserify environments.
- if ({}.toString.call(global.process) === "[object process]") {
- // For Node.js before 0.9
- installNextTickImplementation();
- } else if (canUsePostMessage()) {
- // For non-IE10 modern browsers
- installPostMessageImplementation();
- } else if (global.MessageChannel) {
- // For web workers, where supported
- installMessageChannelImplementation();
- } else if (doc && "onreadystatechange" in doc.createElement("script")) {
- // For IE 6–8
- installReadyStateChangeImplementation();
- } else {
- // For older browsers
- installSetTimeoutImplementation();
- }
- attachTo.setImmediate = setImmediate;
- attachTo.clearImmediate = clearImmediate;
- }(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self));
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(9), __webpack_require__(21)))
- /***/ }),
- /***/ 4:
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return init; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return destroy; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return watch; });
- /* harmony import */ var _storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
- // Initial state
- var internalSharedData = {
- openInEditorHost: '/',
- componentNameStyle: 'class',
- theme: 'auto',
- displayDensity: 'low',
- timeFormat: 'default',
- recordVuex: true,
- cacheVuexSnapshotsEvery: 50,
- cacheVuexSnapshotsLimit: 10,
- snapshotLoading: false,
- recordPerf: false,
- editableProps: false,
- logDetected: true,
- vuexNewBackend: false,
- vuexAutoload: false
- }
- var persisted = [
- 'componentNameStyle',
- 'theme',
- 'displayDensity',
- 'recordVuex',
- 'editableProps',
- 'logDetected',
- 'vuexNewBackend',
- 'vuexAutoload',
- 'timeFormat'
- ]
- // ---- INTERNALS ---- //
- var Vue
- var bridge
- // List of fields to persist to storage (disabled if 'false')
- // This should be unique to each shared data client to prevent conflicts
- var persist = false
- // For reactivity, we wrap the data in a Vue instance
- var vm
- function init (params) {
- // Mandatory params
- bridge = params.bridge
- Vue = params.Vue
- persist = !!params.persist
- // Load persisted fields
- persisted.forEach(key => {
- var value = _storage__WEBPACK_IMPORTED_MODULE_0__[/* get */ "a"](`shared-data:${key}`)
- if (value !== null) {
- internalSharedData[key] = value
- // Send to other shared data clients
- if (persist) {
- sendValue(key, value)
- }
- }
- })
- // Wrapper Vue instance
- vm = new Vue({
- data: internalSharedData
- })
- // Update value from other shared data clients
- bridge.on('shared-data:set', (ref) => {
- var key = ref.key;
- var value = ref.value;
- setValue(key, value)
- })
- }
- function destroy () {
- bridge.removeAllListeners('shared-data:set')
- vm.$destroy()
- }
- function setValue (key, value) {
- // Storage
- if (persist && persisted.includes(key)) {
- _storage__WEBPACK_IMPORTED_MODULE_0__[/* set */ "c"](`shared-data:${key}`, value)
- }
- vm[key] = value
- // Validate Proxy set trap
- return true
- }
- function sendValue (key, value) {
- bridge && bridge.send('shared-data:set', {
- key,
- value
- })
- }
- function watch (...args) {
- vm.$watch(...args)
- }
- var proxy = {}
- Object.keys(internalSharedData).forEach(key => {
- Object.defineProperty(proxy, key, {
- configurable: false,
- get: () => vm && vm.$data[key],
- set: (value) => {
- sendValue(key, value)
- setValue(key, value)
- }
- })
- })
- /* harmony default export */ __webpack_exports__["a"] = (proxy);
- /***/ }),
- /***/ 5:
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(global, setImmediate) {/* unused harmony export EffectScope */
- /* unused harmony export computed */
- /* unused harmony export customRef */
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Vue; });
- /* unused harmony export defineAsyncComponent */
- /* unused harmony export defineComponent */
- /* unused harmony export del */
- /* unused harmony export effectScope */
- /* unused harmony export getCurrentInstance */
- /* unused harmony export getCurrentScope */
- /* unused harmony export h */
- /* unused harmony export inject */
- /* unused harmony export isProxy */
- /* unused harmony export isReactive */
- /* unused harmony export isReadonly */
- /* unused harmony export isRef */
- /* unused harmony export isShallow */
- /* unused harmony export markRaw */
- /* unused harmony export mergeDefaults */
- /* unused harmony export nextTick */
- /* unused harmony export onActivated */
- /* unused harmony export onBeforeMount */
- /* unused harmony export onBeforeUnmount */
- /* unused harmony export onBeforeUpdate */
- /* unused harmony export onDeactivated */
- /* unused harmony export onErrorCaptured */
- /* unused harmony export onMounted */
- /* unused harmony export onRenderTracked */
- /* unused harmony export onRenderTriggered */
- /* unused harmony export onScopeDispose */
- /* unused harmony export onServerPrefetch */
- /* unused harmony export onUnmounted */
- /* unused harmony export onUpdated */
- /* unused harmony export provide */
- /* unused harmony export proxyRefs */
- /* unused harmony export reactive */
- /* unused harmony export readonly */
- /* unused harmony export ref */
- /* unused harmony export set */
- /* unused harmony export shallowReactive */
- /* unused harmony export shallowReadonly */
- /* unused harmony export shallowRef */
- /* unused harmony export toRaw */
- /* unused harmony export toRef */
- /* unused harmony export toRefs */
- /* unused harmony export triggerRef */
- /* unused harmony export unref */
- /* unused harmony export useAttrs */
- /* unused harmony export useCssModule */
- /* unused harmony export useCssVars */
- /* unused harmony export useListeners */
- /* unused harmony export useSlots */
- /* unused harmony export version */
- /* unused harmony export watch */
- /* unused harmony export watchEffect */
- /* unused harmony export watchPostEffect */
- /* unused harmony export watchSyncEffect */
- /*!
- * Vue.js v2.7.16
- * (c) 2014-2023 Evan You
- * Released under the MIT License.
- */
- var emptyObject = Object.freeze({});
- var isArray = Array.isArray;
- // These helpers produce better VM code in JS engines due to their
- // explicitness and function inlining.
- function isUndef(v) {
- return v === undefined || v === null;
- }
- function isDef(v) {
- return v !== undefined && v !== null;
- }
- function isTrue(v) {
- return v === true;
- }
- function isFalse(v) {
- return v === false;
- }
- /**
- * Check if value is primitive.
- */
- function isPrimitive(value) {
- return (typeof value === 'string' ||
- typeof value === 'number' ||
- // $flow-disable-line
- typeof value === 'symbol' ||
- typeof value === 'boolean');
- }
- function isFunction(value) {
- return typeof value === 'function';
- }
- /**
- * Quick object check - this is primarily used to tell
- * objects from primitive values when we know the value
- * is a JSON-compliant type.
- */
- function isObject(obj) {
- return obj !== null && typeof obj === 'object';
- }
- /**
- * Get the raw type string of a value, e.g., [object Object].
- */
- var _toString = Object.prototype.toString;
- function toRawType(value) {
- return _toString.call(value).slice(8, -1);
- }
- /**
- * Strict object type check. Only returns true
- * for plain JavaScript objects.
- */
- function isPlainObject(obj) {
- return _toString.call(obj) === '[object Object]';
- }
- function isRegExp(v) {
- return _toString.call(v) === '[object RegExp]';
- }
- /**
- * Check if val is a valid array index.
- */
- function isValidArrayIndex(val) {
- var n = parseFloat(String(val));
- return n >= 0 && Math.floor(n) === n && isFinite(val);
- }
- function isPromise(val) {
- return (isDef(val) &&
- typeof val.then === 'function' &&
- typeof val.catch === 'function');
- }
- /**
- * Convert a value to a string that is actually rendered.
- */
- function toString(val) {
- return val == null
- ? ''
- : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)
- ? JSON.stringify(val, replacer, 2)
- : String(val);
- }
- function replacer(_key, val) {
- // avoid circular deps from v3
- if (val && val.__v_isRef) {
- return val.value;
- }
- return val;
- }
- /**
- * Convert an input value to a number for persistence.
- * If the conversion fails, return original string.
- */
- function toNumber(val) {
- var n = parseFloat(val);
- return isNaN(n) ? val : n;
- }
- /**
- * Make a map and return a function for checking if a key
- * is in that map.
- */
- function makeMap(str, expectsLowerCase) {
- var map = Object.create(null);
- var list = str.split(',');
- for (var i = 0; i < list.length; i++) {
- map[list[i]] = true;
- }
- return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };
- }
- /**
- * Check if a tag is a built-in tag.
- */
- var isBuiltInTag = makeMap('slot,component', true);
- /**
- * Check if an attribute is a reserved attribute.
- */
- var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
- /**
- * Remove an item from an array.
- */
- function remove$2(arr, item) {
- var len = arr.length;
- if (len) {
- // fast path for the only / last item
- if (item === arr[len - 1]) {
- arr.length = len - 1;
- return;
- }
- var index = arr.indexOf(item);
- if (index > -1) {
- return arr.splice(index, 1);
- }
- }
- }
- /**
- * Check whether an object has the property.
- */
- var hasOwnProperty = Object.prototype.hasOwnProperty;
- function hasOwn(obj, key) {
- return hasOwnProperty.call(obj, key);
- }
- /**
- * Create a cached version of a pure function.
- */
- function cached(fn) {
- var cache = Object.create(null);
- return function cachedFn(str) {
- var hit = cache[str];
- return hit || (cache[str] = fn(str));
- };
- }
- /**
- * Camelize a hyphen-delimited string.
- */
- var camelizeRE = /-(\w)/g;
- var camelize = cached(function (str) {
- return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });
- });
- /**
- * Capitalize a string.
- */
- var capitalize = cached(function (str) {
- return str.charAt(0).toUpperCase() + str.slice(1);
- });
- /**
- * Hyphenate a camelCase string.
- */
- var hyphenateRE = /\B([A-Z])/g;
- var hyphenate = cached(function (str) {
- return str.replace(hyphenateRE, '-$1').toLowerCase();
- });
- /**
- * Simple bind polyfill for environments that do not support it,
- * e.g., PhantomJS 1.x. Technically, we don't need this anymore
- * since native bind is now performant enough in most browsers.
- * But removing it would mean breaking code that was able to run in
- * PhantomJS 1.x, so this must be kept for backward compatibility.
- */
- /* istanbul ignore next */
- function polyfillBind(fn, ctx) {
- function boundFn(a) {
- var l = arguments.length;
- return l
- ? l > 1
- ? fn.apply(ctx, arguments)
- : fn.call(ctx, a)
- : fn.call(ctx);
- }
- boundFn._length = fn.length;
- return boundFn;
- }
- function nativeBind(fn, ctx) {
- return fn.bind(ctx);
- }
- // @ts-expect-error bind cannot be `undefined`
- var bind = Function.prototype.bind ? nativeBind : polyfillBind;
- /**
- * Convert an Array-like object to a real Array.
- */
- function toArray(list, start) {
- start = start || 0;
- var i = list.length - start;
- var ret = new Array(i);
- while (i--) {
- ret[i] = list[i + start];
- }
- return ret;
- }
- /**
- * Mix properties into target object.
- */
- function extend(to, _from) {
- for (var key in _from) {
- to[key] = _from[key];
- }
- return to;
- }
- /**
- * Merge an Array of Objects into a single Object.
- */
- function toObject(arr) {
- var res = {};
- for (var i = 0; i < arr.length; i++) {
- if (arr[i]) {
- extend(res, arr[i]);
- }
- }
- return res;
- }
- /* eslint-disable no-unused-vars */
- /**
- * Perform no operation.
- * Stubbing args to make Flow happy without leaving useless transpiled code
- * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
- */
- function noop(a, b, c) { }
- /**
- * Always return false.
- */
- var no = function (a, b, c) { return false; };
- /* eslint-enable no-unused-vars */
- /**
- * Return the same value.
- */
- var identity = function (_) { return _; };
- /**
- * Check if two values are loosely equal - that is,
- * if they are plain objects, do they have the same shape?
- */
- function looseEqual(a, b) {
- if (a === b)
- return true;
- var isObjectA = isObject(a);
- var isObjectB = isObject(b);
- if (isObjectA && isObjectB) {
- try {
- var isArrayA = Array.isArray(a);
- var isArrayB = Array.isArray(b);
- if (isArrayA && isArrayB) {
- return (a.length === b.length &&
- a.every(function (e, i) {
- return looseEqual(e, b[i]);
- }));
- }
- else if (a instanceof Date && b instanceof Date) {
- return a.getTime() === b.getTime();
- }
- else if (!isArrayA && !isArrayB) {
- var keysA = Object.keys(a);
- var keysB = Object.keys(b);
- return (keysA.length === keysB.length &&
- keysA.every(function (key) {
- return looseEqual(a[key], b[key]);
- }));
- }
- else {
- /* istanbul ignore next */
- return false;
- }
- }
- catch (e) {
- /* istanbul ignore next */
- return false;
- }
- }
- else if (!isObjectA && !isObjectB) {
- return String(a) === String(b);
- }
- else {
- return false;
- }
- }
- /**
- * Return the first index at which a loosely equal value can be
- * found in the array (if value is a plain object, the array must
- * contain an object of the same shape), or -1 if it is not present.
- */
- function looseIndexOf(arr, val) {
- for (var i = 0; i < arr.length; i++) {
- if (looseEqual(arr[i], val))
- return i;
- }
- return -1;
- }
- /**
- * Ensure a function is called only once.
- */
- function once(fn) {
- var called = false;
- return function () {
- if (!called) {
- called = true;
- fn.apply(this, arguments);
- }
- };
- }
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill
- function hasChanged(x, y) {
- if (x === y) {
- return x === 0 && 1 / x !== 1 / y;
- }
- else {
- return x === x || y === y;
- }
- }
- var SSR_ATTR = 'data-server-rendered';
- var ASSET_TYPES = ['component', 'directive', 'filter'];
- var LIFECYCLE_HOOKS = [
- 'beforeCreate',
- 'created',
- 'beforeMount',
- 'mounted',
- 'beforeUpdate',
- 'updated',
- 'beforeDestroy',
- 'destroyed',
- 'activated',
- 'deactivated',
- 'errorCaptured',
- 'serverPrefetch',
- 'renderTracked',
- 'renderTriggered'
- ];
- var config = {
- /**
- * Option merge strategies (used in core/util/options)
- */
- // $flow-disable-line
- optionMergeStrategies: Object.create(null),
- /**
- * Whether to suppress warnings.
- */
- silent: false,
- /**
- * Show production mode tip message on boot?
- */
- productionTip: "production" !== 'production',
- /**
- * Whether to enable devtools
- */
- devtools: "production" !== 'production',
- /**
- * Whether to record perf
- */
- performance: false,
- /**
- * Error handler for watcher errors
- */
- errorHandler: null,
- /**
- * Warn handler for watcher warns
- */
- warnHandler: null,
- /**
- * Ignore certain custom elements
- */
- ignoredElements: [],
- /**
- * Custom user key aliases for v-on
- */
- // $flow-disable-line
- keyCodes: Object.create(null),
- /**
- * Check if a tag is reserved so that it cannot be registered as a
- * component. This is platform-dependent and may be overwritten.
- */
- isReservedTag: no,
- /**
- * Check if an attribute is reserved so that it cannot be used as a component
- * prop. This is platform-dependent and may be overwritten.
- */
- isReservedAttr: no,
- /**
- * Check if a tag is an unknown element.
- * Platform-dependent.
- */
- isUnknownElement: no,
- /**
- * Get the namespace of an element
- */
- getTagNamespace: noop,
- /**
- * Parse the real tag name for the specific platform.
- */
- parsePlatformTagName: identity,
- /**
- * Check if an attribute must be bound using property, e.g. value
- * Platform-dependent.
- */
- mustUseProp: no,
- /**
- * Perform updates asynchronously. Intended to be used by Vue Test Utils
- * This will significantly reduce performance if set to false.
- */
- async: true,
- /**
- * Exposed for legacy reasons
- */
- _lifecycleHooks: LIFECYCLE_HOOKS
- };
- /**
- * unicode letters used for parsing html tags, component names and property paths.
- * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
- * skipping \u10000-\uEFFFF due to it freezing up PhantomJS
- */
- var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;
- /**
- * Check if a string starts with $ or _
- */
- function isReserved(str) {
- var c = (str + '').charCodeAt(0);
- return c === 0x24 || c === 0x5f;
- }
- /**
- * Define a property.
- */
- function def(obj, key, val, enumerable) {
- Object.defineProperty(obj, key, {
- value: val,
- enumerable: !!enumerable,
- writable: true,
- configurable: true
- });
- }
- /**
- * Parse simple path.
- */
- var bailRE = new RegExp("[^".concat(unicodeRegExp.source, ".$_\\d]"));
- function parsePath(path) {
- if (bailRE.test(path)) {
- return;
- }
- var segments = path.split('.');
- return function (obj) {
- for (var i = 0; i < segments.length; i++) {
- if (!obj)
- return;
- obj = obj[segments[i]];
- }
- return obj;
- };
- }
- // can we use __proto__?
- var hasProto = '__proto__' in {};
- // Browser environment sniffing
- var inBrowser = typeof window !== 'undefined';
- var UA = inBrowser && window.navigator.userAgent.toLowerCase();
- var isIE = UA && /msie|trident/.test(UA);
- var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
- var isEdge = UA && UA.indexOf('edge/') > 0;
- UA && UA.indexOf('android') > 0;
- var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);
- UA && /chrome\/\d+/.test(UA) && !isEdge;
- UA && /phantomjs/.test(UA);
- var isFF = UA && UA.match(/firefox\/(\d+)/);
- // Firefox has a "watch" function on Object.prototype...
- // @ts-expect-error firebox support
- var nativeWatch = {}.watch;
- var supportsPassive = false;
- if (inBrowser) {
- try {
- var opts = {};
- Object.defineProperty(opts, 'passive', {
- get: function () {
- /* istanbul ignore next */
- supportsPassive = true;
- }
- }); // https://github.com/facebook/flow/issues/285
- window.addEventListener('test-passive', null, opts);
- }
- catch (e) { }
- }
- // this needs to be lazy-evaled because vue may be required before
- // vue-server-renderer can set VUE_ENV
- var _isServer;
- var isServerRendering = function () {
- if (_isServer === undefined) {
- /* istanbul ignore if */
- if (!inBrowser && typeof global !== 'undefined') {
- // detect presence of vue-server-renderer and avoid
- // Webpack shimming the process
- _isServer =
- global['process'] && global['process'].env.VUE_ENV === 'server';
- }
- else {
- _isServer = false;
- }
- }
- return _isServer;
- };
- // detect devtools
- var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
- /* istanbul ignore next */
- function isNative(Ctor) {
- return typeof Ctor === 'function' && /native code/.test(Ctor.toString());
- }
- var hasSymbol = typeof Symbol !== 'undefined' &&
- isNative(Symbol) &&
- typeof Reflect !== 'undefined' &&
- isNative(Reflect.ownKeys);
- var _Set; // $flow-disable-line
- /* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {
- // use native Set when available.
- _Set = Set;
- }
- else {
- // a non-standard Set polyfill that only works with primitive keys.
- _Set = /** @class */ (function () {
- function Set() {
- this.set = Object.create(null);
- }
- Set.prototype.has = function (key) {
- return this.set[key] === true;
- };
- Set.prototype.add = function (key) {
- this.set[key] = true;
- };
- Set.prototype.clear = function () {
- this.set = Object.create(null);
- };
- return Set;
- }());
- }
- var currentInstance = null;
- /**
- * This is exposed for compatibility with v3 (e.g. some functions in VueUse
- * relies on it). Do not use this internally, just use `currentInstance`.
- *
- * @internal this function needs manual type declaration because it relies
- * on previously manually authored types from Vue 2
- */
- function getCurrentInstance() {
- return currentInstance && { proxy: currentInstance };
- }
- /**
- * @internal
- */
- function setCurrentInstance(vm) {
- if (vm === void 0) { vm = null; }
- if (!vm)
- currentInstance && currentInstance._scope.off();
- currentInstance = vm;
- vm && vm._scope.on();
- }
- /**
- * @internal
- */
- var VNode = /** @class */ (function () {
- function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {
- this.tag = tag;
- this.data = data;
- this.children = children;
- this.text = text;
- this.elm = elm;
- this.ns = undefined;
- this.context = context;
- this.fnContext = undefined;
- this.fnOptions = undefined;
- this.fnScopeId = undefined;
- this.key = data && data.key;
- this.componentOptions = componentOptions;
- this.componentInstance = undefined;
- this.parent = undefined;
- this.raw = false;
- this.isStatic = false;
- this.isRootInsert = true;
- this.isComment = false;
- this.isCloned = false;
- this.isOnce = false;
- this.asyncFactory = asyncFactory;
- this.asyncMeta = undefined;
- this.isAsyncPlaceholder = false;
- }
- Object.defineProperty(VNode.prototype, "child", {
- // DEPRECATED: alias for componentInstance for backwards compat.
- /* istanbul ignore next */
- get: function () {
- return this.componentInstance;
- },
- enumerable: false,
- configurable: true
- });
- return VNode;
- }());
- var createEmptyVNode = function (text) {
- if (text === void 0) { text = ''; }
- var node = new VNode();
- node.text = text;
- node.isComment = true;
- return node;
- };
- function createTextVNode(val) {
- return new VNode(undefined, undefined, undefined, String(val));
- }
- // optimized shallow clone
- // used for static nodes and slot nodes because they may be reused across
- // multiple renders, cloning them avoids errors when DOM manipulations rely
- // on their elm reference.
- function cloneVNode(vnode) {
- var cloned = new VNode(vnode.tag, vnode.data,
- // #7975
- // clone children array to avoid mutating original in case of cloning
- // a child.
- vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);
- cloned.ns = vnode.ns;
- cloned.isStatic = vnode.isStatic;
- cloned.key = vnode.key;
- cloned.isComment = vnode.isComment;
- cloned.fnContext = vnode.fnContext;
- cloned.fnOptions = vnode.fnOptions;
- cloned.fnScopeId = vnode.fnScopeId;
- cloned.asyncMeta = vnode.asyncMeta;
- cloned.isCloned = true;
- return cloned;
- }
- /******************************************************************************
- Copyright (c) Microsoft Corporation.
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted.
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
- ***************************************************************************** */
- var __assign = function() {
- __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
- var e = new Error(message);
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
- };
- var uid$2 = 0;
- var pendingCleanupDeps = [];
- var cleanupDeps = function () {
- for (var i = 0; i < pendingCleanupDeps.length; i++) {
- var dep = pendingCleanupDeps[i];
- dep.subs = dep.subs.filter(function (s) { return s; });
- dep._pending = false;
- }
- pendingCleanupDeps.length = 0;
- };
- /**
- * A dep is an observable that can have multiple
- * directives subscribing to it.
- * @internal
- */
- var Dep = /** @class */ (function () {
- function Dep() {
- // pending subs cleanup
- this._pending = false;
- this.id = uid$2++;
- this.subs = [];
- }
- Dep.prototype.addSub = function (sub) {
- this.subs.push(sub);
- };
- Dep.prototype.removeSub = function (sub) {
- // #12696 deps with massive amount of subscribers are extremely slow to
- // clean up in Chromium
- // to workaround this, we unset the sub for now, and clear them on
- // next scheduler flush.
- this.subs[this.subs.indexOf(sub)] = null;
- if (!this._pending) {
- this._pending = true;
- pendingCleanupDeps.push(this);
- }
- };
- Dep.prototype.depend = function (info) {
- if (Dep.target) {
- Dep.target.addDep(this);
- if (false) {}
- }
- };
- Dep.prototype.notify = function (info) {
- // stabilize the subscriber list first
- var subs = this.subs.filter(function (s) { return s; });
- if (false) {}
- for (var i = 0, l = subs.length; i < l; i++) {
- var sub = subs[i];
- if (false) {}
- sub.update();
- }
- };
- return Dep;
- }());
- // The current target watcher being evaluated.
- // This is globally unique because only one watcher
- // can be evaluated at a time.
- Dep.target = null;
- var targetStack = [];
- function pushTarget(target) {
- targetStack.push(target);
- Dep.target = target;
- }
- function popTarget() {
- targetStack.pop();
- Dep.target = targetStack[targetStack.length - 1];
- }
- /*
- * not type checking this file because flow doesn't play well with
- * dynamically accessing methods on Array prototype
- */
- var arrayProto = Array.prototype;
- var arrayMethods = Object.create(arrayProto);
- var methodsToPatch = [
- 'push',
- 'pop',
- 'shift',
- 'unshift',
- 'splice',
- 'sort',
- 'reverse'
- ];
- /**
- * Intercept mutating methods and emit events
- */
- methodsToPatch.forEach(function (method) {
- // cache original method
- var original = arrayProto[method];
- def(arrayMethods, method, function mutator() {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- var result = original.apply(this, args);
- var ob = this.__ob__;
- var inserted;
- switch (method) {
- case 'push':
- case 'unshift':
- inserted = args;
- break;
- case 'splice':
- inserted = args.slice(2);
- break;
- }
- if (inserted)
- ob.observeArray(inserted);
- // notify change
- if (false) {}
- else {
- ob.dep.notify();
- }
- return result;
- });
- });
- var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
- var NO_INITIAL_VALUE = {};
- /**
- * In some cases we may want to disable observation inside a component's
- * update computation.
- */
- var shouldObserve = true;
- function toggleObserving(value) {
- shouldObserve = value;
- }
- // ssr mock dep
- var mockDep = {
- notify: noop,
- depend: noop,
- addSub: noop,
- removeSub: noop
- };
- /**
- * Observer class that is attached to each observed
- * object. Once attached, the observer converts the target
- * object's property keys into getter/setters that
- * collect dependencies and dispatch updates.
- */
- var Observer = /** @class */ (function () {
- function Observer(value, shallow, mock) {
- if (shallow === void 0) { shallow = false; }
- if (mock === void 0) { mock = false; }
- this.value = value;
- this.shallow = shallow;
- this.mock = mock;
- // this.value = value
- this.dep = mock ? mockDep : new Dep();
- this.vmCount = 0;
- def(value, '__ob__', this);
- if (isArray(value)) {
- if (!mock) {
- if (hasProto) {
- value.__proto__ = arrayMethods;
- /* eslint-enable no-proto */
- }
- else {
- for (var i = 0, l = arrayKeys.length; i < l; i++) {
- var key = arrayKeys[i];
- def(value, key, arrayMethods[key]);
- }
- }
- }
- if (!shallow) {
- this.observeArray(value);
- }
- }
- else {
- /**
- * Walk through all properties and convert them into
- * getter/setters. This method should only be called when
- * value type is Object.
- */
- var keys = Object.keys(value);
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- defineReactive(value, key, NO_INITIAL_VALUE, undefined, shallow, mock);
- }
- }
- }
- /**
- * Observe a list of Array items.
- */
- Observer.prototype.observeArray = function (value) {
- for (var i = 0, l = value.length; i < l; i++) {
- observe(value[i], false, this.mock);
- }
- };
- return Observer;
- }());
- // helpers
- /**
- * Attempt to create an observer instance for a value,
- * returns the new observer if successfully observed,
- * or the existing observer if the value already has one.
- */
- function observe(value, shallow, ssrMockReactivity) {
- if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
- return value.__ob__;
- }
- if (shouldObserve &&
- (ssrMockReactivity || !isServerRendering()) &&
- (isArray(value) || isPlainObject(value)) &&
- Object.isExtensible(value) &&
- !value.__v_skip /* ReactiveFlags.SKIP */ &&
- !isRef(value) &&
- !(value instanceof VNode)) {
- return new Observer(value, shallow, ssrMockReactivity);
- }
- }
- /**
- * Define a reactive property on an Object.
- */
- function defineReactive(obj, key, val, customSetter, shallow, mock, observeEvenIfShallow) {
- if (observeEvenIfShallow === void 0) { observeEvenIfShallow = false; }
- var dep = new Dep();
- var property = Object.getOwnPropertyDescriptor(obj, key);
- if (property && property.configurable === false) {
- return;
- }
- // cater for pre-defined getter/setters
- var getter = property && property.get;
- var setter = property && property.set;
- if ((!getter || setter) &&
- (val === NO_INITIAL_VALUE || arguments.length === 2)) {
- val = obj[key];
- }
- var childOb = shallow ? val && val.__ob__ : observe(val, false, mock);
- Object.defineProperty(obj, key, {
- enumerable: true,
- configurable: true,
- get: function reactiveGetter() {
- var value = getter ? getter.call(obj) : val;
- if (Dep.target) {
- if (false) {}
- else {
- dep.depend();
- }
- if (childOb) {
- childOb.dep.depend();
- if (isArray(value)) {
- dependArray(value);
- }
- }
- }
- return isRef(value) && !shallow ? value.value : value;
- },
- set: function reactiveSetter(newVal) {
- var value = getter ? getter.call(obj) : val;
- if (!hasChanged(value, newVal)) {
- return;
- }
- if (false) {}
- if (setter) {
- setter.call(obj, newVal);
- }
- else if (getter) {
- // #7981: for accessor properties without setter
- return;
- }
- else if (!shallow && isRef(value) && !isRef(newVal)) {
- value.value = newVal;
- return;
- }
- else {
- val = newVal;
- }
- childOb = shallow ? newVal && newVal.__ob__ : observe(newVal, false, mock);
- if (false) {}
- else {
- dep.notify();
- }
- }
- });
- return dep;
- }
- function set(target, key, val) {
- if (false) {}
- if (isReadonly(target)) {
- false && false;
- return;
- }
- var ob = target.__ob__;
- if (isArray(target) && isValidArrayIndex(key)) {
- target.length = Math.max(target.length, key);
- target.splice(key, 1, val);
- // when mocking for SSR, array methods are not hijacked
- if (ob && !ob.shallow && ob.mock) {
- observe(val, false, true);
- }
- return val;
- }
- if (key in target && !(key in Object.prototype)) {
- target[key] = val;
- return val;
- }
- if (target._isVue || (ob && ob.vmCount)) {
- false &&
- false;
- return val;
- }
- if (!ob) {
- target[key] = val;
- return val;
- }
- defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);
- if (false) {}
- else {
- ob.dep.notify();
- }
- return val;
- }
- function del(target, key) {
- if (false) {}
- if (isArray(target) && isValidArrayIndex(key)) {
- target.splice(key, 1);
- return;
- }
- var ob = target.__ob__;
- if (target._isVue || (ob && ob.vmCount)) {
- false &&
- false;
- return;
- }
- if (isReadonly(target)) {
- false &&
- false;
- return;
- }
- if (!hasOwn(target, key)) {
- return;
- }
- delete target[key];
- if (!ob) {
- return;
- }
- if (false) {}
- else {
- ob.dep.notify();
- }
- }
- /**
- * Collect dependencies on array elements when the array is touched, since
- * we cannot intercept array element access like property getters.
- */
- function dependArray(value) {
- for (var e = void 0, i = 0, l = value.length; i < l; i++) {
- e = value[i];
- if (e && e.__ob__) {
- e.__ob__.dep.depend();
- }
- if (isArray(e)) {
- dependArray(e);
- }
- }
- }
- function reactive(target) {
- makeReactive(target, false);
- return target;
- }
- /**
- * Return a shallowly-reactive copy of the original object, where only the root
- * level properties are reactive. It also does not auto-unwrap refs (even at the
- * root level).
- */
- function shallowReactive(target) {
- makeReactive(target, true);
- def(target, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true);
- return target;
- }
- function makeReactive(target, shallow) {
- // if trying to observe a readonly proxy, return the readonly version.
- if (!isReadonly(target)) {
- if (false) { var existingOb; }
- var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);
- if (false) {}
- }
- }
- function isReactive(value) {
- if (isReadonly(value)) {
- return isReactive(value["__v_raw" /* ReactiveFlags.RAW */]);
- }
- return !!(value && value.__ob__);
- }
- function isShallow(value) {
- return !!(value && value.__v_isShallow);
- }
- function isReadonly(value) {
- return !!(value && value.__v_isReadonly);
- }
- function isProxy(value) {
- return isReactive(value) || isReadonly(value);
- }
- function toRaw(observed) {
- var raw = observed && observed["__v_raw" /* ReactiveFlags.RAW */];
- return raw ? toRaw(raw) : observed;
- }
- function markRaw(value) {
- // non-extensible objects won't be observed anyway
- if (Object.isExtensible(value)) {
- def(value, "__v_skip" /* ReactiveFlags.SKIP */, true);
- }
- return value;
- }
- /**
- * @internal
- */
- function isCollectionType(value) {
- var type = toRawType(value);
- return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet');
- }
- /**
- * @internal
- */
- var RefFlag = "__v_isRef";
- function isRef(r) {
- return !!(r && r.__v_isRef === true);
- }
- function ref$1(value) {
- return createRef(value, false);
- }
- function shallowRef(value) {
- return createRef(value, true);
- }
- function createRef(rawValue, shallow) {
- if (isRef(rawValue)) {
- return rawValue;
- }
- var ref = {};
- def(ref, RefFlag, true);
- def(ref, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, shallow);
- def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));
- return ref;
- }
- function triggerRef(ref) {
- if (false) {}
- if (false) {}
- else {
- ref.dep && ref.dep.notify();
- }
- }
- function unref(ref) {
- return isRef(ref) ? ref.value : ref;
- }
- function proxyRefs(objectWithRefs) {
- if (isReactive(objectWithRefs)) {
- return objectWithRefs;
- }
- var proxy = {};
- var keys = Object.keys(objectWithRefs);
- for (var i = 0; i < keys.length; i++) {
- proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);
- }
- return proxy;
- }
- function proxyWithRefUnwrap(target, source, key) {
- Object.defineProperty(target, key, {
- enumerable: true,
- configurable: true,
- get: function () {
- var val = source[key];
- if (isRef(val)) {
- return val.value;
- }
- else {
- var ob = val && val.__ob__;
- if (ob)
- ob.dep.depend();
- return val;
- }
- },
- set: function (value) {
- var oldValue = source[key];
- if (isRef(oldValue) && !isRef(value)) {
- oldValue.value = value;
- }
- else {
- source[key] = value;
- }
- }
- });
- }
- function customRef(factory) {
- var dep = new Dep();
- var _a = factory(function () {
- if (false) {}
- else {
- dep.depend();
- }
- }, function () {
- if (false) {}
- else {
- dep.notify();
- }
- }), get = _a.get, set = _a.set;
- var ref = {
- get value() {
- return get();
- },
- set value(newVal) {
- set(newVal);
- }
- };
- def(ref, RefFlag, true);
- return ref;
- }
- function toRefs(object) {
- if (false) {}
- var ret = isArray(object) ? new Array(object.length) : {};
- for (var key in object) {
- ret[key] = toRef(object, key);
- }
- return ret;
- }
- function toRef(object, key, defaultValue) {
- var val = object[key];
- if (isRef(val)) {
- return val;
- }
- var ref = {
- get value() {
- var val = object[key];
- return val === undefined ? defaultValue : val;
- },
- set value(newVal) {
- object[key] = newVal;
- }
- };
- def(ref, RefFlag, true);
- return ref;
- }
- var rawToReadonlyFlag = "__v_rawToReadonly";
- var rawToShallowReadonlyFlag = "__v_rawToShallowReadonly";
- function readonly(target) {
- return createReadonly(target, false);
- }
- function createReadonly(target, shallow) {
- if (!isPlainObject(target)) {
- if (false) {}
- return target;
- }
- if (false) {}
- // already a readonly object
- if (isReadonly(target)) {
- return target;
- }
- // already has a readonly proxy
- var existingFlag = shallow ? rawToShallowReadonlyFlag : rawToReadonlyFlag;
- var existingProxy = target[existingFlag];
- if (existingProxy) {
- return existingProxy;
- }
- var proxy = Object.create(Object.getPrototypeOf(target));
- def(target, existingFlag, proxy);
- def(proxy, "__v_isReadonly" /* ReactiveFlags.IS_READONLY */, true);
- def(proxy, "__v_raw" /* ReactiveFlags.RAW */, target);
- if (isRef(target)) {
- def(proxy, RefFlag, true);
- }
- if (shallow || isShallow(target)) {
- def(proxy, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true);
- }
- var keys = Object.keys(target);
- for (var i = 0; i < keys.length; i++) {
- defineReadonlyProperty(proxy, target, keys[i], shallow);
- }
- return proxy;
- }
- function defineReadonlyProperty(proxy, target, key, shallow) {
- Object.defineProperty(proxy, key, {
- enumerable: true,
- configurable: true,
- get: function () {
- var val = target[key];
- return shallow || !isPlainObject(val) ? val : readonly(val);
- },
- set: function () {
- false &&
- false;
- }
- });
- }
- /**
- * Returns a reactive-copy of the original object, where only the root level
- * properties are readonly, and does NOT unwrap refs nor recursively convert
- * returned properties.
- * This is used for creating the props proxy object for stateful components.
- */
- function shallowReadonly(target) {
- return createReadonly(target, true);
- }
- function computed(getterOrOptions, debugOptions) {
- var getter;
- var setter;
- var onlyGetter = isFunction(getterOrOptions);
- if (onlyGetter) {
- getter = getterOrOptions;
- setter = false
- ? undefined
- : noop;
- }
- else {
- getter = getterOrOptions.get;
- setter = getterOrOptions.set;
- }
- var watcher = isServerRendering()
- ? null
- : new Watcher(currentInstance, getter, noop, { lazy: true });
- if (false) {}
- var ref = {
- // some libs rely on the presence effect for checking computed refs
- // from normal refs, but the implementation doesn't matter
- effect: watcher,
- get value() {
- if (watcher) {
- if (watcher.dirty) {
- watcher.evaluate();
- }
- if (Dep.target) {
- if (false) {}
- watcher.depend();
- }
- return watcher.value;
- }
- else {
- return getter();
- }
- },
- set value(newVal) {
- setter(newVal);
- }
- };
- def(ref, RefFlag, true);
- def(ref, "__v_isReadonly" /* ReactiveFlags.IS_READONLY */, onlyGetter);
- return ref;
- }
- var WATCHER = "watcher";
- var WATCHER_CB = "".concat(WATCHER, " callback");
- var WATCHER_GETTER = "".concat(WATCHER, " getter");
- var WATCHER_CLEANUP = "".concat(WATCHER, " cleanup");
- // Simple effect.
- function watchEffect(effect, options) {
- return doWatch(effect, null, options);
- }
- function watchPostEffect(effect, options) {
- return doWatch(effect, null, ( false
- ? undefined : { flush: 'post' }));
- }
- function watchSyncEffect(effect, options) {
- return doWatch(effect, null, ( false
- ? undefined : { flush: 'sync' }));
- }
- // initial value for watchers to trigger on undefined initial values
- var INITIAL_WATCHER_VALUE = {};
- // implementation
- function watch(source, cb, options) {
- if (false) {}
- return doWatch(source, cb, options);
- }
- function doWatch(source, cb, _a) {
- var _b = _a === void 0 ? emptyObject : _a, immediate = _b.immediate, deep = _b.deep, _c = _b.flush, flush = _c === void 0 ? 'pre' : _c, onTrack = _b.onTrack, onTrigger = _b.onTrigger;
- if (false) {}
- var warnInvalidSource = function (s) {
- warn("Invalid watch source: ".concat(s, ". A watch source can only be a getter/effect ") +
- "function, a ref, a reactive object, or an array of these types.");
- };
- var instance = currentInstance;
- var call = function (fn, type, args) {
- if (args === void 0) { args = null; }
- var res = invokeWithErrorHandling(fn, null, args, instance, type);
- if (deep && res && res.__ob__)
- res.__ob__.dep.depend();
- return res;
- };
- var getter;
- var forceTrigger = false;
- var isMultiSource = false;
- if (isRef(source)) {
- getter = function () { return source.value; };
- forceTrigger = isShallow(source);
- }
- else if (isReactive(source)) {
- getter = function () {
- source.__ob__.dep.depend();
- return source;
- };
- deep = true;
- }
- else if (isArray(source)) {
- isMultiSource = true;
- forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); });
- getter = function () {
- return source.map(function (s) {
- if (isRef(s)) {
- return s.value;
- }
- else if (isReactive(s)) {
- s.__ob__.dep.depend();
- return traverse(s);
- }
- else if (isFunction(s)) {
- return call(s, WATCHER_GETTER);
- }
- else {
- false && false;
- }
- });
- };
- }
- else if (isFunction(source)) {
- if (cb) {
- // getter with cb
- getter = function () { return call(source, WATCHER_GETTER); };
- }
- else {
- // no cb -> simple effect
- getter = function () {
- if (instance && instance._isDestroyed) {
- return;
- }
- if (cleanup) {
- cleanup();
- }
- return call(source, WATCHER, [onCleanup]);
- };
- }
- }
- else {
- getter = noop;
- false && false;
- }
- if (cb && deep) {
- var baseGetter_1 = getter;
- getter = function () { return traverse(baseGetter_1()); };
- }
- var cleanup;
- var onCleanup = function (fn) {
- cleanup = watcher.onStop = function () {
- call(fn, WATCHER_CLEANUP);
- };
- };
- // in SSR there is no need to setup an actual effect, and it should be noop
- // unless it's eager
- if (isServerRendering()) {
- // we will also not call the invalidate callback (+ runner is not set up)
- onCleanup = noop;
- if (!cb) {
- getter();
- }
- else if (immediate) {
- call(cb, WATCHER_CB, [
- getter(),
- isMultiSource ? [] : undefined,
- onCleanup
- ]);
- }
- return noop;
- }
- var watcher = new Watcher(currentInstance, getter, noop, {
- lazy: true
- });
- watcher.noRecurse = !cb;
- var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;
- // overwrite default run
- watcher.run = function () {
- if (!watcher.active) {
- return;
- }
- if (cb) {
- // watch(source, cb)
- var newValue = watcher.get();
- if (deep ||
- forceTrigger ||
- (isMultiSource
- ? newValue.some(function (v, i) {
- return hasChanged(v, oldValue[i]);
- })
- : hasChanged(newValue, oldValue))) {
- // cleanup before running cb again
- if (cleanup) {
- cleanup();
- }
- call(cb, WATCHER_CB, [
- newValue,
- // pass undefined as the old value when it's changed for the first time
- oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,
- onCleanup
- ]);
- oldValue = newValue;
- }
- }
- else {
- // watchEffect
- watcher.get();
- }
- };
- if (flush === 'sync') {
- watcher.update = watcher.run;
- }
- else if (flush === 'post') {
- watcher.post = true;
- watcher.update = function () { return queueWatcher(watcher); };
- }
- else {
- // pre
- watcher.update = function () {
- if (instance && instance === currentInstance && !instance._isMounted) {
- // pre-watcher triggered before
- var buffer = instance._preWatchers || (instance._preWatchers = []);
- if (buffer.indexOf(watcher) < 0)
- buffer.push(watcher);
- }
- else {
- queueWatcher(watcher);
- }
- };
- }
- if (false) {}
- // initial run
- if (cb) {
- if (immediate) {
- watcher.run();
- }
- else {
- oldValue = watcher.get();
- }
- }
- else if (flush === 'post' && instance) {
- instance.$once('hook:mounted', function () { return watcher.get(); });
- }
- else {
- watcher.get();
- }
- return function () {
- watcher.teardown();
- };
- }
- var activeEffectScope;
- var EffectScope = /** @class */ (function () {
- function EffectScope(detached) {
- if (detached === void 0) { 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;
- }
- }
- EffectScope.prototype.run = function (fn) {
- if (this.active) {
- var currentEffectScope = activeEffectScope;
- try {
- activeEffectScope = this;
- return fn();
- }
- finally {
- activeEffectScope = currentEffectScope;
- }
- }
- else if (false) {}
- };
- /**
- * This should only be called on non-detached scopes
- * @internal
- */
- EffectScope.prototype.on = function () {
- activeEffectScope = this;
- };
- /**
- * This should only be called on non-detached scopes
- * @internal
- */
- EffectScope.prototype.off = function () {
- activeEffectScope = this.parent;
- };
- EffectScope.prototype.stop = function (fromParent) {
- if (this.active) {
- var i = void 0, l = void 0;
- for (i = 0, l = this.effects.length; i < l; i++) {
- this.effects[i].teardown();
- }
- 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);
- }
- }
- // nested scope, dereference from parent to avoid memory leaks
- if (!this.detached && this.parent && !fromParent) {
- // optimized O(1) removal
- var last = this.parent.scopes.pop();
- if (last && last !== this) {
- this.parent.scopes[this.index] = last;
- last.index = this.index;
- }
- }
- this.parent = undefined;
- this.active = false;
- }
- };
- return EffectScope;
- }());
- function effectScope(detached) {
- return new EffectScope(detached);
- }
- /**
- * @internal
- */
- function recordEffectScope(effect, scope) {
- if (scope === void 0) { scope = activeEffectScope; }
- if (scope && scope.active) {
- scope.effects.push(effect);
- }
- }
- function getCurrentScope() {
- return activeEffectScope;
- }
- function onScopeDispose(fn) {
- if (activeEffectScope) {
- activeEffectScope.cleanups.push(fn);
- }
- else if (false) {}
- }
- function provide(key, value) {
- if (!currentInstance) {
- if (false) {}
- }
- else {
- // TS doesn't allow symbol as index type
- resolveProvided(currentInstance)[key] = value;
- }
- }
- function resolveProvided(vm) {
- // by default an instance inherits its parent's provides object
- // but when it needs to provide values of its own, it creates its
- // own provides object using parent provides object as prototype.
- // this way in `inject` we can simply look up injections from direct
- // parent and let the prototype chain do the work.
- var existing = vm._provided;
- var parentProvides = vm.$parent && vm.$parent._provided;
- if (parentProvides === existing) {
- return (vm._provided = Object.create(parentProvides));
- }
- else {
- return existing;
- }
- }
- function inject(key, defaultValue, treatDefaultAsFactory) {
- if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; }
- // fallback to `currentRenderingInstance` so that this can be called in
- // a functional component
- var instance = currentInstance;
- if (instance) {
- // #2400
- // to support `app.use` plugins,
- // fallback to appContext's `provides` if the instance is at root
- var provides = instance.$parent && instance.$parent._provided;
- if (provides && key in provides) {
- // TS doesn't allow symbol as index type
- return provides[key];
- }
- else if (arguments.length > 1) {
- return treatDefaultAsFactory && isFunction(defaultValue)
- ? defaultValue.call(instance)
- : defaultValue;
- }
- else if (false) {}
- }
- else if (false) {}
- }
- var normalizeEvent = cached(function (name) {
- var passive = name.charAt(0) === '&';
- name = passive ? name.slice(1) : name;
- var once = name.charAt(0) === '~'; // Prefixed last, checked first
- name = once ? name.slice(1) : name;
- var capture = name.charAt(0) === '!';
- name = capture ? name.slice(1) : name;
- return {
- name: name,
- once: once,
- capture: capture,
- passive: passive
- };
- });
- function createFnInvoker(fns, vm) {
- function invoker() {
- var fns = invoker.fns;
- if (isArray(fns)) {
- var cloned = fns.slice();
- for (var i = 0; i < cloned.length; i++) {
- invokeWithErrorHandling(cloned[i], null, arguments, vm, "v-on handler");
- }
- }
- else {
- // return handler return value for single handlers
- return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler");
- }
- }
- invoker.fns = fns;
- return invoker;
- }
- function updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {
- var name, cur, old, event;
- for (name in on) {
- cur = on[name];
- old = oldOn[name];
- event = normalizeEvent(name);
- if (isUndef(cur)) {
- false &&
- false;
- }
- else if (isUndef(old)) {
- if (isUndef(cur.fns)) {
- cur = on[name] = createFnInvoker(cur, vm);
- }
- if (isTrue(event.once)) {
- cur = on[name] = createOnceHandler(event.name, cur, event.capture);
- }
- add(event.name, cur, event.capture, event.passive, event.params);
- }
- else if (cur !== old) {
- old.fns = cur;
- on[name] = old;
- }
- }
- for (name in oldOn) {
- if (isUndef(on[name])) {
- event = normalizeEvent(name);
- remove(event.name, oldOn[name], event.capture);
- }
- }
- }
- function mergeVNodeHook(def, hookKey, hook) {
- if (def instanceof VNode) {
- def = def.data.hook || (def.data.hook = {});
- }
- var invoker;
- var oldHook = def[hookKey];
- function wrappedHook() {
- hook.apply(this, arguments);
- // important: remove merged hook to ensure it's called only once
- // and prevent memory leak
- remove$2(invoker.fns, wrappedHook);
- }
- if (isUndef(oldHook)) {
- // no existing hook
- invoker = createFnInvoker([wrappedHook]);
- }
- else {
- /* istanbul ignore if */
- if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {
- // already a merged invoker
- invoker = oldHook;
- invoker.fns.push(wrappedHook);
- }
- else {
- // existing plain hook
- invoker = createFnInvoker([oldHook, wrappedHook]);
- }
- }
- invoker.merged = true;
- def[hookKey] = invoker;
- }
- function extractPropsFromVNodeData(data, Ctor, tag) {
- // we are only extracting raw values here.
- // validation and default values are handled in the child
- // component itself.
- var propOptions = Ctor.options.props;
- if (isUndef(propOptions)) {
- return;
- }
- var res = {};
- var attrs = data.attrs, props = data.props;
- if (isDef(attrs) || isDef(props)) {
- for (var key in propOptions) {
- var altKey = hyphenate(key);
- if (false) { var keyInLowerCase; }
- checkProp(res, props, key, altKey, true) ||
- checkProp(res, attrs, key, altKey, false);
- }
- }
- return res;
- }
- function checkProp(res, hash, key, altKey, preserve) {
- if (isDef(hash)) {
- if (hasOwn(hash, key)) {
- res[key] = hash[key];
- if (!preserve) {
- delete hash[key];
- }
- return true;
- }
- else if (hasOwn(hash, altKey)) {
- res[key] = hash[altKey];
- if (!preserve) {
- delete hash[altKey];
- }
- return true;
- }
- }
- return false;
- }
- // The template compiler attempts to minimize the need for normalization by
- // statically analyzing the template at compile time.
- //
- // For plain HTML markup, normalization can be completely skipped because the
- // generated render function is guaranteed to return Array<VNode>. There are
- // two cases where extra normalization is needed:
- // 1. When the children contains components - because a functional component
- // may return an Array instead of a single root. In this case, just a simple
- // normalization is needed - if any child is an Array, we flatten the whole
- // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
- // because functional components already normalize their own children.
- function simpleNormalizeChildren(children) {
- for (var i = 0; i < children.length; i++) {
- if (isArray(children[i])) {
- return Array.prototype.concat.apply([], children);
- }
- }
- return children;
- }
- // 2. When the children contains constructs that always generated nested Arrays,
- // e.g. <template>, <slot>, v-for, or when the children is provided by user
- // with hand-written render functions / JSX. In such cases a full normalization
- // is needed to cater to all possible types of children values.
- function normalizeChildren(children) {
- return isPrimitive(children)
- ? [createTextVNode(children)]
- : isArray(children)
- ? normalizeArrayChildren(children)
- : undefined;
- }
- function isTextNode(node) {
- return isDef(node) && isDef(node.text) && isFalse(node.isComment);
- }
- function normalizeArrayChildren(children, nestedIndex) {
- var res = [];
- var i, c, lastIndex, last;
- for (i = 0; i < children.length; i++) {
- c = children[i];
- if (isUndef(c) || typeof c === 'boolean')
- continue;
- lastIndex = res.length - 1;
- last = res[lastIndex];
- // nested
- if (isArray(c)) {
- if (c.length > 0) {
- c = normalizeArrayChildren(c, "".concat(nestedIndex || '', "_").concat(i));
- // merge adjacent text nodes
- if (isTextNode(c[0]) && isTextNode(last)) {
- res[lastIndex] = createTextVNode(last.text + c[0].text);
- c.shift();
- }
- res.push.apply(res, c);
- }
- }
- else if (isPrimitive(c)) {
- if (isTextNode(last)) {
- // merge adjacent text nodes
- // this is necessary for SSR hydration because text nodes are
- // essentially merged when rendered to HTML strings
- res[lastIndex] = createTextVNode(last.text + c);
- }
- else if (c !== '') {
- // convert primitive to vnode
- res.push(createTextVNode(c));
- }
- }
- else {
- if (isTextNode(c) && isTextNode(last)) {
- // merge adjacent text nodes
- res[lastIndex] = createTextVNode(last.text + c.text);
- }
- else {
- // default key for nested array children (likely generated by v-for)
- if (isTrue(children._isVList) &&
- isDef(c.tag) &&
- isUndef(c.key) &&
- isDef(nestedIndex)) {
- c.key = "__vlist".concat(nestedIndex, "_").concat(i, "__");
- }
- res.push(c);
- }
- }
- }
- return res;
- }
- /**
- * Runtime helper for rendering v-for lists.
- */
- function renderList(val, render) {
- var ret = null, i, l, keys, key;
- if (isArray(val) || typeof val === 'string') {
- ret = new Array(val.length);
- for (i = 0, l = val.length; i < l; i++) {
- ret[i] = render(val[i], i);
- }
- }
- else if (typeof val === 'number') {
- ret = new Array(val);
- for (i = 0; i < val; i++) {
- ret[i] = render(i + 1, i);
- }
- }
- else if (isObject(val)) {
- if (hasSymbol && val[Symbol.iterator]) {
- ret = [];
- var iterator = val[Symbol.iterator]();
- var result = iterator.next();
- while (!result.done) {
- ret.push(render(result.value, ret.length));
- result = iterator.next();
- }
- }
- else {
- keys = Object.keys(val);
- ret = new Array(keys.length);
- for (i = 0, l = keys.length; i < l; i++) {
- key = keys[i];
- ret[i] = render(val[key], key, i);
- }
- }
- }
- if (!isDef(ret)) {
- ret = [];
- }
- ret._isVList = true;
- return ret;
- }
- /**
- * Runtime helper for rendering <slot>
- */
- function renderSlot(name, fallbackRender, props, bindObject) {
- var scopedSlotFn = this.$scopedSlots[name];
- var nodes;
- if (scopedSlotFn) {
- // scoped slot
- props = props || {};
- if (bindObject) {
- if (false) {}
- props = extend(extend({}, bindObject), props);
- }
- nodes =
- scopedSlotFn(props) ||
- (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);
- }
- else {
- nodes =
- this.$slots[name] ||
- (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);
- }
- var target = props && props.slot;
- if (target) {
- return this.$createElement('template', { slot: target }, nodes);
- }
- else {
- return nodes;
- }
- }
- /**
- * Runtime helper for resolving filters
- */
- function resolveFilter(id) {
- return resolveAsset(this.$options, 'filters', id, true) || identity;
- }
- function isKeyNotMatch(expect, actual) {
- if (isArray(expect)) {
- return expect.indexOf(actual) === -1;
- }
- else {
- return expect !== actual;
- }
- }
- /**
- * Runtime helper for checking keyCodes from config.
- * exposed as Vue.prototype._k
- * passing in eventKeyName as last argument separately for backwards compat
- */
- function checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {
- var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
- if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
- return isKeyNotMatch(builtInKeyName, eventKeyName);
- }
- else if (mappedKeyCode) {
- return isKeyNotMatch(mappedKeyCode, eventKeyCode);
- }
- else if (eventKeyName) {
- return hyphenate(eventKeyName) !== key;
- }
- return eventKeyCode === undefined;
- }
- /**
- * Runtime helper for merging v-bind="object" into a VNode's data.
- */
- function bindObjectProps(data, tag, value, asProp, isSync) {
- if (value) {
- if (!isObject(value)) {
- false &&
- false;
- }
- else {
- if (isArray(value)) {
- value = toObject(value);
- }
- var hash = void 0;
- var _loop_1 = function (key) {
- if (key === 'class' || key === 'style' || isReservedAttribute(key)) {
- hash = data;
- }
- else {
- var type = data.attrs && data.attrs.type;
- hash =
- asProp || config.mustUseProp(tag, type, key)
- ? data.domProps || (data.domProps = {})
- : data.attrs || (data.attrs = {});
- }
- var camelizedKey = camelize(key);
- var hyphenatedKey = hyphenate(key);
- if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
- hash[key] = value[key];
- if (isSync) {
- var on = data.on || (data.on = {});
- on["update:".concat(key)] = function ($event) {
- value[key] = $event;
- };
- }
- }
- };
- for (var key in value) {
- _loop_1(key);
- }
- }
- }
- return data;
- }
- /**
- * Runtime helper for rendering static trees.
- */
- function renderStatic(index, isInFor) {
- var cached = this._staticTrees || (this._staticTrees = []);
- var tree = cached[index];
- // if has already-rendered static tree and not inside v-for,
- // we can reuse the same tree.
- if (tree && !isInFor) {
- return tree;
- }
- // otherwise, render a fresh tree.
- tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates
- );
- markStatic(tree, "__static__".concat(index), false);
- return tree;
- }
- /**
- * Runtime helper for v-once.
- * Effectively it means marking the node as static with a unique key.
- */
- function markOnce(tree, index, key) {
- markStatic(tree, "__once__".concat(index).concat(key ? "_".concat(key) : ""), true);
- return tree;
- }
- function markStatic(tree, key, isOnce) {
- if (isArray(tree)) {
- for (var i = 0; i < tree.length; i++) {
- if (tree[i] && typeof tree[i] !== 'string') {
- markStaticNode(tree[i], "".concat(key, "_").concat(i), isOnce);
- }
- }
- }
- else {
- markStaticNode(tree, key, isOnce);
- }
- }
- function markStaticNode(node, key, isOnce) {
- node.isStatic = true;
- node.key = key;
- node.isOnce = isOnce;
- }
- function bindObjectListeners(data, value) {
- if (value) {
- if (!isPlainObject(value)) {
- false && false;
- }
- else {
- var on = (data.on = data.on ? extend({}, data.on) : {});
- for (var key in value) {
- var existing = on[key];
- var ours = value[key];
- on[key] = existing ? [].concat(existing, ours) : ours;
- }
- }
- }
- return data;
- }
- function resolveScopedSlots(fns, res,
- // the following are added in 2.6
- hasDynamicKeys, contentHashKey) {
- res = res || { $stable: !hasDynamicKeys };
- for (var i = 0; i < fns.length; i++) {
- var slot = fns[i];
- if (isArray(slot)) {
- resolveScopedSlots(slot, res, hasDynamicKeys);
- }
- else if (slot) {
- // marker for reverse proxying v-slot without scope on this.$slots
- // @ts-expect-error
- if (slot.proxy) {
- // @ts-expect-error
- slot.fn.proxy = true;
- }
- res[slot.key] = slot.fn;
- }
- }
- if (contentHashKey) {
- res.$key = contentHashKey;
- }
- return res;
- }
- // helper to process dynamic keys for dynamic arguments in v-bind and v-on.
- function bindDynamicKeys(baseObj, values) {
- for (var i = 0; i < values.length; i += 2) {
- var key = values[i];
- if (typeof key === 'string' && key) {
- baseObj[values[i]] = values[i + 1];
- }
- else if (false) {}
- }
- return baseObj;
- }
- // helper to dynamically append modifier runtime markers to event names.
- // ensure only append when value is already string, otherwise it will be cast
- // to string and cause the type check to miss.
- function prependModifier(value, symbol) {
- return typeof value === 'string' ? symbol + value : value;
- }
- function installRenderHelpers(target) {
- target._o = markOnce;
- target._n = toNumber;
- target._s = toString;
- target._l = renderList;
- target._t = renderSlot;
- target._q = looseEqual;
- target._i = looseIndexOf;
- target._m = renderStatic;
- target._f = resolveFilter;
- target._k = checkKeyCodes;
- target._b = bindObjectProps;
- target._v = createTextVNode;
- target._e = createEmptyVNode;
- target._u = resolveScopedSlots;
- target._g = bindObjectListeners;
- target._d = bindDynamicKeys;
- target._p = prependModifier;
- }
- /**
- * Runtime helper for resolving raw children VNodes into a slot object.
- */
- function resolveSlots(children, context) {
- if (!children || !children.length) {
- return {};
- }
- var slots = {};
- for (var i = 0, l = children.length; i < l; i++) {
- var child = children[i];
- var data = child.data;
- // remove slot attribute if the node is resolved as a Vue slot node
- if (data && data.attrs && data.attrs.slot) {
- delete data.attrs.slot;
- }
- // named slots should only be respected if the vnode was rendered in the
- // same context.
- if ((child.context === context || child.fnContext === context) &&
- data &&
- data.slot != null) {
- var name_1 = data.slot;
- var slot = slots[name_1] || (slots[name_1] = []);
- if (child.tag === 'template') {
- slot.push.apply(slot, child.children || []);
- }
- else {
- slot.push(child);
- }
- }
- else {
- (slots.default || (slots.default = [])).push(child);
- }
- }
- // ignore slots that contains only whitespace
- for (var name_2 in slots) {
- if (slots[name_2].every(isWhitespace)) {
- delete slots[name_2];
- }
- }
- return slots;
- }
- function isWhitespace(node) {
- return (node.isComment && !node.asyncFactory) || node.text === ' ';
- }
- function isAsyncPlaceholder(node) {
- // @ts-expect-error not really boolean type
- return node.isComment && node.asyncFactory;
- }
- function normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) {
- var res;
- var hasNormalSlots = Object.keys(normalSlots).length > 0;
- var isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots;
- var key = scopedSlots && scopedSlots.$key;
- if (!scopedSlots) {
- res = {};
- }
- else if (scopedSlots._normalized) {
- // fast path 1: child component re-render only, parent did not change
- return scopedSlots._normalized;
- }
- else if (isStable &&
- prevScopedSlots &&
- prevScopedSlots !== emptyObject &&
- key === prevScopedSlots.$key &&
- !hasNormalSlots &&
- !prevScopedSlots.$hasNormal) {
- // fast path 2: stable scoped slots w/ no normal slots to proxy,
- // only need to normalize once
- return prevScopedSlots;
- }
- else {
- res = {};
- for (var key_1 in scopedSlots) {
- if (scopedSlots[key_1] && key_1[0] !== '$') {
- res[key_1] = normalizeScopedSlot(ownerVm, normalSlots, key_1, scopedSlots[key_1]);
- }
- }
- }
- // expose normal slots on scopedSlots
- for (var key_2 in normalSlots) {
- if (!(key_2 in res)) {
- res[key_2] = proxyNormalSlot(normalSlots, key_2);
- }
- }
- // avoriaz seems to mock a non-extensible $scopedSlots object
- // and when that is passed down this would cause an error
- if (scopedSlots && Object.isExtensible(scopedSlots)) {
- scopedSlots._normalized = res;
- }
- def(res, '$stable', isStable);
- def(res, '$key', key);
- def(res, '$hasNormal', hasNormalSlots);
- return res;
- }
- function normalizeScopedSlot(vm, normalSlots, key, fn) {
- var normalized = function () {
- var cur = currentInstance;
- setCurrentInstance(vm);
- var res = arguments.length ? fn.apply(null, arguments) : fn({});
- res =
- res && typeof res === 'object' && !isArray(res)
- ? [res] // single vnode
- : normalizeChildren(res);
- var vnode = res && res[0];
- setCurrentInstance(cur);
- return res &&
- (!vnode ||
- (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391
- ? undefined
- : res;
- };
- // this is a slot using the new v-slot syntax without scope. although it is
- // compiled as a scoped slot, render fn users would expect it to be present
- // on this.$slots because the usage is semantically a normal slot.
- if (fn.proxy) {
- Object.defineProperty(normalSlots, key, {
- get: normalized,
- enumerable: true,
- configurable: true
- });
- }
- return normalized;
- }
- function proxyNormalSlot(slots, key) {
- return function () { return slots[key]; };
- }
- function initSetup(vm) {
- var options = vm.$options;
- var setup = options.setup;
- if (setup) {
- var ctx = (vm._setupContext = createSetupContext(vm));
- setCurrentInstance(vm);
- pushTarget();
- var setupResult = invokeWithErrorHandling(setup, null, [vm._props || shallowReactive({}), ctx], vm, "setup");
- popTarget();
- setCurrentInstance();
- if (isFunction(setupResult)) {
- // render function
- // @ts-ignore
- options.render = setupResult;
- }
- else if (isObject(setupResult)) {
- // bindings
- if (false) {}
- vm._setupState = setupResult;
- // __sfc indicates compiled bindings from <script setup>
- if (!setupResult.__sfc) {
- for (var key in setupResult) {
- if (!isReserved(key)) {
- proxyWithRefUnwrap(vm, setupResult, key);
- }
- else if (false) {}
- }
- }
- else {
- // exposed for compiled render fn
- var proxy = (vm._setupProxy = {});
- for (var key in setupResult) {
- if (key !== '__sfc') {
- proxyWithRefUnwrap(proxy, setupResult, key);
- }
- }
- }
- }
- else if (false) {}
- }
- }
- function createSetupContext(vm) {
- var exposeCalled = false;
- return {
- get attrs() {
- if (!vm._attrsProxy) {
- var proxy = (vm._attrsProxy = {});
- def(proxy, '_v_attr_proxy', true);
- syncSetupProxy(proxy, vm.$attrs, emptyObject, vm, '$attrs');
- }
- return vm._attrsProxy;
- },
- get listeners() {
- if (!vm._listenersProxy) {
- var proxy = (vm._listenersProxy = {});
- syncSetupProxy(proxy, vm.$listeners, emptyObject, vm, '$listeners');
- }
- return vm._listenersProxy;
- },
- get slots() {
- return initSlotsProxy(vm);
- },
- emit: bind(vm.$emit, vm),
- expose: function (exposed) {
- if (false) {}
- if (exposed) {
- Object.keys(exposed).forEach(function (key) {
- return proxyWithRefUnwrap(vm, exposed, key);
- });
- }
- }
- };
- }
- function syncSetupProxy(to, from, prev, instance, type) {
- var changed = false;
- for (var key in from) {
- if (!(key in to)) {
- changed = true;
- defineProxyAttr(to, key, instance, type);
- }
- else if (from[key] !== prev[key]) {
- changed = true;
- }
- }
- for (var key in to) {
- if (!(key in from)) {
- changed = true;
- delete to[key];
- }
- }
- return changed;
- }
- function defineProxyAttr(proxy, key, instance, type) {
- Object.defineProperty(proxy, key, {
- enumerable: true,
- configurable: true,
- get: function () {
- return instance[type][key];
- }
- });
- }
- function initSlotsProxy(vm) {
- if (!vm._slotsProxy) {
- syncSetupSlots((vm._slotsProxy = {}), vm.$scopedSlots);
- }
- return vm._slotsProxy;
- }
- function syncSetupSlots(to, from) {
- for (var key in from) {
- to[key] = from[key];
- }
- for (var key in to) {
- if (!(key in from)) {
- delete to[key];
- }
- }
- }
- /**
- * @internal use manual type def because public setup context type relies on
- * legacy VNode types
- */
- function useSlots() {
- return getContext().slots;
- }
- /**
- * @internal use manual type def because public setup context type relies on
- * legacy VNode types
- */
- function useAttrs() {
- return getContext().attrs;
- }
- /**
- * Vue 2 only
- * @internal use manual type def because public setup context type relies on
- * legacy VNode types
- */
- function useListeners() {
- return getContext().listeners;
- }
- function getContext() {
- if (false) {}
- var vm = currentInstance;
- return vm._setupContext || (vm._setupContext = createSetupContext(vm));
- }
- /**
- * Runtime helper for merging default declarations. Imported by compiled code
- * only.
- * @internal
- */
- function mergeDefaults(raw, defaults) {
- var props = isArray(raw)
- ? raw.reduce(function (normalized, p) { return ((normalized[p] = {}), normalized); }, {})
- : raw;
- for (var key in defaults) {
- var opt = props[key];
- if (opt) {
- if (isArray(opt) || isFunction(opt)) {
- props[key] = { type: opt, default: defaults[key] };
- }
- else {
- opt.default = defaults[key];
- }
- }
- else if (opt === null) {
- props[key] = { default: defaults[key] };
- }
- else if (false) {}
- }
- return props;
- }
- function initRender(vm) {
- vm._vnode = null; // the root of the child tree
- vm._staticTrees = null; // v-once cached trees
- var options = vm.$options;
- var parentVnode = (vm.$vnode = options._parentVnode); // the placeholder node in parent tree
- var renderContext = parentVnode && parentVnode.context;
- vm.$slots = resolveSlots(options._renderChildren, renderContext);
- vm.$scopedSlots = parentVnode
- ? normalizeScopedSlots(vm.$parent, parentVnode.data.scopedSlots, vm.$slots)
- : emptyObject;
- // bind the createElement fn to this instance
- // so that we get proper render context inside it.
- // args order: tag, data, children, normalizationType, alwaysNormalize
- // internal version is used by render functions compiled from templates
- // @ts-expect-error
- vm._c = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, false); };
- // normalization is always applied for the public version, used in
- // user-written render functions.
- // @ts-expect-error
- vm.$createElement = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, true); };
- // $attrs & $listeners are exposed for easier HOC creation.
- // they need to be reactive so that HOCs using them are always updated
- var parentData = parentVnode && parentVnode.data;
- /* istanbul ignore else */
- if (false) {}
- else {
- defineReactive(vm, '$attrs', (parentData && parentData.attrs) || emptyObject, null, true);
- defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true);
- }
- }
- var currentRenderingInstance = null;
- function renderMixin(Vue) {
- // install runtime convenience helpers
- installRenderHelpers(Vue.prototype);
- Vue.prototype.$nextTick = function (fn) {
- return nextTick(fn, this);
- };
- Vue.prototype._render = function () {
- var vm = this;
- var _a = vm.$options, render = _a.render, _parentVnode = _a._parentVnode;
- if (_parentVnode && vm._isMounted) {
- vm.$scopedSlots = normalizeScopedSlots(vm.$parent, _parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots);
- if (vm._slotsProxy) {
- syncSetupSlots(vm._slotsProxy, vm.$scopedSlots);
- }
- }
- // set parent vnode. this allows render functions to have access
- // to the data on the placeholder node.
- vm.$vnode = _parentVnode;
- // render self
- var prevInst = currentInstance;
- var prevRenderInst = currentRenderingInstance;
- var vnode;
- try {
- setCurrentInstance(vm);
- currentRenderingInstance = vm;
- vnode = render.call(vm._renderProxy, vm.$createElement);
- }
- catch (e) {
- handleError(e, vm, "render");
- // return error render result,
- // or previous vnode to prevent render error causing blank component
- /* istanbul ignore else */
- if (false) {}
- else {
- vnode = vm._vnode;
- }
- }
- finally {
- currentRenderingInstance = prevRenderInst;
- setCurrentInstance(prevInst);
- }
- // if the returned array contains only a single node, allow it
- if (isArray(vnode) && vnode.length === 1) {
- vnode = vnode[0];
- }
- // return empty vnode in case the render function errored out
- if (!(vnode instanceof VNode)) {
- if (false) {}
- vnode = createEmptyVNode();
- }
- // set parent
- vnode.parent = _parentVnode;
- return vnode;
- };
- }
- function ensureCtor(comp, base) {
- if (comp.__esModule || (hasSymbol && comp[Symbol.toStringTag] === 'Module')) {
- comp = comp.default;
- }
- return isObject(comp) ? base.extend(comp) : comp;
- }
- function createAsyncPlaceholder(factory, data, context, children, tag) {
- var node = createEmptyVNode();
- node.asyncFactory = factory;
- node.asyncMeta = { data: data, context: context, children: children, tag: tag };
- return node;
- }
- function resolveAsyncComponent(factory, baseCtor) {
- if (isTrue(factory.error) && isDef(factory.errorComp)) {
- return factory.errorComp;
- }
- if (isDef(factory.resolved)) {
- return factory.resolved;
- }
- var owner = currentRenderingInstance;
- if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
- // already pending
- factory.owners.push(owner);
- }
- if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
- return factory.loadingComp;
- }
- if (owner && !isDef(factory.owners)) {
- var owners_1 = (factory.owners = [owner]);
- var sync_1 = true;
- var timerLoading_1 = null;
- var timerTimeout_1 = null;
- owner.$on('hook:destroyed', function () { return remove$2(owners_1, owner); });
- var forceRender_1 = function (renderCompleted) {
- for (var i = 0, l = owners_1.length; i < l; i++) {
- owners_1[i].$forceUpdate();
- }
- if (renderCompleted) {
- owners_1.length = 0;
- if (timerLoading_1 !== null) {
- clearTimeout(timerLoading_1);
- timerLoading_1 = null;
- }
- if (timerTimeout_1 !== null) {
- clearTimeout(timerTimeout_1);
- timerTimeout_1 = null;
- }
- }
- };
- var resolve = once(function (res) {
- // cache resolved
- factory.resolved = ensureCtor(res, baseCtor);
- // invoke callbacks only if this is not a synchronous resolve
- // (async resolves are shimmed as synchronous during SSR)
- if (!sync_1) {
- forceRender_1(true);
- }
- else {
- owners_1.length = 0;
- }
- });
- var reject_1 = once(function (reason) {
- false &&
- false;
- if (isDef(factory.errorComp)) {
- factory.error = true;
- forceRender_1(true);
- }
- });
- var res_1 = factory(resolve, reject_1);
- if (isObject(res_1)) {
- if (isPromise(res_1)) {
- // () => Promise
- if (isUndef(factory.resolved)) {
- res_1.then(resolve, reject_1);
- }
- }
- else if (isPromise(res_1.component)) {
- res_1.component.then(resolve, reject_1);
- if (isDef(res_1.error)) {
- factory.errorComp = ensureCtor(res_1.error, baseCtor);
- }
- if (isDef(res_1.loading)) {
- factory.loadingComp = ensureCtor(res_1.loading, baseCtor);
- if (res_1.delay === 0) {
- factory.loading = true;
- }
- else {
- // @ts-expect-error NodeJS timeout type
- timerLoading_1 = setTimeout(function () {
- timerLoading_1 = null;
- if (isUndef(factory.resolved) && isUndef(factory.error)) {
- factory.loading = true;
- forceRender_1(false);
- }
- }, res_1.delay || 200);
- }
- }
- if (isDef(res_1.timeout)) {
- // @ts-expect-error NodeJS timeout type
- timerTimeout_1 = setTimeout(function () {
- timerTimeout_1 = null;
- if (isUndef(factory.resolved)) {
- reject_1( false ? undefined : null);
- }
- }, res_1.timeout);
- }
- }
- }
- sync_1 = false;
- // return in case resolved synchronously
- return factory.loading ? factory.loadingComp : factory.resolved;
- }
- }
- function getFirstComponentChild(children) {
- if (isArray(children)) {
- for (var i = 0; i < children.length; i++) {
- var c = children[i];
- if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {
- return c;
- }
- }
- }
- }
- var SIMPLE_NORMALIZE = 1;
- var ALWAYS_NORMALIZE = 2;
- // wrapper function for providing a more flexible interface
- // without getting yelled at by flow
- function createElement$1(context, tag, data, children, normalizationType, alwaysNormalize) {
- if (isArray(data) || isPrimitive(data)) {
- normalizationType = children;
- children = data;
- data = undefined;
- }
- if (isTrue(alwaysNormalize)) {
- normalizationType = ALWAYS_NORMALIZE;
- }
- return _createElement(context, tag, data, children, normalizationType);
- }
- function _createElement(context, tag, data, children, normalizationType) {
- if (isDef(data) && isDef(data.__ob__)) {
- false &&
- false;
- return createEmptyVNode();
- }
- // object syntax in v-bind
- if (isDef(data) && isDef(data.is)) {
- tag = data.is;
- }
- if (!tag) {
- // in case of component :is set to falsy value
- return createEmptyVNode();
- }
- // warn against non-primitive key
- if (false) {}
- // support single function children as default scoped slot
- if (isArray(children) && isFunction(children[0])) {
- data = data || {};
- data.scopedSlots = { default: children[0] };
- children.length = 0;
- }
- if (normalizationType === ALWAYS_NORMALIZE) {
- children = normalizeChildren(children);
- }
- else if (normalizationType === SIMPLE_NORMALIZE) {
- children = simpleNormalizeChildren(children);
- }
- var vnode, ns;
- if (typeof tag === 'string') {
- var Ctor = void 0;
- ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
- if (config.isReservedTag(tag)) {
- // platform built-in elements
- if (false) {}
- vnode = new VNode(config.parsePlatformTagName(tag), data, children, undefined, undefined, context);
- }
- else if ((!data || !data.pre) &&
- isDef((Ctor = resolveAsset(context.$options, 'components', tag)))) {
- // component
- vnode = createComponent(Ctor, data, context, children, tag);
- }
- else {
- // unknown or unlisted namespaced elements
- // check at runtime because it may get assigned a namespace when its
- // parent normalizes children
- vnode = new VNode(tag, data, children, undefined, undefined, context);
- }
- }
- else {
- // direct component options / constructor
- vnode = createComponent(tag, data, context, children);
- }
- if (isArray(vnode)) {
- return vnode;
- }
- else if (isDef(vnode)) {
- if (isDef(ns))
- applyNS(vnode, ns);
- if (isDef(data))
- registerDeepBindings(data);
- return vnode;
- }
- else {
- return createEmptyVNode();
- }
- }
- function applyNS(vnode, ns, force) {
- vnode.ns = ns;
- if (vnode.tag === 'foreignObject') {
- // use default namespace inside foreignObject
- ns = undefined;
- force = true;
- }
- if (isDef(vnode.children)) {
- for (var i = 0, l = vnode.children.length; i < l; i++) {
- var child = vnode.children[i];
- if (isDef(child.tag) &&
- (isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {
- applyNS(child, ns, force);
- }
- }
- }
- }
- // ref #5318
- // necessary to ensure parent re-render when deep bindings like :style and
- // :class are used on slot nodes
- function registerDeepBindings(data) {
- if (isObject(data.style)) {
- traverse(data.style);
- }
- if (isObject(data.class)) {
- traverse(data.class);
- }
- }
- /**
- * @internal this function needs manual public type declaration because it relies
- * on previously manually authored types from Vue 2
- */
- function h(type, props, children) {
- if (!currentInstance) {
- false &&
- false;
- }
- return createElement$1(currentInstance, type, props, children, 2, true);
- }
- function handleError(err, vm, info) {
- // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.
- // See: https://github.com/vuejs/vuex/issues/1505
- pushTarget();
- try {
- if (vm) {
- var cur = vm;
- while ((cur = cur.$parent)) {
- var hooks = cur.$options.errorCaptured;
- if (hooks) {
- for (var i = 0; i < hooks.length; i++) {
- try {
- var capture = hooks[i].call(cur, err, vm, info) === false;
- if (capture)
- return;
- }
- catch (e) {
- globalHandleError(e, cur, 'errorCaptured hook');
- }
- }
- }
- }
- }
- globalHandleError(err, vm, info);
- }
- finally {
- popTarget();
- }
- }
- function invokeWithErrorHandling(handler, context, args, vm, info) {
- var res;
- try {
- res = args ? handler.apply(context, args) : handler.call(context);
- if (res && !res._isVue && isPromise(res) && !res._handled) {
- res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
- res._handled = true;
- }
- }
- catch (e) {
- handleError(e, vm, info);
- }
- return res;
- }
- function globalHandleError(err, vm, info) {
- if (config.errorHandler) {
- try {
- return config.errorHandler.call(null, err, vm, info);
- }
- catch (e) {
- // if the user intentionally throws the original error in the handler,
- // do not log it twice
- if (e !== err) {
- logError(e, null, 'config.errorHandler');
- }
- }
- }
- logError(err, vm, info);
- }
- function logError(err, vm, info) {
- if (false) {}
- /* istanbul ignore else */
- if (inBrowser && typeof console !== 'undefined') {
- console.error(err);
- }
- else {
- throw err;
- }
- }
- /* globals MutationObserver */
- var isUsingMicroTask = false;
- var callbacks = [];
- var pending = false;
- function flushCallbacks() {
- pending = false;
- var copies = callbacks.slice(0);
- callbacks.length = 0;
- for (var i = 0; i < copies.length; i++) {
- copies[i]();
- }
- }
- // Here we have async deferring wrappers using microtasks.
- // In 2.5 we used (macro) tasks (in combination with microtasks).
- // However, it has subtle problems when state is changed right before repaint
- // (e.g. #6813, out-in transitions).
- // Also, using (macro) tasks in event handler would cause some weird behaviors
- // that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).
- // So we now use microtasks everywhere, again.
- // A major drawback of this tradeoff is that there are some scenarios
- // where microtasks have too high a priority and fire in between supposedly
- // sequential events (e.g. #4521, #6690, which have workarounds)
- // or even between bubbling of the same event (#6566).
- var timerFunc;
- // The nextTick behavior leverages the microtask queue, which can be accessed
- // via either native Promise.then or MutationObserver.
- // MutationObserver has wider support, however it is seriously bugged in
- // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
- // completely stops working after triggering a few times... so, if native
- // Promise is available, we will use it:
- /* istanbul ignore next, $flow-disable-line */
- if (typeof Promise !== 'undefined' && isNative(Promise)) {
- var p_1 = Promise.resolve();
- timerFunc = function () {
- p_1.then(flushCallbacks);
- // In problematic UIWebViews, Promise.then doesn't completely break, but
- // it can get stuck in a weird state where callbacks are pushed into the
- // microtask queue but the queue isn't being flushed, until the browser
- // needs to do some other work, e.g. handle a timer. Therefore we can
- // "force" the microtask queue to be flushed by adding an empty timer.
- if (isIOS)
- setTimeout(noop);
- };
- isUsingMicroTask = true;
- }
- else if (!isIE &&
- typeof MutationObserver !== 'undefined' &&
- (isNative(MutationObserver) ||
- // PhantomJS and iOS 7.x
- MutationObserver.toString() === '[object MutationObserverConstructor]')) {
- // Use MutationObserver where native Promise is not available,
- // e.g. PhantomJS, iOS7, Android 4.4
- // (#6466 MutationObserver is unreliable in IE11)
- var counter_1 = 1;
- var observer = new MutationObserver(flushCallbacks);
- var textNode_1 = document.createTextNode(String(counter_1));
- observer.observe(textNode_1, {
- characterData: true
- });
- timerFunc = function () {
- counter_1 = (counter_1 + 1) % 2;
- textNode_1.data = String(counter_1);
- };
- isUsingMicroTask = true;
- }
- else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {
- // Fallback to setImmediate.
- // Technically it leverages the (macro) task queue,
- // but it is still a better choice than setTimeout.
- timerFunc = function () {
- setImmediate(flushCallbacks);
- };
- }
- else {
- // Fallback to setTimeout.
- timerFunc = function () {
- setTimeout(flushCallbacks, 0);
- };
- }
- /**
- * @internal
- */
- function nextTick(cb, ctx) {
- var _resolve;
- callbacks.push(function () {
- if (cb) {
- try {
- cb.call(ctx);
- }
- catch (e) {
- handleError(e, ctx, 'nextTick');
- }
- }
- else if (_resolve) {
- _resolve(ctx);
- }
- });
- if (!pending) {
- pending = true;
- timerFunc();
- }
- // $flow-disable-line
- if (!cb && typeof Promise !== 'undefined') {
- return new Promise(function (resolve) {
- _resolve = resolve;
- });
- }
- }
- function useCssModule(name) {
- if (name === void 0) { name = '$style'; }
- /* istanbul ignore else */
- {
- if (!currentInstance) {
- false && false;
- return emptyObject;
- }
- var mod = currentInstance[name];
- if (!mod) {
- false &&
- false;
- return emptyObject;
- }
- return mod;
- }
- }
- /**
- * Runtime helper for SFC's CSS variable injection feature.
- * @private
- */
- function useCssVars(getter) {
- if (!inBrowser && !false)
- return;
- var instance = currentInstance;
- if (!instance) {
- false &&
- false;
- return;
- }
- watchPostEffect(function () {
- var el = instance.$el;
- var vars = getter(instance, instance._setupProxy);
- if (el && el.nodeType === 1) {
- var style = el.style;
- for (var key in vars) {
- style.setProperty("--".concat(key), vars[key]);
- }
- }
- });
- }
- /**
- * v3-compatible async component API.
- * @internal the type is manually declared in <root>/types/v3-define-async-component.d.ts
- * because it relies on existing manual types
- */
- function defineAsyncComponent(source) {
- if (isFunction(source)) {
- source = { loader: source };
- }
- var loader = source.loader, loadingComponent = source.loadingComponent, errorComponent = source.errorComponent, _a = source.delay, delay = _a === void 0 ? 200 : _a, timeout = source.timeout, // undefined = never times out
- _b = source.suspensible, // undefined = never times out
- suspensible = _b === void 0 ? false : _b, // in Vue 3 default is true
- userOnError = source.onError;
- if (false) {}
- var pendingRequest = null;
- var retries = 0;
- var retry = function () {
- retries++;
- pendingRequest = null;
- return load();
- };
- var load = function () {
- var thisRequest;
- return (pendingRequest ||
- (thisRequest = pendingRequest =
- loader()
- .catch(function (err) {
- err = err instanceof Error ? err : new Error(String(err));
- if (userOnError) {
- return new Promise(function (resolve, reject) {
- var userRetry = function () { return resolve(retry()); };
- var userFail = function () { return reject(err); };
- userOnError(err, userRetry, userFail, retries + 1);
- });
- }
- else {
- throw err;
- }
- })
- .then(function (comp) {
- if (thisRequest !== pendingRequest && pendingRequest) {
- return pendingRequest;
- }
- if (false) {}
- // interop module default
- if (comp &&
- (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {
- comp = comp.default;
- }
- if (false) {}
- return comp;
- })));
- };
- return function () {
- var component = load();
- return {
- component: component,
- delay: delay,
- timeout: timeout,
- error: errorComponent,
- loading: loadingComponent
- };
- };
- }
- function createLifeCycle(hookName) {
- return function (fn, target) {
- if (target === void 0) { target = currentInstance; }
- if (!target) {
- false &&
- false;
- return;
- }
- return injectHook(target, hookName, fn);
- };
- }
- function formatName(name) {
- if (name === 'beforeDestroy') {
- name = 'beforeUnmount';
- }
- else if (name === 'destroyed') {
- name = 'unmounted';
- }
- return "on".concat(name[0].toUpperCase() + name.slice(1));
- }
- function injectHook(instance, hookName, fn) {
- var options = instance.$options;
- options[hookName] = mergeLifecycleHook(options[hookName], fn);
- }
- var onBeforeMount = createLifeCycle('beforeMount');
- var onMounted = createLifeCycle('mounted');
- var onBeforeUpdate = createLifeCycle('beforeUpdate');
- var onUpdated = createLifeCycle('updated');
- var onBeforeUnmount = createLifeCycle('beforeDestroy');
- var onUnmounted = createLifeCycle('destroyed');
- var onActivated = createLifeCycle('activated');
- var onDeactivated = createLifeCycle('deactivated');
- var onServerPrefetch = createLifeCycle('serverPrefetch');
- var onRenderTracked = createLifeCycle('renderTracked');
- var onRenderTriggered = createLifeCycle('renderTriggered');
- var injectErrorCapturedHook = createLifeCycle('errorCaptured');
- function onErrorCaptured(hook, target) {
- if (target === void 0) { target = currentInstance; }
- injectErrorCapturedHook(hook, target);
- }
- /**
- * Note: also update dist/vue.runtime.mjs when adding new exports to this file.
- */
- var version = '2.7.16';
- /**
- * @internal type is manually declared in <root>/types/v3-define-component.d.ts
- */
- function defineComponent(options) {
- return options;
- }
- var seenObjects = new _Set();
- /**
- * Recursively traverse an object to evoke all converted
- * getters, so that every nested property inside the object
- * is collected as a "deep" dependency.
- */
- function traverse(val) {
- _traverse(val, seenObjects);
- seenObjects.clear();
- return val;
- }
- function _traverse(val, seen) {
- var i, keys;
- var isA = isArray(val);
- if ((!isA && !isObject(val)) ||
- val.__v_skip /* ReactiveFlags.SKIP */ ||
- Object.isFrozen(val) ||
- val instanceof VNode) {
- return;
- }
- if (val.__ob__) {
- var depId = val.__ob__.dep.id;
- if (seen.has(depId)) {
- return;
- }
- seen.add(depId);
- }
- if (isA) {
- i = val.length;
- while (i--)
- _traverse(val[i], seen);
- }
- else if (isRef(val)) {
- _traverse(val.value, seen);
- }
- else {
- keys = Object.keys(val);
- i = keys.length;
- while (i--)
- _traverse(val[keys[i]], seen);
- }
- }
- var uid$1 = 0;
- /**
- * A watcher parses an expression, collects dependencies,
- * and fires callback when the expression value changes.
- * This is used for both the $watch() api and directives.
- * @internal
- */
- var Watcher = /** @class */ (function () {
- function Watcher(vm, expOrFn, cb, options, isRenderWatcher) {
- recordEffectScope(this,
- // if the active effect scope is manually created (not a component scope),
- // prioritize it
- activeEffectScope && !activeEffectScope._vm
- ? activeEffectScope
- : vm
- ? vm._scope
- : undefined);
- if ((this.vm = vm) && isRenderWatcher) {
- vm._watcher = this;
- }
- // options
- if (options) {
- this.deep = !!options.deep;
- this.user = !!options.user;
- this.lazy = !!options.lazy;
- this.sync = !!options.sync;
- this.before = options.before;
- if (false) {}
- }
- else {
- this.deep = this.user = this.lazy = this.sync = false;
- }
- this.cb = cb;
- this.id = ++uid$1; // uid for batching
- this.active = true;
- this.post = false;
- this.dirty = this.lazy; // for lazy watchers
- this.deps = [];
- this.newDeps = [];
- this.depIds = new _Set();
- this.newDepIds = new _Set();
- this.expression = false ? undefined : '';
- // parse expression for getter
- if (isFunction(expOrFn)) {
- this.getter = expOrFn;
- }
- else {
- this.getter = parsePath(expOrFn);
- if (!this.getter) {
- this.getter = noop;
- false &&
- false;
- }
- }
- this.value = this.lazy ? undefined : this.get();
- }
- /**
- * Evaluate the getter, and re-collect dependencies.
- */
- Watcher.prototype.get = function () {
- pushTarget(this);
- var value;
- var vm = this.vm;
- try {
- value = this.getter.call(vm, vm);
- }
- catch (e) {
- if (this.user) {
- handleError(e, vm, "getter for watcher \"".concat(this.expression, "\""));
- }
- else {
- throw e;
- }
- }
- finally {
- // "touch" every property so they are all tracked as
- // dependencies for deep watching
- if (this.deep) {
- traverse(value);
- }
- popTarget();
- this.cleanupDeps();
- }
- return value;
- };
- /**
- * Add a dependency to this directive.
- */
- Watcher.prototype.addDep = function (dep) {
- var id = dep.id;
- if (!this.newDepIds.has(id)) {
- this.newDepIds.add(id);
- this.newDeps.push(dep);
- if (!this.depIds.has(id)) {
- dep.addSub(this);
- }
- }
- };
- /**
- * Clean up for dependency collection.
- */
- Watcher.prototype.cleanupDeps = function () {
- var i = this.deps.length;
- while (i--) {
- var dep = this.deps[i];
- if (!this.newDepIds.has(dep.id)) {
- dep.removeSub(this);
- }
- }
- var tmp = this.depIds;
- this.depIds = this.newDepIds;
- this.newDepIds = tmp;
- this.newDepIds.clear();
- tmp = this.deps;
- this.deps = this.newDeps;
- this.newDeps = tmp;
- this.newDeps.length = 0;
- };
- /**
- * Subscriber interface.
- * Will be called when a dependency changes.
- */
- Watcher.prototype.update = function () {
- /* istanbul ignore else */
- if (this.lazy) {
- this.dirty = true;
- }
- else if (this.sync) {
- this.run();
- }
- else {
- queueWatcher(this);
- }
- };
- /**
- * Scheduler job interface.
- * Will be called by the scheduler.
- */
- Watcher.prototype.run = function () {
- if (this.active) {
- var value = this.get();
- if (value !== this.value ||
- // Deep watchers and watchers on Object/Arrays should fire even
- // when the value is the same, because the value may
- // have mutated.
- isObject(value) ||
- this.deep) {
- // set new value
- var oldValue = this.value;
- this.value = value;
- if (this.user) {
- var info = "callback for watcher \"".concat(this.expression, "\"");
- invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info);
- }
- else {
- this.cb.call(this.vm, value, oldValue);
- }
- }
- }
- };
- /**
- * Evaluate the value of the watcher.
- * This only gets called for lazy watchers.
- */
- Watcher.prototype.evaluate = function () {
- this.value = this.get();
- this.dirty = false;
- };
- /**
- * Depend on all deps collected by this watcher.
- */
- Watcher.prototype.depend = function () {
- var i = this.deps.length;
- while (i--) {
- this.deps[i].depend();
- }
- };
- /**
- * Remove self from all dependencies' subscriber list.
- */
- Watcher.prototype.teardown = function () {
- if (this.vm && !this.vm._isBeingDestroyed) {
- remove$2(this.vm._scope.effects, this);
- }
- if (this.active) {
- var i = this.deps.length;
- while (i--) {
- this.deps[i].removeSub(this);
- }
- this.active = false;
- if (this.onStop) {
- this.onStop();
- }
- }
- };
- return Watcher;
- }());
- var mark;
- var measure;
- if (false) { var perf_1; }
- function initEvents(vm) {
- vm._events = Object.create(null);
- vm._hasHookEvent = false;
- // init parent attached events
- var listeners = vm.$options._parentListeners;
- if (listeners) {
- updateComponentListeners(vm, listeners);
- }
- }
- var target$1;
- function add$1(event, fn) {
- target$1.$on(event, fn);
- }
- function remove$1(event, fn) {
- target$1.$off(event, fn);
- }
- function createOnceHandler$1(event, fn) {
- var _target = target$1;
- return function onceHandler() {
- var res = fn.apply(null, arguments);
- if (res !== null) {
- _target.$off(event, onceHandler);
- }
- };
- }
- function updateComponentListeners(vm, listeners, oldListeners) {
- target$1 = vm;
- updateListeners(listeners, oldListeners || {}, add$1, remove$1, createOnceHandler$1, vm);
- target$1 = undefined;
- }
- function eventsMixin(Vue) {
- var hookRE = /^hook:/;
- Vue.prototype.$on = function (event, fn) {
- var vm = this;
- if (isArray(event)) {
- for (var i = 0, l = event.length; i < l; i++) {
- vm.$on(event[i], fn);
- }
- }
- else {
- (vm._events[event] || (vm._events[event] = [])).push(fn);
- // optimize hook:event cost by using a boolean flag marked at registration
- // instead of a hash lookup
- if (hookRE.test(event)) {
- vm._hasHookEvent = true;
- }
- }
- return vm;
- };
- Vue.prototype.$once = function (event, fn) {
- var vm = this;
- function on() {
- vm.$off(event, on);
- fn.apply(vm, arguments);
- }
- on.fn = fn;
- vm.$on(event, on);
- return vm;
- };
- Vue.prototype.$off = function (event, fn) {
- var vm = this;
- // all
- if (!arguments.length) {
- vm._events = Object.create(null);
- return vm;
- }
- // array of events
- if (isArray(event)) {
- for (var i_1 = 0, l = event.length; i_1 < l; i_1++) {
- vm.$off(event[i_1], fn);
- }
- return vm;
- }
- // specific event
- var cbs = vm._events[event];
- if (!cbs) {
- return vm;
- }
- if (!fn) {
- vm._events[event] = null;
- return vm;
- }
- // specific handler
- var cb;
- var i = cbs.length;
- while (i--) {
- cb = cbs[i];
- if (cb === fn || cb.fn === fn) {
- cbs.splice(i, 1);
- break;
- }
- }
- return vm;
- };
- Vue.prototype.$emit = function (event) {
- var vm = this;
- if (false) { var lowerCaseEvent; }
- var cbs = vm._events[event];
- if (cbs) {
- cbs = cbs.length > 1 ? toArray(cbs) : cbs;
- var args = toArray(arguments, 1);
- var info = "event handler for \"".concat(event, "\"");
- for (var i = 0, l = cbs.length; i < l; i++) {
- invokeWithErrorHandling(cbs[i], vm, args, vm, info);
- }
- }
- return vm;
- };
- }
- var activeInstance = null;
- var isUpdatingChildComponent = false;
- function setActiveInstance(vm) {
- var prevActiveInstance = activeInstance;
- activeInstance = vm;
- return function () {
- activeInstance = prevActiveInstance;
- };
- }
- function initLifecycle(vm) {
- var options = vm.$options;
- // locate first non-abstract parent
- var parent = options.parent;
- if (parent && !options.abstract) {
- while (parent.$options.abstract && parent.$parent) {
- parent = parent.$parent;
- }
- parent.$children.push(vm);
- }
- vm.$parent = parent;
- vm.$root = parent ? parent.$root : vm;
- vm.$children = [];
- vm.$refs = {};
- vm._provided = parent ? parent._provided : Object.create(null);
- vm._watcher = null;
- vm._inactive = null;
- vm._directInactive = false;
- vm._isMounted = false;
- vm._isDestroyed = false;
- vm._isBeingDestroyed = false;
- }
- function lifecycleMixin(Vue) {
- Vue.prototype._update = function (vnode, hydrating) {
- var vm = this;
- var prevEl = vm.$el;
- var prevVnode = vm._vnode;
- var restoreActiveInstance = setActiveInstance(vm);
- vm._vnode = vnode;
- // Vue.prototype.__patch__ is injected in entry points
- // based on the rendering backend used.
- if (!prevVnode) {
- // initial render
- vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);
- }
- else {
- // updates
- vm.$el = vm.__patch__(prevVnode, vnode);
- }
- restoreActiveInstance();
- // update __vue__ reference
- if (prevEl) {
- prevEl.__vue__ = null;
- }
- if (vm.$el) {
- vm.$el.__vue__ = vm;
- }
- // if parent is an HOC, update its $el as well
- var wrapper = vm;
- while (wrapper &&
- wrapper.$vnode &&
- wrapper.$parent &&
- wrapper.$vnode === wrapper.$parent._vnode) {
- wrapper.$parent.$el = wrapper.$el;
- wrapper = wrapper.$parent;
- }
- // updated hook is called by the scheduler to ensure that children are
- // updated in a parent's updated hook.
- };
- Vue.prototype.$forceUpdate = function () {
- var vm = this;
- if (vm._watcher) {
- vm._watcher.update();
- }
- };
- Vue.prototype.$destroy = function () {
- var vm = this;
- if (vm._isBeingDestroyed) {
- return;
- }
- callHook$1(vm, 'beforeDestroy');
- vm._isBeingDestroyed = true;
- // remove self from parent
- var parent = vm.$parent;
- if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
- remove$2(parent.$children, vm);
- }
- // teardown scope. this includes both the render watcher and other
- // watchers created
- vm._scope.stop();
- // remove reference from data ob
- // frozen object may not have observer.
- if (vm._data.__ob__) {
- vm._data.__ob__.vmCount--;
- }
- // call the last hook...
- vm._isDestroyed = true;
- // invoke destroy hooks on current rendered tree
- vm.__patch__(vm._vnode, null);
- // fire destroyed hook
- callHook$1(vm, 'destroyed');
- // turn off all instance listeners.
- vm.$off();
- // remove __vue__ reference
- if (vm.$el) {
- vm.$el.__vue__ = null;
- }
- // release circular reference (#6759)
- if (vm.$vnode) {
- vm.$vnode.parent = null;
- }
- };
- }
- function mountComponent(vm, el, hydrating) {
- vm.$el = el;
- if (!vm.$options.render) {
- // @ts-expect-error invalid type
- vm.$options.render = createEmptyVNode;
- if (false) {}
- }
- callHook$1(vm, 'beforeMount');
- var updateComponent;
- /* istanbul ignore if */
- if (false) {}
- else {
- updateComponent = function () {
- vm._update(vm._render(), hydrating);
- };
- }
- var watcherOptions = {
- before: function () {
- if (vm._isMounted && !vm._isDestroyed) {
- callHook$1(vm, 'beforeUpdate');
- }
- }
- };
- if (false) {}
- // we set this to vm._watcher inside the watcher's constructor
- // since the watcher's initial patch may call $forceUpdate (e.g. inside child
- // component's mounted hook), which relies on vm._watcher being already defined
- new Watcher(vm, updateComponent, noop, watcherOptions, true /* isRenderWatcher */);
- hydrating = false;
- // flush buffer for flush: "pre" watchers queued in setup()
- var preWatchers = vm._preWatchers;
- if (preWatchers) {
- for (var i = 0; i < preWatchers.length; i++) {
- preWatchers[i].run();
- }
- }
- // manually mounted instance, call mounted on self
- // mounted is called for render-created child components in its inserted hook
- if (vm.$vnode == null) {
- vm._isMounted = true;
- callHook$1(vm, 'mounted');
- }
- return vm;
- }
- function updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) {
- if (false) {}
- // determine whether component has slot children
- // we need to do this before overwriting $options._renderChildren.
- // check if there are dynamic scopedSlots (hand-written or compiled but with
- // dynamic slot names). Static scoped slots compiled from template has the
- // "$stable" marker.
- var newScopedSlots = parentVnode.data.scopedSlots;
- var oldScopedSlots = vm.$scopedSlots;
- var hasDynamicScopedSlot = !!((newScopedSlots && !newScopedSlots.$stable) ||
- (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||
- (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) ||
- (!newScopedSlots && vm.$scopedSlots.$key));
- // Any static slot children from the parent may have changed during parent's
- // update. Dynamic scoped slots may also have changed. In such cases, a forced
- // update is necessary to ensure correctness.
- var needsForceUpdate = !!(renderChildren || // has new static slots
- vm.$options._renderChildren || // has old static slots
- hasDynamicScopedSlot);
- var prevVNode = vm.$vnode;
- vm.$options._parentVnode = parentVnode;
- vm.$vnode = parentVnode; // update vm's placeholder node without re-render
- if (vm._vnode) {
- // update child tree's parent
- vm._vnode.parent = parentVnode;
- }
- vm.$options._renderChildren = renderChildren;
- // update $attrs and $listeners hash
- // these are also reactive so they may trigger child update if the child
- // used them during render
- var attrs = parentVnode.data.attrs || emptyObject;
- if (vm._attrsProxy) {
- // force update if attrs are accessed and has changed since it may be
- // passed to a child component.
- if (syncSetupProxy(vm._attrsProxy, attrs, (prevVNode.data && prevVNode.data.attrs) || emptyObject, vm, '$attrs')) {
- needsForceUpdate = true;
- }
- }
- vm.$attrs = attrs;
- // update listeners
- listeners = listeners || emptyObject;
- var prevListeners = vm.$options._parentListeners;
- if (vm._listenersProxy) {
- syncSetupProxy(vm._listenersProxy, listeners, prevListeners || emptyObject, vm, '$listeners');
- }
- vm.$listeners = vm.$options._parentListeners = listeners;
- updateComponentListeners(vm, listeners, prevListeners);
- // update props
- if (propsData && vm.$options.props) {
- toggleObserving(false);
- var props = vm._props;
- var propKeys = vm.$options._propKeys || [];
- for (var i = 0; i < propKeys.length; i++) {
- var key = propKeys[i];
- var propOptions = vm.$options.props; // wtf flow?
- props[key] = validateProp(key, propOptions, propsData, vm);
- }
- toggleObserving(true);
- // keep a copy of raw propsData
- vm.$options.propsData = propsData;
- }
- // resolve slots + force update if has children
- if (needsForceUpdate) {
- vm.$slots = resolveSlots(renderChildren, parentVnode.context);
- vm.$forceUpdate();
- }
- if (false) {}
- }
- function isInInactiveTree(vm) {
- while (vm && (vm = vm.$parent)) {
- if (vm._inactive)
- return true;
- }
- return false;
- }
- function activateChildComponent(vm, direct) {
- if (direct) {
- vm._directInactive = false;
- if (isInInactiveTree(vm)) {
- return;
- }
- }
- else if (vm._directInactive) {
- return;
- }
- if (vm._inactive || vm._inactive === null) {
- vm._inactive = false;
- for (var i = 0; i < vm.$children.length; i++) {
- activateChildComponent(vm.$children[i]);
- }
- callHook$1(vm, 'activated');
- }
- }
- function deactivateChildComponent(vm, direct) {
- if (direct) {
- vm._directInactive = true;
- if (isInInactiveTree(vm)) {
- return;
- }
- }
- if (!vm._inactive) {
- vm._inactive = true;
- for (var i = 0; i < vm.$children.length; i++) {
- deactivateChildComponent(vm.$children[i]);
- }
- callHook$1(vm, 'deactivated');
- }
- }
- function callHook$1(vm, hook, args, setContext) {
- if (setContext === void 0) { setContext = true; }
- // #7573 disable dep collection when invoking lifecycle hooks
- pushTarget();
- var prevInst = currentInstance;
- var prevScope = getCurrentScope();
- setContext && setCurrentInstance(vm);
- var handlers = vm.$options[hook];
- var info = "".concat(hook, " hook");
- if (handlers) {
- for (var i = 0, j = handlers.length; i < j; i++) {
- invokeWithErrorHandling(handlers[i], vm, args || null, vm, info);
- }
- }
- if (vm._hasHookEvent) {
- vm.$emit('hook:' + hook);
- }
- if (setContext) {
- setCurrentInstance(prevInst);
- prevScope && prevScope.on();
- }
- popTarget();
- }
- var MAX_UPDATE_COUNT = 100;
- var queue = [];
- var activatedChildren = [];
- var has = {};
- var circular = {};
- var waiting = false;
- var flushing = false;
- var index = 0;
- /**
- * Reset the scheduler's state.
- */
- function resetSchedulerState() {
- index = queue.length = activatedChildren.length = 0;
- has = {};
- if (false) {}
- waiting = flushing = false;
- }
- // Async edge case #6566 requires saving the timestamp when event listeners are
- // attached. However, calling performance.now() has a perf overhead especially
- // if the page has thousands of event listeners. Instead, we take a timestamp
- // every time the scheduler flushes and use that for all event listeners
- // attached during that flush.
- var currentFlushTimestamp = 0;
- // Async edge case fix requires storing an event listener's attach timestamp.
- var getNow = Date.now;
- // Determine what event timestamp the browser is using. Annoyingly, the
- // timestamp can either be hi-res (relative to page load) or low-res
- // (relative to UNIX epoch), so in order to compare time we have to use the
- // same timestamp type when saving the flush timestamp.
- // All IE versions use low-res event timestamps, and have problematic clock
- // implementations (#9632)
- if (inBrowser && !isIE) {
- var performance_1 = window.performance;
- if (performance_1 &&
- typeof performance_1.now === 'function' &&
- getNow() > document.createEvent('Event').timeStamp) {
- // if the event timestamp, although evaluated AFTER the Date.now(), is
- // smaller than it, it means the event is using a hi-res timestamp,
- // and we need to use the hi-res version for event listener timestamps as
- // well.
- getNow = function () { return performance_1.now(); };
- }
- }
- var sortCompareFn = function (a, b) {
- if (a.post) {
- if (!b.post)
- return 1;
- }
- else if (b.post) {
- return -1;
- }
- return a.id - b.id;
- };
- /**
- * Flush both queues and run the watchers.
- */
- function flushSchedulerQueue() {
- currentFlushTimestamp = getNow();
- flushing = true;
- var watcher, id;
- // Sort queue before flush.
- // This ensures that:
- // 1. Components are updated from parent to child. (because parent is always
- // created before the child)
- // 2. A component's user watchers are run before its render watcher (because
- // user watchers are created before the render watcher)
- // 3. If a component is destroyed during a parent component's watcher run,
- // its watchers can be skipped.
- queue.sort(sortCompareFn);
- // do not cache length because more watchers might be pushed
- // as we run existing watchers
- for (index = 0; index < queue.length; index++) {
- watcher = queue[index];
- if (watcher.before) {
- watcher.before();
- }
- id = watcher.id;
- has[id] = null;
- watcher.run();
- // in dev build, check and stop circular updates.
- if (false) {}
- }
- // keep copies of post queues before resetting state
- var activatedQueue = activatedChildren.slice();
- var updatedQueue = queue.slice();
- resetSchedulerState();
- // call component updated and activated hooks
- callActivatedHooks(activatedQueue);
- callUpdatedHooks(updatedQueue);
- cleanupDeps();
- // devtool hook
- /* istanbul ignore if */
- if (devtools && config.devtools) {
- devtools.emit('flush');
- }
- }
- function callUpdatedHooks(queue) {
- var i = queue.length;
- while (i--) {
- var watcher = queue[i];
- var vm = watcher.vm;
- if (vm && vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {
- callHook$1(vm, 'updated');
- }
- }
- }
- /**
- * Queue a kept-alive component that was activated during patch.
- * The queue will be processed after the entire tree has been patched.
- */
- function queueActivatedComponent(vm) {
- // setting _inactive to false here so that a render function can
- // rely on checking whether it's in an inactive tree (e.g. router-view)
- vm._inactive = false;
- activatedChildren.push(vm);
- }
- function callActivatedHooks(queue) {
- for (var i = 0; i < queue.length; i++) {
- queue[i]._inactive = true;
- activateChildComponent(queue[i], true /* true */);
- }
- }
- /**
- * Push a watcher into the watcher queue.
- * Jobs with duplicate IDs will be skipped unless it's
- * pushed when the queue is being flushed.
- */
- function queueWatcher(watcher) {
- var id = watcher.id;
- if (has[id] != null) {
- return;
- }
- if (watcher === Dep.target && watcher.noRecurse) {
- return;
- }
- has[id] = true;
- if (!flushing) {
- queue.push(watcher);
- }
- else {
- // if already flushing, splice the watcher based on its id
- // if already past its id, it will be run next immediately.
- var i = queue.length - 1;
- while (i > index && queue[i].id > watcher.id) {
- i--;
- }
- queue.splice(i + 1, 0, watcher);
- }
- // queue the flush
- if (!waiting) {
- waiting = true;
- if (false) {}
- nextTick(flushSchedulerQueue);
- }
- }
- function initProvide(vm) {
- var provideOption = vm.$options.provide;
- if (provideOption) {
- var provided = isFunction(provideOption)
- ? provideOption.call(vm)
- : provideOption;
- if (!isObject(provided)) {
- return;
- }
- var source = resolveProvided(vm);
- // IE9 doesn't support Object.getOwnPropertyDescriptors so we have to
- // iterate the keys ourselves.
- var keys = hasSymbol ? Reflect.ownKeys(provided) : Object.keys(provided);
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- Object.defineProperty(source, key, Object.getOwnPropertyDescriptor(provided, key));
- }
- }
- }
- function initInjections(vm) {
- var result = resolveInject(vm.$options.inject, vm);
- if (result) {
- toggleObserving(false);
- Object.keys(result).forEach(function (key) {
- /* istanbul ignore else */
- if (false) {}
- else {
- defineReactive(vm, key, result[key]);
- }
- });
- toggleObserving(true);
- }
- }
- function resolveInject(inject, vm) {
- if (inject) {
- // inject is :any because flow is not smart enough to figure out cached
- var result = Object.create(null);
- var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject);
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- // #6574 in case the inject object is observed...
- if (key === '__ob__')
- continue;
- var provideKey = inject[key].from;
- if (provideKey in vm._provided) {
- result[key] = vm._provided[provideKey];
- }
- else if ('default' in inject[key]) {
- var provideDefault = inject[key].default;
- result[key] = isFunction(provideDefault)
- ? provideDefault.call(vm)
- : provideDefault;
- }
- else if (false) {}
- }
- return result;
- }
- }
- function FunctionalRenderContext(data, props, children, parent, Ctor) {
- var _this = this;
- var options = Ctor.options;
- // ensure the createElement function in functional components
- // gets a unique context - this is necessary for correct named slot check
- var contextVm;
- if (hasOwn(parent, '_uid')) {
- contextVm = Object.create(parent);
- contextVm._original = parent;
- }
- else {
- // the context vm passed in is a functional context as well.
- // in this case we want to make sure we are able to get a hold to the
- // real context instance.
- contextVm = parent;
- // @ts-ignore
- parent = parent._original;
- }
- var isCompiled = isTrue(options._compiled);
- var needNormalization = !isCompiled;
- this.data = data;
- this.props = props;
- this.children = children;
- this.parent = parent;
- this.listeners = data.on || emptyObject;
- this.injections = resolveInject(options.inject, parent);
- this.slots = function () {
- if (!_this.$slots) {
- normalizeScopedSlots(parent, data.scopedSlots, (_this.$slots = resolveSlots(children, parent)));
- }
- return _this.$slots;
- };
- Object.defineProperty(this, 'scopedSlots', {
- enumerable: true,
- get: function () {
- return normalizeScopedSlots(parent, data.scopedSlots, this.slots());
- }
- });
- // support for compiled functional template
- if (isCompiled) {
- // exposing $options for renderStatic()
- this.$options = options;
- // pre-resolve slots for renderSlot()
- this.$slots = this.slots();
- this.$scopedSlots = normalizeScopedSlots(parent, data.scopedSlots, this.$slots);
- }
- if (options._scopeId) {
- this._c = function (a, b, c, d) {
- var vnode = createElement$1(contextVm, a, b, c, d, needNormalization);
- if (vnode && !isArray(vnode)) {
- vnode.fnScopeId = options._scopeId;
- vnode.fnContext = parent;
- }
- return vnode;
- };
- }
- else {
- this._c = function (a, b, c, d) {
- return createElement$1(contextVm, a, b, c, d, needNormalization);
- };
- }
- }
- installRenderHelpers(FunctionalRenderContext.prototype);
- function createFunctionalComponent(Ctor, propsData, data, contextVm, children) {
- var options = Ctor.options;
- var props = {};
- var propOptions = options.props;
- if (isDef(propOptions)) {
- for (var key in propOptions) {
- props[key] = validateProp(key, propOptions, propsData || emptyObject);
- }
- }
- else {
- if (isDef(data.attrs))
- mergeProps(props, data.attrs);
- if (isDef(data.props))
- mergeProps(props, data.props);
- }
- var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor);
- var vnode = options.render.call(null, renderContext._c, renderContext);
- if (vnode instanceof VNode) {
- return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext);
- }
- else if (isArray(vnode)) {
- var vnodes = normalizeChildren(vnode) || [];
- var res = new Array(vnodes.length);
- for (var i = 0; i < vnodes.length; i++) {
- res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);
- }
- return res;
- }
- }
- function cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) {
- // #7817 clone node before setting fnContext, otherwise if the node is reused
- // (e.g. it was from a cached normal slot) the fnContext causes named slots
- // that should not be matched to match.
- var clone = cloneVNode(vnode);
- clone.fnContext = contextVm;
- clone.fnOptions = options;
- if (false) {}
- if (data.slot) {
- (clone.data || (clone.data = {})).slot = data.slot;
- }
- return clone;
- }
- function mergeProps(to, from) {
- for (var key in from) {
- to[camelize(key)] = from[key];
- }
- }
- function getComponentName(options) {
- return options.name || options.__name || options._componentTag;
- }
- // inline hooks to be invoked on component VNodes during patch
- var componentVNodeHooks = {
- init: function (vnode, hydrating) {
- if (vnode.componentInstance &&
- !vnode.componentInstance._isDestroyed &&
- vnode.data.keepAlive) {
- // kept-alive components, treat as a patch
- var mountedNode = vnode; // work around flow
- componentVNodeHooks.prepatch(mountedNode, mountedNode);
- }
- else {
- var child = (vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance));
- child.$mount(hydrating ? vnode.elm : undefined, hydrating);
- }
- },
- prepatch: function (oldVnode, vnode) {
- var options = vnode.componentOptions;
- var child = (vnode.componentInstance = oldVnode.componentInstance);
- updateChildComponent(child, options.propsData, // updated props
- options.listeners, // updated listeners
- vnode, // new parent vnode
- options.children // new children
- );
- },
- insert: function (vnode) {
- var context = vnode.context, componentInstance = vnode.componentInstance;
- if (!componentInstance._isMounted) {
- componentInstance._isMounted = true;
- callHook$1(componentInstance, 'mounted');
- }
- if (vnode.data.keepAlive) {
- if (context._isMounted) {
- // vue-router#1212
- // During updates, a kept-alive component's child components may
- // change, so directly walking the tree here may call activated hooks
- // on incorrect children. Instead we push them into a queue which will
- // be processed after the whole patch process ended.
- queueActivatedComponent(componentInstance);
- }
- else {
- activateChildComponent(componentInstance, true /* direct */);
- }
- }
- },
- destroy: function (vnode) {
- var componentInstance = vnode.componentInstance;
- if (!componentInstance._isDestroyed) {
- if (!vnode.data.keepAlive) {
- componentInstance.$destroy();
- }
- else {
- deactivateChildComponent(componentInstance, true /* direct */);
- }
- }
- }
- };
- var hooksToMerge = Object.keys(componentVNodeHooks);
- function createComponent(Ctor, data, context, children, tag) {
- if (isUndef(Ctor)) {
- return;
- }
- var baseCtor = context.$options._base;
- // plain options object: turn it into a constructor
- if (isObject(Ctor)) {
- Ctor = baseCtor.extend(Ctor);
- }
- // if at this stage it's not a constructor or an async component factory,
- // reject.
- if (typeof Ctor !== 'function') {
- if (false) {}
- return;
- }
- // async component
- var asyncFactory;
- // @ts-expect-error
- if (isUndef(Ctor.cid)) {
- asyncFactory = Ctor;
- Ctor = resolveAsyncComponent(asyncFactory, baseCtor);
- if (Ctor === undefined) {
- // return a placeholder node for async component, which is rendered
- // as a comment node but preserves all the raw information for the node.
- // the information will be used for async server-rendering and hydration.
- return createAsyncPlaceholder(asyncFactory, data, context, children, tag);
- }
- }
- data = data || {};
- // resolve constructor options in case global mixins are applied after
- // component constructor creation
- resolveConstructorOptions(Ctor);
- // transform component v-model data into props & events
- if (isDef(data.model)) {
- // @ts-expect-error
- transformModel(Ctor.options, data);
- }
- // extract props
- // @ts-expect-error
- var propsData = extractPropsFromVNodeData(data, Ctor, tag);
- // functional component
- // @ts-expect-error
- if (isTrue(Ctor.options.functional)) {
- return createFunctionalComponent(Ctor, propsData, data, context, children);
- }
- // extract listeners, since these needs to be treated as
- // child component listeners instead of DOM listeners
- var listeners = data.on;
- // replace with listeners with .native modifier
- // so it gets processed during parent component patch.
- data.on = data.nativeOn;
- // @ts-expect-error
- if (isTrue(Ctor.options.abstract)) {
- // abstract components do not keep anything
- // other than props & listeners & slot
- // work around flow
- var slot = data.slot;
- data = {};
- if (slot) {
- data.slot = slot;
- }
- }
- // install component management hooks onto the placeholder node
- installComponentHooks(data);
- // return a placeholder vnode
- // @ts-expect-error
- var name = getComponentName(Ctor.options) || tag;
- var vnode = new VNode(
- // @ts-expect-error
- "vue-component-".concat(Ctor.cid).concat(name ? "-".concat(name) : ''), data, undefined, undefined, undefined, context,
- // @ts-expect-error
- { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, asyncFactory);
- return vnode;
- }
- function createComponentInstanceForVnode(
- // we know it's MountedComponentVNode but flow doesn't
- vnode,
- // activeInstance in lifecycle state
- parent) {
- var options = {
- _isComponent: true,
- _parentVnode: vnode,
- parent: parent
- };
- // check inline-template render functions
- var inlineTemplate = vnode.data.inlineTemplate;
- if (isDef(inlineTemplate)) {
- options.render = inlineTemplate.render;
- options.staticRenderFns = inlineTemplate.staticRenderFns;
- }
- return new vnode.componentOptions.Ctor(options);
- }
- function installComponentHooks(data) {
- var hooks = data.hook || (data.hook = {});
- for (var i = 0; i < hooksToMerge.length; i++) {
- var key = hooksToMerge[i];
- var existing = hooks[key];
- var toMerge = componentVNodeHooks[key];
- // @ts-expect-error
- if (existing !== toMerge && !(existing && existing._merged)) {
- hooks[key] = existing ? mergeHook(toMerge, existing) : toMerge;
- }
- }
- }
- function mergeHook(f1, f2) {
- var merged = function (a, b) {
- // flow complains about extra args which is why we use any
- f1(a, b);
- f2(a, b);
- };
- merged._merged = true;
- return merged;
- }
- // transform component v-model info (value and callback) into
- // prop and event handler respectively.
- function transformModel(options, data) {
- var prop = (options.model && options.model.prop) || 'value';
- var event = (options.model && options.model.event) || 'input';
- (data.attrs || (data.attrs = {}))[prop] = data.model.value;
- var on = data.on || (data.on = {});
- var existing = on[event];
- var callback = data.model.callback;
- if (isDef(existing)) {
- if (isArray(existing)
- ? existing.indexOf(callback) === -1
- : existing !== callback) {
- on[event] = [callback].concat(existing);
- }
- }
- else {
- on[event] = callback;
- }
- }
- var warn = noop;
- var tip = noop;
- var generateComponentTrace; // work around flow check
- var formatComponentName;
- if (false) { var repeat_1, classify_1, classifyRE_1, hasConsole_1; }
- /**
- * Option overwriting strategies are functions that handle
- * how to merge a parent option value and a child option
- * value into the final value.
- */
- var strats = config.optionMergeStrategies;
- /**
- * Options with restrictions
- */
- if (false) {}
- /**
- * Helper that recursively merges two data objects together.
- */
- function mergeData(to, from, recursive) {
- if (recursive === void 0) { recursive = true; }
- if (!from)
- return to;
- var key, toVal, fromVal;
- var keys = hasSymbol
- ? Reflect.ownKeys(from)
- : Object.keys(from);
- for (var i = 0; i < keys.length; i++) {
- key = keys[i];
- // in case the object is already observed...
- if (key === '__ob__')
- continue;
- toVal = to[key];
- fromVal = from[key];
- if (!recursive || !hasOwn(to, key)) {
- set(to, key, fromVal);
- }
- else if (toVal !== fromVal &&
- isPlainObject(toVal) &&
- isPlainObject(fromVal)) {
- mergeData(toVal, fromVal);
- }
- }
- return to;
- }
- /**
- * Data
- */
- function mergeDataOrFn(parentVal, childVal, vm) {
- if (!vm) {
- // in a Vue.extend merge, both should be functions
- if (!childVal) {
- return parentVal;
- }
- if (!parentVal) {
- return childVal;
- }
- // when parentVal & childVal are both present,
- // we need to return a function that returns the
- // merged result of both functions... no need to
- // check if parentVal is a function here because
- // it has to be a function to pass previous merges.
- return function mergedDataFn() {
- return mergeData(isFunction(childVal) ? childVal.call(this, this) : childVal, isFunction(parentVal) ? parentVal.call(this, this) : parentVal);
- };
- }
- else {
- return function mergedInstanceDataFn() {
- // instance merge
- var instanceData = isFunction(childVal)
- ? childVal.call(vm, vm)
- : childVal;
- var defaultData = isFunction(parentVal)
- ? parentVal.call(vm, vm)
- : parentVal;
- if (instanceData) {
- return mergeData(instanceData, defaultData);
- }
- else {
- return defaultData;
- }
- };
- }
- }
- strats.data = function (parentVal, childVal, vm) {
- if (!vm) {
- if (childVal && typeof childVal !== 'function') {
- false &&
- false;
- return parentVal;
- }
- return mergeDataOrFn(parentVal, childVal);
- }
- return mergeDataOrFn(parentVal, childVal, vm);
- };
- /**
- * Hooks and props are merged as arrays.
- */
- function mergeLifecycleHook(parentVal, childVal) {
- var res = childVal
- ? parentVal
- ? parentVal.concat(childVal)
- : isArray(childVal)
- ? childVal
- : [childVal]
- : parentVal;
- return res ? dedupeHooks(res) : res;
- }
- function dedupeHooks(hooks) {
- var res = [];
- for (var i = 0; i < hooks.length; i++) {
- if (res.indexOf(hooks[i]) === -1) {
- res.push(hooks[i]);
- }
- }
- return res;
- }
- LIFECYCLE_HOOKS.forEach(function (hook) {
- strats[hook] = mergeLifecycleHook;
- });
- /**
- * Assets
- *
- * When a vm is present (instance creation), we need to do
- * a three-way merge between constructor options, instance
- * options and parent options.
- */
- function mergeAssets(parentVal, childVal, vm, key) {
- var res = Object.create(parentVal || null);
- if (childVal) {
- false && false;
- return extend(res, childVal);
- }
- else {
- return res;
- }
- }
- ASSET_TYPES.forEach(function (type) {
- strats[type + 's'] = mergeAssets;
- });
- /**
- * Watchers.
- *
- * Watchers hashes should not overwrite one
- * another, so we merge them as arrays.
- */
- strats.watch = function (parentVal, childVal, vm, key) {
- // work around Firefox's Object.prototype.watch...
- //@ts-expect-error work around
- if (parentVal === nativeWatch)
- parentVal = undefined;
- //@ts-expect-error work around
- if (childVal === nativeWatch)
- childVal = undefined;
- /* istanbul ignore if */
- if (!childVal)
- return Object.create(parentVal || null);
- if (false) {}
- if (!parentVal)
- return childVal;
- var ret = {};
- extend(ret, parentVal);
- for (var key_1 in childVal) {
- var parent_1 = ret[key_1];
- var child = childVal[key_1];
- if (parent_1 && !isArray(parent_1)) {
- parent_1 = [parent_1];
- }
- ret[key_1] = parent_1 ? parent_1.concat(child) : isArray(child) ? child : [child];
- }
- return ret;
- };
- /**
- * Other object hashes.
- */
- strats.props =
- strats.methods =
- strats.inject =
- strats.computed =
- function (parentVal, childVal, vm, key) {
- if (childVal && "production" !== 'production') {
- assertObjectType(key, childVal, vm);
- }
- if (!parentVal)
- return childVal;
- var ret = Object.create(null);
- extend(ret, parentVal);
- if (childVal)
- extend(ret, childVal);
- return ret;
- };
- strats.provide = function (parentVal, childVal) {
- if (!parentVal)
- return childVal;
- return function () {
- var ret = Object.create(null);
- mergeData(ret, isFunction(parentVal) ? parentVal.call(this) : parentVal);
- if (childVal) {
- mergeData(ret, isFunction(childVal) ? childVal.call(this) : childVal, false // non-recursive
- );
- }
- return ret;
- };
- };
- /**
- * Default strategy.
- */
- var defaultStrat = function (parentVal, childVal) {
- return childVal === undefined ? parentVal : childVal;
- };
- /**
- * Validate component names
- */
- function checkComponents(options) {
- for (var key in options.components) {
- validateComponentName(key);
- }
- }
- function validateComponentName(name) {
- if (!new RegExp("^[a-zA-Z][\\-\\.0-9_".concat(unicodeRegExp.source, "]*$")).test(name)) {
- warn('Invalid component name: "' +
- name +
- '". Component names ' +
- 'should conform to valid custom element name in html5 specification.');
- }
- if (isBuiltInTag(name) || config.isReservedTag(name)) {
- warn('Do not use built-in or reserved HTML elements as component ' +
- 'id: ' +
- name);
- }
- }
- /**
- * Ensure all props option syntax are normalized into the
- * Object-based format.
- */
- function normalizeProps(options, vm) {
- var props = options.props;
- if (!props)
- return;
- var res = {};
- var i, val, name;
- if (isArray(props)) {
- i = props.length;
- while (i--) {
- val = props[i];
- if (typeof val === 'string') {
- name = camelize(val);
- res[name] = { type: null };
- }
- else if (false) {}
- }
- }
- else if (isPlainObject(props)) {
- for (var key in props) {
- val = props[key];
- name = camelize(key);
- res[name] = isPlainObject(val) ? val : { type: val };
- }
- }
- else if (false) {}
- options.props = res;
- }
- /**
- * Normalize all injections into Object-based format
- */
- function normalizeInject(options, vm) {
- var inject = options.inject;
- if (!inject)
- return;
- var normalized = (options.inject = {});
- if (isArray(inject)) {
- for (var i = 0; i < inject.length; i++) {
- normalized[inject[i]] = { from: inject[i] };
- }
- }
- else if (isPlainObject(inject)) {
- for (var key in inject) {
- var val = inject[key];
- normalized[key] = isPlainObject(val)
- ? extend({ from: key }, val)
- : { from: val };
- }
- }
- else if (false) {}
- }
- /**
- * Normalize raw function directives into object format.
- */
- function normalizeDirectives$1(options) {
- var dirs = options.directives;
- if (dirs) {
- for (var key in dirs) {
- var def = dirs[key];
- if (isFunction(def)) {
- dirs[key] = { bind: def, update: def };
- }
- }
- }
- }
- function assertObjectType(name, value, vm) {
- if (!isPlainObject(value)) {
- warn("Invalid value for option \"".concat(name, "\": expected an Object, ") +
- "but got ".concat(toRawType(value), "."), vm);
- }
- }
- /**
- * Merge two option objects into a new one.
- * Core utility used in both instantiation and inheritance.
- */
- function mergeOptions(parent, child, vm) {
- if (false) {}
- if (isFunction(child)) {
- // @ts-expect-error
- child = child.options;
- }
- normalizeProps(child, vm);
- normalizeInject(child, vm);
- normalizeDirectives$1(child);
- // Apply extends and mixins on the child options,
- // but only if it is a raw options object that isn't
- // the result of another mergeOptions call.
- // Only merged options has the _base property.
- if (!child._base) {
- if (child.extends) {
- parent = mergeOptions(parent, child.extends, vm);
- }
- if (child.mixins) {
- for (var i = 0, l = child.mixins.length; i < l; i++) {
- parent = mergeOptions(parent, child.mixins[i], vm);
- }
- }
- }
- var options = {};
- var key;
- for (key in parent) {
- mergeField(key);
- }
- for (key in child) {
- if (!hasOwn(parent, key)) {
- mergeField(key);
- }
- }
- function mergeField(key) {
- var strat = strats[key] || defaultStrat;
- options[key] = strat(parent[key], child[key], vm, key);
- }
- return options;
- }
- /**
- * Resolve an asset.
- * This function is used because child instances need access
- * to assets defined in its ancestor chain.
- */
- function resolveAsset(options, type, id, warnMissing) {
- /* istanbul ignore if */
- if (typeof id !== 'string') {
- return;
- }
- var assets = options[type];
- // check local registration variations first
- if (hasOwn(assets, id))
- return assets[id];
- var camelizedId = camelize(id);
- if (hasOwn(assets, camelizedId))
- return assets[camelizedId];
- var PascalCaseId = capitalize(camelizedId);
- if (hasOwn(assets, PascalCaseId))
- return assets[PascalCaseId];
- // fallback to prototype chain
- var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
- if (false) {}
- return res;
- }
- function validateProp(key, propOptions, propsData, vm) {
- var prop = propOptions[key];
- var absent = !hasOwn(propsData, key);
- var value = propsData[key];
- // boolean casting
- var booleanIndex = getTypeIndex(Boolean, prop.type);
- if (booleanIndex > -1) {
- if (absent && !hasOwn(prop, 'default')) {
- value = false;
- }
- else if (value === '' || value === hyphenate(key)) {
- // only cast empty string / same name to boolean if
- // boolean has higher priority
- var stringIndex = getTypeIndex(String, prop.type);
- if (stringIndex < 0 || booleanIndex < stringIndex) {
- value = true;
- }
- }
- }
- // check default value
- if (value === undefined) {
- value = getPropDefaultValue(vm, prop, key);
- // since the default value is a fresh copy,
- // make sure to observe it.
- var prevShouldObserve = shouldObserve;
- toggleObserving(true);
- observe(value);
- toggleObserving(prevShouldObserve);
- }
- if (false) {}
- return value;
- }
- /**
- * Get the default value of a prop.
- */
- function getPropDefaultValue(vm, prop, key) {
- // no default, return undefined
- if (!hasOwn(prop, 'default')) {
- return undefined;
- }
- var def = prop.default;
- // warn against non-factory defaults for Object & Array
- if (false) {}
- // the raw prop value was also undefined from previous render,
- // return previous default value to avoid unnecessary watcher trigger
- if (vm &&
- vm.$options.propsData &&
- vm.$options.propsData[key] === undefined &&
- vm._props[key] !== undefined) {
- return vm._props[key];
- }
- // call factory function for non-Function types
- // a value is Function if its prototype is function even across different execution context
- return isFunction(def) && getType(prop.type) !== 'Function'
- ? def.call(vm)
- : def;
- }
- /**
- * Assert whether a prop is valid.
- */
- function assertProp(prop, name, value, vm, absent) {
- if (prop.required && absent) {
- warn('Missing required prop: "' + name + '"', vm);
- return;
- }
- if (value == null && !prop.required) {
- return;
- }
- var type = prop.type;
- var valid = !type || type === true;
- var expectedTypes = [];
- if (type) {
- if (!isArray(type)) {
- type = [type];
- }
- for (var i = 0; i < type.length && !valid; i++) {
- var assertedType = assertType(value, type[i], vm);
- expectedTypes.push(assertedType.expectedType || '');
- valid = assertedType.valid;
- }
- }
- var haveExpectedTypes = expectedTypes.some(function (t) { return t; });
- if (!valid && haveExpectedTypes) {
- warn(getInvalidTypeMessage(name, value, expectedTypes), vm);
- return;
- }
- var validator = prop.validator;
- if (validator) {
- if (!validator(value)) {
- warn('Invalid prop: custom validator check failed for prop "' + name + '".', vm);
- }
- }
- }
- var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;
- function assertType(value, type, vm) {
- var valid;
- var expectedType = getType(type);
- if (simpleCheckRE.test(expectedType)) {
- var t = typeof value;
- valid = t === expectedType.toLowerCase();
- // for primitive wrapper objects
- if (!valid && t === 'object') {
- valid = value instanceof type;
- }
- }
- else if (expectedType === 'Object') {
- valid = isPlainObject(value);
- }
- else if (expectedType === 'Array') {
- valid = isArray(value);
- }
- else {
- try {
- valid = value instanceof type;
- }
- catch (e) {
- warn('Invalid prop type: "' + String(type) + '" is not a constructor', vm);
- valid = false;
- }
- }
- return {
- valid: valid,
- expectedType: expectedType
- };
- }
- var functionTypeCheckRE = /^\s*function (\w+)/;
- /**
- * Use function string name to check built-in types,
- * because a simple equality check will fail when running
- * across different vms / iframes.
- */
- function getType(fn) {
- var match = fn && fn.toString().match(functionTypeCheckRE);
- return match ? match[1] : '';
- }
- function isSameType(a, b) {
- return getType(a) === getType(b);
- }
- function getTypeIndex(type, expectedTypes) {
- if (!isArray(expectedTypes)) {
- return isSameType(expectedTypes, type) ? 0 : -1;
- }
- for (var i = 0, len = expectedTypes.length; i < len; i++) {
- if (isSameType(expectedTypes[i], type)) {
- return i;
- }
- }
- return -1;
- }
- function getInvalidTypeMessage(name, value, expectedTypes) {
- var message = "Invalid prop: type check failed for prop \"".concat(name, "\".") +
- " Expected ".concat(expectedTypes.map(capitalize).join(', '));
- var expectedType = expectedTypes[0];
- var receivedType = toRawType(value);
- // check if we need to specify expected value
- if (expectedTypes.length === 1 &&
- isExplicable(expectedType) &&
- isExplicable(typeof value) &&
- !isBoolean(expectedType, receivedType)) {
- message += " with value ".concat(styleValue(value, expectedType));
- }
- message += ", got ".concat(receivedType, " ");
- // check if we need to specify received value
- if (isExplicable(receivedType)) {
- message += "with value ".concat(styleValue(value, receivedType), ".");
- }
- return message;
- }
- function styleValue(value, type) {
- if (type === 'String') {
- return "\"".concat(value, "\"");
- }
- else if (type === 'Number') {
- return "".concat(Number(value));
- }
- else {
- return "".concat(value);
- }
- }
- var EXPLICABLE_TYPES = ['string', 'number', 'boolean'];
- function isExplicable(value) {
- return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; });
- }
- function isBoolean() {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; });
- }
- /* not type checking this file because flow doesn't play well with Proxy */
- var initProxy;
- if (false) { var getHandler_1, hasHandler_1, isBuiltInModifier_1, hasProxy_1, warnReservedPrefix_1, warnNonPresent_1, allowedGlobals_1; }
- var sharedPropertyDefinition = {
- enumerable: true,
- configurable: true,
- get: noop,
- set: noop
- };
- function proxy(target, sourceKey, key) {
- sharedPropertyDefinition.get = function proxyGetter() {
- return this[sourceKey][key];
- };
- sharedPropertyDefinition.set = function proxySetter(val) {
- this[sourceKey][key] = val;
- };
- Object.defineProperty(target, key, sharedPropertyDefinition);
- }
- function initState(vm) {
- var opts = vm.$options;
- if (opts.props)
- initProps$1(vm, opts.props);
- // Composition API
- initSetup(vm);
- if (opts.methods)
- initMethods(vm, opts.methods);
- if (opts.data) {
- initData(vm);
- }
- else {
- var ob = observe((vm._data = {}));
- ob && ob.vmCount++;
- }
- if (opts.computed)
- initComputed$1(vm, opts.computed);
- if (opts.watch && opts.watch !== nativeWatch) {
- initWatch(vm, opts.watch);
- }
- }
- function initProps$1(vm, propsOptions) {
- var propsData = vm.$options.propsData || {};
- var props = (vm._props = shallowReactive({}));
- // cache prop keys so that future props updates can iterate using Array
- // instead of dynamic object key enumeration.
- var keys = (vm.$options._propKeys = []);
- var isRoot = !vm.$parent;
- // root instance props should be converted
- if (!isRoot) {
- toggleObserving(false);
- }
- var _loop_1 = function (key) {
- keys.push(key);
- var value = validateProp(key, propsOptions, propsData, vm);
- /* istanbul ignore else */
- if (false) { var hyphenatedKey; }
- else {
- defineReactive(props, key, value, undefined, true /* shallow */);
- }
- // static props are already proxied on the component's prototype
- // during Vue.extend(). We only need to proxy props defined at
- // instantiation here.
- if (!(key in vm)) {
- proxy(vm, "_props", key);
- }
- };
- for (var key in propsOptions) {
- _loop_1(key);
- }
- toggleObserving(true);
- }
- function initData(vm) {
- var data = vm.$options.data;
- data = vm._data = isFunction(data) ? getData(data, vm) : data || {};
- if (!isPlainObject(data)) {
- data = {};
- false &&
- false;
- }
- // proxy data on instance
- var keys = Object.keys(data);
- var props = vm.$options.props;
- var methods = vm.$options.methods;
- var i = keys.length;
- while (i--) {
- var key = keys[i];
- if (false) {}
- if (props && hasOwn(props, key)) {
- false &&
- false;
- }
- else if (!isReserved(key)) {
- proxy(vm, "_data", key);
- }
- }
- // observe data
- var ob = observe(data);
- ob && ob.vmCount++;
- }
- function getData(data, vm) {
- // #7573 disable dep collection when invoking data getters
- pushTarget();
- try {
- return data.call(vm, vm);
- }
- catch (e) {
- handleError(e, vm, "data()");
- return {};
- }
- finally {
- popTarget();
- }
- }
- var computedWatcherOptions = { lazy: true };
- function initComputed$1(vm, computed) {
- // $flow-disable-line
- var watchers = (vm._computedWatchers = Object.create(null));
- // computed properties are just getters during SSR
- var isSSR = isServerRendering();
- for (var key in computed) {
- var userDef = computed[key];
- var getter = isFunction(userDef) ? userDef : userDef.get;
- if (false) {}
- if (!isSSR) {
- // create internal watcher for the computed property.
- watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions);
- }
- // component-defined computed properties are already defined on the
- // component prototype. We only need to define computed properties defined
- // at instantiation here.
- if (!(key in vm)) {
- defineComputed(vm, key, userDef);
- }
- else if (false) {}
- }
- }
- function defineComputed(target, key, userDef) {
- var shouldCache = !isServerRendering();
- if (isFunction(userDef)) {
- sharedPropertyDefinition.get = shouldCache
- ? createComputedGetter(key)
- : createGetterInvoker(userDef);
- sharedPropertyDefinition.set = noop;
- }
- else {
- sharedPropertyDefinition.get = userDef.get
- ? shouldCache && userDef.cache !== false
- ? createComputedGetter(key)
- : createGetterInvoker(userDef.get)
- : noop;
- sharedPropertyDefinition.set = userDef.set || noop;
- }
- if (false) {}
- Object.defineProperty(target, key, sharedPropertyDefinition);
- }
- function createComputedGetter(key) {
- return function computedGetter() {
- var watcher = this._computedWatchers && this._computedWatchers[key];
- if (watcher) {
- if (watcher.dirty) {
- watcher.evaluate();
- }
- if (Dep.target) {
- if (false) {}
- watcher.depend();
- }
- return watcher.value;
- }
- };
- }
- function createGetterInvoker(fn) {
- return function computedGetter() {
- return fn.call(this, this);
- };
- }
- function initMethods(vm, methods) {
- var props = vm.$options.props;
- for (var key in methods) {
- if (false) {}
- vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);
- }
- }
- function initWatch(vm, watch) {
- for (var key in watch) {
- var handler = watch[key];
- if (isArray(handler)) {
- for (var i = 0; i < handler.length; i++) {
- createWatcher(vm, key, handler[i]);
- }
- }
- else {
- createWatcher(vm, key, handler);
- }
- }
- }
- function createWatcher(vm, expOrFn, handler, options) {
- if (isPlainObject(handler)) {
- options = handler;
- handler = handler.handler;
- }
- if (typeof handler === 'string') {
- handler = vm[handler];
- }
- return vm.$watch(expOrFn, handler, options);
- }
- function stateMixin(Vue) {
- // flow somehow has problems with directly declared definition object
- // when using Object.defineProperty, so we have to procedurally build up
- // the object here.
- var dataDef = {};
- dataDef.get = function () {
- return this._data;
- };
- var propsDef = {};
- propsDef.get = function () {
- return this._props;
- };
- if (false) {}
- Object.defineProperty(Vue.prototype, '$data', dataDef);
- Object.defineProperty(Vue.prototype, '$props', propsDef);
- Vue.prototype.$set = set;
- Vue.prototype.$delete = del;
- Vue.prototype.$watch = function (expOrFn, cb, options) {
- var vm = this;
- if (isPlainObject(cb)) {
- return createWatcher(vm, expOrFn, cb, options);
- }
- options = options || {};
- options.user = true;
- var watcher = new Watcher(vm, expOrFn, cb, options);
- if (options.immediate) {
- var info = "callback for immediate watcher \"".concat(watcher.expression, "\"");
- pushTarget();
- invokeWithErrorHandling(cb, vm, [watcher.value], vm, info);
- popTarget();
- }
- return function unwatchFn() {
- watcher.teardown();
- };
- };
- }
- var uid = 0;
- function initMixin$1(Vue) {
- Vue.prototype._init = function (options) {
- var vm = this;
- // a uid
- vm._uid = uid++;
- var startTag, endTag;
- /* istanbul ignore if */
- if (false) {}
- // a flag to mark this as a Vue instance without having to do instanceof
- // check
- vm._isVue = true;
- // avoid instances from being observed
- vm.__v_skip = true;
- // effect scope
- vm._scope = new EffectScope(true /* detached */);
- // #13134 edge case where a child component is manually created during the
- // render of a parent component
- vm._scope.parent = undefined;
- vm._scope._vm = true;
- // merge options
- if (options && options._isComponent) {
- // optimize internal component instantiation
- // since dynamic options merging is pretty slow, and none of the
- // internal component options needs special treatment.
- initInternalComponent(vm, options);
- }
- else {
- vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm);
- }
- /* istanbul ignore else */
- if (false) {}
- else {
- vm._renderProxy = vm;
- }
- // expose real self
- vm._self = vm;
- initLifecycle(vm);
- initEvents(vm);
- initRender(vm);
- callHook$1(vm, 'beforeCreate', undefined, false /* setContext */);
- initInjections(vm); // resolve injections before data/props
- initState(vm);
- initProvide(vm); // resolve provide after data/props
- callHook$1(vm, 'created');
- /* istanbul ignore if */
- if (false) {}
- if (vm.$options.el) {
- vm.$mount(vm.$options.el);
- }
- };
- }
- function initInternalComponent(vm, options) {
- var opts = (vm.$options = Object.create(vm.constructor.options));
- // doing this because it's faster than dynamic enumeration.
- var parentVnode = options._parentVnode;
- opts.parent = options.parent;
- opts._parentVnode = parentVnode;
- var vnodeComponentOptions = parentVnode.componentOptions;
- opts.propsData = vnodeComponentOptions.propsData;
- opts._parentListeners = vnodeComponentOptions.listeners;
- opts._renderChildren = vnodeComponentOptions.children;
- opts._componentTag = vnodeComponentOptions.tag;
- if (options.render) {
- opts.render = options.render;
- opts.staticRenderFns = options.staticRenderFns;
- }
- }
- function resolveConstructorOptions(Ctor) {
- var options = Ctor.options;
- if (Ctor.super) {
- var superOptions = resolveConstructorOptions(Ctor.super);
- var cachedSuperOptions = Ctor.superOptions;
- if (superOptions !== cachedSuperOptions) {
- // super option changed,
- // need to resolve new options.
- Ctor.superOptions = superOptions;
- // check if there are any late-modified/attached options (#4976)
- var modifiedOptions = resolveModifiedOptions(Ctor);
- // update base extend options
- if (modifiedOptions) {
- extend(Ctor.extendOptions, modifiedOptions);
- }
- options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
- if (options.name) {
- options.components[options.name] = Ctor;
- }
- }
- }
- return options;
- }
- function resolveModifiedOptions(Ctor) {
- var modified;
- var latest = Ctor.options;
- var sealed = Ctor.sealedOptions;
- for (var key in latest) {
- if (latest[key] !== sealed[key]) {
- if (!modified)
- modified = {};
- modified[key] = latest[key];
- }
- }
- return modified;
- }
- function Vue(options) {
- if (false) {}
- this._init(options);
- }
- //@ts-expect-error Vue has function type
- initMixin$1(Vue);
- //@ts-expect-error Vue has function type
- stateMixin(Vue);
- //@ts-expect-error Vue has function type
- eventsMixin(Vue);
- //@ts-expect-error Vue has function type
- lifecycleMixin(Vue);
- //@ts-expect-error Vue has function type
- renderMixin(Vue);
- function initUse(Vue) {
- Vue.use = function (plugin) {
- var installedPlugins = this._installedPlugins || (this._installedPlugins = []);
- if (installedPlugins.indexOf(plugin) > -1) {
- return this;
- }
- // additional parameters
- var args = toArray(arguments, 1);
- args.unshift(this);
- if (isFunction(plugin.install)) {
- plugin.install.apply(plugin, args);
- }
- else if (isFunction(plugin)) {
- plugin.apply(null, args);
- }
- installedPlugins.push(plugin);
- return this;
- };
- }
- function initMixin(Vue) {
- Vue.mixin = function (mixin) {
- this.options = mergeOptions(this.options, mixin);
- return this;
- };
- }
- function initExtend(Vue) {
- /**
- * Each instance constructor, including Vue, has a unique
- * cid. This enables us to create wrapped "child
- * constructors" for prototypal inheritance and cache them.
- */
- Vue.cid = 0;
- var cid = 1;
- /**
- * Class inheritance
- */
- Vue.extend = function (extendOptions) {
- extendOptions = extendOptions || {};
- var Super = this;
- var SuperId = Super.cid;
- var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
- if (cachedCtors[SuperId]) {
- return cachedCtors[SuperId];
- }
- var name = getComponentName(extendOptions) || getComponentName(Super.options);
- if (false) {}
- var Sub = function VueComponent(options) {
- this._init(options);
- };
- Sub.prototype = Object.create(Super.prototype);
- Sub.prototype.constructor = Sub;
- Sub.cid = cid++;
- Sub.options = mergeOptions(Super.options, extendOptions);
- Sub['super'] = Super;
- // For props and computed properties, we define the proxy getters on
- // the Vue instances at extension time, on the extended prototype. This
- // avoids Object.defineProperty calls for each instance created.
- if (Sub.options.props) {
- initProps(Sub);
- }
- if (Sub.options.computed) {
- initComputed(Sub);
- }
- // allow further extension/mixin/plugin usage
- Sub.extend = Super.extend;
- Sub.mixin = Super.mixin;
- Sub.use = Super.use;
- // create asset registers, so extended classes
- // can have their private assets too.
- ASSET_TYPES.forEach(function (type) {
- Sub[type] = Super[type];
- });
- // enable recursive self-lookup
- if (name) {
- Sub.options.components[name] = Sub;
- }
- // keep a reference to the super options at extension time.
- // later at instantiation we can check if Super's options have
- // been updated.
- Sub.superOptions = Super.options;
- Sub.extendOptions = extendOptions;
- Sub.sealedOptions = extend({}, Sub.options);
- // cache constructor
- cachedCtors[SuperId] = Sub;
- return Sub;
- };
- }
- function initProps(Comp) {
- var props = Comp.options.props;
- for (var key in props) {
- proxy(Comp.prototype, "_props", key);
- }
- }
- function initComputed(Comp) {
- var computed = Comp.options.computed;
- for (var key in computed) {
- defineComputed(Comp.prototype, key, computed[key]);
- }
- }
- function initAssetRegisters(Vue) {
- /**
- * Create asset registration methods.
- */
- ASSET_TYPES.forEach(function (type) {
- // @ts-expect-error function is not exact same type
- Vue[type] = function (id, definition) {
- if (!definition) {
- return this.options[type + 's'][id];
- }
- else {
- /* istanbul ignore if */
- if (false) {}
- if (type === 'component' && isPlainObject(definition)) {
- // @ts-expect-error
- definition.name = definition.name || id;
- definition = this.options._base.extend(definition);
- }
- if (type === 'directive' && isFunction(definition)) {
- definition = { bind: definition, update: definition };
- }
- this.options[type + 's'][id] = definition;
- return definition;
- }
- };
- });
- }
- function _getComponentName(opts) {
- return opts && (getComponentName(opts.Ctor.options) || opts.tag);
- }
- function matches(pattern, name) {
- if (isArray(pattern)) {
- return pattern.indexOf(name) > -1;
- }
- else if (typeof pattern === 'string') {
- return pattern.split(',').indexOf(name) > -1;
- }
- else if (isRegExp(pattern)) {
- return pattern.test(name);
- }
- /* istanbul ignore next */
- return false;
- }
- function pruneCache(keepAliveInstance, filter) {
- var cache = keepAliveInstance.cache, keys = keepAliveInstance.keys, _vnode = keepAliveInstance._vnode, $vnode = keepAliveInstance.$vnode;
- for (var key in cache) {
- var entry = cache[key];
- if (entry) {
- var name_1 = entry.name;
- if (name_1 && !filter(name_1)) {
- pruneCacheEntry(cache, key, keys, _vnode);
- }
- }
- }
- $vnode.componentOptions.children = undefined;
- }
- function pruneCacheEntry(cache, key, keys, current) {
- var entry = cache[key];
- if (entry && (!current || entry.tag !== current.tag)) {
- // @ts-expect-error can be undefined
- entry.componentInstance.$destroy();
- }
- cache[key] = null;
- remove$2(keys, key);
- }
- var patternTypes = [String, RegExp, Array];
- // TODO defineComponent
- var KeepAlive = {
- name: 'keep-alive',
- abstract: true,
- props: {
- include: patternTypes,
- exclude: patternTypes,
- max: [String, Number]
- },
- methods: {
- cacheVNode: function () {
- var _a = this, cache = _a.cache, keys = _a.keys, vnodeToCache = _a.vnodeToCache, keyToCache = _a.keyToCache;
- if (vnodeToCache) {
- var tag = vnodeToCache.tag, componentInstance = vnodeToCache.componentInstance, componentOptions = vnodeToCache.componentOptions;
- cache[keyToCache] = {
- name: _getComponentName(componentOptions),
- tag: tag,
- componentInstance: componentInstance
- };
- keys.push(keyToCache);
- // prune oldest entry
- if (this.max && keys.length > parseInt(this.max)) {
- pruneCacheEntry(cache, keys[0], keys, this._vnode);
- }
- this.vnodeToCache = null;
- }
- }
- },
- created: function () {
- this.cache = Object.create(null);
- this.keys = [];
- },
- destroyed: function () {
- for (var key in this.cache) {
- pruneCacheEntry(this.cache, key, this.keys);
- }
- },
- mounted: function () {
- var _this = this;
- this.cacheVNode();
- this.$watch('include', function (val) {
- pruneCache(_this, function (name) { return matches(val, name); });
- });
- this.$watch('exclude', function (val) {
- pruneCache(_this, function (name) { return !matches(val, name); });
- });
- },
- updated: function () {
- this.cacheVNode();
- },
- render: function () {
- var slot = this.$slots.default;
- var vnode = getFirstComponentChild(slot);
- var componentOptions = vnode && vnode.componentOptions;
- if (componentOptions) {
- // check pattern
- var name_2 = _getComponentName(componentOptions);
- var _a = this, include = _a.include, exclude = _a.exclude;
- if (
- // not included
- (include && (!name_2 || !matches(include, name_2))) ||
- // excluded
- (exclude && name_2 && matches(exclude, name_2))) {
- return vnode;
- }
- var _b = this, cache = _b.cache, keys = _b.keys;
- var key = vnode.key == null
- ? // same constructor may get registered as different local components
- // so cid alone is not enough (#3269)
- componentOptions.Ctor.cid +
- (componentOptions.tag ? "::".concat(componentOptions.tag) : '')
- : vnode.key;
- if (cache[key]) {
- vnode.componentInstance = cache[key].componentInstance;
- // make current key freshest
- remove$2(keys, key);
- keys.push(key);
- }
- else {
- // delay setting the cache until update
- this.vnodeToCache = vnode;
- this.keyToCache = key;
- }
- // @ts-expect-error can vnode.data can be undefined
- vnode.data.keepAlive = true;
- }
- return vnode || (slot && slot[0]);
- }
- };
- var builtInComponents = {
- KeepAlive: KeepAlive
- };
- function initGlobalAPI(Vue) {
- // config
- var configDef = {};
- configDef.get = function () { return config; };
- if (false) {}
- Object.defineProperty(Vue, 'config', configDef);
- // exposed util methods.
- // NOTE: these are not considered part of the public API - avoid relying on
- // them unless you are aware of the risk.
- Vue.util = {
- warn: warn,
- extend: extend,
- mergeOptions: mergeOptions,
- defineReactive: defineReactive
- };
- Vue.set = set;
- Vue.delete = del;
- Vue.nextTick = nextTick;
- // 2.6 explicit observable API
- Vue.observable = function (obj) {
- observe(obj);
- return obj;
- };
- Vue.options = Object.create(null);
- ASSET_TYPES.forEach(function (type) {
- Vue.options[type + 's'] = Object.create(null);
- });
- // this is used to identify the "base" constructor to extend all plain-object
- // components with in Weex's multi-instance scenarios.
- Vue.options._base = Vue;
- extend(Vue.options.components, builtInComponents);
- initUse(Vue);
- initMixin(Vue);
- initExtend(Vue);
- initAssetRegisters(Vue);
- }
- initGlobalAPI(Vue);
- Object.defineProperty(Vue.prototype, '$isServer', {
- get: isServerRendering
- });
- Object.defineProperty(Vue.prototype, '$ssrContext', {
- get: function () {
- /* istanbul ignore next */
- return this.$vnode && this.$vnode.ssrContext;
- }
- });
- // expose FunctionalRenderContext for ssr runtime helper installation
- Object.defineProperty(Vue, 'FunctionalRenderContext', {
- value: FunctionalRenderContext
- });
- Vue.version = version;
- // these are reserved for web because they are directly compiled away
- // during template compilation
- var isReservedAttr = makeMap('style,class');
- // attributes that should be using props for binding
- var acceptValue = makeMap('input,textarea,option,select,progress');
- var mustUseProp = function (tag, type, attr) {
- return ((attr === 'value' && acceptValue(tag) && type !== 'button') ||
- (attr === 'selected' && tag === 'option') ||
- (attr === 'checked' && tag === 'input') ||
- (attr === 'muted' && tag === 'video'));
- };
- var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');
- var isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');
- var convertEnumeratedValue = function (key, value) {
- return isFalsyAttrValue(value) || value === 'false'
- ? 'false'
- : // allow arbitrary string value for contenteditable
- key === 'contenteditable' && isValidContentEditableValue(value)
- ? value
- : 'true';
- };
- var isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +
- 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +
- 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +
- 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +
- 'required,reversed,scoped,seamless,selected,sortable,' +
- 'truespeed,typemustmatch,visible');
- var xlinkNS = 'http://www.w3.org/1999/xlink';
- var isXlink = function (name) {
- return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink';
- };
- var getXlinkProp = function (name) {
- return isXlink(name) ? name.slice(6, name.length) : '';
- };
- var isFalsyAttrValue = function (val) {
- return val == null || val === false;
- };
- function genClassForVnode(vnode) {
- var data = vnode.data;
- var parentNode = vnode;
- var childNode = vnode;
- while (isDef(childNode.componentInstance)) {
- childNode = childNode.componentInstance._vnode;
- if (childNode && childNode.data) {
- data = mergeClassData(childNode.data, data);
- }
- }
- // @ts-expect-error parentNode.parent not VNodeWithData
- while (isDef((parentNode = parentNode.parent))) {
- if (parentNode && parentNode.data) {
- data = mergeClassData(data, parentNode.data);
- }
- }
- return renderClass(data.staticClass, data.class);
- }
- function mergeClassData(child, parent) {
- return {
- staticClass: concat(child.staticClass, parent.staticClass),
- class: isDef(child.class) ? [child.class, parent.class] : parent.class
- };
- }
- function renderClass(staticClass, dynamicClass) {
- if (isDef(staticClass) || isDef(dynamicClass)) {
- return concat(staticClass, stringifyClass(dynamicClass));
- }
- /* istanbul ignore next */
- return '';
- }
- function concat(a, b) {
- return a ? (b ? a + ' ' + b : a) : b || '';
- }
- function stringifyClass(value) {
- if (Array.isArray(value)) {
- return stringifyArray(value);
- }
- if (isObject(value)) {
- return stringifyObject(value);
- }
- if (typeof value === 'string') {
- return value;
- }
- /* istanbul ignore next */
- return '';
- }
- function stringifyArray(value) {
- var res = '';
- var stringified;
- for (var i = 0, l = value.length; i < l; i++) {
- if (isDef((stringified = stringifyClass(value[i]))) && stringified !== '') {
- if (res)
- res += ' ';
- res += stringified;
- }
- }
- return res;
- }
- function stringifyObject(value) {
- var res = '';
- for (var key in value) {
- if (value[key]) {
- if (res)
- res += ' ';
- res += key;
- }
- }
- return res;
- }
- var namespaceMap = {
- svg: 'http://www.w3.org/2000/svg',
- math: 'http://www.w3.org/1998/Math/MathML'
- };
- var isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' +
- 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,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,rtc,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,menuitem,summary,' +
- 'content,element,shadow,template,blockquote,iframe,tfoot');
- // this map is intentionally selective, only covering SVG elements that may
- // contain child elements.
- var isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +
- 'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
- 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true);
- var isReservedTag = function (tag) {
- return isHTMLTag(tag) || isSVG(tag);
- };
- function getTagNamespace(tag) {
- if (isSVG(tag)) {
- return 'svg';
- }
- // basic support for MathML
- // note it doesn't support other MathML elements being component roots
- if (tag === 'math') {
- return 'math';
- }
- }
- var unknownElementCache = Object.create(null);
- function isUnknownElement(tag) {
- /* istanbul ignore if */
- if (!inBrowser) {
- return true;
- }
- if (isReservedTag(tag)) {
- return false;
- }
- tag = tag.toLowerCase();
- /* istanbul ignore if */
- if (unknownElementCache[tag] != null) {
- return unknownElementCache[tag];
- }
- var el = document.createElement(tag);
- if (tag.indexOf('-') > -1) {
- // https://stackoverflow.com/a/28210364/1070244
- return (unknownElementCache[tag] =
- el.constructor === window.HTMLUnknownElement ||
- el.constructor === window.HTMLElement);
- }
- else {
- return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()));
- }
- }
- var isTextInputType = makeMap('text,number,password,search,email,tel,url');
- /**
- * Query an element selector if it's not an element already.
- */
- function query(el) {
- if (typeof el === 'string') {
- var selected = document.querySelector(el);
- if (!selected) {
- false && false;
- return document.createElement('div');
- }
- return selected;
- }
- else {
- return el;
- }
- }
- function createElement(tagName, vnode) {
- var elm = document.createElement(tagName);
- if (tagName !== 'select') {
- return elm;
- }
- // false or null will remove the attribute but undefined will not
- if (vnode.data &&
- vnode.data.attrs &&
- vnode.data.attrs.multiple !== undefined) {
- elm.setAttribute('multiple', 'multiple');
- }
- return elm;
- }
- function createElementNS(namespace, tagName) {
- return document.createElementNS(namespaceMap[namespace], tagName);
- }
- function createTextNode(text) {
- return document.createTextNode(text);
- }
- function createComment(text) {
- return document.createComment(text);
- }
- function insertBefore(parentNode, newNode, referenceNode) {
- parentNode.insertBefore(newNode, referenceNode);
- }
- function removeChild(node, child) {
- node.removeChild(child);
- }
- function appendChild(node, child) {
- node.appendChild(child);
- }
- function parentNode(node) {
- return node.parentNode;
- }
- function nextSibling(node) {
- return node.nextSibling;
- }
- function tagName(node) {
- return node.tagName;
- }
- function setTextContent(node, text) {
- node.textContent = text;
- }
- function setStyleScope(node, scopeId) {
- node.setAttribute(scopeId, '');
- }
- var nodeOps = /*#__PURE__*/Object.freeze({
- __proto__: null,
- createElement: createElement,
- createElementNS: createElementNS,
- createTextNode: createTextNode,
- createComment: createComment,
- insertBefore: insertBefore,
- removeChild: removeChild,
- appendChild: appendChild,
- parentNode: parentNode,
- nextSibling: nextSibling,
- tagName: tagName,
- setTextContent: setTextContent,
- setStyleScope: setStyleScope
- });
- var ref = {
- create: function (_, vnode) {
- registerRef(vnode);
- },
- update: function (oldVnode, vnode) {
- if (oldVnode.data.ref !== vnode.data.ref) {
- registerRef(oldVnode, true);
- registerRef(vnode);
- }
- },
- destroy: function (vnode) {
- registerRef(vnode, true);
- }
- };
- function registerRef(vnode, isRemoval) {
- var ref = vnode.data.ref;
- if (!isDef(ref))
- return;
- var vm = vnode.context;
- var refValue = vnode.componentInstance || vnode.elm;
- var value = isRemoval ? null : refValue;
- var $refsValue = isRemoval ? undefined : refValue;
- if (isFunction(ref)) {
- invokeWithErrorHandling(ref, vm, [value], vm, "template ref function");
- return;
- }
- var isFor = vnode.data.refInFor;
- var _isString = typeof ref === 'string' || typeof ref === 'number';
- var _isRef = isRef(ref);
- var refs = vm.$refs;
- if (_isString || _isRef) {
- if (isFor) {
- var existing = _isString ? refs[ref] : ref.value;
- if (isRemoval) {
- isArray(existing) && remove$2(existing, refValue);
- }
- else {
- if (!isArray(existing)) {
- if (_isString) {
- refs[ref] = [refValue];
- setSetupRef(vm, ref, refs[ref]);
- }
- else {
- ref.value = [refValue];
- }
- }
- else if (!existing.includes(refValue)) {
- existing.push(refValue);
- }
- }
- }
- else if (_isString) {
- if (isRemoval && refs[ref] !== refValue) {
- return;
- }
- refs[ref] = $refsValue;
- setSetupRef(vm, ref, value);
- }
- else if (_isRef) {
- if (isRemoval && ref.value !== refValue) {
- return;
- }
- ref.value = value;
- }
- else if (false) {}
- }
- }
- function setSetupRef(_a, key, val) {
- var _setupState = _a._setupState;
- if (_setupState && hasOwn(_setupState, key)) {
- if (isRef(_setupState[key])) {
- _setupState[key].value = val;
- }
- else {
- _setupState[key] = val;
- }
- }
- }
- /**
- * Virtual DOM patching algorithm based on Snabbdom by
- * Simon Friis Vindum (@paldepind)
- * Licensed under the MIT License
- * https://github.com/paldepind/snabbdom/blob/master/LICENSE
- *
- * modified by Evan You (@yyx990803)
- *
- * Not type-checking this because this file is perf-critical and the cost
- * of making flow understand it is not worth it.
- */
- var emptyNode = new VNode('', {}, []);
- var hooks = ['create', 'activate', 'update', 'remove', 'destroy'];
- function sameVnode(a, b) {
- return (a.key === b.key &&
- a.asyncFactory === b.asyncFactory &&
- ((a.tag === b.tag &&
- a.isComment === b.isComment &&
- isDef(a.data) === isDef(b.data) &&
- sameInputType(a, b)) ||
- (isTrue(a.isAsyncPlaceholder) && isUndef(b.asyncFactory.error))));
- }
- function sameInputType(a, b) {
- if (a.tag !== 'input')
- return true;
- var i;
- var typeA = isDef((i = a.data)) && isDef((i = i.attrs)) && i.type;
- var typeB = isDef((i = b.data)) && isDef((i = i.attrs)) && i.type;
- return typeA === typeB || (isTextInputType(typeA) && isTextInputType(typeB));
- }
- function createKeyToOldIdx(children, beginIdx, endIdx) {
- var i, key;
- var map = {};
- for (i = beginIdx; i <= endIdx; ++i) {
- key = children[i].key;
- if (isDef(key))
- map[key] = i;
- }
- return map;
- }
- function createPatchFunction(backend) {
- var i, j;
- var cbs = {};
- var modules = backend.modules, nodeOps = backend.nodeOps;
- for (i = 0; i < hooks.length; ++i) {
- cbs[hooks[i]] = [];
- for (j = 0; j < modules.length; ++j) {
- if (isDef(modules[j][hooks[i]])) {
- cbs[hooks[i]].push(modules[j][hooks[i]]);
- }
- }
- }
- function emptyNodeAt(elm) {
- return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm);
- }
- function createRmCb(childElm, listeners) {
- function remove() {
- if (--remove.listeners === 0) {
- removeNode(childElm);
- }
- }
- remove.listeners = listeners;
- return remove;
- }
- function removeNode(el) {
- var parent = nodeOps.parentNode(el);
- // element may have already been removed due to v-html / v-text
- if (isDef(parent)) {
- nodeOps.removeChild(parent, el);
- }
- }
- function isUnknownElement(vnode, inVPre) {
- return (!inVPre &&
- !vnode.ns &&
- !(config.ignoredElements.length &&
- config.ignoredElements.some(function (ignore) {
- return isRegExp(ignore)
- ? ignore.test(vnode.tag)
- : ignore === vnode.tag;
- })) &&
- config.isUnknownElement(vnode.tag));
- }
- var creatingElmInVPre = 0;
- function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) {
- if (isDef(vnode.elm) && isDef(ownerArray)) {
- // This vnode was used in a previous render!
- // now it's used as a new node, overwriting its elm would cause
- // potential patch errors down the road when it's used as an insertion
- // reference node. Instead, we clone the node on-demand before creating
- // associated DOM element for it.
- vnode = ownerArray[index] = cloneVNode(vnode);
- }
- vnode.isRootInsert = !nested; // for transition enter check
- if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {
- return;
- }
- var data = vnode.data;
- var children = vnode.children;
- var tag = vnode.tag;
- if (isDef(tag)) {
- if (false) {}
- vnode.elm = vnode.ns
- ? nodeOps.createElementNS(vnode.ns, tag)
- : nodeOps.createElement(tag, vnode);
- setScope(vnode);
- createChildren(vnode, children, insertedVnodeQueue);
- if (isDef(data)) {
- invokeCreateHooks(vnode, insertedVnodeQueue);
- }
- insert(parentElm, vnode.elm, refElm);
- if (false) {}
- }
- else if (isTrue(vnode.isComment)) {
- vnode.elm = nodeOps.createComment(vnode.text);
- insert(parentElm, vnode.elm, refElm);
- }
- else {
- vnode.elm = nodeOps.createTextNode(vnode.text);
- insert(parentElm, vnode.elm, refElm);
- }
- }
- function createComponent(vnode, insertedVnodeQueue, parentElm, refElm) {
- var i = vnode.data;
- if (isDef(i)) {
- var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;
- if (isDef((i = i.hook)) && isDef((i = i.init))) {
- i(vnode, false /* hydrating */);
- }
- // after calling the init hook, if the vnode is a child component
- // it should've created a child instance and mounted it. the child
- // component also has set the placeholder vnode's elm.
- // in that case we can just return the element and be done.
- if (isDef(vnode.componentInstance)) {
- initComponent(vnode, insertedVnodeQueue);
- insert(parentElm, vnode.elm, refElm);
- if (isTrue(isReactivated)) {
- reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);
- }
- return true;
- }
- }
- }
- function initComponent(vnode, insertedVnodeQueue) {
- if (isDef(vnode.data.pendingInsert)) {
- insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);
- vnode.data.pendingInsert = null;
- }
- vnode.elm = vnode.componentInstance.$el;
- if (isPatchable(vnode)) {
- invokeCreateHooks(vnode, insertedVnodeQueue);
- setScope(vnode);
- }
- else {
- // empty component root.
- // skip all element-related modules except for ref (#3455)
- registerRef(vnode);
- // make sure to invoke the insert hook
- insertedVnodeQueue.push(vnode);
- }
- }
- function reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm) {
- var i;
- // hack for #4339: a reactivated component with inner transition
- // does not trigger because the inner node's created hooks are not called
- // again. It's not ideal to involve module-specific logic in here but
- // there doesn't seem to be a better way to do it.
- var innerNode = vnode;
- while (innerNode.componentInstance) {
- innerNode = innerNode.componentInstance._vnode;
- if (isDef((i = innerNode.data)) && isDef((i = i.transition))) {
- for (i = 0; i < cbs.activate.length; ++i) {
- cbs.activate[i](emptyNode, innerNode);
- }
- insertedVnodeQueue.push(innerNode);
- break;
- }
- }
- // unlike a newly created component,
- // a reactivated keep-alive component doesn't insert itself
- insert(parentElm, vnode.elm, refElm);
- }
- function insert(parent, elm, ref) {
- if (isDef(parent)) {
- if (isDef(ref)) {
- if (nodeOps.parentNode(ref) === parent) {
- nodeOps.insertBefore(parent, elm, ref);
- }
- }
- else {
- nodeOps.appendChild(parent, elm);
- }
- }
- }
- function createChildren(vnode, children, insertedVnodeQueue) {
- if (isArray(children)) {
- if (false) {}
- for (var i_1 = 0; i_1 < children.length; ++i_1) {
- createElm(children[i_1], insertedVnodeQueue, vnode.elm, null, true, children, i_1);
- }
- }
- else if (isPrimitive(vnode.text)) {
- nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));
- }
- }
- function isPatchable(vnode) {
- while (vnode.componentInstance) {
- vnode = vnode.componentInstance._vnode;
- }
- return isDef(vnode.tag);
- }
- function invokeCreateHooks(vnode, insertedVnodeQueue) {
- for (var i_2 = 0; i_2 < cbs.create.length; ++i_2) {
- cbs.create[i_2](emptyNode, vnode);
- }
- i = vnode.data.hook; // Reuse variable
- if (isDef(i)) {
- if (isDef(i.create))
- i.create(emptyNode, vnode);
- if (isDef(i.insert))
- insertedVnodeQueue.push(vnode);
- }
- }
- // set scope id attribute for scoped CSS.
- // this is implemented as a special case to avoid the overhead
- // of going through the normal attribute patching process.
- function setScope(vnode) {
- var i;
- if (isDef((i = vnode.fnScopeId))) {
- nodeOps.setStyleScope(vnode.elm, i);
- }
- else {
- var ancestor = vnode;
- while (ancestor) {
- if (isDef((i = ancestor.context)) && isDef((i = i.$options._scopeId))) {
- nodeOps.setStyleScope(vnode.elm, i);
- }
- ancestor = ancestor.parent;
- }
- }
- // for slot content they should also get the scopeId from the host instance.
- if (isDef((i = activeInstance)) &&
- i !== vnode.context &&
- i !== vnode.fnContext &&
- isDef((i = i.$options._scopeId))) {
- nodeOps.setStyleScope(vnode.elm, i);
- }
- }
- function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {
- for (; startIdx <= endIdx; ++startIdx) {
- createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);
- }
- }
- function invokeDestroyHook(vnode) {
- var i, j;
- var data = vnode.data;
- if (isDef(data)) {
- if (isDef((i = data.hook)) && isDef((i = i.destroy)))
- i(vnode);
- for (i = 0; i < cbs.destroy.length; ++i)
- cbs.destroy[i](vnode);
- }
- if (isDef((i = vnode.children))) {
- for (j = 0; j < vnode.children.length; ++j) {
- invokeDestroyHook(vnode.children[j]);
- }
- }
- }
- function removeVnodes(vnodes, startIdx, endIdx) {
- for (; startIdx <= endIdx; ++startIdx) {
- var ch = vnodes[startIdx];
- if (isDef(ch)) {
- if (isDef(ch.tag)) {
- removeAndInvokeRemoveHook(ch);
- invokeDestroyHook(ch);
- }
- else {
- // Text node
- removeNode(ch.elm);
- }
- }
- }
- }
- function removeAndInvokeRemoveHook(vnode, rm) {
- if (isDef(rm) || isDef(vnode.data)) {
- var i_3;
- var listeners = cbs.remove.length + 1;
- if (isDef(rm)) {
- // we have a recursively passed down rm callback
- // increase the listeners count
- rm.listeners += listeners;
- }
- else {
- // directly removing
- rm = createRmCb(vnode.elm, listeners);
- }
- // recursively invoke hooks on child component root node
- if (isDef((i_3 = vnode.componentInstance)) &&
- isDef((i_3 = i_3._vnode)) &&
- isDef(i_3.data)) {
- removeAndInvokeRemoveHook(i_3, rm);
- }
- for (i_3 = 0; i_3 < cbs.remove.length; ++i_3) {
- cbs.remove[i_3](vnode, rm);
- }
- if (isDef((i_3 = vnode.data.hook)) && isDef((i_3 = i_3.remove))) {
- i_3(vnode, rm);
- }
- else {
- rm();
- }
- }
- else {
- removeNode(vnode.elm);
- }
- }
- function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {
- var oldStartIdx = 0;
- var newStartIdx = 0;
- var oldEndIdx = oldCh.length - 1;
- var oldStartVnode = oldCh[0];
- var oldEndVnode = oldCh[oldEndIdx];
- var newEndIdx = newCh.length - 1;
- var newStartVnode = newCh[0];
- var newEndVnode = newCh[newEndIdx];
- var oldKeyToIdx, idxInOld, vnodeToMove, refElm;
- // removeOnly is a special flag used only by <transition-group>
- // to ensure removed elements stay in correct relative positions
- // during leaving transitions
- var canMove = !removeOnly;
- if (false) {}
- while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
- if (isUndef(oldStartVnode)) {
- oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left
- }
- else if (isUndef(oldEndVnode)) {
- oldEndVnode = oldCh[--oldEndIdx];
- }
- else if (sameVnode(oldStartVnode, newStartVnode)) {
- patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);
- oldStartVnode = oldCh[++oldStartIdx];
- newStartVnode = newCh[++newStartIdx];
- }
- else if (sameVnode(oldEndVnode, newEndVnode)) {
- patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);
- oldEndVnode = oldCh[--oldEndIdx];
- newEndVnode = newCh[--newEndIdx];
- }
- else if (sameVnode(oldStartVnode, newEndVnode)) {
- // Vnode moved right
- patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);
- canMove &&
- nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));
- oldStartVnode = oldCh[++oldStartIdx];
- newEndVnode = newCh[--newEndIdx];
- }
- else if (sameVnode(oldEndVnode, newStartVnode)) {
- // Vnode moved left
- patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);
- canMove &&
- nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
- oldEndVnode = oldCh[--oldEndIdx];
- newStartVnode = newCh[++newStartIdx];
- }
- else {
- if (isUndef(oldKeyToIdx))
- oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);
- idxInOld = isDef(newStartVnode.key)
- ? oldKeyToIdx[newStartVnode.key]
- : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);
- if (isUndef(idxInOld)) {
- // New element
- createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
- }
- else {
- vnodeToMove = oldCh[idxInOld];
- if (sameVnode(vnodeToMove, newStartVnode)) {
- patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);
- oldCh[idxInOld] = undefined;
- canMove &&
- nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);
- }
- else {
- // same key but different element. treat as new element
- createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
- }
- }
- newStartVnode = newCh[++newStartIdx];
- }
- }
- if (oldStartIdx > oldEndIdx) {
- refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;
- addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
- }
- else if (newStartIdx > newEndIdx) {
- removeVnodes(oldCh, oldStartIdx, oldEndIdx);
- }
- }
- function checkDuplicateKeys(children) {
- var seenKeys = {};
- for (var i_4 = 0; i_4 < children.length; i_4++) {
- var vnode = children[i_4];
- var key = vnode.key;
- if (isDef(key)) {
- if (seenKeys[key]) {
- warn("Duplicate keys detected: '".concat(key, "'. This may cause an update error."), vnode.context);
- }
- else {
- seenKeys[key] = true;
- }
- }
- }
- }
- function findIdxInOld(node, oldCh, start, end) {
- for (var i_5 = start; i_5 < end; i_5++) {
- var c = oldCh[i_5];
- if (isDef(c) && sameVnode(node, c))
- return i_5;
- }
- }
- function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) {
- if (oldVnode === vnode) {
- return;
- }
- if (isDef(vnode.elm) && isDef(ownerArray)) {
- // clone reused vnode
- vnode = ownerArray[index] = cloneVNode(vnode);
- }
- var elm = (vnode.elm = oldVnode.elm);
- if (isTrue(oldVnode.isAsyncPlaceholder)) {
- if (isDef(vnode.asyncFactory.resolved)) {
- hydrate(oldVnode.elm, vnode, insertedVnodeQueue);
- }
- else {
- vnode.isAsyncPlaceholder = true;
- }
- return;
- }
- // reuse element for static trees.
- // note we only do this if the vnode is cloned -
- // if the new node is not cloned it means the render functions have been
- // reset by the hot-reload-api and we need to do a proper re-render.
- if (isTrue(vnode.isStatic) &&
- isTrue(oldVnode.isStatic) &&
- vnode.key === oldVnode.key &&
- (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) {
- vnode.componentInstance = oldVnode.componentInstance;
- return;
- }
- var i;
- var data = vnode.data;
- if (isDef(data) && isDef((i = data.hook)) && isDef((i = i.prepatch))) {
- i(oldVnode, vnode);
- }
- var oldCh = oldVnode.children;
- var ch = vnode.children;
- if (isDef(data) && isPatchable(vnode)) {
- for (i = 0; i < cbs.update.length; ++i)
- cbs.update[i](oldVnode, vnode);
- if (isDef((i = data.hook)) && isDef((i = i.update)))
- i(oldVnode, vnode);
- }
- if (isUndef(vnode.text)) {
- if (isDef(oldCh) && isDef(ch)) {
- if (oldCh !== ch)
- updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly);
- }
- else if (isDef(ch)) {
- if (false) {}
- if (isDef(oldVnode.text))
- nodeOps.setTextContent(elm, '');
- addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
- }
- else if (isDef(oldCh)) {
- removeVnodes(oldCh, 0, oldCh.length - 1);
- }
- else if (isDef(oldVnode.text)) {
- nodeOps.setTextContent(elm, '');
- }
- }
- else if (oldVnode.text !== vnode.text) {
- nodeOps.setTextContent(elm, vnode.text);
- }
- if (isDef(data)) {
- if (isDef((i = data.hook)) && isDef((i = i.postpatch)))
- i(oldVnode, vnode);
- }
- }
- function invokeInsertHook(vnode, queue, initial) {
- // delay insert hooks for component root nodes, invoke them after the
- // element is really inserted
- if (isTrue(initial) && isDef(vnode.parent)) {
- vnode.parent.data.pendingInsert = queue;
- }
- else {
- for (var i_6 = 0; i_6 < queue.length; ++i_6) {
- queue[i_6].data.hook.insert(queue[i_6]);
- }
- }
- }
- var hydrationBailed = false;
- // list of modules that can skip create hook during hydration because they
- // are already rendered on the client or has no need for initialization
- // Note: style is excluded because it relies on initial clone for future
- // deep updates (#7063).
- var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');
- // Note: this is a browser-only function so we can assume elms are DOM nodes.
- function hydrate(elm, vnode, insertedVnodeQueue, inVPre) {
- var i;
- var tag = vnode.tag, data = vnode.data, children = vnode.children;
- inVPre = inVPre || (data && data.pre);
- vnode.elm = elm;
- if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {
- vnode.isAsyncPlaceholder = true;
- return true;
- }
- // assert node match
- if (false) {}
- if (isDef(data)) {
- if (isDef((i = data.hook)) && isDef((i = i.init)))
- i(vnode, true /* hydrating */);
- if (isDef((i = vnode.componentInstance))) {
- // child component. it should have hydrated its own tree.
- initComponent(vnode, insertedVnodeQueue);
- return true;
- }
- }
- if (isDef(tag)) {
- if (isDef(children)) {
- // empty element, allow client to pick up and populate children
- if (!elm.hasChildNodes()) {
- createChildren(vnode, children, insertedVnodeQueue);
- }
- else {
- // v-html and domProps: innerHTML
- if (isDef((i = data)) &&
- isDef((i = i.domProps)) &&
- isDef((i = i.innerHTML))) {
- if (i !== elm.innerHTML) {
- /* istanbul ignore if */
- if (false) {}
- return false;
- }
- }
- else {
- // iterate and compare children lists
- var childrenMatch = true;
- var childNode = elm.firstChild;
- for (var i_7 = 0; i_7 < children.length; i_7++) {
- if (!childNode ||
- !hydrate(childNode, children[i_7], insertedVnodeQueue, inVPre)) {
- childrenMatch = false;
- break;
- }
- childNode = childNode.nextSibling;
- }
- // if childNode is not null, it means the actual childNodes list is
- // longer than the virtual children list.
- if (!childrenMatch || childNode) {
- /* istanbul ignore if */
- if (false) {}
- return false;
- }
- }
- }
- }
- if (isDef(data)) {
- var fullInvoke = false;
- for (var key in data) {
- if (!isRenderedModule(key)) {
- fullInvoke = true;
- invokeCreateHooks(vnode, insertedVnodeQueue);
- break;
- }
- }
- if (!fullInvoke && data['class']) {
- // ensure collecting deps for deep class bindings for future updates
- traverse(data['class']);
- }
- }
- }
- else if (elm.data !== vnode.text) {
- elm.data = vnode.text;
- }
- return true;
- }
- function assertNodeMatch(node, vnode, inVPre) {
- if (isDef(vnode.tag)) {
- return (vnode.tag.indexOf('vue-component') === 0 ||
- (!isUnknownElement(vnode, inVPre) &&
- vnode.tag.toLowerCase() ===
- (node.tagName && node.tagName.toLowerCase())));
- }
- else {
- return node.nodeType === (vnode.isComment ? 8 : 3);
- }
- }
- return function patch(oldVnode, vnode, hydrating, removeOnly) {
- if (isUndef(vnode)) {
- if (isDef(oldVnode))
- invokeDestroyHook(oldVnode);
- return;
- }
- var isInitialPatch = false;
- var insertedVnodeQueue = [];
- if (isUndef(oldVnode)) {
- // empty mount (likely as component), create new root element
- isInitialPatch = true;
- createElm(vnode, insertedVnodeQueue);
- }
- else {
- var isRealElement = isDef(oldVnode.nodeType);
- if (!isRealElement && sameVnode(oldVnode, vnode)) {
- // patch existing root node
- patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);
- }
- else {
- if (isRealElement) {
- // mounting to a real element
- // check if this is server-rendered content and if we can perform
- // a successful hydration.
- if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {
- oldVnode.removeAttribute(SSR_ATTR);
- hydrating = true;
- }
- if (isTrue(hydrating)) {
- if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {
- invokeInsertHook(vnode, insertedVnodeQueue, true);
- return oldVnode;
- }
- else if (false) {}
- }
- // either not server-rendered, or hydration failed.
- // create an empty node and replace it
- oldVnode = emptyNodeAt(oldVnode);
- }
- // replacing existing element
- var oldElm = oldVnode.elm;
- var parentElm = nodeOps.parentNode(oldElm);
- // create new node
- createElm(vnode, insertedVnodeQueue,
- // extremely rare edge case: do not insert if old element is in a
- // leaving transition. Only happens when combining transition +
- // keep-alive + HOCs. (#4590)
- oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm));
- // update parent placeholder node element, recursively
- if (isDef(vnode.parent)) {
- var ancestor = vnode.parent;
- var patchable = isPatchable(vnode);
- while (ancestor) {
- for (var i_8 = 0; i_8 < cbs.destroy.length; ++i_8) {
- cbs.destroy[i_8](ancestor);
- }
- ancestor.elm = vnode.elm;
- if (patchable) {
- for (var i_9 = 0; i_9 < cbs.create.length; ++i_9) {
- cbs.create[i_9](emptyNode, ancestor);
- }
- // #6513
- // invoke insert hooks that may have been merged by create hooks.
- // e.g. for directives that uses the "inserted" hook.
- var insert_1 = ancestor.data.hook.insert;
- if (insert_1.merged) {
- // start at index 1 to avoid re-invoking component mounted hook
- // clone insert hooks to avoid being mutated during iteration.
- // e.g. for customed directives under transition group.
- var cloned = insert_1.fns.slice(1);
- for (var i_10 = 0; i_10 < cloned.length; i_10++) {
- cloned[i_10]();
- }
- }
- }
- else {
- registerRef(ancestor);
- }
- ancestor = ancestor.parent;
- }
- }
- // destroy old node
- if (isDef(parentElm)) {
- removeVnodes([oldVnode], 0, 0);
- }
- else if (isDef(oldVnode.tag)) {
- invokeDestroyHook(oldVnode);
- }
- }
- }
- invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);
- return vnode.elm;
- };
- }
- var directives = {
- create: updateDirectives,
- update: updateDirectives,
- destroy: function unbindDirectives(vnode) {
- // @ts-expect-error emptyNode is not VNodeWithData
- updateDirectives(vnode, emptyNode);
- }
- };
- function updateDirectives(oldVnode, vnode) {
- if (oldVnode.data.directives || vnode.data.directives) {
- _update(oldVnode, vnode);
- }
- }
- function _update(oldVnode, vnode) {
- var isCreate = oldVnode === emptyNode;
- var isDestroy = vnode === emptyNode;
- var oldDirs = normalizeDirectives(oldVnode.data.directives, oldVnode.context);
- var newDirs = normalizeDirectives(vnode.data.directives, vnode.context);
- var dirsWithInsert = [];
- var dirsWithPostpatch = [];
- var key, oldDir, dir;
- for (key in newDirs) {
- oldDir = oldDirs[key];
- dir = newDirs[key];
- if (!oldDir) {
- // new directive, bind
- callHook(dir, 'bind', vnode, oldVnode);
- if (dir.def && dir.def.inserted) {
- dirsWithInsert.push(dir);
- }
- }
- else {
- // existing directive, update
- dir.oldValue = oldDir.value;
- dir.oldArg = oldDir.arg;
- callHook(dir, 'update', vnode, oldVnode);
- if (dir.def && dir.def.componentUpdated) {
- dirsWithPostpatch.push(dir);
- }
- }
- }
- if (dirsWithInsert.length) {
- var callInsert = function () {
- for (var i = 0; i < dirsWithInsert.length; i++) {
- callHook(dirsWithInsert[i], 'inserted', vnode, oldVnode);
- }
- };
- if (isCreate) {
- mergeVNodeHook(vnode, 'insert', callInsert);
- }
- else {
- callInsert();
- }
- }
- if (dirsWithPostpatch.length) {
- mergeVNodeHook(vnode, 'postpatch', function () {
- for (var i = 0; i < dirsWithPostpatch.length; i++) {
- callHook(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);
- }
- });
- }
- if (!isCreate) {
- for (key in oldDirs) {
- if (!newDirs[key]) {
- // no longer present, unbind
- callHook(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);
- }
- }
- }
- }
- var emptyModifiers = Object.create(null);
- function normalizeDirectives(dirs, vm) {
- var res = Object.create(null);
- if (!dirs) {
- // $flow-disable-line
- return res;
- }
- var i, dir;
- for (i = 0; i < dirs.length; i++) {
- dir = dirs[i];
- if (!dir.modifiers) {
- // $flow-disable-line
- dir.modifiers = emptyModifiers;
- }
- res[getRawDirName(dir)] = dir;
- if (vm._setupState && vm._setupState.__sfc) {
- var setupDef = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name);
- if (typeof setupDef === 'function') {
- dir.def = {
- bind: setupDef,
- update: setupDef,
- };
- }
- else {
- dir.def = setupDef;
- }
- }
- dir.def = dir.def || resolveAsset(vm.$options, 'directives', dir.name, true);
- }
- // $flow-disable-line
- return res;
- }
- function getRawDirName(dir) {
- return (dir.rawName || "".concat(dir.name, ".").concat(Object.keys(dir.modifiers || {}).join('.')));
- }
- function callHook(dir, hook, vnode, oldVnode, isDestroy) {
- var fn = dir.def && dir.def[hook];
- if (fn) {
- try {
- fn(vnode.elm, dir, vnode, oldVnode, isDestroy);
- }
- catch (e) {
- handleError(e, vnode.context, "directive ".concat(dir.name, " ").concat(hook, " hook"));
- }
- }
- }
- var baseModules = [ref, directives];
- function updateAttrs(oldVnode, vnode) {
- var opts = vnode.componentOptions;
- if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {
- return;
- }
- if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {
- return;
- }
- var key, cur, old;
- var elm = vnode.elm;
- var oldAttrs = oldVnode.data.attrs || {};
- var attrs = vnode.data.attrs || {};
- // clone observed objects, as the user probably wants to mutate it
- if (isDef(attrs.__ob__) || isTrue(attrs._v_attr_proxy)) {
- attrs = vnode.data.attrs = extend({}, attrs);
- }
- for (key in attrs) {
- cur = attrs[key];
- old = oldAttrs[key];
- if (old !== cur) {
- setAttr(elm, key, cur, vnode.data.pre);
- }
- }
- // #4391: in IE9, setting type can reset value for input[type=radio]
- // #6666: IE/Edge forces progress value down to 1 before setting a max
- /* istanbul ignore if */
- if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {
- setAttr(elm, 'value', attrs.value);
- }
- for (key in oldAttrs) {
- if (isUndef(attrs[key])) {
- if (isXlink(key)) {
- elm.removeAttributeNS(xlinkNS, getXlinkProp(key));
- }
- else if (!isEnumeratedAttr(key)) {
- elm.removeAttribute(key);
- }
- }
- }
- }
- function setAttr(el, key, value, isInPre) {
- if (isInPre || el.tagName.indexOf('-') > -1) {
- baseSetAttr(el, key, value);
- }
- else if (isBooleanAttr(key)) {
- // set attribute for blank value
- // e.g. <option disabled>Select one</option>
- if (isFalsyAttrValue(value)) {
- el.removeAttribute(key);
- }
- else {
- // technically allowfullscreen is a boolean attribute for <iframe>,
- // but Flash expects a value of "true" when used on <embed> tag
- value = key === 'allowfullscreen' && el.tagName === 'EMBED' ? 'true' : key;
- el.setAttribute(key, value);
- }
- }
- else if (isEnumeratedAttr(key)) {
- el.setAttribute(key, convertEnumeratedValue(key, value));
- }
- else if (isXlink(key)) {
- if (isFalsyAttrValue(value)) {
- el.removeAttributeNS(xlinkNS, getXlinkProp(key));
- }
- else {
- el.setAttributeNS(xlinkNS, key, value);
- }
- }
- else {
- baseSetAttr(el, key, value);
- }
- }
- function baseSetAttr(el, key, value) {
- if (isFalsyAttrValue(value)) {
- el.removeAttribute(key);
- }
- else {
- // #7138: IE10 & 11 fires input event when setting placeholder on
- // <textarea>... block the first input event and remove the blocker
- // immediately.
- /* istanbul ignore if */
- if (isIE &&
- !isIE9 &&
- el.tagName === 'TEXTAREA' &&
- key === 'placeholder' &&
- value !== '' &&
- !el.__ieph) {
- var blocker_1 = function (e) {
- e.stopImmediatePropagation();
- el.removeEventListener('input', blocker_1);
- };
- el.addEventListener('input', blocker_1);
- // $flow-disable-line
- el.__ieph = true; /* IE placeholder patched */
- }
- el.setAttribute(key, value);
- }
- }
- var attrs = {
- create: updateAttrs,
- update: updateAttrs
- };
- function updateClass(oldVnode, vnode) {
- var el = vnode.elm;
- var data = vnode.data;
- var oldData = oldVnode.data;
- if (isUndef(data.staticClass) &&
- isUndef(data.class) &&
- (isUndef(oldData) ||
- (isUndef(oldData.staticClass) && isUndef(oldData.class)))) {
- return;
- }
- var cls = genClassForVnode(vnode);
- // handle transition classes
- var transitionClass = el._transitionClasses;
- if (isDef(transitionClass)) {
- cls = concat(cls, stringifyClass(transitionClass));
- }
- // set the class
- if (cls !== el._prevClass) {
- el.setAttribute('class', cls);
- el._prevClass = cls;
- }
- }
- var klass = {
- create: updateClass,
- update: updateClass
- };
- // in some cases, the event used has to be determined at runtime
- // so we used some reserved tokens during compile.
- var RANGE_TOKEN = '__r';
- var CHECKBOX_RADIO_TOKEN = '__c';
- // normalize v-model event tokens that can only be determined at runtime.
- // it's important to place the event as the first in the array because
- // the whole point is ensuring the v-model callback gets called before
- // user-attached handlers.
- function normalizeEvents(on) {
- /* istanbul ignore if */
- if (isDef(on[RANGE_TOKEN])) {
- // IE input[type=range] only supports `change` event
- var event_1 = isIE ? 'change' : 'input';
- on[event_1] = [].concat(on[RANGE_TOKEN], on[event_1] || []);
- delete on[RANGE_TOKEN];
- }
- // This was originally intended to fix #4521 but no longer necessary
- // after 2.5. Keeping it for backwards compat with generated code from < 2.4
- /* istanbul ignore if */
- if (isDef(on[CHECKBOX_RADIO_TOKEN])) {
- on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);
- delete on[CHECKBOX_RADIO_TOKEN];
- }
- }
- var target;
- function createOnceHandler(event, handler, capture) {
- var _target = target; // save current target element in closure
- return function onceHandler() {
- var res = handler.apply(null, arguments);
- if (res !== null) {
- remove(event, onceHandler, capture, _target);
- }
- };
- }
- // #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp
- // implementation and does not fire microtasks in between event propagation, so
- // safe to exclude.
- var useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);
- function add(name, handler, capture, passive) {
- // async edge case #6566: inner click event triggers patch, event handler
- // attached to outer element during patch, and triggered again. This
- // happens because browsers fire microtask ticks between event propagation.
- // the solution is simple: we save the timestamp when a handler is attached,
- // and the handler would only fire if the event passed to it was fired
- // AFTER it was attached.
- if (useMicrotaskFix) {
- var attachedTimestamp_1 = currentFlushTimestamp;
- var original_1 = handler;
- //@ts-expect-error
- handler = original_1._wrapper = function (e) {
- if (
- // no bubbling, should always fire.
- // this is just a safety net in case event.timeStamp is unreliable in
- // certain weird environments...
- e.target === e.currentTarget ||
- // event is fired after handler attachment
- e.timeStamp >= attachedTimestamp_1 ||
- // bail for environments that have buggy event.timeStamp implementations
- // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState
- // #9681 QtWebEngine event.timeStamp is negative value
- e.timeStamp <= 0 ||
- // #9448 bail if event is fired in another document in a multi-page
- // electron/nw.js app, since event.timeStamp will be using a different
- // starting reference
- e.target.ownerDocument !== document) {
- return original_1.apply(this, arguments);
- }
- };
- }
- target.addEventListener(name, handler, supportsPassive ? { capture: capture, passive: passive } : capture);
- }
- function remove(name, handler, capture, _target) {
- (_target || target).removeEventListener(name,
- //@ts-expect-error
- handler._wrapper || handler, capture);
- }
- function updateDOMListeners(oldVnode, vnode) {
- if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {
- return;
- }
- var on = vnode.data.on || {};
- var oldOn = oldVnode.data.on || {};
- // vnode is empty when removing all listeners,
- // and use old vnode dom element
- target = vnode.elm || oldVnode.elm;
- normalizeEvents(on);
- updateListeners(on, oldOn, add, remove, createOnceHandler, vnode.context);
- target = undefined;
- }
- var events = {
- create: updateDOMListeners,
- update: updateDOMListeners,
- // @ts-expect-error emptyNode has actually data
- destroy: function (vnode) { return updateDOMListeners(vnode, emptyNode); }
- };
- var svgContainer;
- function updateDOMProps(oldVnode, vnode) {
- if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {
- return;
- }
- var key, cur;
- var elm = vnode.elm;
- var oldProps = oldVnode.data.domProps || {};
- var props = vnode.data.domProps || {};
- // clone observed objects, as the user probably wants to mutate it
- if (isDef(props.__ob__) || isTrue(props._v_attr_proxy)) {
- props = vnode.data.domProps = extend({}, props);
- }
- for (key in oldProps) {
- if (!(key in props)) {
- elm[key] = '';
- }
- }
- for (key in props) {
- cur = props[key];
- // ignore children if the node has textContent or innerHTML,
- // as these will throw away existing DOM nodes and cause removal errors
- // on subsequent patches (#3360)
- if (key === 'textContent' || key === 'innerHTML') {
- if (vnode.children)
- vnode.children.length = 0;
- if (cur === oldProps[key])
- continue;
- // #6601 work around Chrome version <= 55 bug where single textNode
- // replaced by innerHTML/textContent retains its parentNode property
- if (elm.childNodes.length === 1) {
- elm.removeChild(elm.childNodes[0]);
- }
- }
- if (key === 'value' && elm.tagName !== 'PROGRESS') {
- // store value as _value as well since
- // non-string values will be stringified
- elm._value = cur;
- // avoid resetting cursor position when value is the same
- var strCur = isUndef(cur) ? '' : String(cur);
- if (shouldUpdateValue(elm, strCur)) {
- elm.value = strCur;
- }
- }
- else if (key === 'innerHTML' &&
- isSVG(elm.tagName) &&
- isUndef(elm.innerHTML)) {
- // IE doesn't support innerHTML for SVG elements
- svgContainer = svgContainer || document.createElement('div');
- svgContainer.innerHTML = "<svg>".concat(cur, "</svg>");
- var svg = svgContainer.firstChild;
- while (elm.firstChild) {
- elm.removeChild(elm.firstChild);
- }
- while (svg.firstChild) {
- elm.appendChild(svg.firstChild);
- }
- }
- else if (
- // skip the update if old and new VDOM state is the same.
- // `value` is handled separately because the DOM value may be temporarily
- // out of sync with VDOM state due to focus, composition and modifiers.
- // This #4521 by skipping the unnecessary `checked` update.
- cur !== oldProps[key]) {
- // some property updates can throw
- // e.g. `value` on <progress> w/ non-finite value
- try {
- elm[key] = cur;
- }
- catch (e) { }
- }
- }
- }
- function shouldUpdateValue(elm, checkVal) {
- return (
- //@ts-expect-error
- !elm.composing &&
- (elm.tagName === 'OPTION' ||
- isNotInFocusAndDirty(elm, checkVal) ||
- isDirtyWithModifiers(elm, checkVal)));
- }
- function isNotInFocusAndDirty(elm, checkVal) {
- // return true when textbox (.number and .trim) loses focus and its value is
- // not equal to the updated value
- var notInFocus = true;
- // #6157
- // work around IE bug when accessing document.activeElement in an iframe
- try {
- notInFocus = document.activeElement !== elm;
- }
- catch (e) { }
- return notInFocus && elm.value !== checkVal;
- }
- function isDirtyWithModifiers(elm, newVal) {
- var value = elm.value;
- var modifiers = elm._vModifiers; // injected by v-model runtime
- if (isDef(modifiers)) {
- if (modifiers.number) {
- return toNumber(value) !== toNumber(newVal);
- }
- if (modifiers.trim) {
- return value.trim() !== newVal.trim();
- }
- }
- return value !== newVal;
- }
- var domProps = {
- create: updateDOMProps,
- update: updateDOMProps
- };
- var parseStyleText = cached(function (cssText) {
- var res = {};
- var listDelimiter = /;(?![^(]*\))/g;
- var propertyDelimiter = /:(.+)/;
- cssText.split(listDelimiter).forEach(function (item) {
- if (item) {
- var tmp = item.split(propertyDelimiter);
- tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
- }
- });
- return res;
- });
- // merge static and dynamic style data on the same vnode
- function normalizeStyleData(data) {
- var style = normalizeStyleBinding(data.style);
- // static style is pre-processed into an object during compilation
- // and is always a fresh object, so it's safe to merge into it
- return data.staticStyle ? extend(data.staticStyle, style) : style;
- }
- // normalize possible array / string values into Object
- function normalizeStyleBinding(bindingStyle) {
- if (Array.isArray(bindingStyle)) {
- return toObject(bindingStyle);
- }
- if (typeof bindingStyle === 'string') {
- return parseStyleText(bindingStyle);
- }
- return bindingStyle;
- }
- /**
- * parent component style should be after child's
- * so that parent component's style could override it
- */
- function getStyle(vnode, checkChild) {
- var res = {};
- var styleData;
- if (checkChild) {
- var childNode = vnode;
- while (childNode.componentInstance) {
- childNode = childNode.componentInstance._vnode;
- if (childNode &&
- childNode.data &&
- (styleData = normalizeStyleData(childNode.data))) {
- extend(res, styleData);
- }
- }
- }
- if ((styleData = normalizeStyleData(vnode.data))) {
- extend(res, styleData);
- }
- var parentNode = vnode;
- // @ts-expect-error parentNode.parent not VNodeWithData
- while ((parentNode = parentNode.parent)) {
- if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {
- extend(res, styleData);
- }
- }
- return res;
- }
- var cssVarRE = /^--/;
- var importantRE = /\s*!important$/;
- var setProp = function (el, name, val) {
- /* istanbul ignore if */
- if (cssVarRE.test(name)) {
- el.style.setProperty(name, val);
- }
- else if (importantRE.test(val)) {
- el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');
- }
- else {
- var normalizedName = normalize(name);
- if (Array.isArray(val)) {
- // Support values array created by autoprefixer, e.g.
- // {display: ["-webkit-box", "-ms-flexbox", "flex"]}
- // Set them one by one, and the browser will only set those it can recognize
- for (var i = 0, len = val.length; i < len; i++) {
- el.style[normalizedName] = val[i];
- }
- }
- else {
- el.style[normalizedName] = val;
- }
- }
- };
- var vendorNames = ['Webkit', 'Moz', 'ms'];
- var emptyStyle;
- var normalize = cached(function (prop) {
- emptyStyle = emptyStyle || document.createElement('div').style;
- prop = camelize(prop);
- if (prop !== 'filter' && prop in emptyStyle) {
- return prop;
- }
- var capName = prop.charAt(0).toUpperCase() + prop.slice(1);
- for (var i = 0; i < vendorNames.length; i++) {
- var name_1 = vendorNames[i] + capName;
- if (name_1 in emptyStyle) {
- return name_1;
- }
- }
- });
- function updateStyle(oldVnode, vnode) {
- var data = vnode.data;
- var oldData = oldVnode.data;
- if (isUndef(data.staticStyle) &&
- isUndef(data.style) &&
- isUndef(oldData.staticStyle) &&
- isUndef(oldData.style)) {
- return;
- }
- var cur, name;
- var el = vnode.elm;
- var oldStaticStyle = oldData.staticStyle;
- var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};
- // if static style exists, stylebinding already merged into it when doing normalizeStyleData
- var oldStyle = oldStaticStyle || oldStyleBinding;
- var style = normalizeStyleBinding(vnode.data.style) || {};
- // store normalized style under a different key for next diff
- // make sure to clone it if it's reactive, since the user likely wants
- // to mutate it.
- vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style;
- var newStyle = getStyle(vnode, true);
- for (name in oldStyle) {
- if (isUndef(newStyle[name])) {
- setProp(el, name, '');
- }
- }
- for (name in newStyle) {
- cur = newStyle[name];
- // ie9 setting to null has no effect, must use empty string
- setProp(el, name, cur == null ? '' : cur);
- }
- }
- var style = {
- create: updateStyle,
- update: updateStyle
- };
- var whitespaceRE = /\s+/;
- /**
- * Add class with compatibility for SVG since classList is not supported on
- * SVG elements in IE
- */
- function addClass(el, cls) {
- /* istanbul ignore if */
- if (!cls || !(cls = cls.trim())) {
- return;
- }
- /* istanbul ignore else */
- if (el.classList) {
- if (cls.indexOf(' ') > -1) {
- cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });
- }
- else {
- el.classList.add(cls);
- }
- }
- else {
- var cur = " ".concat(el.getAttribute('class') || '', " ");
- if (cur.indexOf(' ' + cls + ' ') < 0) {
- el.setAttribute('class', (cur + cls).trim());
- }
- }
- }
- /**
- * Remove class with compatibility for SVG since classList is not supported on
- * SVG elements in IE
- */
- function removeClass(el, cls) {
- /* istanbul ignore if */
- if (!cls || !(cls = cls.trim())) {
- return;
- }
- /* istanbul ignore else */
- if (el.classList) {
- if (cls.indexOf(' ') > -1) {
- cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });
- }
- else {
- el.classList.remove(cls);
- }
- if (!el.classList.length) {
- el.removeAttribute('class');
- }
- }
- else {
- var cur = " ".concat(el.getAttribute('class') || '', " ");
- var tar = ' ' + cls + ' ';
- while (cur.indexOf(tar) >= 0) {
- cur = cur.replace(tar, ' ');
- }
- cur = cur.trim();
- if (cur) {
- el.setAttribute('class', cur);
- }
- else {
- el.removeAttribute('class');
- }
- }
- }
- function resolveTransition(def) {
- if (!def) {
- return;
- }
- /* istanbul ignore else */
- if (typeof def === 'object') {
- var res = {};
- if (def.css !== false) {
- extend(res, autoCssTransition(def.name || 'v'));
- }
- extend(res, def);
- return res;
- }
- else if (typeof def === 'string') {
- return autoCssTransition(def);
- }
- }
- var autoCssTransition = cached(function (name) {
- return {
- enterClass: "".concat(name, "-enter"),
- enterToClass: "".concat(name, "-enter-to"),
- enterActiveClass: "".concat(name, "-enter-active"),
- leaveClass: "".concat(name, "-leave"),
- leaveToClass: "".concat(name, "-leave-to"),
- leaveActiveClass: "".concat(name, "-leave-active")
- };
- });
- var hasTransition = inBrowser && !isIE9;
- var TRANSITION = 'transition';
- var ANIMATION = 'animation';
- // Transition property/event sniffing
- var transitionProp = 'transition';
- var transitionEndEvent = 'transitionend';
- var animationProp = 'animation';
- var animationEndEvent = 'animationend';
- if (hasTransition) {
- /* istanbul ignore if */
- if (window.ontransitionend === undefined &&
- window.onwebkittransitionend !== undefined) {
- transitionProp = 'WebkitTransition';
- transitionEndEvent = 'webkitTransitionEnd';
- }
- if (window.onanimationend === undefined &&
- window.onwebkitanimationend !== undefined) {
- animationProp = 'WebkitAnimation';
- animationEndEvent = 'webkitAnimationEnd';
- }
- }
- // binding to window is necessary to make hot reload work in IE in strict mode
- var raf = inBrowser
- ? window.requestAnimationFrame
- ? window.requestAnimationFrame.bind(window)
- : setTimeout
- : /* istanbul ignore next */ function (/* istanbul ignore next */ fn) { return fn(); };
- function nextFrame(fn) {
- raf(function () {
- // @ts-expect-error
- raf(fn);
- });
- }
- function addTransitionClass(el, cls) {
- var transitionClasses = el._transitionClasses || (el._transitionClasses = []);
- if (transitionClasses.indexOf(cls) < 0) {
- transitionClasses.push(cls);
- addClass(el, cls);
- }
- }
- function removeTransitionClass(el, cls) {
- if (el._transitionClasses) {
- remove$2(el._transitionClasses, cls);
- }
- removeClass(el, cls);
- }
- function whenTransitionEnds(el, expectedType, cb) {
- var _a = getTransitionInfo(el, expectedType), type = _a.type, timeout = _a.timeout, propCount = _a.propCount;
- if (!type)
- return cb();
- var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;
- var ended = 0;
- var end = function () {
- el.removeEventListener(event, onEnd);
- cb();
- };
- var onEnd = function (e) {
- if (e.target === el) {
- if (++ended >= propCount) {
- end();
- }
- }
- };
- setTimeout(function () {
- if (ended < propCount) {
- end();
- }
- }, timeout + 1);
- el.addEventListener(event, onEnd);
- }
- var transformRE = /\b(transform|all)(,|$)/;
- function getTransitionInfo(el, expectedType) {
- var styles = window.getComputedStyle(el);
- // JSDOM may return undefined for transition properties
- var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');
- var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');
- var transitionTimeout = getTimeout(transitionDelays, transitionDurations);
- var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');
- var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');
- var animationTimeout = getTimeout(animationDelays, animationDurations);
- var type;
- var timeout = 0;
- var propCount = 0;
- /* istanbul ignore if */
- if (expectedType === TRANSITION) {
- if (transitionTimeout > 0) {
- type = TRANSITION;
- timeout = transitionTimeout;
- propCount = transitionDurations.length;
- }
- }
- else if (expectedType === ANIMATION) {
- if (animationTimeout > 0) {
- type = ANIMATION;
- timeout = animationTimeout;
- propCount = animationDurations.length;
- }
- }
- else {
- timeout = Math.max(transitionTimeout, animationTimeout);
- type =
- timeout > 0
- ? transitionTimeout > animationTimeout
- ? TRANSITION
- : ANIMATION
- : null;
- propCount = type
- ? type === TRANSITION
- ? transitionDurations.length
- : animationDurations.length
- : 0;
- }
- var hasTransform = type === TRANSITION && transformRE.test(styles[transitionProp + 'Property']);
- return {
- type: type,
- timeout: timeout,
- propCount: propCount,
- hasTransform: hasTransform
- };
- }
- function getTimeout(delays, durations) {
- /* istanbul ignore next */
- while (delays.length < durations.length) {
- delays = delays.concat(delays);
- }
- return Math.max.apply(null, durations.map(function (d, i) {
- return toMs(d) + toMs(delays[i]);
- }));
- }
- // Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers
- // in a locale-dependent way, using a comma instead of a dot.
- // If comma is not replaced with a dot, the input will be rounded down (i.e. acting
- // as a floor function) causing unexpected behaviors
- function toMs(s) {
- return Number(s.slice(0, -1).replace(',', '.')) * 1000;
- }
- function enter(vnode, toggleDisplay) {
- var el = vnode.elm;
- // call leave callback now
- if (isDef(el._leaveCb)) {
- el._leaveCb.cancelled = true;
- el._leaveCb();
- }
- var data = resolveTransition(vnode.data.transition);
- if (isUndef(data)) {
- return;
- }
- /* istanbul ignore if */
- if (isDef(el._enterCb) || el.nodeType !== 1) {
- return;
- }
- var css = data.css, type = data.type, enterClass = data.enterClass, enterToClass = data.enterToClass, enterActiveClass = data.enterActiveClass, appearClass = data.appearClass, appearToClass = data.appearToClass, appearActiveClass = data.appearActiveClass, beforeEnter = data.beforeEnter, enter = data.enter, afterEnter = data.afterEnter, enterCancelled = data.enterCancelled, beforeAppear = data.beforeAppear, appear = data.appear, afterAppear = data.afterAppear, appearCancelled = data.appearCancelled, duration = data.duration;
- // activeInstance will always be the <transition> component managing this
- // transition. One edge case to check is when the <transition> is placed
- // as the root node of a child component. In that case we need to check
- // <transition>'s parent for appear check.
- var context = activeInstance;
- var transitionNode = activeInstance.$vnode;
- while (transitionNode && transitionNode.parent) {
- context = transitionNode.context;
- transitionNode = transitionNode.parent;
- }
- var isAppear = !context._isMounted || !vnode.isRootInsert;
- if (isAppear && !appear && appear !== '') {
- return;
- }
- var startClass = isAppear && appearClass ? appearClass : enterClass;
- var activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass;
- var toClass = isAppear && appearToClass ? appearToClass : enterToClass;
- var beforeEnterHook = isAppear ? beforeAppear || beforeEnter : beforeEnter;
- var enterHook = isAppear ? (isFunction(appear) ? appear : enter) : enter;
- var afterEnterHook = isAppear ? afterAppear || afterEnter : afterEnter;
- var enterCancelledHook = isAppear
- ? appearCancelled || enterCancelled
- : enterCancelled;
- var explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration);
- if (false) {}
- var expectsCSS = css !== false && !isIE9;
- var userWantsControl = getHookArgumentsLength(enterHook);
- var cb = (el._enterCb = once(function () {
- if (expectsCSS) {
- removeTransitionClass(el, toClass);
- removeTransitionClass(el, activeClass);
- }
- // @ts-expect-error
- if (cb.cancelled) {
- if (expectsCSS) {
- removeTransitionClass(el, startClass);
- }
- enterCancelledHook && enterCancelledHook(el);
- }
- else {
- afterEnterHook && afterEnterHook(el);
- }
- el._enterCb = null;
- }));
- if (!vnode.data.show) {
- // remove pending leave element on enter by injecting an insert hook
- mergeVNodeHook(vnode, 'insert', function () {
- var parent = el.parentNode;
- var pendingNode = parent && parent._pending && parent._pending[vnode.key];
- if (pendingNode &&
- pendingNode.tag === vnode.tag &&
- pendingNode.elm._leaveCb) {
- pendingNode.elm._leaveCb();
- }
- enterHook && enterHook(el, cb);
- });
- }
- // start enter transition
- beforeEnterHook && beforeEnterHook(el);
- if (expectsCSS) {
- addTransitionClass(el, startClass);
- addTransitionClass(el, activeClass);
- nextFrame(function () {
- removeTransitionClass(el, startClass);
- // @ts-expect-error
- if (!cb.cancelled) {
- addTransitionClass(el, toClass);
- if (!userWantsControl) {
- if (isValidDuration(explicitEnterDuration)) {
- setTimeout(cb, explicitEnterDuration);
- }
- else {
- whenTransitionEnds(el, type, cb);
- }
- }
- }
- });
- }
- if (vnode.data.show) {
- toggleDisplay && toggleDisplay();
- enterHook && enterHook(el, cb);
- }
- if (!expectsCSS && !userWantsControl) {
- cb();
- }
- }
- function leave(vnode, rm) {
- var el = vnode.elm;
- // call enter callback now
- if (isDef(el._enterCb)) {
- el._enterCb.cancelled = true;
- el._enterCb();
- }
- var data = resolveTransition(vnode.data.transition);
- if (isUndef(data) || el.nodeType !== 1) {
- return rm();
- }
- /* istanbul ignore if */
- if (isDef(el._leaveCb)) {
- return;
- }
- var css = data.css, type = data.type, leaveClass = data.leaveClass, leaveToClass = data.leaveToClass, leaveActiveClass = data.leaveActiveClass, beforeLeave = data.beforeLeave, leave = data.leave, afterLeave = data.afterLeave, leaveCancelled = data.leaveCancelled, delayLeave = data.delayLeave, duration = data.duration;
- var expectsCSS = css !== false && !isIE9;
- var userWantsControl = getHookArgumentsLength(leave);
- var explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration);
- if (false) {}
- var cb = (el._leaveCb = once(function () {
- if (el.parentNode && el.parentNode._pending) {
- el.parentNode._pending[vnode.key] = null;
- }
- if (expectsCSS) {
- removeTransitionClass(el, leaveToClass);
- removeTransitionClass(el, leaveActiveClass);
- }
- // @ts-expect-error
- if (cb.cancelled) {
- if (expectsCSS) {
- removeTransitionClass(el, leaveClass);
- }
- leaveCancelled && leaveCancelled(el);
- }
- else {
- rm();
- afterLeave && afterLeave(el);
- }
- el._leaveCb = null;
- }));
- if (delayLeave) {
- delayLeave(performLeave);
- }
- else {
- performLeave();
- }
- function performLeave() {
- // the delayed leave may have already been cancelled
- // @ts-expect-error
- if (cb.cancelled) {
- return;
- }
- // record leaving element
- if (!vnode.data.show && el.parentNode) {
- (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] =
- vnode;
- }
- beforeLeave && beforeLeave(el);
- if (expectsCSS) {
- addTransitionClass(el, leaveClass);
- addTransitionClass(el, leaveActiveClass);
- nextFrame(function () {
- removeTransitionClass(el, leaveClass);
- // @ts-expect-error
- if (!cb.cancelled) {
- addTransitionClass(el, leaveToClass);
- if (!userWantsControl) {
- if (isValidDuration(explicitLeaveDuration)) {
- setTimeout(cb, explicitLeaveDuration);
- }
- else {
- whenTransitionEnds(el, type, cb);
- }
- }
- }
- });
- }
- leave && leave(el, cb);
- if (!expectsCSS && !userWantsControl) {
- cb();
- }
- }
- }
- // only used in dev mode
- function checkDuration(val, name, vnode) {
- if (typeof val !== 'number') {
- warn("<transition> explicit ".concat(name, " duration is not a valid number - ") +
- "got ".concat(JSON.stringify(val), "."), vnode.context);
- }
- else if (isNaN(val)) {
- warn("<transition> explicit ".concat(name, " duration is NaN - ") +
- 'the duration expression might be incorrect.', vnode.context);
- }
- }
- function isValidDuration(val) {
- return typeof val === 'number' && !isNaN(val);
- }
- /**
- * Normalize a transition hook's argument length. The hook may be:
- * - a merged hook (invoker) with the original in .fns
- * - a wrapped component method (check ._length)
- * - a plain function (.length)
- */
- function getHookArgumentsLength(fn) {
- if (isUndef(fn)) {
- return false;
- }
- // @ts-expect-error
- var invokerFns = fn.fns;
- if (isDef(invokerFns)) {
- // invoker
- return getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns);
- }
- else {
- // @ts-expect-error
- return (fn._length || fn.length) > 1;
- }
- }
- function _enter(_, vnode) {
- if (vnode.data.show !== true) {
- enter(vnode);
- }
- }
- var transition = inBrowser
- ? {
- create: _enter,
- activate: _enter,
- remove: function (vnode, rm) {
- /* istanbul ignore else */
- if (vnode.data.show !== true) {
- // @ts-expect-error
- leave(vnode, rm);
- }
- else {
- rm();
- }
- }
- }
- : {};
- var platformModules = [attrs, klass, events, domProps, style, transition];
- // the directive module should be applied last, after all
- // built-in modules have been applied.
- var modules = platformModules.concat(baseModules);
- var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });
- /**
- * Not type checking this file because flow doesn't like attaching
- * properties to Elements.
- */
- /* istanbul ignore if */
- if (isIE9) {
- // http://www.matts411.com/post/internet-explorer-9-oninput/
- document.addEventListener('selectionchange', function () {
- var el = document.activeElement;
- // @ts-expect-error
- if (el && el.vmodel) {
- trigger(el, 'input');
- }
- });
- }
- var directive = {
- inserted: function (el, binding, vnode, oldVnode) {
- if (vnode.tag === 'select') {
- // #6903
- if (oldVnode.elm && !oldVnode.elm._vOptions) {
- mergeVNodeHook(vnode, 'postpatch', function () {
- directive.componentUpdated(el, binding, vnode);
- });
- }
- else {
- setSelected(el, binding, vnode.context);
- }
- el._vOptions = [].map.call(el.options, getValue);
- }
- else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {
- el._vModifiers = binding.modifiers;
- if (!binding.modifiers.lazy) {
- el.addEventListener('compositionstart', onCompositionStart);
- el.addEventListener('compositionend', onCompositionEnd);
- // Safari < 10.2 & UIWebView doesn't fire compositionend when
- // switching focus before confirming composition choice
- // this also fixes the issue where some browsers e.g. iOS Chrome
- // fires "change" instead of "input" on autocomplete.
- el.addEventListener('change', onCompositionEnd);
- /* istanbul ignore if */
- if (isIE9) {
- el.vmodel = true;
- }
- }
- }
- },
- componentUpdated: function (el, binding, vnode) {
- if (vnode.tag === 'select') {
- setSelected(el, binding, vnode.context);
- // in case the options rendered by v-for have changed,
- // it's possible that the value is out-of-sync with the rendered options.
- // detect such cases and filter out values that no longer has a matching
- // option in the DOM.
- var prevOptions_1 = el._vOptions;
- var curOptions_1 = (el._vOptions = [].map.call(el.options, getValue));
- if (curOptions_1.some(function (o, i) { return !looseEqual(o, prevOptions_1[i]); })) {
- // trigger change event if
- // no matching option found for at least one value
- var needReset = el.multiple
- ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions_1); })
- : binding.value !== binding.oldValue &&
- hasNoMatchingOption(binding.value, curOptions_1);
- if (needReset) {
- trigger(el, 'change');
- }
- }
- }
- }
- };
- function setSelected(el, binding, vm) {
- actuallySetSelected(el, binding, vm);
- /* istanbul ignore if */
- if (isIE || isEdge) {
- setTimeout(function () {
- actuallySetSelected(el, binding, vm);
- }, 0);
- }
- }
- function actuallySetSelected(el, binding, vm) {
- var value = binding.value;
- var isMultiple = el.multiple;
- if (isMultiple && !Array.isArray(value)) {
- false &&
- false;
- return;
- }
- var selected, option;
- for (var i = 0, l = el.options.length; i < l; i++) {
- option = el.options[i];
- if (isMultiple) {
- selected = looseIndexOf(value, getValue(option)) > -1;
- if (option.selected !== selected) {
- option.selected = selected;
- }
- }
- else {
- if (looseEqual(getValue(option), value)) {
- if (el.selectedIndex !== i) {
- el.selectedIndex = i;
- }
- return;
- }
- }
- }
- if (!isMultiple) {
- el.selectedIndex = -1;
- }
- }
- function hasNoMatchingOption(value, options) {
- return options.every(function (o) { return !looseEqual(o, value); });
- }
- function getValue(option) {
- return '_value' in option ? option._value : option.value;
- }
- function onCompositionStart(e) {
- e.target.composing = true;
- }
- function onCompositionEnd(e) {
- // prevent triggering an input event for no reason
- if (!e.target.composing)
- return;
- e.target.composing = false;
- trigger(e.target, 'input');
- }
- function trigger(el, type) {
- var e = document.createEvent('HTMLEvents');
- e.initEvent(type, true, true);
- el.dispatchEvent(e);
- }
- // recursively search for possible transition defined inside the component root
- function locateNode(vnode) {
- // @ts-expect-error
- return vnode.componentInstance && (!vnode.data || !vnode.data.transition)
- ? locateNode(vnode.componentInstance._vnode)
- : vnode;
- }
- var show = {
- bind: function (el, _a, vnode) {
- var value = _a.value;
- vnode = locateNode(vnode);
- var transition = vnode.data && vnode.data.transition;
- var originalDisplay = (el.__vOriginalDisplay =
- el.style.display === 'none' ? '' : el.style.display);
- if (value && transition) {
- vnode.data.show = true;
- enter(vnode, function () {
- el.style.display = originalDisplay;
- });
- }
- else {
- el.style.display = value ? originalDisplay : 'none';
- }
- },
- update: function (el, _a, vnode) {
- var value = _a.value, oldValue = _a.oldValue;
- /* istanbul ignore if */
- if (!value === !oldValue)
- return;
- vnode = locateNode(vnode);
- var transition = vnode.data && vnode.data.transition;
- if (transition) {
- vnode.data.show = true;
- if (value) {
- enter(vnode, function () {
- el.style.display = el.__vOriginalDisplay;
- });
- }
- else {
- leave(vnode, function () {
- el.style.display = 'none';
- });
- }
- }
- else {
- el.style.display = value ? el.__vOriginalDisplay : 'none';
- }
- },
- unbind: function (el, binding, vnode, oldVnode, isDestroy) {
- if (!isDestroy) {
- el.style.display = el.__vOriginalDisplay;
- }
- }
- };
- var platformDirectives = {
- model: directive,
- show: show
- };
- // Provides transition support for a single element/component.
- var transitionProps = {
- name: String,
- appear: Boolean,
- css: Boolean,
- mode: String,
- type: String,
- enterClass: String,
- leaveClass: String,
- enterToClass: String,
- leaveToClass: String,
- enterActiveClass: String,
- leaveActiveClass: String,
- appearClass: String,
- appearActiveClass: String,
- appearToClass: String,
- duration: [Number, String, Object]
- };
- // in case the child is also an abstract component, e.g. <keep-alive>
- // we want to recursively retrieve the real component to be rendered
- function getRealChild(vnode) {
- var compOptions = vnode && vnode.componentOptions;
- if (compOptions && compOptions.Ctor.options.abstract) {
- return getRealChild(getFirstComponentChild(compOptions.children));
- }
- else {
- return vnode;
- }
- }
- function extractTransitionData(comp) {
- var data = {};
- var options = comp.$options;
- // props
- for (var key in options.propsData) {
- data[key] = comp[key];
- }
- // events.
- // extract listeners and pass them directly to the transition methods
- var listeners = options._parentListeners;
- for (var key in listeners) {
- data[camelize(key)] = listeners[key];
- }
- return data;
- }
- function placeholder(h, rawChild) {
- // @ts-expect-error
- if (/\d-keep-alive$/.test(rawChild.tag)) {
- return h('keep-alive', {
- props: rawChild.componentOptions.propsData
- });
- }
- }
- function hasParentTransition(vnode) {
- while ((vnode = vnode.parent)) {
- if (vnode.data.transition) {
- return true;
- }
- }
- }
- function isSameChild(child, oldChild) {
- return oldChild.key === child.key && oldChild.tag === child.tag;
- }
- var isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };
- var isVShowDirective = function (d) { return d.name === 'show'; };
- var Transition = {
- name: 'transition',
- props: transitionProps,
- abstract: true,
- render: function (h) {
- var _this = this;
- var children = this.$slots.default;
- if (!children) {
- return;
- }
- // filter out text nodes (possible whitespaces)
- children = children.filter(isNotTextNode);
- /* istanbul ignore if */
- if (!children.length) {
- return;
- }
- // warn multiple elements
- if (false) {}
- var mode = this.mode;
- // warn invalid mode
- if (false) {}
- var rawChild = children[0];
- // if this is a component root node and the component's
- // parent container node also has transition, skip.
- if (hasParentTransition(this.$vnode)) {
- return rawChild;
- }
- // apply transition data to child
- // use getRealChild() to ignore abstract components e.g. keep-alive
- var child = getRealChild(rawChild);
- /* istanbul ignore if */
- if (!child) {
- return rawChild;
- }
- if (this._leaving) {
- return placeholder(h, rawChild);
- }
- // ensure a key that is unique to the vnode type and to this transition
- // component instance. This key will be used to remove pending leaving nodes
- // during entering.
- var id = "__transition-".concat(this._uid, "-");
- child.key =
- child.key == null
- ? child.isComment
- ? id + 'comment'
- : id + child.tag
- : isPrimitive(child.key)
- ? String(child.key).indexOf(id) === 0
- ? child.key
- : id + child.key
- : child.key;
- var data = ((child.data || (child.data = {})).transition =
- extractTransitionData(this));
- var oldRawChild = this._vnode;
- var oldChild = getRealChild(oldRawChild);
- // mark v-show
- // so that the transition module can hand over the control to the directive
- if (child.data.directives && child.data.directives.some(isVShowDirective)) {
- child.data.show = true;
- }
- if (oldChild &&
- oldChild.data &&
- !isSameChild(child, oldChild) &&
- !isAsyncPlaceholder(oldChild) &&
- // #6687 component root is a comment node
- !(oldChild.componentInstance &&
- oldChild.componentInstance._vnode.isComment)) {
- // replace old child transition data with fresh one
- // important for dynamic transitions!
- var oldData = (oldChild.data.transition = extend({}, data));
- // handle transition mode
- if (mode === 'out-in') {
- // return placeholder node and queue update when leave finishes
- this._leaving = true;
- mergeVNodeHook(oldData, 'afterLeave', function () {
- _this._leaving = false;
- _this.$forceUpdate();
- });
- return placeholder(h, rawChild);
- }
- else if (mode === 'in-out') {
- if (isAsyncPlaceholder(child)) {
- return oldRawChild;
- }
- var delayedLeave_1;
- var performLeave = function () {
- delayedLeave_1();
- };
- mergeVNodeHook(data, 'afterEnter', performLeave);
- mergeVNodeHook(data, 'enterCancelled', performLeave);
- mergeVNodeHook(oldData, 'delayLeave', function (leave) {
- delayedLeave_1 = leave;
- });
- }
- }
- return rawChild;
- }
- };
- // Provides transition support for list items.
- var props = extend({
- tag: String,
- moveClass: String
- }, transitionProps);
- delete props.mode;
- var TransitionGroup = {
- props: props,
- beforeMount: function () {
- var _this = this;
- var update = this._update;
- this._update = function (vnode, hydrating) {
- var restoreActiveInstance = setActiveInstance(_this);
- // force removing pass
- _this.__patch__(_this._vnode, _this.kept, false, // hydrating
- true // removeOnly (!important, avoids unnecessary moves)
- );
- _this._vnode = _this.kept;
- restoreActiveInstance();
- update.call(_this, vnode, hydrating);
- };
- },
- render: function (h) {
- var tag = this.tag || this.$vnode.data.tag || 'span';
- var map = Object.create(null);
- var prevChildren = (this.prevChildren = this.children);
- var rawChildren = this.$slots.default || [];
- var children = (this.children = []);
- var transitionData = extractTransitionData(this);
- for (var i = 0; i < rawChildren.length; i++) {
- var c = rawChildren[i];
- if (c.tag) {
- if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {
- children.push(c);
- map[c.key] = c;
- (c.data || (c.data = {})).transition = transitionData;
- }
- else if (false) { var name_1, opts; }
- }
- }
- if (prevChildren) {
- var kept = [];
- var removed = [];
- for (var i = 0; i < prevChildren.length; i++) {
- var c = prevChildren[i];
- c.data.transition = transitionData;
- // @ts-expect-error .getBoundingClientRect is not typed in Node
- c.data.pos = c.elm.getBoundingClientRect();
- if (map[c.key]) {
- kept.push(c);
- }
- else {
- removed.push(c);
- }
- }
- this.kept = h(tag, null, kept);
- this.removed = removed;
- }
- return h(tag, null, children);
- },
- updated: function () {
- var children = this.prevChildren;
- var moveClass = this.moveClass || (this.name || 'v') + '-move';
- if (!children.length || !this.hasMove(children[0].elm, moveClass)) {
- return;
- }
- // we divide the work into three loops to avoid mixing DOM reads and writes
- // in each iteration - which helps prevent layout thrashing.
- children.forEach(callPendingCbs);
- children.forEach(recordPosition);
- children.forEach(applyTranslation);
- // force reflow to put everything in position
- // assign to this to avoid being removed in tree-shaking
- // $flow-disable-line
- this._reflow = document.body.offsetHeight;
- children.forEach(function (c) {
- if (c.data.moved) {
- var el_1 = c.elm;
- var s = el_1.style;
- addTransitionClass(el_1, moveClass);
- s.transform = s.WebkitTransform = s.transitionDuration = '';
- el_1.addEventListener(transitionEndEvent, (el_1._moveCb = function cb(e) {
- if (e && e.target !== el_1) {
- return;
- }
- if (!e || /transform$/.test(e.propertyName)) {
- el_1.removeEventListener(transitionEndEvent, cb);
- el_1._moveCb = null;
- removeTransitionClass(el_1, moveClass);
- }
- }));
- }
- });
- },
- methods: {
- hasMove: function (el, moveClass) {
- /* istanbul ignore if */
- if (!hasTransition) {
- return false;
- }
- /* istanbul ignore if */
- if (this._hasMove) {
- return this._hasMove;
- }
- // Detect whether an element with the move class applied has
- // CSS transitions. Since the element may be inside an entering
- // transition at this very moment, we make a clone of it and remove
- // all other transition classes applied to ensure only the move class
- // is applied.
- var clone = el.cloneNode();
- if (el._transitionClasses) {
- el._transitionClasses.forEach(function (cls) {
- removeClass(clone, cls);
- });
- }
- addClass(clone, moveClass);
- clone.style.display = 'none';
- this.$el.appendChild(clone);
- var info = getTransitionInfo(clone);
- this.$el.removeChild(clone);
- return (this._hasMove = info.hasTransform);
- }
- }
- };
- function callPendingCbs(c) {
- /* istanbul ignore if */
- if (c.elm._moveCb) {
- c.elm._moveCb();
- }
- /* istanbul ignore if */
- if (c.elm._enterCb) {
- c.elm._enterCb();
- }
- }
- function recordPosition(c) {
- c.data.newPos = c.elm.getBoundingClientRect();
- }
- function applyTranslation(c) {
- var oldPos = c.data.pos;
- var newPos = c.data.newPos;
- var dx = oldPos.left - newPos.left;
- var dy = oldPos.top - newPos.top;
- if (dx || dy) {
- c.data.moved = true;
- var s = c.elm.style;
- s.transform = s.WebkitTransform = "translate(".concat(dx, "px,").concat(dy, "px)");
- s.transitionDuration = '0s';
- }
- }
- var platformComponents = {
- Transition: Transition,
- TransitionGroup: TransitionGroup
- };
- // install platform specific utils
- Vue.config.mustUseProp = mustUseProp;
- Vue.config.isReservedTag = isReservedTag;
- Vue.config.isReservedAttr = isReservedAttr;
- Vue.config.getTagNamespace = getTagNamespace;
- Vue.config.isUnknownElement = isUnknownElement;
- // install platform runtime directives & components
- extend(Vue.options.directives, platformDirectives);
- extend(Vue.options.components, platformComponents);
- // install platform patch function
- Vue.prototype.__patch__ = inBrowser ? patch : noop;
- // public mount method
- Vue.prototype.$mount = function (el, hydrating) {
- el = el && inBrowser ? query(el) : undefined;
- return mountComponent(this, el, hydrating);
- };
- // devtools global hook
- /* istanbul ignore next */
- if (inBrowser) {
- setTimeout(function () {
- if (config.devtools) {
- if (devtools) {
- devtools.emit('init', Vue);
- }
- else if (false) {}
- }
- if (false) {}
- }, 0);
- }
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(9), __webpack_require__(35).setImmediate))
- /***/ }),
- /***/ 6:
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return clone; });
- // Clone deep utility for cloning initial state of the store
- // REFERENCE: https://github.com/pvorb/clone
- var NativeMap
- try {
- NativeMap = Map
- } catch (_) {
- // maybe a reference error because no `Map`. Give it a dummy value that no
- // value will ever be an instanceof.
- NativeMap = function () {}
- }
- var NativeSet
- try {
- NativeSet = Set
- } catch (_) {
- NativeSet = function () {}
- }
- var NativePromise
- try {
- NativePromise = Promise
- } catch (_) {
- NativePromise = function () {}
- }
- function clone (parent, ref) {
- if ( ref === void 0 ) ref = {};
- var circular = ref.circular; if ( circular === void 0 ) circular = true;
- var depth = ref.depth; if ( depth === void 0 ) depth = Infinity;
- var prototype = ref.prototype;
- var includeNonEnumerable = ref.includeNonEnumerable;
- // maintain two arrays for circular references, where corresponding parents
- // and children have the same index
- var allParents = []
- var allChildren = []
- var useBuffer = typeof Buffer !== 'undefined' && typeof Buffer.isBuffer === 'function'
- var isBuffer = typeof window !== 'undefined' ? browserIsBuffer : Buffer.isBuffer
- // recurse this function so we don't reset allParents and allChildren
- function _clone (parent, depth) {
- // cloning null always returns null
- if (parent === null) { return null }
- if (depth === 0) { return parent }
- var child
- var proto
- if (typeof parent !== 'object') {
- return parent
- }
- if (_instanceof(parent, NativeMap)) {
- child = new NativeMap()
- } else if (_instanceof(parent, NativeSet)) {
- child = new NativeSet()
- } else if (_instanceof(parent, NativePromise)) {
- child = new NativePromise(function (resolve, reject) {
- parent.then(function (value) {
- resolve(_clone(value, depth - 1))
- }, function (err) {
- reject(_clone(err, depth - 1))
- })
- })
- } else if (clone.__isArray(parent)) {
- child = []
- } else if (clone.__isRegExp(parent)) {
- child = new RegExp(parent.source, __getRegExpFlags(parent))
- if (parent.lastIndex) { child.lastIndex = parent.lastIndex }
- } else if (clone.__isDate(parent)) {
- child = new Date(parent.getTime())
- } else if (useBuffer && isBuffer(parent)) {
- if (Buffer.from) {
- // Node.js >= 5.10.0
- child = Buffer.from(parent)
- } else {
- // Older Node.js versions
- // eslint-disable-next-line node/no-deprecated-api
- child = new Buffer(parent.length)
- parent.copy(child)
- }
- return child
- } else if (_instanceof(parent, Error)) {
- child = Object.create(parent)
- } else {
- if (typeof prototype === 'undefined') {
- proto = Object.getPrototypeOf(parent)
- child = Object.create(proto)
- } else {
- child = Object.create(prototype)
- proto = prototype
- }
- }
- if (circular) {
- var index = allParents.indexOf(parent)
- if (index !== -1) {
- return allChildren[index]
- }
- allParents.push(parent)
- allChildren.push(child)
- }
- if (_instanceof(parent, NativeMap)) {
- parent.forEach(function (value, key) {
- var keyChild = _clone(key, depth - 1)
- var valueChild = _clone(value, depth - 1)
- child.set(keyChild, valueChild)
- })
- }
- if (_instanceof(parent, NativeSet)) {
- parent.forEach(function (value) {
- var entryChild = _clone(value, depth - 1)
- child.add(entryChild)
- })
- }
- for (var i in parent) {
- var attrs = Object.getOwnPropertyDescriptor(parent, i)
- if (attrs) {
- if (attrs.hasOwnProperty('get') && attrs.get.name === 'computedGetter') {
- Object.defineProperty(child, i, attrs)
- continue
- }
- child[i] = _clone(parent[i], depth - 1)
- }
- }
- if (Object.getOwnPropertySymbols) {
- var symbols = Object.getOwnPropertySymbols(parent)
- for (var i$1 = 0; i$1 < symbols.length; i$1++) {
- // Don't need to worry about cloning a symbol because it is a primitive,
- // like a number or string.
- var symbol = symbols[i$1]
- var descriptor = Object.getOwnPropertyDescriptor(parent, symbol)
- if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {
- continue
- }
- child[symbol] = _clone(parent[symbol], depth - 1)
- Object.defineProperty(child, symbol, descriptor)
- }
- }
- if (includeNonEnumerable) {
- var allPropertyNames = Object.getOwnPropertyNames(parent)
- for (var i$2 = 0; i$2 < allPropertyNames.length; i$2++) {
- var propertyName = allPropertyNames[i$2]
- var descriptor$1 = Object.getOwnPropertyDescriptor(parent, propertyName)
- if (descriptor$1 && descriptor$1.enumerable) {
- continue
- }
- child[propertyName] = _clone(parent[propertyName], depth - 1)
- Object.defineProperty(child, propertyName, descriptor$1)
- }
- }
- return child
- }
- return _clone(parent, depth)
- }
- // private utility functions
- function __objToStr (o) {
- return Object.prototype.toString.call(o)
- }
- clone.__objToStr = __objToStr
- function __isDate (o) {
- return typeof o === 'object' && __objToStr(o) === '[object Date]'
- }
- clone.__isDate = __isDate
- function __isArray (o) {
- return typeof o === 'object' && __objToStr(o) === '[object Array]'
- }
- clone.__isArray = __isArray
- function __isRegExp (o) {
- return typeof o === 'object' && __objToStr(o) === '[object RegExp]'
- }
- clone.__isRegExp = __isRegExp
- function __getRegExpFlags (re) {
- var flags = ''
- if (re.global) { flags += 'g' }
- if (re.ignoreCase) { flags += 'i' }
- if (re.multiline) { flags += 'm' }
- return flags
- }
- clone.__getRegExpFlags = __getRegExpFlags
- function _instanceof (obj, type) {
- return type != null && obj instanceof type
- }
- function browserIsBuffer (b) {
- return !!(b != null && '_isBuffer' in b && b._isBuffer)
- }
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(17).Buffer))
- /***/ }),
- /***/ 9:
- /***/ (function(module, exports) {
- var g;
- // This works in non-strict mode
- g = (function() {
- return this;
- })();
- try {
- // This works if eval is allowed (see CSP)
- g = g || new Function("return this")();
- } catch (e) {
- // This works if the window reference is available
- if (typeof window === "object") g = window;
- }
- // g can still be undefined, but nothing to do about it...
- // We return undefined, instead of nothing here, so it's
- // easier to handle this case. if(!global) { ...}
- module.exports = g;
- /***/ })
- /******/ });
|