@abtnode/webapp 1.6.9 → 1.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/blocklet.js +56 -56
  2. package/blocklet.yml +1 -1
  3. package/build/asset-manifest.json +20 -20
  4. package/build/index.html +1 -1
  5. package/build/{precache-manifest.d77c71fa590027f941a9b90889c41ebc.js → precache-manifest.3f2f324f896d80671d77a0418c17d1c4.js} +18 -18
  6. package/build/service-worker.js +1 -1
  7. package/build/static/js/11.f9ceb4b3.chunk.js +2 -0
  8. package/build/static/js/11.f9ceb4b3.chunk.js.map +1 -0
  9. package/build/static/js/19.fc33fa61.chunk.js +2 -0
  10. package/build/static/js/19.fc33fa61.chunk.js.map +1 -0
  11. package/build/static/js/{22.cdd3d1a4.chunk.js → 22.0f55f82b.chunk.js} +2 -2
  12. package/build/static/js/22.0f55f82b.chunk.js.map +1 -0
  13. package/build/static/js/{23.4208ebea.chunk.js → 23.32485069.chunk.js} +2 -2
  14. package/build/static/js/23.32485069.chunk.js.map +1 -0
  15. package/build/static/js/{28.9b1197ca.chunk.js → 28.40163b1b.chunk.js} +2 -2
  16. package/build/static/js/28.40163b1b.chunk.js.map +1 -0
  17. package/build/static/js/8.27e60ccf.chunk.js +3 -0
  18. package/build/static/js/{8.8084d3ca.chunk.js.LICENSE.txt → 8.27e60ccf.chunk.js.LICENSE.txt} +0 -0
  19. package/build/static/js/8.27e60ccf.chunk.js.map +1 -0
  20. package/build/static/js/main.9098ab8e.chunk.js +2 -0
  21. package/build/static/js/main.9098ab8e.chunk.js.map +1 -0
  22. package/build/static/js/{runtime-main.278e8ea4.js → runtime-main.a7211655.js} +2 -2
  23. package/build/static/js/{runtime-main.278e8ea4.js.map → runtime-main.a7211655.js.map} +1 -1
  24. package/package.json +1 -1
  25. package/build/static/js/11.ec811533.chunk.js +0 -2
  26. package/build/static/js/11.ec811533.chunk.js.map +0 -1
  27. package/build/static/js/19.b0298325.chunk.js +0 -2
  28. package/build/static/js/19.b0298325.chunk.js.map +0 -1
  29. package/build/static/js/22.cdd3d1a4.chunk.js.map +0 -1
  30. package/build/static/js/23.4208ebea.chunk.js.map +0 -1
  31. package/build/static/js/28.9b1197ca.chunk.js.map +0 -1
  32. package/build/static/js/8.8084d3ca.chunk.js +0 -3
  33. package/build/static/js/8.8084d3ca.chunk.js.map +0 -1
  34. package/build/static/js/main.ce53947b.chunk.js +0 -2
  35. package/build/static/js/main.ce53947b.chunk.js.map +0 -1
@@ -1,2 +1,2 @@
1
- (this["webpackJsonp@abtnode/webapp"]=this["webpackJsonp@abtnode/webapp"]||[]).push([[22],{1179:function(e,t,n){"use strict";n.d(t,"a",(function(){return Q}));var a=n(11),r=n.n(a),c=n(19),o=n(13),i=n(117),l=n(0),s=n.n(l),u=n(30),d=n(955),m=n(78),p=n(50),f=n.n(p),b=n(63),v=n(102),h=n.n(v),y=n(22),g=n(990),k=n(342),O=n(64),j=n(972),E=n.n(j),x=n(40),w=n(357),C=n(23);function R(e){var t=Object(w.a)(),n=Object(u.k)(),a=E()("sid:blocklet:purchase:".concat(e)),r=Object(o.a)(a,2),c=r[0],i=r[1],s=Object(l.useState)(!1),d=Object(o.a)(s,2),m=d[0],p=d[1],f=Object(l.useState)(null),b=Object(o.a)(f,2),v=b[0],h=b[1],y=function(){var e=new URL(window.location.href),t=e.pathname,a=e.searchParams,r=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/";a.get("sid")&&(i(""),n.replace(t.replace(r,"/")))},g=!(!t.get("assetDid")||!c||t.get("sid")!==c);return Object(C.c)(x.BlockletEvents.purchaseChange,(function(t){t.did===e&&(h(t.session),["declined","confirmed","error"].includes(t.session.status)&&(p(!0),setTimeout(y,2e3)))})),Object(l.useEffect)((function(){v&&v.id!==c&&i(v.id)}),[v]),{hasCompleted:m,hasPurchased:g,session:v,setSession:h,doRedirect:y}}var P=n(337),S=n(105),L=n.n(S),B=n(320),_=n(939),N=n.n(_),D=n(867),T=n(868),U=n(884),z=n(920),A=n(1151),F=n.n(A),W=n(1152),I=n.n(W),M=n(148),V=n.n(M),q=n(152),H=n.n(q),K=n(53),J=n(29),Y=Object(B.a)((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}}}));var $=Object(l.forwardRef)((function(e){var t=e.meta,n=e.mode,a=e.onCancel,i=Object(y.useLocaleContext)(),u=i.t,d=i.locale,m=Object(J.c)(),p=m.info,v=m.api,g=Object(K.c)().api,k=Y(),j=Object(l.useState)("both"!==n?n:""),E=Object(o.a)(j,2),x=E[0],w=E[1],C=Object(l.useState)("both"!==n?2:1),P=Object(o.a)(C,2),S=P[0],B=P[1],_=R(t.did),A=_.session,W=_.setSession,M=_.hasCompleted,q=_.doRedirect,$=Object(O.x)(p),G=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/",Q=function(){var e=Object(c.a)(r.a.mark((function e(t){return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==x){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)}}(),X=function(){var e=Object(c.a)(r.a.mark((function e(){var n,a,o;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(x){e.next=2;break}return e.abrupt("return");case 2:if(2!==S){e.next=4;break}return e.abrupt("return");case 4:return n=JSON.stringify({blockletDid:t.did,registryUrl:p.blockletRegistry,action:x}),e.next=7,v.startSession({input:{data:n}});case 7:a=e.sent,o=a.session,W(o),B(2),"purchase"===x&&setTimeout(Object(c.a)(r.a.mark((function e(){var n,a,c,i,l,s;return r.a.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",o.id),n.searchParams.set("locale",d),a=encodeURIComponent(n.href),(c=new URL(window.location.href)).pathname=L()(G,"/api/did/verify-purchase/token"),c.searchParams.set("sid",o.id),c.searchParams.set("locale",d),c.searchParams.set("autoConnect","false"),e.next=12,g.get(c.href);case 12:i=e.sent,l=i.data,s=encodeURIComponent(l.url),window.location.href=L()(p.blockletRegistry,"/store/purchase/".concat(t.nftFactory,"?cb=").concat(a,"&nw=").concat(s));case 16:case"end":return e.stop()}}),e)}))),100);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Z=function(){q(),a(),B(1)},ee=[{action:"purchase",title:u("store.purchase.purchase.title"),description:u("store.purchase.purchase.description")},{action:"verify",title:u("store.purchase.verify.title"),description:u("store.purchase.verify.description")}];return 2===S&&"verify"===x&&A?s.a.createElement(V.a,{popup:!0,open:!0,className:k.dialogAuth,action:"verify-purchase",checkFn:g.get,checkTimeout:6e5,socketUrl:g.socketUrl,webWalletUrl:$,extraParams:{locale:d,sid:A.id},onSuccess:function(){setTimeout(a,2e3)},onClose:Z,showDownload:!1,locale:d,messages:{title:u("store.purchase.auth.title"),scan:u("store.purchase.auth.scan"),confirm:u("store.purchase.auth.confirm"),success:u("store.purchase.auth.success")}}):s.a.createElement(N.a,{title:u(x&&2===S?"store.purchase.".concat(x,".title"):"store.purchase.title"),disableBackdropClick:!0,disableEscapeKeyDown:!0,open:!0,fullWidth:!0,onClose:Z},1===S&&s.a.createElement("div",{style:{marginBottom:16}},s.a.createElement(D.a,{className:k.tabPanel},ee.map((function(e){return s.a.createElement(T.a,{button:!0,key:e.action,selected:x===e.action,onClick:function(){return Q(e.action)}},s.a.createElement(z.a,{className:k.iconRoot},"purchase"===e.action?s.a.createElement(F.a,{style:{color:"purchase"===x?H.a.primary.main:"#AAA",fontSize:32}}):s.a.createElement(I.a,{style:{color:"verify"===x?H.a.primary.main:"#AAA",fontSize:32}})),s.a.createElement(U.a,{primary:e.title,secondary:e.description}))}))),s.a.createElement(h.a,{rounded:!0,fullWidth:!0,disabled:!x,variant:"contained",color:"primary",style:{marginTop:16},onClick:X},u("common.next"))),2===S&&"purchase"===x&&s.a.createElement("div",{style:{textAlign:"center"}},!M&&s.a.createElement(f.a,null),s.a.createElement(b.a,{component:"p"},function(){if(A){if("confirmed"===A.status)return u("store.purchase.confirmed");if("declined"===A.status)return u("store.purchase.declined");if("error"===A.status)return A.message}return u("store.purchase.waiting")}())))})),G=["meta","lastVersion","buttonText","registryUrl"];function Q(e){var t=e.meta,n=e.lastVersion,a=e.buttonText,p=e.registryUrl,v=Object(i.a)(e,G),j=Object(m.c)().enqueueSnackbar,E=Object(y.useLocaleContext)().t,x=Object(u.k)(),w=Object(k.b)(),C=w.api,S=w.data.find((function(e){return e.meta.did===t.did}))||{},L=Object(l.useMemo)((function(){return!!S.status}),[S.status]),B=Object(l.useMemo)((function(){var e;return L?null===(e=S.meta)||void 0===e?void 0:e.version:null}),[L,S.meta]),_=!1===Object(d.isFreeBlocklet)(t),N=Object(l.useState)(!1),D=Object(o.a)(N,2),T=D[0],U=D[1],z=R(t.did).hasPurchased,A=Object(l.useState)(!1),F=Object(o.a)(A,2),W=F[0],I=F[1],M=Object(l.useMemo)((function(){return T?E(L?"blocklet.status.upgrading":_?"blocklet.status.purchasing":"blocklet.status.waiting"):Object(O.A)(S.status)?E("common.".concat(S.status)):""}),[T,S.status,L,E,_]),V=Object(l.useMemo)((function(){return!(!n||!B)&&!(!n||!Object(g.gt)(n,B))}),[n,B]),q=Object(l.useMemo)((function(){return V?a.upgrade:L?a.open:_?a.purchase:a.install}),[L,V,_,a]),H=Object(l.useMemo)((function(){return!(L&&!V)}),[L,V]),K=function(){var e=Object(c.a)(r.a.mark((function e(n){var a;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.preventDefault(),n.stopPropagation(),e.prev=2,U(!0),L||!_){e.next=7;break}return I(!0),e.abrupt("return");case 7:return a=L?"upgradeBlocklet":"installBlocklet",e.next=10,C[a]({input:{did:t.did,registryUrl:p}});case 10:e.next=16;break;case 12:e.prev=12,e.t0=e.catch(2),j(Object(O.g)(e.t0),{autoHideDuration:5e3,variant:"error"}),console.error("Blocklet installed failed",e.t0);case 16:return e.prev=16,U(!1),e.finish(16);case 19:case"end":return e.stop()}}),e,null,[[2,12,16,19]])})));return function(t){return e.apply(this,arguments)}}(),J=function(e){var n=e.disabled;return s.a.createElement(h.a,Object.assign({key:t.did,onClick:K,size:"small",disabled:Boolean(M||n),variant:"contained",color:"primary","data-cy":"install-blocklet",rounded:!0},v),M?s.a.createElement(s.a.Fragment,null,s.a.createElement(f.a,{size:[16,10],style:{marginRight:3}}),M):q)};J.defaultProps={disabled:!1};return s.a.createElement(s.a.Fragment,null,s.a.createElement("div",null,H?s.a.createElement(P.a,{permission:"mutate_blocklet"},(function(e){return s.a.createElement(J,{disabled:!e})})):s.a.createElement(h.a,{rounded:!0,className:"action-button",variant:"contained",color:"primary",size:"small",disabled:Boolean(M),"data-cy":"open-blocklet",onClick:function(e){var n;e.preventDefault(),e.stopPropagation(),x.push("/blocklets/".concat(t.did,"/").concat((n=S)&&(n.configs||[]).some((function(e){return e.required&&!e.value}))?"configuration":"overview"))}},M?s.a.createElement(s.a.Fragment,null,s.a.createElement(f.a,{size:[16,10],style:{marginRight:3}}),M):q),L&&_&&s.a.createElement(b.a,{component:"small",style:{fontSize:12,color:"#666",marginLeft:4}},E("blocklet.status.purchased"))),(z&&!L||W)&&s.a.createElement($,{meta:t,mode:z?"purchase":"both",onCancel:function(){U(!1),I(!1)}}))}Q.defaultProps={lastVersion:""}},1538:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return Re}));var a=n(32),r=n(365),c=n(57),o=n(11),i=n.n(o),l=n(19),s=n(13),u=n(0),d=n.n(u),m=n(14),p=n(356),f=n.n(p),b=n(972),v=n.n(b),h=n(59),y=n(1321),g=n.n(y),k=n(50),O=n.n(k),j=n(63),E=n(296),x=n(926),w=n(894),C=n(536),R=n.n(C),P=n(1324),S=n.n(P),L=n(1325),B=n.n(L),_=n(339),N=n.n(_),D=n(954),T=n.n(D),U=n(102),z=n.n(U),A=n(975),F=n.n(A),W=n(22),I=n(117),M=n(105),V=n.n(M),q=n(880),H=n(320),K=n(8),J=n(1322),Y=n.n(J),$=n(64),G=n(29),Q=n(1179),X=["blocklets"],Z=Object(H.a)((function(e){return{root:{backgroundColor:"transparent!important","& .MuiButton-root:not(.Mui-disabled)":{backgroundColor:Object(K.j)(e.palette.primary.main,.94),color:e.palette.primary.main,position:"relative","&::after":{content:'""',position:"absolute",top:"50%",left:"50%",width:"150%",height:"150%",transform:"translate(-50%, -50%)"}}}}}));function ee(e){var t,n=e.x,a=e.lastVersion,r=Object(u.useContext)(W.LocaleContext).t,c=Z(),o=Object(G.c)(),i=V()(o.prefix,"blocklet.png"),l=o.info.blockletRegistry;if(l.startsWith("http")&&n.logo)i=V()(l,Object($.k)(n.did,n.logo));else{var s=(window.env.apiPrefix||"/").replace(/^\/+/,"").replace(/\/+$/,"");s&&(s="/".concat(s)),i=V()(s,"/blocklet/logo/".concat(n.did))}return d.a.createElement(Y.a,{title:n.title||n.name,description:n.description,cover:i,addons:[{icon:"cube",value:"v".concat(n.version)},{icon:"clock",value:Object($.n)(n.lastPublishedAt)},{icon:"cloud-download",value:(null===(t=n.stats)||void 0===t?void 0:t.downloads)||0,pretty:!0}],button:d.a.createElement("div",{className:c.root},d.a.createElement(Q.a,{meta:n,lastVersion:a,buttonText:{purchase:r("common.purchase"),open:r("common.open"),install:r("common.install"),upgrade:r("common.upgrade")},registryUrl:l}))})}function te(e){var t=e.blocklets,n=Object(I.a)(e,X),a=t.reduce((function(e,t){var n=t.did,a=t.version;return e[n]=a,e}),{}),r=function(e){return!!e.currentTarget.contains(e.target)||(e.preventDefault(),!1)};return d.a.createElement("div",n,d.a.createElement(q.a,{container:!0,spacing:4},t.map((function(e){return d.a.createElement(q.a,{item:!0,lg:4,md:6,sm:6,xs:12,key:e.did,"data-blocklet-did":e.did},d.a.createElement(h.Link,{to:"/store/".concat(e.did),"data-cy":"blocklet-item",style:{color:"initial"},onClick:r},d.a.createElement(ee,{x:e,lastVersion:a[e.did]})))}))))}ee.defaultProps={lastVersion:""},te.defaultProps={};var ne=n(78),ae=n(939),re=n.n(ae),ce=n(867),oe=n(868),ie=n(884),le=n(920),se=n(921),ue=n(968),de=n.n(ue),me=n(915),pe=n(938),fe=n.n(pe),be=Object(H.a)((function(e){return{addMenuItemRoot:{justifyContent:"center",color:e.palette.primary.main,lineHeight:"3.2"}}}));function ve(e){var t=e.disabled,n=Object(G.c)(),a=n.api,r=n.info,c=Object(u.useState)(!1),o=Object(s.a)(c,2),m=o[0],p=o[1],f=Object(u.useState)(!0),b=Object(s.a)(f,2),v=b[0],h=b[1],y=Object(u.useState)(!1),g=Object(s.a)(y,2),k=g[0],E=g[1],x=Object(u.useState)(""),C=Object(s.a)(x,2),R=C[0],P=C[1],S=Object(u.useState)(""),L=Object(s.a)(S,2),B=L[0],_=L[1],D=Object(W.useLocaleContext)().t,T=be(),U=function(){var e=Object(l.a)(i.a.mark((function e(){var t,n,c;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:p(!0),e.prev=1,t=decodeURIComponent(R.trim()),n=!1,/^https?:\/\//.test(t)||(t="https://".concat(t),n=!0),e.prev=6,new URL(t),e.next=13;break;case 10:throw e.prev=10,e.t0=e.catch(6),new Error("Invalid Blocklet Store URL");case 13:if(!r.blockletRegistryList.some((function(e){return[R,t].includes(e.url)}))){e.next=15;break}throw new Error(D("store.blockletRegistry.haveSameRegistry"));case 15:return e.next=17,a.addBlockletRegistry({input:{url:n?"https://".concat(R):R}});case 17:window.location.reload(),e.next=24;break;case 20:e.prev=20,e.t1=e.catch(1),c="".concat(D("store.blockletRegistry.addFailed")," ").concat(Object($.g)(e.t1)),_(c);case 24:return e.prev=24,p(!1),e.finish(24);case 27:case"end":return e.stop()}}),e,null,[[1,20,24,27],[6,10]])})));return function(){return e.apply(this,arguments)}}();return d.a.createElement(d.a.Fragment,null,d.a.createElement(oe.a,{button:!0,disabled:t,className:T.addMenuItemRoot,onClick:function(){E(!0)}},d.a.createElement(fe.a,{fontSize:"small"}),d.a.createElement(j.a,{variant:"inherit"},D("store.blockletRegistry.addRegistry"))),d.a.createElement(re.a,{title:D("store.blockletRegistry.addRegistry"),fullWidth:!0,maxWidth:"md",open:k,onClose:function(){return E(!1)},PaperProps:{style:{minHeight:"auto"}},actions:d.a.createElement(d.a.Fragment,null,d.a.createElement(z.a,{onClick:function(e){e.stopPropagation(),E(!1)},color:"default",rounded:!0,size:"small"},D("common.cancel")),d.a.createElement(z.a,{onClick:function(e){e.stopPropagation(),U()},color:"primary",size:"small","data-cy":"install-blocklet-next-step",disabled:m||!R||v,variant:"contained",autoFocus:!0,rounded:!0},m&&d.a.createElement(O.a,{size:[16,10]}),D("common.confirm")))},d.a.createElement("div",{style:{paddingTop:12,overflowY:"hidden"}},d.a.createElement(me.a,{component:"div"},d.a.createElement(j.a,{component:"div"},d.a.createElement(w.a,{label:D("store.blockletRegistry.registryUrl"),autoComplete:"off",variant:"outlined",name:"url",fullWidth:!0,value:R,onChange:function(e){_(null);var t=!1;e.target.value.trim()||(t=!0),e.target.value.trim()||_(D("store.blockletRegistry.registryUrlEmpty")),P(e.target.value),h(t)},disabled:m,onKeyPress:function(e){"Enter"===e.key&&(e.preventDefault(),e.target.value.trim()?U():_(D("store.blockletRegistry.registryUrlEmpty")))}})))),!!B&&d.a.createElement(N.a,{type:"error",style:{width:"100%"}},B)))}ve.defaultProps={disabled:!1};var he=n(180),ye=n(1323),ge=n.n(ye),ke=n(988);function Oe(e){var t=Object(ne.c)().enqueueSnackbar,n=Object(G.c)().api,a=Object(W.useLocaleContext)().t,r=Object(u.useState)(!1),c=Object(s.a)(r,2),o=c[0],m=c[1],p=Object(u.useState)(null),f=Object(s.a)(p,2),b=f[0],v=f[1],h=e.blockletRegistry,y=function(){var e=Object(l.a)(i.a.mark((function e(){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,m(!0),e.next=4,n.deleteBlockletRegistry({input:{url:h.url}});case 4:window.location.reload(),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),t("Remove Blocklet Store Error: ".concat(Object($.g)(e.t0)),{autoHideDuration:2e3,variant:"error"});case 10:return e.prev=10,m(!1),v(null),e.finish(10);case 14:case"end":return e.stop()}}),e,null,[[0,7,10,14]])})));return function(){return e.apply(this,arguments)}}(),g={keyName:h.url,title:a("store.blockletRegistry.deleteRegistry"),description:a("store.blockletRegistry.deleteDesc",{name:"<b>".concat(h.url,"</b>")}),confirmPlaceholder:a("store.blockletRegistry.confirmDesc",{name:h.url}),confirm:a("common.delConfirm"),cancel:a("common.cancel"),onConfirm:y,onCancel:function(){m(!1),v(null)}};return d.a.createElement(d.a.Fragment,null,d.a.createElement(he.a,{disabled:o,onClick:function(e){e.stopPropagation(),v(g)}},d.a.createElement(ge.a,null)),b&&d.a.createElement(ke.a,{keyName:b.keyName,title:b.title,description:b.description,confirmPlaceholder:b.confirmPlaceholder,confirm:b.confirm,cancel:b.cancel,params:b.params,onConfirm:b.onConfirm,onCancel:b.onCancel}))}var je=n(337),Ee=Object(H.a)((function(){return{buttonText:{textTransform:"none !important"},iconRoot:{minWidth:24},menuName:{display:"flex",flexDirection:"column",marginRight:"100px","& span":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}}}));var xe,we=Object(u.forwardRef)((function(e,t){var n=Object(G.c)(),a=n.api,r=n.info,c=Object(W.useLocaleContext)().t,o=Object(ne.c)().enqueueSnackbar,m=Object(u.useState)(!1),p=Object(s.a)(m,2),f=p[0],b=p[1],v=Object(u.useState)(!1),h=Object(s.a)(v,2),y=h[0],g=h[1],k=d.a.useState(-1),E=Object(s.a)(k,2),x=E[0],w=E[1],C=Ee(),R=r.blockletRegistryList.findIndex((function(e){return e.selected})),P=function(){var e=Object(l.a)(i.a.mark((function e(t){var n;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,b(!0),w(t),n=r.blockletRegistryList[t],e.next=6,a.selectBlockletRegistry({input:{url:n.url}});case 6:window.location.reload(),e.next=14;break;case 9:e.prev=9,e.t0=e.catch(0),console.error(e.t0),b(!1),o("".concat(c("store.blockletRegistry.changeFailed")," ").concat(Object($.g)(e.t0)),{autoHideDuration:2e3,variant:"error"});case 14:case"end":return e.stop()}}),e,null,[[0,9]])})));return function(t){return e.apply(this,arguments)}}();return Object(u.useImperativeHandle)(t,(function(){return{setOpen:g}})),d.a.createElement(d.a.Fragment,null,d.a.createElement(je.a,{permission:"mutate_node"},(function(e){return d.a.createElement(z.a,{disabled:!e,classes:{text:C.buttonText},color:"secondary","data-cy":"store-toggle",onClick:function(){g(!0)},endIcon:d.a.createElement(de.a,null)},d.a.createElement(j.a,{color:"secondary"},r.blockletRegistryList[R].name))})),d.a.createElement(re.a,{title:c("store.blockletRegistry.switchRegistry"),disableBackdropClick:!0,disableEscapeKeyDown:!0,disablePortal:!1,fullWidth:!0,open:y,onClose:function(){return g(!1)}},d.a.createElement(ce.a,{className:C.tabPanel},r.blockletRegistryList.map((function(e,t){return d.a.createElement(oe.a,{button:!0,disabled:f,key:e.url,selected:R===t,"data-cy":"store-switch",onClick:function(){f||(t!==R?P(t):g(!1))}},d.a.createElement(le.a,{className:C.iconRoot},x===t&&f&&d.a.createElement(O.a,{size:[16,10]})),d.a.createElement(ie.a,null,d.a.createElement("div",{className:C.menuName},d.a.createElement(j.a,{component:"span",variant:"subtitle1",style:{fontWeight:"500"}},e.name),d.a.createElement(j.a,{className:"url",component:"span",variant:"inherit"},"".concat(e.url))),d.a.createElement(se.a,null,!e.protected&&d.a.createElement(Oe,{blockletRegistry:e}))))})),d.a.createElement(ve,{disabled:f}))))})),Ce=function(e){return"desc"===e.direction?d.a.createElement(S.a,null):d.a.createElement(B.a,null)};function Re(){var e=Object(G.c)(),t=e.api,n=e.info,a=Object(u.useContext)(W.LocaleContext).t,o=Object(u.useState)(""),m=Object(s.a)(o,2),p=m[0],b=m[1],y=v()("directions",{title:"asc",popularity:"desc"}),k=Object(s.a)(y,2),C=k[0],P=k[1],S=v()("popularity","popularity"),L=Object(s.a)(S,2),B=L[0],_=L[1],D=n.blockletRegistryList.find((function(e){return e.selected})),U=f()(Object(l.a)(i.a.mark((function e(){var n,a;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.listBlocklets({input:{registryUrl:D.url}});case 2:return n=e.sent,a=n.blocklets,e.abrupt("return",a);case 5:case"end":return e.stop()}}),e)})))),A=(U.value||[]).map((function(e){return e.searchContent=[e.title,e.name,e.description].filter(Boolean).join("").toLocaleLowerCase().replace(/\s/g,""),e})),I=Object(u.useMemo)((function(){var e=function(e){return e.title||e.name},t=function(e){return e.stats.downloads},n=p.toLowerCase().replace(/\s/g,"");return g()(A.filter((function(e){return e.searchContent.includes(n)})),"title"===B?[e,t]:[t,e],"title"===B?[C.title,C.popularity]:[C.popularity,C.title])}),[A,p,C,B]),M=function(e,t){var n="desc"===t?"asc":"desc";P(Object(c.a)(Object(c.a)({},C),{},Object(r.a)({},e,n))),_(e)},V=Object(u.useRef)(null),q=null;return q=I.length?d.a.createElement(te,{blocklets:I}):U.error?d.a.createElement(N.a,{type:"error",variant:"icon"},d.a.createElement("div",null,Object($.g)(U.error),d.a.createElement(h.Link,{style:{marginLeft:"12px"},to:"/settings/basic",onClick:function(e){V.current.setOpen(!0),e.preventDefault()}},"Change Registry",">>"))):U.loading?d.a.createElement(O.a,null):d.a.createElement(T.a,null,a("common.emptyData")),d.a.createElement(Pe,null,d.a.createElement(x.a,{separator:"\u203a","aria-label":"breadcrumb",className:"page-breadcrumb"},d.a.createElement(j.a,{color:"textPrimary"},a("common.store")),d.a.createElement(we,{ref:V})),d.a.createElement(E.a,{className:"store-header",display:"flex",justifyContent:"space-between",p:0,m:0},d.a.createElement(j.a,{component:"h2",variant:"h4",className:"page-header",color:"textPrimary"},a("store.headerDescription")),d.a.createElement(E.a,{mt:0,display:"flex",alignItems:"center"},d.a.createElement(w.a,{size:"small",placeholder:a("common.search"),style:{marginRight:"15px"},value:p,defaultValue:p,onChange:function(e){return b(e.target.value)},"data-cy":"search",InputProps:{startAdornment:d.a.createElement(R.a,{name:"search",size:16,style:{marginRight:"6px",marginBottom:"6px"}}),endAdornment:d.a.createElement("span",{onClick:function(){return b("")},style:{margin:"0 5px 6px 6px",cursor:"pointer"},"data-cy":"search-delete"},d.a.createElement(R.a,{name:"times",size:16}))}}),d.a.createElement(F.a,{size:"small",color:"primary","aria-label":"split button",style:{whiteSpace:"nowrap"}},d.a.createElement(z.a,{onClick:function(){return M("popularity",C.popularity)},endIcon:d.a.createElement(Ce,{direction:C.popularity}),className:"sort-button",color:"secondary",variant:"popularity"===B?"contained":"outlined"},a("store.popularSort")),d.a.createElement(z.a,{onClick:function(){return M("title",C.title)},endIcon:d.a.createElement(Ce,{direction:C.title}),className:"sort-button",color:"secondary",variant:"title"===B?"contained":"outlined"},a("store.nameSort"))))),q)}Ce.defaultProps={direction:"asc"};var Pe=m.default.main(xe||(xe=Object(a.a)(["\n .sort-button {\n border-radius: 0 !important;\n }\n\n @media (max-width: ","px) {\n .store-header {\n flex-direction: column;\n margin-bottom: 32px !important;\n }\n\n .page-header {\n margin-bottom: 16px !important;\n }\n }\n"])),(function(e){return e.theme.breakpoints.values.sm}))},931:function(e,t,n){"use strict";n.d(t,"a",(function(){return S}));var a=n(32),r=n(11),c=n.n(r),o=n(19),i=n(13),l=n(0),s=n.n(l),u=n(14),d=n(445),m=n(50),p=n.n(m),f=n(876),b=n(446),v=n(915),h=n(916),y=n(925),g=n(993),k=n.n(g),O=n(324),j=n(22),E=n(102),x=n.n(E),w=n(64),C=n(17);var R,P=function(){var e=Object(C.a)();return{minWidth:Object(O.a)(e.breakpoints.down("sm"))?300:e.breakpoints.values.sm}};function S(e){var t=e.title,n=e.description,a=e.showCancel,r=e.cancel,u=e.confirm,d=e.color,m=e.params,g=e.onCancel,E=e.onConfirm,C=Object(l.useState)(m),R=Object(i.a)(C,2),S=R[0],B=R[1],_=Object(l.useState)(!0),N=Object(i.a)(_,2),D=N[0],T=N[1],U=Object(l.useState)(!1),z=Object(i.a)(U,2),A=z[0],F=z[1],W=Object(l.useState)(""),I=Object(i.a)(W,2),M=I[0],V=I[1],q=Object(j.useLocaleContext)().t,H=k()(),K=function(){var e=Object(o.a)(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!==typeof t){e.next=17;break}return F(!0),e.prev=2,e.next=5,t(S);case 5:T(!1),e.next=12;break;case 8:e.prev=8,e.t0=e.catch(2),V(Object(w.g)(e.t0)),console.error(e.t0);case 12:return e.prev=12,F(!1),e.finish(12);case 15:e.next=18;break;case 17:T(!1);case 18:case"end":return e.stop()}}),e,null,[[2,8,12,15]])})));return function(t){return e.apply(this,arguments)}}(),J="function"===typeof t?t():t,Y="function"===typeof n?n(S,B,V):n,$=Object(O.a)(H.breakpoints.down("sm")),G=P().minWidth;return s.a.createElement(L,{onClick:function(e){e.stopPropagation()},fullScreen:$,open:D,style:{minWidth:G}},s.a.createElement(h.a,null,J),s.a.createElement(b.a,{style:{minWidth:G}},s.a.createElement(v.a,{component:"div"},Y),!!M&&s.a.createElement(y.a,{severity:"error",style:{width:"100%",marginTop:8}},M)),s.a.createElement(f.a,{className:"delete-actions",style:{padding:"8px 24px 24px"}},a&&s.a.createElement(x.a,{onClick:function(e){e.stopPropagation(),K(g)},color:"default","data-cy":"cancel-confirm-dialog",rounded:!0,size:"small"},r||q("common.cancel")),s.a.createElement(x.a,{onClick:function(e){e.stopPropagation(),K(E)},color:d,size:"small",disabled:S.__disableConfirm||A,variant:"contained","data-cy":"submit-confirm-dialog",autoFocus:!0,rounded:!0},A&&s.a.createElement(p.a,{size:[16,10]}),u)))}S.defaultProps={onCancel:function(){},showCancel:!0,cancel:"",confirm:"Confirm",color:"danger",params:{}};var L=Object(u.default)(d.a)(R||(R=Object(a.a)(["\n .delete-actions .Mui-disabled {\n color: rgba(0, 0, 0, 0.26) !important;\n box-shadow: none;\n background-color: rgba(0, 0, 0, 0.12) !important;\n }\n"])))},946:function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var a=n(117),r=n(0),c=n.n(r),o=n(977),i=n.n(o),l=n(22),s=["children"];function u(e){var t=e.children,n=Object(a.a)(e,s),o=Object(r.useContext)(l.LocaleContext).t;return c.a.createElement(i.a,Object.assign({tip:o("common.copyTip"),copiedTip:o("common.copiedTip")},n),t)}},955:function(e,t,n){var a=n(11),r=n(262),c=n(966),o=n(532),i=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=n.parallel,i=void 0!==o&&o,l=n.sync;if(l){if(t(e),e.children){var s,u=c(e.children);try{for(u.s();!(s=u.n()).done;){var d=s.value;t(d)}}catch(v){u.e(v)}finally{u.f()}}return null}if(!i)return r(a.mark((function n(){var r,o,i;return a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,t(e);case 2:if(!e.children){n.next=20;break}r=c(e.children),n.prev=4,r.s();case 6:if((o=r.n()).done){n.next=12;break}return i=o.value,n.next=10,t(i);case 10:n.next=6;break;case 12:n.next=17;break;case 14:n.prev=14,n.t0=n.catch(4),r.e(n.t0);case 17:return n.prev=17,r.f(),n.finish(17);case 20:return n.abrupt("return",null);case 21:case"end":return n.stop()}}),n,null,[[4,14,17,20]])})))();var m=[];if(m.push(t(e)),e.children){var p,f=c(e.children);try{for(f.s();!(p=f.n()).done;){var b=p.value;m.push(t(b))}}catch(v){f.e(v)}finally{f.f()}}return Promise.all(m)};e.exports={isFreeBlocklet:function(e){return!e.payment||(e.payment.price||[]).map((function(e){return e.value||0})).every((function(e){return 0===e}))},forEachBlocklet:i,isAuthServiceEnabled:function e(t){if((o(t,"meta.interfaces")||[]).some((function(e){return(o(e,"services")||[]).some((function(e){return"@abtnode/auth-service"===e.name}))})))return!0;var n,a=o(t,"children")||[],r=c(a);try{for(r.s();!(n=r.n()).done;){if(e(n.value))return!0}}catch(i){r.e(i)}finally{r.f()}return!1},getRequiredMissingConfigs:function(e){var t=[],n=e.configs||[];n.forEach((function(n){n.required&&!n.value&&t.push({did:e.meta.did,key:n.key})}));var a,r=c(e.children||[]);try{var o=function(){var e=a.value;(e.configs||[]).forEach((function(a){!a.required||a.value||n.some((function(e){return e.key===a.key&&e.value}))||t.push({did:e.meta.did,key:a.key})}))};for(r.s();!(a=r.n()).done;)o()}catch(i){r.e(i)}finally{r.f()}return t},wipeSensitiveData:function(e){return e?(i(e,(function(t){(t.configs||[]).forEach((function(e){e.secure&&(e.value=e.value?"__encrypted__":"")})),(t.environments||[]).forEach((function(e){["BLOCKLET_APP_SK"].includes(e.key)&&(e.value="__encrypted__")})),delete e.configObj,delete e.environmentObj}),{sync:!0}),e):e}}},988:function(e,t,n){"use strict";n.d(t,"a",(function(){return m}));var a=n(57),r=n(0),c=n.n(r),o=n(63),i=n(894),l=n(925),s=n(22),u=n(946),d=n(931);function m(e){var t=e.title,n=e.description,r=e.confirmPlaceholder,m=e.cancel,p=e.confirm,f=e.params,b=e.onCancel,v=e.onConfirm,h=e.keyName,y=Object(s.useLocaleContext)().t,g={title:function(){return c.a.createElement("div",null,t," (".concat(h,")"))},description:function(e,t){return c.a.createElement("div",null,c.a.createElement(l.a,{severity:"warning",style:{width:"100%"}},y("common.notice")),c.a.createElement("div",{style:{marginTop:24,marginBottom:24},dangerouslySetInnerHTML:{__html:n}}),c.a.createElement("div",{style:{marginBottom:24}},y("common.click"),"\uff1a",c.a.createElement(u.a,{"data-cy":"click-copy"},h)),c.a.createElement(o.a,{component:"div"},c.a.createElement(i.a,{label:r,autoComplete:"off","data-cy":"delete-confirm-input",variant:"outlined",fullWidth:!0,autoFocus:!0,value:e.inputVal,onChange:function(n){var r;r=Object(a.a)(Object(a.a)({},e),{},{inputVal:n.target.value,__disableConfirm:h!==n.target.value}),t(Object(a.a)(Object(a.a)({},r),{},{__disableConfirm:r.__disableConfirm}))}})))},confirm:p,cancel:m,onConfirm:v,onCancel:b,params:Object(a.a)({inputVal:"",__disableConfirm:!0},f)};return c.a.createElement(d.a,{title:g.title,description:g.description,confirm:g.confirm,cancel:g.cancel,params:g.params,onConfirm:g.onConfirm,onCancel:g.onCancel})}m.defaultProps={onCancel:function(){},cancel:"",confirm:"Confirm",params:{}}}}]);
2
- //# sourceMappingURL=22.cdd3d1a4.chunk.js.map
1
+ (this["webpackJsonp@abtnode/webapp"]=this["webpackJsonp@abtnode/webapp"]||[]).push([[22],{1179:function(e,t,n){"use strict";n.d(t,"a",(function(){return Q}));var a=n(11),r=n.n(a),c=n(19),o=n(13),i=n(117),l=n(0),s=n.n(l),u=n(30),d=n(955),m=n(78),p=n(50),f=n.n(p),b=n(63),v=n(102),h=n.n(v),y=n(22),g=n(990),k=n(342),O=n(64),j=n(972),E=n.n(j),x=n(40),w=n(357),C=n(23);function R(e){var t=Object(w.a)(),n=Object(u.k)(),a=E()("sid:blocklet:purchase:".concat(e)),r=Object(o.a)(a,2),c=r[0],i=r[1],s=Object(l.useState)(!1),d=Object(o.a)(s,2),m=d[0],p=d[1],f=Object(l.useState)(null),b=Object(o.a)(f,2),v=b[0],h=b[1],y=function(){var e=new URL(window.location.href),t=e.pathname,a=e.searchParams,r=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/";a.get("sid")&&(i(""),n.replace(t.replace(r,"/")))},g=!(!t.get("assetDid")||!c||t.get("sid")!==c);return Object(C.c)(x.BlockletEvents.purchaseChange,(function(t){t.did===e&&(h(t.session),["declined","confirmed","error"].includes(t.session.status)&&(p(!0),setTimeout(y,2e3)))})),Object(l.useEffect)((function(){v&&v.id!==c&&i(v.id)}),[v]),{hasCompleted:m,hasPurchased:g,session:v,setSession:h,doRedirect:y}}var P=n(337),S=n(105),L=n.n(S),B=n(320),_=n(939),N=n.n(_),D=n(867),T=n(868),U=n(884),z=n(920),A=n(1151),F=n.n(A),W=n(1152),I=n.n(W),M=n(148),V=n.n(M),q=n(152),H=n.n(q),K=n(53),J=n(29),Y=Object(B.a)((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}}}));var $=Object(l.forwardRef)((function(e){var t=e.meta,n=e.mode,a=e.onCancel,i=Object(y.useLocaleContext)(),u=i.t,d=i.locale,m=Object(J.c)(),p=m.info,v=m.api,g=Object(K.c)().api,k=Y(),j=Object(l.useState)("both"!==n?n:""),E=Object(o.a)(j,2),x=E[0],w=E[1],C=Object(l.useState)("both"!==n?2:1),P=Object(o.a)(C,2),S=P[0],B=P[1],_=R(t.did),A=_.session,W=_.setSession,M=_.hasCompleted,q=_.doRedirect,$=Object(O.x)(p),G=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/",Q=function(){var e=Object(c.a)(r.a.mark((function e(t){return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==x){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)}}(),X=function(){var e=Object(c.a)(r.a.mark((function e(){var n,a,o;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(x){e.next=2;break}return e.abrupt("return");case 2:if(2!==S){e.next=4;break}return e.abrupt("return");case 4:return n=JSON.stringify({blockletDid:t.did,registryUrl:p.blockletRegistry,action:x}),e.next=7,v.startSession({input:{data:n}});case 7:a=e.sent,o=a.session,W(o),B(2),"purchase"===x&&setTimeout(Object(c.a)(r.a.mark((function e(){var n,a,c,i,l,s;return r.a.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",o.id),n.searchParams.set("locale",d),a=encodeURIComponent(n.href),(c=new URL(window.location.href)).pathname=L()(G,"/api/did/verify-purchase/token"),c.searchParams.set("sid",o.id),c.searchParams.set("locale",d),c.searchParams.set("autoConnect","false"),e.next=12,g.get(c.href);case 12:i=e.sent,l=i.data,s=encodeURIComponent(l.url),window.location.href=L()(p.blockletRegistry,"/store/purchase/".concat(t.nftFactory,"?cb=").concat(a,"&nw=").concat(s));case 16:case"end":return e.stop()}}),e)}))),100);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Z=function(){q(),a(),B(1)},ee=[{action:"purchase",title:u("store.purchase.purchase.title"),description:u("store.purchase.purchase.description")},{action:"verify",title:u("store.purchase.verify.title"),description:u("store.purchase.verify.description")}];return 2===S&&"verify"===x&&A?s.a.createElement(V.a,{popup:!0,open:!0,className:k.dialogAuth,action:"verify-purchase",checkFn:g.get,checkTimeout:6e5,socketUrl:g.socketUrl,webWalletUrl:$,extraParams:{locale:d,sid:A.id},onSuccess:function(){setTimeout(a,2e3)},onClose:Z,showDownload:!1,locale:d,messages:{title:u("store.purchase.auth.title"),scan:u("store.purchase.auth.scan"),confirm:u("store.purchase.auth.confirm"),success:u("store.purchase.auth.success")}}):s.a.createElement(N.a,{title:u(x&&2===S?"store.purchase.".concat(x,".title"):"store.purchase.title"),disableBackdropClick:!0,disableEscapeKeyDown:!0,open:!0,fullWidth:!0,onClose:Z},1===S&&s.a.createElement("div",{style:{marginBottom:16}},s.a.createElement(D.a,{className:k.tabPanel},ee.map((function(e){return s.a.createElement(T.a,{button:!0,key:e.action,selected:x===e.action,onClick:function(){return Q(e.action)}},s.a.createElement(z.a,{className:k.iconRoot},"purchase"===e.action?s.a.createElement(F.a,{style:{color:"purchase"===x?H.a.primary.main:"#AAA",fontSize:32}}):s.a.createElement(I.a,{style:{color:"verify"===x?H.a.primary.main:"#AAA",fontSize:32}})),s.a.createElement(U.a,{primary:e.title,secondary:e.description}))}))),s.a.createElement(h.a,{rounded:!0,fullWidth:!0,disabled:!x,variant:"contained",color:"primary",style:{marginTop:16},onClick:X},u("common.next"))),2===S&&"purchase"===x&&s.a.createElement("div",{style:{textAlign:"center"}},!M&&s.a.createElement(f.a,null),s.a.createElement(b.a,{component:"p"},function(){if(A){if("confirmed"===A.status)return u("store.purchase.confirmed");if("declined"===A.status)return u("store.purchase.declined");if("error"===A.status)return A.message}return u("store.purchase.waiting")}())))})),G=["meta","lastVersion","buttonText","registryUrl"];function Q(e){var t=e.meta,n=e.lastVersion,a=e.buttonText,p=e.registryUrl,v=Object(i.a)(e,G),j=Object(m.c)().enqueueSnackbar,E=Object(y.useLocaleContext)().t,x=Object(u.k)(),w=Object(k.b)(),C=w.api,S=w.data.find((function(e){return e.meta.did===t.did}))||{},L=Object(l.useMemo)((function(){return!!S.status}),[S.status]),B=Object(l.useMemo)((function(){var e;return L?null===(e=S.meta)||void 0===e?void 0:e.version:null}),[L,S.meta]),_=!1===Object(d.isFreeBlocklet)(t),N=Object(l.useState)(!1),D=Object(o.a)(N,2),T=D[0],U=D[1],z=R(t.did).hasPurchased,A=Object(l.useState)(!1),F=Object(o.a)(A,2),W=F[0],I=F[1],M=Object(l.useMemo)((function(){return T?E(L?"blocklet.status.upgrading":_?"blocklet.status.purchasing":"blocklet.status.waiting"):Object(O.A)(S.status)?E("common.".concat(S.status)):""}),[T,S.status,L,E,_]),V=Object(l.useMemo)((function(){return!(!n||!B)&&!(!n||!Object(g.gt)(n,B))}),[n,B]),q=Object(l.useMemo)((function(){return V?a.upgrade:L?a.open:_?a.purchase:a.install}),[L,V,_,a]),H=Object(l.useMemo)((function(){return!(L&&!V)}),[L,V]),K=function(){var e=Object(c.a)(r.a.mark((function e(n){var a;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.preventDefault(),n.stopPropagation(),e.prev=2,U(!0),L||!_){e.next=7;break}return I(!0),e.abrupt("return");case 7:return a=L?"upgradeBlocklet":"installBlocklet",e.next=10,C[a]({input:{did:t.did,registryUrl:p}});case 10:e.next=16;break;case 12:e.prev=12,e.t0=e.catch(2),j(Object(O.g)(e.t0),{autoHideDuration:5e3,variant:"error"}),console.error("Blocklet installed failed",e.t0);case 16:return e.prev=16,U(!1),e.finish(16);case 19:case"end":return e.stop()}}),e,null,[[2,12,16,19]])})));return function(t){return e.apply(this,arguments)}}(),J=function(e){var n=e.disabled;return s.a.createElement(h.a,Object.assign({key:t.did,onClick:K,size:"small",disabled:Boolean(M||n),variant:"contained",color:"primary","data-cy":"install-blocklet",rounded:!0},v),M?s.a.createElement(s.a.Fragment,null,s.a.createElement(f.a,{size:[16,10],style:{marginRight:3}}),M):q)};J.defaultProps={disabled:!1};return s.a.createElement(s.a.Fragment,null,s.a.createElement("div",null,H?s.a.createElement(P.a,{permission:"mutate_blocklet"},(function(e){return s.a.createElement(J,{disabled:!e})})):s.a.createElement(h.a,{rounded:!0,className:"action-button",variant:"contained",color:"primary",size:"small",disabled:Boolean(M),"data-cy":"open-blocklet",onClick:function(e){var n;e.preventDefault(),e.stopPropagation(),x.push("/blocklets/".concat(t.did,"/").concat((n=S)&&(n.configs||[]).some((function(e){return e.required&&!e.value}))?"configuration":"overview"))}},M?s.a.createElement(s.a.Fragment,null,s.a.createElement(f.a,{size:[16,10],style:{marginRight:3}}),M):q),L&&_&&s.a.createElement(b.a,{component:"small",style:{fontSize:12,color:"#666",marginLeft:4}},E("blocklet.status.purchased"))),(z&&!L||W)&&s.a.createElement($,{meta:t,mode:z?"purchase":"both",onCancel:function(){U(!1),I(!1)}}))}Q.defaultProps={lastVersion:""}},1538:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return Re}));var a=n(32),r=n(365),c=n(57),o=n(11),i=n.n(o),l=n(19),s=n(13),u=n(0),d=n.n(u),m=n(14),p=n(356),f=n.n(p),b=n(972),v=n.n(b),h=n(59),y=n(1321),g=n.n(y),k=n(50),O=n.n(k),j=n(63),E=n(296),x=n(926),w=n(894),C=n(536),R=n.n(C),P=n(1324),S=n.n(P),L=n(1325),B=n.n(L),_=n(339),N=n.n(_),D=n(954),T=n.n(D),U=n(102),z=n.n(U),A=n(975),F=n.n(A),W=n(22),I=n(117),M=n(105),V=n.n(M),q=n(880),H=n(320),K=n(8),J=n(1322),Y=n.n(J),$=n(64),G=n(29),Q=n(1179),X=["blocklets"],Z=Object(H.a)((function(e){return{root:{backgroundColor:"transparent!important","& .MuiButton-root:not(.Mui-disabled)":{backgroundColor:Object(K.j)(e.palette.primary.main,.94),color:e.palette.primary.main,position:"relative","&::after":{content:'""',position:"absolute",top:"50%",left:"50%",width:"150%",height:"150%",transform:"translate(-50%, -50%)"}}}}}));function ee(e){var t,n=e.x,a=e.lastVersion,r=Object(u.useContext)(W.LocaleContext).t,c=Z(),o=Object(G.c)(),i=V()(o.prefix,"blocklet.png"),l=o.info.blockletRegistry;if(l.startsWith("http")&&n.logo)i=V()(l,Object($.k)(n.did,n.logo));else{var s=(window.env.apiPrefix||"/").replace(/^\/+/,"").replace(/\/+$/,"");s&&(s="/".concat(s)),i=V()(s,"/blocklet/logo/".concat(n.did))}return d.a.createElement(Y.a,{title:n.title||n.name,description:n.description,cover:i,addons:[{icon:"cube",value:"v".concat(n.version)},{icon:"clock",value:Object($.n)(n.lastPublishedAt)},{icon:"cloud-download",value:(null===(t=n.stats)||void 0===t?void 0:t.downloads)||0,pretty:!0}],button:d.a.createElement("div",{className:c.root},d.a.createElement(Q.a,{meta:n,lastVersion:a,buttonText:{purchase:r("common.purchase"),open:r("common.open"),install:r("common.install"),upgrade:r("common.upgrade")},registryUrl:l}))})}function te(e){var t=e.blocklets,n=Object(I.a)(e,X),a=t.reduce((function(e,t){var n=t.did,a=t.version;return e[n]=a,e}),{}),r=function(e){return!!e.currentTarget.contains(e.target)||(e.preventDefault(),!1)};return d.a.createElement("div",n,d.a.createElement(q.a,{container:!0,spacing:4},t.map((function(e){return d.a.createElement(q.a,{item:!0,lg:4,md:6,sm:6,xs:12,key:e.did,"data-blocklet-did":e.did},d.a.createElement(h.Link,{to:"/store/".concat(e.did),"data-cy":"blocklet-item",style:{color:"initial"},onClick:r},d.a.createElement(ee,{x:e,lastVersion:a[e.did]})))}))))}ee.defaultProps={lastVersion:""},te.defaultProps={};var ne=n(78),ae=n(939),re=n.n(ae),ce=n(867),oe=n(868),ie=n(884),le=n(920),se=n(921),ue=n(968),de=n.n(ue),me=n(915),pe=n(938),fe=n.n(pe),be=Object(H.a)((function(e){return{addMenuItemRoot:{justifyContent:"center",color:e.palette.primary.main,lineHeight:"3.2"}}}));function ve(e){var t=e.disabled,n=Object(G.c)(),a=n.api,r=n.info,c=Object(u.useState)(!1),o=Object(s.a)(c,2),m=o[0],p=o[1],f=Object(u.useState)(!0),b=Object(s.a)(f,2),v=b[0],h=b[1],y=Object(u.useState)(!1),g=Object(s.a)(y,2),k=g[0],E=g[1],x=Object(u.useState)(""),C=Object(s.a)(x,2),R=C[0],P=C[1],S=Object(u.useState)(""),L=Object(s.a)(S,2),B=L[0],_=L[1],D=Object(W.useLocaleContext)().t,T=be(),U=function(){var e=Object(l.a)(i.a.mark((function e(){var t,n,c;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:p(!0),e.prev=1,t=decodeURIComponent(R.trim()),n=!1,/^https?:\/\//.test(t)||(t="https://".concat(t),n=!0),e.prev=6,new URL(t),e.next=13;break;case 10:throw e.prev=10,e.t0=e.catch(6),new Error("Invalid Blocklet Store URL");case 13:if(!r.blockletRegistryList.some((function(e){return[R,t].includes(e.url)}))){e.next=15;break}throw new Error(D("store.blockletRegistry.haveSameRegistry"));case 15:return e.next=17,a.addBlockletRegistry({input:{url:n?"https://".concat(R):R}});case 17:window.location.reload(),e.next=24;break;case 20:e.prev=20,e.t1=e.catch(1),c="".concat(D("store.blockletRegistry.addFailed")," ").concat(Object($.g)(e.t1)),_(c);case 24:return e.prev=24,p(!1),e.finish(24);case 27:case"end":return e.stop()}}),e,null,[[1,20,24,27],[6,10]])})));return function(){return e.apply(this,arguments)}}();return d.a.createElement(d.a.Fragment,null,d.a.createElement(oe.a,{button:!0,disabled:t,className:T.addMenuItemRoot,onClick:function(){E(!0)}},d.a.createElement(fe.a,{fontSize:"small"}),d.a.createElement(j.a,{variant:"inherit"},D("store.blockletRegistry.addRegistry"))),d.a.createElement(re.a,{title:D("store.blockletRegistry.addRegistry"),fullWidth:!0,maxWidth:"md",open:k,onClose:function(){return E(!1)},PaperProps:{style:{minHeight:"auto"}},actions:d.a.createElement(d.a.Fragment,null,d.a.createElement(z.a,{onClick:function(e){e.stopPropagation(),E(!1)},color:"default",rounded:!0,size:"small"},D("common.cancel")),d.a.createElement(z.a,{onClick:function(e){e.stopPropagation(),U()},color:"primary",size:"small","data-cy":"install-blocklet-next-step",disabled:m||!R||v,variant:"contained",autoFocus:!0,rounded:!0},m&&d.a.createElement(O.a,{size:[16,10]}),D("common.confirm")))},d.a.createElement("div",{style:{paddingTop:12,overflowY:"hidden"}},d.a.createElement(me.a,{component:"div"},d.a.createElement(j.a,{component:"div"},d.a.createElement(w.a,{label:D("store.blockletRegistry.registryUrl"),autoComplete:"off",variant:"outlined",name:"url",fullWidth:!0,value:R,onChange:function(e){_(null);var t=!1;e.target.value.trim()||(t=!0),e.target.value.trim()||_(D("store.blockletRegistry.registryUrlEmpty")),P(e.target.value),h(t)},disabled:m,onKeyPress:function(e){"Enter"===e.key&&(e.preventDefault(),e.target.value.trim()?U():_(D("store.blockletRegistry.registryUrlEmpty")))}})))),!!B&&d.a.createElement(N.a,{type:"error",style:{width:"100%"}},B)))}ve.defaultProps={disabled:!1};var he=n(180),ye=n(1323),ge=n.n(ye),ke=n(988);function Oe(e){var t=Object(ne.c)().enqueueSnackbar,n=Object(G.c)().api,a=Object(W.useLocaleContext)().t,r=Object(u.useState)(!1),c=Object(s.a)(r,2),o=c[0],m=c[1],p=Object(u.useState)(null),f=Object(s.a)(p,2),b=f[0],v=f[1],h=e.blockletRegistry,y=function(){var e=Object(l.a)(i.a.mark((function e(){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,m(!0),e.next=4,n.deleteBlockletRegistry({input:{url:h.url}});case 4:window.location.reload(),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),t("Remove Blocklet Store Error: ".concat(Object($.g)(e.t0)),{autoHideDuration:2e3,variant:"error"});case 10:return e.prev=10,m(!1),v(null),e.finish(10);case 14:case"end":return e.stop()}}),e,null,[[0,7,10,14]])})));return function(){return e.apply(this,arguments)}}(),g={keyName:h.url,title:a("store.blockletRegistry.deleteRegistry"),description:a("store.blockletRegistry.deleteDesc",{name:"<b>".concat(h.url,"</b>")}),confirmPlaceholder:a("store.blockletRegistry.confirmDesc",{name:h.url}),confirm:a("common.delConfirm"),cancel:a("common.cancel"),onConfirm:y,onCancel:function(){m(!1),v(null)}};return d.a.createElement(d.a.Fragment,null,d.a.createElement(he.a,{disabled:o,onClick:function(e){e.stopPropagation(),v(g)}},d.a.createElement(ge.a,null)),b&&d.a.createElement(ke.a,{keyName:b.keyName,title:b.title,description:b.description,confirmPlaceholder:b.confirmPlaceholder,confirm:b.confirm,cancel:b.cancel,params:b.params,onConfirm:b.onConfirm,onCancel:b.onCancel}))}var je=n(337),Ee=Object(H.a)((function(){return{buttonText:{textTransform:"none !important"},iconRoot:{minWidth:24},menuName:{display:"flex",flexDirection:"column",marginRight:"100px","& span":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}}}));var xe,we=Object(u.forwardRef)((function(e,t){var n=Object(G.c)(),a=n.api,r=n.info,c=Object(W.useLocaleContext)().t,o=Object(ne.c)().enqueueSnackbar,m=Object(u.useState)(!1),p=Object(s.a)(m,2),f=p[0],b=p[1],v=Object(u.useState)(!1),h=Object(s.a)(v,2),y=h[0],g=h[1],k=d.a.useState(-1),E=Object(s.a)(k,2),x=E[0],w=E[1],C=Ee(),R=r.blockletRegistryList.findIndex((function(e){return e.selected})),P=function(){var e=Object(l.a)(i.a.mark((function e(t){var n;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,b(!0),w(t),n=r.blockletRegistryList[t],e.next=6,a.selectBlockletRegistry({input:{url:n.url}});case 6:window.location.reload(),e.next=14;break;case 9:e.prev=9,e.t0=e.catch(0),console.error(e.t0),b(!1),o("".concat(c("store.blockletRegistry.changeFailed")," ").concat(Object($.g)(e.t0)),{autoHideDuration:2e3,variant:"error"});case 14:case"end":return e.stop()}}),e,null,[[0,9]])})));return function(t){return e.apply(this,arguments)}}();return Object(u.useImperativeHandle)(t,(function(){return{setOpen:g}})),d.a.createElement(d.a.Fragment,null,d.a.createElement(je.a,{permission:"mutate_node"},(function(e){return d.a.createElement(z.a,{disabled:!e,classes:{text:C.buttonText},color:"secondary","data-cy":"store-toggle",onClick:function(){g(!0)},endIcon:d.a.createElement(de.a,null)},d.a.createElement(j.a,{color:"secondary"},r.blockletRegistryList[R].name))})),d.a.createElement(re.a,{title:c("store.blockletRegistry.switchRegistry"),disableBackdropClick:!0,disableEscapeKeyDown:!0,disablePortal:!1,fullWidth:!0,open:y,onClose:function(){return g(!1)}},d.a.createElement(ce.a,{className:C.tabPanel},r.blockletRegistryList.map((function(e,t){return d.a.createElement(oe.a,{button:!0,disabled:f,key:e.url,selected:R===t,"data-cy":"store-switch",onClick:function(){f||(t!==R?P(t):g(!1))}},d.a.createElement(le.a,{className:C.iconRoot},x===t&&f&&d.a.createElement(O.a,{size:[16,10]})),d.a.createElement(ie.a,null,d.a.createElement("div",{className:C.menuName},d.a.createElement(j.a,{component:"span",variant:"subtitle1",style:{fontWeight:"500"}},e.name),d.a.createElement(j.a,{className:"url",component:"span",variant:"inherit"},"".concat(e.url))),d.a.createElement(se.a,null,!e.protected&&d.a.createElement(Oe,{blockletRegistry:e}))))})),d.a.createElement(ve,{disabled:f}))))})),Ce=function(e){return"desc"===e.direction?d.a.createElement(S.a,null):d.a.createElement(B.a,null)};function Re(){var e=Object(G.c)(),t=e.api,n=e.info,a=Object(u.useContext)(W.LocaleContext).t,o=Object(u.useState)(""),m=Object(s.a)(o,2),p=m[0],b=m[1],y=v()("directions",{title:"asc",popularity:"desc"}),k=Object(s.a)(y,2),C=k[0],P=k[1],S=v()("popularity","popularity"),L=Object(s.a)(S,2),B=L[0],_=L[1],D=n.blockletRegistryList.find((function(e){return e.selected})),U=f()(Object(l.a)(i.a.mark((function e(){var n,a;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.listBlocklets({input:{registryUrl:D.url}});case 2:return n=e.sent,a=n.blocklets,e.abrupt("return",a);case 5:case"end":return e.stop()}}),e)})))),A=(U.value||[]).map((function(e){return e.searchContent=[e.title,e.name,e.description].filter(Boolean).join("").toLocaleLowerCase().replace(/\s/g,""),e})),I=Object(u.useMemo)((function(){var e=function(e){return e.title||e.name},t=function(e){return e.stats.downloads},n=p.toLowerCase().replace(/\s/g,"");return g()(A.filter((function(e){return e.searchContent.includes(n)})),"title"===B?[e,t]:[t,e],"title"===B?[C.title,C.popularity]:[C.popularity,C.title])}),[A,p,C,B]),M=function(e,t){var n="desc"===t?"asc":"desc";P(Object(c.a)(Object(c.a)({},C),{},Object(r.a)({},e,n))),_(e)},V=Object(u.useRef)(null),q=null;return q=I.length?d.a.createElement(te,{blocklets:I}):U.error?d.a.createElement(N.a,{type:"error",variant:"icon"},d.a.createElement("div",null,Object($.g)(U.error),d.a.createElement(h.Link,{style:{marginLeft:"12px"},to:"/settings/basic",onClick:function(e){V.current.setOpen(!0),e.preventDefault()}},"Change Registry",">>"))):U.loading?d.a.createElement(O.a,null):d.a.createElement(T.a,null,a("common.emptyData")),d.a.createElement(Pe,null,d.a.createElement(x.a,{separator:"\u203a","aria-label":"breadcrumb",className:"page-breadcrumb"},d.a.createElement(j.a,{color:"textPrimary"},a("common.store")),d.a.createElement(we,{ref:V})),d.a.createElement(E.a,{className:"store-header",display:"flex",justifyContent:"space-between",p:0,m:0},d.a.createElement(j.a,{component:"h2",variant:"h4",className:"page-header",color:"textPrimary"},a("store.headerDescription")),d.a.createElement(E.a,{mt:0,display:"flex",alignItems:"center"},d.a.createElement(w.a,{size:"small",placeholder:a("common.search"),style:{marginRight:"15px"},value:p,defaultValue:p,onChange:function(e){return b(e.target.value)},"data-cy":"search",InputProps:{startAdornment:d.a.createElement(R.a,{name:"search",size:16,style:{marginRight:"6px",marginBottom:"6px"}}),endAdornment:d.a.createElement("span",{onClick:function(){return b("")},style:{margin:"0 5px 6px 6px",cursor:"pointer"},"data-cy":"search-delete"},d.a.createElement(R.a,{name:"times",size:16}))}}),d.a.createElement(F.a,{size:"small",color:"primary","aria-label":"split button",style:{whiteSpace:"nowrap"}},d.a.createElement(z.a,{onClick:function(){return M("popularity",C.popularity)},endIcon:d.a.createElement(Ce,{direction:C.popularity}),className:"sort-button",color:"secondary",variant:"popularity"===B?"contained":"outlined"},a("store.popularSort")),d.a.createElement(z.a,{onClick:function(){return M("title",C.title)},endIcon:d.a.createElement(Ce,{direction:C.title}),className:"sort-button",color:"secondary",variant:"title"===B?"contained":"outlined"},a("store.nameSort"))))),q)}Ce.defaultProps={direction:"asc"};var Pe=m.default.main(xe||(xe=Object(a.a)(["\n .sort-button {\n border-radius: 0 !important;\n }\n\n @media (max-width: ","px) {\n .store-header {\n flex-direction: column;\n margin-bottom: 32px !important;\n }\n\n .page-header {\n margin-bottom: 16px !important;\n }\n }\n"])),(function(e){return e.theme.breakpoints.values.sm}))},931:function(e,t,n){"use strict";n.d(t,"a",(function(){return S}));var a=n(32),r=n(11),c=n.n(r),o=n(19),i=n(13),l=n(0),s=n.n(l),u=n(14),d=n(445),m=n(50),p=n.n(m),f=n(876),b=n(446),v=n(915),h=n(916),y=n(925),g=n(993),k=n.n(g),O=n(324),j=n(22),E=n(102),x=n.n(E),w=n(64),C=n(17);var R,P=function(){var e=Object(C.a)();return{minWidth:Object(O.a)(e.breakpoints.down("sm"))?300:e.breakpoints.values.sm}};function S(e){var t=e.title,n=e.description,a=e.showCancel,r=e.cancel,u=e.confirm,d=e.color,m=e.params,g=e.onCancel,E=e.onConfirm,C=Object(l.useState)(m),R=Object(i.a)(C,2),S=R[0],B=R[1],_=Object(l.useState)(!0),N=Object(i.a)(_,2),D=N[0],T=N[1],U=Object(l.useState)(!1),z=Object(i.a)(U,2),A=z[0],F=z[1],W=Object(l.useState)(""),I=Object(i.a)(W,2),M=I[0],V=I[1],q=Object(j.useLocaleContext)().t,H=k()(),K=function(){var e=Object(o.a)(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!==typeof t){e.next=17;break}return F(!0),e.prev=2,e.next=5,t(S);case 5:T(!1),e.next=12;break;case 8:e.prev=8,e.t0=e.catch(2),V(Object(w.g)(e.t0)),console.error(e.t0);case 12:return e.prev=12,F(!1),e.finish(12);case 15:e.next=18;break;case 17:T(!1);case 18:case"end":return e.stop()}}),e,null,[[2,8,12,15]])})));return function(t){return e.apply(this,arguments)}}(),J="function"===typeof t?t():t,Y="function"===typeof n?n(S,B,V):n,$=Object(O.a)(H.breakpoints.down("sm")),G=P().minWidth;return s.a.createElement(L,{onClick:function(e){e.stopPropagation()},fullScreen:$,open:D,style:{minWidth:G}},s.a.createElement(h.a,null,J),s.a.createElement(b.a,{style:{minWidth:G}},s.a.createElement(v.a,{component:"div"},Y),!!M&&s.a.createElement(y.a,{severity:"error",style:{width:"100%",marginTop:8}},M)),s.a.createElement(f.a,{className:"delete-actions",style:{padding:"8px 24px 24px"}},a&&s.a.createElement(x.a,{onClick:function(e){e.stopPropagation(),K(g)},color:"default","data-cy":"cancel-confirm-dialog",rounded:!0,size:"small"},r||q("common.cancel")),s.a.createElement(x.a,{onClick:function(e){e.stopPropagation(),K(E)},color:d,size:"small",disabled:S.__disableConfirm||A,variant:"contained","data-cy":"submit-confirm-dialog",autoFocus:!0,rounded:!0},A&&s.a.createElement(p.a,{size:[16,10]}),u)))}S.defaultProps={onCancel:function(){},showCancel:!0,cancel:"",confirm:"Confirm",color:"danger",params:{}};var L=Object(u.default)(d.a)(R||(R=Object(a.a)(["\n .delete-actions .Mui-disabled {\n color: rgba(0, 0, 0, 0.26) !important;\n box-shadow: none;\n background-color: rgba(0, 0, 0, 0.12) !important;\n }\n"])))},946:function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var a=n(117),r=n(0),c=n.n(r),o=n(977),i=n.n(o),l=n(22),s=["children"];function u(e){var t=e.children,n=Object(a.a)(e,s),o=Object(r.useContext)(l.LocaleContext).t;return c.a.createElement(i.a,Object.assign({tip:o("common.copyTip"),copiedTip:o("common.copiedTip")},n),t)}},955:function(e,t,n){var a=n(11),r=n(262),c=n(966),o=n(532),i=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=n.parallel,i=void 0!==o&&o,l=n.sync;if(l){if(t(e),e.children){var s,u=c(e.children);try{for(u.s();!(s=u.n()).done;){var d=s.value;t(d)}}catch(v){u.e(v)}finally{u.f()}}return null}if(!i)return r(a.mark((function n(){var r,o,i;return a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,t(e);case 2:if(!e.children){n.next=20;break}r=c(e.children),n.prev=4,r.s();case 6:if((o=r.n()).done){n.next=12;break}return i=o.value,n.next=10,t(i);case 10:n.next=6;break;case 12:n.next=17;break;case 14:n.prev=14,n.t0=n.catch(4),r.e(n.t0);case 17:return n.prev=17,r.f(),n.finish(17);case 20:return n.abrupt("return",null);case 21:case"end":return n.stop()}}),n,null,[[4,14,17,20]])})))();var m=[];if(m.push(t(e)),e.children){var p,f=c(e.children);try{for(f.s();!(p=f.n()).done;){var b=p.value;m.push(t(b))}}catch(v){f.e(v)}finally{f.f()}}return Promise.all(m)};e.exports={isFreeBlocklet:function(e){return!e.payment||(e.payment.price||[]).map((function(e){return e.value||0})).every((function(e){return 0===e}))},isDeletableBlocklet:function(e){if(!e)return!1;var t=e.environments.find((function(e){return"BLOCKLET_DELETABLE"===e.key}));return!t||"yes"===t.value},forEachBlocklet:i,isAuthServiceEnabled:function e(t){if((o(t,"meta.interfaces")||[]).some((function(e){return(o(e,"services")||[]).some((function(e){return"@abtnode/auth-service"===e.name}))})))return!0;var n,a=o(t,"children")||[],r=c(a);try{for(r.s();!(n=r.n()).done;){if(e(n.value))return!0}}catch(i){r.e(i)}finally{r.f()}return!1},getRequiredMissingConfigs:function(e){var t=[],n=e.configs||[];n.forEach((function(n){n.required&&!n.value&&t.push({did:e.meta.did,key:n.key})}));var a,r=c(e.children||[]);try{var o=function(){var e=a.value;(e.configs||[]).forEach((function(a){!a.required||a.value||n.some((function(e){return e.key===a.key&&e.value}))||t.push({did:e.meta.did,key:a.key})}))};for(r.s();!(a=r.n()).done;)o()}catch(i){r.e(i)}finally{r.f()}return t},wipeSensitiveData:function(e){return e?(i(e,(function(t){(t.configs||[]).forEach((function(e){e.secure&&(e.value=e.value?"__encrypted__":"")})),(t.environments||[]).forEach((function(e){["BLOCKLET_APP_SK"].includes(e.key)&&(e.value="__encrypted__")})),delete e.configObj,delete e.environmentObj}),{sync:!0}),e):e}}},988:function(e,t,n){"use strict";n.d(t,"a",(function(){return m}));var a=n(57),r=n(0),c=n.n(r),o=n(63),i=n(894),l=n(925),s=n(22),u=n(946),d=n(931);function m(e){var t=e.title,n=e.description,r=e.confirmPlaceholder,m=e.cancel,p=e.confirm,f=e.params,b=e.onCancel,v=e.onConfirm,h=e.keyName,y=Object(s.useLocaleContext)().t,g={title:function(){return c.a.createElement("div",null,t," (".concat(h,")"))},description:function(e,t){return c.a.createElement("div",null,c.a.createElement(l.a,{severity:"warning",style:{width:"100%"}},y("common.notice")),c.a.createElement("div",{style:{marginTop:24,marginBottom:24},dangerouslySetInnerHTML:{__html:n}}),c.a.createElement("div",{style:{marginBottom:24}},y("common.click"),"\uff1a",c.a.createElement(u.a,{"data-cy":"click-copy"},h)),c.a.createElement(o.a,{component:"div"},c.a.createElement(i.a,{label:r,autoComplete:"off","data-cy":"delete-confirm-input",variant:"outlined",fullWidth:!0,autoFocus:!0,value:e.inputVal,onChange:function(n){var r;r=Object(a.a)(Object(a.a)({},e),{},{inputVal:n.target.value,__disableConfirm:h!==n.target.value}),t(Object(a.a)(Object(a.a)({},r),{},{__disableConfirm:r.__disableConfirm}))}})))},confirm:p,cancel:m,onConfirm:v,onCancel:b,params:Object(a.a)({inputVal:"",__disableConfirm:!0},f)};return c.a.createElement(d.a,{title:g.title,description:g.description,confirm:g.confirm,cancel:g.cancel,params:g.params,onConfirm:g.onConfirm,onCancel:g.onCancel})}m.defaultProps={onCancel:function(){},cancel:"",confirm:"Confirm",params:{}}}}]);
2
+ //# sourceMappingURL=22.0f55f82b.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["hooks/blocklet-purchase.js","components/blocklet/purchase.js","components/blocklet/install.js","components/blocklet/list.js","components/registry/add.js","components/registry/delete.js","components/registry/switch.js","pages/store/index.js","hooks/mobile-width.js","components/confirm.js","components/click-to-copy.js","../../../blocklet/meta/lib/util.js","components/delete-confirm.js"],"names":["useBlockletPurchase","did","query","useQuery","history","useHistory","useLocalStorage","sessionId","setSessionId","useState","hasCompleted","setCompleted","session","setSession","doRedirect","URL","window","location","href","pathname","searchParams","prefix","env","apiPrefix","get","replace","hasPurchased","useSubscription","BlockletEvents","purchaseChange","e","includes","status","setTimeout","useEffect","id","useStyles","makeStyles","dialogAuth","padding","textAlign","marginBottom","iconRoot","minWidth","forwardRef","meta","mode","onCancel","useLocaleContext","t","locale","useNodeContext","info","gql","api","useSessionContext","classes","action","setAction","step","setStep","webWalletUrl","getWebWalletUrl","onSelect","act","a","onNext","payload","JSON","stringify","blockletDid","registryUrl","blockletRegistry","startSession","input","data","initial","cb","delete","set","callback","encodeURIComponent","nw","joinURL","nextWorkflow","url","nftFactory","onClose","options","title","description","popup","open","className","checkFn","checkTimeout","socketUrl","extraParams","sid","onSuccess","showDownload","messages","scan","confirm","success","disableBackdropClick","disableEscapeKeyDown","fullWidth","style","List","tabPanel","map","x","ListItem","button","key","selected","onClick","ListItemIcon","color","colors","primary","main","fontSize","ListItemText","secondary","rounded","disabled","variant","marginTop","Typography","component","message","getMessage","InstallOrUpgrade","lastVersion","buttonText","rest","enqueueSnackbar","useSnackbar","useBlockletContext","state","find","d","installed","useMemo","installedVersion","version","requirePurchase","isFreeBlocklet","loading","setLoading","showPurchaseDialog","setShowPurchaseDialog","loadingText","isInstalling","needUpgrade","gt","btnTxt","upgrade","purchase","install","showInstallBtn","onAction","preventDefault","stopPropagation","fn","formatError","autoHideDuration","console","error","InstallButton","size","Boolean","data-cy","marginRight","defaultProps","permission","hasPermission","push","configs","some","required","value","marginLeft","theme","root","backgroundColor","lighten","palette","position","content","top","left","width","height","transform","BlockletItem","useContext","LocaleContext","node","logoUrl","startsWith","logo","formatRegistryLogoPath","name","cover","addons","icon","formatTimeFromNow","lastPublishedAt","stats","downloads","pretty","BlockletList","blocklets","versions","reduce","totalVal","onClickLink","currentTarget","contains","target","Grid","container","spacing","item","lg","md","sm","xs","data-blocklet-did","to","addMenuItemRoot","justifyContent","lineHeight","AddBlockletRegistry","disable","setDisable","setOpen","setUrl","setError","onConfirm","decoded","decodeURIComponent","trim","addProtocol","test","Error","blockletRegistryList","addBlockletRegistry","reload","errMsg","maxWidth","PaperProps","minHeight","actions","autoFocus","paddingTop","overflowY","DialogContentText","TextField","label","autoComplete","onChange","isDisabled","onKeyPress","type","DeleteBlockletRegistry","props","confirmSetting","setConfirmSetting","deleteBlockletRegistry","setting","keyName","confirmPlaceholder","cancel","IconButton","params","textTransform","menuName","display","flexDirection","overflow","textOverflow","whiteSpace","ref","React","menuIndex","setMenuIndex","selectedIndex","findIndex","index","selectBlockletRegistry","useImperativeHandle","text","endIcon","disablePortal","fontWeight","ListItemSecondaryAction","protected","SortIcon","direction","BlockletStore","keyword","setKeyword","popularity","directions","setDirections","mainFactor","setMainFactor","currentRegistry","useAsyncRetry","listBlocklets","rawList","searchContent","filter","join","toLocaleLowerCase","filterList","sortByName","sortByPopularity","word","toLowerCase","orderBy","handleSort","property","sort","newSort","switchEl","useRef","length","current","Main","Breadcrumbs","separator","aria-label","Box","p","m","mt","alignItems","placeholder","defaultValue","InputProps","startAdornment","endAdornment","margin","cursor","styled","breakpoints","values","useMobileWidth","useTheme","useMediaQuery","down","ConfirmDialog","showCancel","initialParams","setParams","changeLocale","onCallback","isBreakpointsDownSm","StyledDialog","fullScreen","DialogTitle","DialogContent","Alert","severity","DialogActions","__disableConfirm","Dialog","ClickToCopy","children","tip","copiedTip","require","forEachBlocklet","blocklet","parallel","sync","child","tasks","Promise","all","module","exports","payment","price","every","isDeletableBlocklet","config","environments","isAuthServiceEnabled","s","getRequiredMissingConfigs","missingConfigs","forEach","y","wipeSensitiveData","secure","configObj","environmentObj","CancelConfirm","dangerouslySetInnerHTML","__html","inputVal"],"mappings":"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","file":"static/js/22.0f55f82b.chunk.js","sourcesContent":["import { useState, useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport useLocalStorage from 'react-use/lib/useLocalStorage';\n\nimport { BlockletEvents } from '@blocklet/meta/lib/constants';\n\nimport useQuery from './query';\nimport { useSubscription } from '../libs/ws';\n\nexport default function useBlockletPurchase(did) {\n const query = useQuery();\n const history = useHistory();\n const [sessionId, setSessionId] = useLocalStorage(`sid:blocklet:purchase:${did}`);\n const [hasCompleted, setCompleted] = useState(false);\n const [session, setSession] = useState(null);\n\n const doRedirect = () => {\n const { pathname, searchParams } = new URL(window.location.href);\n const prefix = window.env && window.env.apiPrefix ? window.env.apiPrefix : '/';\n if (searchParams.get('sid')) {\n setSessionId('');\n history.replace(pathname.replace(prefix, '/'));\n }\n };\n\n const hasPurchased = !!(query.get('assetDid') && sessionId && query.get('sid') === sessionId);\n\n useSubscription(BlockletEvents.purchaseChange, e => {\n if (e.did === did) {\n setSession(e.session);\n\n if (['declined', 'confirmed', 'error'].includes(e.session.status)) {\n setCompleted(true);\n setTimeout(doRedirect, 2000);\n }\n }\n });\n\n useEffect(() => {\n if (session && session.id !== sessionId) {\n setSessionId(session.id);\n }\n }, [session]); // eslint-disable-line\n\n return {\n hasCompleted,\n hasPurchased,\n session,\n setSession,\n doRedirect,\n };\n}\n","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { forwardRef, useState } from 'react';\nimport joinURL from 'url-join';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Dialog from '@arcblock/ux/lib/Dialog';\nimport Typography from '@material-ui/core/Typography';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\n\nimport IconPurchase from '@material-ui/icons/ShoppingCart';\nimport IconVerify from '@material-ui/icons/VerifiedUser';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\nimport DidConnect from '@arcblock/did-connect/lib/Connect';\nimport colors from '@arcblock/ux/lib/Colors';\n\nimport { useSessionContext } from '../../contexts/session';\nimport { useNodeContext } from '../../contexts/node';\nimport { getWebWalletUrl } from '../../libs/util';\nimport useBlockletPurchase from '../../hooks/blocklet-purchase';\n\nconst useStyles = makeStyles(() => ({\n dialogAuth: {\n padding: '0 0 24px !important',\n '& .auth-title': {\n textAlign: 'center !important',\n marginBottom: '4px !important',\n },\n '& .auth-tip--scan': {\n textAlign: 'center !important',\n },\n },\n iconRoot: {\n minWidth: 48,\n },\n}));\n\nfunction BlockletPurchase({ meta, mode, onCancel }) {\n const { t, locale } = useLocaleContext();\n const { info, api: gql } = useNodeContext();\n const { api } = useSessionContext();\n const classes = useStyles();\n const [action, setAction] = useState(mode !== 'both' ? mode : '');\n const [step, setStep] = useState(mode !== 'both' ? 2 : 1);\n const { session, setSession, hasCompleted, doRedirect } = useBlockletPurchase(meta.did);\n\n const webWalletUrl = getWebWalletUrl(info);\n const prefix = window.env && window.env.apiPrefix ? window.env.apiPrefix : '/';\n\n const onSelect = async act => {\n if (act === action) {\n return;\n }\n\n setAction(act);\n };\n\n const onNext = async () => {\n if (!action) {\n return;\n }\n if (step === 2) {\n return;\n }\n\n // Start a new session and persist session id to local storage\n const payload = JSON.stringify({ blockletDid: meta.did, registryUrl: info.blockletRegistry, action });\n const { session: initial } = await gql.startSession({ input: { data: payload } });\n setSession(initial);\n\n setStep(2);\n\n if (action === 'purchase') {\n setTimeout(async () => {\n const cb = new URL(window.location.href);\n cb.searchParams.delete('assetDid');\n cb.searchParams.set('sid', initial.id);\n cb.searchParams.set('locale', locale);\n const callback = encodeURIComponent(cb.href);\n\n const nw = new URL(window.location.href);\n nw.pathname = joinURL(prefix, '/api/did/verify-purchase/token');\n nw.searchParams.set('sid', initial.id);\n nw.searchParams.set('locale', locale);\n nw.searchParams.set('autoConnect', 'false');\n const { data } = await api.get(nw.href);\n const nextWorkflow = encodeURIComponent(data.url);\n\n window.location.href = joinURL(\n info.blockletRegistry,\n `/store/purchase/${meta.nftFactory}?cb=${callback}&nw=${nextWorkflow}`\n );\n }, 100);\n }\n };\n\n const onClose = () => {\n doRedirect();\n onCancel();\n setStep(1);\n };\n\n const onVerifySuccess = () => {\n setTimeout(onCancel, 2000);\n };\n\n const options = [\n {\n action: 'purchase',\n title: t('store.purchase.purchase.title'),\n description: t('store.purchase.purchase.description'),\n },\n {\n action: 'verify',\n title: t('store.purchase.verify.title'),\n description: t('store.purchase.verify.description'),\n },\n ];\n\n const getMessage = () => {\n if (session) {\n if (session.status === 'confirmed') {\n return t('store.purchase.confirmed');\n }\n if (session.status === 'declined') {\n return t('store.purchase.declined');\n }\n if (session.status === 'error') {\n return session.message;\n }\n }\n\n return t('store.purchase.waiting');\n };\n\n if (step === 2 && action === 'verify' && session) {\n return (\n <DidConnect\n popup\n open\n className={classes.dialogAuth}\n action=\"verify-purchase\"\n checkFn={api.get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n webWalletUrl={webWalletUrl}\n extraParams={{ locale, sid: session.id }}\n onSuccess={onVerifySuccess}\n onClose={onClose}\n showDownload={false}\n locale={locale}\n messages={{\n title: t('store.purchase.auth.title'),\n scan: t('store.purchase.auth.scan'),\n confirm: t('store.purchase.auth.confirm'),\n success: t('store.purchase.auth.success'),\n }}\n />\n );\n }\n\n return (\n <Dialog\n title={action && step === 2 ? t(`store.purchase.${action}.title`) : t('store.purchase.title')}\n disableBackdropClick\n disableEscapeKeyDown\n open\n fullWidth\n onClose={onClose}>\n {step === 1 && (\n <div style={{ marginBottom: 16 }}>\n <List className={classes.tabPanel}>\n {options.map(x => (\n <ListItem button key={x.action} selected={action === x.action} onClick={() => onSelect(x.action)}>\n <ListItemIcon className={classes.iconRoot}>\n {x.action === 'purchase' ? (\n <IconPurchase\n style={{ color: action === 'purchase' ? colors.primary.main : '#AAA', fontSize: 32 }}\n />\n ) : (\n <IconVerify style={{ color: action === 'verify' ? colors.primary.main : '#AAA', fontSize: 32 }} />\n )}\n </ListItemIcon>\n <ListItemText primary={x.title} secondary={x.description} />\n </ListItem>\n ))}\n </List>\n <Button\n rounded\n fullWidth\n disabled={!action}\n variant=\"contained\"\n color=\"primary\"\n style={{ marginTop: 16 }}\n onClick={onNext}>\n {t('common.next')}\n </Button>\n </div>\n )}\n {step === 2 && action === 'purchase' && (\n <div style={{ textAlign: 'center' }}>\n {!hasCompleted && <Spinner />}\n <Typography component=\"p\">{getMessage()}</Typography>\n </div>\n )}\n </Dialog>\n );\n}\n\nBlockletPurchase.propTypes = {\n meta: PropTypes.object.isRequired,\n mode: PropTypes.oneOf(['both', 'verify']).isRequired,\n onCancel: PropTypes.func.isRequired,\n};\n\nexport default forwardRef(BlockletPurchase);\n","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useHistory } from 'react-router-dom';\nimport { isFreeBlocklet } from '@blocklet/meta/lib/util';\nimport { useSnackbar } from 'notistack';\n\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@arcblock/ux/lib/Button';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport { gt } from 'semver';\n\nimport { useBlockletContext } from '../../contexts/blocklets';\nimport { isInstalling, formatError } from '../../libs/util';\nimport useBlockletPurchase from '../../hooks/blocklet-purchase';\nimport Permission from '../permission';\nimport PurchaseDialog from './purchase';\n\nexport default function InstallOrUpgrade({ meta, lastVersion, buttonText, registryUrl, ...rest }) {\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useLocaleContext();\n const history = useHistory();\n\n const { api, data: installedBlocklets } = useBlockletContext();\n const state = installedBlocklets.find(d => d.meta.did === meta.did) || {};\n\n const installed = useMemo(() => !!state.status, [state.status]);\n const installedVersion = useMemo(() => (installed ? state.meta?.version : null), [installed, state.meta]);\n const requirePurchase = isFreeBlocklet(meta) === false;\n\n const [loading, setLoading] = useState(false);\n const { hasPurchased } = useBlockletPurchase(meta.did);\n const [showPurchaseDialog, setShowPurchaseDialog] = useState(false);\n\n const loadingText = useMemo(() => {\n if (loading) {\n if (installed) {\n return t('blocklet.status.upgrading');\n }\n if (requirePurchase) {\n return t('blocklet.status.purchasing');\n }\n return t('blocklet.status.waiting');\n }\n if (isInstalling(state.status)) return t(`common.${state.status}`);\n return '';\n }, [loading, state.status, installed, t, requirePurchase]);\n\n const needUpgrade = useMemo(() => {\n if (!lastVersion || !installedVersion) {\n return false;\n }\n\n if (lastVersion) {\n if (gt(lastVersion, installedVersion)) {\n return true;\n }\n }\n\n return false;\n }, [lastVersion, installedVersion]);\n\n const btnTxt = useMemo(() => {\n if (needUpgrade) return buttonText.upgrade;\n if (installed) return buttonText.open;\n if (requirePurchase) return buttonText.purchase;\n return buttonText.install;\n }, [installed, needUpgrade, requirePurchase, buttonText]);\n\n // only installed without upgrade show open button\n const showInstallBtn = useMemo(() => !(installed && !needUpgrade), [installed, needUpgrade]);\n\n const onAction = async e => {\n e.preventDefault();\n e.stopPropagation();\n\n try {\n setLoading(true);\n // The purchase dialog should only show on install\n if (!installed && requirePurchase) {\n setShowPurchaseDialog(true);\n return;\n }\n\n const fn = !installed ? 'installBlocklet' : 'upgradeBlocklet';\n await api[fn]({ input: { did: meta.did, registryUrl } });\n } catch (err) {\n enqueueSnackbar(formatError(err), { autoHideDuration: 5000, variant: 'error' });\n console.error('Blocklet installed failed', err);\n } finally {\n setLoading(false);\n }\n };\n\n const InstallButton = ({ disabled }) => (\n <Button\n key={meta.did}\n onClick={onAction}\n size=\"small\"\n disabled={Boolean(loadingText || disabled)}\n variant=\"contained\"\n color=\"primary\"\n data-cy=\"install-blocklet\"\n rounded\n {...rest}>\n {loadingText ? (\n <>\n <Spinner size={[16, 10]} style={{ marginRight: 3 }} />\n {loadingText}\n </>\n ) : (\n btnTxt\n )}\n </Button>\n );\n\n InstallButton.propTypes = {\n disabled: PropTypes.bool,\n };\n\n InstallButton.defaultProps = {\n disabled: false,\n };\n\n const getTab = d => {\n if (d) {\n return (d.configs || []).some(x => x.required && !x.value) ? 'configuration' : 'overview';\n }\n\n return 'overview';\n };\n\n const onGoDetail = e => {\n e.preventDefault();\n e.stopPropagation();\n history.push(`/blocklets/${meta.did}/${getTab(state)}`);\n };\n\n const onCancelPurchase = () => {\n setLoading(false);\n setShowPurchaseDialog(false);\n };\n\n return (\n <>\n <div>\n {showInstallBtn ? (\n <Permission permission=\"mutate_blocklet\">\n {hasPermission => <InstallButton disabled={!hasPermission} />}\n </Permission>\n ) : (\n <Button\n rounded\n className=\"action-button\"\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n disabled={Boolean(loadingText)}\n data-cy=\"open-blocklet\"\n onClick={onGoDetail}>\n {loadingText ? (\n <>\n <Spinner size={[16, 10]} style={{ marginRight: 3 }} />\n {loadingText}\n </>\n ) : (\n btnTxt\n )}\n </Button>\n )}\n\n {installed && requirePurchase && (\n <Typography component=\"small\" style={{ fontSize: 12, color: '#666', marginLeft: 4 }}>\n {t('blocklet.status.purchased')}\n </Typography>\n )}\n </div>\n {((hasPurchased && !installed) || showPurchaseDialog) && (\n <PurchaseDialog meta={meta} mode={hasPurchased ? 'purchase' : 'both'} onCancel={onCancelPurchase} />\n )}\n </>\n );\n}\n\nInstallOrUpgrade.propTypes = {\n meta: PropTypes.object.isRequired,\n lastVersion: PropTypes.string,\n buttonText: PropTypes.shape({\n purchase: PropTypes.string.isRequired,\n open: PropTypes.string.isRequired,\n install: PropTypes.string.isRequired,\n upgrade: PropTypes.string.isRequired,\n }).isRequired,\n registryUrl: PropTypes.string.isRequired,\n};\n\nInstallOrUpgrade.defaultProps = {\n lastVersion: '',\n};\n","/* eslint-disable react/jsx-wrap-multilines */\nimport React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport joinURL from 'url-join';\nimport Grid from '@material-ui/core/Grid';\nimport { Link } from 'react-router-dom';\nimport { makeStyles, lighten } from '@material-ui/core/styles';\n\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Blocklet from '@arcblock/ux/lib/Blocklet';\n\nimport { formatRegistryLogoPath, formatTimeFromNow } from '../../libs/util';\nimport { useNodeContext } from '../../contexts/node';\nimport InstallOrUpgrade from './install';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n backgroundColor: 'transparent!important',\n '& .MuiButton-root:not(.Mui-disabled)': {\n backgroundColor: lighten(theme.palette.primary.main, 1 - 0.06),\n color: theme.palette.primary.main,\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: '150%',\n height: '150%',\n transform: 'translate(-50%, -50%)',\n },\n },\n },\n}));\n\nfunction BlockletItem({ x, lastVersion }) {\n const { t } = useContext(LocaleContext);\n const classes = useStyles();\n const node = useNodeContext();\n let logoUrl = joinURL(node.prefix, 'blocklet.png');\n\n const { blockletRegistry } = node.info;\n if (blockletRegistry.startsWith('http') && x.logo) {\n logoUrl = joinURL(blockletRegistry, formatRegistryLogoPath(x.did, x.logo));\n } else {\n const prefix = window.env.apiPrefix || '/';\n let apiPrefix = prefix.replace(/^\\/+/, '').replace(/\\/+$/, '');\n if (apiPrefix) {\n apiPrefix = `/${apiPrefix}`;\n }\n logoUrl = joinURL(apiPrefix, `/blocklet/logo/${x.did}`);\n }\n\n return (\n <Blocklet\n title={x.title || x.name}\n description={x.description}\n cover={logoUrl}\n addons={[\n { icon: 'cube', value: `v${x.version}` },\n { icon: 'clock', value: formatTimeFromNow(x.lastPublishedAt) },\n { icon: 'cloud-download', value: x.stats?.downloads || 0, pretty: true },\n ]}\n button={\n <div className={classes.root}>\n <InstallOrUpgrade\n meta={x}\n lastVersion={lastVersion}\n buttonText={{\n purchase: t('common.purchase'),\n open: t('common.open'),\n install: t('common.install'),\n upgrade: t('common.upgrade'),\n }}\n registryUrl={blockletRegistry}\n />\n </div>\n }\n />\n );\n}\n\nBlockletItem.propTypes = {\n x: PropTypes.object.isRequired,\n lastVersion: PropTypes.string,\n};\nBlockletItem.defaultProps = {\n lastVersion: '',\n};\n\nexport default function BlockletList({ blocklets, ...rest }) {\n const versions = blocklets.reduce((totalVal, { did, version }) => {\n totalVal[did] = version;\n return totalVal;\n }, {});\n\n const onClickLink = e => {\n if (!e.currentTarget.contains(e.target)) {\n e.preventDefault();\n return false;\n }\n return true;\n };\n\n return (\n <div {...rest}>\n <Grid container spacing={4}>\n {blocklets.map(x => (\n <Grid item lg={4} md={6} sm={6} xs={12} key={x.did} data-blocklet-did={x.did}>\n <Link to={`/store/${x.did}`} data-cy=\"blocklet-item\" style={{ color: 'initial' }} onClick={onClickLink}>\n <BlockletItem x={x} lastVersion={versions[x.did]} />\n </Link>\n </Grid>\n ))}\n </Grid>\n </div>\n );\n}\n\nBlockletList.propTypes = {\n blocklets: PropTypes.array.isRequired,\n};\n\nBlockletList.defaultProps = {};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Dialog from '@arcblock/ux/lib/Dialog';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport ListItem from '@material-ui/core/ListItem';\nimport AddIcon from '@material-ui/icons/Add';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\nimport Alert from '@arcblock/ux/lib/Alert';\n\nimport { useNodeContext } from '../../contexts/node';\nimport { formatError } from '../../libs/util';\n\nconst useStyles = makeStyles(theme => ({\n addMenuItemRoot: {\n justifyContent: 'center',\n color: theme.palette.primary.main,\n lineHeight: '3.2',\n },\n}));\n\nexport default function AddBlockletRegistry({ disabled }) {\n const { api, info } = useNodeContext();\n const [loading, setLoading] = useState(false);\n const [disable, setDisable] = useState(true);\n const [open, setOpen] = useState(false);\n const [url, setUrl] = useState('');\n const [error, setError] = useState('');\n const { t } = useLocaleContext();\n const classes = useStyles();\n\n const onConfirm = async () => {\n setLoading(true);\n try {\n let decoded = decodeURIComponent(url.trim());\n const regex = /^https?:\\/\\//;\n let addProtocol = false;\n if (!regex.test(decoded)) {\n decoded = `https://${decoded}`;\n addProtocol = true;\n }\n\n // validate\n try {\n new URL(decoded); // eslint-disable-line no-new\n } catch {\n throw new Error('Invalid Blocklet Store URL');\n }\n\n if (info.blockletRegistryList.some(item => [url, decoded].includes(item.url))) {\n throw new Error(t('store.blockletRegistry.haveSameRegistry'));\n }\n\n await api.addBlockletRegistry({ input: { url: addProtocol ? `https://${url}` : url } });\n window.location.reload();\n } catch (err) {\n const errMsg = `${t('store.blockletRegistry.addFailed')} ${formatError(err)}`;\n setError(errMsg);\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <>\n <ListItem\n button\n disabled={disabled}\n className={classes.addMenuItemRoot}\n onClick={() => {\n setOpen(true);\n }}>\n <AddIcon fontSize=\"small\" />\n <Typography variant=\"inherit\">{t('store.blockletRegistry.addRegistry')}</Typography>\n </ListItem>\n <Dialog\n title={t('store.blockletRegistry.addRegistry')}\n fullWidth\n maxWidth=\"md\"\n open={open}\n onClose={() => setOpen(false)}\n PaperProps={{ style: { minHeight: 'auto' } }}\n actions={\n <>\n <Button\n onClick={e => {\n e.stopPropagation();\n setOpen(false);\n }}\n color=\"default\"\n rounded\n size=\"small\">\n {t('common.cancel')}\n </Button>\n <Button\n onClick={e => {\n e.stopPropagation();\n onConfirm();\n }}\n color=\"primary\"\n size=\"small\"\n data-cy=\"install-blocklet-next-step\"\n disabled={loading || !url || disable}\n variant=\"contained\"\n autoFocus\n rounded>\n {loading && <Spinner size={[16, 10]} />}\n {t('common.confirm')}\n </Button>\n </>\n }>\n <div style={{ paddingTop: 12, overflowY: 'hidden' }}>\n <DialogContentText component=\"div\">\n <Typography component=\"div\">\n <TextField\n label={t('store.blockletRegistry.registryUrl')}\n autoComplete=\"off\"\n variant=\"outlined\"\n name=\"url\"\n fullWidth\n value={url}\n onChange={e => {\n setError(null);\n let isDisabled = false;\n if (!e.target.value.trim()) {\n isDisabled = true;\n }\n if (!e.target.value.trim()) {\n setError(t('store.blockletRegistry.registryUrlEmpty'));\n }\n setUrl(e.target.value);\n setDisable(isDisabled);\n }}\n disabled={loading}\n onKeyPress={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n if (!e.target.value.trim()) {\n setError(t('store.blockletRegistry.registryUrlEmpty'));\n } else {\n onConfirm();\n }\n }\n }}\n />\n </Typography>\n </DialogContentText>\n </div>\n {!!error && (\n <Alert type=\"error\" style={{ width: '100%' }}>\n {error}\n </Alert>\n )}\n </Dialog>\n </>\n );\n}\n\nAddBlockletRegistry.propTypes = {\n disabled: PropTypes.bool,\n};\n\nAddBlockletRegistry.defaultProps = {\n disabled: false,\n};\n","/* eslint-disable react/prop-types */\nimport React, { useState } from 'react';\nimport { useSnackbar } from 'notistack';\nimport IconButton from '@material-ui/core/IconButton';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\nimport DelConfirm from '../delete-confirm';\nimport { useNodeContext } from '../../contexts/node';\nimport { formatError } from '../../libs/util';\n\nexport default function DeleteBlockletRegistry(props) {\n const { enqueueSnackbar } = useSnackbar();\n const { api } = useNodeContext();\n const { t } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [confirmSetting, setConfirmSetting] = useState(null);\n const { blockletRegistry } = props;\n\n const onCancel = () => {\n setLoading(false);\n setConfirmSetting(null);\n };\n\n const onConfirm = async () => {\n try {\n setLoading(true);\n await api.deleteBlockletRegistry({ input: { url: blockletRegistry.url } });\n window.location.reload();\n } catch (err) {\n enqueueSnackbar(`Remove Blocklet Store Error: ${formatError(err)}`, {\n autoHideDuration: 2000,\n variant: 'error',\n });\n } finally {\n setLoading(false);\n setConfirmSetting(null);\n }\n };\n\n const setting = {\n keyName: blockletRegistry.url,\n title: t('store.blockletRegistry.deleteRegistry'),\n description: t('store.blockletRegistry.deleteDesc', { name: `<b>${blockletRegistry.url}</b>` }),\n confirmPlaceholder: t('store.blockletRegistry.confirmDesc', { name: blockletRegistry.url }),\n confirm: t('common.delConfirm'),\n cancel: t('common.cancel'),\n onConfirm,\n onCancel,\n };\n\n const onMenuItemClick = e => {\n e.stopPropagation();\n setConfirmSetting(setting);\n };\n\n return (\n <>\n <IconButton disabled={loading} onClick={onMenuItemClick}>\n <DeleteOutlineIcon />\n </IconButton>\n {confirmSetting && (\n <DelConfirm\n keyName={confirmSetting.keyName}\n title={confirmSetting.title}\n description={confirmSetting.description}\n confirmPlaceholder={confirmSetting.confirmPlaceholder}\n confirm={confirmSetting.confirm}\n cancel={confirmSetting.cancel}\n params={confirmSetting.params}\n onConfirm={confirmSetting.onConfirm}\n onCancel={confirmSetting.onCancel}\n />\n )}\n </>\n );\n}\n","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { forwardRef, useImperativeHandle, useState } from 'react';\nimport { useSnackbar } from 'notistack';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Dialog from '@arcblock/ux/lib/Dialog';\nimport Typography from '@material-ui/core/Typography';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\nimport AddBlockletRegistry from './add';\nimport DeleteBlockletRegistry from './delete';\nimport Permission from '../permission';\n\nimport { useNodeContext } from '../../contexts/node';\nimport { formatError } from '../../libs/util';\n\nconst useStyles = makeStyles(() => ({\n buttonText: {\n textTransform: 'none !important',\n },\n iconRoot: {\n minWidth: 24,\n },\n menuName: {\n display: 'flex',\n flexDirection: 'column',\n marginRight: '100px',\n '& span': { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' },\n },\n}));\n\nfunction SwitchBlockletRegistry(props, ref) {\n const { api, info } = useNodeContext();\n const { t } = useLocaleContext();\n const { enqueueSnackbar } = useSnackbar();\n const [loading, setLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [menuIndex, setMenuIndex] = React.useState(-1);\n const classes = useStyles();\n const selectedIndex = info.blockletRegistryList.findIndex(x => x.selected);\n\n const onSelect = async index => {\n try {\n setLoading(true);\n setMenuIndex(index);\n\n const blockletRegistry = info.blockletRegistryList[index];\n await api.selectBlockletRegistry({ input: { url: blockletRegistry.url } });\n window.location.reload();\n } catch (err) {\n console.error(err);\n setLoading(false);\n enqueueSnackbar(`${t('store.blockletRegistry.changeFailed')} ${formatError(err)}`, {\n autoHideDuration: 2000,\n variant: 'error',\n });\n }\n };\n\n useImperativeHandle(ref, () => ({\n setOpen,\n }));\n\n return (\n <>\n <Permission permission=\"mutate_node\">\n {hasPermission => (\n <Button\n disabled={!hasPermission}\n classes={{ text: classes.buttonText }}\n color=\"secondary\"\n data-cy=\"store-toggle\"\n onClick={() => {\n setOpen(true);\n }}\n endIcon={<ArrowDropDownIcon />}>\n <Typography color=\"secondary\">{info.blockletRegistryList[selectedIndex].name}</Typography>\n </Button>\n )}\n </Permission>\n <Dialog\n title={t('store.blockletRegistry.switchRegistry')}\n disableBackdropClick\n disableEscapeKeyDown\n disablePortal={false}\n fullWidth\n open={open}\n onClose={() => setOpen(false)}>\n <List className={classes.tabPanel}>\n {info.blockletRegistryList.map((x, index) => (\n <ListItem\n button\n disabled={loading}\n key={x.url}\n selected={selectedIndex === index}\n data-cy=\"store-switch\"\n onClick={() => {\n if (loading) {\n return;\n }\n\n if (index === selectedIndex) {\n setOpen(false);\n return;\n }\n\n onSelect(index);\n }}>\n <ListItemIcon className={classes.iconRoot}>\n {menuIndex === index && loading && <Spinner size={[16, 10]} />}\n </ListItemIcon>\n <ListItemText>\n <div className={classes.menuName}>\n <Typography component=\"span\" variant=\"subtitle1\" style={{ fontWeight: '500' }}>\n {x.name}\n </Typography>\n <Typography className=\"url\" component=\"span\" variant=\"inherit\">\n {`${x.url}`}\n </Typography>\n </div>\n <ListItemSecondaryAction>\n {!x.protected && <DeleteBlockletRegistry blockletRegistry={x} />}\n </ListItemSecondaryAction>\n </ListItemText>\n </ListItem>\n ))}\n <AddBlockletRegistry disabled={loading} />\n </List>\n </Dialog>\n </>\n );\n}\n\nSwitchBlockletRegistry.propTypes = {};\n\nexport default forwardRef(SwitchBlockletRegistry);\n","/* eslint-disable react/jsx-one-expression-per-line */\n/* eslint-disable operator-linebreak */\nimport React, { useState, useContext, useRef, useMemo } from 'react';\nimport styled from 'styled-components';\nimport useAsyncRetry from 'react-use/lib/useAsyncRetry';\nimport useLocalStorage from 'react-use/lib/useLocalStorage';\nimport { Link } from 'react-router-dom';\nimport orderBy from 'lodash/orderBy';\nimport PropTypes from 'prop-types';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Typography from '@material-ui/core/Typography';\nimport Box from '@material-ui/core/Box';\nimport Breadcrumbs from '@material-ui/core/Breadcrumbs';\nimport TextField from '@material-ui/core/TextField';\nimport Icon from '@arcblock/ux/lib/Icon';\n\nimport ArrowDownwardSharpIcon from '@material-ui/icons/ArrowDownwardSharp';\nimport ArrowUpwardSharpIcon from '@material-ui/icons/ArrowUpwardSharp';\nimport Alert from '@arcblock/ux/lib/Alert';\nimport Empty from '@arcblock/ux/lib/Empty';\nimport Button from '@arcblock/ux/lib/Button';\nimport ButtonGroup from '@arcblock/ux/lib/ButtonGroup';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport BlockletList from '../../components/blocklet/list';\nimport { useNodeContext } from '../../contexts/node';\nimport { formatError } from '../../libs/util';\nimport SwitchBlockletRegistry from '../../components/registry/switch';\n\nconst SortIcon = ({ direction }) => (direction === 'desc' ? <ArrowDownwardSharpIcon /> : <ArrowUpwardSharpIcon />);\n\nSortIcon.propTypes = {\n direction: PropTypes.string,\n};\nSortIcon.defaultProps = {\n direction: 'asc',\n};\n\nexport default function BlockletStore() {\n const { api, info } = useNodeContext();\n const { t } = useContext(LocaleContext);\n const [keyword, setKeyword] = useState('');\n const [directions, setDirections] = useLocalStorage('directions', { title: 'asc', popularity: 'desc' });\n const [mainFactor, setMainFactor] = useLocalStorage('popularity', 'popularity');\n\n const currentRegistry = info.blockletRegistryList.find(x => x.selected);\n\n const state = useAsyncRetry(async () => {\n const { blocklets } = await api.listBlocklets({ input: { registryUrl: currentRegistry.url } });\n return blocklets;\n });\n\n const rawList = (state.value || []).map(item => {\n item.searchContent = [item.title, item.name, item.description]\n .filter(Boolean)\n .join('')\n .toLocaleLowerCase()\n .replace(/\\s/g, '');\n\n return item;\n });\n\n const filterList = useMemo(() => {\n const sortByName = x => x.title || x.name;\n const sortByPopularity = x => x.stats.downloads;\n const word = keyword.toLowerCase().replace(/\\s/g, '');\n const sortLists = orderBy(\n rawList.filter(item => item.searchContent.includes(word)),\n mainFactor === 'title' ? [sortByName, sortByPopularity] : [sortByPopularity, sortByName],\n mainFactor === 'title' ? [directions.title, directions.popularity] : [directions.popularity, directions.title]\n );\n return sortLists;\n }, [rawList, keyword, directions, mainFactor]);\n\n const handleSort = (property, sort) => {\n const newSort = sort === 'desc' ? 'asc' : 'desc';\n setDirections({ ...directions, [property]: newSort });\n setMainFactor(property);\n };\n const switchEl = useRef(null);\n\n let content = null;\n if (filterList.length) {\n content = <BlockletList blocklets={filterList} />;\n } else if (state.error) {\n content = (\n <Alert type=\"error\" variant=\"icon\">\n <div>\n {formatError(state.error)}\n <Link\n style={{ marginLeft: '12px' }}\n to=\"/settings/basic\"\n onClick={e => {\n switchEl.current.setOpen(true);\n e.preventDefault();\n }}>\n Change Registry\n {'>>'}\n </Link>\n </div>\n </Alert>\n );\n } else if (state.loading) {\n content = <Spinner />;\n } else {\n content = <Empty>{t('common.emptyData')}</Empty>;\n }\n\n return (\n <Main>\n <Breadcrumbs separator=\"›\" aria-label=\"breadcrumb\" className=\"page-breadcrumb\">\n <Typography color=\"textPrimary\">{t('common.store')}</Typography>\n <SwitchBlockletRegistry ref={switchEl} />\n </Breadcrumbs>\n <Box className=\"store-header\" display=\"flex\" justifyContent=\"space-between\" p={0} m={0}>\n <Typography component=\"h2\" variant=\"h4\" className=\"page-header\" color=\"textPrimary\">\n {t('store.headerDescription')}\n </Typography>\n <Box mt={0} display=\"flex\" alignItems=\"center\">\n <TextField\n size=\"small\"\n placeholder={t('common.search')}\n style={{ marginRight: '15px' }}\n value={keyword}\n defaultValue={keyword}\n onChange={e => setKeyword(e.target.value)}\n data-cy=\"search\"\n InputProps={{\n startAdornment: <Icon name=\"search\" size={16} style={{ marginRight: '6px', marginBottom: '6px' }} />,\n endAdornment: (\n <span\n onClick={() => setKeyword('')}\n style={{ margin: '0 5px 6px 6px', cursor: 'pointer' }}\n data-cy=\"search-delete\">\n <Icon name=\"times\" size={16} />\n </span>\n ),\n }}\n />\n <ButtonGroup size=\"small\" color=\"primary\" aria-label=\"split button\" style={{ whiteSpace: 'nowrap' }}>\n <Button\n onClick={() => handleSort('popularity', directions.popularity)}\n endIcon={<SortIcon direction={directions.popularity} />}\n className=\"sort-button\"\n color=\"secondary\"\n variant={mainFactor === 'popularity' ? 'contained' : 'outlined'}>\n {t('store.popularSort')}\n </Button>\n\n <Button\n onClick={() => handleSort('title', directions.title)}\n endIcon={<SortIcon direction={directions.title} />}\n className=\"sort-button\"\n color=\"secondary\"\n variant={mainFactor === 'title' ? 'contained' : 'outlined'}>\n {t('store.nameSort')}\n </Button>\n </ButtonGroup>\n </Box>\n </Box>\n {content}\n </Main>\n );\n}\n\nconst Main = styled.main`\n .sort-button {\n border-radius: 0 !important;\n }\n\n @media (max-width: ${props => props.theme.breakpoints.values.sm}px) {\n .store-header {\n flex-direction: column;\n margin-bottom: 32px !important;\n }\n\n .page-header {\n margin-bottom: 16px !important;\n }\n }\n`;\n","import { useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nfunction useMobileWidth() {\n const theme = useTheme();\n const isBreakpointsDownSm = useMediaQuery(theme.breakpoints.down('sm'));\n const minWidth = isBreakpointsDownSm ? 300 : theme.breakpoints.values.sm;\n return { minWidth };\n}\n\nexport default useMobileWidth;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Alert from '@material-ui/lab/Alert';\nimport useTheme from '@material-ui/core/styles/useTheme';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\n\nimport { formatError } from '../libs/util';\nimport useMobileWidth from '../hooks/mobile-width';\n\nexport default function ConfirmDialog({\n title,\n description,\n showCancel,\n cancel,\n confirm,\n color,\n params: initialParams,\n onCancel,\n onConfirm,\n}) {\n const [params, setParams] = useState(initialParams);\n const [open, setOpen] = useState(true);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState('');\n const { t: changeLocale } = useLocaleContext();\n const theme = useTheme();\n\n const onCallback = async cb => {\n if (typeof cb === 'function') {\n setLoading(true);\n try {\n await cb(params);\n setOpen(false);\n } catch (err) {\n setError(formatError(err));\n console.error(err);\n } finally {\n setLoading(false);\n }\n } else {\n setOpen(false);\n }\n };\n\n const t = typeof title === 'function' ? title() : title;\n const d = typeof description === 'function' ? description(params, setParams, setError) : description;\n\n const isBreakpointsDownSm = useMediaQuery(theme.breakpoints.down('sm'));\n\n const handleClick = e => {\n e.stopPropagation();\n };\n const { minWidth } = useMobileWidth();\n\n return (\n <StyledDialog onClick={handleClick} fullScreen={isBreakpointsDownSm} open={open} style={{ minWidth }}>\n <DialogTitle>{t}</DialogTitle>\n <DialogContent style={{ minWidth }}>\n <DialogContentText component=\"div\">{d}</DialogContentText>\n {!!error && (\n <Alert severity=\"error\" style={{ width: '100%', marginTop: 8 }}>\n {error}\n </Alert>\n )}\n </DialogContent>\n <DialogActions className=\"delete-actions\" style={{ padding: '8px 24px 24px' }}>\n {showCancel && (\n <Button\n onClick={e => {\n e.stopPropagation();\n onCallback(onCancel);\n }}\n color=\"default\"\n data-cy=\"cancel-confirm-dialog\"\n rounded\n size=\"small\">\n {cancel || changeLocale('common.cancel')}\n </Button>\n )}\n <Button\n onClick={e => {\n e.stopPropagation();\n onCallback(onConfirm);\n }}\n color={color}\n size=\"small\"\n // eslint-disable-next-line no-underscore-dangle\n disabled={params.__disableConfirm || loading}\n variant=\"contained\"\n data-cy=\"submit-confirm-dialog\"\n autoFocus\n rounded>\n {loading && <Spinner size={[16, 10]} />}\n {confirm}\n </Button>\n </DialogActions>\n </StyledDialog>\n );\n}\n\nConfirmDialog.propTypes = {\n title: PropTypes.any.isRequired,\n description: PropTypes.any.isRequired, // can be a function that renders different content based on params\n showCancel: PropTypes.bool,\n cancel: PropTypes.string,\n color: PropTypes.string,\n confirm: PropTypes.string,\n params: PropTypes.object, // This object holds states managed in the dialog\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func.isRequired,\n};\n\nConfirmDialog.defaultProps = {\n onCancel: () => {},\n showCancel: true,\n cancel: '',\n confirm: 'Confirm',\n color: 'danger',\n params: {},\n};\n\nconst StyledDialog = styled(Dialog)`\n .delete-actions .Mui-disabled {\n color: rgba(0, 0, 0, 0.26) !important;\n box-shadow: none;\n background-color: rgba(0, 0, 0, 0.12) !important;\n }\n`;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport Copy from '@arcblock/ux/lib/ClickToCopy';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nexport default function ClickToCopy({ children, ...rest }) {\n const { t } = useContext(LocaleContext);\n return (\n <Copy tip={t('common.copyTip')} copiedTip={t('common.copiedTip')} {...rest}>\n {children}\n </Copy>\n );\n}\n\nClickToCopy.propTypes = {\n children: PropTypes.any.isRequired,\n};\n","/* eslint-disable no-await-in-loop */\nconst get = require('lodash/get');\n\nconst forEachBlocklet = (blocklet, cb, { parallel = false, sync } = {}) => {\n // sync\n if (sync) {\n cb(blocklet);\n if (blocklet.children) {\n for (const child of blocklet.children) {\n cb(child);\n }\n }\n return null;\n }\n\n // serial\n if (!parallel) {\n return (async () => {\n await cb(blocklet);\n if (blocklet.children) {\n for (const child of blocklet.children) {\n await cb(child);\n }\n }\n return null;\n })();\n }\n\n // parallel\n const tasks = [];\n tasks.push(cb(blocklet));\n if (blocklet.children) {\n for (const child of blocklet.children) {\n tasks.push(cb(child));\n }\n }\n return Promise.all(tasks);\n};\n\nconst isAuthServiceEnabled = (blocklet) => {\n const interfaces = get(blocklet, 'meta.interfaces') || [];\n const isRootEnabled = interfaces.some((x) => {\n const services = get(x, 'services') || [];\n return services.some((s) => s.name === '@abtnode/auth-service');\n });\n\n if (isRootEnabled) {\n return true;\n }\n\n const children = get(blocklet, 'children') || [];\n for (const child of children) {\n if (isAuthServiceEnabled(child)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst getRequiredMissingConfigs = (blocklet) => {\n const missingConfigs = [];\n const configs = blocklet.configs || [];\n configs.forEach((item) => {\n if (item.required && !item.value) {\n missingConfigs.push({ did: blocklet.meta.did, key: item.key });\n }\n });\n\n // eslint-disable-next-line no-restricted-syntax\n for (const child of blocklet.children || []) {\n const childConfigs = child.configs || [];\n // configProp does not exist in root blocklet config\n // or value of configProp in root blocklet config is empty.\n childConfigs.forEach((x) => {\n if (x.required && !x.value && !configs.some((y) => y.key === x.key && y.value)) {\n missingConfigs.push({ did: child.meta.did, key: x.key });\n }\n });\n }\n\n return missingConfigs;\n};\n\nconst isFreeBlocklet = (meta) => {\n if (!meta.payment) {\n return true;\n }\n\n const priceList = (meta.payment.price || []).map((x) => x.value || 0);\n return priceList.every((x) => x === 0);\n};\n\nconst wipeSensitiveData = (blocklet) => {\n if (!blocklet) {\n return blocklet;\n }\n\n forEachBlocklet(\n blocklet,\n (d) => {\n (d.configs || []).forEach((x) => {\n if (x.secure) {\n x.value = x.value ? '__encrypted__' : '';\n }\n });\n (d.environments || []).forEach((x) => {\n if (['BLOCKLET_APP_SK'].includes(x.key)) {\n x.value = '__encrypted__';\n }\n });\n\n delete blocklet.configObj;\n delete blocklet.environmentObj;\n },\n { sync: true }\n );\n\n return blocklet;\n};\n\nconst isDeletableBlocklet = (blocklet) => {\n if (!blocklet) {\n return false;\n }\n\n const config = blocklet.environments.find((x) => x.key === 'BLOCKLET_DELETABLE');\n if (!config) {\n return true;\n }\n\n return config.value === 'yes';\n};\n\nmodule.exports = {\n isFreeBlocklet,\n isDeletableBlocklet,\n forEachBlocklet,\n isAuthServiceEnabled,\n getRequiredMissingConfigs,\n wipeSensitiveData,\n};\n","/* eslint-disable react/no-danger */\n/* eslint-disable react/prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\n\nimport Alert from '@material-ui/lab/Alert';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport ClickToCopy from './click-to-copy';\n\nimport Confirm from './confirm';\n\nexport default function CancelConfirm({\n title,\n description,\n confirmPlaceholder,\n cancel,\n confirm,\n params: initialParams,\n onCancel,\n onConfirm,\n keyName,\n}) {\n const { t } = useLocaleContext();\n\n const confirmSetting = {\n title: () => (\n <div>\n {title}\n {` (${keyName})`}\n </div>\n ),\n description: (params, setParams) => {\n const setValue = value => {\n // eslint-disable-next-line no-underscore-dangle\n setParams({ ...value, __disableConfirm: value.__disableConfirm });\n };\n\n return (\n <div>\n <Alert severity=\"warning\" style={{ width: '100%' }}>\n {t('common.notice')}\n </Alert>\n <div style={{ marginTop: 24, marginBottom: 24 }} dangerouslySetInnerHTML={{ __html: description }} />\n <div style={{ marginBottom: 24 }}>\n {t('common.click')}\n {':'}\n <ClickToCopy data-cy=\"click-copy\">{keyName}</ClickToCopy>\n </div>\n <Typography component=\"div\">\n <TextField\n label={confirmPlaceholder}\n autoComplete=\"off\"\n data-cy=\"delete-confirm-input\"\n variant=\"outlined\"\n fullWidth\n autoFocus\n value={params.inputVal}\n onChange={e => {\n setValue({ ...params, inputVal: e.target.value, __disableConfirm: keyName !== e.target.value });\n }}\n />\n </Typography>\n </div>\n );\n },\n confirm,\n cancel,\n onConfirm,\n onCancel,\n params: {\n inputVal: '',\n __disableConfirm: true,\n ...initialParams,\n },\n };\n\n return (\n <Confirm\n title={confirmSetting.title}\n description={confirmSetting.description}\n confirm={confirmSetting.confirm}\n cancel={confirmSetting.cancel}\n params={confirmSetting.params}\n onConfirm={confirmSetting.onConfirm}\n onCancel={confirmSetting.onCancel}\n />\n );\n}\n\nCancelConfirm.propTypes = {\n title: PropTypes.any.isRequired,\n keyName: PropTypes.any.isRequired,\n description: PropTypes.any.isRequired, // can be a function that renders different content based on params\n confirmPlaceholder: PropTypes.any.isRequired,\n cancel: PropTypes.string,\n confirm: PropTypes.string,\n params: PropTypes.object, // This object holds states managed in the dialog\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func.isRequired,\n};\n\nCancelConfirm.defaultProps = {\n onCancel: () => {},\n cancel: '',\n confirm: 'Confirm',\n params: {},\n};\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (this["webpackJsonp@abtnode/webapp"]=this["webpackJsonp@abtnode/webapp"]||[]).push([[23],{1179:function(e,t,n){"use strict";n.d(t,"a",(function(){return X}));var a=n(11),r=n.n(a),o=n(19),c=n(13),i=n(117),s=n(0),l=n.n(s),u=n(30),m=n(955),p=n(78),d=n(50),f=n.n(d),h=n(63),b=n(102),g=n.n(b),y=n(22),v=n(990),w=n(342),k=n(64),x=n(972),E=n.n(x),_=n(40),j=n(357),O=n(23);function N(e){var t=Object(j.a)(),n=Object(u.k)(),a=E()("sid:blocklet:purchase:".concat(e)),r=Object(c.a)(a,2),o=r[0],i=r[1],l=Object(s.useState)(!1),m=Object(c.a)(l,2),p=m[0],d=m[1],f=Object(s.useState)(null),h=Object(c.a)(f,2),b=h[0],g=h[1],y=function(){var e=new URL(window.location.href),t=e.pathname,a=e.searchParams,r=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/";a.get("sid")&&(i(""),n.replace(t.replace(r,"/")))},v=!(!t.get("assetDid")||!o||t.get("sid")!==o);return Object(O.c)(_.BlockletEvents.purchaseChange,(function(t){t.did===e&&(g(t.session),["declined","confirmed","error"].includes(t.session.status)&&(d(!0),setTimeout(y,2e3)))})),Object(s.useEffect)((function(){b&&b.id!==o&&i(b.id)}),[b]),{hasCompleted:p,hasPurchased:v,session:b,setSession:g,doRedirect:y}}var A=n(337),P=n(105),C=n.n(P),S=n(320),B=n(939),R=n.n(B),z=n(867),U=n(868),L=n(884),M=n(920),T=n(1151),F=n.n(T),D=n(1152),q=n.n(D),W=n(148),V=n.n(W),J=n(152),K=n.n(J),I=n(53),H=n(29),Y=Object(S.a)((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}}}));var G=Object(s.forwardRef)((function(e){var t=e.meta,n=e.mode,a=e.onCancel,i=Object(y.useLocaleContext)(),u=i.t,m=i.locale,p=Object(H.c)(),d=p.info,b=p.api,v=Object(I.c)().api,w=Y(),x=Object(s.useState)("both"!==n?n:""),E=Object(c.a)(x,2),_=E[0],j=E[1],O=Object(s.useState)("both"!==n?2:1),A=Object(c.a)(O,2),P=A[0],S=A[1],B=N(t.did),T=B.session,D=B.setSession,W=B.hasCompleted,J=B.doRedirect,G=Object(k.x)(d),Q=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/",X=function(){var e=Object(o.a)(r.a.mark((function e(t){return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==_){e.next=2;break}return e.abrupt("return");case 2:j(t);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Z=function(){var e=Object(o.a)(r.a.mark((function e(){var n,a,c;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(_){e.next=2;break}return e.abrupt("return");case 2:if(2!==P){e.next=4;break}return e.abrupt("return");case 4:return n=JSON.stringify({blockletDid:t.did,registryUrl:d.blockletRegistry,action:_}),e.next=7,b.startSession({input:{data:n}});case 7:a=e.sent,c=a.session,D(c),S(2),"purchase"===_&&setTimeout(Object(o.a)(r.a.mark((function e(){var n,a,o,i,s,l;return r.a.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",c.id),n.searchParams.set("locale",m),a=encodeURIComponent(n.href),(o=new URL(window.location.href)).pathname=C()(Q,"/api/did/verify-purchase/token"),o.searchParams.set("sid",c.id),o.searchParams.set("locale",m),o.searchParams.set("autoConnect","false"),e.next=12,v.get(o.href);case 12:i=e.sent,s=i.data,l=encodeURIComponent(s.url),window.location.href=C()(d.blockletRegistry,"/store/purchase/".concat(t.nftFactory,"?cb=").concat(a,"&nw=").concat(l));case 16:case"end":return e.stop()}}),e)}))),100);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),$=function(){J(),a(),S(1)},ee=[{action:"purchase",title:u("store.purchase.purchase.title"),description:u("store.purchase.purchase.description")},{action:"verify",title:u("store.purchase.verify.title"),description:u("store.purchase.verify.description")}];return 2===P&&"verify"===_&&T?l.a.createElement(V.a,{popup:!0,open:!0,className:w.dialogAuth,action:"verify-purchase",checkFn:v.get,checkTimeout:6e5,socketUrl:v.socketUrl,webWalletUrl:G,extraParams:{locale:m,sid:T.id},onSuccess:function(){setTimeout(a,2e3)},onClose:$,showDownload:!1,locale:m,messages:{title:u("store.purchase.auth.title"),scan:u("store.purchase.auth.scan"),confirm:u("store.purchase.auth.confirm"),success:u("store.purchase.auth.success")}}):l.a.createElement(R.a,{title:u(_&&2===P?"store.purchase.".concat(_,".title"):"store.purchase.title"),disableBackdropClick:!0,disableEscapeKeyDown:!0,open:!0,fullWidth:!0,onClose:$},1===P&&l.a.createElement("div",{style:{marginBottom:16}},l.a.createElement(z.a,{className:w.tabPanel},ee.map((function(e){return l.a.createElement(U.a,{button:!0,key:e.action,selected:_===e.action,onClick:function(){return X(e.action)}},l.a.createElement(M.a,{className:w.iconRoot},"purchase"===e.action?l.a.createElement(F.a,{style:{color:"purchase"===_?K.a.primary.main:"#AAA",fontSize:32}}):l.a.createElement(q.a,{style:{color:"verify"===_?K.a.primary.main:"#AAA",fontSize:32}})),l.a.createElement(L.a,{primary:e.title,secondary:e.description}))}))),l.a.createElement(g.a,{rounded:!0,fullWidth:!0,disabled:!_,variant:"contained",color:"primary",style:{marginTop:16},onClick:Z},u("common.next"))),2===P&&"purchase"===_&&l.a.createElement("div",{style:{textAlign:"center"}},!W&&l.a.createElement(f.a,null),l.a.createElement(h.a,{component:"p"},function(){if(T){if("confirmed"===T.status)return u("store.purchase.confirmed");if("declined"===T.status)return u("store.purchase.declined");if("error"===T.status)return T.message}return u("store.purchase.waiting")}())))})),Q=["meta","lastVersion","buttonText","registryUrl"];function X(e){var t=e.meta,n=e.lastVersion,a=e.buttonText,d=e.registryUrl,b=Object(i.a)(e,Q),x=Object(p.c)().enqueueSnackbar,E=Object(y.useLocaleContext)().t,_=Object(u.k)(),j=Object(w.b)(),O=j.api,P=j.data.find((function(e){return e.meta.did===t.did}))||{},C=Object(s.useMemo)((function(){return!!P.status}),[P.status]),S=Object(s.useMemo)((function(){var e;return C?null===(e=P.meta)||void 0===e?void 0:e.version:null}),[C,P.meta]),B=!1===Object(m.isFreeBlocklet)(t),R=Object(s.useState)(!1),z=Object(c.a)(R,2),U=z[0],L=z[1],M=N(t.did).hasPurchased,T=Object(s.useState)(!1),F=Object(c.a)(T,2),D=F[0],q=F[1],W=Object(s.useMemo)((function(){return U?E(C?"blocklet.status.upgrading":B?"blocklet.status.purchasing":"blocklet.status.waiting"):Object(k.A)(P.status)?E("common.".concat(P.status)):""}),[U,P.status,C,E,B]),V=Object(s.useMemo)((function(){return!(!n||!S)&&!(!n||!Object(v.gt)(n,S))}),[n,S]),J=Object(s.useMemo)((function(){return V?a.upgrade:C?a.open:B?a.purchase:a.install}),[C,V,B,a]),K=Object(s.useMemo)((function(){return!(C&&!V)}),[C,V]),I=function(){var e=Object(o.a)(r.a.mark((function e(n){var a;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.preventDefault(),n.stopPropagation(),e.prev=2,L(!0),C||!B){e.next=7;break}return q(!0),e.abrupt("return");case 7:return a=C?"upgradeBlocklet":"installBlocklet",e.next=10,O[a]({input:{did:t.did,registryUrl:d}});case 10:e.next=16;break;case 12:e.prev=12,e.t0=e.catch(2),x(Object(k.g)(e.t0),{autoHideDuration:5e3,variant:"error"}),console.error("Blocklet installed failed",e.t0);case 16:return e.prev=16,L(!1),e.finish(16);case 19:case"end":return e.stop()}}),e,null,[[2,12,16,19]])})));return function(t){return e.apply(this,arguments)}}(),H=function(e){var n=e.disabled;return l.a.createElement(g.a,Object.assign({key:t.did,onClick:I,size:"small",disabled:Boolean(W||n),variant:"contained",color:"primary","data-cy":"install-blocklet",rounded:!0},b),W?l.a.createElement(l.a.Fragment,null,l.a.createElement(f.a,{size:[16,10],style:{marginRight:3}}),W):J)};H.defaultProps={disabled:!1};return l.a.createElement(l.a.Fragment,null,l.a.createElement("div",null,K?l.a.createElement(A.a,{permission:"mutate_blocklet"},(function(e){return l.a.createElement(H,{disabled:!e})})):l.a.createElement(g.a,{rounded:!0,className:"action-button",variant:"contained",color:"primary",size:"small",disabled:Boolean(W),"data-cy":"open-blocklet",onClick:function(e){var n;e.preventDefault(),e.stopPropagation(),_.push("/blocklets/".concat(t.did,"/").concat((n=P)&&(n.configs||[]).some((function(e){return e.required&&!e.value}))?"configuration":"overview"))}},W?l.a.createElement(l.a.Fragment,null,l.a.createElement(f.a,{size:[16,10],style:{marginRight:3}}),W):J),C&&B&&l.a.createElement(h.a,{component:"small",style:{fontSize:12,color:"#666",marginLeft:4}},E("blocklet.status.purchased"))),(M&&!C||D)&&l.a.createElement(G,{meta:t,mode:M?"purchase":"both",onCancel:function(){L(!1),q(!1)}}))}X.defaultProps={lastVersion:""}},1539:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return Z}));var a,r=n(32),o=n(11),c=n.n(o),i=n(19),s=n(13),l=n(0),u=n.n(l),m=n(14),p=n(356),d=n.n(p),f=n(30),h=n(59),b=n(105),g=n.n(b),y=n(50),v=n.n(y),w=n(63),k=n(926),x=n(880),E=n(189),_=n.n(E),j=n(1326),O=n.n(j),N=n(339),A=n.n(N),P=n(955),C=n(22),S=(n(1327),n(1328),n(117)),B=n(536),R=n.n(B),z=["stats"];function U(e){var t=e.stats,n=Object(S.a)(e,z),a=Object(l.useContext)(C.LocaleContext).t;return t.downloads=t.downloads||0,u.a.createElement(L,Object.assign({component:"p"},n),u.a.createElement("span",{className:"blocklet__stat",title:a("blocklet.list.download")},u.a.createElement(R.a,{name:"arrow-to-bottom",size:14,className:"blocklet__stat__icon"}),t.downloads),!!t.star&&u.a.createElement("span",{className:"blocklet__stat",title:a("blocklet.list.star")},u.a.createElement(R.a,{name:"heart",size:14,className:"blocklet__stat__icon"}),t.star))}var L=Object(m.default)(w.a)(a||(a=Object(r.a)(["\n .blocklet__stat {\n margin-right: 16px;\n font-size: 14px;\n font-weight: 500;\n color: #999;\n &:last-child {\n // \u7406\u8bba\u4e0a\u9700\u8981\u8bbe\u7f6e\u62100\uff0c\u4f46\u89c6\u89c9\u6548\u679c\u4e0d\u662f\u5f88\u597d\uff0c\u52a0\u4e0a\u4e86\u4e00\u4e2a\u5c0f\u7684\u95f4\u8ddd\n margin-right: 5px;\n }\n\n .blocklet__stat__icon {\n margin-right: 4px;\n color: inherit !important;\n }\n }\n"]))),M=n(1329),T=n.n(M),F=n(5),D=n.n(F),q=n(532),W=n.n(q),V=n(1348),J=n.n(V);J.a.propTypes={children:D.a.node.isRequired};var K={pre:function(e){var t=e.children;if(!Array.isArray(W()(t,"[0].props.children")))return null;var n=t[0].props,a=n.className,r=Object(s.a)(n.children,1)[0],o=(a||"").split("-").pop();return r?u.a.createElement(J.a,{language:o||"shell",code:r}):null},alert:A.a,p:function(e){return u.a.createElement(w.a,Object.assign({variant:"body1"},e))},h2:function(e){return u.a.createElement(w.a,Object.assign({variant:"h3"},e))},h3:function(e){return u.a.createElement(w.a,Object.assign({variant:"h4"},e))},h4:function(e){return u.a.createElement(w.a,Object.assign({variant:"h5"},e))},h5:function(e){return u.a.createElement(w.a,Object.assign({variant:"h5"},e))},h6:function(e){return u.a.createElement(w.a,Object.assign({variant:"h6"},e))}};var I,H,Y=new T.a({createElement:function(e,t,n){var a=K&&e&&K[e]||e||"div";return u.a.createElement(a,t,n)}}).Compiler,G=n(1179),Q=n(29),X=n(64);function Z(){var e=Object(f.m)().did,t=Object(Q.c)(),n=t.api,a=t.info,r=Object(C.useLocaleContext)().t,o=Object(l.useState)([]),m=Object(s.a)(o,2),p=m[0],b=m[1],y=a.blockletRegistryList.find((function(e){return e.selected})),E=d()(Object(i.a)(c.a.mark((function t(){var r,o;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.getBlockletMeta({input:{did:e,registryUrl:a.blockletRegistry}});case 2:return r=t.sent,o=r.meta,b(o.version),t.abrupt("return",o);case 6:case"end":return t.stop()}}),t)})))),j=function(){var e=Object(i.a)(c.a.mark((function e(t){var a,r,o,i;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.action,r=t.version,o=t.blocklet,e.prev=1,i="install"===a?"installBlocklet":"upgradeBlocklet",e.next=5,n[i]({input:{did:o.did,version:r}});case 5:E.retry(),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(1),console.error("Blocklet ".concat(a," failed"),e.t0);case 11:case"end":return e.stop()}}),e,null,[[1,8]])})));return function(t){return e.apply(this,arguments)}}(),N=null,S=Object(l.useMemo)((function(){return Object(X.h)(E.value)}),[E.value]);if(E.value){var B=E.value,R=B.name,z=B.version,L=B.keywords,M=B.htmlAst,T=B.stats,F=B.screenshots,D=void 0===F?[]:F,q=B.author,W=B.documentation,V=B.repository,J=B.community,K=B.support,I=B.title,H=B.lastPublishedAt,Z=B.color,$=void 0===Z?"primary":Z;M&&M.children&&Array.isArray(M.children)&&function e(t,n){t.forEach((function(t){t.tagName&&"img"===t.tagName&&t.properties&&t.properties.src&&!t.properties.src.startsWith("http")&&(t.properties.src=g()(n,"/".concat(t.properties.src)),t.properties.srcSet&&Array.isArray(t.properties.srcSet)&&(t.properties.srcSet=t.properties.srcSet.map((function(e){return e.startsWith("http")?e:g()(n,e)})))),t.children&&Array.isArray(t.children)&&t.children.length>0&&e(t.children,n)}))}(M.children,a.blockletRegistry);var ne=I||R;N=u.a.createElement(ee,{color:$},u.a.createElement("div",{className:"meta"},u.a.createElement(w.a,{component:"h2",variant:"h2",className:"title"},ne,u.a.createElement("span",{className:"payment"},u.a.createElement("span",{className:"payment__price"},Object(P.isFreeBlocklet)(E.value)?r("common.free"):S.map((function(e){return"".concat(e.value," ").concat(e.name)})).join(" + ")),u.a.createElement("span",{className:"payment__tip"},Object(P.isFreeBlocklet)(E.value)?"This blocklet is free to use":"You need to pay to use this blocklet"))),u.a.createElement(U,{stats:T,className:"blocklet__stats"}),u.a.createElement(w.a,{component:"p",className:"tags"},u.a.createElement(_.a,{className:"tag",type:"reverse"},"v",z),Array.isArray(L)&&L.length>0&&L.map((function(e){return u.a.createElement(_.a,{className:"tag",key:e},e)})))),u.a.createElement("div",{className:"markdown-body"},u.a.createElement(x.a,{container:!0,spacing:4},D.length>0?u.a.createElement(x.a,{item:!0,xs:12,md:8},u.a.createElement(O.a,{lazyLoad:!0,showNav:!1,showThumbnails:!0,showPlayButton:!1,showFullscreenButton:!1,showBullets:!0,items:D.map((function(t){return{original:g()(a.blockletRegistry,Object(X.l)(e,t)),thumbnail:g()(a.blockletRegistry,Object(X.l)(e,t))}}))})):u.a.createElement(x.a,{item:!0,xs:12,md:8},u.a.createElement(te,{component:"div",className:"content-wrapper post-content"},Y(M))),u.a.createElement(x.a,{item:!0,xs:12,md:4},u.a.createElement(G.a,{meta:E.value,lastVersion:p,onSubmit:j,className:"action-button",buttonText:{purchase:r("store.detail.purchase",{name:ne}),open:r("store.detail.open",{name:ne}),install:r("store.detail.install",{name:ne}),upgrade:r("store.detail.upgrade",{name:ne})},registryUrl:y.url}),u.a.createElement(w.a,{component:"ul",className:"meta-info"},!!q&&u.a.createElement("li",{className:"meta-info__row"},u.a.createElement("span",{className:"info-row__key"},r("common.author")),u.a.createElement("span",{className:"info-row__value"},Object(X.j)(q))),!!V&&!!V.url&&u.a.createElement("li",{className:"meta-info__row"},u.a.createElement("span",{className:"info-row__key"},r("common.repository")),u.a.createElement("a",{href:Object(X.E)(V.url),target:"_blank",className:"info-row__value",title:V.type},Object(X.E)(V.url))),!!J&&u.a.createElement("li",{className:"meta-info__row"},u.a.createElement("span",{className:"info-row__key"},r("common.community")),u.a.createElement("a",{href:J,target:"_blank",className:"info-row__value"},J)),!!W&&u.a.createElement("li",{className:"meta-info__row"},u.a.createElement("span",{className:"info-row__key"},r("common.documentation")),u.a.createElement("a",{href:W,target:"_blank",className:"info-row__value"},W)),!!K&&u.a.createElement("li",{className:"meta-info__row"},u.a.createElement("span",{className:"info-row__key"},r("common.support")),u.a.createElement("a",{href:"mailto:".concat(K),target:"_blank",className:"info-row__value"},K)),H&&u.a.createElement("li",{className:"meta-info__row"},u.a.createElement("span",{className:"info-row__key"},r("common.lastPublishedAt")),u.a.createElement("span",{className:"info-row__value",title:Object(X.p)(H)},Object(X.n)(H)))))),D.length>0&&u.a.createElement(te,{component:"div",className:"content-wrapper post-content"},Y(M))))}else N=E.error?u.a.createElement(A.a,{type:"error",variant:"icon"},Object(X.g)(E.error)):u.a.createElement(v.a,null);return u.a.createElement("main",null,u.a.createElement(k.a,{separator:"\u203a","aria-label":"breadcrumb",className:"page-breadcrumb"},u.a.createElement(h.Link,{color:"secondary",to:"/store"},u.a.createElement(w.a,{color:"secondary"},r("common.store"))),u.a.createElement(w.a,{color:"textPrimary"},y.name),u.a.createElement(w.a,{color:"textPrimary"},r("common.detail"))),N)}var $="source-code-pro, Menlo, Monaco, Consolas, Courier New, monospace !important",ee=m.default.div(I||(I=Object(r.a)(["\n margin: 24px 0;\n\n .title {\n font-size: 40px;\n font-weight: bold;\n color: ",";\n margin-bottom: 10px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n @media (max-width: ","px) {\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n }\n }\n\n .payment {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n @media (max-width: ","px) {\n margin-top: 16px;\n align-items: flex-start;\n }\n\n .payment__price {\n margin-bottom: 8px;\n color: ",";\n }\n\n .payment__tip {\n font-size: 14px;\n color: ",";\n font-weight: normal;\n }\n }\n\n .blocklet__stats {\n margin-bottom: 16px;\n }\n\n .tags {\n margin: 16px 0 48px;\n @media (max-width: ","px) {\n margin-bottom: 32px;\n }\n\n .tag {\n margin-right: 8px;\n text-transform: capitalize;\n &:last-of-type {\n margin-right: 0;\n }\n }\n }\n\n .action-button {\n width: 100%;\n padding: 8px 22px;\n border-radius: 0 !important;\n }\n\n .meta-info {\n list-style: none;\n padding: 0;\n margin: 24px 0;\n\n .meta-info__row {\n display: flex;\n line-height: 2;\n }\n\n .info-row__key {\n width: 130px;\n flex-shrink: 0;\n font-weight: 500;\n }\n .info-row__value {\n white-space: break-word;\n word-break: break-all;\n }\n }\n\n .sidebar-buttons {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .use-button {\n width: 100%;\n }\n\n .image-gallery {\n .image-gallery-thumbnail.active {\n border-color: ",";\n }\n .image-gallery-bullets .image-gallery-bullet {\n border-color: ",";\n box-shadow: none;\n }\n .image-gallery-bullets .image-gallery-bullet.active {\n background-color: ",";\n }\n .image-gallery-slide {\n .image-gallery-image {\n display: flex;\n justify-content: center;\n img {\n max-height: 600px !important;\n width: auto;\n margin: 0 auto;\n @media (max-width: ","px) {\n height: auto;\n max-height: auto;\n }\n }\n }\n }\n }\n\n .markdown-body .highlight pre,\n .markdown-body pre {\n background-color: #222;\n border-radius: 5px;\n }\n .markdown-body code {\n font-family: ",";\n }\n .markdown-body pre code {\n color: #fff;\n font-size: 14px;\n font-family: ",";\n }\n\n .markdown-body h1,\n .markdown-body h2,\n .markdown-body h3,\n .markdown-body h4,\n .markdown-body h5,\n .markdown-body h6 {\n font-weight: 600;\n line-height: 1.25;\n margin-bottom: 16px;\n margin-top: 24px;\n border-bottom: none;\n }\n\n .markdown-body .CodeMirror pre {\n background: #f6f8fa !important;\n }\n\n .markdown-body .anchor {\n display: none;\n }\n"])),(function(e){return e.theme.palette.text.primary}),(function(e){return e.theme.breakpoints.values.sm}),(function(e){return e.theme.breakpoints.values.sm}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.text.primary}),(function(e){return e.theme.breakpoints.values.sm}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.breakpoints.values.sm}),$,$),te=Object(m.default)(w.a)(H||(H=Object(r.a)(["\n width: 100%;\n word-wrap: break-word;\n word-break: break-word;\n line-height: 1.5em;\n\n .alert-content {\n max-width: 100%;\n p:last-of-type {\n margin-bottom: 0;\n }\n }\n\n iframe {\n width: 100% !important;\n }\n\n a {\n color: ",";\n }\n"])),(function(e){return e.theme.palette.primary.main}))},955:function(e,t,n){var a=n(11),r=n(262),o=n(966),c=n(532),i=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},c=n.parallel,i=void 0!==c&&c,s=n.sync;if(s){if(t(e),e.children){var l,u=o(e.children);try{for(u.s();!(l=u.n()).done;){var m=l.value;t(m)}}catch(b){u.e(b)}finally{u.f()}}return null}if(!i)return r(a.mark((function n(){var r,c,i;return a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,t(e);case 2:if(!e.children){n.next=20;break}r=o(e.children),n.prev=4,r.s();case 6:if((c=r.n()).done){n.next=12;break}return i=c.value,n.next=10,t(i);case 10:n.next=6;break;case 12:n.next=17;break;case 14:n.prev=14,n.t0=n.catch(4),r.e(n.t0);case 17:return n.prev=17,r.f(),n.finish(17);case 20:return n.abrupt("return",null);case 21:case"end":return n.stop()}}),n,null,[[4,14,17,20]])})))();var p=[];if(p.push(t(e)),e.children){var d,f=o(e.children);try{for(f.s();!(d=f.n()).done;){var h=d.value;p.push(t(h))}}catch(b){f.e(b)}finally{f.f()}}return Promise.all(p)};e.exports={isFreeBlocklet:function(e){return!e.payment||(e.payment.price||[]).map((function(e){return e.value||0})).every((function(e){return 0===e}))},forEachBlocklet:i,isAuthServiceEnabled:function e(t){if((c(t,"meta.interfaces")||[]).some((function(e){return(c(e,"services")||[]).some((function(e){return"@abtnode/auth-service"===e.name}))})))return!0;var n,a=c(t,"children")||[],r=o(a);try{for(r.s();!(n=r.n()).done;){if(e(n.value))return!0}}catch(i){r.e(i)}finally{r.f()}return!1},getRequiredMissingConfigs:function(e){var t=[],n=e.configs||[];n.forEach((function(n){n.required&&!n.value&&t.push({did:e.meta.did,key:n.key})}));var a,r=o(e.children||[]);try{var c=function(){var e=a.value;(e.configs||[]).forEach((function(a){!a.required||a.value||n.some((function(e){return e.key===a.key&&e.value}))||t.push({did:e.meta.did,key:a.key})}))};for(r.s();!(a=r.n()).done;)c()}catch(i){r.e(i)}finally{r.f()}return t},wipeSensitiveData:function(e){return e?(i(e,(function(t){(t.configs||[]).forEach((function(e){e.secure&&(e.value=e.value?"__encrypted__":"")})),(t.environments||[]).forEach((function(e){["BLOCKLET_APP_SK"].includes(e.key)&&(e.value="__encrypted__")})),delete e.configObj,delete e.environmentObj}),{sync:!0}),e):e}}}}]);
2
- //# sourceMappingURL=23.4208ebea.chunk.js.map
1
+ (this["webpackJsonp@abtnode/webapp"]=this["webpackJsonp@abtnode/webapp"]||[]).push([[23],{1179:function(e,t,n){"use strict";n.d(t,"a",(function(){return X}));var a=n(11),r=n.n(a),o=n(19),c=n(13),i=n(117),s=n(0),l=n.n(s),u=n(30),m=n(955),p=n(78),d=n(50),f=n.n(d),h=n(63),b=n(102),g=n.n(b),v=n(22),y=n(990),k=n(342),w=n(64),E=n(972),x=n.n(E),_=n(40),j=n(357),O=n(23);function N(e){var t=Object(j.a)(),n=Object(u.k)(),a=x()("sid:blocklet:purchase:".concat(e)),r=Object(c.a)(a,2),o=r[0],i=r[1],l=Object(s.useState)(!1),m=Object(c.a)(l,2),p=m[0],d=m[1],f=Object(s.useState)(null),h=Object(c.a)(f,2),b=h[0],g=h[1],v=function(){var e=new URL(window.location.href),t=e.pathname,a=e.searchParams,r=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/";a.get("sid")&&(i(""),n.replace(t.replace(r,"/")))},y=!(!t.get("assetDid")||!o||t.get("sid")!==o);return Object(O.c)(_.BlockletEvents.purchaseChange,(function(t){t.did===e&&(g(t.session),["declined","confirmed","error"].includes(t.session.status)&&(d(!0),setTimeout(v,2e3)))})),Object(s.useEffect)((function(){b&&b.id!==o&&i(b.id)}),[b]),{hasCompleted:p,hasPurchased:y,session:b,setSession:g,doRedirect:v}}var A=n(337),C=n(105),P=n.n(C),B=n(320),S=n(939),R=n.n(S),L=n(867),z=n(868),T=n(884),U=n(920),M=n(1151),D=n.n(M),F=n(1152),q=n.n(F),W=n(148),K=n.n(W),V=n(152),J=n.n(V),I=n(53),H=n(29),Y=Object(B.a)((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}}}));var G=Object(s.forwardRef)((function(e){var t=e.meta,n=e.mode,a=e.onCancel,i=Object(v.useLocaleContext)(),u=i.t,m=i.locale,p=Object(H.c)(),d=p.info,b=p.api,y=Object(I.c)().api,k=Y(),E=Object(s.useState)("both"!==n?n:""),x=Object(c.a)(E,2),_=x[0],j=x[1],O=Object(s.useState)("both"!==n?2:1),A=Object(c.a)(O,2),C=A[0],B=A[1],S=N(t.did),M=S.session,F=S.setSession,W=S.hasCompleted,V=S.doRedirect,G=Object(w.x)(d),Q=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/",X=function(){var e=Object(o.a)(r.a.mark((function e(t){return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==_){e.next=2;break}return e.abrupt("return");case 2:j(t);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Z=function(){var e=Object(o.a)(r.a.mark((function e(){var n,a,c;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(_){e.next=2;break}return e.abrupt("return");case 2:if(2!==C){e.next=4;break}return e.abrupt("return");case 4:return n=JSON.stringify({blockletDid:t.did,registryUrl:d.blockletRegistry,action:_}),e.next=7,b.startSession({input:{data:n}});case 7:a=e.sent,c=a.session,F(c),B(2),"purchase"===_&&setTimeout(Object(o.a)(r.a.mark((function e(){var n,a,o,i,s,l;return r.a.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",c.id),n.searchParams.set("locale",m),a=encodeURIComponent(n.href),(o=new URL(window.location.href)).pathname=P()(Q,"/api/did/verify-purchase/token"),o.searchParams.set("sid",c.id),o.searchParams.set("locale",m),o.searchParams.set("autoConnect","false"),e.next=12,y.get(o.href);case 12:i=e.sent,s=i.data,l=encodeURIComponent(s.url),window.location.href=P()(d.blockletRegistry,"/store/purchase/".concat(t.nftFactory,"?cb=").concat(a,"&nw=").concat(l));case 16:case"end":return e.stop()}}),e)}))),100);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),$=function(){V(),a(),B(1)},ee=[{action:"purchase",title:u("store.purchase.purchase.title"),description:u("store.purchase.purchase.description")},{action:"verify",title:u("store.purchase.verify.title"),description:u("store.purchase.verify.description")}];return 2===C&&"verify"===_&&M?l.a.createElement(K.a,{popup:!0,open:!0,className:k.dialogAuth,action:"verify-purchase",checkFn:y.get,checkTimeout:6e5,socketUrl:y.socketUrl,webWalletUrl:G,extraParams:{locale:m,sid:M.id},onSuccess:function(){setTimeout(a,2e3)},onClose:$,showDownload:!1,locale:m,messages:{title:u("store.purchase.auth.title"),scan:u("store.purchase.auth.scan"),confirm:u("store.purchase.auth.confirm"),success:u("store.purchase.auth.success")}}):l.a.createElement(R.a,{title:u(_&&2===C?"store.purchase.".concat(_,".title"):"store.purchase.title"),disableBackdropClick:!0,disableEscapeKeyDown:!0,open:!0,fullWidth:!0,onClose:$},1===C&&l.a.createElement("div",{style:{marginBottom:16}},l.a.createElement(L.a,{className:k.tabPanel},ee.map((function(e){return l.a.createElement(z.a,{button:!0,key:e.action,selected:_===e.action,onClick:function(){return X(e.action)}},l.a.createElement(U.a,{className:k.iconRoot},"purchase"===e.action?l.a.createElement(D.a,{style:{color:"purchase"===_?J.a.primary.main:"#AAA",fontSize:32}}):l.a.createElement(q.a,{style:{color:"verify"===_?J.a.primary.main:"#AAA",fontSize:32}})),l.a.createElement(T.a,{primary:e.title,secondary:e.description}))}))),l.a.createElement(g.a,{rounded:!0,fullWidth:!0,disabled:!_,variant:"contained",color:"primary",style:{marginTop:16},onClick:Z},u("common.next"))),2===C&&"purchase"===_&&l.a.createElement("div",{style:{textAlign:"center"}},!W&&l.a.createElement(f.a,null),l.a.createElement(h.a,{component:"p"},function(){if(M){if("confirmed"===M.status)return u("store.purchase.confirmed");if("declined"===M.status)return u("store.purchase.declined");if("error"===M.status)return M.message}return u("store.purchase.waiting")}())))})),Q=["meta","lastVersion","buttonText","registryUrl"];function X(e){var t=e.meta,n=e.lastVersion,a=e.buttonText,d=e.registryUrl,b=Object(i.a)(e,Q),E=Object(p.c)().enqueueSnackbar,x=Object(v.useLocaleContext)().t,_=Object(u.k)(),j=Object(k.b)(),O=j.api,C=j.data.find((function(e){return e.meta.did===t.did}))||{},P=Object(s.useMemo)((function(){return!!C.status}),[C.status]),B=Object(s.useMemo)((function(){var e;return P?null===(e=C.meta)||void 0===e?void 0:e.version:null}),[P,C.meta]),S=!1===Object(m.isFreeBlocklet)(t),R=Object(s.useState)(!1),L=Object(c.a)(R,2),z=L[0],T=L[1],U=N(t.did).hasPurchased,M=Object(s.useState)(!1),D=Object(c.a)(M,2),F=D[0],q=D[1],W=Object(s.useMemo)((function(){return z?x(P?"blocklet.status.upgrading":S?"blocklet.status.purchasing":"blocklet.status.waiting"):Object(w.A)(C.status)?x("common.".concat(C.status)):""}),[z,C.status,P,x,S]),K=Object(s.useMemo)((function(){return!(!n||!B)&&!(!n||!Object(y.gt)(n,B))}),[n,B]),V=Object(s.useMemo)((function(){return K?a.upgrade:P?a.open:S?a.purchase:a.install}),[P,K,S,a]),J=Object(s.useMemo)((function(){return!(P&&!K)}),[P,K]),I=function(){var e=Object(o.a)(r.a.mark((function e(n){var a;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.preventDefault(),n.stopPropagation(),e.prev=2,T(!0),P||!S){e.next=7;break}return q(!0),e.abrupt("return");case 7:return a=P?"upgradeBlocklet":"installBlocklet",e.next=10,O[a]({input:{did:t.did,registryUrl:d}});case 10:e.next=16;break;case 12:e.prev=12,e.t0=e.catch(2),E(Object(w.g)(e.t0),{autoHideDuration:5e3,variant:"error"}),console.error("Blocklet installed failed",e.t0);case 16:return e.prev=16,T(!1),e.finish(16);case 19:case"end":return e.stop()}}),e,null,[[2,12,16,19]])})));return function(t){return e.apply(this,arguments)}}(),H=function(e){var n=e.disabled;return l.a.createElement(g.a,Object.assign({key:t.did,onClick:I,size:"small",disabled:Boolean(W||n),variant:"contained",color:"primary","data-cy":"install-blocklet",rounded:!0},b),W?l.a.createElement(l.a.Fragment,null,l.a.createElement(f.a,{size:[16,10],style:{marginRight:3}}),W):V)};H.defaultProps={disabled:!1};return l.a.createElement(l.a.Fragment,null,l.a.createElement("div",null,J?l.a.createElement(A.a,{permission:"mutate_blocklet"},(function(e){return l.a.createElement(H,{disabled:!e})})):l.a.createElement(g.a,{rounded:!0,className:"action-button",variant:"contained",color:"primary",size:"small",disabled:Boolean(W),"data-cy":"open-blocklet",onClick:function(e){var n;e.preventDefault(),e.stopPropagation(),_.push("/blocklets/".concat(t.did,"/").concat((n=C)&&(n.configs||[]).some((function(e){return e.required&&!e.value}))?"configuration":"overview"))}},W?l.a.createElement(l.a.Fragment,null,l.a.createElement(f.a,{size:[16,10],style:{marginRight:3}}),W):V),P&&S&&l.a.createElement(h.a,{component:"small",style:{fontSize:12,color:"#666",marginLeft:4}},x("blocklet.status.purchased"))),(U&&!P||F)&&l.a.createElement(G,{meta:t,mode:U?"purchase":"both",onCancel:function(){T(!1),q(!1)}}))}X.defaultProps={lastVersion:""}},1539:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return Z}));var a,r=n(32),o=n(11),c=n.n(o),i=n(19),s=n(13),l=n(0),u=n.n(l),m=n(14),p=n(356),d=n.n(p),f=n(30),h=n(59),b=n(105),g=n.n(b),v=n(50),y=n.n(v),k=n(63),w=n(926),E=n(880),x=n(189),_=n.n(x),j=n(1326),O=n.n(j),N=n(339),A=n.n(N),C=n(955),P=n(22),B=(n(1327),n(1328),n(117)),S=n(536),R=n.n(S),L=["stats"];function z(e){var t=e.stats,n=Object(B.a)(e,L),a=Object(l.useContext)(P.LocaleContext).t;return t.downloads=t.downloads||0,u.a.createElement(T,Object.assign({component:"p"},n),u.a.createElement("span",{className:"blocklet__stat",title:a("blocklet.list.download")},u.a.createElement(R.a,{name:"arrow-to-bottom",size:14,className:"blocklet__stat__icon"}),t.downloads),!!t.star&&u.a.createElement("span",{className:"blocklet__stat",title:a("blocklet.list.star")},u.a.createElement(R.a,{name:"heart",size:14,className:"blocklet__stat__icon"}),t.star))}var T=Object(m.default)(k.a)(a||(a=Object(r.a)(["\n .blocklet__stat {\n margin-right: 16px;\n font-size: 14px;\n font-weight: 500;\n color: #999;\n &:last-child {\n // \u7406\u8bba\u4e0a\u9700\u8981\u8bbe\u7f6e\u62100\uff0c\u4f46\u89c6\u89c9\u6548\u679c\u4e0d\u662f\u5f88\u597d\uff0c\u52a0\u4e0a\u4e86\u4e00\u4e2a\u5c0f\u7684\u95f4\u8ddd\n margin-right: 5px;\n }\n\n .blocklet__stat__icon {\n margin-right: 4px;\n color: inherit !important;\n }\n }\n"]))),U=n(1329),M=n.n(U),D=n(5),F=n.n(D),q=n(532),W=n.n(q),K=n(1348),V=n.n(K);V.a.propTypes={children:F.a.node.isRequired};var J={pre:function(e){var t=e.children;if(!Array.isArray(W()(t,"[0].props.children")))return null;var n=t[0].props,a=n.className,r=Object(s.a)(n.children,1)[0],o=(a||"").split("-").pop();return r?u.a.createElement(V.a,{language:o||"shell",code:r}):null},alert:A.a,p:function(e){return u.a.createElement(k.a,Object.assign({variant:"body1"},e))},h2:function(e){return u.a.createElement(k.a,Object.assign({variant:"h3"},e))},h3:function(e){return u.a.createElement(k.a,Object.assign({variant:"h4"},e))},h4:function(e){return u.a.createElement(k.a,Object.assign({variant:"h5"},e))},h5:function(e){return u.a.createElement(k.a,Object.assign({variant:"h5"},e))},h6:function(e){return u.a.createElement(k.a,Object.assign({variant:"h6"},e))}};var I,H,Y=new M.a({createElement:function(e,t,n){var a=J&&e&&J[e]||e||"div";return u.a.createElement(a,t,n)}}).Compiler,G=n(1179),Q=n(29),X=n(64);function Z(){var e=Object(f.m)().did,t=Object(Q.c)(),n=t.api,a=t.info,r=Object(P.useLocaleContext)().t,o=Object(l.useState)([]),m=Object(s.a)(o,2),p=m[0],b=m[1],v=a.blockletRegistryList.find((function(e){return e.selected})),x=d()(Object(i.a)(c.a.mark((function t(){var r,o;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.getBlockletMeta({input:{did:e,registryUrl:a.blockletRegistry}});case 2:return r=t.sent,o=r.meta,b(o.version),t.abrupt("return",o);case 6:case"end":return t.stop()}}),t)})))),j=function(){var e=Object(i.a)(c.a.mark((function e(t){var a,r,o,i;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.action,r=t.version,o=t.blocklet,e.prev=1,i="install"===a?"installBlocklet":"upgradeBlocklet",e.next=5,n[i]({input:{did:o.did,version:r}});case 5:x.retry(),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(1),console.error("Blocklet ".concat(a," failed"),e.t0);case 11:case"end":return e.stop()}}),e,null,[[1,8]])})));return function(t){return e.apply(this,arguments)}}(),N=null,B=Object(l.useMemo)((function(){return Object(X.h)(x.value)}),[x.value]);if(x.value){var S=x.value,R=S.name,L=S.version,T=S.keywords,U=S.htmlAst,M=S.stats,D=S.screenshots,F=void 0===D?[]:D,q=S.author,W=S.documentation,K=S.repository,V=S.community,J=S.support,I=S.title,H=S.lastPublishedAt,Z=S.color,$=void 0===Z?"primary":Z;U&&U.children&&Array.isArray(U.children)&&function e(t,n){t.forEach((function(t){t.tagName&&"img"===t.tagName&&t.properties&&t.properties.src&&!t.properties.src.startsWith("http")&&(t.properties.src=g()(n,"/".concat(t.properties.src)),t.properties.srcSet&&Array.isArray(t.properties.srcSet)&&(t.properties.srcSet=t.properties.srcSet.map((function(e){return e.startsWith("http")?e:g()(n,e)})))),t.children&&Array.isArray(t.children)&&t.children.length>0&&e(t.children,n)}))}(U.children,a.blockletRegistry);var ne=I||R;N=u.a.createElement(ee,{color:$},u.a.createElement("div",{className:"meta"},u.a.createElement(k.a,{component:"h2",variant:"h2",className:"title"},ne,u.a.createElement("span",{className:"payment"},u.a.createElement("span",{className:"payment__price"},Object(C.isFreeBlocklet)(x.value)?r("common.free"):B.map((function(e){return"".concat(e.value," ").concat(e.name)})).join(" + ")),u.a.createElement("span",{className:"payment__tip"},Object(C.isFreeBlocklet)(x.value)?"This blocklet is free to use":"You need to pay to use this blocklet"))),u.a.createElement(z,{stats:M,className:"blocklet__stats"}),u.a.createElement(k.a,{component:"p",className:"tags"},u.a.createElement(_.a,{className:"tag",type:"reverse"},"v",L),Array.isArray(T)&&T.length>0&&T.map((function(e){return u.a.createElement(_.a,{className:"tag",key:e},e)})))),u.a.createElement("div",{className:"markdown-body"},u.a.createElement(E.a,{container:!0,spacing:4},F.length>0?u.a.createElement(E.a,{item:!0,xs:12,md:8},u.a.createElement(O.a,{lazyLoad:!0,showNav:!1,showThumbnails:!0,showPlayButton:!1,showFullscreenButton:!1,showBullets:!0,items:F.map((function(t){return{original:g()(a.blockletRegistry,Object(X.l)(e,t)),thumbnail:g()(a.blockletRegistry,Object(X.l)(e,t))}}))})):u.a.createElement(E.a,{item:!0,xs:12,md:8},u.a.createElement(te,{component:"div",className:"content-wrapper post-content"},Y(U))),u.a.createElement(E.a,{item:!0,xs:12,md:4},u.a.createElement(G.a,{meta:x.value,lastVersion:p,onSubmit:j,className:"action-button",buttonText:{purchase:r("store.detail.purchase",{name:ne}),open:r("store.detail.open",{name:ne}),install:r("store.detail.install",{name:ne}),upgrade:r("store.detail.upgrade",{name:ne})},registryUrl:v.url}),u.a.createElement(k.a,{component:"ul",className:"meta-info"},!!q&&u.a.createElement("li",{className:"meta-info__row"},u.a.createElement("span",{className:"info-row__key"},r("common.author")),u.a.createElement("span",{className:"info-row__value"},Object(X.j)(q))),!!K&&!!K.url&&u.a.createElement("li",{className:"meta-info__row"},u.a.createElement("span",{className:"info-row__key"},r("common.repository")),u.a.createElement("a",{href:Object(X.E)(K.url),target:"_blank",className:"info-row__value",title:K.type},Object(X.E)(K.url))),!!V&&u.a.createElement("li",{className:"meta-info__row"},u.a.createElement("span",{className:"info-row__key"},r("common.community")),u.a.createElement("a",{href:V,target:"_blank",className:"info-row__value"},V)),!!W&&u.a.createElement("li",{className:"meta-info__row"},u.a.createElement("span",{className:"info-row__key"},r("common.documentation")),u.a.createElement("a",{href:W,target:"_blank",className:"info-row__value"},W)),!!J&&u.a.createElement("li",{className:"meta-info__row"},u.a.createElement("span",{className:"info-row__key"},r("common.support")),u.a.createElement("a",{href:"mailto:".concat(J),target:"_blank",className:"info-row__value"},J)),H&&u.a.createElement("li",{className:"meta-info__row"},u.a.createElement("span",{className:"info-row__key"},r("common.lastPublishedAt")),u.a.createElement("span",{className:"info-row__value",title:Object(X.p)(H)},Object(X.n)(H)))))),F.length>0&&u.a.createElement(te,{component:"div",className:"content-wrapper post-content"},Y(U))))}else N=x.error?u.a.createElement(A.a,{type:"error",variant:"icon"},Object(X.g)(x.error)):u.a.createElement(y.a,null);return u.a.createElement("main",null,u.a.createElement(w.a,{separator:"\u203a","aria-label":"breadcrumb",className:"page-breadcrumb"},u.a.createElement(h.Link,{color:"secondary",to:"/store"},u.a.createElement(k.a,{color:"secondary"},r("common.store"))),u.a.createElement(k.a,{color:"textPrimary"},v.name),u.a.createElement(k.a,{color:"textPrimary"},r("common.detail"))),N)}var $="source-code-pro, Menlo, Monaco, Consolas, Courier New, monospace !important",ee=m.default.div(I||(I=Object(r.a)(["\n margin: 24px 0;\n\n .title {\n font-size: 40px;\n font-weight: bold;\n color: ",";\n margin-bottom: 10px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n @media (max-width: ","px) {\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n }\n }\n\n .payment {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n @media (max-width: ","px) {\n margin-top: 16px;\n align-items: flex-start;\n }\n\n .payment__price {\n margin-bottom: 8px;\n color: ",";\n }\n\n .payment__tip {\n font-size: 14px;\n color: ",";\n font-weight: normal;\n }\n }\n\n .blocklet__stats {\n margin-bottom: 16px;\n }\n\n .tags {\n margin: 16px 0 48px;\n @media (max-width: ","px) {\n margin-bottom: 32px;\n }\n\n .tag {\n margin-right: 8px;\n text-transform: capitalize;\n &:last-of-type {\n margin-right: 0;\n }\n }\n }\n\n .action-button {\n width: 100%;\n padding: 8px 22px;\n border-radius: 0 !important;\n }\n\n .meta-info {\n list-style: none;\n padding: 0;\n margin: 24px 0;\n\n .meta-info__row {\n display: flex;\n line-height: 2;\n }\n\n .info-row__key {\n width: 130px;\n flex-shrink: 0;\n font-weight: 500;\n }\n .info-row__value {\n white-space: break-word;\n word-break: break-all;\n }\n }\n\n .sidebar-buttons {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .use-button {\n width: 100%;\n }\n\n .image-gallery {\n .image-gallery-thumbnail.active {\n border-color: ",";\n }\n .image-gallery-bullets .image-gallery-bullet {\n border-color: ",";\n box-shadow: none;\n }\n .image-gallery-bullets .image-gallery-bullet.active {\n background-color: ",";\n }\n .image-gallery-slide {\n .image-gallery-image {\n display: flex;\n justify-content: center;\n img {\n max-height: 600px !important;\n width: auto;\n margin: 0 auto;\n @media (max-width: ","px) {\n height: auto;\n max-height: auto;\n }\n }\n }\n }\n }\n\n .markdown-body .highlight pre,\n .markdown-body pre {\n background-color: #222;\n border-radius: 5px;\n }\n .markdown-body code {\n font-family: ",";\n }\n .markdown-body pre code {\n color: #fff;\n font-size: 14px;\n font-family: ",";\n }\n\n .markdown-body h1,\n .markdown-body h2,\n .markdown-body h3,\n .markdown-body h4,\n .markdown-body h5,\n .markdown-body h6 {\n font-weight: 600;\n line-height: 1.25;\n margin-bottom: 16px;\n margin-top: 24px;\n border-bottom: none;\n }\n\n .markdown-body .CodeMirror pre {\n background: #f6f8fa !important;\n }\n\n .markdown-body .anchor {\n display: none;\n }\n"])),(function(e){return e.theme.palette.text.primary}),(function(e){return e.theme.breakpoints.values.sm}),(function(e){return e.theme.breakpoints.values.sm}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.text.primary}),(function(e){return e.theme.breakpoints.values.sm}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.breakpoints.values.sm}),$,$),te=Object(m.default)(k.a)(H||(H=Object(r.a)(["\n width: 100%;\n word-wrap: break-word;\n word-break: break-word;\n line-height: 1.5em;\n\n .alert-content {\n max-width: 100%;\n p:last-of-type {\n margin-bottom: 0;\n }\n }\n\n iframe {\n width: 100% !important;\n }\n\n a {\n color: ",";\n }\n"])),(function(e){return e.theme.palette.primary.main}))},955:function(e,t,n){var a=n(11),r=n(262),o=n(966),c=n(532),i=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},c=n.parallel,i=void 0!==c&&c,s=n.sync;if(s){if(t(e),e.children){var l,u=o(e.children);try{for(u.s();!(l=u.n()).done;){var m=l.value;t(m)}}catch(b){u.e(b)}finally{u.f()}}return null}if(!i)return r(a.mark((function n(){var r,c,i;return a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,t(e);case 2:if(!e.children){n.next=20;break}r=o(e.children),n.prev=4,r.s();case 6:if((c=r.n()).done){n.next=12;break}return i=c.value,n.next=10,t(i);case 10:n.next=6;break;case 12:n.next=17;break;case 14:n.prev=14,n.t0=n.catch(4),r.e(n.t0);case 17:return n.prev=17,r.f(),n.finish(17);case 20:return n.abrupt("return",null);case 21:case"end":return n.stop()}}),n,null,[[4,14,17,20]])})))();var p=[];if(p.push(t(e)),e.children){var d,f=o(e.children);try{for(f.s();!(d=f.n()).done;){var h=d.value;p.push(t(h))}}catch(b){f.e(b)}finally{f.f()}}return Promise.all(p)};e.exports={isFreeBlocklet:function(e){return!e.payment||(e.payment.price||[]).map((function(e){return e.value||0})).every((function(e){return 0===e}))},isDeletableBlocklet:function(e){if(!e)return!1;var t=e.environments.find((function(e){return"BLOCKLET_DELETABLE"===e.key}));return!t||"yes"===t.value},forEachBlocklet:i,isAuthServiceEnabled:function e(t){if((c(t,"meta.interfaces")||[]).some((function(e){return(c(e,"services")||[]).some((function(e){return"@abtnode/auth-service"===e.name}))})))return!0;var n,a=c(t,"children")||[],r=o(a);try{for(r.s();!(n=r.n()).done;){if(e(n.value))return!0}}catch(i){r.e(i)}finally{r.f()}return!1},getRequiredMissingConfigs:function(e){var t=[],n=e.configs||[];n.forEach((function(n){n.required&&!n.value&&t.push({did:e.meta.did,key:n.key})}));var a,r=o(e.children||[]);try{var c=function(){var e=a.value;(e.configs||[]).forEach((function(a){!a.required||a.value||n.some((function(e){return e.key===a.key&&e.value}))||t.push({did:e.meta.did,key:a.key})}))};for(r.s();!(a=r.n()).done;)c()}catch(i){r.e(i)}finally{r.f()}return t},wipeSensitiveData:function(e){return e?(i(e,(function(t){(t.configs||[]).forEach((function(e){e.secure&&(e.value=e.value?"__encrypted__":"")})),(t.environments||[]).forEach((function(e){["BLOCKLET_APP_SK"].includes(e.key)&&(e.value="__encrypted__")})),delete e.configObj,delete e.environmentObj}),{sync:!0}),e):e}}}}]);
2
+ //# sourceMappingURL=23.32485069.chunk.js.map