@abtnode/webapp 1.8.14 → 1.8.15

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abtnode/webapp",
3
- "version": "1.8.14",
3
+ "version": "1.8.15",
4
4
  "keywords": [
5
5
  "arcblock",
6
6
  "forge",
@@ -1,2 +0,0 @@
1
- (self.webpackChunk_abtnode_webapp=self.webpackChunk_abtnode_webapp||[]).push([[2201],{91519:function(e,n,t){"use strict";t.d(n,{FM:function(){return C},M2:function(){return E},TT:function(){return k},Ti:function(){return B},rn:function(){return y}});var r=t(32723),o=t(34795),a=t(74082),i=t.n(a),l=t(35483),c=t.n(l),s=t(39591),u=t.n(s),d=t(34271),f=t(21918),p=t.n(f),m=t(19611),h=t.n(m),g=t(17128),x=t.n(g),b=t(9214),v=function(e){return function(e){for(var n=window.atob(e),t=new Uint8Array(n.length),r=0;r<n.length;r++)t[r]=n.charCodeAt(r);return t}((0,b.toDataURL)(e,{size:200}).replace(/^[^,]*,/,""))};function k(e){return e.replace(/[\s/@_]/g,"-").replace(/[^a-zA-Z0-9_-]/g,"").replace(/(^[-\s]+)|([-\s]+$)/g,"").toLowerCase()}function y(e,n){var t=c()(i()(n.meta),(function(e){return null!==e}));return t.name=e,t.did=x()(e),t.logo="logo.png",t.interfaces.forEach((function(e){e.services||delete e.services})),n.children.forEach((function(e){e.dynamic&&e.bundleSource&&t.children.push({name:e.meta.name,source:e.bundleSource,title:e.meta.title,mountPoint:e.mountPoint})})),t.environments=(n.configs||[]).map((function(e){return{name:e.key,description:"Automatically generated when exporting",required:!!e.required,secure:!!e.secure,default:e.secure?"":e.value||""}})),t.capabilities.component=!1,t}var w=function(e){return"Copyright \xa9 2022 ".concat(e||"","\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \u201cSoftware\u201d), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.")},A=".DS_Store\n.blocklet",j="name: Deploy\n\non:\n push:\n branches:\n - main\n\njobs:\n Deploy:\n runs-on: ubuntu-latest\n\n steps:\n - name: Checkout repo\n uses: actions/checkout@v2\n\n - name: Blocklet workflow\n uses: blocklet/action-workflow@v1\n with:\n skip-upload: true\n skip-deploy: true\n bundle-command: blocklet bundle --create-release\n github-token: ${{ secrets.GITHUB_TOKEN }}";function E(e){return Z.apply(this,arguments)}function Z(){return Z=(0,o.Z)((0,r.Z)().mark((function e(n){var t,o,a,i,l,c,s=arguments;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=s.length>1&&void 0!==s[1]?s[1]:{},o=t.holder,a="".concat(n.name.split("/").pop()),i="# ".concat(n.title,"\n\n## Introduction\n\n").concat(n.description),l=new(u()),(c=l.folder(a)).file("blocklet.yml",d.ZP.dump(n)),c.file("blocklet.md",i),c.file("README.md",i),c.file("logo.png",v(n.did)),c.file("LICENSE",w(o)),c.file(".gitignore",A),c.folder("screenshots").file(".gitkeep",""),c.folder(".github").folder("workflows").file("main.yml",j),e.next=15,new Promise((function(e,n){l.generateAsync({type:"blob"}).then((function(n){p()(n,"".concat(a,".zip")),e()})).catch((function(e){n(e)}))}));case 15:case"end":return e.stop()}}),e)}))),Z.apply(this,arguments)}var B=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=n.routing.adminPath,o=t?encodeURIComponent(h()(window.location.origin,r)):h()(window.location.origin,r),a=h()(null===n||void 0===n?void 0:n.blockletRegistry,"/api/blocklets/".concat(e.did,"/blocklet.json"));return{serverUrl:o,metaUrl:a}},C=function(e,n){var t=B(e,n),r=t.metaUrl,o=t.serverUrl,a=new URL(h()(o,"/launch-blocklet/agreement"));return a.searchParams.set("blocklet_meta_url",r),a.searchParams.set("from",window.location.href),a.href}},38657:function(e,n,t){"use strict";var r=t(33028),o=t(59740),a=t(30969),i=t(88029),l=t(37574),c=["children"];function s(e){var n=e.children,t=(0,o.Z)(e,c);return(0,l.jsx)(i.default,(0,r.Z)((0,r.Z)({variant:"contained",color:"primary"},t),{},{children:n}))}n.Z=(0,a.forwardRef)((function(e,n){return(0,l.jsx)(s,(0,r.Z)((0,r.Z)({},e),{},{forwardedRef:n}))}))},71927:function(e,n,t){"use strict";t.d(n,{Z:function(){return O}});var r=t(71171),o=t(32723),a=t(34795),i=t(96234),l=t(30969),c=t(13026),s=t(4716),u=t(16380),d=t(42167),f=t(7017),p=t(23426),m=t(55632),h=t(98185),g=t(61802),x=t(98169),b=t(76032),v=t.n(b),k=t(81721),y=t(47768),w=t(5954),A=t(33028),j=t(37574);function E(e){var n=Object.assign({},e);return(0,j.jsxs)("div",(0,A.Z)((0,A.Z)({},n),{},{style:{width:"100%"},children:[(0,j.jsx)("h3",{children:"End User License Agreement for Application"}),(0,j.jsx)("p",{children:"Blocklet Server License Agreement ArcBlock, Inc. version 2020-08-28"}),(0,j.jsx)("p",{children:"BLOCKLET SERVER LICENSE AGREEMENT"}),(0,j.jsx)("p",{children:"\u6682\u65e0"})]}))}var Z,B,C=t(78685),N=t(38657);function O(e){var n=e.blocklet,t=e.onClickNext,r=e.handleDescEle,u=e.showPageHeader,b=(0,c.s0)(),A=(0,l.useState)(null),Z=(0,i.Z)(A,2),B=Z[0],O=Z[1],R=(0,l.useState)(null),M=(0,i.Z)(R,2),P=M[0],S=M[1],I=(0,l.useState)(!1),D=(0,i.Z)(I,2),U=D[0],Q=D[1],F=(0,d.useLocaleContext)(),H=F.t,J=F.locale,z=(0,w.h6)(),X=z.info,K=z.api,Y=n.isRunning,G=(0,l.useMemo)((function(){return v()(n)||U}),[n,U]),W=t||function(){b("/launch-blocklet/install".concat(window.location.search))};if((0,l.useEffect)((function(){var e=function(){var e=(0,a.Z)((0,o.Z)().mark((function e(){var t,r,a,i;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,Q(!0),e.next=4,K.getBlocklet({input:{did:n.meta.did}});case 4:return t=e.sent,r=t.blocklet,a=r.interfaces.map((function(e){return e.url})),e.next=9,(0,C.D)(a);case 9:if((i=e.sent)||!v()(i)){e.next=13;break}return O(null),e.abrupt("return");case 13:O(new URL(i).href),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(0),S(e.t0.message);case 19:return e.prev=19,Q(!1),e.finish(19);case 22:case"end":return e.stop()}}),e,null,[[0,16,19,22]])})));return function(){return e.apply(this,arguments)}}();Y&&e()}),[n]),P)return(0,j.jsx)(k.default,{relative:"parent",children:(0,j.jsx)("div",{children:(0,j.jsx)(x.Z,{style:{wordBreak:"break-all"},variant:"icon",type:"error",children:P})})});if(G)return(0,j.jsx)(k.default,{relative:"parent",children:(0,j.jsx)(g.default,{})});var V=n.meta,q={data:V};if(!V)return(0,j.jsx)(k.default,{relative:"parent",children:(0,j.jsx)(g.default,{})});if(n.isInstalled){var _=B?"alreadyRunning":"alreadyInstalled";return(0,j.jsx)(p.Z,{variant:"info",title:H("common.reminder"),subTitle:H("launchBlocklet.".concat(_),{name:(0,f.getDisplayName)(n,!0)}),footer:(0,j.jsxs)(L,{children:[(0,j.jsx)(N.Z,{"data-cy":"view-blocklet",component:s.Link,to:"/blocklets/".concat(n.meta.did,"/overview"),variant:B?"outlined":"contained",color:"primary",children:H("launchBlocklet.viewApplication")}),B&&(0,j.jsx)(N.Z,{className:"last-button",href:B,"data-cy":"open-blocklet",children:H("common.open")})]})})}return X?(0,j.jsxs)(T,{children:[u&&(0,j.jsx)(y.Z,{title:H("launchBlocklet.introduction"),subTitle:H("launchBlocklet.welcome")}),(0,j.jsx)("div",{className:"app-content",children:(0,j.jsx)("div",{className:"agreement",children:(0,j.jsx)("div",{className:"agreement-content",children:(0,j.jsx)(h.Z,{blockletMeta:q,locale:J,handleDescEle:r})})})}),(0,j.jsx)("div",{className:"button-container","data-cy":"agree-all",children:(0,j.jsx)(m.Z,{onContinue:W,description:(0,j.jsx)(E,{}),texts:{listenName:H("launchBlocklet.license"),buttonNext:H("launchBlocklet.next")}})})]}):(0,j.jsx)(k.default,{relative:"parent",children:(0,j.jsx)(g.default,{})})}O.defaultProps={onClickNext:null,handleDescEle:"",showPageHeader:!0};var T=u.default.div(Z||(Z=(0,r.Z)(["\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n\n .app-content {\n padding: 2px 24px 24px;\n "," {\n padding-top: 10px;\n }\n width: 100%;\n flex: 1;\n letter-spacing: normal;\n }\n .agreement {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n border: 1px solid ",";\n border-radius: 12px;\n\n "," {\n margin-top: 24px;\n }\n\n "," {\n margin-top: 16px;\n }\n\n .agreement-content {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n font-size: 14px;\n overflow-y: auto;\n\n "," {\n padding: 0 24px;\n }\n\n "," {\n padding: 0 16px;\n }\n\n &:after {\n display: block;\n content: '';\n height: 24px;\n }\n }\n }\n .button-container {\n padding-top: 24px;\n padding-bottom: 34px;\n "," {\n padding-right: 24px;\n margin-left: auto;\n }\n "," {\n padding-top: 0;\n padding-bottom: 16px;\n }\n }\n"])),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.palette.grey[100]}),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.down("md")})),L=u.default.div(B||(B=(0,r.Z)(["\n .MuiButton-root {\n "," {\n min-width: 200px;\n }\n }\n .last-button {\n margin-left: ",";\n }\n"])),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.spacing(2)}))},99042:function(e,n,t){"use strict";t.d(n,{hi:function(){return a},od:function(){return o.a}});var r=t(95803),o=t.n(r);o().defaults.timeout=1e4;var a=o().create()},24658:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return Ue}});var r,o,a,i=t(71171),l=t(33028),c=t(32723),s=t(34795),u=t(96234),d=t(30969),f=t(13026),p=t(70048),m=t(19611),h=t.n(m),g=t(98169),x=t(75255),b=t(16380),v=t(42167),k=t(90445),y=t(71464),w=t(56229),A=t(17912),j=t(19006),E=t(47650),Z=t(52019),B=t(27321),C=t(5954),N=t(94604),O=b.default.div(r||(r=(0,i.Z)(["\n width: 100%;\n min-height: 100vh;\n padding: 20px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n"]))),T=t(76032),L=t.n(T),R=t(7017),M=t(23426),P=t(61802),S=t(98465),I=t(81721),D=t(37574);var U=b.default.a(o||(o=(0,i.Z)(["\n display: block;\n height: 36px;\n color: ",";\n"])),(function(e){return e.theme.palette.primary.main})),Q=(0,b.default)(S.Z)(a||(a=(0,i.Z)(["\n .app-info_desc {\n font-weight: 400;\n margin-top: 40px;\n font-size: 18px;\n line-height: 21px;\n color: #222222;\n }\n\n .body {\n text-align: center;\n }\n\n "," {\n .app-info_desc {\n font-size: 16px;\n }\n }\n\n .circle_icon {\n font-size: 58px;\n color: ",";\n }\n"])),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return"error"===e.variant?e.theme.palette.error.main:e.theme.palette.success.main})),F=function(e){var n=e.blocklet,t=(0,v.useLocaleContext)().t,r=(0,C.h6)().info,o=(0,N.Z)(),a=decodeURIComponent(o.get("accessUrl")||"");return L()(n)?(0,D.jsx)(I.default,{relative:"parent",children:(0,D.jsx)(P.default,{})}):(0,D.jsx)(Q,{children:(0,D.jsx)("div",{className:"body",children:(0,D.jsx)(M.Z,{variant:"success",title:(0,R.getDisplayName)(n,!0),subTitle:t("launchBlocklet.installSuccess",{serverName:r.name}),footer:(0,D.jsx)(U,{href:a,rel:"noreferrer","data-cy":"open-blocklet",children:t("common.open")})})})})},H=t(4716),J=t(15888),z=t.n(J),X=t(60451),K=t.n(X),Y=t(43658),G=t(88412),W=t(7284),V=t(51193),q=t(43685),_=t(65724),$=t(47768),ee=t(54177),ne=t(25611),te=t(70662),re=t(66604),oe=t(98585),ae=t(4485),ie=t(78685),le=t(91519),ce=t(38657);function se(e){var n=e.onCancel,t=e.onUpgrade,r=(0,v.useLocaleContext)().t;return(0,D.jsx)(M.Z,{variant:"info",title:r("launchBlocklet.newVersion"),subTitle:r("launchBlocklet.newVersionDesc"),footer:(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(ce.Z,{onClick:n,variant:"outlined",children:r("launchBlocklet.later")}),(0,D.jsx)(ce.Z,{onClick:t,style:{marginLeft:24},children:r("launchBlocklet.upgradeNow")})]})})}se.defaultProps={onCancel:function(){},onUpgrade:function(){}};var ue=t(50692),de=t(57016),fe=Object.keys(_.BlockletStatus),pe=Object.values(_.BlockletStatus);function me(e){var n=(0,de.Z)(),t=(0,d.useState)({status:null,eventName:""}),r=(0,u.Z)(t,2),o=r[0],a=r[1];(0,d.useEffect)((function(){e&&null===o.status&&n.getBlocklet({input:{did:e}}).then((function(e){a({status:e.blocklet?e.blocklet.status:"",eventName:"",runtimeBlocklet:e.blocklet,isGetBlocklet:!0})}))}),[e,o.status]);return Object.values(_.BlockletEvents).forEach((function(n){(0,ue.mU)(n,function(n){return function(t){if(t.meta.did===e){var r={status:null,eventName:n,runtimeBlocklet:t};t.error?(r.status="error",r.error=t.error):r.status=fe[pe.indexOf(t.status)],a(r)}}}(n),[e])})),o}var he=t(24974),ge=t.n(he),xe=t(74364);function be(e){var n=e.blocklet,t=e.blockletMetaUrl,r=n.meta,o=r.did,a=r.logo;return a?(0,D.jsx)(xe.default,{src:(0,ie.aZ)({did:o,logoPath:a,baseUrl:new URL(t).origin}),fallback:"data:image/png;base64,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",width:64,size:"contain",placeholder:"application logo"}):(0,D.jsx)(q.default,{did:o,size:64})}be.propTypes={blocklet:ge().object.isRequired,blockletMetaUrl:ge().string.isRequired};var ve,ke,ye,we,Ae,je,Ee,Ze=t(39404),Be=t(99042);function Ce(e){var n,t,r=e.blocklet,o=(0,N.Z)(),a=(0,v.useLocaleContext)(),i=a.t,l=a.locale,p=L()(r)?null:(0,R.getDisplayName)(r,!0),m=(0,C.h6)(),g=m.api,x=m.info,b=m.loading,k=(0,ae.Tt)().session,y=(0,f.s0)(),w=(0,Y.default)("skip-blocklet-setup",!1),A=(0,u.Z)(w,1)[0],j=(0,d.useState)(!1),E=(0,u.Z)(j,2),Z=E[0],B=E[1],O=(0,d.useState)(!1),T=(0,u.Z)(O,2),M=T[0],S=T[1],U=(0,d.useState)(!1),Q=(0,u.Z)(U,2),F=Q[0],J=Q[1],X=(0,d.useState)(""),ue=(0,u.Z)(X,2),de=ue[0],fe=ue[1],pe=(0,d.useState)(null),he=(0,u.Z)(pe,2),ge=he[0],xe=he[1],ve=(0,d.useRef)(""),ke=(0,d.useState)({action:"",baseUrl:"",checkFn:function(){},extraParams:{}}),ye=(0,u.Z)(ke,2),we=ye[0],Ae=ye[1],je=(0,d.useState)(null),Ee=(0,u.Z)(je,2),Ce=Ee[0],Ne=Ee[1],Oe=me(k.user?null===r||void 0===r||null===(n=r.meta)||void 0===n?void 0:n.did:""),De=Oe.status,Ue=o.get("blocklet_meta_url"),Qe=new URL(Ue).origin,Fe=new URL(window.location.href).searchParams.get("from");(0,d.useEffect)((function(){return B(!!De)}),[!!De]);var He=function(){var e=(0,s.Z)((0,c.Z)().mark((function e(){var n,t,o,a;return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=r.meta.registryUrl,t=(0,ie.GI)(n,x.blockletRegistryList),o=t.isNew,a=t.decoded,!o){e.next=5;break}return e.next=5,g.addBlockletStore({input:{url:a}});case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Je=function(){var e=(0,s.Z)((0,c.Z)().mark((function e(){var n,t,o,a,i,l,s,u,d,f,p;return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Ne(null),e.prev=1,e.next=4,He();case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),console.error("addNewRegistryToRegistryList error:",e.t0);case 9:if(!(k.user&&(k.user.permissions||[]).includes("mutate_blocklet"))||!r.isFree){e.next=16;break}return B(!0),J(!1),e.next=15,g.installBlocklet({input:{url:Ue}}).catch((function(e){ee.ZP.error((0,ie.Z)(e)),console.error("install blocklet failed",e)}));case 15:return e.abrupt("return");case 16:if(!r.isFree){e.next=20;break}Ae({action:"launch-free-blocklet-by-".concat((0,oe.getServerAuthMethod)(x)),baseUrl:void 0,checkFn:Be.od.create({baseURL:null!==(n=null===(t=window)||void 0===t||null===(o=t.env)||void 0===o?void 0:o.apiPrefix)&&void 0!==n?n:"/"}).get,extraParams:{blockletMetaUrl:Ue}}),e.next=33;break;case 20:if(null===k||void 0===k||!k.user){e.next=24;break}Ae({action:"verify-purchase-blocklet",baseUrl:new URL(Ue).origin,checkFn:Be.od.create({baseURL:new URL(Ue).origin}).get,extraParams:{serverDid:x.did,blockletDid:null===r||void 0===r||null===(a=r.meta)||void 0===a?void 0:a.did,blockletMetaUrl:Ue}}),e.next=33;break;case 24:return(d=new URL(window.location.href)).pathname=h()(null!==(i=null===(l=window)||void 0===l||null===(s=l.env)||void 0===s?void 0:s.apiPrefix)&&void 0!==i?i:"/","/api/did/launch-paid-blocklet-by-".concat((0,oe.getServerAuthMethod)(x),"/token")),d.searchParams.set("autoConnect",!1),d.searchParams.set("blockletMetaUrl",Ue),e.next=30,Be.hi.get(d.href);case 30:f=e.sent,p=f.data,Ae({action:"verify-purchase-blocklet",baseUrl:new URL(Ue).origin,checkFn:Be.od.create({baseURL:new URL(Ue).origin}).get,extraParams:{serverDid:x.did,blockletDid:null===r||void 0===r||null===(u=r.meta)||void 0===u?void 0:u.did,nw:p.url}});case 33:J(!0);case 34:case"end":return e.stop()}}),e,null,[[1,6]])})));return function(){return e.apply(this,arguments)}}(),ze=function(){var e=(0,s.Z)((0,c.Z)().mark((function e(n,t){var o,a,u,d,f,p,m;return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(d=function(){return d=(0,s.Z)((0,c.Z)().mark((function e(n){return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,re.Z)((function(){return Be.hi.get(n).then(function(){var e=(0,s.Z)((0,c.Z)().mark((function e(n){var t;return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("succeed"!==(t=n.data).status){e.next=5;break}return e.next=4,o(t.sessionToken);case 4:case 8:return e.abrupt("return",!0);case 5:if("error"!==t.status){e.next=9;break}return e.next=8,a(null===t||void 0===t?void 0:t.error);case 9:return e.abrupt("return",!1);case 10:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}())}),{interval:1e3}));case 1:case"end":return e.stop()}}),e)}))),d.apply(this,arguments)},u=function(e){return d.apply(this,arguments)},o=function(){var e=(0,s.Z)((0,c.Z)().mark((function e(n){return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return ee.ZP.success(i("launchBlocklet.dialog.success",l)),localStorage.setItem("__sst",n),e.next=4,k.refresh();case 4:B(!0),J(!1);case 6:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),a=function(){var e=(0,s.Z)((0,c.Z)().mark((function e(n){return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:ee.ZP.error(n),B(!1),J(!1);case 3:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),null===(f=we.extraParams)||void 0===f||!f.nw){e.next=11;break}return p=(0,ie.Pi)(f.nw),m=p.statusUrl,e.next=9,u(m);case 9:case 16:e.next=20;break;case 11:if(r.isFree||null!==f&&void 0!==f&&f.nw){e.next=18;break}return B(!0),J(!1),e.next=16,g.installBlocklet({input:{url:Ue,downloadToken:t(null===n||void 0===n?void 0:n.downloadToken)}});case 18:return e.next=20,o(t(n.sessionToken));case 20:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}(),Xe=function(e){var n="/blocklets/".concat(e.meta.did,"/configuration"),t="/launch-blocklet/complete?status=installed&name=".concat(encodeURIComponent(p),"&accessUrl=").concat(encodeURIComponent(n),"&blocklet_meta_url=").concat(Ue),r=o.get("from_launcher");r&&(t+="&from_launcher=".concat(r)),y(t)},Ke=function(){var e=(0,s.Z)((0,c.Z)().mark((function e(n){var t,a,i,l,s;return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=n.interfaces.map((function(e){return e.url})),e.next=3,(0,ie.D)(a);case 3:if(i=e.sent,!L()(i)&&!A){e.next=7;break}return setTimeout((function(){Xe(n)}),1500),e.abrupt("return");case 7:(l=new URL(i)).searchParams.set("serverUrl",null===(t=(0,le.Ti)(r,x))||void 0===t?void 0:t.serverUrl),"running"!==n.status&&l.searchParams.set("__start__","1"),(s=o.get("from_launcher"))&&l.searchParams.set("from_launcher",s),fe(l.href),setTimeout((function(){window.location.href=l.href}),1500);case 14:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),Ye=(0,d.useMemo)((function(){var e;return function(n){clearTimeout(e),e=setTimeout((0,s.Z)((0,c.Z)().mark((function e(){var t,o;return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=n){e.next=6;break}return e.next=4,g.getBlocklet({input:{did:r.meta.did}});case 4:o=e.sent,t=o.blocklet;case 6:t&&(!ve.current&&K().gt(r.meta.version,t.meta.version)?z()(ge,{installedBlocklet:t})||xe({installedBlocklet:t}):Ke(t));case 7:case"end":return e.stop()}}),e)}))),1e3)}}),[g,null===r||void 0===r||null===(t=r.meta)||void 0===t?void 0:t.did,ge]),Ge=[i("launchBlocklet.waiting.verifying"),i("launchBlocklet.waiting.downloading"),i("launchBlocklet.waiting.extracting"),i("upgrading"===De?"common.upgrading":"launchBlocklet.waiting.installing"),i("launchBlocklet.waiting.done")],We=0,Ve=function(){return!M&&S(!0)},qe=function(){We=4,Ye(Oe.isGetBlocklet?Oe.runtimeBlocklet:null)};switch(De){case"waiting":We=1,Ve();break;case"downloading":We=2,Ve();break;case"installing":case"upgrading":We=3,Ve();break;case"installed":case"starting":case"running":case"stopped":qe();break;case"corrupted":case"error":var _e,$e={message:Oe.error.message,name:Oe.eventName};if([_.BlockletEvents.downloadFailed,_.BlockletEvents.installFailed].includes(Oe.eventName)?$e.action="retry":"error"!==De&&"corrupted"!==De||($e.action="view"),!z()($e,Ce))null!==Oe&&void 0!==Oe&&null!==(_e=Oe.error)&&void 0!==_e&&_e.message&&ee.ZP.error((0,ie.Z)(Oe.error)),Ne($e)}if(k.user&&null===De||L()(r)||b)return(0,D.jsx)(I.default,{relative:"parent",children:(0,D.jsx)(P.default,{})});if(Ce){var en={view:(0,D.jsx)(ce.Z,{className:"bottom-button",component:H.Link,to:"/blocklets/".concat(r.meta.did,"/overview"),"data-cy":"view-blocklet",color:"primary",variant:"contained",children:i("launchBlocklet.viewApplication")}),retry:(0,D.jsxs)(Se,{children:[(0,D.jsxs)(ce.Z,{className:"bottom-button","data-cy":"retry-install",disabled:F,onClick:Je,children:[F&&(0,D.jsx)(P.default,{size:[16,10]}),i("common.retry")]}),Fe&&(0,D.jsx)(ce.Z,{variant:"text",className:"bottom-button","data-cy":"go-back",disabled:F,onClick:function(){window.location.href=Fe},children:i("common.back")})]})},nn=Ce.name?Ce.name.replace("blocklet.",""):"installFailed";return(0,D.jsx)(Ie,{variant:"error",title:p,subTitle:(0,D.jsxs)(Pe,{children:[(0,D.jsx)("div",{children:i("launchBlocklet.error.".concat(nn))}),Ce.message&&(0,D.jsx)("div",{className:"error-desc",children:i("common.errorMessage")+Ce.message})]}),footer:en[Ce.action]})}var tn=function(){var e=(0,s.Z)((0,c.Z)().mark((function e(){var n;return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n={did:r.meta.did,version:r.meta.version,registryUrl:Qe},ve.current="upgrade",xe(null),e.next=5,g.upgradeBlocklet({input:n});case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();if(ge)return(0,D.jsx)(se,{onCancel:function(){return S(!0),ve.current="cancel",xe(null),void Ke(ge.installedBlocklet)},onUpgrade:function(){return tn()}});if(!M&&("installed"===De||"running"===De))return(0,D.jsx)(Ie,{variant:"info",title:i("common.reminder"),subTitle:i("launchBlocklet.alreadyExists",{name:(0,R.getDisplayName)(r,!0)}),footer:(0,D.jsxs)(Re,{children:[!de&&(0,D.jsx)(P.default,{size:[16,10]}),de&&(0,D.jsx)(ce.Z,{className:"last-button",href:de,"data-cy":"open-blocklet",children:i("common.open")})]})});if(Z&&de||"cancel"===ve.current)return(0,D.jsx)(Ie,{variant:de?"success":"loading",title:de?p:"",subTitle:i("launchBlocklet.installSuccess",{serverName:x.name}),footer:de?(0,D.jsxs)(Me,{href:de,rel:"noreferrer","data-cy":"open-blocklet",children:[(0,D.jsx)(P.default,{size:[16,10],style:{marginRight:14}})," ",i("common.redirecting")]}):"",style:{marginBottom:34}});var rn=!Z&&!De;return(0,D.jsxs)(Te,{children:[(0,D.jsx)("div",{className:"header",children:!de&&(0,D.jsx)($.Z,{title:i(rn?"common.install":"common.installing"),subTitle:rn?i("launchBlocklet.subTitle",{appName:p,serverName:x.name}):""})}),(0,D.jsxs)("div",{className:"body",children:[rn&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)("div",{className:"illustrations",children:[(0,D.jsx)("div",{className:"ills-block ills-block-left",children:(0,D.jsxs)("div",{className:"ills-block-inner",children:[(0,D.jsx)(be,{className:"i-icon",blocklet:r,blockletMetaUrl:Ue}),(0,D.jsx)("div",{className:"i-name",children:p})]})}),(0,D.jsx)(G.Z,{className:"arrow-icon"}),(0,D.jsx)("div",{className:"ills-block ills-block-right",children:(0,D.jsxs)("div",{className:"ills-block-inner",children:[(0,D.jsx)("img",{width:"64",height:"64",src:Ze.Z,alt:""}),(0,D.jsx)("div",{className:"i-name",children:x.name}),(0,D.jsx)(V.default,{size:12,prepend:(0,D.jsx)(q.default,{did:x.did,size:12,style:{marginRight:4}}),responsive:!1,compact:!0,children:x.did})]})})]}),(0,D.jsxs)(ce.Z,{className:"bottom-button","data-cy":"start-launch",disabled:F,onClick:Je,children:[F&&(0,D.jsx)(P.default,{size:[16,10]}),i("launchBlocklet.confirmInstall")]})]}),Z&&(0,D.jsx)(Le,{children:(0,D.jsx)(ne.Z,{increaseSpeed:.3,messageLoop:!1,message:(0,D.jsx)(te.Z,{steps:Ge,stepIndex:We,autoGrowth:4===We?1e3:4e3})})})]}),(0,D.jsx)(W.default,{open:F,popup:!0,saveConnect:!1,className:"connect",baseUrl:we.baseUrl,action:we.action,checkFn:we.checkFn,extraParams:we.extraParams,checkTimeout:6e5,socketUrl:g.socketUrl,webWalletUrl:(0,ie.yP)(x),onSuccess:ze,onClose:function(){return J(!1)},locale:l,messages:{title:"".concat(i("launchBlocklet.dialog.title")),scan:r.isFree?i("launchBlocklet.dialog.freeDescription"):i("launchBlocklet.dialog.nonFreeDescription"),confirm:i("launchBlocklet.dialog.confirm"),success:i("launchBlocklet.dialog.success")}})]})}var Ne,Oe,Te=(0,b.default)(S.Z)(ve||(ve=(0,i.Z)(["\n .body {\n align-items: center;\n animation: fadein ease 0.3s;\n }\n\n .illustrations {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: start;\n text-align: center;\n margin-top: 16px;\n margin-bottom: 40px;\n width: 100%;\n }\n\n .ills-block,\n .ills-block-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n flex: 1;\n }\n .ills-block {\n max-width: 220px;\n .i-icon {\n width: 64px;\n height: 64px;\n }\n\n .i-name {\n margin-top: 16px;\n font-weight: 400;\n font-size: 16px;\n color: #222222;\n }\n\n .i-sub-name {\n color: #999999;\n }\n }\n\n .arrow-icon {\n align-self: start;\n color: #c4c5ca;\n font-size: 30px;\n margin: 16px 0 0;\n "," {\n margin: 25px 24px 0;\n }\n }\n\n @keyframes fadein {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n"])),(function(e){return e.theme.breakpoints.down("md")})),Le=b.default.div(ke||(ke=(0,i.Z)(["\n color: #1dc1c7;\n"]))),Re=b.default.div(ye||(ye=(0,i.Z)(["\n .MuiButton-root {\n "," {\n min-width: 200px;\n }\n }\n .last-button {\n margin-left: ",";\n }\n"])),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.spacing(2)})),Me=b.default.a(we||(we=(0,i.Z)(["\n display: flex;\n justify-content: center;\n align-items: center;\n height: 36px;\n color: ",";\n"])),(function(e){return e.theme.palette.primary.main})),Pe=b.default.div(Ae||(Ae=(0,i.Z)(["\n line-height: 1.4em;\n .error-desc {\n margin-top: 8px;\n word-wrap: break-word;\n color: ",";\n }\n"])),(function(e){return e.theme.palette.grey[500]})),Se=b.default.div(je||(je=(0,i.Z)(["\n display: flex;\n justify-content: space-around;\n flex-wrap: wrap;\n button {\n margin: 0 10px 18px;\n }\n"]))),Ie=(0,b.default)(M.Z)(Ee||(Ee=(0,i.Z)(["\n .result-footer {\n height: auto;\n }\n"]))),De=t(71927);function Ue(){var e=(0,x.Z)((function(e){return e.breakpoints.down("md")})),n=(0,v.useLocaleContext)(),t=n.t,r=n.locale,o=(0,N.Z)(),a=(0,C.h6)(),i=a.api,m=a.info,b=!!o.get("from_launcher"),T=(0,ie.yP)(m),L=(0,d.useState)(""),R=(0,u.Z)(L,2),M=R[0],P=R[1],S=(o.get("blocklet_meta_url")||"").trim();S=decodeURIComponent(S);var I=(0,p.Z)((0,s.Z)((0,c.Z)().mark((function e(){var n,r,o,a,l;return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(S){e.next=2;break}throw new Error(t("common.invalidParam"));case 2:return e.next=4,i.getBlockletMetaFromUrl({input:{url:S,checkPrice:!0}});case 4:if(n=e.sent,r=n.meta,o=n.isFree,a=n.isInstalled,l=n.isRunning,r){e.next=11;break}throw new Error(t("launchBlocklet.error.loadMetaFailed"));case 11:return e.abrupt("return",{meta:r,isFree:o,isInstalled:a,isRunning:l});case 12:case"end":return e.stop()}}),e)}))));if((0,d.useEffect)((function(){if(I.value&&m){var e=(0,le.Ti)(I.value,m);P(e.serverUrl)}}),[I.value,m]),I.error)return(0,D.jsx)(O,{children:(0,D.jsx)("div",{children:(0,D.jsx)(g.Z,{style:{width:"100%",wordBreak:"break-all"},variant:"icon",type:"error",children:I.error.message})})});var U=I.value||{},Q=U.meta,H=U.isFree,J=h()((0,ie.Y5)(),"/launch-blocklet"),z=[{key:"agreement",name:t("launchBlocklet.introduction"),path:h()(J,"agreement")},{key:"install",name:t("launchBlocklet.launch"),path:h()(J,"install")},{key:"setup",name:t("launchBlocklet.setup"),path:h()(J,"complete"),description:t("launchBlocklet.setupAppDesc")},{key:"complete",name:t("launchBlocklet.launched")}],X=function(){M&&window.open(M)},K=(0,D.jsx)(Fe,{className:"".concat(M?"logo-can-click":""),children:(0,D.jsx)(B.Z,{onClick:X,logo:e?(0,D.jsx)(j.Z,{width:"32",height:"32"}):(0,D.jsx)(E.Z,{width:"128",height:"48"})})});return b&&(z.splice(0,1,{key:"wizard",name:t("launchBlocklet.introduction")},{key:"select-node",name:t("launchBlocklet.selectAbtNode")}),K=(0,D.jsx)(Fe,{className:"".concat(M?"logo-can-click":""),children:(0,D.jsx)(B.Z,{logo:e?(0,D.jsx)(j.Z,{onClick:X,width:"32",height:"32"}):(0,D.jsx)(E.Z,{onClick:X,width:"128",height:"48"}),previousData:{logo:e?(0,D.jsx)(A.Z,{width:"32",height:"32"}):(0,D.jsx)(Z.Z,{width:"145",height:"48"})}})})),Q&&(Q.registryUrl=new URL(S).origin),(0,D.jsx)(y.StepProvider,{steps:z,children:(0,D.jsx)(k.Z,{locale:r,blockletMeta:(0,l.Z)((0,l.Z)({},Q),{},{isFree:H}),useOfSkeleton:!1,navLogo:K,headerEndAddons:(0,D.jsx)(w.Z,{webWalletUrl:T,SessionContext:ae.B3}),pcWidth:"80%",logoUrl:Q&&Q.logo?(0,ie.aZ)({did:Q.did,baseUrl:Q.registryUrl,logoPath:Q.logo}):null,children:(0,D.jsx)(Qe,{children:(0,D.jsxs)(f.Z5,{children:[(0,D.jsx)(f.AW,{path:"agreement",element:(0,D.jsx)(De.Z,{blocklet:I.value||{}})}),(0,D.jsx)(f.AW,{path:"install",element:(0,D.jsx)(Ce,{blocklet:I.value||{}})}),(0,D.jsx)(f.AW,{path:"complete",element:(0,D.jsx)(F,{blocklet:I.value||{}})}),(0,D.jsx)(f.AW,{path:"*",element:(0,D.jsx)(f.Fg,{to:"agreement".concat(window.location.search),replace:!0})})]})})})})}var Qe=b.default.div(Ne||(Ne=(0,i.Z)(["\n "," {\n padding-top: 34px;\n }\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n\n .bottom-button {\n min-width: 200px;\n }\n"])),(function(e){return e.theme.breakpoints.up("md")})),Fe=b.default.div(Oe||(Oe=(0,i.Z)(["\n margin-top: -1px;\n &.logo-can-click {\n cursor: pointer;\n }\n"])))},17128:function(e,n,t){var r=t(44765).Buffer,o=t(64029).types,a=t(2073).toHex,i=t(54186).fromPublicKey;e.exports=function(e){var n=a(r.from("string"===typeof e?e.trim():e));return i(n,{role:o.RoleType.ROLE_ANY})}},98465:function(e,n,t){"use strict";n.Z=p;var r,o=c(t(16380)),a=c(t(24974)),i=t(37574),l=["children"];function c(e){return e&&e.__esModule?e:{default:e}}function s(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function u(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?s(Object(t),!0).forEach((function(n){d(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):s(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function d(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function f(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}function p(e){var n=e.children,t=f(e,l);return(0,i.jsx)(g,u(u({},t),{},{children:n}))}p.propTypes={children:a.default.any.isRequired};var m,h,g=o.default.div(r||(m=["\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"],h||(h=m.slice(0)),r=Object.freeze(Object.defineProperties(m,{raw:{value:Object.freeze(h)}}))),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.breakpoints.up("sm")}),(function(e){return e.theme.breakpoints.down("md")}))},27321:function(e,n,t){"use strict";n.Z=g;var r,o,a=u(t(24974)),i=u(t(16380)),l=t(37574),c=["logo","name","subname","previousData"],s=["logo"];function u(e){return e&&e.__esModule?e:{default:e}}function d(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}function f(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function p(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?f(Object(t),!0).forEach((function(n){m(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):f(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function m(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function h(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}function g(e){var n=e.logo,t=e.name,r=e.subname,o=e.previousData,a=h(e,c),i=(0,l.jsx)(x,{logo:n}),s=t,u=r;return o.logo&&(i=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(x,{logo:n,className:"left-fade-in-ele"}),(0,l.jsx)(x,{logo:o.logo,className:"postion-abs left-fade-out-ele"})]})),o.name&&o.name!==t&&(s=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("span",{className:"right-fade-in-ele",style:{display:"inline-block"},children:t}),(0,l.jsx)("span",{className:"postion-abs right-fade-out-ele",children:o.name})]})),o.subname&&o.subname!==r&&(u=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("span",{className:"right-fade-in-ele",style:{display:"inline-block"},children:r}),(0,l.jsx)("span",{className:"postion-abs right-fade-out-ele",children:o.subname})]})),(0,l.jsx)(v,p(p({},a),{},{children:(0,l.jsxs)("div",{className:"logo-inner",children:[(0,l.jsx)("div",{className:"logo-img-content",children:i}),(0,l.jsxs)("div",{className:"logo-info ".concat(t||r?"":"zero-left"),children:[(0,l.jsx)("div",{className:"logo-name",children:s}),(0,l.jsx)("div",{className:"logo-subname",children:u})]})]})}))}function x(e){var n=e.logo,t=h(e,s);return(0,l.jsx)(b,p(p({},t),{},{children:n}))}g.propTypes={logo:a.default.element.isRequired,name:a.default.string,subname:a.default.string,previousData:a.default.object},g.defaultProps={name:"",subname:"",previousData:{logo:"",name:"",subname:""}};var b=i.default.div(r||(r=d(["\n display: block;\n > * {\n display: block;\n }\n"]))),v=i.default.div(o||(o=d(["\n position: relative;\n display: block;\n\n .logo-inner {\n display: flex;\n align-items: center;\n height: 100%;\n .logo-img-content {\n position: relative;\n display: block;\n }\n .logo-info {\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin-left: 10px;\n letter-spacing: 0.1px;\n &.zero-left {\n margin-left: 0%;\n }\n .logo-name {\n position: relative;\n line-height: 16px;\n font-size: 16px;\n color: #121319;\n }\n .logo-subname {\n position: relative;\n line-height: 13px;\n font-size: 13px;\n color: #7d8085;\n }\n }\n }\n\n .postion-abs {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n }\n\n .right-fade-out-ele {\n animation: right-fade-out ease 0.5s;\n animation-delay: 2s;\n animation-fill-mode: forwards;\n }\n\n .right-fade-in-ele {\n animation: right-fade-in ease 0.5s;\n animation-delay: 2s;\n animation-fill-mode: both;\n }\n\n @keyframes right-fade-out {\n 0% {\n opacity: 1;\n transform: translate(0, 0);\n }\n 100% {\n opacity: 0;\n transform: translate(8px, 0);\n }\n }\n\n @keyframes right-fade-in {\n 0% {\n opacity: 0;\n transform: translate(8px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate(0, 0);\n }\n }\n\n .left-fade-out-ele {\n animation: left-fade-out ease 0.5s;\n animation-delay: 2s;\n animation-fill-mode: forwards;\n }\n\n .left-fade-in-ele {\n animation: left-fade-in ease 0.5s;\n animation-delay: 2s;\n animation-fill-mode: both;\n }\n\n @keyframes left-fade-out {\n 0% {\n opacity: 1;\n transform: translate(0, 0);\n }\n 100% {\n opacity: 0;\n transform: translate(-8px, 0);\n }\n }\n\n @keyframes left-fade-in {\n 0% {\n opacity: 0;\n transform: translate(-8px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate(0, 0);\n }\n }\n"])))},86539:function(){},33196:function(){},38087:function(){},8092:function(){},50936:function(){},74854:function(){},66602:function(){}}]);
2
- //# sourceMappingURL=2201.87e01974.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/js/2201.87e01974.chunk.js","mappings":"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","sources":["components/blocklet/util.js","components/launch-blocklet/button.js","components/launch-blocklet/agreement-app.js","components/launch-blocklet/step-agreement.js","libs/api.js","components/launch-blocklet/center.js","components/launch-blocklet/step-complete.js","components/launch-blocklet/status/upgrade-available.js","contexts/runtime-blocklet-state.js","components/launch-blocklet/app-logo.js","components/launch-blocklet/step-install.js","pages/launch-blocklet/index.js","../../../blocklet/meta/lib/did.js","../../ux/lib/launch-blocklet/content-layout.js","../../ux/lib/nav-logo.js"],"sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport pickBy from 'lodash/pickBy';\nimport JSZip from 'jszip';\nimport yaml from 'js-yaml';\nimport saveAs from 'file-saver';\nimport joinURL from 'url-join';\n\nimport toBlockletDid from '@blocklet/meta/lib/did';\n\nimport { toDataURL } from '@arcblock/did-motif';\n\nconst base64ToArrayBuffer = base64 => {\n const bufStr = window.atob(base64);\n const bytes = new Uint8Array(bufStr.length);\n for (let i = 0; i < bufStr.length; i++) {\n bytes[i] = bufStr.charCodeAt(i);\n }\n return bytes;\n};\n\nconst getLogo = did => {\n const url = toDataURL(did, { size: 200 });\n const base64 = url.replace(/^[^,]*,/, '');\n return base64ToArrayBuffer(base64);\n};\n\nexport function getNameByTitle(title) {\n return title\n .replace(/[\\s/@_]/g, '-')\n .replace(/[^a-zA-Z0-9_-]/g, '')\n .replace(/(^[-\\s]+)|([-\\s]+$)/g, '')\n .toLowerCase();\n}\n\nexport function genExportedMeta(name, blocklet) {\n const meta = pickBy(cloneDeep(blocklet.meta), x => x !== null);\n\n meta.name = name;\n meta.did = toBlockletDid(name);\n meta.logo = 'logo.png';\n\n meta.interfaces.forEach(x => {\n // filter null or undefined\n if (!x.services) {\n delete x.services;\n }\n });\n\n blocklet.children.forEach(child => {\n if (child.dynamic && child.bundleSource) {\n meta.children.push({\n name: child.meta.name,\n source: child.bundleSource,\n title: child.meta.title,\n mountPoint: child.mountPoint,\n });\n }\n });\n\n meta.environments = (blocklet.configs || []).map(x => ({\n name: x.key,\n description: 'Automatically generated when exporting',\n required: !!x.required,\n secure: !!x.secure,\n default: x.secure ? '' : x.value || '',\n }));\n\n meta.capabilities.component = false;\n\n return meta;\n}\n\nconst license = holder => `Copyright © 2022 ${holder || ''}\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.`;\n\nconst Gitignore = `.DS_Store\n.blocklet`;\n\nconst GithubAction = `name: Deploy\n\non:\n push:\n branches:\n - main\n\njobs:\n Deploy:\n runs-on: ubuntu-latest\n\n steps:\n - name: Checkout repo\n uses: actions/checkout@v2\n\n - name: Blocklet workflow\n uses: blocklet/action-workflow@v1\n with:\n skip-upload: true\n skip-deploy: true\n bundle-command: blocklet bundle --create-release\n github-token: \\${{ secrets.GITHUB_TOKEN }}`;\n\nexport async function downloadExportedSource(meta, { holder } = {}) {\n const folderName = `${meta.name.split('/').pop()}`;\n const readme = `# ${meta.title}\\n\\n## Introduction\\n\\n${meta.description}`;\n\n const zip = new JSZip();\n const folder = zip.folder(folderName);\n folder.file('blocklet.yml', yaml.dump(meta));\n folder.file('blocklet.md', readme);\n folder.file('README.md', readme);\n folder.file('logo.png', getLogo(meta.did));\n folder.file('LICENSE', license(holder));\n folder.file('.gitignore', Gitignore);\n folder.folder('screenshots').file('.gitkeep', '');\n folder.folder('.github').folder('workflows').file('main.yml', GithubAction);\n await new Promise((resolve, reject) => {\n zip\n .generateAsync({ type: 'blob' })\n .then(content => {\n saveAs(content, `${folderName}.zip`);\n resolve();\n })\n .catch(err => {\n reject(err);\n });\n });\n}\nexport const getLaunchURL = (meta, info, encodeURI = false) => {\n const adminPath = process.env.NODE_ENV === 'production' ? info.routing.adminPath : '';\n const serverUrl = encodeURI\n ? encodeURIComponent(joinURL(window.location.origin, adminPath))\n : joinURL(window.location.origin, adminPath);\n const metaUrl = joinURL(info?.blockletRegistry, `/api/blocklets/${meta.did}/blocklet.json`);\n return { serverUrl, metaUrl };\n};\nexport const getLaunchAgreementUrl = (meta, info) => {\n const { metaUrl, serverUrl } = getLaunchURL(meta, info);\n\n const url = new URL(joinURL(serverUrl, '/launch-blocklet/agreement'));\n url.searchParams.set('blocklet_meta_url', metaUrl);\n url.searchParams.set('from', window.location.href);\n return url.href;\n};\n","import { forwardRef } from 'react';\nimport Button from '@arcblock/ux/lib/Button';\nimport PropTypes from 'prop-types';\n\nfunction WrappedButton({ children, ...props }) {\n return (\n <Button variant=\"contained\" color=\"primary\" {...props}>\n {children}\n </Button>\n );\n}\n\nWrappedButton.propTypes = {\n children: PropTypes.any.isRequired,\n};\n\nexport default forwardRef((props, ref) => <WrappedButton {...props} forwardedRef={ref} />);\n","export default function AgreementApp({ ...props }) {\n return (\n <div {...props} style={{ width: '100%' }}>\n <h3>End User License Agreement for Application</h3>\n <p>Blocklet Server License Agreement ArcBlock, Inc. version 2020-08-28</p>\n <p>BLOCKLET SERVER LICENSE AGREEMENT</p>\n <p>暂无</p>\n </div>\n );\n}\n","import { useEffect, useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useNavigate, Link } from 'react-router-dom';\nimport styled from '@emotion/styled';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\nimport ResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\nimport ServerEula from '@blocklet/launcher-layout/lib/wizard/server-eula';\nimport WizardDesc from '@blocklet/launcher-layout/lib/wizard/wizard-desc';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Alert from '@arcblock/ux/lib/Alert';\nimport isEmpty from 'lodash/isEmpty';\nimport Center from '@arcblock/ux/lib/Center';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport { useNodeContext } from '../../contexts/node';\nimport AgreementApp from './agreement-app';\nimport { getAccessibleUrl } from '../../libs/util';\nimport Button from './button';\n\n// TODO: 加载 Blocklet 定义的 Agreement\nexport default function Agreement({ blocklet, onClickNext, handleDescEle, showPageHeader }) {\n const navigate = useNavigate();\n const [accessUrl, setAccessUrl] = useState(null);\n const [error, setError] = useState(null);\n const [accessUrlLoading, setAccessUrlLoading] = useState(false);\n const { t, locale } = useLocaleContext();\n const { info, api } = useNodeContext();\n const { isRunning } = blocklet;\n const loading = useMemo(() => isEmpty(blocklet) || accessUrlLoading, [blocklet, accessUrlLoading]);\n\n const clickNext =\n onClickNext ||\n (() => {\n navigate(`/launch-blocklet/install${window.location.search}`);\n });\n\n useEffect(() => {\n const onMount = async () => {\n try {\n setAccessUrlLoading(true);\n const { blocklet: b } = await api.getBlocklet({ input: { did: blocklet.meta.did } });\n const urls = b.interfaces.map(x => x.url);\n const accessUrlTmp = await getAccessibleUrl(urls);\n if (!accessUrlTmp && isEmpty(accessUrlTmp)) {\n setAccessUrl(null);\n return;\n }\n setAccessUrl(new URL(accessUrlTmp).href);\n } catch (err) {\n setError(err.message);\n } finally {\n setAccessUrlLoading(false);\n }\n };\n if (isRunning) {\n onMount();\n }\n // eslint-disable-next-line\n }, [blocklet]);\n\n if (error) {\n return (\n <Center relative=\"parent\">\n <div>\n <Alert style={{ wordBreak: 'break-all' }} variant=\"icon\" type=\"error\">\n {error}\n </Alert>\n </div>\n </Center>\n );\n }\n\n if (loading) {\n return (\n <Center relative=\"parent\">\n <Spinner />\n </Center>\n );\n }\n\n const data = blocklet.meta;\n const blockletMeta = { data };\n\n if (!data) {\n return (\n <Center relative=\"parent\">\n <Spinner />\n </Center>\n );\n }\n\n if (blocklet.isInstalled) {\n const already = accessUrl ? 'alreadyRunning' : 'alreadyInstalled';\n return (\n <ResultMessage\n variant=\"info\"\n title={t('common.reminder')}\n subTitle={t(`launchBlocklet.${already}`, { name: getDisplayName(blocklet, true) })}\n footer={\n <ButtonWrap>\n <Button\n data-cy=\"view-blocklet\"\n component={Link}\n to={`/blocklets/${blocklet.meta.did}/overview`}\n variant={accessUrl ? 'outlined' : 'contained'}\n color=\"primary\">\n {t('launchBlocklet.viewApplication')}\n </Button>\n {accessUrl && (\n <Button className=\"last-button\" href={accessUrl} data-cy=\"open-blocklet\">\n {t('common.open')}\n </Button>\n )}\n </ButtonWrap>\n }\n />\n );\n }\n\n if (!info) {\n return (\n <Center relative=\"parent\">\n <Spinner />\n </Center>\n );\n }\n\n return (\n <Container>\n {showPageHeader && <PageHeader title={t('launchBlocklet.introduction')} subTitle={t('launchBlocklet.welcome')} />}\n <div className=\"app-content\">\n <div className=\"agreement\">\n <div className=\"agreement-content\">\n <WizardDesc blockletMeta={blockletMeta} locale={locale} handleDescEle={handleDescEle} />\n </div>\n </div>\n </div>\n <div className=\"button-container\" data-cy=\"agree-all\">\n <ServerEula\n onContinue={clickNext}\n description={<AgreementApp />}\n texts={{\n listenName: t('launchBlocklet.license'),\n buttonNext: t('launchBlocklet.next'),\n }}\n />\n </div>\n </Container>\n );\n}\n\nAgreement.propTypes = {\n blocklet: PropTypes.object.isRequired,\n onClickNext: PropTypes.func,\n handleDescEle: PropTypes.node,\n showPageHeader: PropTypes.bool,\n};\n\nAgreement.defaultProps = {\n onClickNext: null,\n handleDescEle: '',\n showPageHeader: true,\n};\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n\n .app-content {\n padding: 2px 24px 24px;\n ${props => props.theme.breakpoints.down('md')} {\n padding-top: 10px;\n }\n width: 100%;\n flex: 1;\n letter-spacing: normal;\n }\n .agreement {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n border: 1px solid ${props => props.theme.palette.grey['100']};\n border-radius: 12px;\n\n ${props => props.theme.breakpoints.up('md')} {\n margin-top: 24px;\n }\n\n ${props => props.theme.breakpoints.down('md')} {\n margin-top: 16px;\n }\n\n .agreement-content {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n font-size: 14px;\n overflow-y: auto;\n\n ${props => props.theme.breakpoints.up('md')} {\n padding: 0 24px;\n }\n\n ${props => props.theme.breakpoints.down('md')} {\n padding: 0 16px;\n }\n\n &:after {\n display: block;\n content: '';\n height: 24px;\n }\n }\n }\n .button-container {\n padding-top: 24px;\n padding-bottom: 34px;\n ${props => props.theme.breakpoints.up('md')} {\n padding-right: 24px;\n margin-left: auto;\n }\n ${props => props.theme.breakpoints.down('md')} {\n padding-top: 0;\n padding-bottom: 16px;\n }\n }\n`;\n\nconst ButtonWrap = styled.div`\n .MuiButton-root {\n ${props => props.theme.breakpoints.up('md')} {\n min-width: 200px;\n }\n }\n .last-button {\n margin-left: ${props => props.theme.spacing(2)};\n }\n`;\n","import axios from 'axios';\n\naxios.defaults.timeout = 10 * 1000; // 超时时间设为10s\n\nconst api = axios.create();\n\nexport { axios, api };\nexport default api;\n","import styled from '@emotion/styled';\n\nconst Center = styled.div`\n width: 100%;\n min-height: 100vh;\n padding: 20px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n`;\n\nexport default Center;\n","import styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\nimport ResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport ContentLayout from '@abtnode/ux/lib/launch-blocklet/content-layout';\nimport Center from '@arcblock/ux/lib/Center';\n\nimport { useNodeContext } from '../../contexts/node';\nimport useQuery from '../../hooks/query';\n\nfunction Complete({ blocklet }) {\n const { t } = useLocaleContext();\n const { info } = useNodeContext();\n const query = useQuery();\n const accessUrl = decodeURIComponent(query.get('accessUrl') || '');\n\n if (isEmpty(blocklet)) {\n return (\n <Center relative=\"parent\">\n <Spinner />\n </Center>\n );\n }\n return (\n <Container>\n <div className=\"body\">\n <ResultMessage\n variant=\"success\"\n title={getDisplayName(blocklet, true)}\n subTitle={t('launchBlocklet.installSuccess', { serverName: info.name })}\n footer={\n <Link href={accessUrl} rel=\"noreferrer\" data-cy=\"open-blocklet\">\n {t('common.open')}\n </Link>\n }\n />\n </div>\n </Container>\n );\n}\n\nconst Link = styled.a`\n display: block;\n height: 36px;\n color: ${props => props.theme.palette.primary.main};\n`;\n\nconst Container = styled(ContentLayout)`\n .app-info_desc {\n font-weight: 400;\n margin-top: 40px;\n font-size: 18px;\n line-height: 21px;\n color: #222222;\n }\n\n .body {\n text-align: center;\n }\n\n ${props => {\n return props.theme.breakpoints.down('md');\n }} {\n .app-info_desc {\n font-size: 16px;\n }\n }\n\n .circle_icon {\n font-size: 58px;\n color: ${props => (props.variant === 'error' ? props.theme.palette.error.main : props.theme.palette.success.main)};\n }\n`;\n\nComplete.propTypes = {\n blocklet: PropTypes.object.isRequired,\n};\n\nexport default Complete;\n","import PropTypes from 'prop-types';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport ResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\nimport Button from '../button';\n\nexport default function Upgrade({ onCancel, onUpgrade }) {\n const { t } = useLocaleContext();\n\n return (\n <ResultMessage\n variant=\"info\"\n title={t('launchBlocklet.newVersion')}\n subTitle={t('launchBlocklet.newVersionDesc')}\n footer={\n <>\n <Button onClick={onCancel} variant=\"outlined\">\n {t('launchBlocklet.later')}\n </Button>\n <Button onClick={onUpgrade} style={{ marginLeft: 24 }}>\n {t('launchBlocklet.upgradeNow')}\n </Button>\n </>\n }\n />\n );\n}\n\nUpgrade.propTypes = {\n onCancel: PropTypes.func,\n onUpgrade: PropTypes.func,\n};\n\nUpgrade.defaultProps = {\n onCancel: () => {},\n onUpgrade: () => {},\n};\n","// 获取blocklet在节点上的状态\nimport { useState, useEffect } from 'react';\nimport { BlockletStatus, BlockletEvents } from '@blocklet/meta/lib/constants';\nimport { useSubscription } from '../libs/ws';\nimport getClient from '../libs/node';\n\n/**\n *\n * @see: https://github.com/ArcBlock/blocklet-server/blob/cd80b9e1617a9b3ced64120e015912f63ffef805/blocklet/meta/lib/constants.js#L10-L26\n * @typedef {{\n * meta: {\n * did: string,\n * },\n * status: number,\n * error?: {\n * message: string\n * },\n * }} RuntimeBlocklet\n * @returns\n */\n\nconst BlockletStatusKeys = Object.keys(BlockletStatus);\nconst BlockletStatusValues = Object.values(BlockletStatus);\n\n/**\n *\n * 请确保在登录状态下传入 blockletDid\n * @param {String} blockletDid 应用的did\n * @return {{\n * status: string\n * eventName: string,\n * }}\n */\nexport default function useRuntimeBlockletState(blockletDid) {\n const client = getClient();\n\n const [blockletState, setBlockletState] = useState({\n status: null, // null代表没有查找到状态,空字符串代表未安装\n eventName: '',\n // runtimeBlocklet: undefined,\n // error: undefined, // 当触发 error 事件,才会有这个数据\n });\n\n // 首次更新加载blocklet状态\n useEffect(() => {\n // 没有初始状态就主动查询一次\n if (blockletDid && blockletState.status === null) {\n client.getBlocklet({ input: { did: blockletDid } }).then(e => {\n setBlockletState({\n status: e.blocklet ? e.blocklet.status : '',\n eventName: '',\n runtimeBlocklet: e.blocklet,\n isGetBlocklet: true, // 证明是通过 getBlocklet 接口获取的数据\n });\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [blockletDid, blockletState.status]);\n\n const defaultBlockletEventHandler = blockletEventName => {\n return blocklet => {\n if (blocklet.meta.did === blockletDid) {\n const bState = {\n status: null,\n eventName: blockletEventName,\n runtimeBlocklet: blocklet,\n };\n\n if (blocklet.error) {\n bState.status = 'error';\n bState.error = blocklet.error;\n } else {\n bState.status = BlockletStatusKeys[BlockletStatusValues.indexOf(blocklet.status)];\n }\n setBlockletState(bState);\n }\n };\n };\n\n Object.values(BlockletEvents).forEach(blockletEventName => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useSubscription(blockletEventName, defaultBlockletEventHandler(blockletEventName), [blockletDid]);\n });\n\n return blockletState;\n}\n","import PropTypes from 'prop-types';\nimport Img from '@arcblock/ux/lib/Img';\nimport Avatar from '@arcblock/did-connect/lib/Avatar';\nimport defaultLogo from '../../assets/defaultLogo.png';\nimport { getBlockletLogoUrl } from '../../libs/util';\n\nexport default function AppLogo({ blocklet, blockletMetaUrl }) {\n const { did, logo: logoPath } = blocklet.meta;\n\n let content;\n\n if (logoPath) {\n content = (\n <Img\n src={getBlockletLogoUrl({\n did,\n logoPath,\n baseUrl: new URL(blockletMetaUrl).origin,\n })}\n fallback={defaultLogo}\n width={64}\n size=\"contain\"\n placeholder=\"application logo\"\n />\n );\n } else {\n content = <Avatar did={did} size={64} />;\n }\n\n return content;\n}\n\nAppLogo.propTypes = {\n blocklet: PropTypes.object.isRequired,\n blockletMetaUrl: PropTypes.string.isRequired,\n};\n","import { useEffect, useState, useMemo, useRef } from 'react';\nimport { useNavigate, Link } from 'react-router-dom';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport semver from 'semver';\nimport useLocalStorage from 'react-use/lib/useLocalStorage';\nimport ArrowForward from '@mui/icons-material/ArrowForward';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Center from '@arcblock/ux/lib/Center';\nimport Connect from '@arcblock/did-connect/lib/Connect';\nimport DidAddress from '@arcblock/did-connect/lib/Address';\nimport Avatar from '@arcblock/did-connect/lib/Avatar';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\nimport { BlockletEvents } from '@blocklet/meta/lib/constants';\nimport LauncherResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport ContentLayout from '@abtnode/ux/lib/launch-blocklet/content-layout';\nimport Toast from '@abtnode/ux/lib/toast';\nimport AnimationWaiter from '@arcblock/ux/lib/AnimationWaiter';\nimport ProgressMessage from '@blocklet/launcher-ux/lib/progress-message';\nimport pWaitFor from 'p-wait-for';\nimport joinURL from 'url-join';\nimport { getServerAuthMethod } from '@abtnode/auth/lib/util/get-auth-method';\nimport { useNodeContext } from '../../contexts/node';\nimport { useSessionContext } from '../../contexts/session';\nimport {\n getWebWalletUrl,\n getAccessibleUrl,\n extractStatusUrlFromNextWorkflow,\n isNewRegistryUrl,\n formatError,\n} from '../../libs/util';\nimport { getLaunchURL } from '../blocklet/util';\nimport useQuery from '../../hooks/query';\nimport Button from './button';\nimport StatusUpgrade from './status/upgrade-available';\nimport useRuntimeBlockletState from '../../contexts/runtime-blocklet-state';\nimport AppLogo from './app-logo';\nimport serverLogo from '../../assets/logo.svg';\nimport { api as $api, axios } from '../../libs/api';\n\nexport default function Install({ blocklet }) {\n const query = useQuery();\n const { t, locale } = useLocaleContext();\n const blockletName = isEmpty(blocklet) ? null : getDisplayName(blocklet, true);\n const { api, info, loading: nodeLoading } = useNodeContext();\n const { session } = useSessionContext();\n const navigate = useNavigate();\n\n const [skipSetup] = useLocalStorage('skip-blocklet-setup', false);\n\n const [launching, setLaunching] = useState(false); // 进入安装状态的\n const [changeOfStatus, setChangeOfStatus] = useState(false);\n const [openAuth, setOpenAuth] = useState(false);\n const [nextAccessUrl, setNextAccessUrl] = useState('');\n\n const [upgradeAvailable, setUpgradeAvailable] = useState(null);\n const overUpgrade = useRef(''); // 点击过升级页面的操作(点击稍后或立即更新都算)\n\n const [connectData, setConnectData] = useState({\n action: '',\n baseUrl: '',\n checkFn: () => {},\n extraParams: {},\n });\n\n const [installError, setInstallError] = useState(null);\n\n const runtimeBlockletState = useRuntimeBlockletState(session.user ? blocklet?.meta?.did : '');\n const { status } = runtimeBlockletState;\n\n const blockletMetaUrl = query.get('blocklet_meta_url');\n const blockletRegistryUrl = new URL(blockletMetaUrl).origin;\n // 当前安装过程中的状态\n const fromUrl = new URL(window.location.href).searchParams.get('from');\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => setLaunching(!!status), [!!status]);\n\n const addNewRegistryToRegistryList = async () => {\n const {\n meta: { registryUrl },\n } = blocklet;\n\n const { isNew: isNewStoreRegistry, decoded } = isNewRegistryUrl(registryUrl, info.blockletRegistryList);\n\n // 未添加到 store registryList,进行添加\n if (isNewStoreRegistry) {\n await api.addBlockletStore({ input: { url: decoded } });\n }\n };\n\n const handleLaunchStart = async () => {\n setInstallError(null);\n\n try {\n await addNewRegistryToRegistryList();\n } catch (error) {\n console.error('addNewRegistryToRegistryList error:', error);\n }\n\n // start launch\n const isAuthorized = session.user && (session.user.permissions || []).includes('mutate_blocklet');\n if (isAuthorized && blocklet.isFree) {\n setLaunching(true);\n setOpenAuth(false);\n await api\n .installBlocklet({\n input: { url: blockletMetaUrl },\n })\n .catch(err => {\n Toast.error(formatError(err));\n console.error('install blocklet failed', err);\n });\n return;\n }\n\n if (blocklet.isFree) {\n setConnectData({\n action: `launch-free-blocklet-by-${getServerAuthMethod(info)}`,\n baseUrl: undefined,\n checkFn: axios.create({ baseURL: window?.env?.apiPrefix ?? '/' }).get,\n extraParams: {\n blockletMetaUrl,\n },\n });\n } else if (session?.user) {\n // 用户登录了,就无须再次检验用户的passport\n setConnectData({\n action: 'verify-purchase-blocklet',\n baseUrl: new URL(blockletMetaUrl).origin,\n checkFn: axios.create({ baseURL: new URL(blockletMetaUrl).origin }).get,\n extraParams: {\n serverDid: info.did,\n blockletDid: blocklet?.meta?.did,\n blockletMetaUrl,\n },\n });\n } else {\n // 付费应用走nextWorkflow流程\n const nextWorkflowUrl = new URL(window.location.href);\n nextWorkflowUrl.pathname = joinURL(\n window?.env?.apiPrefix ?? '/',\n `/api/did/launch-paid-blocklet-by-${getServerAuthMethod(info)}/token`\n );\n nextWorkflowUrl.searchParams.set('autoConnect', false);\n nextWorkflowUrl.searchParams.set('blockletMetaUrl', blockletMetaUrl);\n const { data } = await $api.get(nextWorkflowUrl.href);\n\n setConnectData({\n action: 'verify-purchase-blocklet',\n baseUrl: new URL(blockletMetaUrl).origin,\n checkFn: axios.create({ baseURL: new URL(blockletMetaUrl).origin }).get,\n extraParams: {\n serverDid: info.did,\n blockletDid: blocklet?.meta?.did,\n nw: data.url,\n },\n });\n }\n setOpenAuth(true);\n };\n\n const handleConnectSuccess = async (result, decrypt) => {\n const success = async decryptedSessionToken => {\n Toast.success(t('launchBlocklet.dialog.success', locale));\n\n localStorage.setItem('__sst', decryptedSessionToken);\n await session.refresh();\n setLaunching(true);\n setOpenAuth(false);\n };\n\n const failure = async errorMessage => {\n Toast.error(errorMessage);\n setLaunching(false);\n setOpenAuth(false);\n };\n\n async function handleConnectSessionStatus(url) {\n return pWaitFor(\n () => {\n return $api.get(url).then(async ({ data }) => {\n if (data.status === 'succeed') {\n await success(data.sessionToken);\n return true;\n }\n if (data.status === 'error') {\n await failure(data?.error);\n return true;\n }\n return false;\n });\n },\n {\n interval: 1000,\n }\n );\n }\n\n const { extraParams } = connectData;\n\n if (extraParams?.nw) {\n const { statusUrl } = extractStatusUrlFromNextWorkflow(extraParams.nw);\n // 通过轮询获取状态\n await handleConnectSessionStatus(statusUrl);\n } else if (!blocklet.isFree && !extraParams?.nw) {\n // 付费应用不走nw流程,说明用户在已登录的情况下去安装一个付费应用,需要在前端触发应用的下载\n setLaunching(true);\n setOpenAuth(false);\n await api.installBlocklet({\n input: {\n url: blockletMetaUrl,\n downloadToken: decrypt(result?.downloadToken),\n },\n });\n } else {\n await success(decrypt(result.sessionToken));\n }\n };\n const redirectToBlockletOverview = b => {\n const accessUrl = `/blocklets/${b.meta.did}/configuration`;\n let nextUrl = `/launch-blocklet/complete?status=installed&name=${encodeURIComponent(\n blockletName\n )}&accessUrl=${encodeURIComponent(accessUrl)}&blocklet_meta_url=${blockletMetaUrl}`;\n\n const fromLauncher = query.get('from_launcher');\n if (fromLauncher) {\n nextUrl += `&from_launcher=${fromLauncher}`;\n }\n navigate(nextUrl);\n };\n\n // 跳转到下一步\n const visitBlocklet = async b => {\n const urls = b.interfaces.map(x => x.url);\n const accessUrl = await getAccessibleUrl(urls);\n\n if (isEmpty(accessUrl) || skipSetup) {\n setTimeout(() => {\n redirectToBlockletOverview(b);\n }, 1500);\n return;\n }\n\n const url = new URL(accessUrl);\n // install blocklet 并跳转到 blocklet setup 界面时携带 serverUrl 查询参数\n url.searchParams.set('serverUrl', getLaunchURL(blocklet, info)?.serverUrl);\n\n if (b.status !== 'running') {\n url.searchParams.set('__start__', '1');\n }\n\n const fromLauncher = query.get('from_launcher');\n if (fromLauncher) {\n url.searchParams.set('from_launcher', fromLauncher);\n }\n\n setNextAccessUrl(url.href);\n\n setTimeout(() => {\n window.location.href = url.href;\n }, 1500);\n };\n\n const checkBlockletCanNext = useMemo(() => {\n let timer;\n\n // wait Blocklet Services state updated\n const timeout = 1000;\n\n return _installedBlocklet => {\n clearTimeout(timer);\n timer = setTimeout(async () => {\n let installedBlocklet = _installedBlocklet;\n if (!installedBlocklet) {\n const meta = await api.getBlocklet({ input: { did: blocklet.meta.did } });\n installedBlocklet = meta.blocklet;\n }\n\n if (installedBlocklet) {\n if (!overUpgrade.current && semver.gt(blocklet.meta.version, installedBlocklet.meta.version)) {\n // 安装的版本不是最新的\n if (!isEqual(upgradeAvailable, { installedBlocklet })) {\n setUpgradeAvailable({ installedBlocklet });\n }\n } else {\n visitBlocklet(installedBlocklet);\n }\n }\n }, timeout);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [api, blocklet?.meta?.did, upgradeAvailable]);\n\n const progressSteps = [\n t('launchBlocklet.waiting.verifying'),\n t('launchBlocklet.waiting.downloading'),\n t('launchBlocklet.waiting.extracting'),\n status === 'upgrading' ? t('common.upgrading') : t('launchBlocklet.waiting.installing'),\n t('launchBlocklet.waiting.done'),\n ];\n\n let installProgressIndex = 0;\n\n const changeStatus = () => !changeOfStatus && setChangeOfStatus(true);\n\n const handleInstalledProgress = () => {\n installProgressIndex = 4;\n checkBlockletCanNext(runtimeBlockletState.isGetBlocklet ? runtimeBlockletState.runtimeBlocklet : null);\n };\n\n switch (status) {\n case 'waiting':\n installProgressIndex = 1;\n changeStatus();\n break;\n case 'downloading':\n installProgressIndex = 2;\n changeStatus();\n break;\n case 'installing':\n case 'upgrading':\n installProgressIndex = 3;\n changeStatus();\n break;\n case 'installed':\n handleInstalledProgress();\n break;\n case 'starting':\n handleInstalledProgress();\n break;\n case 'running':\n handleInstalledProgress();\n break;\n case 'stopped':\n handleInstalledProgress();\n break;\n case 'corrupted':\n case 'error':\n // WARN: 暂时不要直接使用 runtimeBlockletState 的 error 数据;\n // 当下载中失败时,core/webapp/src/libs/ws.js 触发downloadFailed后,会更新一次 downloading,会让 error 被清理;所以error后,要通过 setState(setInstallError) 保存后使用;\n {\n const errorData = {\n message: runtimeBlockletState.error.message,\n name: runtimeBlockletState.eventName,\n };\n\n if ([BlockletEvents.downloadFailed, BlockletEvents.installFailed].includes(runtimeBlockletState.eventName)) {\n errorData.action = 'retry';\n } else if (status === 'error' || status === 'corrupted') {\n errorData.action = 'view';\n }\n if (!isEqual(errorData, installError)) {\n if (runtimeBlockletState?.error?.message) {\n Toast.error(formatError(runtimeBlockletState.error));\n }\n setInstallError(errorData);\n }\n }\n\n break;\n default:\n }\n\n if ((session.user && status === null) || isEmpty(blocklet) || nodeLoading) {\n return (\n <Center relative=\"parent\">\n <Spinner />\n </Center>\n );\n }\n\n if (installError) {\n const errorActions = {\n view: (\n <Button\n className=\"bottom-button\"\n component={Link}\n to={`/blocklets/${blocklet.meta.did}/overview`}\n data-cy=\"view-blocklet\"\n color=\"primary\"\n variant=\"contained\">\n {t('launchBlocklet.viewApplication')}\n </Button>\n ),\n retry: (\n <ButtonContainer>\n <Button className=\"bottom-button\" data-cy=\"retry-install\" disabled={openAuth} onClick={handleLaunchStart}>\n {openAuth && <Spinner size={[16, 10]} />}\n {t('common.retry')}\n </Button>\n {fromUrl && (\n <Button\n variant=\"text\"\n className=\"bottom-button\"\n data-cy=\"go-back\"\n disabled={openAuth}\n onClick={() => {\n window.location.href = fromUrl;\n }}>\n {t('common.back')}\n </Button>\n )}\n </ButtonContainer>\n ),\n };\n\n const errorEventName = installError.name ? installError.name.replace('blocklet.', '') : 'installFailed';\n\n return (\n <ResultMessage\n variant=\"error\"\n title={blockletName}\n subTitle={\n <ErrorMessageSub>\n <div>{t(`launchBlocklet.error.${errorEventName}`)}</div>\n {installError.message && (\n <div className=\"error-desc\">{t('common.errorMessage') + installError.message}</div>\n )}\n </ErrorMessageSub>\n }\n footer={errorActions[installError.action]}\n />\n );\n }\n\n const handleCancelUpgrade = () => {\n setChangeOfStatus(true);\n overUpgrade.current = 'cancel';\n setUpgradeAvailable(null);\n visitBlocklet(upgradeAvailable.installedBlocklet);\n };\n const handleUpgrade = async () => {\n const input = {\n did: blocklet.meta.did,\n version: blocklet.meta.version,\n registryUrl: blockletRegistryUrl,\n };\n\n overUpgrade.current = 'upgrade';\n setUpgradeAvailable(null);\n\n await api.upgradeBlocklet({ input });\n };\n\n if (upgradeAvailable) {\n return <StatusUpgrade onCancel={() => handleCancelUpgrade()} onUpgrade={() => handleUpgrade()} />;\n }\n\n if (!changeOfStatus && (status === 'installed' || status === 'running')) {\n return (\n <ResultMessage\n variant=\"info\"\n title={t('common.reminder')}\n subTitle={t('launchBlocklet.alreadyExists', { name: getDisplayName(blocklet, true) })}\n footer={\n <ButtonWrap>\n {!nextAccessUrl && <Spinner size={[16, 10]} />}\n {nextAccessUrl && (\n <Button className=\"last-button\" href={nextAccessUrl} data-cy=\"open-blocklet\">\n {t('common.open')}\n </Button>\n )}\n </ButtonWrap>\n }\n />\n );\n }\n\n if ((launching && nextAccessUrl) || overUpgrade.current === 'cancel') {\n return (\n <ResultMessage\n variant={nextAccessUrl ? 'success' : 'loading'}\n title={nextAccessUrl ? blockletName : ''}\n subTitle={t('launchBlocklet.installSuccess', { serverName: info.name })}\n footer={\n nextAccessUrl ? (\n <LinkEle href={nextAccessUrl} rel=\"noreferrer\" data-cy=\"open-blocklet\">\n <Spinner size={[16, 10]} style={{ marginRight: 14 }} /> {t('common.redirecting')}\n </LinkEle>\n ) : (\n ''\n )\n }\n style={{ marginBottom: 34 }}\n />\n );\n }\n\n const showInstall = !launching && !status;\n\n return (\n <Container>\n <div className=\"header\">\n {!nextAccessUrl && (\n <PageHeader\n title={showInstall ? t('common.install') : t('common.installing')}\n subTitle={showInstall ? t('launchBlocklet.subTitle', { appName: blockletName, serverName: info.name }) : ''}\n />\n )}\n </div>\n <div className=\"body\">\n {showInstall && (\n <>\n <div className=\"illustrations\">\n <div className=\"ills-block ills-block-left\">\n <div className=\"ills-block-inner\">\n <AppLogo className=\"i-icon\" blocklet={blocklet} blockletMetaUrl={blockletMetaUrl} />\n <div className=\"i-name\">{blockletName}</div>\n </div>\n </div>\n <ArrowForward className=\"arrow-icon\" />\n <div className=\"ills-block ills-block-right\">\n <div className=\"ills-block-inner\">\n <img width=\"64\" height=\"64\" src={serverLogo} alt=\"\" />\n <div className=\"i-name\">{info.name}</div>\n <DidAddress\n size={12}\n prepend={<Avatar did={info.did} size={12} style={{ marginRight: 4 }} />}\n responsive={false}\n compact>\n {info.did}\n </DidAddress>\n </div>\n </div>\n </div>\n <Button className=\"bottom-button\" data-cy=\"start-launch\" disabled={openAuth} onClick={handleLaunchStart}>\n {openAuth && <Spinner size={[16, 10]} />}\n {t('launchBlocklet.confirmInstall')}\n </Button>\n </>\n )}\n {launching && (\n <WaiterContainer>\n <AnimationWaiter\n increaseSpeed={0.3}\n messageLoop={false}\n message={\n <ProgressMessage\n steps={progressSteps}\n stepIndex={installProgressIndex}\n autoGrowth={installProgressIndex === 4 ? 1000 : 4000}\n />\n }\n />\n </WaiterContainer>\n )}\n </div>\n <Connect\n open={openAuth}\n popup\n saveConnect={false}\n className=\"connect\"\n baseUrl={connectData.baseUrl}\n action={connectData.action}\n checkFn={connectData.checkFn}\n extraParams={connectData.extraParams}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n webWalletUrl={getWebWalletUrl(info)}\n onSuccess={handleConnectSuccess}\n onClose={() => setOpenAuth(false)}\n locale={locale}\n messages={{\n title: `${t('launchBlocklet.dialog.title')}`,\n scan: blocklet.isFree\n ? t('launchBlocklet.dialog.freeDescription')\n : t('launchBlocklet.dialog.nonFreeDescription'),\n confirm: t('launchBlocklet.dialog.confirm'),\n success: t('launchBlocklet.dialog.success'),\n }}\n />\n </Container>\n );\n}\n\nInstall.propTypes = {\n blocklet: PropTypes.object.isRequired,\n};\n\nconst Container = styled(ContentLayout)`\n .body {\n align-items: center;\n animation: fadein ease 0.3s;\n }\n\n .illustrations {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: start;\n text-align: center;\n margin-top: 16px;\n margin-bottom: 40px;\n width: 100%;\n }\n\n .ills-block,\n .ills-block-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n flex: 1;\n }\n .ills-block {\n max-width: 220px;\n .i-icon {\n width: 64px;\n height: 64px;\n }\n\n .i-name {\n margin-top: 16px;\n font-weight: 400;\n font-size: 16px;\n color: #222222;\n }\n\n .i-sub-name {\n color: #999999;\n }\n }\n\n .arrow-icon {\n align-self: start;\n color: #c4c5ca;\n font-size: 30px;\n margin: 16px 0 0;\n ${props => props.theme.breakpoints.down('md')} {\n margin: 25px 24px 0;\n }\n }\n\n @keyframes fadein {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n`;\n\nconst WaiterContainer = styled.div`\n color: #1dc1c7;\n`;\n\nconst ButtonWrap = styled.div`\n .MuiButton-root {\n ${props => props.theme.breakpoints.up('md')} {\n min-width: 200px;\n }\n }\n .last-button {\n margin-left: ${props => props.theme.spacing(2)};\n }\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\nconst ErrorMessageSub = styled.div`\n line-height: 1.4em;\n .error-desc {\n margin-top: 8px;\n word-wrap: break-word;\n color: ${props => props.theme.palette.grey[500]};\n }\n`;\n\nconst ButtonContainer = styled.div`\n display: flex;\n justify-content: space-around;\n flex-wrap: wrap;\n button {\n margin: 0 10px 18px;\n }\n`;\n\nconst ResultMessage = styled(LauncherResultMessage)`\n .result-footer {\n height: auto;\n }\n`;\n","import { useEffect, useState } from 'react';\nimport { Routes, Route, Navigate } from 'react-router-dom';\nimport { useAsync } from 'react-use';\nimport joinUrl from 'url-join';\nimport Alert from '@arcblock/ux/lib/Alert';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport styled from '@emotion/styled';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Layout from '@blocklet/launcher-layout';\nimport { StepProvider } from '@blocklet/launcher-layout/lib/context/step';\nimport HeaderAddon from '@abtnode/ux/lib/layout/addon';\nimport LauncherLogoNotext from '@arcblock/icons/lib/LauncherLogoNotext';\nimport ServerLogoNotext from '@arcblock/icons/lib/ServerLogoNotext';\nimport ServerLogo from '@arcblock/icons/lib/ServerLogo';\nimport LauncherLogo from '@arcblock/icons/lib/LauncherLogo';\nimport NavLogo from '@abtnode/ux/lib/nav-logo';\nimport { useNodeContext } from '../../contexts/node';\nimport useQuery from '../../hooks/query';\n\nimport Center from '../../components/launch-blocklet/center';\nimport Complete from '../../components/launch-blocklet/step-complete';\nimport Install from '../../components/launch-blocklet/step-install';\nimport Agreement from '../../components/launch-blocklet/step-agreement';\nimport { getBlockletLogoUrl, getPathPrefix, getWebWalletUrl } from '../../libs/util';\nimport { SessionContext } from '../../contexts/session';\nimport { getLaunchURL } from '../../components/blocklet/util';\n\n// TODO: add skeleton here\nexport default function BlockletLauncher() {\n const isMobile = useMediaQuery(theme => theme.breakpoints.down('md'));\n const { t, locale } = useLocaleContext();\n const query = useQuery();\n const { api, info } = useNodeContext();\n const fromLauncher = !!query.get('from_launcher');\n const webWalletUrl = getWebWalletUrl(info);\n const [serverUrl, setServerUrl] = useState('');\n\n const path = '/launch-blocklet';\n\n let url = (query.get('blocklet_meta_url') || '').trim();\n url = decodeURIComponent(url);\n\n const state = useAsync(async () => {\n if (!url) {\n throw new Error(t('common.invalidParam'));\n }\n\n const { meta, isFree, isInstalled, isRunning } = await api.getBlockletMetaFromUrl({\n input: { url, checkPrice: true },\n });\n if (!meta) {\n throw new Error(t('launchBlocklet.error.loadMetaFailed'));\n }\n\n return { meta, isFree, isInstalled, isRunning };\n });\n\n useEffect(() => {\n if (state.value && info) {\n const urlInfo = getLaunchURL(state.value, info);\n setServerUrl(urlInfo.serverUrl);\n }\n }, [state.value, info]);\n\n if (state.error) {\n return (\n <Center>\n <div>\n <Alert style={{ width: '100%', wordBreak: 'break-all' }} variant=\"icon\" type=\"error\">\n {state.error.message}\n </Alert>\n </div>\n </Center>\n );\n }\n\n const { meta, isFree } = state.value || {};\n const basePath = joinUrl(getPathPrefix(), path);\n const steps = [\n {\n key: 'agreement',\n name: t('launchBlocklet.introduction'),\n path: joinUrl(basePath, 'agreement'),\n },\n {\n key: 'install',\n name: t('launchBlocklet.launch'),\n path: joinUrl(basePath, 'install'),\n },\n {\n key: 'setup',\n name: t('launchBlocklet.setup'),\n path: joinUrl(basePath, 'complete'),\n description: t('launchBlocklet.setupAppDesc'),\n },\n {\n key: 'complete',\n name: t('launchBlocklet.launched'),\n },\n ];\n\n const clickLogo = () => {\n if (serverUrl) {\n window.open(serverUrl);\n }\n };\n\n let navLogo = (\n <LogoContainer className={`${serverUrl ? 'logo-can-click' : ''}`}>\n <NavLogo\n onClick={clickLogo}\n logo={!isMobile ? <ServerLogo width=\"128\" height=\"48\" /> : <ServerLogoNotext width=\"32\" height=\"32\" />}\n />\n </LogoContainer>\n );\n\n // 从launcher 代表已经同意了 blocklet agreement\n if (fromLauncher) {\n steps.splice(\n 0,\n 1,\n {\n key: 'wizard',\n name: t('launchBlocklet.introduction'),\n },\n {\n key: 'select-node',\n name: t('launchBlocklet.selectAbtNode'),\n }\n );\n\n navLogo = (\n <LogoContainer className={`${serverUrl ? 'logo-can-click' : ''}`}>\n <NavLogo\n logo={\n !isMobile ? (\n <ServerLogo onClick={clickLogo} width=\"128\" height=\"48\" />\n ) : (\n <ServerLogoNotext onClick={clickLogo} width=\"32\" height=\"32\" />\n )\n }\n previousData={{\n logo: !isMobile ? <LauncherLogo width=\"145\" height=\"48\" /> : <LauncherLogoNotext width=\"32\" height=\"32\" />,\n }}\n />\n </LogoContainer>\n );\n }\n\n if (meta) {\n meta.registryUrl = new URL(url).origin;\n }\n\n return (\n <StepProvider steps={steps}>\n <Layout\n locale={locale}\n blockletMeta={{ ...meta, isFree }}\n useOfSkeleton={false}\n navLogo={navLogo}\n headerEndAddons={<HeaderAddon webWalletUrl={webWalletUrl} SessionContext={SessionContext} />}\n pcWidth=\"80%\"\n logoUrl={\n meta && meta.logo\n ? getBlockletLogoUrl({\n did: meta.did,\n baseUrl: meta.registryUrl,\n logoPath: meta.logo,\n })\n : null\n }>\n <Content>\n <Routes>\n <Route path=\"agreement\" element={<Agreement blocklet={state.value || {}} />} />\n <Route path=\"install\" element={<Install blocklet={state.value || {}} />} />\n <Route path=\"complete\" element={<Complete blocklet={state.value || {}} />} />\n <Route path=\"*\" element={<Navigate to={`agreement${window.location.search}`} replace />} />\n </Routes>\n </Content>\n </Layout>\n </StepProvider>\n );\n}\n\nconst Content = styled.div`\n ${props => props.theme.breakpoints.up('md')} {\n padding-top: 34px;\n }\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n\n .bottom-button {\n min-width: 200px;\n }\n`;\n\nconst LogoContainer = styled.div`\n margin-top: -1px;\n &.logo-can-click {\n cursor: pointer;\n }\n`;\n","const { types } = require('@ocap/mcrypto');\nconst { toHex } = require('@ocap/util');\nconst { fromPublicKey } = require('@arcblock/did');\n\nconst toBlockletDid = (name) => {\n const pk = toHex(Buffer.from(typeof name === 'string' ? name.trim() : name));\n return fromPublicKey(pk, { role: types.RoleType.ROLE_ANY });\n};\n\nmodule.exports = toBlockletDid;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ContentLayout;\n\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _templateObject;\n\nconst _excluded = [\"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\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; }\n\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; }\n\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; }\n\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; }\n\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; }\n\nfunction ContentLayout(_ref) {\n let {\n children\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, _objectSpread(_objectSpread({}, props), {}, {\n children: children\n }));\n}\n\nContentLayout.propTypes = {\n children: _propTypes.default.any.isRequired\n};\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 = LogoContainer;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _templateObject, _templateObject2;\n\nconst _excluded = [\"logo\", \"name\", \"subname\", \"previousData\"],\n _excluded2 = [\"logo\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\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; }\n\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; }\n\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; }\n\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; }\n\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; }\n\nfunction LogoContainer(_ref) {\n let {\n logo,\n name,\n subname,\n previousData\n } = _ref,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n let logoEle = /*#__PURE__*/(0, _jsxRuntime.jsx)(LogoImg, {\n logo: logo\n });\n let nameEle = name;\n let subnameEle = subname;\n\n if (previousData.logo) {\n logoEle = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {\n children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(LogoImg, {\n logo: logo,\n className: \"left-fade-in-ele\"\n }), /*#__PURE__*/(0, _jsxRuntime.jsx)(LogoImg, {\n logo: previousData.logo,\n className: \"postion-abs left-fade-out-ele\"\n })]\n });\n }\n\n if (previousData.name && previousData.name !== name) {\n nameEle = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {\n children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(\"span\", {\n className: \"right-fade-in-ele\",\n style: {\n display: 'inline-block'\n },\n children: name\n }), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"span\", {\n className: \"postion-abs right-fade-out-ele\",\n children: previousData.name\n })]\n });\n }\n\n if (previousData.subname && previousData.subname !== subname) {\n subnameEle = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {\n children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(\"span\", {\n className: \"right-fade-in-ele\",\n style: {\n display: 'inline-block'\n },\n children: subname\n }), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"span\", {\n className: \"postion-abs right-fade-out-ele\",\n children: previousData.subname\n })]\n });\n }\n\n return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, _objectSpread(_objectSpread({}, rest), {}, {\n children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(\"div\", {\n className: \"logo-inner\",\n children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(\"div\", {\n className: \"logo-img-content\",\n children: logoEle\n }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(\"div\", {\n className: \"logo-info \".concat(!name && !subname ? 'zero-left' : ''),\n children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(\"div\", {\n className: \"logo-name\",\n children: nameEle\n }), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"div\", {\n className: \"logo-subname\",\n children: subnameEle\n })]\n })]\n })\n }));\n}\n\nLogoContainer.propTypes = {\n logo: _propTypes.default.element.isRequired,\n name: _propTypes.default.string,\n subname: _propTypes.default.string,\n previousData: _propTypes.default.object\n};\nLogoContainer.defaultProps = {\n name: '',\n subname: '',\n previousData: {\n logo: '',\n name: '',\n subname: ''\n }\n}; // eslint-disable-next-line react/prop-types\n\nfunction LogoImg(_ref2) {\n let {\n logo\n } = _ref2,\n rest = _objectWithoutProperties(_ref2, _excluded2);\n\n return /*#__PURE__*/(0, _jsxRuntime.jsx)(LogoImgDiv, _objectSpread(_objectSpread({}, rest), {}, {\n children: logo\n }));\n}\n\nconst LogoImgDiv = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: block;\\n > * {\\n display: block;\\n }\\n\"])));\n\nconst Container = _styled.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n position: relative;\\n display: block;\\n\\n .logo-inner {\\n display: flex;\\n align-items: center;\\n height: 100%;\\n .logo-img-content {\\n position: relative;\\n display: block;\\n }\\n .logo-info {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n margin-left: 10px;\\n letter-spacing: 0.1px;\\n &.zero-left {\\n margin-left: 0%;\\n }\\n .logo-name {\\n position: relative;\\n line-height: 16px;\\n font-size: 16px;\\n color: #121319;\\n }\\n .logo-subname {\\n position: relative;\\n line-height: 13px;\\n font-size: 13px;\\n color: #7d8085;\\n }\\n }\\n }\\n\\n .postion-abs {\\n position: absolute;\\n left: 0;\\n top: 0;\\n height: 100%;\\n }\\n\\n .right-fade-out-ele {\\n animation: right-fade-out ease 0.5s;\\n animation-delay: 2s;\\n animation-fill-mode: forwards;\\n }\\n\\n .right-fade-in-ele {\\n animation: right-fade-in ease 0.5s;\\n animation-delay: 2s;\\n animation-fill-mode: both;\\n }\\n\\n @keyframes right-fade-out {\\n 0% {\\n opacity: 1;\\n transform: translate(0, 0);\\n }\\n 100% {\\n opacity: 0;\\n transform: translate(8px, 0);\\n }\\n }\\n\\n @keyframes right-fade-in {\\n 0% {\\n opacity: 0;\\n transform: translate(8px, 0);\\n }\\n 100% {\\n opacity: 1;\\n transform: translate(0, 0);\\n }\\n }\\n\\n .left-fade-out-ele {\\n animation: left-fade-out ease 0.5s;\\n animation-delay: 2s;\\n animation-fill-mode: forwards;\\n }\\n\\n .left-fade-in-ele {\\n animation: left-fade-in ease 0.5s;\\n animation-delay: 2s;\\n animation-fill-mode: both;\\n }\\n\\n @keyframes left-fade-out {\\n 0% {\\n opacity: 1;\\n transform: translate(0, 0);\\n }\\n 100% {\\n opacity: 0;\\n transform: translate(-8px, 0);\\n }\\n }\\n\\n @keyframes left-fade-in {\\n 0% {\\n opacity: 0;\\n transform: translate(-8px, 0);\\n }\\n 100% {\\n opacity: 1;\\n transform: translate(0, 0);\\n }\\n }\\n\"])));"],"names":["getLogo","did","base64","bufStr","window","atob","bytes","Uint8Array","length","i","charCodeAt","base64ToArrayBuffer","toDataURL","size","replace","getNameByTitle","title","toLowerCase","genExportedMeta","name","blocklet","meta","pickBy","cloneDeep","x","toBlockletDid","logo","interfaces","forEach","services","children","child","dynamic","bundleSource","push","source","mountPoint","environments","configs","map","key","description","required","secure","default","value","capabilities","component","license","holder","Gitignore","GithubAction","downloadExportedSource","folderName","split","pop","readme","zip","JSZip","folder","file","yaml","Promise","resolve","reject","generateAsync","type","then","content","saveAs","catch","err","getLaunchURL","info","encodeURI","adminPath","routing","serverUrl","encodeURIComponent","joinURL","location","origin","metaUrl","blockletRegistry","getLaunchAgreementUrl","url","URL","searchParams","set","href","WrappedButton","props","variant","color","forwardRef","ref","forwardedRef","AgreementApp","style","width","Agreement","onClickNext","handleDescEle","showPageHeader","navigate","useNavigate","useState","accessUrl","setAccessUrl","error","setError","accessUrlLoading","setAccessUrlLoading","useLocaleContext","t","locale","useNodeContext","api","isRunning","loading","useMemo","isEmpty","clickNext","search","useEffect","onMount","getBlocklet","input","b","urls","getAccessibleUrl","accessUrlTmp","message","Center","relative","Alert","wordBreak","Spinner","data","blockletMeta","isInstalled","already","subTitle","getDisplayName","footer","ButtonWrap","Link","to","className","Container","onContinue","texts","listenName","buttonNext","defaultProps","styled","theme","breakpoints","down","palette","grey","up","spacing","axios","primary","main","ContentLayout","success","query","useQuery","decodeURIComponent","get","serverName","rel","Upgrade","onCancel","onUpgrade","onClick","marginLeft","BlockletStatusKeys","Object","keys","BlockletStatus","BlockletStatusValues","values","useRuntimeBlockletState","blockletDid","client","getClient","status","eventName","blockletState","setBlockletState","e","runtimeBlocklet","isGetBlocklet","BlockletEvents","blockletEventName","useSubscription","bState","indexOf","defaultBlockletEventHandler","AppLogo","blockletMetaUrl","logoPath","Img","src","getBlockletLogoUrl","baseUrl","fallback","placeholder","Avatar","propTypes","PropTypes","Install","blockletName","nodeLoading","session","useSessionContext","useLocalStorage","skipSetup","launching","setLaunching","changeOfStatus","setChangeOfStatus","openAuth","setOpenAuth","nextAccessUrl","setNextAccessUrl","upgradeAvailable","setUpgradeAvailable","overUpgrade","useRef","action","checkFn","extraParams","connectData","setConnectData","installError","setInstallError","runtimeBlockletState","user","blockletRegistryUrl","fromUrl","addNewRegistryToRegistryList","registryUrl","isNewRegistryUrl","blockletRegistryList","isNewStoreRegistry","isNew","decoded","addBlockletStore","handleLaunchStart","console","permissions","includes","isFree","installBlocklet","Toast","formatError","getServerAuthMethod","undefined","baseURL","env","apiPrefix","serverDid","nextWorkflowUrl","pathname","$api","nw","handleConnectSuccess","result","decrypt","handleConnectSessionStatus","pWaitFor","sessionToken","failure","interval","decryptedSessionToken","localStorage","setItem","refresh","errorMessage","extractStatusUrlFromNextWorkflow","statusUrl","downloadToken","redirectToBlockletOverview","nextUrl","fromLauncher","visitBlocklet","setTimeout","checkBlockletCanNext","timer","_installedBlocklet","clearTimeout","installedBlocklet","current","semver","version","isEqual","progressSteps","installProgressIndex","changeStatus","handleInstalledProgress","errorData","errorActions","view","retry","ButtonContainer","disabled","errorEventName","ResultMessage","ErrorMessageSub","handleUpgrade","upgradeBlocklet","LinkEle","marginRight","marginBottom","showInstall","appName","ArrowForward","height","serverLogo","alt","prepend","responsive","compact","WaiterContainer","AnimationWaiter","increaseSpeed","messageLoop","steps","stepIndex","autoGrowth","Connect","open","popup","saveConnect","checkTimeout","socketUrl","webWalletUrl","getWebWalletUrl","onSuccess","onClose","messages","scan","confirm","LauncherResultMessage","BlockletLauncher","isMobile","useMediaQuery","setServerUrl","trim","state","useAsync","Error","getBlockletMetaFromUrl","checkPrice","urlInfo","basePath","joinUrl","getPathPrefix","path","clickLogo","navLogo","LogoContainer","ServerLogoNotext","ServerLogo","splice","previousData","LauncherLogoNotext","LauncherLogo","StepProvider","useOfSkeleton","headerEndAddons","SessionContext","pcWidth","logoUrl","Content","element","types","require","toHex","fromPublicKey","module","exports","pk","Buffer","from","role","RoleType","ROLE_ANY","_templateObject","_styled","_interopRequireDefault","_propTypes","_jsxRuntime","_excluded","obj","__esModule","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","target","arguments","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","configurable","writable","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","prototype","propertyIsEnumerable","call","_ref","jsx","any","isRequired","strings","raw","div","slice","freeze","_templateObject2","_excluded2","_taggedTemplateLiteral","subname","rest","logoEle","LogoImg","nameEle","subnameEle","jsxs","Fragment","display","concat","_ref2","LogoImgDiv","string"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (self.webpackChunk_abtnode_webapp=self.webpackChunk_abtnode_webapp||[]).push([[4897],{5907:function(e,t,n){"use strict";n.d(t,{Z:function(){return F}});var r=n(96234),o=n(59740),a=n(33028),i=n(30969),c=n(19611),s=n.n(c),l=n(622),u=n(51921),d=n(2834),f=n(69180),p=n(42167),h=n(32371),m=n(78685),v=n(5954),x=n(32723),k=n(34795),b=n(13026),y=n(7017),g=n(89189),Z=n(43658),w=n(61802),R=n(33359),S=n(88029),j=n(60451),C=n(32616),P=n(24883),T=n(61627),E=n(47334),N=n(91519),U=n(37574),B=["showPay","meta","lastVersion","buttonText","registryUrl","handleButtonText","handleButtonClick"];function D(e){var t=e.showPay,n=e.meta,c=e.lastVersion,s=e.buttonText,l=e.registryUrl,u=e.handleButtonText,d=e.handleButtonClick,f=(0,o.Z)(e,B),D=(0,g.useSnackbar)().enqueueSnackbar,I=(0,p.useLocaleContext)().t,A=(0,b.s0)(),L=(0,v.h6)().info,F=(0,C.y0)(),O=F.api,H=F.data.find((function(e){return e.meta.did===n.did}))||{},W=(0,i.useMemo)((function(){return!!H.status}),[H.status]),M=(0,i.useMemo)((function(){var e;return W?null===(e=H.meta)||void 0===e?void 0:e.version:null}),[W,H.meta]),z=!1===(0,y.isFreeBlocklet)(n),_=(0,i.useState)(!1),q=(0,r.Z)(_,2),K=q[0],G=q[1],Y=(0,P.Z)(n.did).hasPurchased,V=(0,i.useState)(!1),$=(0,r.Z)(V,2),J=$[0],X=$[1],Q=(0,Z.default)("instant-blocklet-install",!1),ee=(0,r.Z)(Q,1)[0],te=(0,i.useMemo)((function(){return K?I(W?"blocklet.status.upgrading":z?"blocklet.status.purchasing":"blocklet.status.waiting"):(0,m.wS)(H.status)?I("common.".concat(H.status)):""}),[K,H.status,W,I,z]),ne=(0,i.useMemo)((function(){return!(!c||!M)&&!(!c||!(0,j.gt)(c,M))}),[c,M]),re=(0,a.Z)((0,a.Z)({},e),{},{state:H}),oe=(0,i.useMemo)((function(){return u&&"function"===typeof u?u(re):ne?s.upgrade:W?s.open:z?s.purchase:s.launch}),[W,ne,z,s,u]),ae=(0,i.useMemo)((function(){return!(!d||"function"!==typeof d)||!(W&&!ne)}),[W,ne,d]),ie=function(){var t=(0,k.Z)((0,x.Z)().mark((function t(r){var o,i;return(0,x.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r.preventDefault(),r.stopPropagation(),t.prev=2,G(!0),!d||"function"!==typeof d){t.next=7;break}return d((0,a.Z)((0,a.Z)({},e),{},{state:H})),t.abrupt("return");case 7:if(W||!z){t.next=10;break}return X(!0),t.abrupt("return");case 10:if(!ee){t.next=15;break}return o=W?"upgradeBlocklet":"installBlocklet",t.next=14,O[o]({input:{did:n.did,registryUrl:l}});case 14:return t.abrupt("return");case 15:if(W||z){t.next=19;break}return i=(0,N.FM)(n,L),window.location.href=i,t.abrupt("return");case 19:if(!W){t.next=22;break}return t.next=22,O.upgradeBlocklet({input:{did:n.did,registryUrl:l}});case 22:t.next=28;break;case 24:t.prev=24,t.t0=t.catch(2),D((0,m.Z)(t.t0),{autoHideDuration:5e3,variant:"error"}),console.error("Blocklet installed failed",t.t0);case 28:return t.prev=28,G(!1),t.finish(28);case 31:case"end":return t.stop()}}),t,null,[[2,24,28,31]])})));return function(e){return t.apply(this,arguments)}}();function ce(e){var t=e.disabled;return(0,U.jsx)(S.default,(0,a.Z)((0,a.Z)({onClick:ie,size:"small",disabled:Boolean(te||t),variant:"outlined",color:"primary","data-cy":"install-blocklet"},f),{},{children:te?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(w.default,{size:[16,10],style:{marginRight:3}}),te]}):oe}),n.did)}ce.defaultProps={disabled:!1};return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(h.Kk,{children:ae?(0,U.jsx)(T.Z,{permission:"mutate_blocklet",children:function(e){return(0,U.jsx)(ce,{disabled:!e})}}):(0,U.jsx)(S.default,{className:"action-button",variant:"outlined",color:"primary",size:"small",disabled:Boolean(te),"data-cy":"open-blocklet",onClick:function(e){var t;e.preventDefault(),e.stopPropagation(),A("/blocklets/".concat(n.did,"/").concat((t=H)&&(t.configs||[]).some((function(e){return e.required&&!e.value}))?"configuration":"overview"))},children:te?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(w.default,{size:[16,10],style:{marginRight:3}}),te]}):oe})}),W&&z&&t&&(0,U.jsx)(R.Z,{component:"small",style:{fontSize:12,color:"#666",marginLeft:4},children:I("blocklet.status.purchased")}),(Y&&!W||J)&&(0,U.jsx)(E.E0,{method:"launch",meta:n,mode:"both",onCancel:function(){G(!1),X(!1)}})]})}D.defaultProps={lastVersion:"",showPay:!0,handleButtonText:function(){return null},handleButtonClick:function(){return null}};var I=["handleButtonClick","handleSearchSelect","handleButtonText","handleBlockletRegistry","handleBlockletRender","extraFilter"],A=function(e,t,n){var r=(0,N.Ti)(e,t).serverUrl;return s()(n,"/blocklets/".concat(e.did,"/?server-url=").concat(r))};function L(e){var t=e.blocklet,n=e.blocklets,r=e.handleButtonClick,o=e.handleButtonText,i=e.endpoint,c=(0,p.useLocaleContext)().t,u=(0,v.h6)(),d=s()(u.prefix,"blocklet.png"),f=i;if(f.startsWith("http")&&t.logo)d=s()(f,(0,m.lk)(t.did,t.logo));else{var x=(window.env.apiPrefix||"/").replace(/^\/+/,"").replace(/\/+$/,"");x&&(x="/".concat(x)),d=s()(x,"/blocklet/logo/".concat(t.did))}var k={meta:t,lastVersion:n.reduce((function(e,t){var n=t.did,r=t.version;return e[n]=r,e}),{})[t.did],buttonText:{purchase:c("common.purchase"),open:c("common.open"),launch:c("common.launch"),upgrade:c("common.upgrade")},registryUrl:f,handleButtonClick:!!r&&function(e){return r((0,a.Z)((0,a.Z)({},e),{},{blocklets:n}))},handleButtonText:o};return(0,U.jsx)(l.Z,{href:A(t,u.info,i),style:{color:"initial",textDecoration:"none"},onClick:function(e){return!!e.currentTarget.contains(e.target)||(e.preventDefault(),!1)},target:"_blank",children:(0,U.jsx)(h.ZP,{title:t.title||t.name,description:t.description,did:t.did,cover:t.logo?d:"",version:t.version,button:(0,U.jsx)("div",{style:{display:"flex",alignItems:"center"},children:(0,U.jsx)(D,(0,a.Z)({},k))})})})}function F(e){var t=e.handleButtonClick,n=e.handleSearchSelect,c=e.handleButtonText,s=e.handleBlockletRegistry,l=e.handleBlockletRender,h=e.extraFilter,m=(0,o.Z)(e,I),x=(0,v.h6)().info,k=(0,p.useLocaleContext)().locale,b=(0,i.useState)({}),y=(0,r.Z)(b,2),g=y[0],Z=y[1],w=s||(null===x||void 0===x?void 0:x.blockletRegistry);return(0,i.useEffect)((function(){Z({})}),[w]),(0,U.jsx)(u.ErrorBoundary,{FallbackComponent:d.ErrorFallback,resetKeys:[w],children:(0,U.jsx)("div",(0,a.Z)((0,a.Z)({},m),{},{children:(0,U.jsx)(f.Z,{blockletRender:function(e){var n=L((0,a.Z)((0,a.Z)({},e),{},{handleButtonClick:t,handleButtonText:c,endpoint:w}));return l&&"function"===typeof l?l((0,a.Z)((0,a.Z)({},e),{},{defaultRender:n})):n},endpoint:w,locale:k,onFilterChange:function(e){Z(e)},onSearchSelect:function(e){var r=e.blocklet,o=e.storeUrl,a=e.detailUrl;t?t({meta:r,registryUrl:o}):n&&n({blocklet:r,storeUrl:o,detailUrl:a})},filters:g,extraFilter:h})}))})}L.defaultProps={handleButtonClick:null,handleButtonText:null,endpoint:"",blocklets:[]},F.defaultProps={handleButtonClick:null,handleSearchSelect:null,handleButtonText:null,handleBlockletRegistry:"",handleBlockletRender:null,extraFilter:void 0,blocklets:[]}},47334:function(e,t,n){"use strict";n.d(t,{k4:function(){return G},E0:function(){return D}});var r=n(32723),o=n(34795),a=n(96234),i=n(30969),c=n(19611),s=n.n(c),l=n(95803),u=n.n(l),d=n(7017),f=n(62068),p=n(42167),h=n(7284),m=n(33359),v=n(5954),x=n(78685),k=n(91519),b=n(25071),y=n(24974),g=n.n(y),Z=n(2950),w=n(78903),R=n(86008),S=n(93310),j=n(64698),C=n(36508),P=n(88029),T=n(19996),E=n(37574),N=(g().object.isRequired,g().func.isRequired,(0,b.Z)((function(){return{dialogAuth:{padding:"0 0 24px !important","& .auth-title":{textAlign:"center !important",marginBottom:"4px !important"},"& .auth-tip--scan":{textAlign:"center !important"}},iconRoot:{minWidth:48}}})));function U(e){var t=e.action,n=e.onSelect,r=e.onNext,o=N(),a=(0,p.useLocaleContext)().t,i=[{action:"purchase",title:a("store.purchase.purchase.title"),description:a("store.purchase.purchase.description")},{action:"verify",title:a("store.purchase.verify.title"),description:a("store.purchase.verify.description")}];return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(Z.Z,{className:o.tabPanel,children:i.map((function(e){return(0,E.jsxs)(w.ZP,{button:!0,selected:t===e.action,onClick:function(){return n(e.action)},children:[(0,E.jsx)(S.Z,{className:o.iconRoot,children:"purchase"===e.action?(0,E.jsx)(j.Z,{style:{color:"purchase"===t?T.default.primary.main:"#AAA",fontSize:32}}):(0,E.jsx)(C.Z,{style:{color:"verify"===t?T.default.primary.main:"#AAA",fontSize:32}})}),(0,E.jsx)(R.Z,{primary:e.title,secondary:e.description})]},e.action)}))}),r&&(0,E.jsx)(P.default,{fullWidth:!0,disabled:!t,variant:"contained",color:"primary",style:{marginTop:16},onClick:r,children:a("common.next")})]})}function B(e){var t=e.meta,n=e.onCancel,c=e.handlePaySuccess,l=(0,p.useLocaleContext)().t,b=(0,v.h6)().info,y=(0,i.useState)("both"),g=(0,a.Z)(y,2),Z=g[0],w=g[1],R=(0,i.useState)(1),S=(0,a.Z)(R,2),j=S[0],C=S[1],P=(0,x.yP)(b),T=b.blockletRegistry,N=(0,k.FM)(t,b),B=function(){var e=(0,o.Z)((0,r.Z)().mark((function e(t){return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==Z){e.next=2;break}return e.abrupt("return");case 2:w(t);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),D=function(){var e=(0,o.Z)((0,r.Z)().mark((function e(){return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Z){e.next=2;break}return e.abrupt("return");case 2:C(2),"verify"===Z&&(window.location.href=N);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),I=(0,d.getDisplayName)({meta:t});if("purchase"===Z&&2===j)return(0,E.jsx)(h.default,{open:!0,popup:!0,baseUrl:T,action:"acquire-asset",checkFn:u().create({baseURL:s()(T,"/store")}).get,onSuccess:function(){c(N)},onClose:n,checkTimeout:3e5,extraParams:{factory:t.nftFactory},webWalletUrl:P,disableClose:!0,saveConnect:!1,showDownload:!1,messages:{title:l("store.purchase.auth.title",{name:I}),scan:l("store.purchase.auth.scan"),confirm:l("store.purchase.auth.confirm"),success:(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(m.Z,{gutterBottom:!0,children:l("store.purchase.auth.success")}),(0,E.jsxs)(m.Z,{variant:"subtitle2",children:[" ",l("store.purchase.autoLaunch",{name:I})]})]})}});var A=f.default;return(0,E.jsx)(A,{title:l("store.purchase.title",{name:I}),disableEscapeKeyDown:!0,open:!0,fullWidth:!0,onClose:function(e,t){"backdropClick"!==t&&n()},children:(0,E.jsx)("div",{style:{marginBottom:16},children:(0,E.jsx)(U,{action:Z,onNext:D,onSelect:B})})})}B.defaultProps={handlePaySuccess:function(e){setTimeout((function(){window.location.href=e}),1e3)}};var D=B,I=n(33028),A=n(61802),L=n(4485),F=n(24883);function O(e){var t=e.meta,n=e.onCancel,c=e.mode,l=e.installOpts,u=(0,p.useLocaleContext)(),k=u.t,b=u.locale,y=(0,v.h6)(),g=y.info,Z=y.api,w=(0,L.Tt)().api,R=N(),S=(0,i.useState)("both"!==c?c:""),j=(0,a.Z)(S,2),C=j[0],P=j[1],T=(0,i.useState)("both"!==c?2:1),B=(0,a.Z)(T,2),D=B[0],O=B[1],H=(0,F.Z)(t.did),W=H.session,M=H.setSession,z=H.hasCompleted,_=H.doRedirect,q=(0,x.yP)(g),K=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/",G=function(){var e=(0,o.Z)((0,r.Z)().mark((function e(t){return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==C){e.next=2;break}return e.abrupt("return");case 2:P(t);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Y=function(){var e=(0,o.Z)((0,r.Z)().mark((function e(){var n,a,i;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(C){e.next=2;break}return e.abrupt("return");case 2:if(2!==D){e.next=4;break}return e.abrupt("return");case 4:return n=l&&"component"===l.type?(0,I.Z)((0,I.Z)({},l),{},{blockletDid:t.did,action:C}):{registryUrl:g.blockletRegistry,blockletDid:t.did,action:C},e.next=7,Z.startSession({input:{data:JSON.stringify(n)}});case 7:a=e.sent,i=a.session,M(i),O(2),"purchase"===C&&setTimeout((0,o.Z)((0,r.Z)().mark((function e(){var n,o,a,c,l,u;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(n=new URL(window.location.href)).searchParams.delete("assetDid"),n.searchParams.set("sid",i.id),n.searchParams.set("locale",b),n.searchParams.set("did",t.did),o=encodeURIComponent(n.href),(a=new URL(window.location.href)).pathname=s()(K,"/api/did/verify-purchase/token"),a.searchParams.set("sid",i.id),a.searchParams.set("locale",b),a.searchParams.set("autoConnect","false"),e.next=13,w.get(a.href);case 13:c=e.sent,l=c.data,u=encodeURIComponent(l.url),window.location.href=s()(g.blockletRegistry,"/store/purchase/".concat(t.nftFactory,"?cb=").concat(o,"&nw=").concat(u));case 17:case"end":return e.stop()}}),e)}))),100);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),V=function(e,t){"backdropClick"!==t&&(_(),n(),O(1))},$=(0,d.getDisplayName)({meta:t});return 2===D&&"verify"===C&&W?(0,E.jsx)(h.default,{popup:!0,open:!0,className:R.dialogAuth,action:"verify-purchase",checkFn:w.get,checkTimeout:6e5,socketUrl:w.socketUrl,webWalletUrl:q,extraParams:{locale:b,sid:W.id},onSuccess:function(){setTimeout(n,2e3)},onClose:V,showDownload:!1,saveConnect:!1,locale:b,messages:{title:k("store.purchase.verify.auth.title",{name:$}),scan:k("store.purchase.verify.auth.scan"),confirm:k("store.purchase.verify.auth.confirm"),success:k("store.purchase.verify.auth.success")}}):(0,E.jsxs)(f.default,{title:k("store.purchase.title",{name:$}),disableEscapeKeyDown:!0,open:!0,fullWidth:!0,onClose:V,children:[1===D&&(0,E.jsx)("div",{style:{marginBottom:16},children:(0,E.jsx)(U,{action:C,onNext:Y,onSelect:G})}),2===D&&"purchase"===C&&(0,E.jsxs)("div",{style:{textAlign:"center"},children:[!z&&(0,E.jsx)(A.default,{}),(0,E.jsx)(m.Z,{component:"p",children:function(){if(W){if("confirmed"===W.status)return k("store.purchase.confirmed");if("declined"===W.status)return k("store.purchase.declined");if("error"===W.status)return W.message}return k("store.purchase.waiting")}()})]})]})}O.defaultProps={installOpts:{type:"blocklet",rootDid:"",mountPoint:"",url:"",name:"",did:"",title:""}};var H=n(59740),W=n(54177),M=n(66604),z=n(99042),_=["mode"];function q(e){var t=e.meta,n=e.onCancel,c=e.mode,l=e.handlePaySuccess,u=(0,p.useLocaleContext)(),f=u.t,m=u.locale,k=(0,v.h6)().info,b=(0,x.yP)(k),y=(0,i.useState)(null),g=(0,a.Z)(y,2),Z=g[0],w=g[1],R=new URL(null===t||void 0===t?void 0:t.registryUrl).origin,S=(0,d.getDisplayName)({meta:t}),j=function(){var e=(0,o.Z)((0,r.Z)().mark((function e(t,a){var i,s,u,d,p,h;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(d=function(){return d=(0,o.Z)((0,r.Z)().mark((function e(t){return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,M.Z)((function(){return z.hi.get(t).then(function(){var e=(0,o.Z)((0,r.Z)().mark((function e(t){var n,o;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.data,o=null===n||void 0===n?void 0:n.downloadToken,"succeed"!==n.status){e.next=12;break}if(!o){e.next=8;break}return e.next=6,i({downloadToken:o});case 6:e.next=11;break;case 8:return e.next=10,s(f("blocklet.component.missDownloadTokenTip"));case 10:case 11:case 16:return e.abrupt("return",!0);case 12:if("error"!==n.status){e.next=17;break}return console.error("vc error: ",n),e.next=16,s(null===n||void 0===n?void 0:n.error);case 17:return e.abrupt("return",!1);case 18:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())}),{interval:1e3}));case 1:case"end":return e.stop()}}),e)}))),d.apply(this,arguments)},u=function(e){return d.apply(this,arguments)},i=function(){var e=(0,o.Z)((0,r.Z)().mark((function e(t){var n;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.downloadToken,l({downloadToken:n});case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),s=function(){var e=(0,o.Z)((0,r.Z)().mark((function e(t){return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:W.ZP.error(t),n(t);case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),"purchase"!==c||!Z){e.next=10;break}return p=(0,x.Pi)(Z),h=p.statusUrl,e.next=8,u(h);case 8:e.next=12;break;case 10:return e.next=12,i({downloadToken:t.downloadToken&&a(t.downloadToken)});case 12:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}();if((0,i.useEffect)((function(){if("purchase"===c){var e=new URL(R);e.pathname="/api/did/verify-purchase-blocklet/token",e.searchParams.set("serverDid",k.did),e.searchParams.set("blockletDid",null===t||void 0===t?void 0:t.did);try{z.hi.get(e.href).then((function(e){var t=e.data,n="".concat(t.url);w(n)}))}catch(n){console.error("get next workflow url error: ",n)}}return function(){w(null)}}),[c]),"purchase"===c&&!Z)return"";var C={verify:{action:"verify-purchase-blocklet",checkFn:z.od.create({baseURL:R}).get,extraParams:{serverDid:k.did,blockletDid:null===t||void 0===t?void 0:t.did},messages:{title:f("store.purchase.verify.auth.title",{name:S}),scan:f("store.purchase.verify.auth.scan"),confirm:f("store.purchase.verify.auth.confirm"),success:f("store.purchase.verify.auth.success")}},purchase:{action:"acquire-asset",checkFn:z.od.create({baseURL:s()(R,"/store")}).get,extraParams:{factory:t.nftFactory,nw:Z},messages:{title:f("store.purchase.auth.title",{name:S}),scan:f("store.purchase.auth.scan"),confirm:f("store.purchase.auth.confirm"),success:(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)("p",{children:f("store.purchase.auth.success")}),(0,E.jsx)("p",{children:f("blocklet.component.purchaseComponentSecondCheckTip")})]})}}};return(0,E.jsx)(h.default,(0,I.Z)({open:!0,locale:m,popup:!1,saveConnect:!1,className:"connect",baseUrl:R,onSuccess:j,cancelWhenScanned:n,onClose:n,checkTimeout:3e5,webWalletUrl:b,disableClose:!0,showDownload:!1},C[c]))}q.defaultProps={handlePaySuccess:function(){}};var K=(0,i.forwardRef)((function(e,t){var n=e.mode,c=(0,H.Z)(e,_),s=(0,i.useState)("both"!==n?n:"verify"),l=(0,a.Z)(s,2),u=l[0],d=l[1],f=(0,i.useState)("both"!==n?2:1),p=(0,a.Z)(f,2),h=p[0],m=p[1],v=function(){var e=(0,o.Z)((0,r.Z)().mark((function e(t){return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==u){e.next=2;break}return e.abrupt("return");case 2:d(t);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),x=function(){var e=(0,o.Z)((0,r.Z)().mark((function e(){return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(u){e.next=2;break}return e.abrupt("return");case 2:if(2!==h){e.next=4;break}return e.abrupt("return");case 4:m(2);case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return(0,i.useImperativeHandle)(t,(function(){return{onNext:x,getCurrentStep:function(){return h}}})),1===h?(0,E.jsx)("div",{style:{maxWidth:520},children:(0,E.jsx)(U,{action:u,onNext:null,onSelect:v})}):(0,E.jsx)(q,(0,I.Z)((0,I.Z)({},c),{},{mode:u}))}));K.defaultProps={ref:{}};var G=K},91519:function(e,t,n){"use strict";n.d(t,{FM:function(){return P},M2:function(){return S},TT:function(){return y},Ti:function(){return C},rn:function(){return g}});var r=n(32723),o=n(34795),a=n(74082),i=n.n(a),c=n(35483),s=n.n(c),l=n(39591),u=n.n(l),d=n(34271),f=n(21918),p=n.n(f),h=n(19611),m=n.n(h),v=n(17128),x=n.n(v),k=n(9214),b=function(e){return function(e){for(var t=window.atob(e),n=new Uint8Array(t.length),r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}((0,k.toDataURL)(e,{size:200}).replace(/^[^,]*,/,""))};function y(e){return e.replace(/[\s/@_]/g,"-").replace(/[^a-zA-Z0-9_-]/g,"").replace(/(^[-\s]+)|([-\s]+$)/g,"").toLowerCase()}function g(e,t){var n=s()(i()(t.meta),(function(e){return null!==e}));return n.name=e,n.did=x()(e),n.logo="logo.png",n.interfaces.forEach((function(e){e.services||delete e.services})),t.children.forEach((function(e){e.dynamic&&e.bundleSource&&n.children.push({name:e.meta.name,source:e.bundleSource,title:e.meta.title,mountPoint:e.mountPoint})})),n.environments=(t.configs||[]).map((function(e){return{name:e.key,description:"Automatically generated when exporting",required:!!e.required,secure:!!e.secure,default:e.secure?"":e.value||""}})),n.capabilities.component=!1,n}var Z=function(e){return"Copyright \xa9 2022 ".concat(e||"","\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \u201cSoftware\u201d), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.")},w=".DS_Store\n.blocklet",R="name: Deploy\n\non:\n push:\n branches:\n - main\n\njobs:\n Deploy:\n runs-on: ubuntu-latest\n\n steps:\n - name: Checkout repo\n uses: actions/checkout@v2\n\n - name: Blocklet workflow\n uses: blocklet/action-workflow@v1\n with:\n skip-upload: true\n skip-deploy: true\n bundle-command: blocklet bundle --create-release\n github-token: ${{ secrets.GITHUB_TOKEN }}";function S(e){return j.apply(this,arguments)}function j(){return j=(0,o.Z)((0,r.Z)().mark((function e(t){var n,o,a,i,c,s,l=arguments;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=l.length>1&&void 0!==l[1]?l[1]:{},o=n.holder,a="".concat(t.name.split("/").pop()),i="# ".concat(t.title,"\n\n## Introduction\n\n").concat(t.description),c=new(u()),(s=c.folder(a)).file("blocklet.yml",d.ZP.dump(t)),s.file("blocklet.md",i),s.file("README.md",i),s.file("logo.png",b(t.did)),s.file("LICENSE",Z(o)),s.file(".gitignore",w),s.folder("screenshots").file(".gitkeep",""),s.folder(".github").folder("workflows").file("main.yml",R),e.next=15,new Promise((function(e,t){c.generateAsync({type:"blob"}).then((function(t){p()(t,"".concat(a,".zip")),e()})).catch((function(e){t(e)}))}));case 15:case"end":return e.stop()}}),e)}))),j.apply(this,arguments)}var C=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=t.routing.adminPath,o=n?encodeURIComponent(m()(window.location.origin,r)):m()(window.location.origin,r),a=m()(null===t||void 0===t?void 0:t.blockletRegistry,"/api/blocklets/".concat(e.did,"/blocklet.json"));return{serverUrl:o,metaUrl:a}},P=function(e,t){var n=C(e,t),r=n.metaUrl,o=n.serverUrl,a=new URL(m()(o,"/launch-blocklet/agreement"));return a.searchParams.set("blocklet_meta_url",r),a.searchParams.set("from",window.location.href),a.href}},30740:function(e,t,n){"use strict";n.d(t,{Z:function(){return Z}});var r=n(32723),o=n(34795),a=n(96234),i=n(30969),c=n(25071),s=n(61802),l=n(62068),u=n(72807),d=n(33359),f=n(87006),p=n(78903),h=n(3715),m=n(42167),v=n(88029),x=n(98169),k=n(5954),b=n(78685),y=n(37574),g=(0,c.Z)((function(e){return{addMenuItemRoot:{justifyContent:"center",color:e.palette.primary.main,lineHeight:"3.2"}}}));function Z(e){var t=e.disabled,n=e.reloadPage,c=(0,k.h6)(),Z=c.api,w=c.info,R=(0,i.useState)(!1),S=(0,a.Z)(R,2),j=S[0],C=S[1],P=(0,i.useState)(!0),T=(0,a.Z)(P,2),E=T[0],N=T[1],U=(0,i.useState)(!1),B=(0,a.Z)(U,2),D=B[0],I=B[1],A=(0,i.useState)(""),L=(0,a.Z)(A,2),F=L[0],O=L[1],H=(0,i.useState)(""),W=(0,a.Z)(H,2),M=W[0],z=W[1],_=(0,m.useLocaleContext)().t,q=g(),K=function(){var e=(0,o.Z)((0,r.Z)().mark((function e(){var t,o,a,i;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(C(!0),e.prev=1,t=(0,b.GI)(F,w.blockletRegistryList),o=t.isNew,a=t.decoded,o){e.next=5;break}throw new Error(_("store.blockletRegistry.haveSameRegistry"));case 5:return e.next=7,Z.addBlockletStore({input:{url:a}});case 7:I(!1),n&&window.location.reload(),e.next=15;break;case 11:e.prev=11,e.t0=e.catch(1),i="".concat(_("store.blockletRegistry.addFailed")," ").concat((0,b.Z)(e.t0)),z(i);case 15:return e.prev=15,C(!1),e.finish(15);case 18:case"end":return e.stop()}}),e,null,[[1,11,15,18]])})));return function(){return e.apply(this,arguments)}}();return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsxs)(p.ZP,{button:!0,disabled:t,className:q.addMenuItemRoot,onClick:function(){I(!0)},children:[(0,y.jsx)(h.Z,{fontSize:"small"}),(0,y.jsx)(d.Z,{variant:"inherit",children:_("store.blockletRegistry.addRegistry")})]}),(0,y.jsxs)(l.default,{title:_("store.blockletRegistry.addRegistry"),fullWidth:!0,maxWidth:"md",open:D,onClose:function(){return I(!1)},PaperProps:{style:{minHeight:"auto"}},actions:(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(v.default,{onClick:function(e){e.stopPropagation(),I(!1)},color:"inherit",size:"small",children:_("common.cancel")}),(0,y.jsxs)(v.default,{onClick:function(e){e.stopPropagation(),K()},color:"primary",size:"small","data-cy":"install-blocklet-next-step",disabled:j||!F||E,variant:"contained",autoFocus:!0,children:[j&&(0,y.jsx)(s.default,{size:[16,10]}),_("common.confirm")]})]}),children:[(0,y.jsx)("div",{style:{paddingTop:12,overflowY:"hidden"},children:(0,y.jsx)(u.Z,{component:"div",children:(0,y.jsx)(d.Z,{component:"div",children:(0,y.jsx)(f.Z,{label:_("store.blockletRegistry.registryUrl"),autoComplete:"off",variant:"outlined",name:"url",fullWidth:!0,value:F,onChange:function(e){z(null);var t=!1;e.target.value.trim()||(t=!0),e.target.value.trim()||z(_("store.blockletRegistry.registryUrlEmpty")),O(e.target.value),N(t)},disabled:j,onKeyPress:function(e){"Enter"===e.key&&(e.preventDefault(),e.target.value.trim()?K():z(_("store.blockletRegistry.registryUrlEmpty")))}})})})}),!!M&&(0,y.jsx)(x.Z,{type:"error",style:{width:"100%"},children:M})]})]})}Z.defaultProps={disabled:!1,reloadPage:!0}},978:function(e,t,n){"use strict";n.d(t,{T:function(){return B},Z:function(){return I}});var r=n(33028),o=n(32723),a=n(34795),i=n(96234),c=n(30969),s=n(89189),l=n(25071),u=n(61802),d=n(62068),f=n(33359),p=n(2950),h=n(78903),m=n(86008),v=n(93310),x=n(62689),k=n(97475),b=n(11909),y=n(94551),g=n(42167),Z=n(88029),w=n(30740),R=n(94702),S=n(30291),j=n(22128),C=n(5954),P=n(78685),T=n(37574);function E(e){var t=(0,s.useSnackbar)().enqueueSnackbar,n=(0,C.h6)().api,r=(0,g.useLocaleContext)().t,l=(0,c.useState)(!1),u=(0,i.Z)(l,2),d=u[0],f=u[1],p=(0,c.useState)(null),h=(0,i.Z)(p,2),m=h[0],v=h[1],x=e.blockletRegistry,k=e.reloadPage,b=e.onDelete,Z=(0,R.Z)(),w=function(){var e=(0,a.Z)((0,o.Z)().mark((function e(){return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,f(!0),e.next=4,n.deleteBlockletStore({input:{url:x.url}});case 4:b&&"function"===typeof b&&b(),k&&window.location.reload(),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(0),t("Remove Blocklet Store Error: ".concat((0,P.Z)(e.t0)),{autoHideDuration:2e3,variant:"error"});case 11:return e.prev=11,f(!1),v(null),e.finish(11);case 15:case"end":return e.stop()}}),e,null,[[0,8,11,15]])})));return function(){return e.apply(this,arguments)}}(),E={keyName:x.url,title:r("store.blockletRegistry.deleteRegistry"),description:r("store.blockletRegistry.deleteDesc",{name:"<b>".concat(x.url,"</b>"),color:Z.palette.error.main}),confirmPlaceholder:r("store.blockletRegistry.confirmDesc",{name:x.url}),confirm:r("common.delConfirm"),cancel:r("common.cancel"),onConfirm:w,onCancel:function(){f(!1),v(null)}};return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(y.Z,{disabled:d,onClick:function(e){e.stopPropagation(),v(E)},size:"large",children:(0,T.jsx)(S.default,{})}),m&&(0,T.jsx)(j.Z,{keyName:m.keyName,title:m.title,description:m.description,confirmPlaceholder:m.confirmPlaceholder,confirm:m.confirm,cancel:m.cancel,params:m.params,onConfirm:m.onConfirm,onCancel:m.onCancel})]})}var N=n(61627),U=(0,l.Z)((function(){return{buttonText:{textTransform:"none !important"},iconRoot:{minWidth:24},menuName:{display:"flex",flexDirection:"column",marginRight:"100px","& span":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}}}));function B(e){var t=U();return(0,T.jsxs)("div",{className:t.menuName,children:[(0,T.jsx)(f.Z,{component:"span",variant:"subtitle1",style:{fontWeight:"400"},children:e.name}),(0,T.jsx)(f.Z,{className:"url",component:"span",variant:"inherit",children:"".concat(e.url)}),(0,T.jsxs)(x.Z,{children:[(0,T.jsx)(y.Z,{onClick:function(t){t.stopPropagation(),window.open(e.url)},size:"large",children:(0,T.jsx)(b.Z,{})}),!e.protected&&(0,T.jsx)(E,{blockletRegistry:e,reloadPage:e.reloadPage,onDelete:e.onDelete})]})]})}B.defaultProps={protected:!1,reloadPage:!0,onDelete:function(){}};var D=(0,c.forwardRef)((function(e,t){var n=(0,C.h6)(),l=n.api,x=n.info,b=(0,g.useLocaleContext)().t,y=(0,s.useSnackbar)().enqueueSnackbar,R=(0,c.useState)(!1),S=(0,i.Z)(R,2),j=S[0],E=S[1],D=(0,c.useState)(!1),I=(0,i.Z)(D,2),A=I[0],L=I[1],F=(0,c.useState)(-1),O=(0,i.Z)(F,2),H=O[0],W=O[1],M=U(),z=x.blockletRegistryList.findIndex((function(e){return e.selected})),_=function(){var e=(0,a.Z)((0,o.Z)().mark((function e(t){var n;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,E(!0),W(t),n=x.blockletRegistryList[t],e.next=6,l.selectBlockletStore({input:{url:n.url}});case 6:L(!1),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(0),console.error(e.t0),y("".concat(b("store.blockletRegistry.changeFailed")," ").concat((0,P.Z)(e.t0)),{autoHideDuration:2e3,variant:"error"});case 13:return e.prev=13,E(!1),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[0,9,13,16]])})));return function(t){return e.apply(this,arguments)}}();return(0,c.useImperativeHandle)(t,(function(){return{setOpen:L}})),(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(N.Z,{permission:"mutate_node",children:function(e){return(0,T.jsx)(Z.default,{disabled:!e,classes:{text:M.buttonText},color:"secondary","data-cy":"store-toggle",onClick:function(){L(!0)},endIcon:(0,T.jsx)(k.Z,{}),children:(0,T.jsx)(f.Z,{color:"secondary",children:x.blockletRegistryList[z].name})})}}),(0,T.jsx)(d.default,{title:b("store.blockletRegistry.switchRegistry"),disableEscapeKeyDown:!0,disablePortal:!1,fullWidth:!0,open:A,onClose:function(){return L(!1)},children:(0,T.jsxs)(p.Z,{className:M.tabPanel,children:[x.blockletRegistryList.map((function(e,t){return(0,T.jsxs)(h.ZP,{button:!0,disabled:j,selected:z===t,"data-cy":"store-switch",onClick:function(){j||(t!==z?_(t):L(!1))},children:[(0,T.jsx)(v.Z,{className:M.iconRoot,children:H===t&&j&&(0,T.jsx)(u.default,{size:[16,10]})}),(0,T.jsx)(m.Z,{children:(0,T.jsx)(B,(0,r.Z)({},e))})]},e.url)})),(0,T.jsx)(w.Z,{disabled:j})]})})]})})),I=D},24883:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(96234),o=n(30969),a=n(13026),i=n(43658),c=n(65724),s=n(94604),l=n(50692);function u(e){var t=(0,s.Z)(),n=(0,a.s0)(),u=(0,i.default)("sid:blocklet:purchase:".concat(e)),d=(0,r.Z)(u,2),f=d[0],p=d[1],h=(0,o.useState)(!1),m=(0,r.Z)(h,2),v=m[0],x=m[1],k=(0,o.useState)(null),b=(0,r.Z)(k,2),y=b[0],g=b[1],Z=function(){var e=new URL(window.location.href),t=e.pathname,r=e.searchParams,o=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/";r.get("sid")&&(p(""),n(t.replace(o,"/"),{replace:!0}))},w=!(!t.get("assetDid")||!f||t.get("sid")!==f);return(0,l.mU)(c.BlockletEvents.purchaseChange,(function(t){t.did===e&&(g(t.session),["declined","confirmed","error"].includes(t.session.status)&&(x(!0),setTimeout(Z,2e3)))})),(0,o.useEffect)((function(){y&&y.id!==f&&p(y.id)}),[y]),{hasCompleted:v,hasPurchased:w,session:y,setSession:g,doRedirect:Z}}},99042:function(e,t,n){"use strict";n.d(t,{hi:function(){return a},od:function(){return o.a}});var r=n(95803),o=n.n(r);o().defaults.timeout=1e4;var a=o().create()},17128:function(e,t,n){var r=n(44765).Buffer,o=n(64029).types,a=n(2073).toHex,i=n(54186).fromPublicKey;e.exports=function(e){var t=a(r.from("string"===typeof e?e.trim():e));return i(t,{role:o.RoleType.ROLE_ANY})}}}]);
2
- //# sourceMappingURL=4897.9f296b57.chunk.js.map