@abtnode/blocklet-services 1.8.29 → 1.8.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/api/util/index.js +5 -0
  2. package/build/asset-manifest.json +15 -15
  3. package/build/index.html +1 -1
  4. package/build/static/js/123.10121a8b.chunk.js +2 -0
  5. package/build/static/js/123.10121a8b.chunk.js.map +1 -0
  6. package/build/static/js/{301.b7595d83.chunk.js → 301.af995050.chunk.js} +2 -2
  7. package/build/static/js/{301.b7595d83.chunk.js.map → 301.af995050.chunk.js.map} +1 -1
  8. package/build/static/js/628.d4e71027.chunk.js +2 -0
  9. package/build/static/js/628.d4e71027.chunk.js.map +1 -0
  10. package/build/static/js/662.c7459a64.chunk.js +2 -0
  11. package/build/static/js/662.c7459a64.chunk.js.map +1 -0
  12. package/build/static/js/737.4a50663c.chunk.js +2 -0
  13. package/build/static/js/737.4a50663c.chunk.js.map +1 -0
  14. package/build/static/js/972.d95ade37.chunk.js +2 -0
  15. package/build/static/js/972.d95ade37.chunk.js.map +1 -0
  16. package/build/static/js/main.8ba21778.js +3 -0
  17. package/build/static/js/{main.4c9ee3b9.js.LICENSE.txt → main.8ba21778.js.LICENSE.txt} +0 -0
  18. package/build/static/js/main.8ba21778.js.map +1 -0
  19. package/package.json +21 -21
  20. package/build/static/js/123.668a8915.chunk.js +0 -2
  21. package/build/static/js/123.668a8915.chunk.js.map +0 -1
  22. package/build/static/js/628.75a0e640.chunk.js +0 -2
  23. package/build/static/js/628.75a0e640.chunk.js.map +0 -1
  24. package/build/static/js/662.21fa717a.chunk.js +0 -2
  25. package/build/static/js/662.21fa717a.chunk.js.map +0 -1
  26. package/build/static/js/737.60028868.chunk.js +0 -2
  27. package/build/static/js/737.60028868.chunk.js.map +0 -1
  28. package/build/static/js/972.2ceb65ce.chunk.js +0 -2
  29. package/build/static/js/972.2ceb65ce.chunk.js.map +0 -1
  30. package/build/static/js/main.4c9ee3b9.js +0 -3
  31. package/build/static/js/main.4c9ee3b9.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/301.b7595d83.chunk.js","mappings":"seASe,SAASA,EAAQ,GAAa,IAAXC,EAAM,EAANA,OAChC,GAAsBC,EAAAA,EAAAA,oBAAdC,EAAC,EAADA,EAAGC,EAAM,EAANA,OACX,GAAyBC,EAAAA,EAAAA,MAAjBC,EAAG,EAAHA,IAAKC,EAAO,EAAPA,QAEPC,EAAS,yCAAG,WAAOC,EAAQC,GAAO,sEACQ,OAA9CC,EAAAA,EAAAA,IAAgBD,EAAQD,EAAOG,eAAe,kBAEtCL,EAAQM,UAAU,KAAD,EACvBZ,IAAS,gDAETa,EAAAA,QAAAA,MAAY,KAAIC,SAAS,yDAE5B,gBARc,wCAUf,OACE,SAACC,EAAW,CACVC,OAAK,EACLC,MAAI,EACJC,iBAAe,EACfC,OAAO,QACPC,QAASf,EAAIgB,IACbC,aAAc,IACdC,UAAWlB,EAAIkB,UACfC,cAAcC,EAAAA,EAAAA,MACdC,UAAWnB,EACXJ,OAAQA,EACRwB,SAAU,CACRC,MAAO1B,EAAE,uBACT2B,KAAM3B,EAAE,sBACR4B,QAAS5B,EAAE,yBACX6B,QAAS7B,EAAE,0BAEb8B,YAAa,CAAEC,OAAO,IAG5B,CAMAlC,EAAQmC,aAAe,CACrBlC,OAAQ,WAAO,GAGjB,I,MAAMe,GAAcoB,EAAAA,EAAAA,SAAOC,EAAAA,QAAPD,CAAkB,0E,oJClBtC,GAhCkBA,EAAAA,EAAAA,SAAOE,EAAAA,EAAPF,CAAqB,2hBAInC,SAACG,GAAK,OAAKA,EAAMC,MAAMC,YAAYC,GAAG,KAAK,IAOzC,SAACH,GAAK,OAAKA,EAAMC,MAAMC,YAAYC,GAAG,KAAK,I,WCNlC,SAASC,EAAY,GAA+C,IAA7CC,EAAQ,EAARA,SAAUC,EAAU,EAAVA,WAAYC,EAAQ,EAARA,SAAUC,EAAQ,EAARA,SAC5D5C,GAAMD,EAAAA,EAAAA,oBAANC,EAER,OAAKyC,IAAYI,EAAAA,EAAAA,IAAiBJ,EAASK,OAClC,SAACC,EAAM,UAAEJ,KAIhB,UAACK,GAAO,YACN,SAACC,EAAA,QAAM,CACLC,UAAU,YACVC,QAAQ,YACRC,MAAM,UACNR,SAAUA,EACVS,QAAS,kBAAMX,GAAY,EAAC,SAC3B1C,EAAE,qBAEL,SAACsD,EAAA,EAAG,CAACC,QAAQ,OAAOC,WAAW,SAAQ,SACpCb,MAIT,CAQAH,EAAYR,aAAe,CACzBS,SAAU,KACVC,WAAY,WAAO,EACnBC,SAAU,KACVC,UAAU,GAGZ,IAAMG,GAASd,EAAAA,EAAAA,SAAOqB,EAAAA,EAAPrB,CAAW,wOAQtB,SAACG,GAAK,OAAKA,EAAMC,MAAMC,YAAYmB,KAAK,KAAK,IAO3CT,IAAUf,EAAAA,EAAAA,SAAOqB,EAAAA,EAAPrB,CAAW,waAcvB,SAACG,GAAK,OAAKA,EAAMC,MAAMC,YAAYmB,KAAK,KAAK,IAI7C,SAACrB,GAAK,OAAKA,EAAMC,MAAMC,YAAYmB,KAAK,KAAK,I,YC7ElC,SAASC,GAAa,GAAe,IAAVtB,EAAK,kCAC7C,OAAO,SAACa,EAAA,SAAM,QAACC,UAAU,gBAAgBC,QAAQ,YAAYC,MAAM,WAAchB,GACnF,C,iCCoBe,SAASuB,GAAO,GAAyB,IAAvB7D,EAAM,EAANA,OAAQ8D,EAAU,EAAVA,WACjCC,GAAWC,EAAAA,EAAAA,IAAc,SAACzB,GAAK,OAAKA,EAAMC,YAAYmB,KAAK,KAAK,IAC9DzD,GAAMD,EAAAA,EAAAA,oBAANC,EACR,GAA8B+D,EAAAA,EAAAA,WAAS,GAAM,eAAtCC,EAAO,KAAEC,EAAU,KAC1B,GAAsCF,EAAAA,EAAAA,UAAS,MAAK,eAA7CG,EAAW,KAAEC,EAAc,KAClC,GAA8BC,EAAAA,EAAAA,MAAtB3B,EAAQ,EAARA,SAAU4B,EAAO,EAAPA,QAEZC,GAAe7B,EAAS8B,SAAW,IAAIC,QAAO,SAACC,GAAC,OAAMC,EAAAA,0BAA0BD,EAAEE,IAAI,IACtFC,EAAcnC,EAASoC,aAAaC,MAAK,SAACL,GAAC,MAAe,4BAAVA,EAAEE,GAAiC,IAEnFI,EAAmB,CACvB,CACEJ,IAAKD,EAAAA,0BAAAA,kBACLM,YAAahF,EAAE,wBACfiF,MAAOxC,EAASoC,aAAaC,MAAK,SAACL,GAAC,MAAe,sBAAVA,EAAEE,GAA2B,IAAEM,MACxEC,QAAQ,GAEV,CACEP,IAAKD,EAAAA,0BAAAA,yBACLM,YAAahF,EAAE,+BACfiF,MAAOxC,EAASoC,aAAaC,MAAK,SAACL,GAAC,MAAe,6BAAVA,EAAEE,GAAkC,IAAEM,MAC/EC,QAAQ,GAEV,CACEP,IAAKD,EAAAA,0BAAAA,wBACLM,YAAahF,EAAE,iCACfiF,MAAOL,EAAcA,EAAYK,MAAQ,OACzCC,QAAQ,EACRC,cAAe,WACfC,eAAgB,CACd3C,SAAAA,KAKA4C,EAAkB,IACxBC,EAAAA,EAAAA,kBAAiB7C,GAAU,SAAC8C,EAAE,GAAoB,IAC1CC,EADkC,EAATC,UACAC,MAAM,GAAGC,KAAI,SAAClB,GAAC,OAAKA,EAAE3B,KAAK8C,GAAG,IAE7DP,EAAgBQ,MAAMN,EAAEhB,SAAW,IAAIoB,KAAI,SAAClB,GAAC,yBAAWA,GAAC,IAAEqB,SAAUN,EAAaO,OAAOR,EAAEzC,KAAK8C,MAAI,IACtG,IAEA,IAEMI,EAFkBC,IAAOC,IAAQ,GAAD,eAAK5B,GAAgBe,IAAmB,OAAOb,QAAO,SAACC,GAAC,QAAOA,EAAEE,GAAG,IAErEwB,MAAK,SAACC,EAAGb,GAC5C,OAAIa,EAAEC,WAAad,EAAEc,UACX,EAGNd,EAAEc,WAAaD,EAAEC,SACZ,EAGF,CACT,IAEMC,GAAyBC,EAAAA,EAAAA,sBAAqB9D,GAAU+D,OAExDC,EAAc,yCAAG,WAAOxB,GAAK,gFAYd,OAXXa,EAAwB5B,EAAxB4B,SAAaY,GAAM,OAAKxC,EAAW,IAErCK,EAAU,EAAC,kBAGVoC,IAAKD,EAAQ,CAAC,gBAAiB,oBAAkB,IACpDzB,MAAAA,KAEF,EAAD,OAGChB,GAAW,GAAM,SACXI,EAAQuC,eAAe,CAC3BrC,QAAAA,EACAuB,SAAAA,IACC,KAAD,kDAEFnF,EAAAA,QAAAA,MAAY,KAAIC,SAAS,QAEP,OAFO,UAEzBqD,GAAW,GAAO,4EAErB,gBAtBmB,sCAwBd4C,EAAe,CAAC,EAEhBC,EAAa,UAAI/B,GAAiB,OAAIiB,IAAcL,KAAI,SAACoB,GAC7D,IAAQ9B,EAAmB8B,EAAnB9B,MAAU+B,GAAI,OAAKD,EAAI,IAE/B,OADAF,EAAaE,EAAKpC,KAAOM,GAClB,UACF+B,EAEP,IAMA,OACE,UAAC,EAAM,YACL,gBAAK9D,UAAU,SAAS+D,MAAO,CAAEC,aAAc,IAAK,UAClD,SAAC,IAAU,CAACxF,MAAO1B,EAAE,sBAAuBmH,SAAUnH,EAAE,yBAA0BoH,YAPtE,WAChBxD,GACF,OAOI,gBAAKV,UAAU,iBAAgB,UAC7B,gBAAKA,UAAU,kBAAiB,UAC9B,SAAC,IAAa,CACZmE,QACE,SAAC7E,EAAW,CACV8E,GAAI,EACJ1E,SAAUoB,GAAWE,EACrBzB,SAAUA,EACVC,WAAY,kBAAM5C,EAAO,WAAW,EAAC,UACrC,SAACwD,EAAA,EAAG,CAACC,QAAQ,OAAOC,WAAW,SAAQ,UACrC,SAAC,GAAM,CACLZ,SAAUoB,GAAWsC,GAA0BpC,EAC/Cb,QAAS,WACPgB,EAAQkD,YAAY,CAAEC,WAAW,IACjC1H,GACF,EAAE,SACDE,EAAE,oBAIV,UACD,SAAC,UAAU,CACTiH,MAAO,CAAEQ,OAAQ,cAAeC,WAAY7D,EAAW,EAAI,IAC3DG,QAASA,EACT2D,OAAQb,EACRD,aAAcA,EACde,SAAU,SAACC,EAAY,GAA8B,IAA3B5G,EAAM,EAANA,OAAQ6G,EAAW,EAAXA,YACjB,SAAX7G,EACFkD,EAAe2D,GACN,CAAC,SAAU,WAAWC,SAAS9G,IACxCkD,EAAe,MAEF,YAAXlD,GACFwF,EAAeoB,EAAYC,EAAYnD,KAE3C,YAOd,CAOAhB,GAAO3B,aAAe,CACpBlC,OAAQ,WAAO,EACf8D,WAAY,WAAO,G,mEC1JfoE,GAAmB,SAACC,GAAI,MAAK,CAAC,UAAW,WAAY,cAAcF,SAAa,OAAJE,QAAI,IAAJA,OAAI,EAAJA,EAAMC,OAAQ,EAE1FC,GAAc,SAACC,GAAM,OACzB,IAAIC,SAAQ,SAACC,EAASC,GACpB,IAAMC,EAAQC,aAAW,uBAAC,oHAECC,GAAAA,EAAAA,wBAA+B,CAAEC,MAAO,CAAEP,OAAAA,KAAY,KAAD,EAAhE,GAAgE,SAEvD,eAAb,QAFAH,EAAI,EAAJA,YAEA,IAAJA,OAAI,EAAJA,EAAMC,QAAsB,gBAEhB,OADdU,cAAcJ,GACdF,GAAQ,GAAM,0BAIXN,GAAiBC,KACpBW,cAAcJ,GACdF,GAAQ,IACT,kDAEDM,cAAcJ,GACdD,EAAO,EAAD,IAAM,0DAEb,IACL,GAAG,EAECM,GAAO,yCAAG,WAAOT,GAAM,sFACrBM,GAAAA,EAAAA,qBAA4B,CAAEC,MAAO,CAAEP,OAAAA,KAAY,KAAD,2BACjDD,GAAYC,IAAO,2CAC3B,gBAHY,sCAKE,SAASU,GAAO,GAAyB,IAAD,EAAtBhJ,EAAM,EAANA,OAAQ8D,EAAU,EAAVA,WACvC,GAAsBmF,EAAAA,EAAAA,YAAWC,EAAAA,eAAzBhJ,EAAC,EAADA,EAAGC,EAAM,EAANA,OACX,GAAsC8D,EAAAA,EAAAA,UAAS,IAAG,eAA3CkF,EAAW,KAAEC,EAAc,KAClC,GAA0BnF,EAAAA,EAAAA,WAAS,GAAM,eAAlCoF,EAAK,KAAEC,EAAQ,KACd3G,GAAa2B,EAAAA,EAAAA,MAAb3B,SACR,GAAoBsB,EAAAA,EAAAA,UAAS,IAAG,eAAzBsF,EAAE,KAAEC,EAAK,KAChB,GAA4CvF,EAAAA,EAAAA,WAAS,GAAM,eAApDwF,EAAc,KAAEC,EAAiB,KAGlCC,IADe,OAARhH,QAAQ,IAARA,OAAQ,EAARA,EAAUiH,OAAQ,CAAC,GACXC,eAAiB,GAChCC,GAA8D,QAAxC,EAAAH,EAAQjF,QAAO,SAACC,GAAC,OAAMA,EAAEoF,WAAW,IAAE,UAAE,aAAxC,EAA0C5E,QAAS,GACzE6E,EAAgBL,EAAQjF,QAAO,SAACC,GAAC,OAAKA,EAAEoF,WAAW,IAAElE,KAAI,SAAClB,GAAC,OAAKsF,EAAAA,EAAAA,iBAAgBtF,EAAEQ,MAAOoE,EAAG,IAClG,GAA4BtF,EAAAA,EAAAA,UAAS6F,GAAoB,eAAlDxB,EAAM,KAAE4B,EAAS,KAElBC,EAAS,yCAAG,WAAOC,GAAM,sEACkB,OAA/ChB,EAAelJ,EAAE,8BAA8B,UACzCmK,EAAAA,GAAAA,OAAM,MAAM,KAAD,KACZV,EAAQW,MAAK,SAAC3F,GAAC,OAAKA,EAAEQ,QAAUmD,CAAM,IAAE,CAAD,+BACpCM,GAAAA,EAAAA,eAAsB,CAAEC,MAAO,CAAE0B,GAAI5H,EAASiH,KAAKW,GAAIC,YAAalC,KAAY,KAAD,kBAC/EM,GAAAA,EAAAA,oBAA2B,CAC/BC,MAAO,CAAE4B,QAAQ,EAAO3J,QAAQ,cAAD,OAAgBwH,EAAM,8BACpD,KAAD,mBAEEM,GAAAA,EAAAA,eAAsB,CAC1BC,MAAO,CACL/C,IAAK,CAACnD,EAASK,KAAK8C,KACpBrB,QAAS,CAAC,CAAEI,IAAKD,EAAAA,0BAAAA,iBAA4CO,MAAM,OAAD,OAASiF,EAAS,IAAM,GAAE,cAAM9B,QAEnG,KAAD,GACFtI,IAAS,4CACV,gBAhBc,sCAkBT0K,EAAY,yCAAG,qGACfvB,EAAY,CAAD,gDAKwC,OALxC,SAKbC,EAAelJ,EAAE,oCAAoC,UAC/CmK,EAAAA,GAAAA,OAAM,MAAM,KAAD,kBAGPhK,GAAAA,EAAAA,IAAQ,yBAAD,OAA0BiI,IAAU,KAAD,EADnC,GACmC,SAD1CqC,EAAO,EAAfC,KAAQD,QAEG,CAAD,sBACJ,IAAIE,MAAM3K,EAAE,6BAA8B,CAAEoI,OAAAA,KAAW,KAAD,MAG1DqC,IAAYpB,EAAE,uBACV,IAAIsB,MAAM3K,EAAE,oCAAqC,CAAEoI,OAAAA,EAAQwC,UAAWC,OAAOC,SAASC,YAAa,KAAD,GAIrF,OADrB7B,EAAelJ,EAAE,4BACbgL,GAAY,EAAM,EAAD,QACEtC,GAAAA,EAAAA,wBAA+B,CAAEC,MAAO,CAAEP,OAAAA,KAAY,KAAD,GAAhE,GAAgE,SAApEH,EAAI,EAAJA,KACE,CAAD,iCACWY,GAAQT,EAAQnI,GAAQ,KAAD,GAAzC+K,EAAS,kCACgB,cAAhB/C,EAAKC,OAAsB,iBACpC8C,GAAY,EAAK,4BACR,CAAC,UAAW,WAAY,cAAcjD,SAASE,EAAKC,QAAQ,CAAD,iCAClDC,GAAYC,GAAgB,KAAD,GAA7C4C,EAAS,gDAESnC,GAAQT,EAAQnI,GAAQ,KAAD,GAAzC+K,EAAS,eAGPA,EACFf,EAAUe,GAEVxB,GAAkB,GACnB,kDAED7I,EAAAA,QAAAA,MAAY,KAAIC,SAChBsI,EAAe,IAAI,0DAEtB,kBAzCiB,mCAsDlB,OAXA+B,EAAAA,EAAAA,YAAU,WACR9K,GAAAA,EAAAA,IACO,yBAAD,OAA0B0K,OAAOC,SAASC,WAC7CG,MAAK,YAAe,IAAZR,EAAI,EAAJA,KACPpB,EAAMoB,EAAKD,SAAW,GACxB,IACCU,OAAM,SAACC,GACNC,QAAQlC,MAAMiC,EAAIxK,QACpB,GACJ,GAAG,KAGD,UAAC,GAAS,YACR,gBAAKsC,UAAU,SAAQ,UACrB,SAAC,IAAU,CAACxB,MAAO1B,EAAE,sBAAuBmH,SAAUnH,EAAE,yBAA0BoH,YAAaxD,MAEhG2F,IACC,SAAC+B,GAAA,QAAM,CACLC,WAAY,CACVtE,MAAO,CACLuE,UAAW,SAGfzK,KAAMwI,EACNkC,iBAAiB,EACjB/J,MAAO1B,EAAE,8BACTqE,SACE,iCACE,SAAC,GAAM,CACLjB,MAAM,UACND,QAAQ,OACRE,QAAS,WACP6F,EAAe,IACfM,GAAkB,EACpB,EAAE,SACDxJ,EAAE,mBAEL,SAAC,GAAM,CACLoD,MAAM,UACND,QAAQ,OACRE,QAAS,WACPmG,GAAkB,GAClBS,GAAU,EACZ,EAAE,SACDjK,EAAE,sBAGR,SACAA,EAAE,kCAGP,UAACsD,EAAA,EAAG,CAACJ,UAAU,OAAM,WACnB,UAACI,EAAA,EAAG,YACF,UAACA,EAAA,EAAG,CAACoI,GAAI,EAAGtI,MAAM,eAAeuI,WAAW,iBAAgB,WAC1D,SAACrI,EAAA,EAAG,CAACC,QAAQ,SAAQ,SAAEvD,EAAE,6BACzB,SAAC,GAAM,CACLmD,QAAQ,OACRyI,KAAK,QACLhJ,WAAYqG,EACZ5F,QAAS,kBAAMvD,GAAQ,EACvBmH,MAAO,CAAES,WAAY,GAAI,UACzB,iBAAMT,MAAO,CAAE4E,eAAgB,aAAc,SAAE7L,EAAE,0BAEnD,SAACsD,EAAA,EAAG,CAACC,QAAQ,SAAQ,SAAEvD,EAAE,6BAE1B8J,EAAcnE,KAAI,SAAClB,GAAC,OACnB,SAACnB,EAAA,EAAG,CAACwI,UAAU,KAAKH,WAAW,iBAAiBvI,MAAM,eAAc,SACjEqB,GACG,KAER,SAACnB,EAAA,EAAG,CAACgE,GAAI,EAAGqE,WAAW,iBAAiBvI,MAAM,iBAAgB,SAC3DpD,EAAE,2BAEL,SAACsD,EAAA,EAAG,QAGN,SAACA,EAAA,EAAG,CAACgE,GAAI,EAAGqE,WAAW,iBAAgB,SACpC3L,EAAE,4BAEL,SAAC+L,GAAA,EAAS,CACR9E,MAAO,CAAE+E,UAAW,GAAIR,UAAW,IACnCS,MAAOjM,EAAE,sBACTkM,WAAS,EACTjH,MAAOmD,EACPR,SAAU,SAACuE,GACT,IAAQlH,EAAUkH,EAAEC,OAAZnH,MACR+E,EAAU/E,GACV,IAAMoH,GAAaC,EAAAA,GAAAA,gBAAerH,EAAOhF,GACzCmJ,EAASiD,EACX,EACAE,WAAS,EACTX,KAAK,QACLzI,QAAQ,WACRgG,QAASA,EACTqD,WAAYrD,IAGbf,IACC,UAAC9E,EAAA,EAAG,CAACF,MAAM,iBAAgB,WACzB,UAACE,EAAA,EAAG,CAACC,QAAQ,OAAM,UAChBvD,EAAE,0BACH,SAACsD,EAAA,EAAG,CAACmJ,GAAI,GAAKrJ,MAAM,eAAeuI,WAAW,iBAAgB,SAC3DvD,IAEFpI,EAAE,2BAEL,UAACsD,EAAA,EAAG,CAACwI,UAAU,KAAI,UAChB9L,EAAE,2BAA0B,IAAG,KAChC,SAACsD,EAAA,EAAG,CAACC,QAAQ,SAASoI,WAAW,iBAAiBvI,MAAM,eAAc,mBAIxE,UAACE,EAAA,EAAG,CAACwI,UAAU,KAAI,UAChB9L,EAAE,4BAA2B,IAAG,KACjC,SAACsD,EAAA,EAAG,CAACC,QAAQ,SAASoI,WAAW,iBAAiBvI,MAAM,eAAc,SACnEiG,cAMX,SAAC7G,EAAW,CAAC8E,GAAI,EAAG1E,WAAYqG,EAAaxG,SAAUA,EAAUC,WAAY,kBAAM5C,EAAO,WAAW,EAAC,SAClGsI,GAKA,SAAC,GAAM,CAACpE,UAAWiF,EAAarG,SAAUuG,KAAWF,IAAgBb,EAAQ/E,QAAS,kBAAMmH,GAAc,EAAC,SACxGvB,GAAejJ,EAAE,iBALpB,SAAC,GAAM,CAACmD,QAAQ,WAAWP,WAAYqG,EAAa5F,QAAS,kBAAMvD,GAAQ,EAAC,SACzEE,EAAE,oBAUf,CAMA8I,GAAO9G,aAAe,CACpBlC,OAAQ,WAAO,EACf8D,WAAY,WAAO,GAGrB,IAAM8I,IAAYzK,EAAAA,EAAAA,SAAO0K,EAAP1K,CAAc,oKAM1B,SAACG,GAAK,OAAKA,EAAMC,MAAMC,YAAYmB,KAAK,KAAK,I,uHC9QnD,SAASmJ,GAAe,GAAe,IAAbjK,EAAQ,EAARA,SAChB3C,GAAMD,EAAAA,EAAAA,oBAANC,EACR,OACE,iBAAKiH,MAAO,CAAE1D,QAAS,OAAQC,WAAY,UAAW,UACnDb,GACD,SAACkK,GAAA,EAAO,CAACnL,MAAO1B,EAAE,4CAA4C,UAC5D,SAAC8M,GAAA,EAAU,WACT,SAACC,GAAA,QAAgB,CAACC,SAAS,gBAKrC,CAKA,I,GAAA,IAAeC,EAAAA,EAAAA,MAAKL,ICGL,SAASM,GAAc,GAAa,IAAXpN,EAAM,EAANA,OAChCuC,GAAQ8K,EAAAA,GAAAA,WACd,GAAsBpN,EAAAA,EAAAA,oBAAdC,EAAC,EAADA,EAAGC,EAAM,EAANA,OACX,GAA8B8D,EAAAA,EAAAA,WAAS,GAAM,eAAtCC,EAAO,KAAEC,EAAU,KAC1B,GAA0BF,EAAAA,EAAAA,UAAS,IAAG,eAA/BkB,EAAK,KAAEmI,EAAQ,KACtB,GAA0CrJ,EAAAA,EAAAA,WAAS,GAAM,eAAlDsJ,EAAa,KAAEC,EAAgB,KACtC,GAAiDlJ,EAAAA,EAAAA,MAAzC3B,EAAQ,EAARA,SAAU4B,EAAO,EAAPA,QAASkJ,EAAiB,EAAjBA,mBAE3BtC,EAAAA,EAAAA,YAAU,WACRmC,GAASI,EAAAA,EAAAA,iBAAgB/K,IACzB6K,EAAiBC,EAAkB9K,GACrC,GAAG,CAACA,IAEJ,IAAMgL,EAAM,yCAAG,WAAOC,GAAY,sEAEb,OAFa,SAE9BzJ,GAAW,GAAM,UACXkG,EAAAA,GAAAA,OAAM,KAAK,KAAD,kBACV9F,EAAQsJ,mBAAmBD,GAAc,KAAD,EAC9CzJ,GAAW,GAAO,gDAElBA,GAAW,GACXtD,EAAAA,QAAAA,MAAY,KAAIC,SAAS,yDAE5B,gBAVW,sCAYNgN,EAAY,yCAAG,WAAOC,GAAK,0EAC3B7J,EAAQ,CAAD,gDAGkB,OAA7BoJ,EAASS,EAAMzB,OAAOnH,OAAO,SACvBwI,EAAOI,EAAMzB,OAAOnH,OAAO,KAAD,sCACjC,gBANiB,sCAOZ6I,EAAc,yCAAG,WAAOD,GAAK,4EAGd,OAFbE,EAAWF,EAAMzB,OAAO4B,QAAQ,EAAD,OAEnC/J,GAAW,GAAM,SACXI,EAAQ4J,oBAAoBF,GAAU,KAAD,EAC3C9J,GAAW,GAAO,gDAElBA,GAAW,GACXtD,EAAAA,QAAAA,MAAY,KAAMC,SAAS,yDAE9B,gBAVmB,sCAYdsN,EAAY,CAChBC,YAAa,EACbnB,SAAU,GACVoB,cAAe,cACfhL,MAAOf,EAAMgM,QAAQC,KAAKC,WAG5B,OACE,UAAC,GAAS,YACR,gBAAKrL,UAAU,SAAQ,UACrB,SAAC,IAAU,CAACxB,MAAO1B,EAAE,2CAGvB,SAACwO,GAAA,EAAW,CAAC1C,UAAU,WAAU,UAC/B,SAAC2C,GAAA,EAAU,CAACC,KAAK,UAAUzJ,MAAOA,EAAO2C,SAAUgG,EAAa,SAC7De,GAAAA,QAAAA,KAAiB,SAACC,GACjB,OACE,iBAAsB3H,MAAO,CAAEC,aAAc,IAAK,WAChD,SAAC2H,GAAA,EAAgB,CACf5J,MAAO2J,EAAK3J,MACZ6J,SAAS,SAACC,GAAA,EAAK,CAAC3L,MAAM,YACtB6I,OACE,6BACE,SAAC2C,EAAKI,KAAI,CAAC/H,MAAOiH,IACjBU,EAAKlN,MAAMzB,SAIlB,UAACqD,EAAA,EAAG,CAACJ,UAAU,MAAK,UACjB0L,EAAK5J,YAAY/E,GACjB2O,EAAK3J,QAAUgK,EAAAA,eAAAA,KAAsBhK,IAAUgK,EAAAA,eAAAA,KAA0C,aAApBxM,EAASyM,SAC7E,SAAC,GAAc,WACb,SAACL,GAAA,EAAgB,CACf5H,MAAO,CAAEkH,YAAa,GACtBlJ,MAAO2J,EAAK3J,MACZ6J,SAAS,SAACK,GAAA,EAAQ,CAACvD,KAAK,UACxBK,OAAO,0BAAOjM,EAAE,0CAChB4H,SAAUkG,EACVE,QAASX,EACTzK,SAAUoB,WAtBV4K,EAAK3J,MA6BnB,SAIJ,SAACzC,EAAW,CAAC8E,GAAI,EAAG1E,SAAUoB,EAASvB,SAAUA,EAAUC,WAAY,kBAAM5C,EAAO,WAAW,EAAC,UAC9F,SAACwD,EAAA,EAAG,CAACC,QAAQ,OAAOC,WAAW,SAAQ,UACrC,SAAC,GAAM,CAACQ,QAASA,EAASpB,SAAUoB,EAASX,QAAS,kBAAMvD,GAAQ,EAAC,SAClEE,EAAE,0BAMf,CAMAkN,GAAclL,aAAe,CAC3BlC,OAAQ,WAAO,GAGjB,I,MAAM4M,IAAYzK,EAAAA,EAAAA,SAAO0K,EAAP1K,CAAc,yMAUnB,SAACG,GAAK,OAAKA,EAAMC,MAAMgM,QAAQC,KAAKC,SAAS,IC9I1D,GAPiBtM,EAAAA,QAAAA,KAAW,gFACjB,SAACG,GAAK,OAAKA,EAAMC,MAAMgM,QAAQlF,MAAMiG,IAAI,I,oCCkBrC,SAASC,GAAK,GAAyB,IAAvBvP,EAAM,EAANA,OAAQ8D,EAAU,EAAVA,WACrC,GAAsBmF,EAAAA,EAAAA,YAAWC,EAAAA,eAAzB/I,EAAM,EAANA,OAAQD,EAAC,EAADA,EAChB,GAA8CoE,EAAAA,EAAAA,MAAtC3B,EAAQ,EAARA,SAAU6M,EAAG,EAAHA,IAAKC,EAAS,EAATA,UAAWlL,EAAO,EAAPA,QAC1BlE,GAAQD,EAAAA,EAAAA,MAARC,IACR,GAAwB4D,EAAAA,EAAAA,WAAS,GAAM,eAAhChD,EAAI,KAAEyO,EAAO,KACpB,EAAoFF,GAAO,CAAC,EAAC,IAArFG,KAAAA,OAAI,MAAG,GAAE,MAAEC,QAAAA,OAAO,MAAG,GAAE,MAAEC,IAAAA,OAAG,MAAG,MAAK,EAAEC,EAAU,EAAVA,WAAW,EAAD,EAAEC,OAAAA,OAAM,MAAG,GAAE,EAAEC,EAAQ,EAARA,SACH,GAAjCA,EAAW,IAAIC,IAAID,GAAY,CAAC,GAA3DE,OAAQC,OAAQ,MAAG,IAAG,GAE9BhF,EAAAA,EAAAA,YAAU,WACR,IAAMzC,EAAQC,aAAY,WACxBpE,EAAQkD,aACV,GAAG,KAEH,OAAO,WACLqB,cAAcJ,EAChB,CACF,GAAG,IAMH,OAAK8G,GASH,UAAC,GAAS,YACR,gBAAKpM,UAAU,SAAQ,UACrB,SAAC,IAAU,CAACxB,MAAO1B,EAAE,oBAAqBoH,YAAaxD,OAGzD,UAACN,EAAA,EAAG,CAACJ,UAAU,UAAS,WACtB,UAACI,EAAA,EAAG,CAACoI,GAAI,EAAGxI,UAAU,MAAK,UACxBlD,EAAE,uBAAuBkQ,QAAQ,OAAQ,KAC1C,iBAAMhN,UAAU,SAAQ,mBAAKuM,EAAI,YAAII,KACpC7P,EAAE,yBAEL,SAACsD,EAAA,EAAG,CAAC0J,SAAU,GAAIrB,WAAW,iBAAiBD,GAAI,GAAI,SACpD1L,EAAE,8BAEL,UAACsD,EAAA,EAAG,CAACC,QAAQ,OAAOC,WAAW,SAAQ,WACrC,SAAC,WAAU,CAACN,UAAU,UAAS,SAAET,EAAS0N,UAC1C,SAACC,GAAA,EAAI,CACHnJ,MAAO,CAAEoJ,WAAY,GACrBjE,OAAO,SACPkE,KAAMC,IAAQN,EAAU,sBAAuBxN,EAAS0N,QACxDK,UAAU,QAAO,UACjB,SAACC,GAAA,QAAU,CAACvN,UAAU,sBAG1B,SAACI,EAAA,EAAG,CAACoN,GAAI,EAAE,UACT,SAAC,GAAM,CAACtN,MAAM,UAAUC,QAAS,kBAAMmM,GAAQ,EAAK,EAAE5M,UAAW+M,EAAI,SAClE3P,EAAE,2BAGP,SAAC,UAAU,CACTc,OAAK,EACLC,KAAMA,EACNE,OAAO,OACPC,QAASf,EAAIgB,IACbC,aAAc,IACdC,UAAWlB,EAAIkB,UACfG,UAjDU,WAChBgO,GAAQ,EACV,EAgDQmB,QAAS,kBAAMnB,GAAQ,EAAM,EAC7BvP,OAAQA,EACRwB,SAAU,CACRC,MAAO1B,EAAE,uBACT2B,KAAM3B,EAAE,sBACR4B,QAAS5B,EAAE,yBACX6B,QAAS7B,EAAE,0BAEb8B,aAAW,gBAAI8O,OAAQhB,GAAeL,GAAS,IAAEO,SAAAA,OAGnD,UAACxM,EAAA,EAAG,CAACC,QAAQ,OAAOH,MAAM,iBAAgB,WACxC,UAACE,EAAA,EAAG,CAACC,QAAQ,OAAM,WACjB,UAACD,EAAA,EAAG,WAAEtD,EAAE,mBAAkB,QAC1B,SAACsD,EAAA,EAAG,CAACuN,GAAI,GAAKzN,MAAM,eAAeuI,WAAW,iBAAgB,SAC3D8D,QAGL,UAACnM,EAAA,EAAG,CAACC,QAAQ,OAAOsN,GAAI,EAAE,WACxB,UAACvN,EAAA,EAAG,WAAEtD,EAAE,sBAAqB,QAC7B,SAACsD,EAAA,EAAG,CAACuN,GAAI,GAAKzN,MAAOuM,EAAM,EAAI,aAAe,eAAgBhE,WAAW,iBAAgB,SACtF+D,cAMT,SAAClN,EAAW,CAAC8E,GAAI,EAAE,UACjB,SAAC,GAAM,CAAC1E,SAAU+M,EAAM,EAAGtM,QAAS,kBAAMvD,GAAQ,EAAC,SAChDE,EAAE,sBAzEP,SAACsD,EAAA,EAAG,CAACC,QAAQ,OAAOuN,eAAe,SAAStN,WAAW,SAASuN,MAAM,OAAM,UAC1E,SAACC,EAAA,QAAO,KA6EhB,CAMA3B,GAAKrN,aAAe,CAClBlC,OAAQ,WAAO,EACf8D,WAAY,WAAO,GAGrB,I,SAAM8I,IAAYzK,EAAAA,EAAAA,SAAO0K,EAAP1K,CAAc,keAG1B,SAACG,GAAK,OAAKA,EAAMC,MAAMC,YAAYmB,KAAK,KAAK,IAkBpC,SAACrB,GAAK,OAAKA,EAAMC,MAAMgM,QAAQ4C,QAAQ7B,IAAI,IAO3C,SAAChN,GAAK,OAAKA,EAAMC,MAAMgM,QAAQ4C,QAAQ7B,IAAI,I,wBC/I3C,SAAS8B,GAAS,GAAiB,IAAftN,EAAU,EAAVA,WACzB5D,GAAMD,EAAAA,EAAAA,oBAANC,EACR,GAA8B+D,EAAAA,EAAAA,WAAS,GAAM,eAAtCC,EAAO,KAAEC,EAAU,KAC1B,GAA4BF,EAAAA,EAAAA,UAAS,YAAW,eAAzCmE,EAAM,KAAEiJ,EAAS,KACxB,GAAwCpN,EAAAA,EAAAA,YAAU,eAA3CqN,EAAY,KAAEC,EAAe,KAC5B5O,GAAa2B,EAAAA,EAAAA,MAAb3B,SACR,GAA4CsB,EAAAA,EAAAA,UAAS,IAAG,eAAjDuN,EAAc,KAAEC,EAAiB,KAClCC,EAAe,IAAIzB,IAAIlF,OAAOC,SAASwF,MAAMmB,aAAatQ,IAAI,iBAE9DuQ,GAAa,CAAC,WAAY,WAAW3J,SAASG,GAC9CyJ,EAAwB,aAAXzJ,EACb0J,EAAa,CACjBC,QAAS7R,EAAE,kBACX8R,SAAU9R,EAAE,qBACZ+R,QAAS/R,EAAE,kBAGPgS,EAAgB,WACpB,IACMC,EADM,IAAIlC,IAAIlF,OAAOC,SAASwF,MACfmB,aAAatQ,IAAI,YAEpC0J,OAAOC,SAASwF,KADd2B,EACqB,IAAIlC,IAAIkC,EAAUX,GAAgBhB,KAElCgB,CAE3B,EAEMY,EAAa,yCAAG,2FAEE,OADtBjO,GAAW,GACXkN,EAAU,YAAY,kBAEdhR,GAAAA,EAAAA,KAAS,kBAAmB,CAChCgS,WAAW,IACV,KAAD,EACFlO,GAAW,GACXkN,EAAU,WAAW,gDAEfiB,GAAS,4BAAa,QAAb,OAAKC,gBAAQ,WAAb,IAAe3H,OAAQ,KAAI9J,QAC1CD,EAAAA,QAAAA,MAAYyR,GACZnO,GAAW,GACXkN,EAAU,WACVE,EAAgBe,GAAQ,yDAE3B,kBAhBkB,oCAkBnBnH,EAAAA,EAAAA,YAAU,WACRkG,EAAU1O,EAASyF,QACd,CAAC,WAAY,WAAWH,SAAStF,EAASyF,SAC7CgK,GAEJ,GAAG,KAEHjH,EAAAA,EAAAA,YAAU,WACR,IAAMqH,EAAkB,yCAAG,0GACHC,EAAAA,GAAAA,cAAa9P,EAASiH,KAAKC,cAAchE,KAAI,SAACoB,GAAI,OAAKyL,EAAAA,GAAAA,cAAazL,EAAK9B,MAAOwN,EAAAA,GAAO,KAAG,KAAD,EAAzGC,EAAO,OACbnB,EAAkBmB,EAAQ,GAAGC,KAAK,2CACnC,kBAHuB,mCAInBrB,GACHgB,GAEJ,GAAG,CAAC7P,EAAU6O,IAEd,IAAMsB,EAAYC,aAAaC,QAAQ,uBACjCpR,EAAuB1B,EAAfoR,EAAiB,6BAAkC,wBAE3D2B,EAAkBpB,IAAeL,EAUvC,OARIE,IAAiBuB,IACfrB,EACFQ,IAEAF,MAKF,SAAC,GAAS,WACR,SAACgB,GAAmB,CAClB7P,QAASiO,EAAe,QAAU,UAClC1P,MAAOA,EACPuR,QACE,UAACzQ,EAAW,WACTkP,IACC,SAAC,GAAM,CAACvO,QAAQ,WAAWP,SAAUoB,EAASX,QAAS,kBAAMO,GAAY,EAAC,SACvE5D,EAAE,oBAINwR,GACC,UAAC0B,GAAO,CAACC,IAAI,aAAY,WACvB,SAACnC,EAAA,QAAO,CAACpF,KAAM,CAAC,GAAI,IAAK3E,MAAO,CAAEkH,YAAa,MAAQ,IAAEnO,EAAE,0BAG7D,iCACE,SAAC,GAAM,CACLiH,MAAO,CAAEmM,WAAY1B,EAAY,GAAK,GACtC9O,SAAUoB,GAAW2N,EACrBtO,QAAS,kBAAOqO,EAAYQ,IAAkBF,GAAe,EAC7DhO,QAAS+O,EAAgB,SACxBnB,EAAW1J,IAAW0J,EAAWC,WAGvB,YAAX3J,GAAwBkJ,MAAmBwB,IAC3C,SAACtP,EAAA,EAAG,CAACyN,MAAM,OAAOzJ,GAAI,EAAE,UACtB,cAAGgJ,KAAMsC,EAAWxG,OAAO,SAAS+G,IAAI,sBAAsBjQ,UAAU,sBAAqB,SAC1FlD,EAAE,4CAWzB,CAEA,IAAM0M,IAAYzK,EAAAA,EAAAA,SAAO0K,EAAP1K,CAAc,oLAKnB,SAACG,GAAK,OAAKA,EAAMC,MAAMgM,QAAQxM,QAAQuN,IAAI,IAG3C,SAAChN,GAAK,OAAKA,EAAMC,MAAMgM,QAAQ4C,QAAQ7B,IAAI,IAIlD4D,IAAsB/Q,EAAAA,EAAAA,SAAOoR,GAAAA,EAAPpR,CAAqB,sHAajDiP,GAASlP,aAAe,CACtB4B,WAAY,WAAO,GAGrB,I,MAAMsP,GAAUjR,EAAAA,QAAAA,EAAQ,gIAKb,SAACG,GAAK,OAAKA,EAAMC,MAAMgM,QAAQ4C,QAAQ7B,IAAI,IC7IvC,SAASkE,KAAiB,IAAD,MAChCzP,GAAWC,EAAAA,EAAAA,IAAc,SAACzB,GAAK,OAAKA,EAAMC,YAAYmB,KAAK,KAAK,IACtE,GAAsB1D,EAAAA,EAAAA,oBAAdC,EAAC,EAADA,EAAGC,EAAM,EAANA,OACLsT,GAAWC,EAAAA,EAAAA,MACjB,GAAoCpP,EAAAA,EAAAA,MAA5BtB,EAAI,EAAJA,KAAML,EAAQ,EAARA,SAAU4B,EAAO,EAAPA,QAClBuO,EAAYC,aAAaC,QAAQ,uBAEjCtB,EAAe,IAAIzB,IAAIlF,OAAOC,SAASwF,MAAMmB,aAAatQ,IAAI,kBAEpE8J,EAAAA,EAAAA,YAAU,WACR5G,EAAQoP,cACRpP,EAAQqP,gBAAgB,CAAElM,WAAW,KAErCmM,EAAAA,EAAAA,KACF,GAAG,KAEH1I,EAAAA,EAAAA,YAAU,WACR5G,EAAQkD,YAAY,CAAEC,WAAW,GACnC,GAAG,CAAS,OAAR/E,QAAQ,IAARA,GAAc,QAAN,EAARA,EAAUK,YAAI,WAAN,EAAR,EAAgB8C,MAEpB,IAAMgO,EAAQ,UAAMC,EAAAA,8BAA6B,UAC3CC,EAAQ,CACZ,CACEnP,IAAK,UACL+J,KAAM1O,EAAE,uBACR+T,KAAMxD,IAAQqD,EAAU,YAE1B,CACEjP,IAAK,SACL+J,KAAM1O,EAAE,sBACR+T,KAAMxD,IAAQqD,EAAU,WAE1B,CACEjP,IAAK,SACL+J,KAAM1O,EAAE,sBACR+T,KAAMxD,IAAQqD,EAAU,WAE1B,CACEjP,IAAK,SACL+J,MACE,gCACG1O,EAAE,sBAAqB,KAAGgU,EAAAA,EAAAA,IAAwBlR,KAAS,SAAC,GAAQ,OAGzEiR,KAAMxD,IAAQqD,EAAU,WAEtB,OAAJ9Q,QAAI,IAAJA,GAAkB,QAAd,EAAJA,EAAMmR,oBAAY,OAAO,QAAP,EAAlB,EAAoBC,aAAK,OAAzB,EAA2B1N,OACvB,CACE7B,IAAK,OACL+J,MACE,gCACG1O,EAAE,oBAAmB,KAAE,SAAC,GAAQ,OAGrC+T,KAAMxD,IAAQqD,EAAU,SAE1B,MACJpP,OAAO2P,SAEHC,EAAYN,EAAMO,WACtB,SAAC5P,GAAC,MAAK,UAAGgO,EAAAA,GAAAA,QAAe,MAAO,KAAG,OAAGmB,EAAQ,YAAInP,EAAEE,OAAUkG,OAAOC,SAASwJ,QAAQ,IAGlFC,EAAUhE,IAAQkC,EAAAA,GAAQoB,EAAAA,8BAA+B,kBAEzD/T,EAAM,yCAAG,WAAO6E,GAAG,gFAetB,OAfsB,EACJ,IAAIoL,IAAIlF,OAAOC,SAASwF,MAAnCkE,EAAM,EAANA,OACH7P,GAOG8P,EAAQX,EAAMO,WAAU,SAAC5P,GAAC,OAAKA,EAAEE,MAAQA,CAAG,IAEhD4O,EADEkB,GAAS,EACF,GAAD,OAAIlE,IAAQqD,EAAUE,EAAMW,GAAO9P,MAAI,OAAG6P,GAEzC,GAAD,OAAIjE,IAAQqD,EAAU,aAAW,OAAGY,KAV1CV,EAAMM,EAAY,GACpBb,EAAS,GAAD,OAAIhD,IAAQqD,EAAUE,EAAMM,EAAY,GAAGzP,MAAI,OAAG6P,IAE1DjB,EAAS,GAAD,OAAIhD,IAAQqD,EAAU,aAAW,OAAGY,IAS/C,SAEKnQ,EAAQqP,kBAAkB,KAAD,sCAChC,gBAlBW,sCAoBN9P,EAAa,WACjB2P,GAAU,EACZ,EAEA,SAASmB,EAAUC,EAAWvS,GAC5B,OAAKK,GAQE,SAACkS,GAAS,gBAAClS,SAAUA,GAAcL,GAAK,IAAEtC,OAAQA,EAAQ8D,WAAYA,MANzE,SAACN,EAAA,EAAG,CAACyN,MAAM,OAAO6D,OAAO,OAAOrR,QAAQ,OAAOuN,eAAe,SAAStN,WAAW,SAAQ,UACxF,SAACwN,EAAA,QAAO,KAMhB,CAEA,IAAM6D,EAAY,WAChBhK,OAAO9J,KAAK6R,EACd,EAEMkC,EAAQjR,GAGZ,SAACkR,EAAA,EAAgB,CAAC1R,QAASwR,EAAW9D,MAAM,KAAK6D,OAAO,KAAK3N,MAAO,CAAE+N,OAAQ,cAF9E,SAACC,EAAA,EAAU,CAAC5R,QAASwR,EAAW9D,MAAM,MAAM6D,OAAO,KAAK3N,MAAO,CAAE+E,WAAY,EAAGgJ,OAAQ,aAKpFE,EAAa,CACjB,CACEvQ,IAAK,YACL+J,KAAM1O,EAAE,6BAEV,CACE2E,IAAK,cACL+J,KAAM1O,EAAE,+BAEV,CACE2E,IAAK,UACL+J,KAAM1O,EAAE,8BAEV,CACE2E,IAAK,QACL+J,KAAM1O,EAAE,4BACR2C,SAAUmR,GAEZ,CACEnP,IAAK,WACL+J,KAAM1O,EAAE,wBACR+T,KAAMxD,IAAQqD,EAAU,cAQ5B,OAJKpC,GACH0D,EAAWC,OAAO,EAAG,IAIrB,UAACC,GAAkB,CAACtB,MAAOoB,EAAW,WACpC,SAAC,EAAAG,OAAM,CAACC,OAAQC,MAChB,SAAC,IAAM,CACLtV,OAAQA,EACRuV,cAAY,kBAAO1S,GAAI,IAAEpB,OAAO+T,EAAAA,EAAAA,iBAAe,kBAAKhT,GAAQ,IAAEK,KAAAA,OAC9D4S,QAASZ,EACTa,QAAQ,MACR1O,MAAO,CAAE2N,OAAQ,QACjBL,QAASA,EACTqB,eAAe,EACfC,iBAAiB,SAAC,IAAW,CAACC,eAAgBA,EAAAA,GAAgBC,oBAAqB,CAAEC,eAAe,KACpGC,cAAejW,EAAE,eAAe,UAChC,UAAC,KAAM,YACL,SAAC,KAAK,CAAC+T,KAAK,UAAUmC,SAAS,SAAC,EAAO,CAACpW,OAAQA,OAChD,SAAC,KAAK,CAACiU,KAAK,SAASmC,QAASxB,EAAU5L,OACxC,SAAC,KAAK,CAACiL,KAAK,SAASmC,QAASxB,EAAU/Q,OACxC,SAAC,KAAK,CAACoQ,KAAK,SAASmC,QAASxB,EAAUxH,OACxC,SAAC,KAAK,CAAC6G,KAAK,OAAOmC,QAASxB,EAAUrF,OACtC,SAAC,KAAK,CAAC0E,KAAK,WAAWmC,QAASxB,EAAUxD,OAC1C,SAAC,KAAK,CAAC6C,KAAK,IAAImC,SAAS,SAAC,KAAQ,CAACC,GAAE,iBAAYtL,OAAOC,SAAS0J,QAAUtE,SAAO,aAK5F,CAEA,IAAMqF,IAAsBa,EAAAA,EAAAA,KAAG,oGASzBhB,IAAqBnT,EAAAA,EAAAA,SAAOoU,EAAAA,aAAPpU,CAAoB,uB,wBCzM/CqU,EAAQ,EAAUnU,EAClB,IAGIoU,EAHAC,EAAUC,EAAuBC,EAAQ,QACzCC,EAAaF,EAAuBC,EAAQ,QAC5CE,EAAcF,EAAQ,OAEpBG,EAAY,CAAC,YACnB,SAASJ,EAAuBK,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAE9F,SAASG,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAASC,IAAmBI,EAAUA,EAAQ/S,QAAO,SAAUgT,GAAO,OAAOH,OAAOI,yBAAyBP,EAAQM,GAAKE,UAAY,KAAKN,EAAKvR,KAAK8R,MAAMP,EAAMG,EAAU,CAAE,OAAOH,CAAM,CACpV,SAASQ,EAAcxL,GAAU,IAAK,IAAIyL,EAAI,EAAGA,EAAIC,UAAUtR,OAAQqR,IAAK,CAAE,IAAI3I,EAAS,MAAQ4I,UAAUD,GAAKC,UAAUD,GAAK,CAAC,EAAGA,EAAI,EAAIZ,EAAQI,OAAOnI,IAAS,GAAI6I,SAAQ,SAAUpT,GAAOqT,EAAgB5L,EAAQzH,EAAKuK,EAAOvK,GAAO,IAAK0S,OAAOY,0BAA4BZ,OAAOa,iBAAiB9L,EAAQiL,OAAOY,0BAA0B/I,IAAW+H,EAAQI,OAAOnI,IAAS6I,SAAQ,SAAUpT,GAAO0S,OAAOc,eAAe/L,EAAQzH,EAAK0S,OAAOI,yBAAyBvI,EAAQvK,GAAO,GAAI,CAAE,OAAOyH,CAAQ,CACzf,SAAS4L,EAAgBlB,EAAKnS,EAAKM,GAAiK,OAApJN,KAAOmS,EAAOO,OAAOc,eAAerB,EAAKnS,EAAK,CAAEM,MAAOA,EAAOyS,YAAY,EAAMU,cAAc,EAAMC,UAAU,IAAkBvB,EAAInS,GAAOM,EAAgB6R,CAAK,CAChN,SAASwB,EAAyBpJ,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,CAAC,EAAG,IAAkEvK,EAAKkT,EAAnEzL,EACzF,SAAuC8C,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,CAAC,EAAG,IAA2DvK,EAAKkT,EAA5DzL,EAAS,CAAC,EAAOoM,EAAanB,OAAOD,KAAKlI,GAAqB,IAAK2I,EAAI,EAAGA,EAAIW,EAAWhS,OAAQqR,IAAOlT,EAAM6T,EAAWX,GAAQU,EAASE,QAAQ9T,IAAQ,IAAayH,EAAOzH,GAAOuK,EAAOvK,IAAQ,OAAOyH,CAAQ,CADhNsM,CAA8BxJ,EAAQqJ,GAAuB,GAAIlB,OAAOC,sBAAuB,CAAE,IAAIqB,EAAmBtB,OAAOC,sBAAsBpI,GAAS,IAAK2I,EAAI,EAAGA,EAAIc,EAAiBnS,OAAQqR,IAAOlT,EAAMgU,EAAiBd,GAAQU,EAASE,QAAQ9T,IAAQ,GAAkB0S,OAAOuB,UAAUC,qBAAqBC,KAAK5J,EAAQvK,KAAgByH,EAAOzH,GAAOuK,EAAOvK,GAAQ,CAAE,OAAOyH,CAAQ,CAE3e,SAASjK,EAAc4W,GACjB,IACApW,EACEoW,EADFpW,SAEFP,EAAQkW,EAAyBS,EAAMlC,GACzC,OAAoB,EAAID,EAAYoC,KAAKtM,EAAWkL,EAAcA,EAAc,CAAC,EAAGxV,GAAQ,CAAC,EAAG,CAC9FO,SAAUA,IAEd,CACAR,EAAc8W,UAAY,CACxBtW,SAAUgU,EAAWK,QAAQkC,IAAIC,YAEnC,IAlBgCC,EAASC,EAkBnC3M,EAAY8J,EAAQQ,QAAQsC,IAAI/C,IAlBN6C,EAkBmE,CAAC,qUAAsU,0CAA2C,uHAAwH,iDAAkD,0EAlB1kBC,IAAOA,EAAMD,EAAQ1T,MAAM,IAkBtB6Q,EAlBmCc,OAAOkC,OAAOlC,OAAOa,iBAAiBkB,EAAS,CAAEC,IAAK,CAAEpU,MAAOoS,OAAOkC,OAAOF,SAkBkiB,SAAAjX,GAAK,OAAIA,EAAMC,MAAMC,YAAYC,GAAG,KAAK,IAAE,SAAAH,GAAK,OAAIA,EAAMC,MAAMC,YAAYmB,KAAK,KAAK,IAAE,SAAArB,GAAK,OAAIA,EAAMC,MAAMC,YAAYC,GAAG,KAAK,IAAE,SAAAH,GAAK,OAAIA,EAAMC,MAAMC,YAAYmB,KAAK,KAAK,G,wBCzB13B6S,EAAQ,EAAUkD,EAClB,IAWIjD,EAXAkD,EAAS/C,EAAQ,OACjBF,EAAUC,EAAuBC,EAAQ,QACzCC,EAAaF,EAAuBC,EAAQ,QAC5CgD,EAAcjD,EAAuBC,EAAQ,OAC7CiD,EAAkBjD,EAAQ,OAC1BkD,EAAkBnD,EAAuBC,EAAQ,QACjDmD,EAAYpD,EAAuBC,EAAQ,QAC3CoD,EAAWpD,EAAQ,OACnBqD,EAAStD,EAAuBC,EAAQ,QACxCsD,EAAsBvD,EAAuBC,EAAQ,QACrDE,EAAcF,EAAQ,OAE1B,SAASD,EAAuBK,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAE9F,SAASG,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAASC,IAAmBI,EAAUA,EAAQ/S,QAAO,SAAUgT,GAAO,OAAOH,OAAOI,yBAAyBP,EAAQM,GAAKE,UAAY,KAAKN,EAAKvR,KAAK8R,MAAMP,EAAMG,EAAU,CAAE,OAAOH,CAAM,CACpV,SAASQ,EAAcxL,GAAU,IAAK,IAAIyL,EAAI,EAAGA,EAAIC,UAAUtR,OAAQqR,IAAK,CAAE,IAAI3I,EAAS,MAAQ4I,UAAUD,GAAKC,UAAUD,GAAK,CAAC,EAAGA,EAAI,EAAIZ,EAAQI,OAAOnI,IAAS,GAAI6I,SAAQ,SAAUpT,GAAOqT,EAAgB5L,EAAQzH,EAAKuK,EAAOvK,GAAO,IAAK0S,OAAOY,0BAA4BZ,OAAOa,iBAAiB9L,EAAQiL,OAAOY,0BAA0B/I,IAAW+H,EAAQI,OAAOnI,IAAS6I,SAAQ,SAAUpT,GAAO0S,OAAOc,eAAe/L,EAAQzH,EAAK0S,OAAOI,yBAAyBvI,EAAQvK,GAAO,GAAI,CAAE,OAAOyH,CAAQ,CACzf,SAAS4L,EAAgBlB,EAAKnS,EAAKM,GAAiK,OAApJN,KAAOmS,EAAOO,OAAOc,eAAerB,EAAKnS,EAAK,CAAEM,MAAOA,EAAOyS,YAAY,EAAMU,cAAc,EAAMC,UAAU,IAAkBvB,EAAInS,GAAOM,EAAgB6R,CAAK,CAChN,SAAS0C,EAAYT,GACnB,IACEjD,EAMEiD,EANFjD,eACAmE,EAKElB,EALFkB,WACAC,EAIEnB,EAJFmB,WACAC,EAGEpB,EAHFoB,WACAC,EAEErB,EAFFqB,mBACArE,EACEgD,EADFhD,oBAGA3V,GACE,EAAIqZ,EAAO1Q,YAAY+M,GADzB1V,QAGAH,GACE,EAAIwZ,EAAO1Q,YAAY+Q,EAAS9Q,eADlC/I,OAEI6K,GAAW,EAAI6O,EAAgBU,eAC/BC,EAAW,CACf,aAAc,iCACd,SAAU,eACV,aAAc,YACd,gBAAiB,UACjB,iBAAkB,UAClB,kBAAmB,QACnB,iBAAkB,0BAClB,WAAY,yBAcd,OAAoB,EAAI1D,EAAY2D,MAAMC,EAAK,CAC7C7X,SAAU,CAACsX,EAAWtU,KAAI,SAAClB,EAAGgQ,GAAK,OAAkB,EAAIgF,EAAOgB,cAAchW,EAAG,CAC/EE,IAAK8P,GACL,IAAGyF,IAA2B,EAAItD,EAAYoC,KAAKa,EAAU7C,QAAS,CACtE,UAAW,eACXhI,KAAM+K,EAAO/C,QACbpL,KAAM,GACN8O,UAAU,EACVxX,UAAW,iBACTiX,IAA2B,EAAIvD,EAAYoC,KAAKU,EAAY1C,QAAS,CACvE3T,QAtBgB,WAClB,IAAMsX,EAAW7P,EAASwJ,SACtBP,EAAO,GACP4G,EAASlC,QAAQ,eAAiB,EACpC1E,EAAOuG,EAAS,cACPK,EAASlC,QAAQ,WAAa,EACvC1E,EAAOuG,EAAS,UACPA,EAASK,KAClB5G,EAAOuG,EAASK,IAElB9P,OAAO9J,KAAK,oCAAoCgF,OAAO9F,GAAQ8F,OAAOgO,GAAO,SAC/E,EAYIpR,UAAuB,EAAIiU,EAAYoC,KAAKgB,EAAoBhD,QAAS,CAAC,KACxEoD,IAAmC,EAAIxD,EAAYoC,KAAKY,EAAgB5C,QAASY,EAAc,CACjGxX,QAASA,EACTwL,KAAM,GACNgP,UAAU,GACT7E,MAEP,CACAyD,EAAYP,UAAY,CACtBnD,eAAgBa,EAAWK,QAAQE,OAAOiC,WAC1C7X,aAAcqV,EAAWK,QAAQ6D,OACjCZ,WAAYtD,EAAWK,QAAQ8D,MAC/BZ,WAAYvD,EAAWK,QAAQ+D,KAC/BX,mBAAoBzD,EAAWK,QAAQ+D,KACvCZ,WAAYxD,EAAWK,QAAQ+D,KAC/BhF,oBAAqBY,EAAWK,QAAQE,QAE1CsC,EAAYxX,aAAe,CACzBV,aAAc,GACd2Y,WAAY,GACZC,YAAY,EACZE,oBAAoB,EACpBD,YAAY,EACZpE,oBAAqB,CAAC,GAExB,IA9EgCqD,EAASC,EA8EnCmB,EAAMhE,EAAQQ,QAAQsC,IAAI/C,IA9EA6C,EA8E6D,CAAC,gRAAiR,mGA9E1TC,IAAOA,EAAMD,EAAQ1T,MAAM,IA8E5B6Q,EA9EyCc,OAAOkC,OAAOlC,OAAOa,iBAAiBkB,EAAS,CAAEC,IAAK,CAAEpU,MAAOoS,OAAOkC,OAAOF,SA8E2S,SAAAjX,GAAK,OAAIA,EAAMC,MAAMC,YAAYmB,KAAK,KAAK,G","sources":["components/setup/connect.js","components/setup/layout.js","components/setup/step-actions.js","components/setup/button.js","components/setup/config.js","components/setup/domain.js","components/setup/public-instance.js","components/setup/access-control.js","components/setup/required.js","components/setup/fuel.js","components/setup/complete.js","pages/setup.js","../../ux/lib/launch-blocklet/content-layout.js","../../ux/lib/layout/addon.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport DidConnect from '@arcblock/did-connect/lib/Connect';\nimport Toast from '@abtnode/ux/lib/toast';\nimport styled from '@emotion/styled';\n\nimport { useSessionContext } from '../../contexts/session';\nimport { getWebWalletUrl, setSessionToken } from '../../util';\n\nexport default function Connect({ onNext }) {\n const { t, locale } = useLocaleContext();\n const { api, session } = useSessionContext();\n\n const onConnect = async (result, decrypt) => {\n setSessionToken(decrypt(result.sessionToken));\n try {\n await session.refresh();\n onNext();\n } catch (err) {\n Toast.error(err.message);\n }\n };\n\n return (\n <WrapConnect\n popup\n open\n hideCloseButton\n action=\"setup\"\n checkFn={api.get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n webWalletUrl={getWebWalletUrl()}\n onSuccess={onConnect}\n locale={locale}\n messages={{\n title: t('setup.connect.title'),\n scan: t('setup.connect.scan'),\n confirm: t('setup.connect.confirm'),\n success: t('setup.connect.success'),\n }}\n extraParams={{ setup: true }}\n />\n );\n}\n\nConnect.propTypes = {\n onNext: PropTypes.func,\n};\n\nConnect.defaultProps = {\n onNext: () => {},\n};\n\nconst WrapConnect = styled(DidConnect)`\n .action-info-desc {\n padding: 0 72px;\n }\n`;\n","import styled from '@emotion/styled';\n\nimport ContentLayout from '@abtnode/ux/lib/launch-blocklet/content-layout';\n\nconst Container = styled(ContentLayout)`\n display: flex;\n flex-direction: column;\n padding-bottom: 16px;\n ${(props) => props.theme.breakpoints.up('md')} {\n padding-top: 34px;\n padding-bottom: 34px;\n }\n .header {\n width: 100%;\n margin-bottom: 34px;\n ${(props) => props.theme.breakpoints.up('md')} {\n margin-bottom: 64px;\n }\n }\n .container-main {\n position: relative;\n flex: 1;\n width: 100%;\n }\n .container-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n overflow-y: auto;\n }\n`;\n\nexport default Container;\n","import PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\n\nimport Box from '@mui/material/Box';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\n\nimport { hasRequiredSteps } from '../../util';\n\nexport default function StepActions({ blocklet, onStartNow, children, disabled }) {\n const { t } = useLocaleContext();\n\n if (!blocklet || hasRequiredSteps(blocklet.meta)) {\n return <Center>{children}</Center>;\n }\n\n return (\n <Between>\n <Button\n className=\"start-now\"\n variant=\"contained\"\n color=\"primary\"\n disabled={disabled}\n onClick={() => onStartNow()}>\n {t('setup.startNow')}\n </Button>\n <Box display=\"flex\" alignItems=\"center\">\n {children}\n </Box>\n </Between>\n );\n}\n\nStepActions.propTypes = {\n blocklet: PropTypes.object,\n onStartNow: PropTypes.func,\n children: PropTypes.any,\n disabled: PropTypes.bool,\n};\nStepActions.defaultProps = {\n blocklet: null,\n onStartNow: () => {},\n children: null,\n disabled: false,\n};\n\nconst Center = styled(Box)`\n padding-top: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n .bottom-button {\n min-width: 200px;\n }\n ${(props) => props.theme.breakpoints.down('md')} {\n .bottom-button {\n min-width: 150px;\n }\n }\n`;\n\nconst Between = styled(Box)`\n padding-bottom: 48px;\n padding-top: 24px;\n margin: 0 auto;\n width: 80%;\n display: flex;\n align-items: center;\n justify-content: space-around;\n .start-now {\n min-width: 140px;\n }\n .bottom-button {\n min-width: 120px;\n }\n ${(props) => props.theme.breakpoints.down('lg')} {\n width: 100%;\n }\n\n ${(props) => props.theme.breakpoints.down('md')} {\n .start-now {\n min-width: 100px;\n }\n .bottom-button {\n min-width: 80px;\n }\n }\n`;\n","import Button from '@arcblock/ux/lib/Button';\n\nexport default function StyledButton({ ...props }) {\n return <Button className=\"bottom-button\" variant=\"contained\" color=\"primary\" {...props} />;\n}\n","import { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport omit from 'lodash/omit';\nimport uniqBy from 'lodash/uniqBy';\nimport flatten from 'lodash/flatten';\n\nimport Box from '@mui/material/Box';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport SchemaForm from '@abtnode/ux/lib/schema-form';\nimport Toast from '@abtnode/ux/lib/toast';\nimport CompactLayout from '@blocklet/launcher-layout/lib/compact-layout';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\n\nimport { getAppMissingConfigs, forEachChildSync } from '@blocklet/meta/lib/util';\nimport { BLOCKLET_CONFIGURABLE_KEY } from '@blocklet/meta/lib/constants';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nexport default function Config({ onNext, onPrevious }) {\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down('md'));\n const { t } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [editingItem, setEditingItem] = useState(null);\n const { blocklet, actions } = useBlockletContext();\n\n const selfConfigs = (blocklet.configs || []).filter((x) => !BLOCKLET_CONFIGURABLE_KEY[x.key]);\n const customColor = blocklet.environments.find((x) => x.key === 'BLOCKLET_PASSPORT_COLOR');\n\n const configurableEnvs = [\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_NAME,\n description: t('blocklet.config.name'),\n value: blocklet.environments.find((x) => x.key === 'BLOCKLET_APP_NAME').value,\n custom: true,\n },\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_DESCRIPTION,\n description: t('blocklet.config.description'),\n value: blocklet.environments.find((x) => x.key === 'BLOCKLET_APP_DESCRIPTION').value,\n custom: true,\n },\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_PASSPORT_COLOR,\n description: t('blocklet.config.passportColor'),\n value: customColor ? customColor.value : 'auto',\n custom: true,\n componentType: 'passport',\n componentProps: {\n blocklet,\n },\n },\n ];\n\n const childrenConfigs = [];\n forEachChildSync(blocklet, (b, { ancestors }) => {\n const ancestorDids = ancestors.slice(1).map((x) => x.meta.did);\n\n childrenConfigs.push((b.configs || []).map((x) => ({ ...x, childDid: ancestorDids.concat(b.meta.did) })));\n });\n\n const filteredConfigs = uniqBy(flatten([...selfConfigs, ...childrenConfigs]), 'key').filter((x) => !!x.key);\n\n const sortedConfig = filteredConfigs.sort((a, b) => {\n if (a.required && !b.required) {\n return -1;\n }\n\n if (b.required && !a.required) {\n return 1;\n }\n\n return 0;\n });\n\n const missingRequiredConfigs = getAppMissingConfigs(blocklet).length;\n\n const onSubmitConfig = async (value) => {\n const { childDid, ...config } = editingItem;\n\n const configs = [\n {\n // omit the backend unused configs\n ...omit(config, ['componentType', 'componentProps']),\n value,\n },\n ];\n\n try {\n setLoading(true);\n await actions.configBlocklet({\n configs,\n childDid,\n });\n } catch (err) {\n Toast.error(err.message);\n } finally {\n setLoading(false);\n }\n };\n\n const defaultValue = {};\n\n const schemaList = [...configurableEnvs, ...sortedConfig].map((item) => {\n const { value, ...rest } = item;\n defaultValue[item.key] = value;\n return {\n ...rest,\n };\n });\n\n const clickBack = () => {\n onPrevious();\n };\n\n return (\n <Layout>\n <div className=\"header\" style={{ marginBottom: 16 }}>\n <PageHeader title={t('setup.config.title')} subTitle={t('setup.config.subTitle')} onClickBack={clickBack} />\n </div>\n <div className=\"container-main\">\n <div className=\"container-inner\">\n <CompactLayout\n bottom={\n <StepActions\n mt={8}\n disabled={loading || editingItem}\n blocklet={blocklet}\n onStartNow={() => onNext('complete')}>\n <Box display=\"flex\" alignItems=\"center\">\n <Button\n disabled={loading || missingRequiredConfigs || editingItem}\n onClick={() => {\n actions.refreshFuel({ showError: false });\n onNext();\n }}>\n {t('setup.next')}\n </Button>\n </Box>\n </StepActions>\n }>\n <SchemaForm\n style={{ margin: '0 auto 20px', paddingTop: isMobile ? 0 : 38 }}\n loading={loading}\n schema={schemaList}\n defaultValue={defaultValue}\n onChange={(changeValue, { action, currentItem }) => {\n if (action === 'edit') {\n setEditingItem(currentItem);\n } else if (['cancel', 'confirm'].includes(action)) {\n setEditingItem(null);\n }\n if (action === 'confirm') {\n onSubmitConfig(changeValue[currentItem.key]);\n }\n }}\n />\n </CompactLayout>\n </div>\n </div>\n </Layout>\n );\n}\n\nConfig.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\n\nConfig.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n","import { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\n\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport Toast from '@abtnode/ux/lib/toast';\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport { validateDomain, sleep } from '@abtnode/ux/lib/util';\nimport { BLOCKLET_CONFIGURABLE_KEY } from '@blocklet/meta/lib/constants';\nimport Dialog from '@arcblock/ux/lib/Dialog';\nimport { replaceSlotToIp } from '@blocklet/meta/lib/util';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport api from '../../libs/api';\nimport client from '../../libs/client';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nconst isCertInProgress = (cert) => ['waiting', 'creating', 'renewaling'].includes(cert?.status);\n\nconst waitForCert = (domain) =>\n new Promise((resolve, reject) => {\n const timer = setInterval(async () => {\n try {\n const { cert } = await client.findCertificateByDomain({ input: { domain } });\n\n if (cert?.status === 'generated') {\n clearInterval(timer);\n resolve(true);\n return;\n }\n\n if (!isCertInProgress(cert)) {\n clearInterval(timer);\n resolve(false);\n }\n } catch (err) {\n clearInterval(timer);\n reject(err);\n }\n }, 1000);\n });\n\nconst addCert = async (domain) => {\n await client.issueLetsEncryptCert({ input: { domain } });\n return waitForCert(domain);\n};\n\nexport default function Domain({ onNext, onPrevious }) {\n const { t, locale } = useContext(LocaleContext);\n const [loadingText, setLoadingText] = useState('');\n const [error, setError] = useState(false);\n const { blocklet } = useBlockletContext();\n const [ip, setIp] = useState('');\n const [showCertFailed, setShowCertFailed] = useState(false);\n\n const site = blocklet?.site || {};\n const domains = site.domainAliases || [];\n const defaultCustomDomain = domains.filter((x) => !x.isProtected)[0]?.value || '';\n const systemDomains = domains.filter((x) => x.isProtected).map((x) => replaceSlotToIp(x.value, ip));\n const [domain, setDomain] = useState(defaultCustomDomain);\n\n const addDomain = async (secure) => {\n setLoadingText(t('setup.domain.addingDomain'));\n await sleep(1500);\n if (!domains.some((x) => x.value === domain)) {\n await client.addDomainAlias({ input: { id: blocklet.site.id, domainAlias: domain } });\n await client.takeRoutingSnapshot({\n input: { dryRun: false, message: `add domain ${domain} from blocklet services` },\n });\n }\n await client.configBlocklet({\n input: {\n did: [blocklet.meta.did],\n configs: [{ key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_URL, value: `http${secure ? 's' : ''}://${domain}` }],\n },\n });\n onNext();\n };\n\n const submitDomain = async () => {\n if (loadingText) {\n return;\n }\n\n try {\n setLoadingText(t('setup.domain.checkingResolvable'));\n await sleep(1500);\n const {\n data: { address },\n } = await api.get(`/dns-resolve?hostname=${domain}`);\n if (!address) {\n throw new Error(t('setup.domain.cannotResolve', { domain }));\n }\n\n if (address !== ip) {\n throw new Error(t('setup.domain.resolvedAddressError', { domain, curDomain: window.location.hostname }));\n }\n\n setLoadingText(t('setup.domain.addingCert'));\n let generated = false;\n const { cert } = await client.findCertificateByDomain({ input: { domain } });\n if (!cert) {\n generated = await addCert(domain, locale);\n } else if (cert.status === 'generated') {\n generated = true;\n } else if (['waiting', 'creating', 'renewaling'].includes(cert.status)) {\n generated = await waitForCert(domain, locale);\n } else {\n generated = await addCert(domain, locale);\n }\n\n if (generated) {\n addDomain(generated);\n } else {\n setShowCertFailed(true);\n }\n } catch (err) {\n Toast.error(err.message);\n setLoadingText('');\n }\n };\n\n useEffect(() => {\n api\n .get(`/dns-resolve?hostname=${window.location.hostname}`)\n .then(({ data }) => {\n setIp(data.address || '');\n })\n .catch((err) => {\n console.error(err.message);\n });\n }, []);\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('setup.domain.title')} subTitle={t('setup.domain.subTitle')} onClickBack={onPrevious} />\n </div>\n {showCertFailed && (\n <Dialog\n PaperProps={{\n style: {\n minHeight: 'auto',\n },\n }}\n open={showCertFailed}\n showCloseButton={false}\n title={t('setup.domain.genCertFailed')}\n actions={\n <>\n <Button\n color=\"reverse\"\n variant=\"text\"\n onClick={() => {\n setLoadingText('');\n setShowCertFailed(false);\n }}>\n {t('setup.cancel')}\n </Button>\n <Button\n color=\"primary\"\n variant=\"text\"\n onClick={() => {\n setShowCertFailed(false);\n addDomain(false);\n }}>\n {t('setup.confirm')}\n </Button>\n </>\n }>\n {t('setup.domain.certFailedDesc')}\n </Dialog>\n )}\n <Box className=\"form\">\n <Box>\n <Box mb={1} color=\"text.primary\" fontWeight=\"fontWeightBold\">\n <Box display=\"inline\">{t('setup.domain.skipStart')}</Box>\n <Button\n variant=\"text\"\n size=\"small\"\n disabled={!!loadingText}\n onClick={() => onNext()}\n style={{ paddingTop: 0 }}>\n <span style={{ textDecoration: 'underline' }}>{t('setup.domain.skip')}</span>\n </Button>\n <Box display=\"inline\">{t('setup.domain.skipEnd')}</Box>\n </Box>\n {systemDomains.map((x) => (\n <Box component=\"li\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n {x}\n </Box>\n ))}\n <Box mt={1} fontWeight=\"fontWeightBold\" color=\"text.secondary\">\n {t('setup.domain.certTip')}\n </Box>\n <Box />\n </Box>\n\n <Box mt={4} fontWeight=\"fontWeightBold\">\n {t('setup.domain.subTitle')}\n </Box>\n <TextField\n style={{ marginTop: 16, minHeight: 64 }}\n label={t('setup.domain.label')}\n fullWidth\n value={domain}\n onChange={(e) => {\n const { value } = e.target;\n setDomain(value);\n const errMessage = validateDomain(value, locale);\n setError(errMessage);\n }}\n autoFocus\n size=\"small\"\n variant=\"outlined\"\n error={!!error}\n helperText={error}\n />\n\n {domain && (\n <Box color=\"text.secondary\">\n <Box display=\"flex\">\n {t('setup.domain.tipStart')}\n <Box mx={0.5} color=\"primary.main\" fontWeight=\"fontWeightBold\">\n {domain}\n </Box>\n {t('setup.domain.tipEnd')}\n </Box>\n <Box component=\"li\">\n {t('setup.domain.recordType')}:{' '}\n <Box display=\"inline\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n A\n </Box>\n </Box>\n <Box component=\"li\">\n {t('setup.domain.recordValue')}:{' '}\n <Box display=\"inline\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n {ip}\n </Box>\n </Box>\n </Box>\n )}\n </Box>\n <StepActions mt={8} disabled={!!loadingText} blocklet={blocklet} onStartNow={() => onNext('complete')}>\n {!domain ? (\n <Button variant=\"outlined\" disabled={!!loadingText} onClick={() => onNext()}>\n {t('setup.skip')}\n </Button>\n ) : (\n <Button loading={!!loadingText} disabled={error || !!loadingText || !domain} onClick={() => submitDomain()}>\n {loadingText || t('setup.next')}\n </Button>\n )}\n </StepActions>\n </Container>\n );\n}\n\nDomain.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\nDomain.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n\nconst Container = styled(Layout)`\n height: 100%;\n overflow-y: auto;\n .form {\n width: 580px;\n word-break: break-all;\n ${(props) => props.theme.breakpoints.down('md')} {\n width: 80%;\n }\n }\n`;\n","import { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\n\nfunction PublicInstance({ children }) {\n const { t } = useLocaleContext();\n return (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {children}\n <Tooltip title={t('blocklet.config.access.publicInstanceTip')}>\n <IconButton>\n <InfoOutlinedIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n </div>\n );\n}\nPublicInstance.propTypes = {\n children: PropTypes.any.isRequired,\n};\n\nexport default memo(PublicInstance);\n","import { useState, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\n\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport useTheme from '@mui/material/styles/useTheme';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Toast from '@abtnode/ux/lib/toast';\nimport { WHO_CAN_ACCESS } from '@abtnode/constant';\n\nimport { getWhoCanAccess } from '@blocklet/meta/lib/util';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport { sleep } from '@abtnode/ux/lib/util';\nimport AccessConfig from '@abtnode/ux/lib/who-can-access/config';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\nimport PublicInstance from './public-instance';\n\nexport default function AccessControl({ onNext }) {\n const theme = useTheme();\n const { t, locale } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [value, setValue] = useState('');\n const [publicToStore, setPublicToStore] = useState(false);\n const { blocklet, actions, getPublicInstance } = useBlockletContext();\n\n useEffect(() => {\n setValue(getWhoCanAccess(blocklet));\n setPublicToStore(getPublicInstance(blocklet));\n }, [blocklet]); // eslint-disable-line\n\n const submit = async (whoCanAccess) => {\n try {\n setLoading(true);\n await sleep(800);\n await actions.configWhoCanAccess(whoCanAccess);\n setLoading(false);\n } catch (err) {\n setLoading(false);\n Toast.error(err.message);\n }\n };\n\n const handleChange = async (event) => {\n if (loading) {\n return;\n }\n setValue(event.target.value);\n await submit(event.target.value);\n };\n const handleCheckBox = async (event) => {\n const isPublic = event.target.checked;\n try {\n setLoading(true);\n await actions.configPublicToStore(isPublic);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n Toast.error(error.message);\n }\n };\n\n const iconStyle = {\n marginRight: 4,\n fontSize: 18,\n verticalAlign: 'text-bottom',\n color: theme.palette.text.secondary,\n };\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('blocklet.config.access.description')} />\n </div>\n\n <FormControl component=\"fieldset\">\n <RadioGroup name=\"inherit\" value={value} onChange={handleChange}>\n {AccessConfig.map((rule) => {\n return (\n <div key={rule.value} style={{ marginBottom: 16 }}>\n <FormControlLabel\n value={rule.value}\n control={<Radio color=\"primary\" />}\n label={\n <span>\n <rule.icon style={iconStyle} />\n {rule.title[locale]}\n </span>\n }\n />\n <Box className=\"tip\">\n {rule.description[locale]}\n {rule.value === WHO_CAN_ACCESS.ALL && value === WHO_CAN_ACCESS.ALL && blocklet.source === 'registry' && (\n <PublicInstance>\n <FormControlLabel\n style={{ marginRight: 0 }}\n value={rule.value}\n control={<Checkbox size=\"small\" />}\n label={<span>{t('blocklet.config.access.publicToStore')}</span>}\n onChange={handleCheckBox}\n checked={publicToStore}\n disabled={loading}\n />\n </PublicInstance>\n )}\n </Box>\n </div>\n );\n })}\n </RadioGroup>\n </FormControl>\n\n <StepActions mt={8} disabled={loading} blocklet={blocklet} onStartNow={() => onNext('complete')}>\n <Box display=\"flex\" alignItems=\"center\">\n <Button loading={loading} disabled={loading} onClick={() => onNext()}>\n {t('setup.continue')}\n </Button>\n </Box>\n </StepActions>\n </Container>\n );\n}\n\nAccessControl.propTypes = {\n onNext: PropTypes.func,\n};\n\nAccessControl.defaultProps = {\n onNext: () => {},\n};\n\nconst Container = styled(Layout)`\n height: 100%;\n overflow-y: auto;\n .header {\n width: 100%;\n }\n .tip {\n margin-left: 32px;\n font-size: 12px;\n margin-top: -8px;\n color: ${(props) => props.theme.palette.text.secondary};\n }\n`;\n","import styled from '@emotion/styled';\n\nconst Required = styled.span`\n color: ${(props) => props.theme.palette.error.main};\n &::before {\n content: '*';\n }\n`;\n\nexport default Required;\n","import { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport joinUrl from 'url-join';\n\nimport Box from '@mui/material/Box';\nimport Link from '@mui/material/Link';\nimport LaunchIcon from '@mui/icons-material/Launch';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport DidConnect from '@arcblock/did-connect/lib/Connect';\nimport DidAddress from '@arcblock/did-connect/lib/Address';\nimport Spinner from '@arcblock/ux/lib/Spinner';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport { useSessionContext } from '../../contexts/session';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nexport default function Fuel({ onNext, onPrevious }) {\n const { locale, t } = useContext(LocaleContext);\n const { blocklet, gas, tokenInfo, actions } = useBlockletContext();\n const { api } = useSessionContext();\n const [open, setOpen] = useState(false);\n const { need = '', current = '', owe = 99999, deficiency, symbol = '', endpoint } = gas || {};\n const { origin: explorer = '/' } = endpoint ? new URL(endpoint) : {};\n\n useEffect(() => {\n const timer = setInterval(() => {\n actions.refreshFuel();\n }, 2000);\n\n return () => {\n clearInterval(timer);\n };\n }, []); // eslint-disable-line\n\n const onSuccess = () => {\n setOpen(false);\n };\n\n if (!gas) {\n return (\n <Box display=\"flex\" justifyContent=\"center\" alignItems=\"center\" width=\"100%\">\n <Spinner />\n </Box>\n );\n }\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('setup.fuel.title')} onClickBack={onPrevious} />\n </div>\n\n <Box className=\"qr-body\">\n <Box mb={6} className=\"tip\">\n {t('setup.fuel.tipStart').replace('slot', '')}\n <span className=\"amount\">{`${need} ${symbol}`}</span>\n {t('setup.fuel.tipEnd')}\n </Box>\n <Box fontSize={16} fontWeight=\"fontWeightBold\" mb={0.5}>\n {t('setup.fuel.addressTitle')}\n </Box>\n <Box display=\"flex\" alignItems=\"center\">\n <DidAddress className=\"address\">{blocklet.appDid}</DidAddress>\n <Link\n style={{ lineHeight: 1 }}\n target=\"_blank\"\n href={joinUrl(explorer, '/explorer/accounts/', blocklet.appDid)}\n underline=\"hover\">\n <LaunchIcon className=\"icon-launch\" />\n </Link>\n </Box>\n <Box my={2}>\n <Button color=\"primary\" onClick={() => setOpen(true)} disabled={!owe}>\n {t('setup.fuel.fuelApp')}\n </Button>\n </Box>\n <DidConnect\n popup\n open={open}\n action=\"fuel\"\n checkFn={api.get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n onSuccess={onSuccess}\n onClose={() => setOpen(false)}\n locale={locale}\n messages={{\n title: t('setup.connect.title'),\n scan: t('setup.connect.scan'),\n confirm: t('setup.connect.confirm'),\n success: t('setup.connect.success'),\n }}\n extraParams={{ amount: deficiency, ...tokenInfo, endpoint }}\n />\n\n <Box display=\"flex\" color=\"text.secondary\">\n <Box display=\"flex\">\n <Box>{t('setup.fuel.need')}:</Box>\n <Box ml={0.5} color=\"primary.main\" fontWeight=\"fontWeightBold\">\n {need}\n </Box>\n </Box>\n <Box display=\"flex\" ml={3}>\n <Box>{t('setup.fuel.current')}:</Box>\n <Box ml={0.5} color={owe > 0 ? 'error.main' : 'primary.main'} fontWeight=\"fontWeightBold\">\n {current}\n </Box>\n </Box>\n </Box>\n </Box>\n\n <StepActions mt={8}>\n <Button disabled={owe > 0} onClick={() => onNext()}>\n {t('setup.next')}\n </Button>\n </StepActions>\n </Container>\n );\n}\n\nFuel.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\nFuel.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n\nconst Container = styled(Layout)`\n .qr-body {\n width: 580px;\n ${(props) => props.theme.breakpoints.down('md')} {\n width: 80%;\n }\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .tip {\n font-size: 16px;\n font-weight: bold;\n }\n\n .address {\n width: 100%;\n text-align: center;\n }\n\n .amount {\n color: ${(props) => props.theme.palette.primary.main};\n }\n\n .icon-launch {\n font-size: 16px;\n margin-left: 6px;\n line-height: 1;\n color: ${(props) => props.theme.palette.primary.main};\n }\n }\n`;\n","import { useState, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\n\nimport ResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\n\nimport Box from '@mui/material/Box';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Toast from '@abtnode/ux/lib/toast';\nimport { getAccessUrl } from '@abtnode/ux/lib/util';\nimport { evaluateURLs } from '@abtnode/util/lib/url-evaluation';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport api from '../../libs/api';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport { PREFIX } from '../../util';\n\nexport default function Complete({ onPrevious }) {\n const { t } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [status, setStatus] = useState('starting'); // stopped, starting, running\n const [startupError, setStartupError] = useState();\n const { blocklet } = useBlockletContext();\n const [recommendedURL, setRecommendedURL] = useState('');\n const fromLauncher = new URL(window.location.href).searchParams.get('from_launcher');\n\n const isStopped = !['starting', 'running'].includes(status);\n const isStarting = status === 'starting';\n const statusText = {\n stopped: t('blocklet.start'),\n starting: t('blocklet.starting'),\n running: t('blocklet.open'),\n };\n\n const visitBlocklet = () => {\n const url = new URL(window.location.href);\n const redirect = url.searchParams.get('redirect');\n if (redirect) {\n window.location.href = new URL(redirect, recommendedURL).href;\n } else {\n window.location.href = recommendedURL;\n }\n };\n\n const startBlocklet = async () => {\n setLoading(true);\n setStatus('starting');\n try {\n await api.post('/blocklet/start', {\n fromSetup: true,\n });\n setLoading(false);\n setStatus('running');\n } catch (err) {\n const errMsg = err?.response?.data || err.message;\n Toast.error(errMsg);\n setLoading(false);\n setStatus('stopped');\n setStartupError(errMsg);\n }\n };\n\n useEffect(() => {\n setStatus(blocklet.status);\n if (!['starting', 'running'].includes(blocklet.status)) {\n startBlocklet();\n }\n }, []); // eslint-disable-line\n\n useEffect(() => {\n const _setRecommendedURL = async () => {\n const results = await evaluateURLs(blocklet.site.domainAliases.map((item) => getAccessUrl(item.value, PREFIX)));\n setRecommendedURL(results[0].url);\n };\n if (!recommendedURL) {\n _setRecommendedURL();\n }\n }, [blocklet, recommendedURL]);\n\n const serverUrl = localStorage.getItem('blocklet-server-url');\n const title = startupError ? t('setup.complete.failedTitle') : t('setup.complete.title');\n\n const isButtonLoading = isStarting || !recommendedURL;\n\n if (fromLauncher && !isButtonLoading) {\n if (isStopped) {\n startBlocklet();\n } else {\n visitBlocklet();\n }\n }\n\n return (\n <Container>\n <StyledResultMessage\n variant={startupError ? 'error' : 'success'}\n title={title}\n footer={\n <StepActions>\n {isStopped && (\n <Button variant=\"outlined\" disabled={loading} onClick={() => onPrevious()}>\n {t('setup.previous')}\n </Button>\n )}\n\n {fromLauncher ? (\n <LinkEle rel=\"noreferrer\">\n <Spinner size={[16, 10]} style={{ marginRight: 14 }} /> {t('common.redirecting')}\n </LinkEle>\n ) : (\n <>\n <Button\n style={{ marginLeft: isStopped ? 24 : 0 }}\n disabled={loading || isStarting}\n onClick={() => (isStopped ? startBlocklet() : visitBlocklet())}\n loading={isButtonLoading}>\n {statusText[status] || statusText.stopped}\n </Button>\n\n {(status === 'running' || startupError) && !!serverUrl && (\n <Box width=\"100%\" mt={2}>\n <a href={serverUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"back-to-server-link\">\n {t('setup.complete.backToServer')}\n </a>\n </Box>\n )}\n </>\n )}\n </StepActions>\n }\n />\n </Container>\n );\n}\n\nconst Container = styled(Layout)`\n justify-content: center;\n .icon-success {\n width: 64px;\n height: 64px;\n color: ${(props) => props.theme.palette.success.main};\n }\n .back-to-server-link {\n color: ${(props) => props.theme.palette.primary.main};\n }\n`;\n\nconst StyledResultMessage = styled(ResultMessage)`\n && .result-footer {\n height: 120px;\n > div {\n flex-wrap: wrap;\n }\n }\n`;\n\nComplete.propTypes = {\n onPrevious: PropTypes.func,\n};\n\nComplete.defaultProps = {\n onPrevious: () => {},\n};\n\nconst LinkEle = styled.a`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 36px;\n color: ${(props) => props.theme.palette.primary.main};\n`;\n","import { useEffect } from 'react';\nimport { Routes, Route, Navigate, useNavigate } from 'react-router-dom';\nimport styled from '@emotion/styled';\nimport joinUrl from 'url-join';\nimport { Global, css } from '@emotion/react';\n\nimport Box from '@mui/material/Box';\nimport Layout from '@blocklet/launcher-layout';\nimport { StepProvider } from '@blocklet/launcher-layout/lib/context/step';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport HeaderAddon from '@abtnode/ux/lib/layout/addon';\nimport ServerLogoNotext from '@arcblock/icons/lib/ServerLogoNotext';\nimport ServerLogo from '@arcblock/icons/lib/ServerLogo';\n\nimport { WELLKNOWN_SERVICE_PATH_PREFIX } from '@abtnode/constant';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\n\nimport { hasRequiredEnvironments, saveServerUrl, PREFIX } from '../util';\nimport { useBlockletContext } from '../contexts/blocklet';\nimport { SessionContext } from '../contexts/session';\nimport Connect from '../components/setup/connect';\nimport Config from '../components/setup/config';\nimport Domain from '../components/setup/domain';\nimport AccessControl from '../components/setup/access-control';\nimport Required from '../components/setup/required';\nimport Fuel from '../components/setup/fuel';\nimport Complete from '../components/setup/complete';\n\nexport default function BlockletSetup() {\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down('md'));\n const { t, locale } = useLocaleContext();\n const navigate = useNavigate();\n const { meta, blocklet, actions } = useBlockletContext();\n const serverUrl = localStorage.getItem('blocklet-server-url');\n\n const fromLauncher = new URL(window.location.href).searchParams.get('from_launcher');\n\n useEffect(() => {\n actions.refreshMeta();\n actions.refreshBlocklet({ showError: false });\n // setup 流程刚开始时, 保存 serverUrl 到 localStorage, 方便在 setup 流程结束后返回 server\n saveServerUrl();\n }, []); // eslint-disable-line\n\n useEffect(() => {\n actions.refreshFuel({ showError: false });\n }, [blocklet?.meta?.did]); // eslint-disable-line\n\n const basePath = `${WELLKNOWN_SERVICE_PATH_PREFIX}/setup`;\n const steps = [\n {\n key: 'connect',\n name: t('setup.steps.connect'),\n path: joinUrl(basePath, 'connect'),\n },\n {\n key: 'access',\n name: t('setup.steps.access'),\n path: joinUrl(basePath, 'access'),\n },\n {\n key: 'domain',\n name: t('setup.steps.domain'),\n path: joinUrl(basePath, 'domain'),\n },\n {\n key: 'config',\n name: (\n <>\n {t('setup.steps.config')} {hasRequiredEnvironments(meta) && <Required />}\n </>\n ),\n path: joinUrl(basePath, 'config'),\n },\n meta?.requirements?.fuels?.length\n ? {\n key: 'fuel',\n name: (\n <>\n {t('setup.steps.fuel')} <Required />\n </>\n ),\n path: joinUrl(basePath, 'fuel'),\n }\n : null,\n ].filter(Boolean);\n\n const stepIndex = steps.findIndex(\n (x) => `${PREFIX.replace(/\\/$/, '')}${basePath}/${x.key}` === window.location.pathname\n );\n\n const logoUrl = joinUrl(PREFIX, WELLKNOWN_SERVICE_PATH_PREFIX, '/blocklet/logo');\n\n const onNext = async (key) => {\n const { search } = new URL(window.location.href);\n if (!key) {\n if (steps[stepIndex + 1]) {\n navigate(`${joinUrl(basePath, steps[stepIndex + 1].key)}${search}`);\n } else {\n navigate(`${joinUrl(basePath, 'complete')}${search}`);\n }\n } else {\n const index = steps.findIndex((x) => x.key === key);\n if (index > -1) {\n navigate(`${joinUrl(basePath, steps[index].key)}${search}`);\n } else {\n navigate(`${joinUrl(basePath, 'complete')}${search}`);\n }\n }\n\n await actions.refreshBlocklet();\n };\n\n const onPrevious = () => {\n navigate(-1);\n };\n\n function withSetup(Component, props) {\n if (!blocklet) {\n return (\n <Box width=\"100%\" height=\"100%\" display=\"flex\" justifyContent=\"center\" alignItems=\"center\">\n <Spinner />\n </Box>\n );\n }\n\n return <Component blocklet={blocklet} {...props} onNext={onNext} onPrevious={onPrevious} />;\n }\n\n const clickLogo = () => {\n window.open(serverUrl);\n };\n\n const logo = !isMobile ? (\n <ServerLogo onClick={clickLogo} width=\"128\" height=\"48\" style={{ marginTop: -1, cursor: 'pointer' }} />\n ) : (\n <ServerLogoNotext onClick={clickLogo} width=\"32\" height=\"32\" style={{ cursor: 'pointer' }} />\n );\n\n const totalSteps = [\n {\n key: 'agreement',\n name: t('setup.steps.introduction'),\n },\n {\n key: 'select-node',\n name: t('setup.steps.selectNodeDesc'),\n },\n {\n key: 'install',\n name: t('setup.steps.launchAppDesc'),\n },\n {\n key: 'setup',\n name: t('setup.steps.setupAppDesc'),\n children: steps,\n },\n {\n key: 'complete',\n name: t('setup.steps.launched'),\n path: joinUrl(basePath, 'complete'),\n },\n ];\n\n if (!fromLauncher) {\n totalSteps.splice(1, 1);\n }\n\n return (\n <StyledStepProvider steps={totalSteps}>\n <Global styles={launcherGlobalStyle} />\n <Layout\n locale={locale}\n blockletMeta={{ ...meta, title: getDisplayName({ ...blocklet, meta }) }}\n navLogo={logo}\n pcWidth=\"80%\"\n style={{ height: '100%' }}\n logoUrl={logoUrl}\n useOfSkeleton={false}\n headerEndAddons={<HeaderAddon SessionContext={SessionContext} sessionManagerProps={{ disableLogout: true }} />}\n launchingText={t('setup.title')}>\n <Routes>\n <Route path=\"connect\" element={<Connect onNext={onNext} />} />\n <Route path=\"domain\" element={withSetup(Domain)} />\n <Route path=\"config\" element={withSetup(Config)} />\n <Route path=\"access\" element={withSetup(AccessControl)} />\n <Route path=\"fuel\" element={withSetup(Fuel)} />\n <Route path=\"complete\" element={withSetup(Complete)} />\n <Route path=\"*\" element={<Navigate to={`connect${window.location.search}`} replace />} />\n </Routes>\n </Layout>\n </StyledStepProvider>\n );\n}\n\nconst launcherGlobalStyle = css`\n html,\n body,\n #root,\n #root > .wrapper {\n height: 100%;\n }\n`;\n\nconst StyledStepProvider = styled(StepProvider)``;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ContentLayout;\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _templateObject;\nconst _excluded = [\"children\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ContentLayout(_ref) {\n let {\n children\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, _objectSpread(_objectSpread({}, props), {}, {\n children: children\n }));\n}\nContentLayout.propTypes = {\n children: _propTypes.default.any.isRequired\n};\nconst Container = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n width: 100%;\\n height: 100%;\\n\\n .header {\\n text-align: center;\\n }\\n\\n .body {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n margin-top: 30px;\\n width: 100%;\\n min-height: 200px;\\n flex: 1;\\n\\n \", \" {\\n padding: 24px;\\n }\\n\\n \", \" {\\n padding: 0 16px 16px;\\n }\\n }\\n\\n .footer {\\n display: flex;\\n justify-content: center;\\n\\n \", \" {\\n padding-bottom: 34px;\\n }\\n\\n \", \" {\\n margin-top: auto;\\n padding-bottom: 10px;\\n }\\n }\\n\"])), props => props.theme.breakpoints.up('md'), props => props.theme.breakpoints.down('md'), props => props.theme.breakpoints.up('sm'), props => props.theme.breakpoints.down('md'));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = HeaderAddon;\nvar _react = require(\"react\");\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _IconButton = _interopRequireDefault(require(\"@mui/material/IconButton\"));\nvar _reactRouterDom = require(\"react-router-dom\");\nvar _SessionManager = _interopRequireDefault(require(\"@arcblock/did-connect/lib/SessionManager\"));\nvar _selector = _interopRequireDefault(require(\"@arcblock/ux/lib/Locale/selector\"));\nvar _context = require(\"@arcblock/ux/lib/Locale/context\");\nvar _Globe = _interopRequireDefault(require(\"@arcblock/icons/lib/Globe\"));\nvar _QuestionMarkCircle = _interopRequireDefault(require(\"@arcblock/icons/lib/QuestionMarkCircle\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _templateObject;\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction HeaderAddon(_ref) {\n let {\n SessionContext,\n extraItems,\n showLocale,\n showHelper,\n showSessionManager,\n sessionManagerProps\n } = _ref;\n const {\n session\n } = (0, _react.useContext)(SessionContext);\n const {\n locale\n } = (0, _react.useContext)(_context.LocaleContext);\n const location = (0, _reactRouterDom.useLocation)();\n const docPaths = {\n '/dashboard': '/introduction/abtnode-overview',\n '/store': '/marketplace',\n '/blocklets': '/blocklet',\n '/router/rules': '/router',\n '/router/engine': '/router',\n '/settings/basic': '/misc',\n '/settings/team': '/misc/member-management',\n '/console': '/misc/graphql-console'\n };\n const onHelpClick = () => {\n const pathName = location.pathname;\n let path = '';\n if (pathName.indexOf('/blocklets') > -1) {\n path = docPaths['/blocklets'];\n } else if (pathName.indexOf('/store') > -1) {\n path = docPaths['/store'];\n } else if (docPaths[pathName]) {\n path = docPaths[pathName];\n }\n window.open(\"https://docs.arcblock.io/abtnode/\".concat(locale).concat(path), '_blank');\n };\n return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, {\n children: [extraItems.map((x, index) => /*#__PURE__*/(0, _react.cloneElement)(x, {\n key: index\n })), showLocale && /*#__PURE__*/(0, _jsxRuntime.jsx)(_selector.default, {\n \"data-cy\": \"locale-addon\",\n icon: _Globe.default,\n size: 23,\n showText: false,\n className: \"locale-addon\"\n }), showHelper && /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {\n onClick: onHelpClick,\n children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_QuestionMarkCircle.default, {})\n }), showSessionManager && /*#__PURE__*/(0, _jsxRuntime.jsx)(_SessionManager.default, _objectSpread({\n session: session,\n size: 24,\n showRole: true\n }, sessionManagerProps))]\n });\n}\nHeaderAddon.propTypes = {\n SessionContext: _propTypes.default.object.isRequired,\n webWalletUrl: _propTypes.default.string,\n extraItems: _propTypes.default.array,\n showLocale: _propTypes.default.bool,\n showSessionManager: _propTypes.default.bool,\n showHelper: _propTypes.default.bool,\n sessionManagerProps: _propTypes.default.object\n};\nHeaderAddon.defaultProps = {\n webWalletUrl: '',\n extraItems: [],\n showLocale: true,\n showSessionManager: true,\n showHelper: true,\n sessionManagerProps: {}\n};\nconst Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\\n .MuiIconButton-root svg {\\n width: 26px;\\n height: 26px;\\n }\\n\\n .user-addon {\\n .user-avatar {\\n width: 28px;\\n border-radius: 14px;\\n height: auto;\\n }\\n }\\n\\n \", \" {\\n > button,\\n > a {\\n padding-left: 8px;\\n padding-right: 8px;\\n }\\n }\\n\"])), props => props.theme.breakpoints.down('md'));"],"names":["Connect","onNext","useLocaleContext","t","locale","useSessionContext","api","session","onConnect","result","decrypt","setSessionToken","sessionToken","refresh","Toast","message","WrapConnect","popup","open","hideCloseButton","action","checkFn","get","checkTimeout","socketUrl","webWalletUrl","getWebWalletUrl","onSuccess","messages","title","scan","confirm","success","extraParams","setup","defaultProps","styled","DidConnect","ContentLayout","props","theme","breakpoints","up","StepActions","blocklet","onStartNow","children","disabled","hasRequiredSteps","meta","Center","Between","Button","className","variant","color","onClick","Box","display","alignItems","down","StyledButton","Config","onPrevious","isMobile","useMediaQuery","useState","loading","setLoading","editingItem","setEditingItem","useBlockletContext","actions","selfConfigs","configs","filter","x","BLOCKLET_CONFIGURABLE_KEY","key","customColor","environments","find","configurableEnvs","description","value","custom","componentType","componentProps","childrenConfigs","forEachChildSync","b","ancestorDids","ancestors","slice","map","did","push","childDid","concat","sortedConfig","uniqBy","flatten","sort","a","required","missingRequiredConfigs","getAppMissingConfigs","length","onSubmitConfig","config","omit","configBlocklet","defaultValue","schemaList","item","rest","style","marginBottom","subTitle","onClickBack","bottom","mt","refreshFuel","showError","margin","paddingTop","schema","onChange","changeValue","currentItem","includes","isCertInProgress","cert","status","waitForCert","domain","Promise","resolve","reject","timer","setInterval","client","input","clearInterval","addCert","Domain","useContext","LocaleContext","loadingText","setLoadingText","error","setError","ip","setIp","showCertFailed","setShowCertFailed","domains","site","domainAliases","defaultCustomDomain","isProtected","systemDomains","replaceSlotToIp","setDomain","addDomain","secure","sleep","some","id","domainAlias","dryRun","submitDomain","address","data","Error","curDomain","window","location","hostname","generated","useEffect","then","catch","err","console","Dialog","PaperProps","minHeight","showCloseButton","mb","fontWeight","size","textDecoration","component","TextField","marginTop","label","fullWidth","e","target","errMessage","validateDomain","autoFocus","helperText","mx","Container","Layout","PublicInstance","Tooltip","IconButton","InfoOutlined","fontSize","memo","AccessControl","useTheme","setValue","publicToStore","setPublicToStore","getPublicInstance","getWhoCanAccess","submit","whoCanAccess","configWhoCanAccess","handleChange","event","handleCheckBox","isPublic","checked","configPublicToStore","iconStyle","marginRight","verticalAlign","palette","text","secondary","FormControl","RadioGroup","name","AccessConfig","rule","FormControlLabel","control","Radio","icon","WHO_CAN_ACCESS","source","Checkbox","main","Fuel","gas","tokenInfo","setOpen","need","current","owe","deficiency","symbol","endpoint","URL","origin","explorer","replace","appDid","Link","lineHeight","href","joinUrl","underline","Launch","my","onClose","amount","ml","justifyContent","width","Spinner","primary","Complete","setStatus","startupError","setStartupError","recommendedURL","setRecommendedURL","fromLauncher","searchParams","isStopped","isStarting","statusText","stopped","starting","running","visitBlocklet","redirect","startBlocklet","fromSetup","errMsg","response","_setRecommendedURL","evaluateURLs","getAccessUrl","PREFIX","results","url","serverUrl","localStorage","getItem","isButtonLoading","StyledResultMessage","footer","LinkEle","rel","marginLeft","ResultMessage","BlockletSetup","navigate","useNavigate","refreshMeta","refreshBlocklet","saveServerUrl","basePath","WELLKNOWN_SERVICE_PATH_PREFIX","steps","path","hasRequiredEnvironments","requirements","fuels","Boolean","stepIndex","findIndex","pathname","logoUrl","search","index","withSetup","Component","height","clickLogo","logo","ServerLogoNotext","cursor","ServerLogo","totalSteps","splice","StyledStepProvider","Global","styles","launcherGlobalStyle","blockletMeta","getDisplayName","navLogo","pcWidth","useOfSkeleton","headerEndAddons","SessionContext","sessionManagerProps","disableLogout","launchingText","element","to","css","StepProvider","exports","_templateObject","_styled","_interopRequireDefault","require","_propTypes","_jsxRuntime","_excluded","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","i","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","configurable","writable","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","prototype","propertyIsEnumerable","call","_ref","jsx","propTypes","any","isRequired","strings","raw","div","freeze","HeaderAddon","_react","_IconButton","_reactRouterDom","_SessionManager","_selector","_context","_Globe","_QuestionMarkCircle","extraItems","showLocale","showHelper","showSessionManager","useLocation","docPaths","jsxs","Div","cloneElement","showText","pathName","showRole","string","array","bool"],"sourceRoot":""}
1
+ {"version":3,"file":"static/js/301.af995050.chunk.js","mappings":"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","sources":["components/setup/connect.js","components/setup/layout.js","components/setup/step-actions.js","components/setup/button.js","components/setup/config.js","components/setup/domain.js","components/setup/public-instance.js","components/setup/access-control.js","components/setup/required.js","components/setup/fuel.js","components/setup/complete.js","pages/setup.js","../../ux/lib/launch-blocklet/content-layout.js","../../ux/lib/layout/addon.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport DidConnect from '@arcblock/did-connect/lib/Connect';\nimport Toast from '@abtnode/ux/lib/toast';\nimport styled from '@emotion/styled';\n\nimport { useSessionContext } from '../../contexts/session';\nimport { getWebWalletUrl, setSessionToken } from '../../util';\n\nexport default function Connect({ onNext }) {\n const { t, locale } = useLocaleContext();\n const { api, session } = useSessionContext();\n\n const onConnect = async (result, decrypt) => {\n setSessionToken(decrypt(result.sessionToken));\n try {\n await session.refresh();\n onNext();\n } catch (err) {\n Toast.error(err.message);\n }\n };\n\n return (\n <WrapConnect\n popup\n open\n hideCloseButton\n action=\"setup\"\n checkFn={api.get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n webWalletUrl={getWebWalletUrl()}\n onSuccess={onConnect}\n locale={locale}\n messages={{\n title: t('setup.connect.title'),\n scan: t('setup.connect.scan'),\n confirm: t('setup.connect.confirm'),\n success: t('setup.connect.success'),\n }}\n extraParams={{ setup: true }}\n />\n );\n}\n\nConnect.propTypes = {\n onNext: PropTypes.func,\n};\n\nConnect.defaultProps = {\n onNext: () => {},\n};\n\nconst WrapConnect = styled(DidConnect)`\n .action-info-desc {\n padding: 0 72px;\n }\n`;\n","import styled from '@emotion/styled';\n\nimport ContentLayout from '@abtnode/ux/lib/launch-blocklet/content-layout';\n\nconst Container = styled(ContentLayout)`\n display: flex;\n flex-direction: column;\n padding-bottom: 16px;\n ${(props) => props.theme.breakpoints.up('md')} {\n padding-top: 34px;\n padding-bottom: 34px;\n }\n .header {\n width: 100%;\n margin-bottom: 34px;\n ${(props) => props.theme.breakpoints.up('md')} {\n margin-bottom: 64px;\n }\n }\n .container-main {\n position: relative;\n flex: 1;\n width: 100%;\n }\n .container-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n overflow-y: auto;\n }\n`;\n\nexport default Container;\n","import PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\n\nimport Box from '@mui/material/Box';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\n\nimport { hasRequiredSteps } from '../../util';\n\nexport default function StepActions({ blocklet, onStartNow, children, disabled }) {\n const { t } = useLocaleContext();\n\n if (!blocklet || hasRequiredSteps(blocklet.meta)) {\n return <Center>{children}</Center>;\n }\n\n return (\n <Between>\n <Button\n className=\"start-now\"\n variant=\"contained\"\n color=\"primary\"\n disabled={disabled}\n onClick={() => onStartNow()}>\n {t('setup.startNow')}\n </Button>\n <Box display=\"flex\" alignItems=\"center\">\n {children}\n </Box>\n </Between>\n );\n}\n\nStepActions.propTypes = {\n blocklet: PropTypes.object,\n onStartNow: PropTypes.func,\n children: PropTypes.any,\n disabled: PropTypes.bool,\n};\nStepActions.defaultProps = {\n blocklet: null,\n onStartNow: () => {},\n children: null,\n disabled: false,\n};\n\nconst Center = styled(Box)`\n padding-top: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n .bottom-button {\n min-width: 200px;\n }\n ${(props) => props.theme.breakpoints.down('md')} {\n .bottom-button {\n min-width: 150px;\n }\n }\n`;\n\nconst Between = styled(Box)`\n padding-bottom: 48px;\n padding-top: 24px;\n margin: 0 auto;\n width: 80%;\n display: flex;\n align-items: center;\n justify-content: space-around;\n .start-now {\n min-width: 140px;\n }\n .bottom-button {\n min-width: 120px;\n }\n ${(props) => props.theme.breakpoints.down('lg')} {\n width: 100%;\n }\n\n ${(props) => props.theme.breakpoints.down('md')} {\n .start-now {\n min-width: 100px;\n }\n .bottom-button {\n min-width: 80px;\n }\n }\n`;\n","import Button from '@arcblock/ux/lib/Button';\n\nexport default function StyledButton({ ...props }) {\n return <Button className=\"bottom-button\" variant=\"contained\" color=\"primary\" {...props} />;\n}\n","import { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport omit from 'lodash/omit';\nimport uniqBy from 'lodash/uniqBy';\nimport flatten from 'lodash/flatten';\n\nimport Box from '@mui/material/Box';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport SchemaForm from '@abtnode/ux/lib/schema-form';\nimport Toast from '@abtnode/ux/lib/toast';\nimport CompactLayout from '@blocklet/launcher-layout/lib/compact-layout';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\n\nimport { getAppMissingConfigs, forEachChildSync } from '@blocklet/meta/lib/util';\nimport { BLOCKLET_CONFIGURABLE_KEY } from '@blocklet/meta/lib/constants';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nexport default function Config({ onNext, onPrevious }) {\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down('md'));\n const { t } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [editingItem, setEditingItem] = useState(null);\n const { blocklet, actions } = useBlockletContext();\n\n const selfConfigs = (blocklet.configs || []).filter((x) => !BLOCKLET_CONFIGURABLE_KEY[x.key]);\n const customColor = blocklet.environments.find((x) => x.key === 'BLOCKLET_PASSPORT_COLOR');\n\n const configurableEnvs = [\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_NAME,\n description: t('blocklet.config.name'),\n value: blocklet.environments.find((x) => x.key === 'BLOCKLET_APP_NAME').value,\n custom: true,\n },\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_DESCRIPTION,\n description: t('blocklet.config.description'),\n value: blocklet.environments.find((x) => x.key === 'BLOCKLET_APP_DESCRIPTION').value,\n custom: true,\n },\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_PASSPORT_COLOR,\n description: t('blocklet.config.passportColor'),\n value: customColor ? customColor.value : 'auto',\n custom: true,\n componentType: 'passport',\n componentProps: {\n blocklet,\n },\n },\n ];\n\n const childrenConfigs = [];\n forEachChildSync(blocklet, (b, { ancestors }) => {\n const ancestorDids = ancestors.slice(1).map((x) => x.meta.did);\n\n childrenConfigs.push((b.configs || []).map((x) => ({ ...x, childDid: ancestorDids.concat(b.meta.did) })));\n });\n\n const filteredConfigs = uniqBy(flatten([...selfConfigs, ...childrenConfigs]), 'key').filter((x) => !!x.key);\n\n const sortedConfig = filteredConfigs.sort((a, b) => {\n if (a.required && !b.required) {\n return -1;\n }\n\n if (b.required && !a.required) {\n return 1;\n }\n\n return 0;\n });\n\n const missingRequiredConfigs = getAppMissingConfigs(blocklet).length;\n\n const onSubmitConfig = async (value) => {\n const { childDid, ...config } = editingItem;\n\n const configs = [\n {\n // omit the backend unused configs\n ...omit(config, ['componentType', 'componentProps']),\n value,\n },\n ];\n\n try {\n setLoading(true);\n await actions.configBlocklet({\n configs,\n childDid,\n });\n } catch (err) {\n Toast.error(err.message);\n } finally {\n setLoading(false);\n }\n };\n\n const defaultValue = {};\n\n const schemaList = [...configurableEnvs, ...sortedConfig].map((item) => {\n const { value, ...rest } = item;\n defaultValue[item.key] = value;\n return {\n ...rest,\n };\n });\n\n const clickBack = () => {\n onPrevious();\n };\n\n return (\n <Layout>\n <div className=\"header\" style={{ marginBottom: 16 }}>\n <PageHeader title={t('setup.config.title')} subTitle={t('setup.config.subTitle')} onClickBack={clickBack} />\n </div>\n <div className=\"container-main\">\n <div className=\"container-inner\">\n <CompactLayout\n bottom={\n <StepActions\n mt={8}\n disabled={loading || editingItem}\n blocklet={blocklet}\n onStartNow={() => onNext('complete')}>\n <Box display=\"flex\" alignItems=\"center\">\n <Button\n disabled={loading || missingRequiredConfigs || editingItem}\n onClick={() => {\n actions.refreshFuel({ showError: false });\n onNext();\n }}>\n {t('setup.next')}\n </Button>\n </Box>\n </StepActions>\n }>\n <SchemaForm\n style={{ margin: '0 auto 20px', paddingTop: isMobile ? 0 : 38 }}\n loading={loading}\n schema={schemaList}\n defaultValue={defaultValue}\n onChange={(changeValue, { action, currentItem }) => {\n if (action === 'edit') {\n setEditingItem(currentItem);\n } else if (['cancel', 'confirm'].includes(action)) {\n setEditingItem(null);\n }\n if (action === 'confirm') {\n onSubmitConfig(changeValue[currentItem.key]);\n }\n }}\n />\n </CompactLayout>\n </div>\n </div>\n </Layout>\n );\n}\n\nConfig.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\n\nConfig.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n","import { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\n\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport Toast from '@abtnode/ux/lib/toast';\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport { validateDomain, sleep } from '@abtnode/ux/lib/util';\nimport { BLOCKLET_CONFIGURABLE_KEY } from '@blocklet/meta/lib/constants';\nimport Dialog from '@arcblock/ux/lib/Dialog';\nimport { replaceSlotToIp } from '@blocklet/meta/lib/util';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport api from '../../libs/api';\nimport client from '../../libs/client';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nconst isCertInProgress = (cert) => ['waiting', 'creating', 'renewaling'].includes(cert?.status);\n\nconst waitForCert = (domain) =>\n new Promise((resolve, reject) => {\n const timer = setInterval(async () => {\n try {\n const { cert } = await client.findCertificateByDomain({ input: { domain } });\n\n if (cert?.status === 'generated') {\n clearInterval(timer);\n resolve(true);\n return;\n }\n\n if (!isCertInProgress(cert)) {\n clearInterval(timer);\n resolve(false);\n }\n } catch (err) {\n clearInterval(timer);\n reject(err);\n }\n }, 1000);\n });\n\nconst addCert = async (domain) => {\n await client.issueLetsEncryptCert({ input: { domain } });\n return waitForCert(domain);\n};\n\nexport default function Domain({ onNext, onPrevious }) {\n const { t, locale } = useContext(LocaleContext);\n const [loadingText, setLoadingText] = useState('');\n const [error, setError] = useState(false);\n const { blocklet } = useBlockletContext();\n const [ip, setIp] = useState('');\n const [showCertFailed, setShowCertFailed] = useState(false);\n\n const site = blocklet?.site || {};\n const domains = site.domainAliases || [];\n const defaultCustomDomain = domains.filter((x) => !x.isProtected)[0]?.value || '';\n const systemDomains = domains.filter((x) => x.isProtected).map((x) => replaceSlotToIp(x.value, ip));\n const [domain, setDomain] = useState(defaultCustomDomain);\n\n const addDomain = async (secure) => {\n setLoadingText(t('setup.domain.addingDomain'));\n await sleep(1500);\n if (!domains.some((x) => x.value === domain)) {\n await client.addDomainAlias({ input: { id: blocklet.site.id, domainAlias: domain } });\n await client.takeRoutingSnapshot({\n input: { dryRun: false, message: `add domain ${domain} from blocklet services` },\n });\n }\n await client.configBlocklet({\n input: {\n did: [blocklet.meta.did],\n configs: [{ key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_URL, value: `http${secure ? 's' : ''}://${domain}` }],\n },\n });\n onNext();\n };\n\n const submitDomain = async () => {\n if (loadingText) {\n return;\n }\n\n try {\n setLoadingText(t('setup.domain.checkingResolvable'));\n await sleep(1500);\n const {\n data: { address },\n } = await api.get(`/dns-resolve?hostname=${domain}`);\n if (!address) {\n throw new Error(t('setup.domain.cannotResolve', { domain }));\n }\n\n if (address !== ip) {\n throw new Error(t('setup.domain.resolvedAddressError', { domain, curDomain: window.location.hostname }));\n }\n\n setLoadingText(t('setup.domain.addingCert'));\n let generated = false;\n const { cert } = await client.findCertificateByDomain({ input: { domain } });\n if (!cert) {\n generated = await addCert(domain, locale);\n } else if (cert.status === 'generated') {\n generated = true;\n } else if (['waiting', 'creating', 'renewaling'].includes(cert.status)) {\n generated = await waitForCert(domain, locale);\n } else {\n generated = await addCert(domain, locale);\n }\n\n if (generated) {\n addDomain(generated);\n } else {\n setShowCertFailed(true);\n }\n } catch (err) {\n Toast.error(err.message);\n setLoadingText('');\n }\n };\n\n useEffect(() => {\n api\n .get(`/dns-resolve?hostname=${window.location.hostname}`)\n .then(({ data }) => {\n setIp(data.address || '');\n })\n .catch((err) => {\n console.error(err.message);\n });\n }, []);\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('setup.domain.title')} subTitle={t('setup.domain.subTitle')} onClickBack={onPrevious} />\n </div>\n {showCertFailed && (\n <Dialog\n PaperProps={{\n style: {\n minHeight: 'auto',\n },\n }}\n open={showCertFailed}\n showCloseButton={false}\n title={t('setup.domain.genCertFailed')}\n actions={\n <>\n <Button\n color=\"reverse\"\n variant=\"text\"\n onClick={() => {\n setLoadingText('');\n setShowCertFailed(false);\n }}>\n {t('setup.cancel')}\n </Button>\n <Button\n color=\"primary\"\n variant=\"text\"\n onClick={() => {\n setShowCertFailed(false);\n addDomain(false);\n }}>\n {t('setup.confirm')}\n </Button>\n </>\n }>\n {t('setup.domain.certFailedDesc')}\n </Dialog>\n )}\n <Box className=\"form\">\n <Box>\n <Box mb={1} color=\"text.primary\" fontWeight=\"fontWeightBold\">\n <Box display=\"inline\">{t('setup.domain.skipStart')}</Box>\n <Button\n variant=\"text\"\n size=\"small\"\n disabled={!!loadingText}\n onClick={() => onNext()}\n style={{ paddingTop: 0 }}>\n <span style={{ textDecoration: 'underline' }}>{t('setup.domain.skip')}</span>\n </Button>\n <Box display=\"inline\">{t('setup.domain.skipEnd')}</Box>\n </Box>\n {systemDomains.map((x) => (\n <Box component=\"li\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n {x}\n </Box>\n ))}\n <Box mt={1} fontWeight=\"fontWeightBold\" color=\"text.secondary\">\n {t('setup.domain.certTip')}\n </Box>\n <Box />\n </Box>\n\n <Box mt={4} fontWeight=\"fontWeightBold\">\n {t('setup.domain.subTitle')}\n </Box>\n <TextField\n style={{ marginTop: 16, minHeight: 64 }}\n label={t('setup.domain.label')}\n fullWidth\n value={domain}\n onChange={(e) => {\n const { value } = e.target;\n setDomain(value);\n const errMessage = validateDomain(value, locale);\n setError(errMessage);\n }}\n autoFocus\n size=\"small\"\n variant=\"outlined\"\n error={!!error}\n helperText={error}\n />\n\n {domain && (\n <Box color=\"text.secondary\">\n <Box display=\"flex\">\n {t('setup.domain.tipStart')}\n <Box mx={0.5} color=\"primary.main\" fontWeight=\"fontWeightBold\">\n {domain}\n </Box>\n {t('setup.domain.tipEnd')}\n </Box>\n <Box component=\"li\">\n {t('setup.domain.recordType')}:{' '}\n <Box display=\"inline\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n A\n </Box>\n </Box>\n <Box component=\"li\">\n {t('setup.domain.recordValue')}:{' '}\n <Box display=\"inline\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n {ip}\n </Box>\n </Box>\n </Box>\n )}\n </Box>\n <StepActions mt={8} disabled={!!loadingText} blocklet={blocklet} onStartNow={() => onNext('complete')}>\n {!domain ? (\n <Button variant=\"outlined\" disabled={!!loadingText} onClick={() => onNext()}>\n {t('setup.skip')}\n </Button>\n ) : (\n <Button loading={!!loadingText} disabled={error || !!loadingText || !domain} onClick={() => submitDomain()}>\n {loadingText || t('setup.next')}\n </Button>\n )}\n </StepActions>\n </Container>\n );\n}\n\nDomain.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\nDomain.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n\nconst Container = styled(Layout)`\n height: 100%;\n overflow-y: auto;\n .form {\n width: 580px;\n word-break: break-all;\n ${(props) => props.theme.breakpoints.down('md')} {\n width: 80%;\n }\n }\n`;\n","import { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\n\nfunction PublicInstance({ children }) {\n const { t } = useLocaleContext();\n return (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {children}\n <Tooltip title={t('blocklet.config.access.publicInstanceTip')}>\n <IconButton>\n <InfoOutlinedIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n </div>\n );\n}\nPublicInstance.propTypes = {\n children: PropTypes.any.isRequired,\n};\n\nexport default memo(PublicInstance);\n","import { useState, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\n\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport useTheme from '@mui/material/styles/useTheme';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Toast from '@abtnode/ux/lib/toast';\nimport { WHO_CAN_ACCESS } from '@abtnode/constant';\n\nimport { getWhoCanAccess } from '@blocklet/meta/lib/util';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport { sleep } from '@abtnode/ux/lib/util';\nimport AccessConfig from '@abtnode/ux/lib/who-can-access/config';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\nimport PublicInstance from './public-instance';\n\nexport default function AccessControl({ onNext }) {\n const theme = useTheme();\n const { t, locale } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [value, setValue] = useState('');\n const [publicToStore, setPublicToStore] = useState(false);\n const { blocklet, actions, getPublicInstance } = useBlockletContext();\n\n useEffect(() => {\n setValue(getWhoCanAccess(blocklet));\n setPublicToStore(getPublicInstance(blocklet));\n }, [blocklet]); // eslint-disable-line\n\n const submit = async (whoCanAccess) => {\n try {\n setLoading(true);\n await sleep(800);\n await actions.configWhoCanAccess(whoCanAccess);\n setLoading(false);\n } catch (err) {\n setLoading(false);\n Toast.error(err.message);\n }\n };\n\n const handleChange = async (event) => {\n if (loading) {\n return;\n }\n setValue(event.target.value);\n await submit(event.target.value);\n };\n const handleCheckBox = async (event) => {\n const isPublic = event.target.checked;\n try {\n setLoading(true);\n await actions.configPublicToStore(isPublic);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n Toast.error(error.message);\n }\n };\n\n const iconStyle = {\n marginRight: 4,\n fontSize: 18,\n verticalAlign: 'text-bottom',\n color: theme.palette.text.secondary,\n };\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('blocklet.config.access.description')} />\n </div>\n\n <FormControl component=\"fieldset\">\n <RadioGroup name=\"inherit\" value={value} onChange={handleChange}>\n {AccessConfig.map((rule) => {\n return (\n <div key={rule.value} style={{ marginBottom: 16 }}>\n <FormControlLabel\n value={rule.value}\n control={<Radio color=\"primary\" />}\n label={\n <span>\n <rule.icon style={iconStyle} />\n {rule.title[locale]}\n </span>\n }\n />\n <Box className=\"tip\">\n {rule.description[locale]}\n {rule.value === WHO_CAN_ACCESS.ALL && value === WHO_CAN_ACCESS.ALL && blocklet.source === 'registry' && (\n <PublicInstance>\n <FormControlLabel\n style={{ marginRight: 0 }}\n value={rule.value}\n control={<Checkbox size=\"small\" />}\n label={<span>{t('blocklet.config.access.publicToStore')}</span>}\n onChange={handleCheckBox}\n checked={publicToStore}\n disabled={loading}\n />\n </PublicInstance>\n )}\n </Box>\n </div>\n );\n })}\n </RadioGroup>\n </FormControl>\n\n <StepActions mt={8} disabled={loading} blocklet={blocklet} onStartNow={() => onNext('complete')}>\n <Box display=\"flex\" alignItems=\"center\">\n <Button loading={loading} disabled={loading} onClick={() => onNext()}>\n {t('setup.continue')}\n </Button>\n </Box>\n </StepActions>\n </Container>\n );\n}\n\nAccessControl.propTypes = {\n onNext: PropTypes.func,\n};\n\nAccessControl.defaultProps = {\n onNext: () => {},\n};\n\nconst Container = styled(Layout)`\n height: 100%;\n overflow-y: auto;\n .header {\n width: 100%;\n }\n .tip {\n margin-left: 32px;\n font-size: 12px;\n margin-top: -8px;\n color: ${(props) => props.theme.palette.text.secondary};\n }\n`;\n","import styled from '@emotion/styled';\n\nconst Required = styled.span`\n color: ${(props) => props.theme.palette.error.main};\n &::before {\n content: '*';\n }\n`;\n\nexport default Required;\n","import { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport joinUrl from 'url-join';\n\nimport Box from '@mui/material/Box';\nimport Link from '@mui/material/Link';\nimport LaunchIcon from '@mui/icons-material/Launch';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport DidConnect from '@arcblock/did-connect/lib/Connect';\nimport DidAddress from '@arcblock/did-connect/lib/Address';\nimport Spinner from '@arcblock/ux/lib/Spinner';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport { useSessionContext } from '../../contexts/session';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nexport default function Fuel({ onNext, onPrevious }) {\n const { locale, t } = useContext(LocaleContext);\n const { blocklet, gas, tokenInfo, actions } = useBlockletContext();\n const { api } = useSessionContext();\n const [open, setOpen] = useState(false);\n const { need = '', current = '', owe = 99999, deficiency, symbol = '', endpoint } = gas || {};\n const { origin: explorer = '/' } = endpoint ? new URL(endpoint) : {};\n\n useEffect(() => {\n const timer = setInterval(() => {\n actions.refreshFuel();\n }, 2000);\n\n return () => {\n clearInterval(timer);\n };\n }, []); // eslint-disable-line\n\n const onSuccess = () => {\n setOpen(false);\n };\n\n if (!gas) {\n return (\n <Box display=\"flex\" justifyContent=\"center\" alignItems=\"center\" width=\"100%\">\n <Spinner />\n </Box>\n );\n }\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('setup.fuel.title')} onClickBack={onPrevious} />\n </div>\n\n <Box className=\"qr-body\">\n <Box mb={6} className=\"tip\">\n {t('setup.fuel.tipStart').replace('slot', '')}\n <span className=\"amount\">{`${need} ${symbol}`}</span>\n {t('setup.fuel.tipEnd')}\n </Box>\n <Box fontSize={16} fontWeight=\"fontWeightBold\" mb={0.5}>\n {t('setup.fuel.addressTitle')}\n </Box>\n <Box display=\"flex\" alignItems=\"center\">\n <DidAddress className=\"address\">{blocklet.appDid}</DidAddress>\n <Link\n style={{ lineHeight: 1 }}\n target=\"_blank\"\n href={joinUrl(explorer, '/explorer/accounts/', blocklet.appDid)}\n underline=\"hover\">\n <LaunchIcon className=\"icon-launch\" />\n </Link>\n </Box>\n <Box my={2}>\n <Button color=\"primary\" onClick={() => setOpen(true)} disabled={!owe}>\n {t('setup.fuel.fuelApp')}\n </Button>\n </Box>\n <DidConnect\n popup\n open={open}\n action=\"fuel\"\n checkFn={api.get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n onSuccess={onSuccess}\n onClose={() => setOpen(false)}\n locale={locale}\n messages={{\n title: t('setup.connect.title'),\n scan: t('setup.connect.scan'),\n confirm: t('setup.connect.confirm'),\n success: t('setup.connect.success'),\n }}\n extraParams={{ amount: deficiency, ...tokenInfo, endpoint }}\n />\n\n <Box display=\"flex\" color=\"text.secondary\">\n <Box display=\"flex\">\n <Box>{t('setup.fuel.need')}:</Box>\n <Box ml={0.5} color=\"primary.main\" fontWeight=\"fontWeightBold\">\n {need}\n </Box>\n </Box>\n <Box display=\"flex\" ml={3}>\n <Box>{t('setup.fuel.current')}:</Box>\n <Box ml={0.5} color={owe > 0 ? 'error.main' : 'primary.main'} fontWeight=\"fontWeightBold\">\n {current}\n </Box>\n </Box>\n </Box>\n </Box>\n\n <StepActions mt={8}>\n <Button disabled={owe > 0} onClick={() => onNext()}>\n {t('setup.next')}\n </Button>\n </StepActions>\n </Container>\n );\n}\n\nFuel.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\nFuel.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n\nconst Container = styled(Layout)`\n .qr-body {\n width: 580px;\n ${(props) => props.theme.breakpoints.down('md')} {\n width: 80%;\n }\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .tip {\n font-size: 16px;\n font-weight: bold;\n }\n\n .address {\n width: 100%;\n text-align: center;\n }\n\n .amount {\n color: ${(props) => props.theme.palette.primary.main};\n }\n\n .icon-launch {\n font-size: 16px;\n margin-left: 6px;\n line-height: 1;\n color: ${(props) => props.theme.palette.primary.main};\n }\n }\n`;\n","import { useState, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\n\nimport ResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\n\nimport Box from '@mui/material/Box';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Toast from '@abtnode/ux/lib/toast';\nimport { getAccessUrl } from '@abtnode/ux/lib/util';\nimport { evaluateURLs } from '@abtnode/util/lib/url-evaluation';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport api from '../../libs/api';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport { PREFIX } from '../../util';\n\nexport default function Complete({ onPrevious }) {\n const { t } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [status, setStatus] = useState('starting'); // stopped, starting, running\n const [startupError, setStartupError] = useState();\n const { blocklet } = useBlockletContext();\n const [recommendedURL, setRecommendedURL] = useState('');\n const fromLauncher = new URL(window.location.href).searchParams.get('from_launcher');\n\n const isStopped = !['starting', 'running'].includes(status);\n const isStarting = status === 'starting';\n const statusText = {\n stopped: t('blocklet.start'),\n starting: t('blocklet.starting'),\n running: t('blocklet.open'),\n };\n\n const visitBlocklet = () => {\n const url = new URL(window.location.href);\n const redirect = url.searchParams.get('redirect');\n if (redirect) {\n window.location.href = new URL(redirect, recommendedURL).href;\n } else {\n window.location.href = recommendedURL;\n }\n };\n\n const startBlocklet = async () => {\n setLoading(true);\n setStatus('starting');\n try {\n await api.post('/blocklet/start', {\n fromSetup: true,\n });\n setLoading(false);\n setStatus('running');\n } catch (err) {\n const errMsg = err?.response?.data || err.message;\n Toast.error(errMsg);\n setLoading(false);\n setStatus('stopped');\n setStartupError(errMsg);\n }\n };\n\n useEffect(() => {\n setStatus(blocklet.status);\n if (!['starting', 'running'].includes(blocklet.status)) {\n startBlocklet();\n }\n }, []); // eslint-disable-line\n\n useEffect(() => {\n const _setRecommendedURL = async () => {\n const results = await evaluateURLs(blocklet.site.domainAliases.map((item) => getAccessUrl(item.value, PREFIX)));\n setRecommendedURL(results[0].url);\n };\n if (!recommendedURL) {\n _setRecommendedURL();\n }\n }, [blocklet, recommendedURL]);\n\n const serverUrl = localStorage.getItem('blocklet-server-url');\n const title = startupError ? t('setup.complete.failedTitle') : t('setup.complete.title');\n\n const isButtonLoading = isStarting || !recommendedURL;\n\n if (fromLauncher && !isButtonLoading) {\n if (isStopped) {\n startBlocklet();\n } else {\n visitBlocklet();\n }\n }\n\n return (\n <Container>\n <StyledResultMessage\n variant={startupError ? 'error' : 'success'}\n title={title}\n footer={\n <StepActions>\n {isStopped && (\n <Button variant=\"outlined\" disabled={loading} onClick={() => onPrevious()}>\n {t('setup.previous')}\n </Button>\n )}\n\n {fromLauncher ? (\n <LinkEle rel=\"noreferrer\">\n <Spinner size={[16, 10]} style={{ marginRight: 14 }} /> {t('common.redirecting')}\n </LinkEle>\n ) : (\n <>\n <Button\n style={{ marginLeft: isStopped ? 24 : 0 }}\n disabled={loading || isStarting}\n onClick={() => (isStopped ? startBlocklet() : visitBlocklet())}\n loading={isButtonLoading}>\n {statusText[status] || statusText.stopped}\n </Button>\n\n {(status === 'running' || startupError) && !!serverUrl && (\n <Box width=\"100%\" mt={2}>\n <a href={serverUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"back-to-server-link\">\n {t('setup.complete.backToServer')}\n </a>\n </Box>\n )}\n </>\n )}\n </StepActions>\n }\n />\n </Container>\n );\n}\n\nconst Container = styled(Layout)`\n justify-content: center;\n .icon-success {\n width: 64px;\n height: 64px;\n color: ${(props) => props.theme.palette.success.main};\n }\n .back-to-server-link {\n color: ${(props) => props.theme.palette.primary.main};\n }\n`;\n\nconst StyledResultMessage = styled(ResultMessage)`\n && .result-footer {\n height: 120px;\n > div {\n flex-wrap: wrap;\n }\n }\n`;\n\nComplete.propTypes = {\n onPrevious: PropTypes.func,\n};\n\nComplete.defaultProps = {\n onPrevious: () => {},\n};\n\nconst LinkEle = styled.a`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 36px;\n color: ${(props) => props.theme.palette.primary.main};\n`;\n","import { useEffect } from 'react';\nimport { Routes, Route, Navigate, useNavigate } from 'react-router-dom';\nimport styled from '@emotion/styled';\nimport joinUrl from 'url-join';\nimport { Global, css } from '@emotion/react';\n\nimport Box from '@mui/material/Box';\nimport Layout from '@blocklet/launcher-layout';\nimport { StepProvider } from '@blocklet/launcher-layout/lib/context/step';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport HeaderAddon from '@abtnode/ux/lib/layout/addon';\nimport ServerLogoNotext from '@arcblock/icons/lib/ServerLogoNotext';\nimport ServerLogo from '@arcblock/icons/lib/ServerLogo';\n\nimport { WELLKNOWN_SERVICE_PATH_PREFIX } from '@abtnode/constant';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\n\nimport { hasRequiredEnvironments, saveServerUrl, PREFIX } from '../util';\nimport { useBlockletContext } from '../contexts/blocklet';\nimport { SessionContext } from '../contexts/session';\nimport Connect from '../components/setup/connect';\nimport Config from '../components/setup/config';\nimport Domain from '../components/setup/domain';\nimport AccessControl from '../components/setup/access-control';\nimport Required from '../components/setup/required';\nimport Fuel from '../components/setup/fuel';\nimport Complete from '../components/setup/complete';\n\nexport default function BlockletSetup() {\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down('md'));\n const { t, locale } = useLocaleContext();\n const navigate = useNavigate();\n const { meta, blocklet, actions } = useBlockletContext();\n const serverUrl = localStorage.getItem('blocklet-server-url');\n\n const fromLauncher = new URL(window.location.href).searchParams.get('from_launcher');\n\n useEffect(() => {\n actions.refreshMeta();\n actions.refreshBlocklet({ showError: false });\n // setup 流程刚开始时, 保存 serverUrl 到 localStorage, 方便在 setup 流程结束后返回 server\n saveServerUrl();\n }, []); // eslint-disable-line\n\n useEffect(() => {\n actions.refreshFuel({ showError: false });\n }, [blocklet?.meta?.did]); // eslint-disable-line\n\n const basePath = `${WELLKNOWN_SERVICE_PATH_PREFIX}/setup`;\n const steps = [\n {\n key: 'connect',\n name: t('setup.steps.connect'),\n path: joinUrl(basePath, 'connect'),\n },\n {\n key: 'access',\n name: t('setup.steps.access'),\n path: joinUrl(basePath, 'access'),\n },\n {\n key: 'domain',\n name: t('setup.steps.domain'),\n path: joinUrl(basePath, 'domain'),\n },\n {\n key: 'config',\n name: (\n <>\n {t('setup.steps.config')} {hasRequiredEnvironments(meta) && <Required />}\n </>\n ),\n path: joinUrl(basePath, 'config'),\n },\n meta?.requirements?.fuels?.length\n ? {\n key: 'fuel',\n name: (\n <>\n {t('setup.steps.fuel')} <Required />\n </>\n ),\n path: joinUrl(basePath, 'fuel'),\n }\n : null,\n ].filter(Boolean);\n\n const stepIndex = steps.findIndex(\n (x) => `${PREFIX.replace(/\\/$/, '')}${basePath}/${x.key}` === window.location.pathname\n );\n\n const logoUrl = joinUrl(PREFIX, WELLKNOWN_SERVICE_PATH_PREFIX, '/blocklet/logo');\n\n const onNext = async (key) => {\n const { search } = new URL(window.location.href);\n if (!key) {\n if (steps[stepIndex + 1]) {\n navigate(`${joinUrl(basePath, steps[stepIndex + 1].key)}${search}`);\n } else {\n navigate(`${joinUrl(basePath, 'complete')}${search}`);\n }\n } else {\n const index = steps.findIndex((x) => x.key === key);\n if (index > -1) {\n navigate(`${joinUrl(basePath, steps[index].key)}${search}`);\n } else {\n navigate(`${joinUrl(basePath, 'complete')}${search}`);\n }\n }\n\n await actions.refreshBlocklet();\n };\n\n const onPrevious = () => {\n navigate(-1);\n };\n\n function withSetup(Component, props) {\n if (!blocklet) {\n return (\n <Box width=\"100%\" height=\"100%\" display=\"flex\" justifyContent=\"center\" alignItems=\"center\">\n <Spinner />\n </Box>\n );\n }\n\n return <Component blocklet={blocklet} {...props} onNext={onNext} onPrevious={onPrevious} />;\n }\n\n const clickLogo = () => {\n window.open(serverUrl);\n };\n\n const logo = !isMobile ? (\n <ServerLogo onClick={clickLogo} width=\"128\" height=\"48\" style={{ marginTop: -1, cursor: 'pointer' }} />\n ) : (\n <ServerLogoNotext onClick={clickLogo} width=\"32\" height=\"32\" style={{ cursor: 'pointer' }} />\n );\n\n const totalSteps = [\n {\n key: 'agreement',\n name: t('setup.steps.introduction'),\n },\n {\n key: 'select-node',\n name: t('setup.steps.selectNodeDesc'),\n },\n {\n key: 'install',\n name: t('setup.steps.launchAppDesc'),\n },\n {\n key: 'setup',\n name: t('setup.steps.setupAppDesc'),\n children: steps,\n },\n {\n key: 'complete',\n name: t('setup.steps.launched'),\n path: joinUrl(basePath, 'complete'),\n },\n ];\n\n if (!fromLauncher) {\n totalSteps.splice(1, 1);\n }\n\n return (\n <StyledStepProvider steps={totalSteps}>\n <Global styles={launcherGlobalStyle} />\n <Layout\n locale={locale}\n blockletMeta={{ ...meta, title: getDisplayName({ ...blocklet, meta }) }}\n navLogo={logo}\n pcWidth=\"80%\"\n style={{ height: '100%' }}\n logoUrl={logoUrl}\n useOfSkeleton={false}\n headerEndAddons={<HeaderAddon SessionContext={SessionContext} sessionManagerProps={{ disableLogout: true }} />}\n launchingText={t('setup.title')}>\n <Routes>\n <Route path=\"connect\" element={<Connect onNext={onNext} />} />\n <Route path=\"domain\" element={withSetup(Domain)} />\n <Route path=\"config\" element={withSetup(Config)} />\n <Route path=\"access\" element={withSetup(AccessControl)} />\n <Route path=\"fuel\" element={withSetup(Fuel)} />\n <Route path=\"complete\" element={withSetup(Complete)} />\n <Route path=\"*\" element={<Navigate to={`connect${window.location.search}`} replace />} />\n </Routes>\n </Layout>\n </StyledStepProvider>\n );\n}\n\nconst launcherGlobalStyle = css`\n html,\n body,\n #root,\n #root > .wrapper {\n height: 100%;\n }\n`;\n\nconst StyledStepProvider = styled(StepProvider)``;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ContentLayout;\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _templateObject;\nconst _excluded = [\"children\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ContentLayout(_ref) {\n let {\n children\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, _objectSpread(_objectSpread({}, props), {}, {\n children: children\n }));\n}\nContentLayout.propTypes = {\n children: _propTypes.default.any.isRequired\n};\nconst Container = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n width: 100%;\\n height: 100%;\\n\\n .header {\\n text-align: center;\\n }\\n\\n .body {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n margin-top: 30px;\\n width: 100%;\\n min-height: 200px;\\n flex: 1;\\n\\n \", \" {\\n padding: 24px;\\n }\\n\\n \", \" {\\n padding: 0 16px 16px;\\n }\\n }\\n\\n .footer {\\n display: flex;\\n justify-content: center;\\n\\n \", \" {\\n padding-bottom: 34px;\\n }\\n\\n \", \" {\\n margin-top: auto;\\n padding-bottom: 10px;\\n }\\n }\\n\"])), props => props.theme.breakpoints.up('md'), props => props.theme.breakpoints.down('md'), props => props.theme.breakpoints.up('sm'), props => props.theme.breakpoints.down('md'));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = HeaderAddon;\nvar _react = require(\"react\");\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _IconButton = _interopRequireDefault(require(\"@mui/material/IconButton\"));\nvar _reactRouterDom = require(\"react-router-dom\");\nvar _SessionManager = _interopRequireDefault(require(\"@arcblock/did-connect/lib/SessionManager\"));\nvar _selector = _interopRequireDefault(require(\"@arcblock/ux/lib/Locale/selector\"));\nvar _context = require(\"@arcblock/ux/lib/Locale/context\");\nvar _Globe = _interopRequireDefault(require(\"@arcblock/icons/lib/Globe\"));\nvar _QuestionMarkCircle = _interopRequireDefault(require(\"@arcblock/icons/lib/QuestionMarkCircle\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _templateObject;\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction HeaderAddon(_ref) {\n let {\n SessionContext,\n extraItems,\n showLocale,\n showHelper,\n showSessionManager,\n sessionManagerProps\n } = _ref;\n const {\n session\n } = (0, _react.useContext)(SessionContext);\n const {\n locale\n } = (0, _react.useContext)(_context.LocaleContext);\n const location = (0, _reactRouterDom.useLocation)();\n const docPaths = {\n '/dashboard': '/introduction/abtnode-overview',\n '/store': '/marketplace',\n '/blocklets': '/blocklet',\n '/router/rules': '/router',\n '/router/engine': '/router',\n '/settings/basic': '/misc',\n '/settings/team': '/misc/member-management',\n '/console': '/misc/graphql-console'\n };\n const onHelpClick = () => {\n const pathName = location.pathname;\n let path = '';\n if (pathName.indexOf('/blocklets') > -1) {\n path = docPaths['/blocklets'];\n } else if (pathName.indexOf('/store') > -1) {\n path = docPaths['/store'];\n } else if (docPaths[pathName]) {\n path = docPaths[pathName];\n }\n window.open(\"https://docs.arcblock.io/abtnode/\".concat(locale).concat(path), '_blank');\n };\n return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, {\n children: [extraItems.map((x, index) => /*#__PURE__*/(0, _react.cloneElement)(x, {\n key: index\n })), showLocale && /*#__PURE__*/(0, _jsxRuntime.jsx)(_selector.default, {\n \"data-cy\": \"locale-addon\",\n icon: _Globe.default,\n size: 23,\n showText: false,\n className: \"locale-addon\"\n }), showHelper && /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {\n onClick: onHelpClick,\n children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_QuestionMarkCircle.default, {})\n }), showSessionManager && /*#__PURE__*/(0, _jsxRuntime.jsx)(_SessionManager.default, _objectSpread({\n session: session,\n size: 24,\n showRole: true\n }, sessionManagerProps))]\n });\n}\nHeaderAddon.propTypes = {\n SessionContext: _propTypes.default.object.isRequired,\n webWalletUrl: _propTypes.default.string,\n extraItems: _propTypes.default.array,\n showLocale: _propTypes.default.bool,\n showSessionManager: _propTypes.default.bool,\n showHelper: _propTypes.default.bool,\n sessionManagerProps: _propTypes.default.object\n};\nHeaderAddon.defaultProps = {\n webWalletUrl: '',\n extraItems: [],\n showLocale: true,\n showSessionManager: true,\n showHelper: true,\n sessionManagerProps: {}\n};\nconst Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\\n .MuiIconButton-root svg {\\n width: 26px;\\n height: 26px;\\n }\\n\\n .user-addon {\\n .user-avatar {\\n width: 28px;\\n border-radius: 14px;\\n height: auto;\\n }\\n }\\n\\n \", \" {\\n > button,\\n > a {\\n padding-left: 8px;\\n padding-right: 8px;\\n }\\n }\\n\"])), props => props.theme.breakpoints.down('md'));"],"names":["Connect","onNext","useLocaleContext","t","locale","useSessionContext","api","session","onConnect","result","decrypt","setSessionToken","sessionToken","refresh","Toast","message","WrapConnect","popup","open","hideCloseButton","action","checkFn","get","checkTimeout","socketUrl","webWalletUrl","getWebWalletUrl","onSuccess","messages","title","scan","confirm","success","extraParams","setup","defaultProps","styled","DidConnect","ContentLayout","props","theme","breakpoints","up","StepActions","blocklet","onStartNow","children","disabled","hasRequiredSteps","meta","Center","Between","Button","className","variant","color","onClick","Box","display","alignItems","down","StyledButton","Config","onPrevious","isMobile","useMediaQuery","useState","loading","setLoading","editingItem","setEditingItem","useBlockletContext","actions","selfConfigs","configs","filter","x","BLOCKLET_CONFIGURABLE_KEY","key","customColor","environments","find","configurableEnvs","description","value","custom","componentType","componentProps","childrenConfigs","forEachChildSync","b","ancestorDids","ancestors","slice","map","did","push","childDid","concat","sortedConfig","uniqBy","flatten","sort","a","required","missingRequiredConfigs","getAppMissingConfigs","length","onSubmitConfig","config","omit","configBlocklet","defaultValue","schemaList","item","rest","style","marginBottom","subTitle","onClickBack","bottom","mt","refreshFuel","showError","margin","paddingTop","schema","onChange","changeValue","currentItem","includes","isCertInProgress","cert","status","waitForCert","domain","Promise","resolve","reject","timer","setInterval","client","input","clearInterval","addCert","Domain","useContext","LocaleContext","loadingText","setLoadingText","error","setError","ip","setIp","showCertFailed","setShowCertFailed","domains","site","domainAliases","defaultCustomDomain","isProtected","systemDomains","replaceSlotToIp","setDomain","addDomain","secure","sleep","some","id","domainAlias","dryRun","submitDomain","address","data","Error","curDomain","window","location","hostname","generated","useEffect","then","catch","err","console","Dialog","PaperProps","minHeight","showCloseButton","mb","fontWeight","size","textDecoration","component","TextField","marginTop","label","fullWidth","e","target","errMessage","validateDomain","autoFocus","helperText","mx","Container","Layout","PublicInstance","Tooltip","IconButton","InfoOutlined","fontSize","memo","AccessControl","useTheme","setValue","publicToStore","setPublicToStore","getPublicInstance","getWhoCanAccess","submit","whoCanAccess","configWhoCanAccess","handleChange","event","handleCheckBox","isPublic","checked","configPublicToStore","iconStyle","marginRight","verticalAlign","palette","text","secondary","FormControl","RadioGroup","name","AccessConfig","rule","FormControlLabel","control","Radio","icon","WHO_CAN_ACCESS","source","Checkbox","main","Fuel","gas","tokenInfo","setOpen","need","current","owe","deficiency","symbol","endpoint","URL","origin","explorer","replace","appDid","Link","lineHeight","href","joinUrl","underline","Launch","my","onClose","amount","ml","justifyContent","width","Spinner","primary","Complete","setStatus","startupError","setStartupError","recommendedURL","setRecommendedURL","fromLauncher","searchParams","isStopped","isStarting","statusText","stopped","starting","running","visitBlocklet","redirect","startBlocklet","fromSetup","errMsg","response","_setRecommendedURL","evaluateURLs","getAccessUrl","PREFIX","results","url","serverUrl","localStorage","getItem","isButtonLoading","StyledResultMessage","footer","LinkEle","rel","marginLeft","ResultMessage","BlockletSetup","navigate","useNavigate","refreshMeta","refreshBlocklet","saveServerUrl","basePath","WELLKNOWN_SERVICE_PATH_PREFIX","steps","path","hasRequiredEnvironments","requirements","fuels","Boolean","stepIndex","findIndex","pathname","logoUrl","search","index","withSetup","Component","height","clickLogo","logo","ServerLogoNotext","cursor","ServerLogo","totalSteps","splice","StyledStepProvider","Global","styles","launcherGlobalStyle","blockletMeta","getDisplayName","navLogo","pcWidth","useOfSkeleton","headerEndAddons","SessionContext","sessionManagerProps","disableLogout","launchingText","element","to","css","StepProvider","exports","_templateObject","_styled","_interopRequireDefault","require","_propTypes","_jsxRuntime","_excluded","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","i","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","configurable","writable","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","prototype","propertyIsEnumerable","call","_ref","jsx","propTypes","any","isRequired","strings","raw","div","freeze","HeaderAddon","_react","_IconButton","_reactRouterDom","_SessionManager","_selector","_context","_Globe","_QuestionMarkCircle","extraItems","showLocale","showHelper","showSessionManager","useLocation","docPaths","jsxs","Div","cloneElement","showText","pathName","showRole","string","array","bool"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (self.webpackChunk_abtnode_blocklet_services=self.webpackChunk_abtnode_blocklet_services||[]).push([[628],{59505:function(e){var t=function(e){return function(t){var n=Object.entries(e).find((function(e){return e[1]===Number(t)}));return n?n[0]:"unknown"}},n=function(e){return function(t){return Object.keys(e).find((function(n){return e[n]===Number(t)}))}},r=Object.freeze({added:0,downloading:1,downloaded:2,installing:3,installed:4,starting:5,running:6,stopping:7,stopped:8,error:9,upgrading:10,restarting:11,corrupted:12,waiting:13,deleted:14}),o=t(r),a=n(r),i=Object.freeze({registry:0,local:1,upload:2,url:3,custom:4}),c=t(i),l=n(i),s=Object.freeze({static:"static",dapp:"dapp",starter:!1,gateway:"gateway"}),u=Object.freeze({added:"blocklet.added",downloadFailed:"blocklet.downloadFailed",installed:"blocklet.installed",installFailed:"blocklet.installFailed",upgraded:"blocklet.upgraded",upgradeFailed:"blocklet.upgradedFailed",downgraded:"blocklet.downgraded",downgradeFailed:"blocklet.downgradedFailed",updated:"blocklet.updated",statusChange:"blocklet.statusChange",removed:"blocklet.removed",started:"blocklet.started",startFailed:"blocklet.startFailed",stopped:"blocklet.stopped",reloaded:"blocklet.reloaded",purchaseChange:"blocklet.purchaseChange"}),d="service",p="wellknown",f=["web",d,p],C="publicUrl",L="wellknownUrl",E=[C],v=[C,L],_="http",h=["tcp","udp",_];e.exports=Object.freeze({BlockletStatus:r,fromBlockletStatus:o,toBlockletStatus:a,BlockletSource:i,fromBlockletSource:c,toBlockletSource:l,BlockletGroup:s,BLOCKLET_GROUPS:["dapp","static","gateway"],BlockletEvents:u,BLOCKLET_PLATFORMS:["aix","darwin","freebsd","linux","openbsd","sunos","win32"],BLOCKLET_ARCHITECTURES:["arm","arm64","ia32","mips","mipsel","ppc","ppc64","s390","s390x","x32","x64"],BLOCKLET_MODES:Object.freeze({PRODUCTION:"production",DEVELOPMENT:"development"}),BLOCKLET_FACTORY_SHARES:{developer:.7,store:.3},BLOCKLET_INTERFACE_PUBLIC:C,BLOCKLET_INTERFACE_WELLKNOWN:L,BLOCKLET_UI_INTERFACES:E,BLOCKLET_STANDARD_INTERFACES:v,BLOCKLET_INTERFACE_TYPE_WEB:"web",BLOCKLET_INTERFACE_TYPE_SERVICE:d,BLOCKLET_INTERFACE_TYPE_WELLKNOWN:p,BLOCKLET_INTERFACE_TYPES:f,BLOCKLET_INTERFACE_PROTOCOL_HTTP:_,BLOCKLET_INTERFACE_PROTOCOL_TCP:"tcp",BLOCKLET_INTERFACE_PROTOCOL_UDP:"udp",BLOCKLET_INTERFACE_PROTOCOLS:h,BLOCKLET_DYNAMIC_PATH_PREFIX:"*",BLOCKLET_DEFAULT_PORT_NAME:"BLOCKLET_PORT",BLOCKLET_DEFAULT_PATH_REWRITE:"/",BLOCKLET_RELEASE_FOLDER:".blocklet/release",BLOCKLET_RELEASE_FILE:"blocklet.json",BLOCKLET_BUNDLE_FOLDER:".blocklet/bundle",BLOCKLET_BUNDLE_FILE:"blocklet.zip",BLOCKLET_ENTRY_FILE:"blocklet.js",BLOCKLET_META_FILE:"blocklet.yml",BLOCKLET_META_FILE_ALT:"blocklet.yaml",BLOCKLET_DEFAULT_VERSION:"1.0.0",BLOCKLET_LATEST_SPEC_VERSION:"1.2.7",BLOCKLET_LATEST_REQUIREMENT_SERVER:">=1.7.0",BLOCKLET_LATEST_REQUIREMENT_ABTNODE:">=1.5.15",BLOCKLET_CONFIGURABLE_KEY:{BLOCKLET_CLUSTER_SIZE:"BLOCKLET_CLUSTER_SIZE",BLOCKLET_APP_NAME:"BLOCKLET_APP_NAME",BLOCKLET_APP_DESCRIPTION:"BLOCKLET_APP_DESCRIPTION",BLOCKLET_APP_SK:"BLOCKLET_APP_SK",BLOCKLET_APP_LOGO:"BLOCKLET_APP_LOGO",BLOCKLET_APP_LOGO_SQUARE:"BLOCKLET_APP_LOGO_SQUARE",BLOCKLET_APP_URL:"BLOCKLET_APP_URL",BLOCKLET_PASSPORT_COLOR:"BLOCKLET_PASSPORT_COLOR",BLOCKLET_WALLET_TYPE:"BLOCKLET_WALLET_TYPE",BLOCKLET_DELETABLE:"BLOCKLET_DELETABLE"},CHAIN_INFO_CONFIG:{CHAIN_TYPE:["type","arcblock"],CHAIN_ID:["id","none"],CHAIN_HOST:["host","none"]}})},52469:function(e,t,n){var r=n(25800),o=r.getNftBGColor,a=r.DEFAULT_COLOR,i=r.getNftBGColorFromDid;e.exports=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.issuer,r=void 0===n?"":n,c=t.title,l=void 0===c?"":c,s=t.issuerDid,u=void 0===s?"":s,d=t.ownerName,p=void 0===d?"":d,f=t.preferredColor,C=void 0===f?"default":f,L=t.ownerAvatarUrl,E=void 0===L?"":L,v=t.revoked,_=t.isDataUrl,h=t.width,m=void 0===h?"100%":h,T=t.height,g=void 0===T?"100%":T;e="default"===C?a:"auto"===C?i(u):o(C);var O='<svg width="'.concat(m,'" height="').concat(g,'" viewBox="0 0 424 564" fill="none" xmlns="http://www.w3.org/2000/svg">\n<rect x="1" y="1" width="422" height="562" rx="21" fill="url(#paint0_linear_6_342)"/>\n<text x="360" y="65" fill="white" xml:space="preserve" font-family="Roboto,Helvetica" font-size="').concat(l.length>=12?12:l.length>=10?14:l.length>=8?18:l.length>=6?24:28,'" letter-spacing="0px" style="dominant-baseline:middle;text-anchor:middle;">').concat(l.toUpperCase(),'</text>\n<text opacity="0.4" fill="white" xml:space="preserve" style="white-space: pre" font-family="Roboto,Helvetica" font-size="16" font-weight="500" letter-spacing="0px"><tspan x="319" y="40.9688">PASSPORT</tspan></text>\n<text fill="white" xml:space="preserve" style="white-space: pre" font-family="Roboto,Helvetica" font-size="').concat(r.length>15?20:24,'" font-weight="500" letter-spacing="0px"><tspan x="26" y="60.2031">').concat(r,'</tspan></text>\n<rect x="2" y="102" width="420" height="168" fill="black" fill-opacity="0.3"/>\n<circle cx="212" cy="250" r="60" fill="#FBFBFB"/>\n<path fill-rule="evenodd" clip-rule="evenodd" d="M212.224 247.722C218.932 247.722 224.37 242.284 224.37 235.575C224.37 228.867 218.932 223.429 212.224 223.429C205.515 223.429 200.077 228.867 200.077 235.575C200.077 242.284 205.515 247.722 212.224 247.722ZM188.857 272.018C188.857 274.573 190.929 276.645 193.484 276.645H230.962C231.28 276.645 231.597 276.612 231.908 276.547C234.41 276.025 236.014 273.574 235.492 271.072L234.335 265.533C232.991 259.099 227.319 254.489 220.746 254.489H203.7C197.127 254.489 191.455 259.099 190.112 265.533L188.955 271.072C188.89 271.383 188.857 271.7 188.857 272.018Z" fill="#FBFBFB" />\n<path d="M231.908 276.547L232.215 278.016L231.908 276.547ZM235.492 271.072L236.96 270.765H236.96L235.492 271.072ZM234.335 265.533L232.866 265.839L234.335 265.533ZM190.112 265.533L191.58 265.839L190.112 265.533ZM188.955 271.072L187.487 270.765H187.487L188.955 271.072ZM222.87 235.575C222.87 241.455 218.104 246.222 212.224 246.222V249.222C219.761 249.222 225.87 243.112 225.87 235.575H222.87ZM212.224 224.929C218.104 224.929 222.87 229.695 222.87 235.575H225.87C225.87 228.038 219.761 221.929 212.224 221.929V224.929ZM201.577 235.575C201.577 229.695 206.344 224.929 212.224 224.929V221.929C204.687 221.929 198.577 228.038 198.577 235.575H201.577ZM212.224 246.222C206.344 246.222 201.577 241.455 201.577 235.575H198.577C198.577 243.112 204.687 249.222 212.224 249.222V246.222ZM193.484 275.145C191.757 275.145 190.357 273.745 190.357 272.018H187.357C187.357 275.402 190.1 278.145 193.484 278.145V275.145ZM230.962 275.145H193.484V278.145H230.962V275.145ZM231.601 275.079C231.391 275.123 231.177 275.145 230.962 275.145V278.145C231.383 278.145 231.803 278.102 232.215 278.016L231.601 275.079ZM234.023 271.379C234.376 273.069 233.292 274.726 231.601 275.079L232.215 278.016C235.527 277.324 237.652 274.078 236.96 270.765L234.023 271.379ZM232.866 265.839L234.023 271.379L236.96 270.765L235.803 265.226L232.866 265.839ZM220.746 255.989C226.609 255.989 231.668 260.1 232.866 265.839L235.803 265.226C234.314 258.097 228.029 252.989 220.746 252.989V255.989ZM203.7 255.989H220.746V252.989H203.7V255.989ZM191.58 265.839C192.779 260.1 197.838 255.989 203.7 255.989V252.989C196.417 252.989 190.132 258.097 188.643 265.226L191.58 265.839ZM190.423 271.379L191.58 265.839L188.643 265.226L187.487 270.765L190.423 271.379ZM190.357 272.018C190.357 271.803 190.379 271.589 190.423 271.379L187.487 270.765C187.401 271.177 187.357 271.597 187.357 272.018H190.357Z" fill="#BFBFBF" />\n<circle cx="212" cy="250" r="60" fill="url(#raduisImage)"/>\n<defs>\n<pattern id="raduisImage" patternUnits="userSpaceOnUse" width="424" height="564">\n<image x="152" y="190" href="').concat(E,'" width="120" height="120" />\n</pattern>\n</defs>\n<text x="215" y="350" fill="white" xml:space="preserve" style="dominant-baseline:middle;text-anchor:middle;" font-family="Roboto,Helvetica" font-size="28" font-weight="500" letter-spacing="0px">').concat(p,'</text>\n<text opacity="0.4" fill="white" xml:space="preserve" style="white-space: pre" font-family="Roboto,Helvetica" font-size="18" font-weight="500" letter-spacing="0px"><tspan x="26" y="407.652">ISSUER DID</tspan></text>\n<path fill-rule="evenodd" clip-rule="evenodd" d="M28.6722 423.313H45.3819C46.4294 423.313 47.2787 424.162 47.2787 425.21V433.79C47.2787 434.838 46.4294 435.687 45.3819 435.687H28.6722C27.9517 435.687 27.3249 435.285 27.0039 434.694H26.1167C26.4887 435.746 27.4924 436.5 28.6722 436.5H45.3819C46.8784 436.5 48.0916 435.287 48.0916 433.79V425.21C48.0916 423.713 46.8784 422.5 45.3819 422.5H28.6722C27.3296 422.5 26.215 423.477 26 424.758H26.8295C27.0321 423.929 27.7803 423.313 28.6722 423.313ZM27.8801 432.096C27.7831 432.089 27.6966 432.082 27.6204 432.075V427.526C27.7243 427.512 27.8351 427.505 27.9528 427.505C28.0705 427.498 28.1848 427.494 28.2955 427.494C29.1057 427.494 29.6978 427.688 30.0717 428.076C30.4457 428.464 30.6326 429.035 30.6326 429.79C30.6326 430.51 30.4353 431.074 30.0406 431.483C29.6528 431.892 29.0538 432.096 28.2436 432.096H27.8801ZM32.0141 431.421C32.208 430.957 32.305 430.413 32.305 429.79C32.305 429.139 32.208 428.582 32.0141 428.118C31.8202 427.654 31.5432 427.273 31.1832 426.975C30.8231 426.677 30.3903 426.459 29.8848 426.321C29.3862 426.182 28.8288 426.113 28.2125 426.113C27.9216 426.113 27.5719 426.127 27.1634 426.154C26.7617 426.175 26.3739 426.22 26 426.29V433.301C26.3739 433.377 26.7548 433.425 27.1426 433.446C27.5304 433.474 27.8697 433.488 28.1605 433.488C28.7976 433.488 29.3723 433.412 29.8848 433.259C30.3972 433.107 30.83 432.878 31.1832 432.574C31.5432 432.269 31.8202 431.885 32.0141 431.421ZM35.2788 426.196H33.6585V433.394H35.2788V426.196ZM38.5654 432.075C38.6416 432.082 38.7281 432.089 38.8251 432.096H39.1886C39.9988 432.096 40.5978 431.892 40.9856 431.483C41.3803 431.074 41.5776 430.51 41.5776 429.79C41.5776 429.035 41.3907 428.464 41.0167 428.076C40.6428 427.688 40.0507 427.494 39.2405 427.494C39.1298 427.494 39.0155 427.498 38.8978 427.505C38.7801 427.505 38.6693 427.512 38.5654 427.526V432.075ZM43.25 429.79C43.25 430.413 43.153 430.957 42.9591 431.421C42.7652 431.885 42.4882 432.269 42.1282 432.574C41.775 432.878 41.3422 433.107 40.8298 433.259C40.3173 433.412 39.7426 433.488 39.1055 433.488C38.8147 433.488 38.4754 433.474 38.0876 433.446C37.6998 433.425 37.3189 433.377 36.945 433.301V426.29C37.3189 426.22 37.7067 426.175 38.1084 426.154C38.5169 426.127 38.8666 426.113 39.1574 426.113C39.7738 426.113 40.3312 426.182 40.8298 426.321C41.3353 426.459 41.7681 426.677 42.1282 426.975C42.4882 427.273 42.7652 427.654 42.9591 428.118C43.153 428.582 43.25 429.139 43.25 429.79ZM45.1907 428.355C44.8209 428.355 44.5161 428.055 44.5161 427.686C44.5161 427.316 44.8209 427.016 45.1907 427.016C45.5604 427.016 45.8652 427.316 45.8652 427.686C45.8652 428.055 45.5604 428.355 45.1907 428.355ZM45.1907 431.855C44.8209 431.855 44.5161 431.555 44.5161 431.185C44.5161 430.815 44.8209 430.516 45.1907 430.516C45.5604 430.516 45.8652 430.815 45.8652 431.185C45.8652 431.555 45.5604 431.855 45.1907 431.855Z" fill="white"/>\n<text fill="white" xml:space="preserve" style="white-space: pre" font-family="Roboto,Helvetica" font-size="15" font-weight="500" letter-spacing="0px"><tspan x="54.0916" y="434.969">').concat(u,'</tspan></text>\n<rect x="1" y="1" width="422" height="562" rx="21" stroke="#F0F0F0" stroke-width="2"/>\n<defs>\n<linearGradient id="paint0_linear_6_342" x1="414.5" y1="562" x2="-116.166" y2="156.726" gradientUnits="userSpaceOnUse">\n<stop stop-color="').concat(e.startColor,'"/>\n<stop offset="1" stop-color="').concat(e.endColor,'"/>\n</linearGradient>\n</defs>\n').concat(v?'<circle cx="210" cy="250" r="120" stroke="rgba(255,0,0,0.5)" stroke-width="25" /><line x1="132" y1="168" x2="296" y2="323" stroke="rgba(255,0,0,0.5)" stroke-width="25" />':"","\n</svg>");return _?"data:image/svg+xml;utf8,".concat(encodeURIComponent(O)):O}},25800:function(e,t,n){var r=n(2073).toHex,o=n(64029).Hasher,a=function(e){if(e){var t=function(e){var t,n,r=e.replace("#",""),o=parseInt(r.slice(0,2),16)/255,a=parseInt(r.slice(2,4),16)/255,i=parseInt(r.slice(4,6),16)/255,c=Math.max(o,a,i),l=Math.min(o,a,i),s=(c+l)/2;if(c===l)t=0,n=0;else{var u=c-l;switch(n=s>.5?u/(2-c-l):u/(c+l),c){case o:t=(a-i)/u+(a<i?6:0);break;case a:t=(i-o)/u+2;break;case i:t=(o-a)/u+4}t/=6}return[t,n,s]}(e),n=[t[0]];t[1]>.7?n.push(.7):n.push(t[1]),t[2]>.6?n.push(.6):t[2]<.3?n.push(.3):n.push(t[2]);var r=[n[0],n[1],n[2]-.1],o=c.apply(void 0,n);return{startColor:c.apply(void 0,r),endColor:o}}return{startColor:"#2B3845",endColor:"#5A7A8A"}};function i(e){return"#".concat(r(o.SHA3.hash224(e)).slice(-6))}function c(e,t,n){var r,o,a;if(0===t)r=n,o=n,a=n;else{var i=function(e,t,n){var r=n;return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e},c=n<.5?n*(1+t):n+t-n*t,l=2*n-c;r=i(l,c,e+1/3),o=i(l,c,e),a=i(l,c,e-1/3)}return"#".concat([Math.round(255*r),Math.round(255*o),Math.round(255*a)].map((function(e){return e.toString(16).padStart(2,0)})).join(""))}e.exports={getNftBGColor:a,getNftBGColorFromDid:function(e){return a(i(e))},DEFAULT_COLOR:{startColor:"#2B3845",endColor:"#5A7A8A"},getPassportColorFromDid:i}},31419:function(e,t,n){var r=n(814).default,o=n(95803).default,a=n(48756),i=a.HttpProxyAgent,c=a.HttpsProxyAgent;o.interceptors.request.use((function(e){if(null!=e.socketPath)return e;if(!1===e.proxy)return e;var t={NODE_ENV:"production",PUBLIC_URL:"/.blocklet/proxy/blocklet-service",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0}.HTTP_PROXY||{NODE_ENV:"production",PUBLIC_URL:"/.blocklet/proxy/blocklet-service",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0}.http_proxy,n={NODE_ENV:"production",PUBLIC_URL:"/.blocklet/proxy/blocklet-service",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0}.HTTPS_PROXY||{NODE_ENV:"production",PUBLIC_URL:"/.blocklet/proxy/blocklet-service",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0}.https_proxy,o=Object.assign({keepAlive:!0,keepAliveMsecs:1e3,maxSockets:256,maxFreeSockets:256},e.proxyOptions||{});return t&&(e.proxy=!1,e.httpAgent=new i(r({proxy:t},o))),n&&(e.proxy=!1,e.httpsAgent=new c(r({proxy:n},o))),e})),e.exports=o},67626:function(e,t,n){var r=n(27609).default,o=n(91461).default;e.exports=function(){var e=o(r().mark((function e(t){var n,o,a,i=arguments;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.length>1&&void 0!==i[1]?i[1]:5e3,e.prev=1,a=new AbortController,o=setTimeout((function(){return a.abort()}),n),e.next=6,fetch(t,{method:"HEAD",mode:"no-cors",signal:a.signal});case 6:return e.abrupt("return",!0);case 9:return e.prev=9,e.t0=e.catch(1),e.abrupt("return",!1);case 12:return e.prev=12,clearTimeout(o),e.finish(12);case 15:case"end":return e.stop()}}),e,null,[[1,9,12,15]])})));return function(t){return e.apply(this,arguments)}}()},67615:function(e,t,n){var r=n(27609).default,o=n(91461).default,a=n(67626),i=function(e){return/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/.test(e)},c=function(e){return e.endsWith(".ip.abtnet.io")},l=function(e){return!c(e)&&!e.endsWith(".did.abtnet.io")&&!i(e)},s=function(){var e=o(r().mark((function e(t){var n,o,s,u,d,p,f,C,L,E,v,_=arguments;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=_.length>1&&void 0!==_[1]?_[1]:{},o=n.timeout,s=void 0===o?5e3:o,u=n.checkAccessible,d=void 0===u?a:u,p=new URL(t),f=p.protocol,C=p.port,L=p.hostname,E="https:"===f?1e3:0,l(L)?(E+=3e4,E-=L.split(".").length):(c(L)&&(E+=20),i(L)&&(E+=1),C&&(E-=1)),v=!1,!d){e.next=11;break}return e.next=9,d(t,s);case 9:(v=e.sent)||(E-=2e4);case 11:return e.abrupt("return",{url:t,score:E,accessible:v});case 12:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),u=function(){var e=o(r().mark((function e(t){var n,a,i=arguments;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.length>1&&void 0!==i[1]?i[1]:{},e.next=3,Promise.all(t.map(function(){var e=o(r().mark((function e(t){return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,s(t,n);case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),console.error(e.t0),e.abrupt("return",{url:t,score:Number.MIN_SAFE_INTEGER,accessible:!1});case 10:case"end":return e.stop()}}),e,null,[[0,6]])})));return function(t){return e.apply(this,arguments)}}()));case 3:if(a=e.sent,!1!==n.sort){e.next=6;break}return e.abrupt("return",a);case 6:return e.abrupt("return",a.sort((function(e,t){return t.score-e.score})));case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();e.exports={evaluateURL:s,evaluateURLs:u}},85710:function(e,t,n){"use strict";var r=n(27609).default,o=n(91461).default,a=n(43681).default;Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsWildcardDomain=t.checkInputByType=t.appendParams=t.BlockletAdminRoles=t.APP_PREFIX=void 0,t.deepDecodeURIComponent=A,t.extractStatusUrlFromNextWorkflow=function(e){var t=new URL(A(e)).searchParams.get("url");return{statusUrl:t.replace("/auth?","/status?"),token:new URL(t).searchParams.get("_t_")}},t.formatDateTime=function(e){return(0,c.default)(e).format("YYYY-MM-DD HH:mm")},t.formatError=t.formatDiskSize=void 0,t.formatFactoryPrice=function(e){var t;if(null===e||void 0===e||!e.payment)return[];return((null===(t=e.payment)||void 0===t?void 0:t.price)||[]).map((function(e){return{name:e.symbol,value:e.value}}))},t.formatRegistryScreenshotPath=t.formatRegistryLogoPath=t.formatPerson=t.formatLocale=void 0,t.formatTime=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"lll";if(!e)return"-";return(0,d.default)(e).format(t)},t.formatTimeFromNow=function(e){if(!e)return"-";var t=(0,d.default)(e);return(0,d.default)().diff(t,"day")>3?O(e):t.fromNow()},t.formatTimestamp=function(e){if(!e)return"-";var t;Number(e).toString()===e?(t=new Date).setTime(e):t=new Date(e);return t.toLocaleString()},t.formatToDate=O,t.formatToDatetime=function(e){if(!e)return"-";return(0,d.default)(e).format("lll")},t.formatUrl=void 0,t.getAccessUrl=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;if(!e)return"";var r="http";"https:"===window.location.protocol&&(e.endsWith(i.DEFAULT_IP_DOMAIN_SUFFIX)&&(r="https"),e.endsWith(i.DEFAULT_DID_DOMAIN)&&(r="https"));var o="",a=Number(window.location.port);a&&![80,443].includes(a)&&(o=":".concat(a));var c=new URL("".concat(r,"://").concat(e).concat(o));c.pathname=t;var l=c.href.replace(/\/$/,"");if(!n||!Object.keys(n))return l;var s=new URLSearchParams;return Object.keys(n).forEach((function(e){s.append(e,n[e])})),"".concat(l,"?").concat(s.toString())},t.getAccessibleUrl=void 0,t.getAsset=I,t.getAssetExpiration=function(e,t){return x.apply(this,arguments)},t.getBlockletLogoUrl=void 0,t.getBlockletMetaUrl=function(e,t){return(0,C.default)(e,"/api/blocklets/".concat(t,"/blocklet.json?source=webapp"))},t.getEndPoint=t.getBlockletUrlParams=t.getBlockletServices=void 0,t.getExplorerLink=function(e,t,n){if(!e)return;try{var r=new URL(e);switch(n){case"account":r.pathname="/explorer/accounts/".concat(t);break;case"tx":r.pathname="/explorer/txs/".concat(t);break;case"token":r.pathname="/explorer/tokens/".concat(t);break;case"factory":r.pathname="/explorer/factories/".concat(t);break;case"bridge":r.pathname="/explorer/bridges/".concat(t);break;default:r.pathname="/"}return r.href}catch(o){return}},t.getPathPrefix=t.getIssuePassportLink=t.getInviteLink=void 0,t.getRelativeTime=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";return(0,d.default)(e).locale(w(t)).fromNow().toString()},t.getWebWalletUrl=function(e){try{var t=window.localStorage.getItem("wallet_url");if(t)return t}catch(n){}return e&&e.webWalletUrl?e.webWalletUrl:""},t.isNewRegistryUrl=t.isInstalling=t.isInProgress=t.isDownloading=t.isChrome=t.isCertificateMatch=t.isBlockletDev=void 0,t.isProtectedRole=function(e){return Object.values(i.ROLES).includes(e)},t.isUrlAccessible=t.isSafari=void 0,t.isValidClusterSize=function(e){var t=e.value,n=e.cpuCores;if(!t)return"";var r=Number(t);if(Number.isNaN(r))return"Cluster size should be a number";if(!Number.isInteger(r))return"Cluster size should be integer";if(r<=0||r>n)return"Cluster size should between 1 to ".concat(n);return""},t.parseQuery=void 0,t.patchJsxToLocale=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split(/{{|}}/).map((function(e){return t[e]?t[e]instanceof Function?t[e]():t[e]:e})).filter(Boolean)},t.shouldCheckDomainStatus=void 0,t.sleep=function(e){return new Promise((function(t){return setTimeout(t,e)}))},t.validateDomain=t.stringSortHandlerAsc=void 0;var i=n(20244),c=g(n(74268));n(9054);var l,s=g(n(61301)),u=g(n(92522)),d=g(n(92426)),p=g(n(63784)),f=g(n(99237)),C=g(n(19611)),L=g(n(46292)),E=g(n(99985)),v=g(n(18930)),_=n(59505),h=n(67615),m=g(n(67626)),T=g(n(31419));function g(e){return e&&e.__esModule?e:{default:e}}function O(e){return e?(0,d.default)(e).format("ll"):"-"}t.validateDomain=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";return e?e.endsWith(i.DEFAULT_IP_DOMAIN_SUFFIX)?{en:"Site domain cannot include ".concat(i.DEFAULT_IP_DOMAIN_SUFFIX),zh:"\u7ad9\u70b9\u57df\u540d\u4e0d\u80fd\u5305\u542b ".concat(i.DEFAULT_IP_DOMAIN_SUFFIX)}[t]:null:{en:"Site domain cannot be empty",zh:"\u7ad9\u70b9\u57df\u540d\u4e0d\u80fd\u4e3a\u7a7a"}[t]};t.formatError=function(e){return Array.isArray(e.errors)?e.errors.map((function(e){return e.message})).join("\n"):e.message};var w=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"en";return"zh"===e?"zh_CN":e};t.formatLocale=w;var R=function(e){return e.replace(/^\?/,"").split("&").map((function(e){return e.split("=")})).filter((function(e){return!!a(e,1)[0]})).reduce((function(e,t){var n=t[0],r=decodeURIComponent(t[1])||!0;return e[n]=r,e}),{})};t.parseQuery=R;t.appendParams=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.split("?"),r=a(n,2),o=r[0],i=r[1],c=void 0===i?"":i,l=R(c),u=Object.assign({},l,t);return"".concat(o,"?").concat(s.default.stringify(u))};t.isInProgress=function(e){return["waiting","downloading","starting","installing","stopping","upgrading","restarting","deleting"].includes(e)};t.isInstalling=function(e){return["waiting","downloading","installing","upgrading"].includes(e)};t.isDownloading=function(e){return["waiting","downloading"].includes(e)};t.formatDiskSize=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n="linux"===t?2:10;return(0,f.default)(e,{base:n,round:2})};t.checkInputByType=function(e,t){var n={url:u.default};return!e||!!n[e]&&n[e](t)};t.formatUrl=function(e){return(0,p.default)(e.split("?").shift())};t.formatPerson=function(e){if(!e)return"-";if("string"===typeof e)return e;var t=e.name||"",n=e.url||e.web,r=n?" (".concat(n,")"):"",o=e.email||e.mail;return t+(o?" <".concat(o,">"):"")+r};t.getBlockletServices=function(e){var t=[];return(e.meta.interfaces||[]).filter((function(e){return e.type===_.BLOCKLET_INTERFACE_TYPE_SERVICE})).forEach((function(n){t.push({name:n.name,protocol:n.protocol,port:Number(n.port.external),upstreamPort:Number(e.ports[n.port.internal])})})),t};t.shouldCheckDomainStatus=function(e){return e&&![i.DOMAIN_FOR_IP_SITE,i.DOMAIN_FOR_IP_SITE_REGEXP,i.DOMAIN_FOR_DEFAULT_SITE,i.DOMAIN_FOR_INTERNAL_SITE].includes(e)};t.checkIsWildcardDomain=function(e){try{if(!e)return!1;var t=e.startsWith("http")?e:"http://".concat(e),n=new window.URL(t);return decodeURIComponent(n.host).split(".").some((function(e){return"*"===e}))}catch(r){return console.error(e,r),!1}};t.stringSortHandlerAsc=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e>t?1:t>e?-1:0};t.getEndPoint=function(e){var t=e.routing,n=window.location,r=(n.protocol,n.hostname,n.origin);n.port;return"".concat(r).concat(t.adminPath)};t.getInviteLink=function(e){var t=e.inviteId,n=e.endpoint;if(!n)return"";var r=new URL(n);return r.pathname=(0,C.default)(r.pathname,i.WELLKNOWN_SERVICE_PATH_PREFIX,"invite"),r.searchParams.set("inviteId",t),r.href};t.getIssuePassportLink=function(e){var t=e.id,n=e.endpoint;if(!n)return"";var r=new URL(n);return r.pathname=(0,C.default)(r.pathname,i.WELLKNOWN_SERVICE_PATH_PREFIX,"issue-passport"),r.searchParams.set("id",t),r.href};t.formatRegistryScreenshotPath=function(e,t){return t.startsWith("/assets")?t:"/assets/".concat(e,"/screenshots/").concat(t)};var P=function(e,t){return t.startsWith("/assets")?t:"/assets/".concat(e,"/").concat(t)};t.formatRegistryLogoPath=P;t.getBlockletLogoUrl=function(e){var t=e.did,n=e.baseUrl,r=e.logoPath;if(n.startsWith("http")&&r)return(0,C.default)(n,P(t,r));var o=(window.env.apiPrefix||"/").replace(/^\/+/,"").replace(/\/+$/,"");return o&&(o="/".concat(o)),(0,C.default)(o,"/blocklet/logo/".concat(t))};t.getPathPrefix=function(){return window.env&&window.env.apiPrefix?window.env.apiPrefix:"/"};var S=function(){var e=o(r().mark((function e(t){return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,m.default)((0,C.default)(new URL(t).origin,i.WELLKNOWN_PING_PREFIX)));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();t.isUrlAccessible=S;var b=function(){var e=o(r().mark((function e(t){var n;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,(0,h.evaluateURLs)(t);case 3:return n=e.sent,e.abrupt("return",n[0].url);case 7:return e.prev=7,e.t0=e.catch(0),console.warn("get accessible url failed"),e.abrupt("return","");case 11:case"end":return e.stop()}}),e,null,[[0,7]])})));return function(t){return e.apply(this,arguments)}}();t.getAccessibleUrl=b;t.isCertificateMatch=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];try{return t.map((function(e){return e.domain})).some((function(t){return e.some((function(e){return new window.URL(e).hostname===t}))}))}catch(n){return console.warn("domain match failed"),!1}};t.getBlockletUrlParams=function(e,t){return"running"===(e||{}).status?{locale:t}:{locale:t,__start__:1}};t.isSafari=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator.userAgent;return e.includes("iPhone")||e.includes("Safari")&&!e.includes("Chrome")};function A(e){for(var t=decodeURIComponent(e);t!==decodeURIComponent(t);)t=decodeURIComponent(t);return t}function I(e,t){return k.apply(this,arguments)}function k(){return(k=o(r().mark((function e(t,n){var o,a;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,T.default.post((0,C.default)(t,"/api/gql/"),JSON.stringify({query:'{\n getAssetState(address: "'.concat(n,'") {\n state {\n address\n data {\n typeUrl\n value\n }\n issuer\n owner\n parent\n }\n }\n }')}),{headers:{"Content-Type":"application/json",Accept:"application/json"},timeout:6e4});case 2:return o=e.sent,(a=(0,L.default)(o.data,"data.getAssetState.state"))&&"json"===a.data.typeUrl&&(a.data.value=JSON.parse(a.data.value)),e.abrupt("return",a);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function x(){return(x=o(r().mark((function e(t,n){var o;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,I(t,n);case 2:return o=e.sent,e.abrupt("return",(0,E.default)((0,L.default)(o,"data.value.expirationDate",[])));case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}t.isChrome=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator.userAgent;return e.includes("Chrome")};t.isNewRegistryUrl=function(e,t){if("string"===typeof e){var n=decodeURIComponent(null===e||void 0===e?void 0:e.trim());/^https?:\/\//.test(n)||(n="https://".concat(n)),n=(0,v.default)(n,"/");try{new URL(n)}catch(r){throw new Error("Invalid Blocklet Store URL")}return null!==t&&void 0!==t&&t.some((function(t){return[e,n].includes(t.url)}))?{isNew:!1,decoded:n}:{isNew:!0,decoded:n}}return{isNew:!1,decoded:""}};t.isBlockletDev=function(e){return e.mode===_.BLOCKLET_MODES.DEVELOPMENT};var B=(null===(l=window.env)||void 0===l?void 0:l.groupPathPrefix)||"/";t.APP_PREFIX=B;var y=[i.ROLES.ADMIN,i.ROLES.OWNER];t.BlockletAdminRoles=y},33196:function(){},38087:function(){},8092:function(){},50936:function(){},74854:function(){},66602:function(){}}]);
2
+ //# sourceMappingURL=628.d4e71027.chunk.js.map