bookmark/dist/js/app.f0eeb5ad.js.map
CN32479-詹红柱 04ff9fcc0c update:更新
2021-08-15 00:24:13 +08:00

1 line
96 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/svg/search.svg","webpack:///./src/assets/svg/translate.svg","webpack:///./src/App.vue?c163","webpack:///./src/components/Dialog.vue?700d","webpack:///./src/App.vue","webpack:///./src/assets/Json/印象笔记.js","webpack:///./src/components/Dialog.vue","webpack:///./src/components/Dialog.vue?6d5b","webpack:///./src/App.vue?97f5","webpack:///./src/main.js","webpack:///./src/assets/svg/github.svg","webpack:///./src/assets/svg/logo.svg","webpack:///./src/assets/svg/add.svg","webpack:///./src/assets/svg/gitee.svg","webpack:///./src/assets/svg/blog.svg","webpack:///./src/assets/svg/file.svg"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","class","id","href","target","src","title","width","height","viewBox","data-v-8739e5ce","fill","fill-rule","transform","x","y","stroke","stroke-width","rx","type","placeholder","searchVal","add","item","index","activeIndex","selectType","bookMark","tag","css","beforeEnter","enter","leave","card","idx","navigate","logo","deleteClick","desc","isDetailVisible","closeViews","detail","search","myData","children","url","contribute","is_docschina","repository","_id","_updateTime","team","homeBackup","imgStyle","objectFit","_createTime","custom-class","visible","footer","submitForm","status-icon","ref","rules","model","ruleForm","label-width","size","gutter","span","label","prop","style","BOOKMARK","clearable","events","props","Boolean","default","Number","setup","context","isBOOKMARK","JSON","parse","localStorage","getItem","map","v","form","required","message","trigger","refruleForm","validate","valid","myDetail","formData","flag","sIndex","findIndex","success","pindex","console","log","setItem","stringify","emit","resetFields","deep","methods","el","opacity","done","gsap","to","delay","dataset","onComplete","render","__scopeId","rowData","getData","fn","components","Dialog","flatten","arr","Array","isArray","allData","filter","toLowerCase","indexOf","open","row","temp","assign","delDetail","cindex","app","createApp","App","use","ElementPlus","mount"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAG/Be,GAAqBA,EAAoBhB,GAE5C,MAAMO,EAASC,OACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAKnBhB,EAAkB,CACrB,IAAO,GAGJK,EAAkB,GAGtB,SAASS,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAU6B,QAGnC,IAAIC,EAASF,EAAiB5B,GAAY,CACzCK,EAAGL,EACH+B,GAAG,EACHF,QAAS,IAUV,OANAf,EAAQd,GAAUW,KAAKmB,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG/DI,EAAOC,GAAI,EAGJD,EAAOD,QAKfH,EAAoBM,EAAIlB,EAGxBY,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,SAASL,EAASM,EAAMC,GAC3CV,EAAoBW,EAAER,EAASM,IAClC3B,OAAO8B,eAAeT,EAASM,EAAM,CAAEI,YAAY,EAAMC,IAAKJ,KAKhEV,EAAoBe,EAAI,SAASZ,GACX,qBAAXa,QAA0BA,OAAOC,aAC1CnC,OAAO8B,eAAeT,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DpC,OAAO8B,eAAeT,EAAS,aAAc,CAAEe,OAAO,KAQvDlB,EAAoBmB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQlB,EAAoBkB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKxC,OAAOyC,OAAO,MAGvB,GAFAvB,EAAoBe,EAAEO,GACtBxC,OAAO8B,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOlB,EAAoBQ,EAAEc,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRtB,EAAoB0B,EAAI,SAAStB,GAChC,IAAIM,EAASN,GAAUA,EAAOiB,WAC7B,WAAwB,OAAOjB,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAJ,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASgB,EAAQC,GAAY,OAAO9C,OAAOC,UAAUC,eAAeC,KAAK0C,EAAQC,IAGzG5B,EAAoB6B,EAAI,GAExB,IAAIC,EAAaC,OAAO,gBAAkBA,OAAO,iBAAmB,GAChEC,EAAmBF,EAAW3C,KAAKsC,KAAKK,GAC5CA,EAAW3C,KAAOf,EAClB0D,EAAaA,EAAWG,QACxB,IAAI,IAAItD,EAAI,EAAGA,EAAImD,EAAWjD,OAAQF,IAAKP,EAAqB0D,EAAWnD,IAC3E,IAAIU,EAAsB2C,EAI1BzC,EAAgBJ,KAAK,CAAC,EAAE,kBAEjBM,K,gECvJTW,EAAOD,QAAU,IAA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B,8B,oCCA3C,W,oCCAA,W,8WCCE,eAAsB,OAAjB+B,MAAM,MAAI,S,GACVC,GAAG,O,GACDD,MAAM,WAAWC,GAAG,Y,GAClBD,MAAM,Y,EACT,eAEM,OAFDA,MAAM,aAAW,CACpB,eAAqG,KAAlGE,KAAK,GAAGC,OAAO,U,CAAS,eAAkE,OAA7DC,IAAA,IAA4BC,MAAM,OAAOL,MAAM,c,eAAc,Y,MAGxFA,MAAM,c,EACT,eAAmC,OAA9BI,IAAA,KAA6B,S,EAIpC,eAAwH,KAArHC,MAAM,OAAOH,KAAK,0BAA0BC,OAAO,U,CAAS,eAAqD,OAAhDC,IAAA,IAA4BJ,MAAM,gB,KACtG,eAAiI,KAA9HK,MAAM,OAAOH,KAAK,8BAA8BC,OAAO,U,CAAS,eAA0D,OAArDC,IAAA,IAAiCJ,MAAM,gB,KAC/G,eAAgJ,KAA7IK,MAAM,OAAOH,KAAK,iDAAiDC,OAAO,U,CAAS,eAAsD,OAAjDC,IAAA,IAA6BJ,MAAM,gB,KAC9H,eAAsJ,KAAnJK,MAAM,WAAWH,KAAK,kDAAkDC,OAAO,U,CAAS,eAAuD,OAAlDC,IAAA,IAA8BJ,MAAM,gB,MAInIA,MAAM,S,GACJA,MAAM,Y,EAEP,eAAmC,OAA9BI,IAAA,KAA2B,S,GAC3BJ,MAAM,e,GAGVA,MAAM,a,GAGAA,MAAM,Y,GACNA,MAAM,Y,GACHA,MAAM,kB,GAKNA,MAAM,S,GACNA,MAAM,Y,SAKWA,MAAM,oB,EACjC,eAUM,YATJ,eAQM,OARDM,MAAM,KAAKC,OAAO,KAAKC,QAAQ,YAAYR,MAAM,kBAAkBS,kBAAgB,I,CACtF,eAMI,KANDC,KAAK,OAAOC,YAAU,UAAUC,UAAU,iBAAiBH,kBAAgB,I,CAC5E,eAGI,KAHDC,KAAK,UAAUD,kBAAgB,I,CAChC,eACO,QADDnC,EAAE,qJAAqJmC,kBAAgB,OAG/K,eAAoH,QAA9GH,MAAM,KAAKC,OAAO,KAAKM,EAAE,QAAQC,EAAE,QAAQC,OAAO,UAAUC,eAAa,IAAIC,GAAG,IAAIR,kBAAgB,SAExG,eAAuD,QAAjDT,MAAM,aAAaS,kBAAgB,IAAG,U,sIArD9D,EACA,eA0DM,MA1DN,EA0DM,CAzDJ,eAwDM,MAxDN,EAwDM,CAvDJ,eAeM,MAfN,EAeM,CAdJ,EAGA,eAUM,YATJ,eAGM,MAHN,EAGM,CAFJ,E,gBACA,eAA+D,SAAxDS,KAAK,OAAOC,YAAY,U,qDAAmB,EAAAC,UAAS,K,mBAAT,EAAAA,eAEpD,eAA2E,OAAtEhB,IAAA,IAA2BJ,MAAM,YAAa,QAAK,+BAAE,EAAAqB,IAAG,cAC7D,EACA,EACA,EACA,MAIJ,eAqCM,MArCN,EAqCM,CApCJ,eAKM,MALN,EAKM,E,mBAJJ,eAGM,2BAHqF,EAAAlF,MAAI,SAAnBmF,EAAKC,G,wBAAjF,eAGM,OAHDvB,MAAK,CAAC,QAAgB,EAAAwB,cAAcD,EAAK,qBAAoDjC,IAAKiC,EAAQ,QAAK,mBAAE,EAAAE,WAAWH,EAAKC,K,CACpI,EACA,eAA8C,MAA9C,EAA8C,eAAlBD,EAAKJ,MAAI,I,2BAGzC,eA6BM,MA7BN,EA6BM,CA5BoB,EAAAQ,SAAS/E,Q,iBAAjC,eAamB,Q,MAbsB4B,KAAK,iBAAiByB,MAAM,SAAS2B,IAAI,KAAMC,KAAK,EAAQ,cAAc,EAAAC,YAAc,QAAO,EAAAC,MAAQ,QAAO,EAAAC,O,YAC3G,iBAA8B,E,mBAAxE,eAWM,2BAXyD,EAAAL,UAAQ,SAArBM,EAAKC,G,wBAAvD,eAWM,OAXDjC,MAAM,+BAA+DV,IAAK2C,EAAM,QAAK,mBAAE,EAAAC,SAASF,K,CACnG,eAAuF,MAAvF,EAAuF,CAAjE,eAA2D,OAArD5B,IAAK4B,EAAKG,KAAKH,EAAKG,KAAI,0B,kBACpD,eAQM,MARN,EAQM,CAPJ,eAGO,OAHP,EAGO,CAFL,eAA6D,KAA1DnC,MAAM,eAAgB,QAAK,oCAAO,EAAAqB,IAAIW,EAAI,uB,oBAC7C,eAA8D,KAA3DhC,MAAM,iBAAkB,QAAK,oCAAO,EAAAoC,YAAYJ,KAAI,W,sBAGzD,eAA+D,OAA/D,EAA+D,eAAzCA,EAAK3B,OAAK,uBAChC,eAA4E,OAA5E,EAA4E,eAAnD2B,EAAKK,MAAI,qC,iGAK5B,EAAAX,SAAS/E,O,wCAArB,eAYM,MAZN,EAYM,CAXJ,aAgBV,eAA0I,GAAlIqD,MAAM,Y,WAAqB,EAAAsC,gB,qDAAA,EAAAA,gBAAe,IAAG,aAAY,EAAAC,WAAaC,OAAQ,EAAAA,OAASf,WAAY,EAAAD,YAAc,QAAO,EAAAiB,Q,wKC7DrHC,EAAS,CAAC,CACrBxB,KAAM,UACNyB,SAAU,CAAC,CACTN,KAAM,6BACNO,IAAK,+CACLT,KAAM,GACN9B,MAAO,OAET,CACEwC,WAAY,uCACZR,KAAM,qBACNO,IAAK,iCACLE,cAAc,EACdX,KAAM,+CACN9B,MAAO,cAET,CACEwC,WAAY,kDACZR,KAAM,wDACNO,IAAK,qCACLE,cAAc,EACdzC,MAAO,mBACP0C,WAAY,8CAEd,CACEF,WAAY,wCACZD,IAAK,qCACLE,cAAc,EACdzC,MAAO,wBACP0C,WAAY,yCAEd,CACEH,IAAK,8CACLvC,MAAO,iBAET,CACEwC,WAAY,4CACZR,KAAM,iBACNO,IAAK,qBACLT,KAAM,kDACN9B,MAAO,WAET,CACEwC,WAAY,6EACZR,KAAM,0CACNO,IAAK,+CACLT,KAAM,kDACN9B,MAAO,WAET,CACEwC,WAAY,sDACZR,KAAM,wCACNO,IAAK,0BACLT,KAAM,sDACN9B,MAAO,eAET,CACEgC,KAAM,sBACNO,IAAK,mCACLT,KAAM,4DACN9B,MAAO,SAETA,MAAO,YAET,CACE2C,IAAK,mCACLC,YAAa,cACb/B,KAAM,OACNyB,SAAU,CAAC,CACTN,KAAM,wBACNO,IAAK,kCACLT,KAAM,mDACN9B,MAAO,WACP0C,WAAY,wCACZG,KAAM,QAER,CACEb,KAAM,uCACNO,IAAK,qBACLT,KAAM,iDACN9B,MAAO,SACP0C,WAAY,qCACZG,KAAM,OAER,CACEb,KAAM,uCACNO,IAAK,qCACLT,KAAM,GACN9B,MAAO,SACP6C,KAAM,SAER7C,MAAO,SAET,CACE2C,IAAK,mCACL9B,KAAM,QACNyB,SAAU,CAAC,CACTE,WAAY,2CACZR,KAAM,oEACNO,IAAK,uBACLE,cAAc,EACdX,KAAM,+CACN9B,MAAO,QAET,CACEgC,KAAM,yBACNO,IAAK,qBACLT,KAAM,kDACN9B,MAAO,YAET,CACEgC,KAAM,0BACNO,IAAK,mBACLT,KAAM,8CACN9B,MAAO,UAETA,MAAO,cAET,CACE2C,IAAK,mCACLC,YAAa,cACb/B,KAAM,cACNyB,SAAU,CAAC,CACTN,KAAM,cACNO,IAAK,iCACLT,KAAM,+CACN9B,MAAO,OACP0C,WAAY,iCACZG,KAAM,MAER,CACEb,KAAM,qBACNO,IAAK,kCACLT,KAAM,+CACN9B,MAAO,UACP0C,WAAY,kCACZG,KAAM,MAER,CACEb,KAAM,qBACNO,IAAK,sCACLT,KAAM,+CACN9B,MAAO,cACP0C,WAAY,sCACZG,KAAM,MAER,CACEb,KAAM,wBACNO,IAAK,yCACLT,KAAM,+CACN9B,MAAO,sBACP0C,WAAY,yCACZG,KAAM,MAER,CACEb,KAAM,oBACNO,IAAK,2BACLT,KAAM,+CACN9B,MAAO,OACP0C,WAAY,2CACZG,KAAM,SAER7C,MAAO,cAET,CACE2C,IAAK,mCACLC,YAAa,cACb/B,KAAM,KACNyB,SAAU,CAAC,CACTE,WAAY,6CACZR,KAAM,qDACNO,IAAK,qCACLE,cAAc,EACdX,KAAM,6CACN9B,MAAO,eAET,CACEwC,WAAY,kCACZR,KAAM,0BACNO,IAAK,4BACLvC,MAAO,UAET,CACEwC,WAAY,mCACZR,KAAM,0BACNO,IAAK,6BACLvC,MAAO,aAET,CACEgC,KAAM,uBACNO,IAAK,+BACLT,KAAM,iDACN9B,MAAO,UAET,CACEgC,KAAM,iBACNO,IAAK,sBACLT,KAAM,iDACN9B,MAAO,cAET,CACEgC,KAAM,aACNO,IAAK,4BACLT,KAAM,iDACN9B,MAAO,UAET,CACEgC,KAAM,UACNO,IAAK,sBACLT,KAAM,gDACN9B,MAAO,UAETA,MAAO,SAET,CACE2C,IAAK,mCACLC,YAAa,cACb/B,KAAM,QACNyB,SAAU,CAAC,CACTE,WAAY,gDACZR,KAAM,+BACNO,IAAK,6BACLE,cAAc,EACdX,KAAM,gDACN9B,MAAO,oBAET,CACEwC,WAAY,0CACZR,KAAM,kCACNO,IAAK,wBACLE,cAAc,EACdX,KAAM,iDACN9B,MAAO,UAET,CACEwC,WAAY,+CACZR,KAAM,iBACNO,IAAK,sCACLE,cAAc,EACdX,KAAM,uDACN9B,MAAO,gBAET,CACEwC,WAAY,+BACZR,KAAM,oCACNO,IAAK,qBACLT,KAAM,GACN9B,MAAO,OAET,CACEgC,KAAM,wBACNO,IAAK,2CACLT,KAAM,kDACN9B,MAAO,gBACP0C,WAAY,yCACZG,KAAM,OAER,CACEb,KAAM,qDACNO,IAAK,kDACLT,KAAM,+CACN9B,MAAO,OACP0C,WAAY,iCACZG,KAAM,MAER,CACEb,KAAM,yGACNO,IAAK,wBACLT,KAAM,2MACN9B,MAAO,OACP0C,WAAY,iCACZG,KAAM,MAER,CACEb,KAAM,sBACNO,IAAK,0BACLT,KAAM,gDACN9B,MAAO,eACP0C,WAAY,oDAEd,CACEV,KAAM,0BACNO,IAAK,mDACLT,KAAM,4CACN9B,MAAO,mBACP0C,WAAY,wCAEd1C,MAAO,SAET,CACE2C,IAAK,mCACLC,YAAa,cACb/B,KAAM,SACNyB,SAAU,CAAC,CACTE,WAAY,iDACZR,KAAM,uBACNO,IAAK,8BACLE,cAAc,EACdX,KAAM,gDACN9B,MAAO,SAET,CACEwC,WAAY,wCACZR,KAAM,oBACNO,IAAK,iCACLT,KAAM,8CACN9B,MAAO,SAET,CACEwC,WAAY,oCACZR,KAAM,oBACNO,IAAK,2BACLT,KAAM,8CACN9B,MAAO,SAET,CACEwC,WAAY,2CACZR,KAAM,gCACNO,IAAK,6BACLT,KAAM,sDACN9B,MAAO,cAET,CACEwC,WAAY,qCACZR,KAAM,iCACNO,IAAK,sBACLT,KAAM,kDACN9B,MAAO,WAET,CACEwC,WAAY,qCACZR,KAAM,uCACNO,IAAK,sBACLT,KAAM,gDACN9B,MAAO,WAETA,MAAO,iBAET,CACE2C,IAAK,mCACL9B,KAAM,SACNyB,SAAU,CAAC,CACTN,KAAM,mCACNO,IAAK,yBACLT,KAAM,iDACN9B,MAAO,UAET,CACEwC,WAAY,yCACZR,KAAM,mCACNO,IAAK,mCACLE,cAAc,EACdX,KAAM,oDACN9B,MAAO,aAET,CACEgC,KAAM,6BACNO,IAAK,0BACLT,KAAM,qDACN9B,MAAO,eAET,CACEgC,KAAM,cACNO,IAAK,4CACLT,KAAM,8CACN9B,MAAO,aAETA,MAAO,aAET,CACE2C,IAAK,mCACLC,YAAa,cACb/B,KAAM,iBACNyB,SAAU,CAAC,CACTE,WAAY,0CACZR,KAAM,4BACNO,IAAK,oBACLE,cAAc,EACdX,KAAM,+CACN9B,MAAO,WAET,CACEwC,WAAY,sBACZR,KAAM,sCACNO,IAAK,6BACLT,KAAM,6BACN9B,MAAO,QAET,CACEwC,WAAY,6CACZR,KAAM,gBACNO,IAAK,+BACLE,cAAc,EACdX,KAAM,8CACN9B,MAAO,OAET,CACEgC,KAAM,+BACNO,IAAK,qBACLT,KAAM,8CACN9B,MAAO,MACP0C,WAAY,+BACZG,KAAM,QAER,CACEb,KAAM,eACNO,IAAK,8BACLT,KAAM,kDACN9B,MAAO,UACP0C,WAAY,wCAEd,CACEV,KAAM,0CACNO,IAAK,sBACLT,KAAM,+CACN9B,MAAO,OACP0C,WAAY,kCAEd,CACEV,KAAM,oCACNO,IAAK,uBACLT,KAAM,gDACN9B,MAAO,UACP0C,WAAY,qCACZG,KAAM,OAER,CACEb,KAAM,2DACNO,IAAK,0BACLT,KAAM,8CACN9B,MAAO,OAET,CACEgC,KAAM,qBACNO,IAAK,0BACLT,KAAM,qCACN9B,MAAO,QAET,CACEgC,KAAM,gBACNO,IAAK,+BACLT,KAAM,+CACN9B,MAAO,SAETA,MAAO,QAET,CACE2C,IAAK,mCACLC,YAAa,cACb/B,KAAM,OACNyB,SAAU,CAAC,CACTE,WAAY,4DACZR,KAAM,kEACNO,IAAK,8BACLE,cAAc,EACdX,KAAM,uGACN9B,MAAO,oBAET,CACEwC,WAAY,kDACZR,KAAM,8BACNO,IAAK,kDACLE,cAAc,EACdX,KAAM,GACN9B,MAAO,eAET,CACEgC,KAAM,6CACNO,IAAK,0BACLT,KAAM,qDACN9B,MAAO,kBACP0C,WAAY,kDAEd,CACEV,KAAM,iDACNO,IAAK,mCACLT,KAAM,GACN9B,MAAO,0BAET,CACEwC,WAAY,kDACZR,KAAM,8BACNO,IAAK,kDACLE,cAAc,EACdX,KAAM,GACN9B,MAAO,eAET,CACEgC,KAAM,mBACNO,IAAK,kCACLT,KAAM,4DACN9B,MAAO,cAETA,MAAO,YAET,CACE2C,IAAK,mCACLC,YAAa,cACb/B,KAAM,UACNyB,SAAU,CAAC,CACTN,KAAM,cACNO,IAAK,8BACLT,KAAM,kDACN9B,MAAO,aACP0C,WAAY,qCACZG,KAAM,OAER,CACEb,KAAM,wBACNO,IAAK,iCACLT,KAAM,kDACN9B,MAAO,UACP0C,WAAY,wCAEd,CACEV,KAAM,cACNO,IAAK,2BACLT,KAAM,gDACN9B,MAAO,UACP0C,WAAY,iCACZG,KAAM,eAER,CACEb,KAAM,eACNO,IAAK,8BACLT,KAAM,8CACN9B,MAAO,mBACP0C,WAAY,+BAEd,CACEV,KAAM,uBACNO,IAAK,yBACLT,KAAM,uKACN9B,MAAO,QACP0C,WAAY,kCAEd,CACEV,KAAM,gCACNO,IAAK,+BACLT,KAAM,8CACN9B,MAAO,MACP0C,WAAY,+BACZG,KAAM,MAER,CACEb,KAAM,4DACNO,IAAK,mCACLT,KAAM,GACN9B,MAAO,aACP0C,WAAY,uCAEd,CACEF,WAAY,oCACZR,KAAM,qBACNO,IAAK,iCACLT,KAAM,mDACN9B,MAAO,YAET,CACEgC,KAAM,gCACNO,IAAK,+BACLT,KAAM,GACN9B,MAAO,aACP0C,WAAY,uCAEd,CACEV,KAAM,sCACNO,IAAK,2DACLT,KAAM,GACN9B,MAAO,SACP0C,WAAY,mCAEd,CACEV,KAAM,sCACNO,IAAK,4BACLT,KAAM,8CACN9B,MAAO,UACP0C,WAAY,oCAEd,CACEV,KAAM,yBACNO,IAAK,4BACLT,KAAM,GACN9B,MAAO,UACP0C,WAAY,yCAEd,CACEV,KAAM,sCACNO,IAAK,yBACLT,KAAM,4CACN9B,MAAO,UACP0C,WAAY,oCAEd1C,MAAO,UAET,CACE2C,IAAK,mCACL9B,KAAM,OACNyB,SAAU,CAAC,CACTN,KAAM,uCACNO,IAAK,uCACLT,KAAM,GACN9B,MAAO,iBACP0C,WAAY,2CAEd,CACEV,KAAM,kCACNO,IAAK,8BACLT,KAAM,+CACN9B,MAAO,OACP0C,WAAY,oCAEd,CACEV,KAAM,WACNO,IAAK,+BACLT,KAAM,8CACN9B,MAAO,OAET,CACEgC,KAAM,uCACNO,IAAK,gDACLT,KAAM,gDACN9B,MAAO,QACP0C,WAAY,yCAEd,CACEV,KAAM,0GACNO,IAAK,uBACLT,KAAM,gDACN9B,MAAO,QACP0C,WAAY,oCAEd,CACEV,KAAM,8CACNO,IAAK,6BACLT,KAAM,kDACN9B,MAAO,UACP0C,WAAY,sCAEd,CACEV,KAAM,0DACNO,IAAK,oBACLT,KAAM,oDACN9B,MAAO,YACP0C,WAAY,6CAEd,CACEV,KAAM,mDACNO,IAAK,sBACLT,KAAM,gDACN9B,MAAO,WACP0C,WAAY,oCAEd,CACEV,KAAM,iEACNO,IAAK,qBACLT,KAAM,+CACN9B,MAAO,OACP0C,WAAY,kCAEd,CACEV,KAAM,oBACNO,IAAK,qCACLT,KAAM,GACN9B,MAAO,UAET,CACEgC,KAAM,4CACNO,IAAK,8BACLT,KAAM,GACN9B,MAAO,YACP0C,WAAY,yCAEd,CACEV,KAAM,oBACNO,IAAK,qBACLT,KAAM,GACN9B,MAAO,UACP0C,WAAY,oCAEd1C,MAAO,QAET,CACE2C,IAAK,mCACLC,YAAa,cACb/B,KAAM,OACNyB,SAAU,CAAC,CACTE,WAAY,8CACZR,KAAM,gCACNO,IAAK,iCACLE,cAAc,EACdX,KAAM,0DACN9B,MAAO,WAET,CACEwC,WAAY,0CACZR,KAAM,mCACNO,IAAK,+BACLO,WAAY,sBACZC,SAAU,CAAEC,UAAW,WACvBP,cAAc,EACdX,KAAM,gDACN9B,MAAO,SAET,CACEwC,WAAY,2CACZR,KAAM,UACNO,IAAK,kCACLO,WAAY,2BACZL,cAAc,EACdX,KAAM,iDACN9B,MAAO,UAET,CACEwC,WAAY,4CACZR,KAAM,uBACNO,IAAK,gCACLE,cAAc,EACdX,KAAM,iDACN9B,MAAO,UAET,CACEwC,WAAY,oCACZR,KAAM,eACNO,IAAK,yBACLT,KAAM,8BACN9B,MAAO,QAET,CACEgC,KAAM,gBACNO,IAAK,mDACLT,KAAM,qDACN9B,MAAO,aACP0C,WAAY,yCAEd,CACEV,KAAM,cACNO,IAAK,4BACLT,KAAM,+CACN9B,MAAO,QAET,CACEgC,KAAM,qBACNO,IAAK,+BACLT,KAAM,gDACN9B,MAAO,SAET,CACEgC,KAAM,6BACNO,IAAK,wBACLT,KAAM,gDACN9B,MAAO,QACP0C,WAAY,mCAEd1C,MAAO,SAET,CACE2C,IAAK,mCACL9B,KAAM,OACNyB,SAAU,CAAC,CACTN,KAAM,kBACNO,IAAK,iBACLT,KAAM,GACN9B,MAAO,OAET,CACEgC,KAAM,kBACNO,IAAK,qBACLT,KAAM,GACN9B,MAAO,OAET,CACEgC,KAAM,kBACNO,IAAK,4BACLT,KAAM,GACN9B,MAAO,kBAETA,MAAO,YAET,CACE2C,IAAK,mCACLC,YAAa,cACb/B,KAAM,OACNyB,SAAU,CAAC,CACTE,WAAY,yCACZR,KAAM,cACNO,IAAK,0BACLE,cAAc,EACdX,KAAM,+CACN9B,MAAO,QAET,CACEwC,WAAY,6CACZR,KAAM,mBACNO,IAAK,8BACLT,KAAM,gDACN9B,MAAO,eAET,CACEwC,WAAY,8CACZR,KAAM,8BACNO,IAAK,2BACLT,KAAM,gDACN9B,MAAO,SAET,CACEwC,WAAY,qCACZR,KAAM,uCACNO,IAAK,8BACLT,KAAM,kDACN9B,MAAO,WAET,CACEgC,KAAM,yBACNO,IAAK,6BACLT,KAAM,8CACN9B,MAAO,OACP0C,WAAY,kCAEd1C,MAAO,cAET,CACE2C,IAAK,mCACLC,YAAa,cACb/B,KAAM,OACNyB,SAAU,CAAC,CACTN,KAAM,6BACNO,IAAK,wCACLE,cAAc,EACdX,KAAM,yDACN9B,MAAO,uBAET,CACEgC,KAAM,wBACNO,IAAK,2CACLE,cAAc,EACdX,KAAM,yDACN9B,MAAO,kBAET,CACEgC,KAAM,gBACNO,IAAK,0BACLT,KAAM,GACN9B,MAAO,eAET,CACEgC,KAAM,qBACNO,IAAK,0BACLT,KAAM,4EACN9B,MAAO,cAET,CACEgC,KAAM,oBACNO,IAAK,0BACLT,KAAM,8CACN9B,MAAO,WACP0C,WAAY,4CAEd1C,MAAO,UAET,CACE2C,IAAK,mCACL9B,KAAM,QACNyB,SAAU,CAAC,CACTE,WAAY,mCACZR,KAAM,mDACNO,IAAK,uBACLT,KAAM,wFACN9B,MAAO,SAET,CACEwC,WAAY,iCACZR,KAAM,oCACNO,IAAK,uBACLT,KAAM,+CACN9B,MAAO,QAET,CACEwC,WAAY,8CACZR,KAAM,oCACNO,IAAK,mEACLT,KAAM,GACN9B,MAAO,SAET,CACEwC,WAAY,iCACZR,KAAM,iCACNO,IAAK,mBACLT,KAAM,yLACN9B,MAAO,YAET,CACEwC,WAAY,kCACZR,KAAM,yDACNO,IAAK,mEACLT,KAAM,8CACN9B,MAAO,QAET,CACEwC,WAAY,wCACZR,KAAM,sCACNO,IAAK,wCACLT,KAAM,kDACN9B,MAAO,WAET,CACEwC,WAAY,4CACZR,KAAM,mGACNO,IAAK,mBACLT,KAAM,gDACN9B,MAAO,SAET,CACEwC,WAAY,+BACZR,KAAM,qDACNO,IAAK,+BACLT,KAAM,oDACN9B,MAAO,OAET,CACEwC,WAAY,8BACZR,KAAM,yEACNO,IAAK,8BACLT,KAAM,mDACN9B,MAAO,OAET,CACEwC,WAAY,sCACZR,KAAM,+DACNO,IAAK,0BACLT,KAAM,yCACN9B,MAAO,UAET,CACEwC,WAAY,oCACZR,KAAM,yEACNO,IAAK,sBACLT,KAAM,iKACN9B,MAAO,aAET,CACEwC,WAAY,sCACZR,KAAM,mGACNO,IAAK,4BACLT,KAAM,uDACN9B,MAAO,YAETA,MAAO,gBAET,CACE2C,IAAK,mCACLC,YAAa,cACb/B,KAAM,UACNyB,SAAU,CAAC,CACTN,KAAM,kCACNO,IAAK,+BACLT,KAAM,kDACN9B,MAAO,mBACP0C,WAAY,yCAEd,CACEV,KAAM,0BACNO,IAAK,uCACLT,KAAM,kDACN9B,MAAO,kBACP0C,WAAY,6CACZG,KAAM,OAER,CACEb,KAAM,wBACNO,IAAK,8BACLT,KAAM,gDACN9B,MAAO,QACP0C,WAAY,wCAEd1C,MAAO,WAET,CACE2C,IAAK,mCACL9B,KAAM,MACNyB,SAAU,CAAC,CACTN,KAAM,wCACNO,IAAK,+BACLT,KAAM,+CACN9B,MAAO,QAET,CACEgC,KAAM,iCACNO,IAAK,qBACLT,KAAM,+CACN9B,MAAO,QAET,CACEgC,KAAM,mBACNO,IAAK,uCACLO,WAAY,0BACZhB,KAAM,iDACN9B,MAAO,UAET,CACEwC,WAAY,8DACZR,KAAM,oCACNO,IAAK,gCACLE,cAAc,EACdX,KAAM,kDACN9B,MAAO,YAETA,MAAO,OAET,CACE2C,IAAK,mCACL9B,KAAM,QACNyB,SAAU,CAAC,CACTE,WAAY,2CACZR,KAAM,kBACNO,IAAK,iCACLE,cAAc,EACdX,KAAM,kDACN9B,MAAO,UACP0C,WAAY,sCAEd,CACEV,KAAM,0BACNO,IAAK,4BACLT,KAAM,kDACN9B,MAAO,UACP0C,WAAY,oCACZG,KAAM,MAER,CACEb,KAAM,oBACNO,IAAK,uBACLT,KAAM,mDACN9B,MAAO,WACP0C,WAAY,uCACZG,KAAM,OAER,CACEb,KAAM,uBACNO,IAAK,2BACLT,KAAM,+CACN9B,MAAO,eACP0C,WAAY,oCACZG,KAAM,QAER,CACEb,KAAM,oCACNO,IAAK,2BACLT,KAAM,+CACN9B,MAAO,aACP0C,WAAY,gCACZG,KAAM,QAER,CACEb,KAAM,qBACNO,IAAK,kDACLT,KAAM,+CACN9B,MAAO,WACP0C,WAAY,gCACZG,KAAM,QAER,CACEb,KAAM,wCACNO,IAAK,kDACLT,KAAM,+CACN9B,MAAO,YACP0C,WAAY,gCACZG,KAAM,QAER,CACEb,KAAM,oCACNO,IAAK,uBACLT,KAAM,6CACN9B,MAAO,QACP0C,WAAY,qCAEd,CACEV,KAAM,2BACNO,IAAK,2BACLT,KAAM,8CACN9B,MAAO,WACP0C,WAAY,sCACZG,KAAM,QAER7C,MAAO,iBAET,CACEiD,YAAa,cACbN,IAAK,mCACLC,YAAa,cACb/B,KAAM,WACNyB,SAAU,CAAC,CACTN,KAAM,qBACNO,IAAK,qBACLT,KAAM,GACN9B,MAAO,QACP0C,WAAY,+BACZG,KAAM,QAER,CACEb,KAAM,gBACNO,IAAK,uBACLT,KAAM,GACN9B,MAAO,QACP0C,WAAY,oCAEd,CACEV,KAAM,sBACNO,IAAK,6BACLT,KAAM,GACN9B,MAAO,UACP0C,WAAY,mCACZG,KAAM,QAER,CACEb,KAAM,iBACNO,IAAK,uBACLT,KAAM,GACN9B,MAAO,OACP0C,WAAY,gCACZG,KAAM,QAER,CACEb,KAAM,iBACNO,IAAK,kCACLT,KAAM,GACN9B,MAAO,SACP0C,WAAY,sCACZG,KAAM,SAER7C,MAAO,OAET,CACEiD,YAAa,cACbN,IAAK,mCACLC,YAAa,cACb/B,KAAM,gBACNyB,SAAU,CAAC,CACTN,KAAM,yBACNO,IAAK,sBACLT,KAAM,oDACN9B,MAAO,aACP0C,WAAY,4CAEd,CACEV,KAAM,mBACNO,IAAK,0BACLT,KAAM,oDACN9B,MAAO,iBACP0C,WAAY,+CACZG,KAAM,QAER,CACEb,KAAM,8CACNO,IAAK,6BACLT,KAAM,oDACN9B,MAAO,oBACP0C,WAAY,mDAEd,CACEV,KAAM,sBACNO,IAAK,qBACLT,KAAM,oDACN9B,MAAO,iBACP0C,WAAY,kDAEd,CACEV,KAAM,mBACNO,IAAK,yBACLT,KAAM,iCACN9B,MAAO,qBACP0C,WAAY,sDAEd,CACEV,KAAM,0BACNO,IAAK,yBACLT,KAAM,mDACN9B,MAAO,WACP0C,WAAY,6CAEd,CACEV,KAAM,iCACNO,IAAK,+BACLT,KAAM,mDACN9B,MAAO,kBACP0C,WAAY,oDAEd,CACEV,KAAM,6BACNO,IAAK,uBACLT,KAAM,mDACN9B,MAAO,WACP0C,WAAY,uCAEd,CACEF,WAAY,uCACZR,KAAM,0DACNO,IAAK,yBACLT,KAAM,oDACN9B,MAAO,UAET,CACEwC,WAAY,qCACZR,KAAM,8BACNO,IAAK,+CACLT,KAAM,oDACN9B,MAAO,sB,0FCppCCL,MAAM,iB,iBACqB,O,kBACe,O,qVAnCpD,eAsCY,GAtCDuD,eAAa,YAAYlD,MAAM,OAAQmD,QAAS,EAAAlB,gBAAiBhC,MAAM,S,CAgCrEmD,OAAM,GACf,iBAGO,CAHP,eAGO,OAHP,EAGO,CAFL,eAA8C,GAAlC,QAAO,EAAAlB,YAAU,C,WAAE,iBAAG,C,0BAClC,eAA6D,GAAlDrB,KAAK,UAAW,QAAO,EAAAwC,Y,YAAY,iBAAG,C,4CAlCrD,iBA8BU,CA9BV,eA8BU,GA9BDC,cAAA,GAAYC,IAAI,cAAeC,MAAO,EAAAA,MAAQC,MAAO,EAAAC,SAAUC,cAAY,QAAQC,KAAK,S,YAC/F,iBA4BS,CA5BT,eA4BS,GA5BAC,OAAQ,IAAE,C,WACjB,iBAIS,CAJT,eAIS,GAJAC,KAAM,IAAE,C,WACf,iBAEe,CAFf,eAEe,GAFDC,MAAM,OAAOC,KAAK,S,YAC9B,iBAAoE,CAApE,eAAoE,G,WAAjD,EAAAN,SAAS1D,M,qDAAT,EAAA0D,SAAS1D,MAAK,IAAEc,YAAY,W,2CAGnD,eAMS,GANAgD,KAAM,IAAE,C,WACf,iBAIe,CAJf,eAIe,GAJDC,MAAM,OAAOC,KAAK,Q,YAC9B,iBAEY,CAFZ,eAEY,G,WAFQ,EAAAN,SAAS7C,K,qDAAT,EAAA6C,SAAS7C,KAAI,IAAEC,YAAY,UAAUmD,MAAA,gB,YAC5C,iBAAgC,E,mBAA3C,eAAmF,2BAAjD,EAAAC,UAAQ,SAAvBjD,EAAKC,G,wBAAxB,eAAmF,GAAtCvC,MAAOsC,EAAOhC,IAAKiC,G,0EAItE,eAIS,GAJA4C,KAAM,IAAE,C,WACf,iBAEe,CAFf,eAEe,GAFDC,MAAM,SAASC,KAAK,Q,YAChC,iBAAqE,CAArE,eAAqE,G,WAAlD,EAAAN,SAAS5B,K,qDAAT,EAAA4B,SAAS5B,KAAI,IAAEhB,YAAY,a,2CAGlD,eAIS,GAJAgD,KAAM,IAAE,C,WACf,iBAEe,CAFf,eAEe,GAFDC,MAAM,OAAOC,KAAK,O,YAC9B,iBAAoE,CAApE,eAAoE,G,WAAjD,EAAAN,SAASnB,I,qDAAT,EAAAmB,SAASnB,IAAG,IAAEzB,YAAY,a,2CAGjD,eAIS,GAJAgD,KAAM,IAAE,C,WACf,iBAEe,CAFf,eAEe,GAFDC,MAAM,OAAOC,KAAK,Q,YAC9B,iBAAoF,CAApF,eAAoF,GAA1EnD,KAAK,WAAWsD,UAAA,GAAUrD,YAAY,U,WAAmB,EAAA4C,SAAS1B,K,qDAAT,EAAA0B,SAAS1B,KAAI,K,8JAkB7E,IACbyB,MAAO,CACL9E,MAAO,kBACPyF,OAAQ,cAEVC,MAAO,CACLpC,gBAAiB,CACfpB,KAAMyD,QACNC,SAAS,GAEXnD,WAAY,CACVP,KAAM2D,OACND,QAAS,GAEXpC,OAAQ,CACNtB,KAAMtE,OACNgI,QAAS,eAGbE,MAnBa,SAmBPJ,EAAOK,GACX,IAAMC,EAAaC,KAAKC,MAAMC,aAAaC,QAAQ,aAC7Cb,EAAWS,EAAaA,EAAWK,KAAI,SAACC,GAAD,OAAOA,EAAEpE,QAAQ,GACxDqE,EAAO,eAAS,CACpBxB,SAAU,CACR1D,MAAO,GACPa,KAAM,GACNmB,KAAM,GACNO,IAAK,GACLT,KAAM,MAIJ0B,EAAQ,CACZxD,MAAO,CAAC,CAAEmF,UAAU,EAAMC,QAAS,UAAWC,QAAS,SACvDxE,KAAM,CAAC,CAAEsE,UAAU,EAAMC,QAAS,UAAWC,QAAS,YAElDC,EAAc,eAAI,MAElBjC,EAAa,WACjBiC,EAAY3G,MAAM4G,UAAS,SAACC,GAC1B,GAAIA,EAAO,CACT,IAAMnD,EAASsC,EAAWK,KAAI,SAACC,GAC7B,IAAMQ,EAAO,kBAASpB,EAAMlC,QACtBuD,EAAO,kBAASR,EAAKxB,UAC3B,GAA0B,WAAtBW,EAAMlC,OAAOwD,MAEf,GAAIF,EAAS5E,OAAS6E,EAAS7E,MAAQoE,EAAEpE,OAAS6E,EAAS7E,KAAM,CAC/D,IAAM+E,EAASX,EAAE3C,SAASuD,WACxB,SAAC5H,GAAD,OAAOA,EAAE+B,QAAUyF,EAASzF,SAE1B4F,GAAU,IACZX,EAAE3C,SAASsD,GAAUF,EACrB,QAAUI,QAAQ,cAEf,GAAIL,EAAS5E,OAAS6E,EAAS7E,KAAM,CAG1C,GAAI4E,EAAS5E,OAASoE,EAAEpE,KAAM,CAC5B,IAAMkF,EAASd,EAAE3C,SAASuD,WAAU,SAAAvG,GAAA,OAAKA,EAAEU,QAAUyF,EAASzF,SAC9DiF,EAAE3C,SAAS9E,OAAOuI,EAAQ,GAGxBL,EAAS7E,OAASoE,EAAEpE,OACtBoE,EAAE3C,SAAS1F,KAAK8I,GAChB,QAAUI,QAAQ,eAKtBE,QAAQC,IAAI,QACRhB,EAAEpE,OAAS6E,EAAS7E,OACtBoE,EAAE3C,SAAS1F,KAAK8I,GAChB,QAAUI,QAAQ,SAGtB,OAAOb,KAETH,aAAaoB,QAAQ,WAAYtB,KAAKuB,UAAU9D,IAChDqC,EAAQ0B,KAAK,SACblE,SAKN,SAASA,IACPoD,EAAY3G,MAAM0H,cAClB3B,EAAQ0B,KAAK,cAAc,GAc7B,OAXA,iBACE,kBAAM/B,EAAMlC,UACZ,SAAC8C,GACKA,GACF,gBAAS,WACPC,EAAKxB,SAAL,kBAAqBW,EAAMlC,aAIjC,CAAEmE,MAAM,IAEV,iCACK,eAAOpB,IADZ,IAEEhD,aACAmB,aACAiC,cACA9B,QACAU,cAGJqC,QAAS,CACP/E,YADO,SACKgF,GACVA,EAAGvC,MAAMwC,QAAU,EACnBD,EAAGvC,MAAM/D,OAAS,GAEpBuB,MALO,SAKD+E,EAAIE,GACRC,GAAA,KAAKC,GAAGJ,EAAI,CACVC,QAAS,EACTvG,OAAQ,QACR2G,MAA0B,IAAnBL,EAAGM,QAAQ5F,MAClB6F,WAAYL,KAGhBhF,MAbO,SAaD8E,EAAIE,GACRC,GAAA,KAAKC,GAAGJ,EAAI,CACVC,QAAS,EACTvG,OAAQ,EACR2G,MAA0B,IAAnBL,EAAGM,QAAQ5F,MAClB6F,WAAYL,O,UCxKpB,GAAOM,OAAS,GAChB,GAAOC,UAAY,kBAEJ,UH+DXC,GAAU,GACd,SAASC,KAAuB,IAAfC,EAAe,uDAAV,aAEhBtC,aAAaC,QAAQ,aACvBiB,QAAQC,IAAI,SACZiB,GAAUtC,KAAKC,MAAMC,aAAaC,QAAQ,eAE1CD,aAAaoB,QAAQ,WAAYtB,KAAKuB,UAAU,IAChDe,GAAU,GAEZE,IAEFD,KACe,QACbE,WAAY,CAAEC,WACdpJ,KAAM,mBACNuG,MAHa,WAKX,IAAM8C,EAAU,SAAVA,EAAWC,GAAqB,MAAhBrK,EAAgB,uDAAP,GAAO,iBACjBqK,GADiB,IACpC,2BAAwB,KAAbvG,EAAa,QACtBwG,MAAMC,QAAQzG,EAAKqB,UACfiF,EAAQtG,EAAKqB,SAAUnF,GACvBA,EAAOP,KAAKqE,IAJkB,8BAMpC,OAAO9D,GAGHrB,EAAO,eAAS,CACpBqF,YAAa,EACbrF,KAAMoL,GACN7F,SAAU6F,GAAQ,GAAG5E,SACrBvB,UAAW,GACX4G,QAASJ,EAAQL,IACjBjF,iBAAiB,EACjBE,OAAQ,KAIV,iBACE,kBAAMrG,EAAKiF,aACX,WACEjF,EAAKuF,SAAWvF,EAAK6L,QAAQC,QAC3B,SAAC3C,GAAD,OACEA,EAAEjF,MAAM6H,cAAcC,QAAQhM,EAAKiF,UAAU8G,gBAAkB,QAKvE,IAAMzG,EAAa,SAACH,EAAMC,GACxBpF,EAAKuF,SAAWJ,EAAKqB,SACrBxG,EAAKqF,YAAcD,GAGfW,EAAW,SAACoD,GAAD,OAAOzF,OAAOuI,KAAK9C,EAAE1C,IAAK,YAG3C,SAASvB,IAA4B,IAAxBgH,EAAwB,uDAAlB,GAAIrC,EAAc,uDAAP,MACtBsC,EAAG,kBAAQD,GAEflM,EAAKqG,OADM,WAATwD,EACYpJ,OAAO2L,OAAOD,EAAM,CAAEpH,KAAMqG,GAAQpL,EAAKqF,aAAaN,KAAM8E,KAAM,WAElEpJ,OAAO2L,OAAO,GAAI,CAAErH,KAAMqG,GAAQpL,EAAKqF,aAAaN,KAAM8E,KAAM,QAEhF7J,EAAKmG,iBAAkB,EAGzB,IAAMC,EAAa,SAAC+C,GAAD,OAAQnJ,EAAKmG,gBAAkBgD,GAG5C7C,EAAK,yDAAI,8GACP+E,IAAQ,WACZrL,EAAKA,KAAOoL,GACZpL,EAAKuF,SAAW6F,GAAQpL,EAAKqF,aAAamB,YAH/B,2CAAJ,qDAOLP,EAAc,SAACiG,GAGnB,IAFA,IAAM3F,EAASuC,KAAKC,MAAMC,aAAaC,QAAQ,aACzCoD,EAAY5L,OAAO2L,OAAOF,EAAK,CAAEnH,KAAMqG,GAAQpL,EAAKqF,aAAaN,OAC9DzE,EAAI,EAAGA,EAAIiG,EAAO/F,OAAQF,IACjC,GAAI+L,EAAUtH,OAASwB,EAAOjG,GAAGyE,KAAM,CACrC,IAAMuH,EAAS/F,EAAOjG,GAAGkG,SAASuD,WAAU,SAAAnI,GAAA,OAAKA,EAAEsC,QAAUmI,EAAUnI,SACnEoI,GAAU,IACZ/F,EAAOjG,GAAGkG,SAAS9E,OAAO4K,EAAQ,GAClCtD,aAAaoB,QAAQ,WAAYtB,KAAKuB,UAAU9D,IAChD,QAAUyD,QAAQ,QAClB1D,OAKR,sCACEL,eACG,eAAOjG,IAFZ,IAGEsF,aACAS,WACAb,MACAkB,aACAE,YAGJmE,QAAS,CACP/E,YADO,SACKgF,GACVA,EAAGvC,MAAMwC,QAAU,EACnBD,EAAGvC,MAAM/D,OAAS,GAEpBuB,MALO,SAKD+E,EAAIE,GACRC,GAAA,KAAKC,GAAGJ,EAAI,CACVC,QAAS,EACTvG,OAAQ,QACR2G,MAA0B,IAAnBL,EAAGM,QAAQ5F,MAClB6F,WAAYL,KAGhBhF,MAbO,SAaD8E,EAAIE,GACRC,GAAA,KAAKC,GAAGJ,EAAI,CACVC,QAAS,EACTvG,OAAQ,EACR2G,MAA0B,IAAnBL,EAAGM,QAAQ5F,MAClB6F,WAAYL,O,UIzLpB,GAAOM,OAASA,EAChB,GAAOC,UAAY,kBAEJ,UCFToB,I,UAAMC,eAAUC,KACtBF,GAAIG,IAAIC,SACRJ,GAAIK,MAAM,S,uBCRV7K,EAAOD,QAAU,IAA0B,2B,4CCA3CC,EAAOD,QAAU,IAA0B,yB,4CCA3CC,EAAOD,QAAU,IAA0B,wB,qBCA3CC,EAAOD,QAAU,IAA0B,0B,qBCA3CC,EAAOD,QAAU,IAA0B,yB,qBCA3CC,EAAOD,QAAU,IAA0B","file":"js/app.f0eeb5ad.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/search.c77e1385.svg\";","module.exports = __webpack_public_path__ + \"img/translate.fa0bf271.svg\";","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&id=4ac8bbb4&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Dialog.vue?vue&type=style&index=0&id=54377395&scoped=true&lang=scss\"","<template>\r\n <div class=\"bg\"></div>\r\n <div id=\"app\">\r\n <div class=\"bookmark\" id=\"bookmark\">\r\n <div class=\"tool-bar\">\r\n <div class=\"tool-logo\">\r\n <a href=\"\" target=\"_blank\"><img src=\"./assets/svg/logo.svg\" title=\"更多数据\" class=\"tool-icon\" />红隼书签</a>\r\n </div>\r\n <div>\r\n <div class=\"search-box\">\r\n <img src=\"./assets/svg/search.svg\">\r\n <input type=\"text\" placeholder=\"请输入书签名称\" v-model=\"searchVal\" />\r\n </div>\r\n <img src=\"./assets/svg/add.svg\" class=\"tool-icon\" @click=\"add({},'add')\" />\r\n <a title=\"我的博客\" href=\"https://zhanhongzhu.top\" target=\"_blank\"><img src=\"./assets/svg/blog.svg\" class=\"tool-icon\" /></a>\r\n <a title=\"在线翻译\" href=\"https://translate.google.cn\" target=\"_blank\"><img src=\"./assets/svg/translate.svg\" class=\"tool-icon\" /></a>\r\n <a title=\"我的码云\" href=\"https://gitee.com/zhanhongzhu/kestrel-bookmark\" target=\"_blank\"><img src=\"./assets/svg/gitee.svg\" class=\"tool-icon\" /></a>\r\n <a title=\"我的github\" href=\"https://github.com/zhanhongzhu/kestrel-bookmark\" target=\"_blank\"><img src=\"./assets/svg/github.svg\" class=\"tool-icon\" /></a>\r\n </div>\r\n </div>\r\n <!-- 侧边导航栏 -->\r\n <div class=\"box-m\">\r\n <div class=\"left-box\">\r\n <div class=\"label\" :class=\"activeIndex===index?'active':'inactive'\" v-for=\"(item,index) in data\" :key=\"index\" @click=\"selectType(item,index)\">\r\n <img src=\"./assets/svg/file.svg\" />\r\n <div class=\"text-elipss\"> {{item.type}} </div>\r\n </div>\r\n </div>\r\n <div class=\"right-box\">\r\n <transition-group v-if=\"bookMark.length\" name=\"staggered-fade\" class=\"card-s\" tag=\"ul\" :css=\"false\" @before-enter=\"beforeEnter\" @enter=\"enter\" @leave=\"leave\">\r\n <div class=\"card-item list-complete-item\" v-for=\"(card,idx) in bookMark\" :key=\"idx\" @click=\"navigate(card)\">\r\n <div class=\"logo-img\"><img :src=\"card.logo?card.logo:'/img/logo.f38dc2e8.svg'\" /></div>\r\n <div class=\"logo-box\">\r\n <span class=\"logo-box-tools\">\r\n <i class=\"el-icon-edit\" @click.stop=\"add(card,'modify')\"></i>\r\n <i class=\"el-icon-delete\" @click.stop=\"deleteClick(card)\"></i>\r\n </span>\r\n\r\n <span class=\"title\">{{card.title || 'Kestrel-bookmark'}}</span>\r\n <span class=\"subtitle\">{{card.desc || \"红隼书签-为中国 Web 前端开发人员提供优质网站导航\"}}</span>\r\n </div>\r\n </div>\r\n </transition-group>\r\n <!-- 无数据显示 -->\r\n <div v-if=\"!bookMark.length\" class=\"card-item-nodata\">\r\n <div>\r\n <svg width=\"66\" height=\"68\" viewBox=\"0 0 66 68\" class=\"icon empty-icon\" data-v-8739e5ce=\"\">\r\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(4 3)\" data-v-8739e5ce=\"\">\r\n <g fill=\"#F7F7F7\" data-v-8739e5ce=\"\">\r\n <path d=\"M9 10h23.751v3.221H9zM9 16.494h41.083v4.026H9zM9 26.104h23.751v3.221H9zM9 42.208h23.751v3.221H9zM9 33.351h41.083v4.026H9zM9 49.455h41.083v4.026H9z\" data-v-8739e5ce=\"\">\r\n </path>\r\n </g>\r\n <rect width=\"56\" height=\"60\" x=\"1.139\" y=\"1.338\" stroke=\"#EBEBEB\" stroke-width=\"2\" rx=\"6\" data-v-8739e5ce=\"\"></rect>\r\n </g>\r\n </svg><span class=\"empty-text\" data-v-8739e5ce=\"\">暂无数据</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <Dialog class=\"my-dialog\" v-model=\"isDetailVisible\" @closeViews=\"closeViews\" :detail=\"detail\" :selectType=\"activeIndex\" @fresh=\"search\" />\r\n</template>\r\n\r\n<script>\r\nimport { reactive, toRefs } from '@vue/reactivity'\r\nimport { myData } from './assets/Json/印象笔记.js'\r\nimport { watch } from '@vue/runtime-core'\r\nimport Dialog from './components/Dialog.vue'\r\nimport gsap from 'gsap'\r\nimport { ElMessage } from 'element-plus'\r\nvar rowData = []\r\nfunction getData(fn = () => {}) {\r\n // 数据持久化\r\n if (localStorage.getItem('BOOKMARK')) {\r\n console.log('持久化数据')\r\n rowData = JSON.parse(localStorage.getItem('BOOKMARK'))\r\n } else {\r\n localStorage.setItem('BOOKMARK', JSON.stringify(myData))\r\n rowData = myData\r\n }\r\n fn()\r\n}\r\ngetData()\r\nexport default {\r\n components: { Dialog },\r\n name: 'kestrel-bookmark',\r\n setup() {\r\n // 扁平化数组\r\n const flatten = (arr, result = []) => {\r\n for (const item of arr) {\r\n Array.isArray(item.children)\r\n ? flatten(item.children, result)\r\n : result.push(item)\r\n }\r\n return result\r\n }\r\n\r\n const data = reactive({\r\n activeIndex: 0,\r\n data: rowData,\r\n bookMark: rowData[0].children,\r\n searchVal: '',\r\n allData: flatten(rowData),\r\n isDetailVisible: false,\r\n detail: {}\r\n })\r\n\r\n // 全部数据筛选功能\r\n watch(\r\n () => data.searchVal,\r\n () => {\r\n data.bookMark = data.allData.filter(\r\n (v) =>\r\n v.title.toLowerCase().indexOf(data.searchVal.toLowerCase()) > -1\r\n )\r\n }\r\n )\r\n // 书签类别选择\r\n const selectType = (item, index) => {\r\n data.bookMark = item.children\r\n data.activeIndex = index\r\n }\r\n // 书签跳转\r\n const navigate = (v) => window.open(v.url, '_target')\r\n\r\n // 新增书签\r\n function add(row = {}, flag = 'add') {\r\n const temp = {...row}\r\n if (flag === 'modify') {\r\n data.detail = Object.assign(temp, { type: rowData[data.activeIndex].type, flag: 'modify' })\r\n } else {\r\n data.detail = Object.assign({}, { type: rowData[data.activeIndex].type, flag: 'add' })\r\n }\r\n data.isDetailVisible = true\r\n }\r\n // 关闭弹窗事件\r\n const closeViews = (v) => (data.isDetailVisible = v)\r\n\r\n // 获取数据\r\n const search = async () => {\r\n await getData(() => {\r\n data.data = rowData\r\n data.bookMark = rowData[data.activeIndex].children\r\n })\r\n }\r\n // 删除\r\n const deleteClick = (row) => {\r\n const myData = JSON.parse(localStorage.getItem('BOOKMARK'))\r\n const delDetail = Object.assign(row, { type: rowData[data.activeIndex].type })\r\n for (let i = 0; i < myData.length; i++) {\r\n if (delDetail.type === myData[i].type) {\r\n const cindex = myData[i].children.findIndex(s => s.title === delDetail.title)\r\n if (cindex > -1) {\r\n myData[i].children.splice(cindex, 1)\r\n localStorage.setItem('BOOKMARK', JSON.stringify(myData))\r\n ElMessage.success('删除成功')\r\n search()\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n deleteClick,\r\n ...toRefs(data),\r\n selectType,\r\n navigate,\r\n add,\r\n closeViews,\r\n search\r\n }\r\n },\r\n methods: {\r\n beforeEnter(el) {\r\n el.style.opacity = 0\r\n el.style.height = 0\r\n },\r\n enter(el, done) {\r\n gsap.to(el, {\r\n opacity: 1,\r\n height: '1.6em',\r\n delay: el.dataset.index * 0.15,\r\n onComplete: done\r\n })\r\n },\r\n leave(el, done) {\r\n gsap.to(el, {\r\n opacity: 0,\r\n height: 0,\r\n delay: el.dataset.index * 0.15,\r\n onComplete: done\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n#app {\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.bookmark {\r\n position: relative;\r\n margin-top: 10vh;\r\n width: 1200px;\r\n height: calc(80vh);\r\n border: 1px solid rgba(255, 255, 255, 0.18);\r\n box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.2);\r\n border-radius: 6px;\r\n background: #fff;\r\n .left-box {\r\n width: 200px;\r\n height: 100%;\r\n border: 1px solid rgba(255, 255, 255, 0.18);\r\n box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.2);\r\n position: relative;\r\n overflow-y: auto;\r\n padding: 8px 0;\r\n img {\r\n width: 20px;\r\n height: auto;\r\n margin-right: 5px;\r\n cursor: pointer;\r\n }\r\n .active {\r\n box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.2);\r\n background: #a0cae6;\r\n }\r\n .inactive {\r\n box-shadow: none;\r\n background: #fff;\r\n }\r\n .label {\r\n font-size: 14px;\r\n display: flex;\r\n cursor: pointer;\r\n border: none;\r\n position: relative;\r\n padding: 10px 15px;\r\n &:hover {\r\n box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.2);\r\n background: #a0cae6;\r\n }\r\n .text-elipss {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n }\r\n }\r\n .right-box {\r\n width: calc(100% - 200px);\r\n .card-s {\r\n width: 100%;\r\n padding-top: 10px;\r\n max-height: calc(80vh - 49px);\r\n // height:calc(100% - 48px);\r\n display: flex;\r\n flex-wrap: wrap;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n .card-item {\r\n cursor: pointer;\r\n width: calc(33% - 40px);\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: center;\r\n border: 1px solid rgba(255, 255, 255, 0.18);\r\n box-shadow: 0 8px 18px 0 rgba(31, 38, 135, 0.2);\r\n padding: 10px;\r\n margin: 7px 20px 7px 20px;\r\n position: relative;\r\n border-radius: 8px;\r\n max-height: 200px;\r\n height: 72px !important;\r\n &:hover {\r\n transform: scale(1.04);\r\n animation-delay: 0.3ms;\r\n animation: 0.3ms;\r\n box-shadow: 0 8px 18px 0 rgba(31, 38, 135, 0.3);\r\n }\r\n &:hover .logo-box-tools{\r\n opacity: 0.85;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n.tool-icon {\r\n width: 20px;\r\n height: 20px;\r\n object-fit: contain;\r\n display: inline-block;\r\n margin-right: 12px;\r\n cursor: pointer;\r\n &:hover {\r\n fill: '#3eaf7c';\r\n }\r\n}\r\n.tool-bar {\r\n height: 48px;\r\n border-bottom: 1px solid #eee;\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n background: rgb(250, 248, 248);\r\n .tool-logo {\r\n margin: 0 15px;\r\n a {\r\n color: #e03b5d;\r\n display: flex;\r\n align-items: center;\r\n }\r\n }\r\n .search-box {\r\n display: inline-block;\r\n position: relative;\r\n margin-right: 1rem;\r\n white-space: nowrap;\r\n img {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 0;\r\n left: 0.6rem;\r\n margin: auto;\r\n width: 20px;\r\n height: auto;\r\n }\r\n input {\r\n text-align: initial;\r\n text-indent: initial;\r\n text-shadow: initial;\r\n text-transform: initial;\r\n word-spacing: initial;\r\n letter-spacing: initial;\r\n cursor: text;\r\n width: 14rem;\r\n height: 2rem;\r\n color: #4e6e8e;\r\n display: inline-block;\r\n border: 1px solid #eaecef;\r\n border-radius: 0.25rem;\r\n font-size: 0.9rem;\r\n line-height: 2rem;\r\n padding: 0 0.5rem 0 2rem;\r\n outline: none;\r\n transition: all 0.2s ease;\r\n background: transparent;\r\n background-size: auto;\r\n background-size: 1rem;\r\n }\r\n }\r\n}\r\n.box-m {\r\n display: flex;\r\n height: calc(100% - 50px);\r\n}\r\n.logo-img {\r\n width: 62px;\r\n height: 100%;\r\n margin-right: 10px;\r\n img {\r\n height: 100%;\r\n width: 100%;\r\n object-fit: contain;\r\n display: block;\r\n max-width: 70px;\r\n width: 62px;\r\n }\r\n}\r\n.logo-box {\r\n position: relative;\r\n flex: 1;\r\n .title {\r\n width: 100%;\r\n max-width: 145px;\r\n display: block;\r\n padding-top: 3px;\r\n font-size: 16px;\r\n font-weight: bold;\r\n color: #000000;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n display: block;\r\n }\r\n .subtitle {\r\n width: 100%;\r\n position: relative;\r\n max-width: 185px;\r\n margin-top: 5px;\r\n font-size: 13px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n color: rgba(0, 0, 0, 0.7);\r\n display: block;\r\n }\r\n}\r\n.list-complete-item {\r\n transition: all 0.8s ease;\r\n display: inline-block;\r\n margin-right: 10px;\r\n}\r\n\r\n.list-complete-enter-from,\r\n.list-complete-leave-to {\r\n opacity: 0;\r\n transform: translateY(30px);\r\n}\r\n\r\n.list-complete-leave-active {\r\n position: absolute;\r\n}\r\n.card-item-nodata {\r\n height: 100%;\r\n width: 100%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n span {\r\n display: block;\r\n margin-top: 20px;\r\n color: #999;\r\n }\r\n}\r\n.bg {\r\n position: fixed;\r\n z-index: -999;\r\n position: fixed;\r\n height: 100%;\r\n width: 100%;\r\n background: url(./assets/bg.jpg);\r\n}\r\n\r\n.logo-box-tools {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n opacity: 0;\r\n transition:0.4s opacity;\r\n i {\r\n padding: 4px;\r\n display: inline-block;\r\n &:hover {\r\n color: #e03b5d;\r\n background: #ff00001f;\r\n border-radius: 5px;\r\n }\r\n }\r\n}\r\n</style>\r\n","export const myData = [{\r\n type: '语言文档和规范',\r\n children: [{\r\n desc: '提供 Web 技术文档,学习 Web 开发的最佳实践',\r\n url: 'https://developer.mozilla.org/zh-CN/docs/Web',\r\n logo: '',\r\n title: 'MDN'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/ecma262',\r\n desc: 'ECMAScript 2018 标准',\r\n url: 'https://ecma262.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/ecma.svg',\r\n title: 'ECMAScript'\r\n },\r\n {\r\n contribute: 'https://github.com/LinFeng1997/markdown-it-docs',\r\n desc: 'Markdown 解析器。完全支持 CommonMark 规范,并且进行语法扩展、提供可编写插件和快速编译',\r\n url: 'https://markdown-it.docschina.org/',\r\n is_docschina: true,\r\n title: 'markdown-it 中文文档',\r\n repository: 'https://github.com/markdown-it/markdown-it'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/GFM-docs',\r\n url: 'https://gfm.docschina.org/zh-hans/',\r\n is_docschina: true,\r\n title: 'GitHub 风格 Markdown 规范',\r\n repository: 'https://github.com/docschina/GFM-docs'\r\n },\r\n {\r\n url: 'https://www.markdownguide.org/basic-syntax/',\r\n title: 'Markdown 基本语法'\r\n },\r\n {\r\n contribute: 'https://github.com/xitu/graphql.github.io',\r\n desc: '一种用于 API 的查询语言',\r\n url: 'http://graphql.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/graphql.svg',\r\n title: 'GraphQL'\r\n },\r\n {\r\n contribute: 'https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md',\r\n desc: 'OpenAPI 规范为 RESTful API 定义了一个与语言无关的标准接口',\r\n url: 'https://swagger.io/docs/specification/about/',\r\n logo: 'https://cdn.docschina.org/home/logo/openapi.png',\r\n title: 'OpenAPI'\r\n },\r\n {\r\n contribute: 'https://github.com/json-schema-org/json-schema-spec',\r\n desc: 'JSON Schema 是一个词汇表,可以验证、注释和操作 JSON 文档',\r\n url: 'http://json-schema.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/json-schema.svg',\r\n title: 'JSON Schema'\r\n },\r\n {\r\n desc: '一门语言,帮助开发者构建可靠和高效软件',\r\n url: 'https://www.rust-lang.org/zh-CN/',\r\n logo: 'https://www.rust-lang.org/static/images/rust-logo-blk.svg',\r\n title: 'Rust'\r\n }],\r\n title: 'standard'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d57b2d7881b8',\r\n _updateTime: 1614568539818,\r\n type: '视频音频',\r\n children: [{\r\n desc: '带解析器、能节省流量的 Web 视频播放器',\r\n url: 'https://h5player.bytedance.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/xgplayer.png',\r\n title: 'XGPlayer',\r\n repository: 'https://github.com/bytedance/xgplayer',\r\n team: '今日头条'\r\n },\r\n {\r\n desc: '奇舞团研制的 h5 播放器,它支持 mp4、m3u8、flv 等多种格式',\r\n url: 'http://chimee.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/75team.svg',\r\n title: 'Chimee',\r\n repository: 'https://github.com/Chimeejs/chimee',\r\n team: '360'\r\n },\r\n {\r\n desc: 'HTML5 视频播放器以纯 JavaScript 编写,不含 Flash',\r\n url: 'https://github.com/Bilibili/flv.js',\r\n logo: '',\r\n title: 'flv.js',\r\n team: '哔哩哔哩'\r\n }],\r\n title: 'media'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d57508ba180c',\r\n type: '函数式编程',\r\n children: [{\r\n contribute: 'https://github.com/RxJS-CN/RxJS-Docs-CN/',\r\n desc: 'RxJS 是 Reactive Extensions 的 JavaScript 实现,可以通过响应式和函数式编程模型组合异步数据流',\r\n url: 'http://cn.rx.js.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/rxjs.png',\r\n title: 'RxJS'\r\n },\r\n {\r\n desc: '函数式和响应式的 JavaScript 框架',\r\n url: 'http://cyclejs.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/cyclejs.svg',\r\n title: 'Cycle.js'\r\n },\r\n {\r\n desc: '一款实用的 JavaScript 函数式编程库',\r\n url: 'http://ramda.cn/',\r\n logo: 'https://ramdajs.com/ramdaFilled_200x235.png',\r\n title: 'Ramda'\r\n }],\r\n title: 'functional'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d56d1789876d',\r\n _updateTime: 1611132890668,\r\n type: 'Vue(Mobile)',\r\n children: [{\r\n desc: '移动端 Vue 组件库',\r\n url: 'https://youzan.github.io/vant/',\r\n logo: 'https://cdn.docschina.org/home/logo/vant.png',\r\n title: 'Vant',\r\n repository: 'https://github.com/youzan/vant',\r\n team: '有赞'\r\n },\r\n {\r\n desc: '基于 Vue 实现的精致移动端组件库',\r\n url: 'https://didi.github.io/cube-ui/',\r\n logo: 'https://cdn.docschina.org/home/logo/cube.png',\r\n title: 'Cube UI',\r\n repository: 'https://github.com/didi/cube-ui',\r\n team: '滴滴'\r\n },\r\n {\r\n desc: '面向金融场景的 Vue 移动端组件库',\r\n url: 'https://didi.github.io/mand-mobile/',\r\n logo: 'https://cdn.docschina.org/home/logo/mand.svg',\r\n title: 'Mand Mobile',\r\n repository: 'https://github.com/didi/mand-mobile',\r\n team: '滴滴'\r\n },\r\n {\r\n desc: '可视化 Mand Mobile 主题编辑器',\r\n url: 'https://mand-mobile.github.io/palette/',\r\n logo: 'https://cdn.docschina.org/home/logo/mand.svg',\r\n title: 'Mand Mobile Palette',\r\n repository: 'https://github.com/mand-mobile/palette',\r\n team: '滴滴'\r\n },\r\n {\r\n desc: '基于 Vue 的移动端跨平台 UI',\r\n url: 'https://weex.apache.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/weex.svg',\r\n title: 'Weex',\r\n repository: 'https://github.com/apache/incubator-weex',\r\n team: '阿里巴巴'\r\n }],\r\n title: 'vue-mobile'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d57a3885d353',\r\n _updateTime: 1612263116672,\r\n type: '工具',\r\n children: [{\r\n contribute: 'https://github.com/xmoyking/localForage-cn',\r\n desc: '通过简单类似 localStorage API 的异步数据存储来改进你的 Web 应用程序的离线体验',\r\n url: 'https://localforage.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/lf.png',\r\n title: 'localForage'\r\n },\r\n {\r\n contribute: 'https://github.com/iamkun/dayjs',\r\n desc: '处理时间和日期的 JavaScript 函数库',\r\n url: 'https://day.js.org/zh-CN/',\r\n title: 'Day.js'\r\n },\r\n {\r\n contribute: 'https://github.com/moment/moment',\r\n desc: '处理时间和日期的 JavaScript 函数库',\r\n url: 'https://momentjs.com/docs/',\r\n title: 'Moment.js'\r\n },\r\n {\r\n desc: '一个现代的 JavaScript 工具库',\r\n url: 'http://lodash.think2011.net/',\r\n logo: 'https://cdn.docschina.org/home/logo/lodash.svg',\r\n title: 'Lodash'\r\n },\r\n {\r\n desc: 'jQuery API 速查表',\r\n url: 'http://hemin.cn/jq/',\r\n logo: 'https://cdn.docschina.org/home/logo/jquery.svg',\r\n title: 'jQuery API'\r\n },\r\n {\r\n desc: '高效精简强大的工具库',\r\n url: 'http://www.jquery123.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/jquery.svg',\r\n title: 'jQuery'\r\n },\r\n {\r\n desc: '轻量级的工具库',\r\n url: 'http://zeptojs.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/zepto.png',\r\n title: 'Zepto'\r\n }],\r\n title: 'utils'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d56a6fb97586',\r\n _updateTime: 1618062117484,\r\n type: 'React',\r\n children: [{\r\n contribute: 'https://github.com/docschina/create-react-app',\r\n desc: 'React 官方维护的创建 React 单页面应用的工具',\r\n url: 'https://cra.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/react.svg',\r\n title: 'Create React App'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/preact-www',\r\n desc: 'React 的 3kb 轻量化方案,拥有同样的 ES6 API',\r\n url: 'https://preactjs.com/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/preact.png',\r\n title: 'Preact'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/react-router.cn',\r\n desc: 'React 官方维护的路由库',\r\n url: 'https://react-router.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/react-router.svg',\r\n title: 'React-Router'\r\n },\r\n {\r\n contribute: 'https://github.com/dvajs/dva',\r\n desc: '基于 React 和 redux具有 elm 风格的轻量级框架。',\r\n url: 'https://dvajs.com/',\r\n logo: '',\r\n title: 'dva'\r\n },\r\n {\r\n desc: 'Element UI 的 React 实现',\r\n url: 'https://elemefe.github.io/element-react/',\r\n logo: 'https://cdn.docschina.org/home/logo/element.svg',\r\n title: 'Element React',\r\n repository: 'https://github.com/eleme/element-react',\r\n team: '饿了么'\r\n },\r\n {\r\n desc: 'PC 端 WebUI 规范的 React 实现,提供了一整套基础的 UI 组件以及一些常用的业务组件',\r\n url: 'https://youzan.github.io/zent/zh/guides/install',\r\n logo: 'https://cdn.docschina.org/home/logo/zent.png',\r\n title: 'Zent',\r\n repository: 'https://github.com/youzan/zent',\r\n team: '有赞'\r\n },\r\n {\r\n desc: 'Nerv 是一款基于虚拟 DOM 技术的 JavaScriptTypeScript它提供了与 React 16 一致的使用方式与 API并且拥有更高的性能表现、更小的包大小以及更好的浏览器兼容性',\r\n url: 'https://nerv.aotu.io/',\r\n logo: 'https://camo.githubusercontent.com/3e1b76e514b895760055987f164ce6c95935a3aa/687474703a2f2f73746f726167652e333630627579696d672e636f6d2f6d74642f686f6d652f6c6f676f2d3278313531333833373932363730372e706e67',\r\n title: 'Nerv',\r\n repository: 'https://github.com/NervJS/nerv',\r\n team: '京东'\r\n },\r\n {\r\n desc: '基于 React 的移动端跨平台 UI',\r\n url: 'https://reactnative.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/react.svg',\r\n title: 'React Native',\r\n repository: 'https://github.com/reactnativecn/react-native.cn'\r\n },\r\n {\r\n desc: 'React Native 应用程序的路由和导航',\r\n url: 'https://reactnavigation.org/docs/getting-started',\r\n logo: 'https://reactnavigation.org/img/spiro.svg',\r\n title: 'React Navigation',\r\n repository: 'https://github.com/react-navigation'\r\n }],\r\n title: 'react'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d56873ba5666',\r\n _updateTime: 1618062691090,\r\n type: 'web 框架',\r\n children: [{\r\n contribute: 'https://github.com/reactjs/zh-hans.reactjs.org',\r\n desc: '构建用户界面的 JavaScript 库',\r\n url: 'https://react.docschina.org',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/react.svg',\r\n title: 'React'\r\n },\r\n {\r\n contribute: 'https://github.com/vuejs/cn.vuejs.org',\r\n desc: '渐进式 JavaScript 框架',\r\n url: 'https://cn.vuejs.org/v2/guide/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'Vue 2'\r\n },\r\n {\r\n contribute: 'https://github.com/vuejs/vue-next',\r\n desc: '渐进式 JavaScript 框架',\r\n url: 'https://v3.cn.vuejs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'Vue 3'\r\n },\r\n {\r\n contribute: 'https://github.com/single-spa/single-spa',\r\n desc: 'JavaScript 框架,将多个微前端组合成一个应用程序',\r\n url: 'https://single-spa.js.org/',\r\n logo: 'https://single-spa.js.org/img/logo-white-bgblue.svg',\r\n title: 'single-spa'\r\n },\r\n {\r\n contribute: 'https://github.com/angular/angular',\r\n desc: '应用程序设计框架和开发平台,用于创建高效且复杂的单页应用程序',\r\n url: 'https://angular.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/angular.svg',\r\n title: 'Angular'\r\n },\r\n {\r\n contribute: 'https://github.com/sveltejs/svelte',\r\n desc: '将声明性组件转换为精准高效更新 DOM 的 JavaScript 代码。',\r\n url: 'https://svelte.dev/',\r\n logo: 'https://svelte.dev/svelte-logo-horizontal.svg',\r\n title: 'Svelte'\r\n }],\r\n title: 'web-framework'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5725620766a',\r\n type: '代码风格检查',\r\n children: [{\r\n desc: '可组装的、用于 JavaScript 和 JSX 的代码检查工具',\r\n url: 'https://cn.eslint.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/eslint.svg',\r\n title: 'ESLint'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/stylelint',\r\n desc: '强大的现代 CSS 检测工具,帮助样式表遵循一致的约定和避免错误',\r\n url: 'https://stylelint.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/stylelint.svg',\r\n title: 'StyleLint'\r\n },\r\n {\r\n desc: 'JavaScript 风格指南、检查工具和格式化工具',\r\n url: 'https://standardjs.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/standardjs.svg',\r\n title: 'Standard JS'\r\n },\r\n {\r\n desc: 'Vue 代码的风格指南',\r\n url: 'https://vue.docschina.org/v2/style-guide/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'Vue 风格指南'\r\n }],\r\n title: 'codestyle'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d56f23ffeb15',\r\n _updateTime: 1618761523555,\r\n type: 'Node.js & Deno',\r\n children: [{\r\n contribute: 'https://github.com/nodejscn/node-api-cn',\r\n desc: '基于 V8 引擎的 JavaScript 运行环境',\r\n url: 'http://nodejs.cn/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/node.svg',\r\n title: 'Node.js'\r\n },\r\n {\r\n contribute: 'https://deno.js.cn/',\r\n desc: 'Deno 是一个 JavaScript/TypeScript 的运行时',\r\n url: 'https://manual.deno.js.cn/',\r\n logo: 'https://deno.land/logo.svg',\r\n title: 'Deno'\r\n },\r\n {\r\n contribute: 'https://github.com/demopark/koa-docs-Zh-CN',\r\n desc: '新一代的 Web 后台框架',\r\n url: 'https://koajs.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/koa.svg',\r\n title: 'Koa'\r\n },\r\n {\r\n desc: '为企业级框架和 Node.js & Koa 应用程序而生',\r\n url: 'https://eggjs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/egg.png',\r\n title: 'egg',\r\n repository: 'https://github.com/eggjs/egg',\r\n team: '阿里巴巴'\r\n },\r\n {\r\n desc: '快速极简的 Web 框架',\r\n url: 'http://expressjs.com/zh-cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/express.png',\r\n title: 'Express',\r\n repository: 'https://github.com/expressjs/express'\r\n },\r\n {\r\n desc: '渐进式 Node.js 框架,构建高效、可靠和可扩展的 server 应用程序',\r\n url: 'https://nestjs.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/nest.png',\r\n title: 'nest',\r\n repository: 'https://github.com/nestjs/nest'\r\n },\r\n {\r\n desc: '能够使用完整 ES6/7 特性进行开发的 Node.js 应用程序',\r\n url: 'https://thinkjs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/think.png',\r\n title: 'ThinkJS',\r\n repository: 'https://github.com/thinkjs/thinkjs',\r\n team: '360'\r\n },\r\n {\r\n desc: 'npm 是 JavaScript package 管理工具,在这里可以找到可复用代码,并以强大的全新方式进行聚合',\r\n url: 'https://docs.npmjs.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/npm.png',\r\n title: 'npm'\r\n },\r\n {\r\n desc: '淘宝提供的 npmjs.org 镜像',\r\n url: 'https://npm.taobao.org/',\r\n logo: 'https://npm.taobao.org/favicon.png',\r\n title: 'cnpm'\r\n },\r\n {\r\n desc: '快速、可靠和安全的依赖管理',\r\n url: 'https://yarnpkg.com/zh-Hans/',\r\n logo: 'https://cdn.docschina.org/home/logo/yarn.png',\r\n title: 'yarn'\r\n }],\r\n title: 'node'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5741113911d',\r\n _updateTime: 1618213635311,\r\n type: '编程教程',\r\n children: [{\r\n contribute: 'https://github.com/javascript-tutorial/zh.javascript.info',\r\n desc: '以最新的 JavaScript 标准为基准,通过简单但足够详细的内容,为你讲解从基础到高阶的 JavaScript 相关知识。',\r\n url: 'https://zh.javascript.info/',\r\n is_docschina: false,\r\n logo: 'https://user-images.githubusercontent.com/26959437/67275005-3df25500-f4f4-11e9-9c13-36e442ff40cc.jpg',\r\n title: '现代 JavaScript 教程'\r\n },\r\n {\r\n contribute: 'https://github.com/RxJS-CN/learn-rxjs-operators',\r\n desc: '通过每个操作符的清晰示例及解释来进行 RxJS 的学习',\r\n url: 'https://rxjs-cn.github.io/learn-rxjs-operators/',\r\n is_docschina: true,\r\n logo: '',\r\n title: '学习 RxJS 操作符'\r\n },\r\n {\r\n desc: '从 JavaScript 程序员的角度总结思考,循序渐进的理解 TypeScript',\r\n url: 'https://ts.xcatliu.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/typescript.svg',\r\n title: 'TypeScript 入门教程',\r\n repository: 'https://github.com/xcatliu/typescript-tutorial'\r\n },\r\n {\r\n desc: '基于 Promise 进行异步编程的基本使用方法以及测试的编写方法、应用及反模式等内容的文档',\r\n url: 'http://liubin.org/promises-book/',\r\n logo: '',\r\n title: 'JavaScript Promise 迷你书'\r\n },\r\n {\r\n contribute: 'https://github.com/RxJS-CN/learn-rxjs-operators',\r\n desc: '通过每个操作符的清晰示例及解释来进行 RxJS 的学习',\r\n url: 'https://rxjs-cn.github.io/learn-rxjs-operators/',\r\n is_docschina: true,\r\n logo: '',\r\n title: '学习 RxJS 操作符'\r\n },\r\n {\r\n desc: '这是一本有关 Rust的入门书籍',\r\n url: 'https://doc.rust-lang.org/book/',\r\n logo: 'https://www.rust-lang.org/static/images/rust-logo-blk.svg',\r\n title: 'Rust 编程语言'\r\n }],\r\n title: 'tutorial'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d56c79303c20',\r\n _updateTime: 1611204893455,\r\n type: 'Vue(PC)',\r\n children: [{\r\n desc: '基于 Vue 的组件库',\r\n url: 'http://element-cn.eleme.io/',\r\n logo: 'https://cdn.docschina.org/home/logo/element.svg',\r\n title: 'Element UI',\r\n repository: 'https://github.com/ElemeFE/element',\r\n team: '饿了么'\r\n },\r\n {\r\n desc: '基于 Vue 的 Material 组件库',\r\n url: 'https://vuetifyjs.com/zh-Hans/',\r\n logo: 'https://cdn.docschina.org/home/logo/vuetify.svg',\r\n title: 'Vuetify',\r\n repository: 'https://github.com/vuetifyjs/vuetify'\r\n },\r\n {\r\n desc: '基于 Vue 的组件库',\r\n url: 'https://www.iviewui.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/iview.png',\r\n title: 'View UI',\r\n repository: 'https://github.com/iview/iview',\r\n team: 'TalkingData'\r\n },\r\n {\r\n desc: 'Vue 官方 UI 组件',\r\n url: 'https://vuejs.github.io/ui/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'Vue UI Framework',\r\n repository: 'https://github.com/vuejs/ui'\r\n },\r\n {\r\n desc: '一个基于 Vue 的高质量 UI 组件库',\r\n url: 'https://www.heyui.top/',\r\n logo: 'https://camo.githubusercontent.com/1424cb86c2634f96fe82db55f01f07c3c29e53a1/68747470733a2f2f7777772e68657975692e746f702f7374617469632f696d616765732f6c6f676f2e706e67',\r\n title: 'HeyUI',\r\n repository: 'https://github.com/heyui/heyui'\r\n },\r\n {\r\n desc: '灵活易用的 JavaScript 组件框架,兼容到 IE6',\r\n url: 'https://baidu.github.io/san/',\r\n logo: 'https://cdn.docschina.org/home/logo/san.svg',\r\n title: 'San',\r\n repository: 'https://github.com/baidu/san',\r\n team: '百度'\r\n },\r\n {\r\n desc: 'vue-loader 可以将 Vue 单文件组件转换为 JavaScript 模块的 webpack loader',\r\n url: 'https://vue-loader.vuejs.org/zh/',\r\n logo: '',\r\n title: 'vue-loader',\r\n repository: 'https://github.com/vuejs/vue-loader'\r\n },\r\n {\r\n contribute: 'https://github.com/vuejs/vuepress',\r\n desc: '由 Vue 提供支持的静态站点生成器',\r\n url: 'https://vuepress.vuejs.org/zh/',\r\n logo: 'https://cdn.docschina.org/home/logo/vuepress.svg',\r\n title: 'VuePress'\r\n },\r\n {\r\n desc: 'vue-router 是 Vue 官方提供的 router',\r\n url: 'https://router.vuejs.org/zh/',\r\n logo: '',\r\n title: 'vue-router',\r\n repository: 'https://github.com/vuejs/vue-router'\r\n },\r\n {\r\n desc: 'vue-rx 帮助用户在 Vue 应用程序中实现简单的 RxJS 绑定',\r\n url: 'https://github.com/vuejs/vue-rx/blob/master/README-CN.md',\r\n logo: '',\r\n title: 'vue-rx',\r\n repository: 'https://github.com/vuejs/vue-rx'\r\n },\r\n {\r\n desc: 'vue-cli 帮助用户快速开发 Vue 的脚手架(scaffold)',\r\n url: 'https://cli.vuejs.org/zh/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'vue-cli',\r\n repository: 'https://github.com/vuejs/vue-cli'\r\n },\r\n {\r\n desc: 'Vue 官方提供的服务器端渲染(SSR)指南',\r\n url: 'https://ssr.vuejs.org/zh/',\r\n logo: '',\r\n title: 'vue-ssr',\r\n repository: 'https://github.com/vuejs/vue-ssr-docs'\r\n },\r\n {\r\n desc: 'Vue.js 元框架,用于快速创建复杂、高性能的通用 Web 应用程序',\r\n url: 'https://zh.nuxtjs.org/',\r\n logo: 'https://zh.nuxtjs.org/logos/nuxt-icon.png',\r\n title: 'Nuxt.js',\r\n repository: 'https://github.com/nuxt/nuxt.js'\r\n }],\r\n title: 'vue-pc'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d57622981fde',\r\n type: '测试工具',\r\n children: [{\r\n desc: 'Vue Test Utils 是 Vue.js 官方的单元测试实用工具库',\r\n url: 'https://vue-test-utils.vuejs.org/zh/',\r\n logo: '',\r\n title: 'Vue Test Utils',\r\n repository: 'https://github.com/vuejs/vue-test-utils'\r\n },\r\n {\r\n desc: 'Facebook 开发的零配置测试平台,让代码库更加稳定和健壮',\r\n url: 'https://jest.docschina.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/jest.png',\r\n title: 'Jest',\r\n repository: 'https://github.com/facebook/jest'\r\n },\r\n {\r\n desc: '未来的测试运行器',\r\n url: 'https://github.com/avajs/ava',\r\n logo: 'https://cdn.docschina.org/home/logo/ava.png',\r\n title: 'ava'\r\n },\r\n {\r\n desc: 'Karma 的主要目标是,让测试驱动开发(TDD)变得简单、快速和有趣。',\r\n url: 'https://karma-runner.github.io/2.0/index.html',\r\n logo: 'https://cdn.docschina.org/home/logo/karma.png',\r\n title: 'Karma',\r\n repository: 'https://github.com/karma-runner/karma'\r\n },\r\n {\r\n desc: 'Mocha 是运行在 Node.js 和浏览器上的功能丰富的 JavaScript 测试框架使异步测试变得简单而有趣。Mocha 串行运行测试,提供灵活精准的报告,同时将未捕获的异常映射到正确的测试用例。',\r\n url: 'https://mochajs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/mocha.svg',\r\n title: 'Mocha',\r\n repository: 'https://github.com/mochajs/mocha'\r\n },\r\n {\r\n desc: 'Jasmine 是一个用于测试 JavaScript 代码的行为驱动开发(BDD)框架',\r\n url: 'https://jasmine.github.io/',\r\n logo: 'https://cdn.docschina.org/home/logo/jasmine.png',\r\n title: 'Jasmine',\r\n repository: 'https://github.com/jasmine/jasmine'\r\n },\r\n {\r\n desc: 'Puppeteer 可以通过 DevTools 协议控制 headless Chrome 或 Chromium',\r\n url: 'https://pptr.dev/',\r\n logo: 'https://cdn.docschina.org/home/logo/puppeteer.png',\r\n title: 'Puppeteer',\r\n repository: 'https://github.com/GoogleChrome/puppeteer'\r\n },\r\n {\r\n desc: '用于对 JavaScript 隔离测试 spy, stub 和 mock。适用于任何单元测试框架',\r\n url: 'http://sinonjs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/sinon.png',\r\n title: 'Sinon.JS',\r\n repository: 'https://github.com/sinonjs/sinon'\r\n },\r\n {\r\n desc: 'Chai 是一个用于 Node.js 和浏览器的 BDD/TDD 断言库,可以与任何 JavaScript 测试框架便捷配对',\r\n url: 'http://chaijs.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/chai.png',\r\n title: 'Chai',\r\n repository: 'https://github.com/chaijs/chai'\r\n },\r\n {\r\n desc: 'expect 帮助你编写更好的断言',\r\n url: 'https://github.com/mjackson/expect',\r\n logo: '',\r\n title: 'expect'\r\n },\r\n {\r\n desc: '一个富于表现力、可读性强、与框架无关,用于 Node.js 的 BDD 风格断言库',\r\n url: 'https://shouldjs.github.io/',\r\n logo: '',\r\n title: 'Should.js',\r\n repository: 'https://github.com/shouldjs/should.js'\r\n },\r\n {\r\n desc: '生成随机数据,拦截 Ajax 请求',\r\n url: 'http://mockjs.com/',\r\n logo: '',\r\n title: 'Mock.js',\r\n repository: 'https://github.com/nuysoft/Mock'\r\n }],\r\n title: 'test'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5770943917c',\r\n _updateTime: 1613989291342,\r\n type: '编译构建',\r\n children: [{\r\n contribute: 'https://github.com/docschina/webpack.js.org',\r\n desc: '用于现代 JavaScript 应用程序的静态模块打包工具',\r\n url: 'https://webpack.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/webpack-offical.svg',\r\n title: 'webpack'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/babeljs.io',\r\n desc: '一个编译工具,让你可以项目中直接使用下一代 JavaScript',\r\n url: 'https://babel.docschina.org/',\r\n homeBackup: 'https://babeljs.cn/',\r\n imgStyle: { objectFit: 'contain' },\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/babel.png',\r\n title: 'Babel'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/parceljs.io',\r\n desc: '零配置打包工具',\r\n url: 'https://parceljs.docschina.org/',\r\n homeBackup: 'https://www.parceljs.io/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/parcel.png',\r\n title: 'Parcel'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/rollupjs.org',\r\n desc: '新一代 JavaScript 模块打包器',\r\n url: 'https://rollup.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/rollup.svg',\r\n title: 'Rollup'\r\n },\r\n {\r\n contribute: 'https://github.com/vitejs/docs-cn',\r\n desc: '下一代前端开发与构建工具',\r\n url: 'https://cn.vitejs.dev/',\r\n logo: 'https://vitejs.dev/logo.svg',\r\n title: 'Vite'\r\n },\r\n {\r\n desc: 'JavaScript 超集',\r\n url: 'https://zhongsp.gitbooks.io/typescript-handbook/',\r\n logo: 'https://cdn.docschina.org/home/logo/typescript.svg',\r\n title: 'TypeScript',\r\n repository: 'https://github.com/zhongsp/TypeScript'\r\n },\r\n {\r\n desc: '基于流的自动化构建工具',\r\n url: 'http://www.gulpjs.com.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/gulp.svg',\r\n title: 'Gulp'\r\n },\r\n {\r\n desc: 'JavaScript 世界的构建工具',\r\n url: 'https://grunt.docschina.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/grunt.svg',\r\n title: 'Grunt'\r\n },\r\n {\r\n desc: '用于管理有多个包的 JavaScript 项目的工具',\r\n url: 'https://lerna.js.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/lerna.svg',\r\n title: 'Lerna',\r\n repository: 'https://github.com/lerna/lerna'\r\n }],\r\n title: 'build'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5781a2d68bb',\r\n type: '模板引擎',\r\n children: [{\r\n desc: 'JavaScript 模板引擎',\r\n url: 'http://ejs.co/',\r\n logo: '',\r\n title: 'EJS'\r\n },\r\n {\r\n desc: 'JavaScript 模板引擎',\r\n url: 'https://pugjs.org/',\r\n logo: '',\r\n title: 'Pug'\r\n },\r\n {\r\n desc: 'JavaScript 模板引擎',\r\n url: 'https://handlebarsjs.com/',\r\n logo: '',\r\n title: 'Handlebars.js'\r\n }],\r\n title: 'template'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5733b66fd34',\r\n _updateTime: 1618063291445,\r\n type: '状态管理',\r\n children: [{\r\n contribute: 'https://github.com/SangKa/mobx-docs-cn',\r\n desc: '简单、可扩展的状态管理',\r\n url: 'https://cn.mobx.js.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/mobx.png',\r\n title: 'Mobx'\r\n },\r\n {\r\n contribute: 'https://www.github.com/reduxjs/react-redux',\r\n desc: 'React 官方版本 Redux',\r\n url: 'https://react-redux.js.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/redux.svg',\r\n title: 'React Redux'\r\n },\r\n {\r\n contribute: 'https://github.com/camsong/redux-in-chinese',\r\n desc: 'JavaScript 状态容器,提供可预测化的状态管理',\r\n url: 'https://cn.redux.js.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/redux.svg',\r\n title: 'Redux'\r\n },\r\n {\r\n contribute: 'https://github.com/rematch/rematch',\r\n desc: 'Rematch 是没有 boilerplate 的 Redux 最佳实践',\r\n url: 'https://rematch.gitbook.io/',\r\n logo: 'https://cdn.docschina.org/home/logo/rematch.png',\r\n title: 'Rematch'\r\n },\r\n {\r\n desc: 'vuex 是 Vue 官方提供的状态管理工具',\r\n url: 'https://vuex.vuejs.org/zh/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'Vuex',\r\n repository: 'https://github.com/vuejs/vuex'\r\n }],\r\n title: 'data-model'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d57c78a8184a',\r\n _updateTime: 1606363580152,\r\n type: '技术周刊',\r\n children: [{\r\n desc: '关于 JavaScript 的文章、新闻和项目的周刊',\r\n url: 'https://docschina.org/weekly/js/docs/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/docschina-logo.svg',\r\n title: '印记中文周刊 - JavaScript'\r\n },\r\n {\r\n desc: '关于 React 的文章、新闻和项目的周刊',\r\n url: 'https://docschina.org/weekly/react/docs/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/docschina-logo.svg',\r\n title: '印记中文周刊 - React'\r\n },\r\n {\r\n desc: 'Node.js 新闻和文章',\r\n url: 'https://nodeweekly.com/',\r\n logo: '',\r\n title: 'Node Weekly'\r\n },\r\n {\r\n desc: 'CSS 文章、教程、实验、工具等摘要',\r\n url: 'https://css-weekly.com/',\r\n logo: 'https://css-weekly.com/wp-content/themes/cssweekly/img/cssweekly-logo.png',\r\n title: 'CSS Weekly'\r\n },\r\n {\r\n desc: 'Vue 官方提供的最新实时动态资讯',\r\n url: 'https://news.vuejs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'Vue news',\r\n repository: 'https://github.com/vuejs/news.vuejs.org'\r\n }],\r\n title: 'weekly'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5691d88abc2',\r\n type: '小程序框架',\r\n children: [{\r\n contribute: 'https://github.com/remaxjs/remax',\r\n desc: 'Remax 将 React 运行在小程序环境中,让你可以使用完整的 React 进行小程序开发。',\r\n url: 'https://remaxjs.org/',\r\n logo: 'https://gw.alipayobjects.com/mdn/rms_b5fcc5/afts/img/A*1NHAQYduQiQAAAAAAAAAAABkARQnAQ',\r\n title: 'Remax'\r\n },\r\n {\r\n contribute: 'https://github.com/NervJS/taro',\r\n desc: 'Taro 是一套遵循 React 语法规范的 多端开发 解决方案。',\r\n url: 'https://taro.jd.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/taro.png',\r\n title: 'Taro'\r\n },\r\n {\r\n contribute: 'https://github.com/wechat-miniprogram/kbone',\r\n desc: 'kbone 用于支持一个项目可以同时在 Web 端和小程序端被使用',\r\n url: 'https://developers.weixin.qq.com/miniprogram/dev/extended/kbone/',\r\n logo: '',\r\n title: 'kbone'\r\n },\r\n {\r\n contribute: 'https://github.com/Tencent/omi',\r\n desc: 'Omi 可以开发桌面 Web、移动 H5同时支持开发小程序',\r\n url: 'http://omijs.org',\r\n logo: 'https://camo.githubusercontent.com/5a3ce051411cca4d8abd0e0abff879bb5a871520/68747470733a2f2f74656e63656e742e6769746875622e696f2f6f6d692f6173736574732f6f6d692d6c6f676f323031392e737667',\r\n title: 'omi/omip'\r\n },\r\n {\r\n contribute: 'https://github.com/Tencent/wepy',\r\n desc: 'WePY 是一款让小程序支持组件化开发的框架,通过预编译的手段让开发者可以选择自己喜欢的开发风格去开发小程序',\r\n url: 'https://developers.weixin.qq.com/miniprogram/dev/extended/kbone/',\r\n logo: 'https://opensource.tencent.com/img/wepy.png',\r\n title: 'wepy'\r\n },\r\n {\r\n contribute: 'https://github.com/RubyLouvre/nanachi',\r\n desc: '基于 React 的多端小程序转译框架,完美兼容 React 生命周期',\r\n url: 'https://rubylouvre.github.io/nanachi/',\r\n logo: 'https://cdn.docschina.org/home/logo/nanachi.png',\r\n title: 'nanachi'\r\n },\r\n {\r\n contribute: 'https://github.com/Meituan-Dianping/mpvue',\r\n desc: '框架基于 Vue.js 核心mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为小程序开发引入了整套 Vue.js 开发体验。',\r\n url: 'http://mpvue.com',\r\n logo: 'https://cdn.docschina.org/home/logo/mpvue.png',\r\n title: 'mpvue'\r\n },\r\n {\r\n contribute: 'https://github.com/wxajs/wxa',\r\n desc: 'wxa 是一个 AOP 框架,主要使用 Decorator运行时改写拦截和预编译实现框架功能。',\r\n url: 'https://wxajs.github.io/wxa/',\r\n logo: 'https://github.com/wxajs/wxa/raw/dev/wxa-logo.png',\r\n title: 'wxa'\r\n },\r\n {\r\n contribute: 'https://github.com/didi/mpx',\r\n desc: 'Mpx 是一款致力于提高小程序开发体验的增强型小程序框架,通过 Mpx我们能够以最先进的 web 开发体验来开发生产性能深度优化的小程序。',\r\n url: 'https://didi.github.io/mpx/',\r\n logo: 'https://cdn.docschina.org/home/logo/mpx-logo.png',\r\n title: 'mpx'\r\n },\r\n {\r\n contribute: 'https://github.com/kaola-fed/megalo',\r\n desc: 'Megalo 是基于 VueVue@2.6.6 的小程序开发框架,让开发者可以用 Vue 的开发方式开发小程序应用。',\r\n url: 'https://megalojs.org/#/',\r\n logo: 'https://megalojs.org/static/megalo.png',\r\n title: 'megalo'\r\n },\r\n {\r\n contribute: 'https://github.com/didi/chameleon',\r\n desc: 'Chameleon/kəˈmiːlɪən/简写CML中文名卡梅龙中文意思变色龙意味着就像变色龙一样能适应不同环境的跨端整体解决方案。',\r\n url: 'https://cml.js.org/',\r\n logo: 'https://camo.githubusercontent.com/9a6e165b9188a8ac4e5173bc382688a418fad711/68747470733a2f2f636d6c2e6a732e6f72672f646f632f6173736574732f3130302a3130302e706e67',\r\n title: 'chameleon'\r\n },\r\n {\r\n contribute: 'https://github.com/dcloudio/uni-app',\r\n desc: '框架基于 Vue.js 核心mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为小程序开发引入了整套 Vue.js 开发体验。',\r\n url: 'https://uniapp.dcloud.io/',\r\n logo: 'https://img-cdn-qiniu.dcloud.net.cn/new-page/uni.png',\r\n title: 'uni-app'\r\n }],\r\n title: 'mini-program'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d56e41e13c2b',\r\n _updateTime: 1612264536260,\r\n type: 'Angular',\r\n children: [{\r\n desc: 'Material Design 组件库 for Angular',\r\n url: 'https://material.angular.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/angular.svg',\r\n title: 'Angular Material',\r\n repository: 'https://github.com/ng-docs/components'\r\n },\r\n {\r\n desc: 'Element UI 的 Angular 实现',\r\n url: 'https://element-angular.faas.ele.me/',\r\n logo: 'https://cdn.docschina.org/home/logo/element.svg',\r\n title: 'Element Angular',\r\n repository: 'https://github.com/ElemeFE/element-angular',\r\n team: '饿了么'\r\n },\r\n {\r\n desc: '基于 Angular 的移动端跨平台 UI',\r\n url: 'https://ionicframework.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/ionic.png',\r\n title: 'Ionic',\r\n repository: 'https://github.com/ionic-team/ionic'\r\n }],\r\n title: 'angular'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5706183e0bf',\r\n type: 'CSS',\r\n children: [{\r\n desc: 'Sass 是 CSS 的一个扩展,它使 CSS 的使用起来更加优雅和强大。',\r\n url: 'https://sass-guidelin.es/zh/',\r\n logo: 'https://cdn.docschina.org/home/logo/sass.svg',\r\n title: 'Sass'\r\n },\r\n {\r\n desc: 'Less 是 CSS 预处理语言,使 CSS 更易维护和扩展',\r\n url: 'http://lesscss.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/less.svg',\r\n title: 'Less'\r\n },\r\n {\r\n desc: '富有表现力、动态、健壮的 CSS',\r\n url: 'http://www.zhangxinxu.com/jq/stylus/',\r\n homeBackup: 'http://stylus-lang.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/stylus.svg',\r\n title: 'Stylus'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/postcss/blob/cn/Translation.md',\r\n desc: '通过 JavaScript 来转换 CSS并且提供强大的插件系统',\r\n url: 'http://postcss.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/postcss.svg',\r\n title: 'PostCSS'\r\n }],\r\n title: 'css'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5793d4545a7',\r\n type: '可视化工具',\r\n children: [{\r\n contribute: 'https://github.com/docschina/threejs.org',\r\n desc: 'JavaScript 3d 库',\r\n url: 'https://threejs.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/threejs.png',\r\n title: 'Threejs',\r\n repository: 'https://github.com/mrdoob/three.js'\r\n },\r\n {\r\n desc: '使用 JavaScript 实现的开源可视化库',\r\n url: 'http://echarts.baidu.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/echarts.png',\r\n title: 'ECharts',\r\n repository: 'https://github.com/ecomfe/echarts',\r\n team: '百度'\r\n },\r\n {\r\n desc: '跨平台的轻量级 2D 渲染对象模型',\r\n url: 'http://spritejs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/spritejs.png',\r\n title: 'SpriteJS',\r\n repository: 'https://github.com/spritejs/spritejs',\r\n team: '360'\r\n },\r\n {\r\n desc: '基于全新一代数据可视化解决方案 AntV',\r\n url: 'https://antv.alipay.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/antv.svg',\r\n title: 'AntV 可视化解决方案',\r\n repository: 'https://github.com/ecomfe/echarts',\r\n team: '阿里巴巴'\r\n },\r\n {\r\n desc: '一套基于可视化编码的图形语法,以数据驱动,具有高度的易用性和扩展性',\r\n url: 'https://antv.alipay.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/antv.svg',\r\n title: 'G2 可视化图形语法',\r\n repository: 'https://github.com/antvis/g2/',\r\n team: '阿里巴巴'\r\n },\r\n {\r\n desc: 'G6 是解决流程图和关系分析的图表库',\r\n url: 'https://antv.alipay.com/zh-cn/g6/1.x/index.html',\r\n logo: 'https://cdn.docschina.org/home/logo/antv.svg',\r\n title: 'G6 关系图类库',\r\n repository: 'https://github.com/antvis/g6/',\r\n team: '阿里巴巴'\r\n },\r\n {\r\n desc: '面向移动端的一套基于可视化图形语法的图表库,具有精简、高性能、易扩展的特性',\r\n url: 'https://antv.alipay.com/zh-cn/f2/3.x/index.html',\r\n logo: 'https://cdn.docschina.org/home/logo/antv.svg',\r\n title: 'F2 移动端图表库',\r\n repository: 'https://github.com/antvis/f2/',\r\n team: '阿里巴巴'\r\n },\r\n {\r\n desc: '一个遵循 Web 标准,用于可视化数据的 JavaScript 库',\r\n url: 'https://d3js.org.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/d3.svg',\r\n title: 'D3.js',\r\n repository: 'https://github.com/xswei/d3js_doc'\r\n },\r\n {\r\n desc: '基于 Vue 和 ECharts 封装的图表组件',\r\n url: 'https://v-charts.js.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'v-charts',\r\n repository: 'https://github.com/elemefe/v-charts',\r\n team: '饿了么'\r\n }],\r\n title: 'visualization'\r\n},\r\n{\r\n _createTime: 1611133617441,\r\n _id: '1526e12a6007f2b1002d9ab04359d927',\r\n _updateTime: 1616657640052,\r\n type: 'UmiJS 框架',\r\n children: [{\r\n desc: '可插拔的企业级 React 应用框架',\r\n url: 'https://umijs.org/',\r\n logo: '',\r\n title: 'UmiJS',\r\n repository: 'https://github.com/umijs/umi',\r\n team: '蚂蚁金服'\r\n },\r\n {\r\n desc: '基于 Umi 的场景化框架',\r\n url: 'https://alitajs.com/',\r\n logo: '',\r\n title: 'alita',\r\n repository: 'https://github.com/alitajs/alita'\r\n },\r\n {\r\n desc: '为微前端提供快速、简单和完整的解决方案',\r\n url: 'https://qiankun.umijs.org/',\r\n logo: '',\r\n title: 'qiankun',\r\n repository: 'https://github.com/umijs/qiankun',\r\n team: '蚂蚁金服'\r\n },\r\n {\r\n desc: 'React 组件文档生成工具',\r\n url: 'https://d.umijs.org/',\r\n logo: '',\r\n title: 'dumi',\r\n repository: 'https://github.com/umijs/dumi',\r\n team: '蚂蚁金服'\r\n },\r\n {\r\n desc: '零基础 UmiJS 入门教程',\r\n url: 'https://www.yuque.com/umijs/umi',\r\n logo: '',\r\n title: 'Umi 入门',\r\n repository: 'https://github.com/umijs/umi-course',\r\n team: '蚂蚁金服'\r\n }],\r\n title: 'umi'\r\n},\r\n{\r\n _createTime: 1611195580301,\r\n _id: '79550af26008e4bc004838e050c2c0c1',\r\n _updateTime: 1611205328048,\r\n type: 'ant design 系列',\r\n children: [{\r\n desc: '企业级的 UI 设计语言和 React 实现',\r\n url: 'https://ant.design/',\r\n logo: 'https://cdn.docschina.org/home/logo/antdesign.svg',\r\n title: 'Ant Design',\r\n repository: 'https://github.com/ant-design/ant-design'\r\n },\r\n {\r\n desc: '开箱即用的中台前端/设计解决方案',\r\n url: 'https://pro.ant.design/',\r\n logo: 'https://cdn.docschina.org/home/logo/antdesign.svg',\r\n title: 'Ant Design Pro',\r\n repository: 'https://github.com/ant-design/ant-design-pro',\r\n team: '阿里巴巴'\r\n },\r\n {\r\n desc: '一个基于 Preact / React / React Native 的 UI 组件库',\r\n url: 'https://mobile.ant.design/',\r\n logo: 'https://cdn.docschina.org/home/logo/antdesign.svg',\r\n title: 'Ant Design Mobile',\r\n repository: 'https://github.com/ant-design/ant-design-mobile'\r\n },\r\n {\r\n desc: 'Ant Design 的 Vue 实现',\r\n url: 'https://antdv.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/antdesign.svg',\r\n title: 'Ant Design Vue',\r\n repository: 'https://github.com/vueComponent/ant-design-vue'\r\n },\r\n {\r\n desc: '开箱即用的中台前端/设计解决方案',\r\n url: 'https://pro.antdv.com/',\r\n logo: 'https://pro.antdv.com/logo.png',\r\n title: 'Ant Design Pro Vue',\r\n repository: 'https://github.com/vueComponent/ant-design-vue-pro'\r\n },\r\n {\r\n desc: 'Ant Design 的 Angular 实现',\r\n url: 'https://ng.ant.design/',\r\n logo: 'https://cdn.docschina.org/home/logo/NG-ZORRO.svg',\r\n title: 'NG-ZORRO',\r\n repository: 'https://github.com/NG-ZORRO/ng-zorro-antd'\r\n },\r\n {\r\n desc: 'Ant Design Mobile 的 Angular 实现',\r\n url: 'http://ng.mobile.ant.design/',\r\n logo: 'https://cdn.docschina.org/home/logo/NG-ZORRO.svg',\r\n title: 'NG-ZORRO-MOBILE',\r\n repository: 'https://github.com/NG-ZORRO/ng-zorro-antd-mobile'\r\n },\r\n {\r\n desc: '基于 ng-zorro-antd 的中台前端解决方案',\r\n url: 'http://ng-alain.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/ng-alain.svg',\r\n title: 'ng-alain',\r\n repository: 'https://github.com/cipchk/ng-alain/'\r\n },\r\n {\r\n contribute: 'https://github.com/ant-design/ant-ux',\r\n desc: '用于 OG, Sketch,Axure,Affinity,Adobe XD 等 UX 的 sitemap 模板',\r\n url: 'https://ux.ant.design/',\r\n logo: 'https://cdn.docschina.org/home/logo/antdesign.svg',\r\n title: 'Ant UX'\r\n },\r\n {\r\n contribute: 'https://github.com/react-component',\r\n desc: 'ant design 内部使用的 React 基础组件',\r\n url: 'http://react-component.github.io/badgeboard/',\r\n logo: 'https://cdn.docschina.org/home/logo/antdesign.svg',\r\n title: 'react-component'\r\n }]\r\n}]\r\n","<template>\r\n <el-dialog custom-class=\"my-dialog\" title=\"新增书签\" :visible=\"isDetailVisible\" width=\"758px\">\r\n <el-form status-icon ref=\"refruleForm\" :rules=\"rules\" :model=\"ruleForm\" label-width=\"100px\" size=\"small\">\r\n <el-row :gutter=\"20\">\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"书签名称\" prop=\"title\">\r\n <el-input v-model=\"ruleForm.title\" placeholder=\"请输入书签名称\"></el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"书签类别\" prop=\"type\">\r\n <el-select v-model=\"ruleForm.type\" placeholder=\"请选择书签类别\" style=\"width:100%\">\r\n <el-option v-for=\"(item,index) in BOOKMARK\" :value=\"item\" :key=\"index\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"LOGO地址\" prop=\"logo\">\r\n <el-input v-model=\"ruleForm.logo\" placeholder=\"请输入LOGO地址\"></el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"访问地址\" prop=\"url\">\r\n <el-input v-model=\"ruleForm.url\" placeholder=\"请输入访问绝对地址\"></el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"书签描述\" prop=\"desc\">\r\n <el-input type=\"textarea\" clearable placeholder=\"请输入书签描述\" v-model=\"ruleForm.desc\" />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <template #footer>\r\n <span class=\"dialog-footer\">\r\n <el-button @click=\"closeViews\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"submitForm\">确 定</el-button>\r\n </span>\r\n </template>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport gsap from 'gsap'\r\nimport { reactive, ref, toRefs } from '@vue/reactivity'\r\nimport { nextTick, watch } from '@vue/runtime-core'\r\nimport { ElMessage } from 'element-plus'\r\nexport default {\r\n model: {\r\n value: 'isDetailVisible',\r\n events: 'closeViews'\r\n },\r\n props: {\r\n isDetailVisible: {\r\n type: Boolean,\r\n default: false\r\n },\r\n selectType: {\r\n type: Number,\r\n default: 0\r\n },\r\n detail: {\r\n type: Object,\r\n default: () => {}\r\n }\r\n },\r\n setup(props, context) {\r\n const isBOOKMARK = JSON.parse(localStorage.getItem('BOOKMARK'))\r\n const BOOKMARK = isBOOKMARK ? isBOOKMARK.map((v) => v.type) : []\r\n const form = reactive({\r\n ruleForm: {\r\n title: '',\r\n type: '',\r\n desc: '',\r\n url: '',\r\n logo: ''\r\n }\r\n })\r\n // 定义校验规则 表单代码中必须以 :rules 接收\r\n const rules = {\r\n title: [{ required: true, message: '请输入书签名称', trigger: 'blur' }],\r\n type: [{ required: true, message: '请选择书签类别', trigger: 'change' }]\r\n }\r\n const refruleForm = ref(null)\r\n // 确定按钮的格式\r\n const submitForm = () => {\r\n refruleForm.value.validate((valid) => {\r\n if (valid) {\r\n const myData = isBOOKMARK.map((v) => {\r\n const myDetail = { ...props.detail }\r\n const formData = { ...form.ruleForm }\r\n if (props.detail.flag === 'modify') {\r\n // 分类没有变\r\n if (myDetail.type === formData.type && v.type === formData.type) {\r\n const sIndex = v.children.findIndex(\r\n (d) => d.title === myDetail.title\r\n )\r\n if (sIndex > -1) {\r\n v.children[sIndex] = formData\r\n ElMessage.success('编辑成功')\r\n }\r\n } else if (myDetail.type !== formData.type) {\r\n // 更改了分类\r\n // 当前分类删除该数据\r\n if (myDetail.type === v.type) {\r\n const pindex = v.children.findIndex(p => p.title === myDetail.title)\r\n v.children.splice(pindex, 1)\r\n }\r\n // 新分类添加该分类\r\n if (formData.type === v.type) {\r\n v.children.push(formData)\r\n ElMessage.success('编辑成功')\r\n }\r\n }\r\n } else {\r\n // 新增书签\r\n console.log('---?')\r\n if (v.type === formData.type) {\r\n v.children.push(formData)\r\n ElMessage.success('新增成功')\r\n }\r\n }\r\n return v\r\n })\r\n localStorage.setItem('BOOKMARK', JSON.stringify(myData))\r\n context.emit('fresh')\r\n closeViews()\r\n }\r\n })\r\n }\r\n // 关闭弹窗\r\n function closeViews() {\r\n refruleForm.value.resetFields()\r\n context.emit('closeViews', false)\r\n }\r\n // 修改书签\r\n watch(\r\n () => props.detail,\r\n (v) => {\r\n if (v) {\r\n nextTick(() => {\r\n form.ruleForm = { ...props.detail }\r\n })\r\n }\r\n },\r\n { deep: true }\r\n )\r\n return {\r\n ...toRefs(form),\r\n closeViews,\r\n submitForm,\r\n refruleForm,\r\n rules,\r\n BOOKMARK\r\n }\r\n },\r\n methods: {\r\n beforeEnter(el) {\r\n el.style.opacity = 0\r\n el.style.height = 0\r\n },\r\n enter(el, done) {\r\n gsap.to(el, {\r\n opacity: 1,\r\n height: '1.6em',\r\n delay: el.dataset.index * 0.15,\r\n onComplete: done\r\n })\r\n },\r\n leave(el, done) {\r\n gsap.to(el, {\r\n opacity: 0,\r\n height: 0,\r\n delay: el.dataset.index * 0.15,\r\n onComplete: done\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.my-dialog {\r\n background: red;\r\n}\r\n.my-dialog /deep/.el-dialog__header {\r\n border-bottom: 1px solid #eee !important;\r\n}\r\n.my-dialog /deep/.el-dialog__title {\r\n font-size: 16px;\r\n color: #e03b5d;\r\n}\r\n</style>\r\n","import { render } from \"./Dialog.vue?vue&type=template&id=54377395&scoped=true\"\nimport script from \"./Dialog.vue?vue&type=script&lang=js\"\nexport * from \"./Dialog.vue?vue&type=script&lang=js\"\n\nimport \"./Dialog.vue?vue&type=style&index=0&id=54377395&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-54377395\"\n\nexport default script","import { render } from \"./App.vue?vue&type=template&id=4ac8bbb4&scoped=true\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=4ac8bbb4&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-4ac8bbb4\"\n\nexport default script","import { createApp } from 'vue'\r\nimport App from './App.vue'\r\n\r\nimport ElementPlus from 'element-plus'\r\nimport 'element-plus/lib/theme-chalk/index.css'\r\n\r\nconst app = createApp(App)\r\napp.use(ElementPlus)\r\napp.mount('#app')\r\n","module.exports = __webpack_public_path__ + \"img/github.3f137925.svg\";","module.exports = __webpack_public_path__ + \"img/logo.f38dc2e8.svg\";","module.exports = __webpack_public_path__ + \"img/add.ca18f050.svg\";","module.exports = __webpack_public_path__ + \"img/gitee.8160b75c.svg\";","module.exports = __webpack_public_path__ + \"img/blog.f57ba53d.svg\";","module.exports = __webpack_public_path__ + \"img/file.807fb7b5.svg\";"],"sourceRoot":""}