@abtnode/webapp 1.6.29 → 1.6.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/blocklet.yml CHANGED
@@ -8,4 +8,4 @@ adminUrl: /
8
8
  author: 'wangshijun <shijun@arcblock.io> https://github.com/wangshijun'
9
9
  did: z8ia4j7CLkF3VwpQE7Ee677eostWTu2FTxsip
10
10
  specVersion: 1.0.0
11
- gitHash: 0d02246307d364e952990b3e64b608dfefc80efe
11
+ gitHash: d8ea64b807f7852186cd4bf544193496fbb31e7c
@@ -10,10 +10,10 @@
10
10
  "static/js/3.3b63531d.chunk.js.map": "./static/js/3.3b63531d.chunk.js.map",
11
11
  "static/js/4.8d466bc5.chunk.js": "./static/js/4.8d466bc5.chunk.js",
12
12
  "static/js/4.8d466bc5.chunk.js.map": "./static/js/4.8d466bc5.chunk.js.map",
13
- "main.js": "./static/js/main.0718e9a3.chunk.js",
14
- "main.js.map": "./static/js/main.0718e9a3.chunk.js.map",
15
- "runtime-main.js": "./static/js/runtime-main.30015ec0.js",
16
- "runtime-main.js.map": "./static/js/runtime-main.30015ec0.js.map",
13
+ "main.js": "./static/js/main.1726136e.chunk.js",
14
+ "main.js.map": "./static/js/main.1726136e.chunk.js.map",
15
+ "runtime-main.js": "./static/js/runtime-main.3327b730.js",
16
+ "runtime-main.js.map": "./static/js/runtime-main.3327b730.js.map",
17
17
  "static/css/7.9f1cbcd7.chunk.css": "./static/css/7.9f1cbcd7.chunk.css",
18
18
  "static/js/7.2619097f.chunk.js": "./static/js/7.2619097f.chunk.js",
19
19
  "static/js/7.2619097f.chunk.js.map": "./static/js/7.2619097f.chunk.js.map",
@@ -59,12 +59,12 @@
59
59
  "static/js/26.52e9917c.chunk.js.map": "./static/js/26.52e9917c.chunk.js.map",
60
60
  "static/js/27.b52625a1.chunk.js": "./static/js/27.b52625a1.chunk.js",
61
61
  "static/js/27.b52625a1.chunk.js.map": "./static/js/27.b52625a1.chunk.js.map",
62
- "static/js/28.3c737697.chunk.js": "./static/js/28.3c737697.chunk.js",
63
- "static/js/28.3c737697.chunk.js.map": "./static/js/28.3c737697.chunk.js.map",
62
+ "static/js/28.58a6c007.chunk.js": "./static/js/28.58a6c007.chunk.js",
63
+ "static/js/28.58a6c007.chunk.js.map": "./static/js/28.58a6c007.chunk.js.map",
64
64
  "static/js/29.7a1c145f.chunk.js": "./static/js/29.7a1c145f.chunk.js",
65
65
  "static/js/29.7a1c145f.chunk.js.map": "./static/js/29.7a1c145f.chunk.js.map",
66
66
  "index.html": "./index.html",
67
- "precache-manifest.f291a513cad3fe0fa96e294ed8b7b760.js": "./precache-manifest.f291a513cad3fe0fa96e294ed8b7b760.js",
67
+ "precache-manifest.6197d7441412bd03df95fb006558974b.js": "./precache-manifest.6197d7441412bd03df95fb006558974b.js",
68
68
  "service-worker.js": "./service-worker.js",
69
69
  "static/css/20.6391f1d6.chunk.css.map": "./static/css/20.6391f1d6.chunk.css.map",
70
70
  "static/css/7.9f1cbcd7.chunk.css.map": "./static/css/7.9f1cbcd7.chunk.css.map",
@@ -91,9 +91,9 @@
91
91
  "static/media/600.css": "./static/media/rubik-latin-ext-600-normal.ff159cb8.woff2"
92
92
  },
93
93
  "entrypoints": [
94
- "static/js/runtime-main.30015ec0.js",
94
+ "static/js/runtime-main.3327b730.js",
95
95
  "static/css/7.9f1cbcd7.chunk.css",
96
96
  "static/js/7.2619097f.chunk.js",
97
- "static/js/main.0718e9a3.chunk.js"
97
+ "static/js/main.1726136e.chunk.js"
98
98
  ]
99
99
  }
package/build/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><base href="/"/><meta charset="utf-8"/><link rel="shortcut icon" href="favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="manifest.json"/><link rel="stylesheet" href="icons/css/all.css"/><title>Blocklet Server</title><script src="api/env"></script><link href="./static/css/7.9f1cbcd7.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,c,d=t[0],u=t[1],i=t[2],l=t[3]||[],s=0,h=[];s<d.length;s++)c=d[s],Object.prototype.hasOwnProperty.call(o,c)&&o[c]&&h.push(o[c][0]),o[c]=0;for(n in u)Object.prototype.hasOwnProperty.call(u,n)&&(e[n]=u[n]);for(p&&p(t),f.push.apply(f,l);h.length;)h.shift()();return a.push.apply(a,i||[]),r()}function r(){for(var e,t=0;t<a.length;t++){for(var r=a[t],n=!0,c=1;c<r.length;c++){var i=r[c];0!==o[i]&&(n=!1)}n&&(a.splice(t--,1),e=u(u.s=r[0]))}return 0===a.length&&(f.forEach((function(e){if(void 0===o[e]){o[e]=null;var t=document.createElement("link");u.nc&&t.setAttribute("nonce",u.nc),t.rel="prefetch",t.as="script",t.href=d(e),document.head.appendChild(t)}})),f.length=0),e}var n={},c={6:0},o={6:0},a=[],f=[];function d(e){return u.p+"static/js/"+({}[e]||e)+"."+{0:"b1215dfb",1:"e6ba5ff4",2:"e9ce4a30",3:"3b63531d",4:"8d466bc5",8:"7e4322b9",9:"306192e7",10:"15e90dc1",11:"bd053858",12:"ac38ec76",13:"0ede626f",14:"b2a28774",15:"c01e6893",16:"33c1e9a1",17:"d6ab9051",18:"a6343ce5",19:"82b01a50",20:"0813a332",21:"d4925850",22:"bfef42e5",23:"3771562b",24:"2045b233",25:"1b63315d",26:"52e9917c",27:"b52625a1",28:"3c737697",29:"7a1c145f"}[e]+".chunk.js"}function u(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,u),r.l=!0,r.exports}u.e=function(e){var t=[];c[e]?t.push(c[e]):0!==c[e]&&{8:1,20:1}[e]&&t.push(c[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{0:"31d6cfe0",1:"31d6cfe0",2:"31d6cfe0",3:"31d6cfe0",4:"31d6cfe0",8:"1cefc4d5",9:"31d6cfe0",10:"31d6cfe0",11:"31d6cfe0",12:"31d6cfe0",13:"31d6cfe0",14:"31d6cfe0",15:"31d6cfe0",16:"31d6cfe0",17:"31d6cfe0",18:"31d6cfe0",19:"31d6cfe0",20:"6391f1d6",21:"31d6cfe0",22:"31d6cfe0",23:"31d6cfe0",24:"31d6cfe0",25:"31d6cfe0",26:"31d6cfe0",27:"31d6cfe0",28:"31d6cfe0",29:"31d6cfe0"}[e]+".chunk.css",o=u.p+n,a=document.getElementsByTagName("link"),f=0;f<a.length;f++){var d=(l=a[f]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(d===n||d===o))return t()}var i=document.getElementsByTagName("style");for(f=0;f<i.length;f++){var l;if((d=(l=i[f]).getAttribute("data-href"))===n||d===o)return t()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=t,s.onerror=function(t){var n=t&&t.target&&t.target.src||o,a=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");a.code="CSS_CHUNK_LOAD_FAILED",a.request=n,delete c[e],s.parentNode.removeChild(s),r(a)},s.href=o,document.getElementsByTagName("head")[0].appendChild(s)})).then((function(){c[e]=0})));var r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var a,f=document.createElement("script");f.charset="utf-8",f.timeout=120,u.nc&&f.setAttribute("nonce",u.nc),f.src=d(e);var i=new Error;a=function(t){f.onerror=f.onload=null,clearTimeout(l);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+c+")",i.name="ChunkLoadError",i.type=n,i.request=c,r[1](i)}o[e]=void 0}};var l=setTimeout((function(){a({type:"timeout",target:f})}),12e4);f.onerror=f.onload=a,document.head.appendChild(f)}return Promise.all(t)},u.m=e,u.c=n,u.d=function(e,t,r){u.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,t){if(1&t&&(e=u(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(u.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)u.d(r,n,function(t){return e[t]}.bind(null,n));return r},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,"a",t),t},u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u.p="./",u.oe=function(e){throw console.error(e),e};var i=this["webpackJsonp@abtnode/webapp"]=this["webpackJsonp@abtnode/webapp"]||[],l=i.push.bind(i);i.push=t,i=i.slice();for(var s=0;s<i.length;s++)t(i[s]);var p=l;r()}([])</script><script src="./static/js/7.2619097f.chunk.js"></script><script src="./static/js/main.0718e9a3.chunk.js"></script></body></html>
1
+ <!doctype html><html lang="en"><head><base href="/"/><meta charset="utf-8"/><link rel="shortcut icon" href="favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="manifest.json"/><link rel="stylesheet" href="icons/css/all.css"/><title>Blocklet Server</title><script src="api/env"></script><link href="./static/css/7.9f1cbcd7.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,c,d=t[0],u=t[1],i=t[2],l=t[3]||[],s=0,h=[];s<d.length;s++)c=d[s],Object.prototype.hasOwnProperty.call(o,c)&&o[c]&&h.push(o[c][0]),o[c]=0;for(n in u)Object.prototype.hasOwnProperty.call(u,n)&&(e[n]=u[n]);for(p&&p(t),f.push.apply(f,l);h.length;)h.shift()();return a.push.apply(a,i||[]),r()}function r(){for(var e,t=0;t<a.length;t++){for(var r=a[t],n=!0,c=1;c<r.length;c++){var i=r[c];0!==o[i]&&(n=!1)}n&&(a.splice(t--,1),e=u(u.s=r[0]))}return 0===a.length&&(f.forEach((function(e){if(void 0===o[e]){o[e]=null;var t=document.createElement("link");u.nc&&t.setAttribute("nonce",u.nc),t.rel="prefetch",t.as="script",t.href=d(e),document.head.appendChild(t)}})),f.length=0),e}var n={},c={6:0},o={6:0},a=[],f=[];function d(e){return u.p+"static/js/"+({}[e]||e)+"."+{0:"b1215dfb",1:"e6ba5ff4",2:"e9ce4a30",3:"3b63531d",4:"8d466bc5",8:"7e4322b9",9:"306192e7",10:"15e90dc1",11:"bd053858",12:"ac38ec76",13:"0ede626f",14:"b2a28774",15:"c01e6893",16:"33c1e9a1",17:"d6ab9051",18:"a6343ce5",19:"82b01a50",20:"0813a332",21:"d4925850",22:"bfef42e5",23:"3771562b",24:"2045b233",25:"1b63315d",26:"52e9917c",27:"b52625a1",28:"58a6c007",29:"7a1c145f"}[e]+".chunk.js"}function u(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,u),r.l=!0,r.exports}u.e=function(e){var t=[];c[e]?t.push(c[e]):0!==c[e]&&{8:1,20:1}[e]&&t.push(c[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{0:"31d6cfe0",1:"31d6cfe0",2:"31d6cfe0",3:"31d6cfe0",4:"31d6cfe0",8:"1cefc4d5",9:"31d6cfe0",10:"31d6cfe0",11:"31d6cfe0",12:"31d6cfe0",13:"31d6cfe0",14:"31d6cfe0",15:"31d6cfe0",16:"31d6cfe0",17:"31d6cfe0",18:"31d6cfe0",19:"31d6cfe0",20:"6391f1d6",21:"31d6cfe0",22:"31d6cfe0",23:"31d6cfe0",24:"31d6cfe0",25:"31d6cfe0",26:"31d6cfe0",27:"31d6cfe0",28:"31d6cfe0",29:"31d6cfe0"}[e]+".chunk.css",o=u.p+n,a=document.getElementsByTagName("link"),f=0;f<a.length;f++){var d=(l=a[f]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(d===n||d===o))return t()}var i=document.getElementsByTagName("style");for(f=0;f<i.length;f++){var l;if((d=(l=i[f]).getAttribute("data-href"))===n||d===o)return t()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=t,s.onerror=function(t){var n=t&&t.target&&t.target.src||o,a=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");a.code="CSS_CHUNK_LOAD_FAILED",a.request=n,delete c[e],s.parentNode.removeChild(s),r(a)},s.href=o,document.getElementsByTagName("head")[0].appendChild(s)})).then((function(){c[e]=0})));var r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var a,f=document.createElement("script");f.charset="utf-8",f.timeout=120,u.nc&&f.setAttribute("nonce",u.nc),f.src=d(e);var i=new Error;a=function(t){f.onerror=f.onload=null,clearTimeout(l);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+c+")",i.name="ChunkLoadError",i.type=n,i.request=c,r[1](i)}o[e]=void 0}};var l=setTimeout((function(){a({type:"timeout",target:f})}),12e4);f.onerror=f.onload=a,document.head.appendChild(f)}return Promise.all(t)},u.m=e,u.c=n,u.d=function(e,t,r){u.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,t){if(1&t&&(e=u(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(u.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)u.d(r,n,function(t){return e[t]}.bind(null,n));return r},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,"a",t),t},u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u.p="./",u.oe=function(e){throw console.error(e),e};var i=this["webpackJsonp@abtnode/webapp"]=this["webpackJsonp@abtnode/webapp"]||[],l=i.push.bind(i);i.push=t,i=i.slice();for(var s=0;s<i.length;s++)t(i[s]);var p=l;r()}([])</script><script src="./static/js/7.2619097f.chunk.js"></script><script src="./static/js/main.1726136e.chunk.js"></script></body></html>
@@ -1,6 +1,6 @@
1
1
  self.__precacheManifest = (self.__precacheManifest || []).concat([
2
2
  {
3
- "revision": "cba729e7081f6457bc646b6ec2c93c9c",
3
+ "revision": "ee9b59250d2efccff5bb3b7cf9de8fa7",
4
4
  "url": "./index.html"
5
5
  },
6
6
  {
@@ -120,8 +120,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
120
120
  "url": "./static/js/27.b52625a1.chunk.js"
121
121
  },
122
122
  {
123
- "revision": "cbf17443e811c4fefe44",
124
- "url": "./static/js/28.3c737697.chunk.js"
123
+ "revision": "38a7f24a372082377300",
124
+ "url": "./static/js/28.58a6c007.chunk.js"
125
125
  },
126
126
  {
127
127
  "revision": "eac79102bc8badd9ea6c",
@@ -160,12 +160,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
160
160
  "url": "./static/js/9.306192e7.chunk.js.LICENSE.txt"
161
161
  },
162
162
  {
163
- "revision": "a01685873451edcb37d5",
164
- "url": "./static/js/main.0718e9a3.chunk.js"
163
+ "revision": "d0594d21537a8ce0d7db",
164
+ "url": "./static/js/main.1726136e.chunk.js"
165
165
  },
166
166
  {
167
- "revision": "4bd26f8ad225befa2b44",
168
- "url": "./static/js/runtime-main.30015ec0.js"
167
+ "revision": "04d1e12036155bd1409d",
168
+ "url": "./static/js/runtime-main.3327b730.js"
169
169
  },
170
170
  {
171
171
  "revision": "5ab204b9b95c06640dbefae9a65b1db2",
@@ -14,7 +14,7 @@
14
14
  importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
15
15
 
16
16
  importScripts(
17
- "./precache-manifest.f291a513cad3fe0fa96e294ed8b7b760.js"
17
+ "./precache-manifest.6197d7441412bd03df95fb006558974b.js"
18
18
  );
19
19
 
20
20
  self.addEventListener('message', (event) => {
@@ -0,0 +1,2 @@
1
+ (this["webpackJsonp@abtnode/webapp"]=this["webpackJsonp@abtnode/webapp"]||[]).push([[28],{1867:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return at}));var a,r,c=n(32),l=n(59),o=n(10),i=n.n(o),s=n(17),u=n(0),m=n.n(u),d=n(30),p=n(1484),b=n(83),f=n.n(b),h=n(351),v=n.n(h),g=n(15),k=n(22),x=n(1833),j=n.n(x),E=n(1352),w=n(29),O=n(370),y=n(520),B=g.default.div(a||(a=Object(c.a)(["\n width: 100%;\n min-height: 100vh;\n padding: 20px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n"]))),N=n(268),U=n(58),_=n.n(U),C=n(1164),I=n.n(C),L=n(120),T=["children"];function A(e){var t=e.children,n=Object(L.a)(e,T);return m.a.createElement(z,n,t)}var z=g.default.div(r||(r=Object(c.a)(["\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n\n .header {\n text-align: center;\n }\n\n .body {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-top: 30px;\n width: 100%;\n min-height: 200px;\n flex: 1;\n\n "," {\n padding: 24px;\n }\n\n "," {\n padding: 0 16px 16px;\n }\n }\n\n .footer {\n display: flex;\n justify-content: center;\n\n "," {\n padding-bottom: 34px;\n }\n\n "," {\n margin-top: auto;\n padding-bottom: 10px;\n }\n }\n"])),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.down("sm")}),(function(e){return e.theme.breakpoints.up("sm")}),(function(e){return e.theme.breakpoints.down("sm")})),F=n(105),S=n.n(F),R=["children"];function P(e){var t=e.children,n=Object(L.a)(e,R);return m.a.createElement(S.a,Object.assign({rounded:!0,variant:"contained",color:"primary"},n),t)}var D,M=m.a.forwardRef((function(e,t){return m.a.createElement(P,Object.assign({},e,{forwardedRef:t}))})),W=n(204),V=n.n(W),q=n(276),J=n.n(q),K=n(1836),G=n.n(K),H=["variant","title","subTitle","footer"];function Q(e){var t,n=e.variant,a=e.title,r=e.subTitle,c=e.footer,l=Object(L.a)(e,H);switch(n){case"error":t=J.a;break;case"info":t=G.a;break;default:t=V.a}return m.a.createElement(Z,Object.assign({variant:n},l),m.a.createElement("div",{className:"result-body"},m.a.createElement("span",{className:"icon color-".concat(n)},m.a.createElement(t,null)),a&&m.a.createElement("div",{className:"title color-".concat(n)},a),a&&m.a.createElement("div",{className:"sub-title"},r),c&&m.a.createElement("div",{className:"footer"},c)))}Q.defaultProps={variant:"success",title:"",subTitle:"",footer:null};var X,Y,Z=g.default.div(D||(D=Object(c.a)(["\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n width: 100%;\n height: 100%;\n\n .result-body {\n max-width: 420px;\n text-align: center;\n margin-top: -64px;\n }\n\n .icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: 48px;\n height: 48px;\n border-radius: 100%;\n background-color: ",";\n color: ",";\n &.color-error {\n background-color: ",";\n }\n &.color-info {\n background-color: ",";\n }\n }\n\n .title {\n margin-top: 24px;\n color: ",";\n font-size: 24px;\n font-weight: bolder;\n &.color-error {\n color: ",";\n }\n &.color-info {\n color: ",";\n }\n }\n\n .sub-title {\n margin-top: 8px;\n color: ",";\n font-size: 14px;\n }\n\n .footer {\n margin-top: 38px;\n }\n"])),(function(e){return e.theme.palette.success.main}),(function(e){return e.theme.palette.common.white}),(function(e){return e.theme.palette.error.main}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.success.main}),(function(e){return e.theme.palette.error.main}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.grey[700]}));var $=Object(g.default)(A)(X||(X=Object(c.a)(["\n .app-info_desc {\n font-weight: 400;\n margin-top: 40px;\n font-size: 18px;\n line-height: 21px;\n color: #222222;\n }\n\n .body {\n text-align: center;\n }\n\n "," {\n .app-info_desc {\n font-size: 16px;\n }\n }\n\n .circle_icon {\n font-size: 58px;\n color: ",";\n }\n"])),(function(e){return e.theme.breakpoints.down("sm")}),(function(e){return"error"===e.variant?e.theme.palette.error.main:e.theme.palette.success.main})),ee=g.default.div(Y||(Y=Object(c.a)(["\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n"]))),te=function(e){var t=e.blocklet,n=Object(k.useLocaleContext)().t,a=Object(w.c)().info,r=Object(O.a)(),c=decodeURIComponent(r.get("accessUrl")||"");return I()(t)?m.a.createElement(ee,null,m.a.createElement(_.a,null)):m.a.createElement($,null,m.a.createElement("div",{className:"body"},m.a.createElement(Q,{variant:"success",title:Object(N.getDisplayName)(t,!0),subTitle:n("launchBlocklet.installSuccess",{serverName:a.name}),style:{marginBottom:100},footer:m.a.createElement(M,{href:c,className:"bottom-button","data-cy":"open-blocklet"},n("common.open"))})))},ne=n(14),ae=n(61),re=n(388),ce=n.n(re),le=n(1065),oe=n.n(le),ie=n(1837),se=n.n(ie),ue=n(335),me=n(1166),de=n.n(me),pe=n(152),be=n.n(pe),fe=n(1840),he=n.n(fe),ve=n(37),ge=n(918),ke=n(52),xe=n(68),je=n(4),Ee=n.n(je),we=n(285),Oe=n.n(we),ye=n(359),Be=n.n(ye);function Ne(e){var t=e.blocklet,n=e.blockletMetaUrl,a=t.meta,r=a.did,c=a.logo;return c?m.a.createElement(Oe.a,{src:Object(xe.o)({did:r,logoPath:c,baseUrl:new URL(n).origin}),width:64,size:"contain",placeholder:"application logo"}):m.a.createElement(Be.a,{did:r,size:64})}Ne.propTypes={blocklet:Ee.a.object.isRequired,blockletMetaUrl:Ee.a.string.isRequired};var Ue,_e,Ce=n(1841),Ie=n.n(Ce);function Le(e){var t=e.onCancel,n=e.onUpgrade,a=Object(k.useLocaleContext)().t;return m.a.createElement(m.a.Fragment,null,m.a.createElement(Ae,{className:"body"},m.a.createElement("div",{className:"upgrade-wrapper"},m.a.createElement(Ie.a,{className:"upgrade-wrapper_icon"})),m.a.createElement("div",{className:"status_title"},a("launchBlocklet.newVersion")),m.a.createElement("div",{className:"status_desc"},a("launchBlocklet.newVersionDesc"))),m.a.createElement(ze,{className:"footer"},m.a.createElement(M,{onClick:t,variant:"outlined"},a("launchBlocklet.later")),m.a.createElement(M,{className:"upgrade-button",onClick:n},a("launchBlocklet.upgradeNow"))))}Le.defaultProps={onCancel:function(){},onUpgrade:function(){}};var Te,Ae=Object(g.default)(A)(Ue||(Ue=Object(c.a)(["\n .upgrade-wrapper {\n background-color: #4f6af6;\n border-radius: 50%;\n padding: 5px;\n width: 48px;\n height: 48px;\n\n .upgrade-wrapper_icon {\n color: white;\n width: 100%;\n height: 100%;\n }\n }\n"]))),ze=g.default.div(_e||(_e=Object(c.a)(["\n .upgrade-button {\n margin-left: 24px;\n }\n"])));function Fe(e){var t=e.title,n=e.subTitle;return m.a.createElement(De,null,m.a.createElement("div",{className:"title"},t),m.a.createElement("div",{className:"sub-title"},n))}var Se,Re,Pe,De=g.default.div(Te||(Te=Object(c.a)(["\n text-align: center;\n\n .title {\n font-size: 24px;\n font-weight: 500;\n color: ",";\n }\n\n .sub-title {\n font-size: 14px;\n color: ",";\n }\n"])),(function(e){return e.theme.palette.common.black}),(function(e){return e.theme.palette.grey[600]})),Me=Fe;Fe.defaultProps={title:"",subTitle:""};var We,Ve,qe=g.default.div(Se||(Se=Object(c.a)(["\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-top: 10%;\n color: #4f6af6;\n max-width: 420px;\n text-align: center;\n\n .spinner {\n color: inherit !important;\n }\n\n .text {\n font-size: 20px;\n margin-top: 24px;\n }\n"]))),Je=Object(g.default)(A)(Re||(Re=Object(c.a)(["\n .body {\n align-items: center;\n }\n\n .illustrations {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: start;\n text-align: center;\n margin-top: 16px;\n margin-bottom: 40px;\n width: 100%;\n }\n\n .ills-block {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n flex: 1;\n\n .i-icon {\n width: 64px;\n height: 64px;\n }\n\n .i-name {\n margin-top: 32px;\n font-weight: 500;\n font-size: 16px;\n color: #222222;\n }\n\n .i-sub-name {\n color: #999999;\n }\n }\n\n "," {\n .ills-block-left {\n margin-left: 60px;\n }\n .ills-block-right {\n margin-right: 60px;\n }\n }\n .arrow-icon {\n align-self: start;\n color: #dde1fb;\n font-size: 38px;\n margin: 25px 0 0;\n "," {\n margin: 25px 24px 0;\n }\n }\n\n .status-icon {\n width: 48px;\n height: 48px;\n }\n\n .status-title {\n margin-top: 16px;\n text-align: center;\n font-size: 24px;\n line-height: 28px;\n }\n\n .status-desc {\n text-align: center;\n margin-top: 16px;\n color: #999999;\n font-size: 16px;\n line-height: 28px;\n }\n"])),(function(e){return e.theme.breakpoints.up("sm")}),(function(e){return e.theme.breakpoints.down("sm")})),Ke=g.default.div(Pe||(Pe=Object(c.a)(["\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n"]))),Ge=function(e){var t=e.blocklet,n=Object(O.a)(),a=Object(d.k)(),r=Object(g.useTheme)(),c=Object(ue.a)(r.breakpoints.down("sm")),o=n.get("blocklet_meta_url"),p=new URL(o).origin,b=Object(w.c)(),f=b.api,h=b.info,x=Object(k.useLocaleContext)(),j=x.t,E=x.locale,y=Object(ke.c)().session,B=Object(u.useState)(!1),U=Object(ne.a)(B,2),C=U[0],L=U[1],T=Object(u.useState)(!1),A=Object(ne.a)(T,2),z=A[0],F=A[1],S=Object(u.useState)({meta:null,loading:!0,error:null}),R=Object(ne.a)(S,2),P=R[0],D=R[1],W=Object(u.useState)({exists:t.isInstalled,status:"launchBlocklet.installing",upgradeAvailable:null,blocklet:null,error:null,errorAction:t.isInstalled?"view":"retry"}),V=Object(ne.a)(W,2),q=V[0],J=V[1];if(Object(u.useEffect)((function(){(function(){var e=Object(s.a)(i.a.mark((function e(){var n,a,r;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t&&t.meta){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,e.next=5,f.getBlocklet({input:{did:t.meta.did}});case 5:if(n=e.sent,a=n.blocklet,D((function(e){return Object(l.a)(Object(l.a)({},e),{},{loading:!1})})),a){e.next=10;break}return e.abrupt("return");case 10:if(!oe.a.gt(t.meta.version,a.meta.version)){e.next=16;break}return r=a.environments.find((function(e){return"BLOCKLET_APP_ID"===e.key})),e.next=14,te(a,{appDid:r?r.value:"",did:a.meta.did,currentVersion:a.meta.version,version:t.meta.version});case 14:e.next=18;break;case 16:return e.next=18,te(a);case 18:e.next=24;break;case 20:e.prev=20,e.t0=e.catch(2),console.error("error fetch blocklet info",e.t0),D((function(e){return Object(l.a)(Object(l.a)({},e),{},{loading:!1})}));case 24:case"end":return e.stop()}}),e,null,[[2,20]])})));return function(){return e.apply(this,arguments)}})()()}),[t]),I()(t))return m.a.createElement(Ke,null,m.a.createElement(_.a,null));var K=Object(N.getDisplayName)(t,!0),G=null,H=function(){var e=Object(s.a)(i.a.mark((function e(){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(y.user&&(y.user.permissions||[]).includes("mutate_blocklet"))||!t.isFree){e.next=8;break}return F(!0),J(Object(l.a)(Object(l.a)({},q),{},{error:""})),e.next=6,f.installBlocklet({input:{url:o,startImmediately:!0}}).catch((function(e){console.error("install blocklet failed",e),F(!1),J(Object(l.a)(Object(l.a)({},q),{},{error:"launchBlocklet.error.launchFailed"}))}));case 6:return G=ie(),e.abrupt("return");case 8:L(!0);case 9:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),X=function(e){J(Object(l.a)(Object(l.a)({},q),{},{status:"launchBlocklet.redirecting"})),clearInterval(G),setTimeout((function(){!function(e){var t="/blocklets/".concat(e.meta.did,"/configuration");a.push("/launch-blocklet/complete?status=installed&name=".concat(encodeURIComponent(K),"&accessUrl=").concat(encodeURIComponent(t),"&blocklet_meta_url=").concat(o))}(e)}),1500)},Y=function(){var e=Object(s.a)(i.a.mark((function e(t){var n,r,c;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.interfaces.map((function(e){return e.url})),e.next=3,Object(xe.m)(n);case 3:if(r=e.sent,!I()(r)){e.next=7;break}return X(t),e.abrupt("return");case 7:J(Object(l.a)(Object(l.a)({},q),{},{status:"launchBlocklet.redirecting"})),clearInterval(G),c=new URL(r),"running"!==t.status&&c.searchParams.set("__start__","1"),setTimeout((function(){a.push("/launch-blocklet/complete?name=".concat(encodeURIComponent(K),"&accessUrl=").concat(encodeURIComponent(c.href),"&blocklet_meta_url=").concat(o))}),1500);case 12:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Z=function(){var e=Object(s.a)(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:setTimeout(Object(s.a)(i.a.mark((function e(){var n;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,f.getBlocklet({input:{did:t.meta.did}});case 2:if("installed"!==(n=e.sent).blocklet.status){e.next=8;break}return e.next=6,te(n.blocklet);case 6:e.next=9;break;case 8:G=ie();case 9:case"end":return e.stop()}}),e)}))),1500);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),$=function(e,t){return J(Object(l.a)(Object(l.a)({},q),{},{error:e,errorAction:t}))},ee=function(e,t){if(!t)return["stopped","stopping"].includes(e.status)?(F(!1),void J((function(e){return Object(l.a)(Object(l.a)({},e),{},{exists:!0})}))):["error","corrupted"].includes(e.status)?(F(!1),void J((function(e){return Object(l.a)(Object(l.a)({},e),{},{exists:!0,error:"launchBlocklet.error.installedButError",errorAction:"view"})}))):void("running"!==e.status?"installed"===e.status&&Y(e):Y(e));!function(e,t){F(!1),J((function(e){return Object(l.a)(Object(l.a)({},e),{},{upgradeAvailable:t})}))}(0,t)},te=function(){var e=Object(s.a)(i.a.mark((function e(t,n){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=4;break}return F(!1),J(Object(l.a)(Object(l.a)({},q),{},{error:"launchBlocklet.error.launchFailed"})),e.abrupt("return");case 4:J(Object(l.a)(Object(l.a)({},q),{},{blocklet:t})),ee(t,n);case 6:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),re=function(){var e=Object(s.a)(i.a.mark((function e(t,n){var a;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,a={did:t.meta.did,version:n.version,registryUrl:p},F(!0),J(Object(l.a)(Object(l.a)({},q),{},{status:"common.upgrading"})),e.next=6,f.upgradeBlocklet({input:a});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(0),J(Object(l.a)(Object(l.a)({},q),{},{error:"launchBlocklet.error.upgradeFailed"}));case 11:case"end":return e.stop()}}),e,null,[[0,8]])})));return function(t,n){return e.apply(this,arguments)}}(),le=se()(Object(s.a)(i.a.mark((function e(){var n,a,r;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,f.getBlocklet({input:{did:t.meta.did}});case 2:if(n=e.sent,a=n.blocklet){e.next=9;break}return clearInterval(G),F(!1),$("launchBlocklet.error.startFailed","retry"),e.abrupt("return");case 9:r=ve.BlockletStatus[a.status],[ve.BlockletStatus.error,ve.BlockletStatus.corrupted].includes(r)&&(F(!1),clearInterval(G),$("launchBlocklet.error.startFailed","view")),ve.BlockletStatus.installed===r&&(clearInterval(G),Z(a)),[ve.BlockletStatus.stopped,ve.BlockletStatus.running].includes(r)&&te(a);case 13:case"end":return e.stop()}}),e)}))),3e3),ie=function(){return setInterval(le,3e3)},me=function(){var e=Object(s.a)(i.a.mark((function e(t){var n;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.sessionToken,localStorage.setItem("abt_node_login_token",n),e.next=4,y.refresh();case 4:F(!0),L(!1),G=ie();case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();if(P.error)return m.a.createElement(v.a,{variant:"icon",type:"error"},P.error.message);if(P.loading)return m.a.createElement("div",{style:{marginTop:"100px",textAlign:"center",width:"100%"}},m.a.createElement(_.a,null));var pe="/";window.env&&window.env.apiPrefix&&(pe=window.env.apiPrefix);var fe={view:m.a.createElement(M,{className:"bottom-button",component:ae.Link,to:"/blocklets/".concat(t.meta.did,"/overview"),fullWidth:c,rounded:!0,"data-cy":"view-blocklet",color:"primary",variant:"contained"},j("launchBlocklet.viewApplication")),retry:m.a.createElement(M,{className:"bottom-button","data-cy":"retry-install",disabled:C,fullWidth:c,onClick:H},C&&m.a.createElement(_.a,{size:[16,10]}),j("common.retry"))};return!z&&q.upgradeAvailable?m.a.createElement(Je,null,m.a.createElement(Le,{onCancel:function(){return e=q.blocklet,void Y(e);var e},onUpgrade:function(){return re(q.blocklet,q.upgradeAvailable)}})):!z&&q.exists?m.a.createElement(Je,null,m.a.createElement(Q,{variant:"info",title:K,subTitle:j("launchBlocklet.error.installedButStopped"),footer:fe.view})):q.error?m.a.createElement(Je,null,m.a.createElement(Q,{variant:"error",title:K,subTitle:j(q.error,{appName:K,serverName:h.name}),footer:fe[q.errorAction]})):m.a.createElement(Je,null,!q.upgradeAvailable&&m.a.createElement("div",{className:"header"},m.a.createElement(Me,{title:j(z?"launchBlocklet.start":"common.launch"),subTitle:z?"":j("launchBlocklet.subTitle",{appName:K,serverName:h.name})})),m.a.createElement("div",{className:"body"},!z&&m.a.createElement("div",{className:"illustrations"},m.a.createElement("div",{className:"ills-block ills-block-left"},m.a.createElement(Ne,{className:"i-icon",blocklet:t,blockletMetaUrl:o}),m.a.createElement("div",{className:"i-name"},K)),m.a.createElement(de.a,{className:"arrow-icon"}),m.a.createElement("div",{className:"ills-block ills-block-right"},m.a.createElement(he.a,{className:"i-icon",color:"#BFBFBF"}),m.a.createElement("div",{className:"i-name"},h.name))),!z&&!q.exists&&m.a.createElement(ge.a,{smDown:!0},m.a.createElement(M,{className:"bottom-button","data-cy":"start-launch",disabled:C,fullWidth:c,onClick:H},C&&m.a.createElement(_.a,{size:[16,10]}),j("common.next"))),z&&m.a.createElement(qe,null,m.a.createElement(_.a,{className:"spinner"}),m.a.createElement("div",{className:"text"},j(q.status,{appName:K,serverName:h.name})))),m.a.createElement("div",{className:"footer"},!z&&q.exists&&m.a.createElement(M,{className:"footer-item bottom-button","data-cy":"view-blocklet",component:ae.Link,to:"/blocklets/".concat(t.meta.did,"/overview"),fullWidth:c,rounded:!0,color:"primary",variant:"contained"},j("launchBlocklet.viewApplication")),!z&&!q.exists&&m.a.createElement(ge.a,{mdUp:!0},m.a.createElement(M,{className:"bottom-button","data-cy":"start-launch",disabled:C,fullWidth:c,onClick:H},C&&m.a.createElement(_.a,{size:[16,10]}),j("common.next")))),m.a.createElement(be.a,{open:C,popup:!0,className:"connect",action:"launch-".concat(t.isFree?"free":"paid","-blocklet-by-").concat(Object(xe.n)(h)),checkFn:ce.a.create({baseURL:pe}).get,checkTimeout:6e5,socketUrl:f.socketUrl,webWalletUrl:Object(xe.v)(h),onSuccess:me,onClose:function(){return L(!1)},locale:E,messages:{title:"".concat(j("launchBlocklet.dialog.title")),scan:t.isFree?j("launchBlocklet.dialog.freeDescription"):j("launchBlocklet.dialog.nonFreeDescription"),confirm:j("launchBlocklet.dialog.confirm"),success:j("launchBlocklet.dialog.success")},extraParams:{blockletMetaUrl:o}}))},He=n(158),Qe=n(1017),Xe=n.n(Qe),Ye=n(408);function Ze(e){var t=Object.assign({},e);return m.a.createElement("div",Object.assign({},t,{style:{width:"100%"}}),m.a.createElement("h3",null,"End User License Agreement for Application"),m.a.createElement("p",null,"Blocklet Server License Agreement ArcBlock, Inc. version 2020-08-28"),m.a.createElement("p",null,"BLOCKLET SERVER LICENSE AGREEMENT"),m.a.createElement("p",null,"\u6682\u65e0"))}function $e(e){var t=e.blocklet,n=Object(d.k)(),a=Object(u.useState)("application"),r=Object(ne.a)(a,2),c=r[0],l=r[1],o=Object(k.useLocaleContext)().t,i=Object(w.c)().info,s=Object(g.useTheme)(),p=Object(ue.a)(s.breakpoints.down("sm"));if(t.isInstalled)return m.a.createElement(Q,{variant:"info",title:o("common.reminder"),subTitle:o("launchBlocklet.alreadyInstalled",{name:Object(N.getDisplayName)(t,!0)}),footer:m.a.createElement(M,{className:"footer-item bottom-button","data-cy":"view-blocklet",component:ae.Link,to:"/blocklets/".concat(t.meta.did,"/overview"),fullWidth:p,rounded:!0,color:"primary",variant:"contained"},o("launchBlocklet.viewApplication"))});var b=new Map([["application",{label:o("launchBlocklet.appLicenseName"),value:"application",component:Ze}]]);if(!i)return m.a.createElement(nt,null,m.a.createElement(_.a,null));i.initialized||b.set("abtnode",{label:o("launchBlocklet.abtnodeLicenseName"),value:"abtnode",component:Ye.a});var f,h=[],v=Object(He.a)(b.values());try{for(v.s();!(f=v.n()).done;){var x=f.value;h.push({label:x.label,value:x.value})}}catch(E){v.e(E)}finally{v.f()}var j=b.get(c).component;return m.a.createElement(tt,null,m.a.createElement(Me,{title:b.size>1?o("launchBlocklet.agreement"):o("launchBlocklet.appLicenseName")}),m.a.createElement("div",{className:"body"},b.size>1&&m.a.createElement(Xe.a,{tabs:h,current:c,onChange:l}),m.a.createElement("div",{className:"agreement"},m.a.createElement("div",{className:"agreement_content"},m.a.createElement(j,{style:{width:"100%"}})))),m.a.createElement("div",{className:"footer"},m.a.createElement(M,{className:"bottom-button","data-cy":"agree-all",onClick:function(){n.push("/launch-blocklet/install".concat(window.location.search))}},o("launchBlocklet.agreeAll"))))}var et,tt=Object(g.default)(A)(We||(We=Object(c.a)(["\n .body {\n justify-content: center;\n }\n .agreement {\n position: relative;\n flex: 1;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 300px;\n border: 1px solid #f0f0f0;\n border-radius: 12px;\n\n "," {\n margin-top: 24px;\n }\n\n "," {\n margin-top: 16px;\n }\n\n .agreement_content {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow-y: auto;\n\n "," {\n padding: 0 24px;\n }\n\n "," {\n padding: 0 16px;\n }\n }\n }\n"])),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.down("sm")}),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.down("sm")})),nt=g.default.div(Ve||(Ve=Object(c.a)(["\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n"])));function at(){var e=Object(d.n)().path,t=Object(k.useLocaleContext)(),n=t.t,a=t.locale,r=Object(O.a)(),c=Object(w.c)().api,o=(r.get("blocklet_meta_url")||"").trim();o=decodeURIComponent(o);var u=Object(p.a)(Object(s.a)(i.a.mark((function e(){var t,a,r,l;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o){e.next=2;break}throw new Error(n("common.invalidParam"));case 2:return e.next=4,c.getBlockletMetaFromUrl({input:{url:o,checkPrice:!0}});case 4:if(t=e.sent,a=t.meta,r=t.isFree,l=t.isInstalled,a){e.next=10;break}throw new Error(n("launchBlocklet.error.loadMetaFailed"));case 10:return e.abrupt("return",{meta:a,isFree:r,isInstalled:l});case 11:case"end":return e.stop()}}),e)}))));if(u.error)return m.a.createElement(B,null,m.a.createElement("div",null,m.a.createElement(v.a,{style:{width:"100%",wordBreak:"break-all"},variant:"icon",type:"error"},u.error.message)));var b=u.value||{},h=b.meta,g=b.isFree,x=f()(Object(xe.u)(),e),N=[{key:"agreement",name:n("launchBlocklet.agreement"),path:f()(x,"agreement")},{key:"install",name:n("launchBlocklet.launch"),path:f()(x,"install")},{key:"complete",name:n("launchBlocklet.complete"),path:f()(x,"complete")}];return h&&(h.registryUrl=new URL(o).origin),m.a.createElement(E.StepProvider,{steps:N},m.a.createElement(j.a,{locale:a,blockletMeta:Object(l.a)(Object(l.a)({},h),{},{isFree:g}),headerEndAddons:m.a.createElement(y.a,{notification:!1}),pcWidth:"80%",logoUrl:h&&h.logo?Object(xe.o)({did:h.did,baseUrl:h.registryUrl,logoPath:h.logo}):null},m.a.createElement(rt,null,m.a.createElement(d.g,null,m.a.createElement(d.c,{exact:!0,path:e,to:"".concat(e,"/agreement").concat(window.location.search)}),m.a.createElement(d.d,{exact:!0,path:"".concat(e,"/agreement")},m.a.createElement($e,{blocklet:u.value||{}})),m.a.createElement(d.d,{exact:!0,path:"".concat(e,"/install")},m.a.createElement(Ge,{blocklet:u.value||{}})),m.a.createElement(d.d,{exact:!0,path:"".concat(e,"/complete")},m.a.createElement(te,{blocklet:u.value||{}}))))))}var rt=g.default.div(et||(et=Object(c.a)(["\n padding-top: 34px;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n\n .bottom-button {\n min-width: 200px;\n }\n"])))}}]);
2
+ //# sourceMappingURL=28.58a6c007.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/launch-blocklet/center.js","components/launch-blocklet/content-layout.js","components/launch-blocklet/button.js","components/launch-blocklet/result-message.js","components/launch-blocklet/step-complete.js","components/launch-blocklet/app-logo.js","components/launch-blocklet/status/upgrade-available.js","components/launch-blocklet/page-header.js","components/launch-blocklet/step-install.js","components/launch-blocklet/agreement-app.js","components/launch-blocklet/step-agreement.js","pages/launch-blocklet/index.js"],"names":["Center","styled","div","ContentLayout","children","props","Container","theme","breakpoints","up","down","WrappedButton","rounded","variant","color","React","forwardRef","ref","forwardedRef","LaunchResultMessage","Icon","title","subTitle","footer","Close","PriorityHigh","Check","className","defaultProps","palette","success","main","common","white","error","primary","grey","Complete","blocklet","t","useLocaleContext","info","useNodeContext","query","useQuery","accessUrl","decodeURIComponent","get","isEmpty","getDisplayName","serverName","name","style","marginBottom","href","data-cy","AppLogo","blockletMetaUrl","meta","did","logoPath","logo","src","getBlockletLogoUrl","baseUrl","URL","origin","width","size","placeholder","propTypes","PropTypes","object","isRequired","string","Upgrade","onCancel","onUpgrade","Body","Footer","onClick","PageHeader","Content","black","Waiting","Install","history","useHistory","useTheme","isBreakpointsDownSm","useMediaQuery","blockletRegistryUrl","api","locale","session","useSessionContext","useState","openAuth","setOpenAuth","launching","setLaunching","loading","blockletState","setBlockletState","exists","isInstalled","status","upgradeAvailable","errorAction","launchState","setLaunchState","useEffect","a","getBlocklet","input","b","pre","semver","gt","version","appDidEnv","environments","find","e","key","handleLaunchState","appDid","value","currentVersion","console","onMount","intervalId","handleLaunchStart","user","permissions","includes","isFree","installBlocklet","url","startImmediately","catch","err","poll","visitOverview","clearInterval","setTimeout","push","encodeURIComponent","redirectToBlockletOverview","visitBlocklet","urls","interfaces","map","x","getAccessibleUrl","searchParams","set","handleInstalled","result","handleError","handleBlockletExisted","handleUpgradeAvailable","handleUpgrade","registryUrl","upgradeBlocklet","checkBlockletStatus","throttle","statusCode","BlockletStatus","corrupted","installed","stopped","running","setInterval","handleConnectSuccess","sessionToken","localStorage","setItem","refresh","type","message","marginTop","textAlign","baseURL","window","env","apiPrefix","errorActions","view","component","Link","to","fullWidth","retry","disabled","appName","Hidden","smDown","mdUp","open","popup","action","getAuthMethod","checkFn","axios","create","checkTimeout","socketUrl","webWalletUrl","getWebWalletUrl","onSuccess","onClose","messages","scan","confirm","extraParams","AgreementApp","Agreement","currentTab","setCurrentTab","tabMap","Map","label","initialized","AgreementNode","tabs","values","TabContent","current","onChange","location","search","BlockletLauncher","path","useRouteMatch","trim","state","useAsync","Error","getBlockletMetaFromUrl","checkPrice","wordBreak","basePath","joinUrl","getPathPrefix","steps","blockletMeta","headerEndAddons","notification","pcWidth","logoUrl","exact"],"mappings":"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","file":"static/js/28.58a6c007.chunk.js","sourcesContent":["import styled from 'styled-components';\n\nconst Center = styled.div`\n width: 100%;\n min-height: 100vh;\n padding: 20px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n`;\n\nexport default Center;\n","import React from 'react';\nimport styled from 'styled-components';\nimport PropTypes from 'prop-types';\n\nexport default function ContentLayout({ children, ...props }) {\n return <Container {...props}>{children}</Container>;\n}\n\nContentLayout.propTypes = {\n children: PropTypes.any.isRequired,\n};\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n\n .header {\n text-align: center;\n }\n\n .body {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-top: 30px;\n width: 100%;\n min-height: 200px;\n flex: 1;\n\n ${props => props.theme.breakpoints.up('md')} {\n padding: 24px;\n }\n\n ${props => props.theme.breakpoints.down('sm')} {\n padding: 0 16px 16px;\n }\n }\n\n .footer {\n display: flex;\n justify-content: center;\n\n ${props => props.theme.breakpoints.up('sm')} {\n padding-bottom: 34px;\n }\n\n ${props => props.theme.breakpoints.down('sm')} {\n margin-top: auto;\n padding-bottom: 10px;\n }\n }\n`;\n","import React from 'react';\nimport Button from '@arcblock/ux/lib/Button';\nimport PropTypes from 'prop-types';\n\nfunction WrappedButton({ children, ...props }) {\n return (\n <Button rounded variant=\"contained\" color=\"primary\" {...props}>\n {children}\n </Button>\n );\n}\n\nWrappedButton.propTypes = {\n children: PropTypes.any.isRequired,\n};\n\nexport default React.forwardRef((props, ref) => <WrappedButton {...props} forwardedRef={ref} />);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport Check from '@material-ui/icons/Check';\nimport Close from '@material-ui/icons/Close';\nimport PriorityHigh from '@material-ui/icons/PriorityHigh';\n\nexport default function LaunchResultMessage({ variant, title, subTitle, footer, ...props }) {\n let Icon;\n switch (variant) {\n case 'error':\n Icon = Close;\n break;\n case 'info':\n Icon = PriorityHigh;\n break;\n default:\n Icon = Check;\n }\n return (\n <Container variant={variant} {...props}>\n <div className=\"result-body\">\n <span className={`icon color-${variant}`}>\n <Icon />\n </span>\n {title && <div className={`title color-${variant}`}>{title}</div>}\n {title && <div className=\"sub-title\">{subTitle}</div>}\n {footer && <div className=\"footer\">{footer}</div>}\n </div>\n </Container>\n );\n}\n\nLaunchResultMessage.propTypes = {\n variant: PropTypes.oneOf(['success', 'error']),\n title: PropTypes.string,\n subTitle: PropTypes.string,\n footer: PropTypes.object,\n};\n\nLaunchResultMessage.defaultProps = {\n variant: 'success',\n title: '',\n subTitle: '',\n footer: null,\n};\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n width: 100%;\n height: 100%;\n\n .result-body {\n max-width: 420px;\n text-align: center;\n margin-top: -64px;\n }\n\n .icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: 48px;\n height: 48px;\n border-radius: 100%;\n background-color: ${props => props.theme.palette.success.main};\n color: ${props => props.theme.palette.common.white};\n &.color-error {\n background-color: ${props => props.theme.palette.error.main};\n }\n &.color-info {\n background-color: ${props => props.theme.palette.primary.main};\n }\n }\n\n .title {\n margin-top: 24px;\n color: ${props => props.theme.palette.success.main};\n font-size: 24px;\n font-weight: bolder;\n &.color-error {\n color: ${props => props.theme.palette.error.main};\n }\n &.color-info {\n color: ${props => props.theme.palette.primary.main};\n }\n }\n\n .sub-title {\n margin-top: 8px;\n color: ${props => props.theme.palette.grey[700]};\n font-size: 14px;\n }\n\n .footer {\n margin-top: 38px;\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport PropTypes from 'prop-types';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport isEmpty from 'lodash/isEmpty';\nimport { useNodeContext } from '../../contexts/node';\n\nimport useQuery from '../../hooks/query';\nimport ContentLayout from './content-layout';\nimport Button from './button';\nimport LaunchResultMessage from './result-message';\n\nfunction Complete({ blocklet }) {\n const { t } = useLocaleContext();\n const { info } = useNodeContext();\n const query = useQuery();\n const accessUrl = decodeURIComponent(query.get('accessUrl') || '');\n\n if (isEmpty(blocklet)) {\n return (\n <Center>\n <Spinner />\n </Center>\n );\n }\n return (\n <Container>\n <div className=\"body\">\n <LaunchResultMessage\n variant=\"success\"\n title={getDisplayName(blocklet, true)}\n subTitle={t('launchBlocklet.installSuccess', { serverName: info.name })}\n style={{ marginBottom: 100 }}\n footer={\n <Button href={accessUrl} className=\"bottom-button\" data-cy=\"open-blocklet\">\n {t('common.open')}\n </Button>\n }\n />\n </div>\n </Container>\n );\n}\n\nconst Container = styled(ContentLayout)`\n .app-info_desc {\n font-weight: 400;\n margin-top: 40px;\n font-size: 18px;\n line-height: 21px;\n color: #222222;\n }\n\n .body {\n text-align: center;\n }\n\n ${props => {\n return props.theme.breakpoints.down('sm');\n }} {\n .app-info_desc {\n font-size: 16px;\n }\n }\n\n .circle_icon {\n font-size: 58px;\n color: ${props => (props.variant === 'error' ? props.theme.palette.error.main : props.theme.palette.success.main)};\n }\n`;\n\nconst Center = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n`;\n\nComplete.propTypes = {\n blocklet: PropTypes.object.isRequired,\n};\n\nexport default Complete;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Img from '@arcblock/ux/lib/Img';\nimport Avatar from '@arcblock/did-connect/lib/Avatar';\nimport { getBlockletLogoUrl } from '../../libs/util';\n\nexport default function AppLogo({ blocklet, blockletMetaUrl }) {\n const { did, logo: logoPath } = blocklet.meta;\n\n let content;\n\n if (logoPath) {\n content = (\n <Img\n src={getBlockletLogoUrl({\n did,\n logoPath,\n baseUrl: new URL(blockletMetaUrl).origin,\n })}\n width={64}\n size=\"contain\"\n placeholder=\"application logo\"\n />\n );\n } else {\n content = <Avatar did={did} size={64} />;\n }\n\n return content;\n}\n\nAppLogo.propTypes = {\n blocklet: PropTypes.object.isRequired,\n blockletMetaUrl: PropTypes.string.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport AutorenewIcon from '@material-ui/icons/AutorenewOutlined';\nimport Button from '../button';\nimport ContentLayout from '../content-layout';\n\nexport default function Upgrade({ onCancel, onUpgrade }) {\n const { t } = useLocaleContext();\n return (\n <>\n <Body className=\"body\">\n <div className=\"upgrade-wrapper\">\n <AutorenewIcon className=\"upgrade-wrapper_icon\" />\n </div>\n <div className=\"status_title\">{t('launchBlocklet.newVersion')}</div>\n <div className=\"status_desc\">{t('launchBlocklet.newVersionDesc')}</div>\n </Body>\n <Footer className=\"footer\">\n <Button onClick={onCancel} variant=\"outlined\">\n {t('launchBlocklet.later')}\n </Button>\n <Button className=\"upgrade-button\" onClick={onUpgrade}>\n {t('launchBlocklet.upgradeNow')}\n </Button>\n </Footer>\n </>\n );\n}\n\nUpgrade.propTypes = {\n onCancel: PropTypes.func,\n onUpgrade: PropTypes.func,\n};\n\nUpgrade.defaultProps = {\n onCancel: () => {},\n onUpgrade: () => {},\n};\n\nconst Body = styled(ContentLayout)`\n .upgrade-wrapper {\n background-color: #4f6af6;\n border-radius: 50%;\n padding: 5px;\n width: 48px;\n height: 48px;\n\n .upgrade-wrapper_icon {\n color: white;\n width: 100%;\n height: 100%;\n }\n }\n`;\n\nconst Footer = styled.div`\n .upgrade-button {\n margin-left: 24px;\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport PropTypes from 'prop-types';\n\nfunction PageHeader({ title, subTitle }) {\n return (\n <Content>\n <div className=\"title\">{title}</div>\n <div className=\"sub-title\">{subTitle}</div>\n </Content>\n );\n}\n\nconst Content = styled.div`\n text-align: center;\n\n .title {\n font-size: 24px;\n font-weight: 500;\n color: ${props => props.theme.palette.common.black};\n }\n\n .sub-title {\n font-size: 14px;\n color: ${props => props.theme.palette.grey[600]};\n }\n`;\n\nexport default PageHeader;\n\nPageHeader.propTypes = {\n title: PropTypes.string,\n subTitle: PropTypes.string,\n};\n\nPageHeader.defaultProps = {\n title: '',\n subTitle: '',\n};\n","import React, { useEffect, useState } from 'react';\nimport { useHistory, Link } from 'react-router-dom';\nimport axios from 'axios';\nimport semver from 'semver';\nimport isEmpty from 'lodash/isEmpty';\nimport PropTypes from 'prop-types';\nimport styled, { useTheme } from 'styled-components';\nimport throttle from 'lodash/throttle';\nimport { useMediaQuery } from '@material-ui/core';\nimport ArrowForward from '@material-ui/icons/ArrowForward';\nimport Alert from '@arcblock/ux/lib/Alert';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Connect from '@arcblock/did-connect/lib/Connect';\nimport ABTNodeIcon from '@arcblock/icons/lib/ABTNode';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\nimport { BlockletStatus } from '@blocklet/meta/lib/constants';\nimport Hidden from '@material-ui/core/Hidden';\nimport { useNodeContext } from '../../contexts/node';\nimport { useSessionContext } from '../../contexts/session';\nimport { getWebWalletUrl, getAuthMethod, getAccessibleUrl } from '../../libs/util';\nimport useQuery from '../../hooks/query';\nimport Button from './button';\nimport ContentLayout from './content-layout';\nimport AppLogo from './app-logo';\nimport StatusUpgrade from './status/upgrade-available';\nimport PageHeader from './page-header';\nimport LaunchResultMessage from './result-message';\n\nfunction Install({ blocklet }) {\n const query = useQuery();\n const history = useHistory();\n const theme = useTheme();\n const isBreakpointsDownSm = useMediaQuery(theme.breakpoints.down('sm'));\n const blockletMetaUrl = query.get('blocklet_meta_url');\n const blockletRegistryUrl = new URL(blockletMetaUrl).origin;\n\n const { api, info } = useNodeContext();\n const { t, locale } = useLocaleContext();\n const { session } = useSessionContext();\n\n const [openAuth, setOpenAuth] = useState(false);\n const [launching, setLaunching] = useState(false);\n const [blockletState, setBlockletState] = useState({ meta: null, loading: true, error: null });\n const [launchState, setLaunchState] = useState({\n exists: blocklet.isInstalled,\n status: 'launchBlocklet.installing',\n upgradeAvailable: null,\n blocklet: null,\n error: null,\n errorAction: blocklet.isInstalled ? 'view' : 'retry',\n });\n\n useEffect(() => {\n const onMount = async () => {\n if (!blocklet || !blocklet.meta) {\n return;\n }\n try {\n const { blocklet: b } = await api.getBlocklet({ input: { did: blocklet.meta.did } });\n setBlockletState(pre => ({ ...pre, loading: false }));\n if (!b) {\n return;\n }\n\n if (semver.gt(blocklet.meta.version, b.meta.version)) {\n const appDidEnv = b.environments.find(e => e.key === 'BLOCKLET_APP_ID');\n await handleLaunchState(b, {\n appDid: appDidEnv ? appDidEnv.value : '',\n did: b.meta.did,\n currentVersion: b.meta.version,\n version: blocklet.meta.version,\n });\n } else {\n await handleLaunchState(b);\n }\n } catch (err) {\n console.error('error fetch blocklet info', err);\n setBlockletState(pre => ({ ...pre, loading: false }));\n }\n };\n onMount();\n }, [blocklet]); // eslint-disable-line\n\n if (isEmpty(blocklet)) {\n return (\n <Center>\n <Spinner />\n </Center>\n );\n }\n\n const name = getDisplayName(blocklet, true);\n let intervalId = null;\n\n const redirectToBlockletOverview = b => {\n const accessUrl = `/blocklets/${b.meta.did}/configuration`;\n history.push(\n `/launch-blocklet/complete?status=installed&name=${encodeURIComponent(name)}&accessUrl=${encodeURIComponent(\n accessUrl\n )}&blocklet_meta_url=${blockletMetaUrl}`\n );\n };\n\n const handleLaunchStart = async () => {\n const isAuthorized = session.user && (session.user.permissions || []).includes('mutate_blocklet');\n if (isAuthorized && blocklet.isFree) {\n setLaunching(true);\n setLaunchState({ ...launchState, error: '' });\n\n await api\n .installBlocklet({\n input: { url: blockletMetaUrl, startImmediately: true },\n })\n .catch(err => {\n console.error('install blocklet failed', err);\n setLaunching(false);\n setLaunchState({ ...launchState, error: 'launchBlocklet.error.launchFailed' });\n });\n\n intervalId = poll();\n return;\n }\n\n setOpenAuth(true);\n };\n\n const visitOverview = b => {\n setLaunchState({ ...launchState, status: 'launchBlocklet.redirecting' });\n clearInterval(intervalId);\n setTimeout(() => {\n redirectToBlockletOverview(b);\n }, 1500);\n };\n\n const visitBlocklet = async b => {\n const urls = b.interfaces.map(x => x.url);\n const accessUrl = await getAccessibleUrl(urls);\n\n if (isEmpty(accessUrl)) {\n visitOverview(b);\n return;\n }\n\n setLaunchState({ ...launchState, status: 'launchBlocklet.redirecting' });\n clearInterval(intervalId);\n\n const url = new URL(accessUrl);\n\n if (b.status !== 'running') {\n url.searchParams.set('__start__', '1');\n }\n\n setTimeout(() => {\n history.push(\n `/launch-blocklet/complete?name=${encodeURIComponent(name)}&accessUrl=${encodeURIComponent(\n url.href\n )}&blocklet_meta_url=${blockletMetaUrl}`\n );\n }, 1500);\n };\n\n const handleInstalled = async b => {\n setTimeout(async () => {\n const result = await api.getBlocklet({ input: { did: b.meta.did } });\n if (result.blocklet.status === 'installed') {\n await handleLaunchState(result.blocklet);\n } else {\n intervalId = poll();\n }\n }, 1500);\n };\n\n const handleErrored = () => {\n setLaunching(false);\n setLaunchState(pre => ({\n ...pre,\n exists: true,\n error: 'launchBlocklet.error.installedButError',\n errorAction: 'view',\n }));\n };\n\n const handleUpgradeAvailable = (b, upgradeAvailable) => {\n setLaunching(false);\n setLaunchState(pre => ({ ...pre, upgradeAvailable }));\n };\n\n const handleStopped = () => {\n setLaunching(false);\n setLaunchState(pre => ({ ...pre, exists: true }));\n };\n\n const handleError = (error, errorAction) => setLaunchState({ ...launchState, error, errorAction });\n\n const handleBlockletExisted = (b, upgradeAvailable) => {\n if (upgradeAvailable) {\n handleUpgradeAvailable(b, upgradeAvailable);\n return;\n }\n\n if (['stopped', 'stopping'].includes(b.status)) {\n handleStopped(b);\n return;\n }\n\n if (['error', 'corrupted'].includes(b.status)) {\n handleErrored(b);\n return;\n }\n\n if (b.status === 'running') {\n visitBlocklet(b);\n return;\n }\n\n if (b.status === 'installed') {\n visitBlocklet(b);\n }\n };\n\n const handleLaunchState = async (b, upgradeAvailable) => {\n if (!b) {\n setLaunching(false);\n setLaunchState({ ...launchState, error: 'launchBlocklet.error.launchFailed' });\n return;\n }\n\n setLaunchState({ ...launchState, blocklet: b });\n handleBlockletExisted(b, upgradeAvailable);\n };\n\n const handleCancelUpgrade = b => {\n visitBlocklet(b);\n };\n\n const handleUpgrade = async (b, upgradeAvailable) => {\n try {\n const input = {\n did: b.meta.did,\n version: upgradeAvailable.version,\n registryUrl: blockletRegistryUrl,\n };\n\n setLaunching(true);\n setLaunchState({ ...launchState, status: 'common.upgrading' });\n await api.upgradeBlocklet({ input });\n } catch (error) {\n setLaunchState({ ...launchState, error: 'launchBlocklet.error.upgradeFailed' });\n }\n };\n\n const checkBlockletStatus = throttle(async () => {\n const { blocklet: b } = await api.getBlocklet({ input: { did: blocklet.meta.did } });\n\n if (!b) {\n clearInterval(intervalId);\n setLaunching(false);\n handleError('launchBlocklet.error.startFailed', 'retry');\n return;\n }\n\n const statusCode = BlockletStatus[b.status];\n\n if ([BlockletStatus.error, BlockletStatus.corrupted].includes(statusCode)) {\n setLaunching(false);\n clearInterval(intervalId);\n handleError('launchBlocklet.error.startFailed', 'view');\n }\n\n if (BlockletStatus.installed === statusCode) {\n clearInterval(intervalId);\n handleInstalled(b);\n }\n\n if ([BlockletStatus.stopped, BlockletStatus.running].includes(statusCode)) {\n handleLaunchState(b);\n }\n }, 3000);\n\n const poll = () => setInterval(checkBlockletStatus, 3000);\n\n const handleConnectSuccess = async ({ sessionToken }) => {\n localStorage.setItem('abt_node_login_token', sessionToken);\n await session.refresh();\n\n setLaunching(true);\n setOpenAuth(false);\n\n intervalId = poll();\n };\n\n const handleClose = () => setOpenAuth(false);\n\n if (blockletState.error) {\n return (\n <Alert variant=\"icon\" type=\"error\">\n {blockletState.error.message}\n </Alert>\n );\n }\n\n if (blockletState.loading) {\n return (\n <div style={{ marginTop: '100px', textAlign: 'center', width: '100%' }}>\n <Spinner />\n </div>\n );\n }\n\n let baseURL = '/';\n if (window.env && window.env.apiPrefix) {\n baseURL = window.env.apiPrefix;\n }\n\n const errorActions = {\n view: (\n <Button\n className=\"bottom-button\"\n component={Link}\n to={`/blocklets/${blocklet.meta.did}/overview`}\n fullWidth={isBreakpointsDownSm}\n rounded\n data-cy=\"view-blocklet\"\n color=\"primary\"\n variant=\"contained\">\n {t('launchBlocklet.viewApplication')}\n </Button>\n ),\n retry: (\n <Button\n className=\"bottom-button\"\n data-cy=\"retry-install\"\n disabled={openAuth}\n fullWidth={isBreakpointsDownSm}\n onClick={handleLaunchStart}>\n {openAuth && <Spinner size={[16, 10]} />}\n {t('common.retry')}\n </Button>\n ),\n };\n\n if (!launching && launchState.upgradeAvailable) {\n return (\n <Container>\n <StatusUpgrade\n onCancel={() => handleCancelUpgrade(launchState.blocklet)}\n onUpgrade={() => handleUpgrade(launchState.blocklet, launchState.upgradeAvailable)}\n />\n </Container>\n );\n }\n\n if (!launching && launchState.exists) {\n return (\n <Container>\n <LaunchResultMessage\n variant=\"info\"\n title={name}\n subTitle={t('launchBlocklet.error.installedButStopped')}\n footer={errorActions.view}\n />\n </Container>\n );\n }\n\n if (launchState.error) {\n return (\n <Container>\n <LaunchResultMessage\n variant=\"error\"\n title={name}\n subTitle={t(launchState.error, { appName: name, serverName: info.name })}\n footer={errorActions[launchState.errorAction]}\n />\n </Container>\n );\n }\n\n return (\n <Container>\n {!launchState.upgradeAvailable && (\n <div className=\"header\">\n <PageHeader\n title={launching ? t('launchBlocklet.start') : t('common.launch')}\n subTitle={launching ? '' : t('launchBlocklet.subTitle', { appName: name, serverName: info.name })}\n />\n </div>\n )}\n <div className=\"body\">\n {!launching && (\n <div className=\"illustrations\">\n <div className=\"ills-block ills-block-left\">\n <AppLogo className=\"i-icon\" blocklet={blocklet} blockletMetaUrl={blockletMetaUrl} />\n <div className=\"i-name\">{name}</div>\n </div>\n <ArrowForward className=\"arrow-icon\" />\n <div className=\"ills-block ills-block-right\">\n <ABTNodeIcon className=\"i-icon\" color=\"#BFBFBF\" />\n <div className=\"i-name\">{info.name}</div>\n </div>\n </div>\n )}\n {!launching && !launchState.exists && (\n <Hidden smDown>\n <Button\n className=\"bottom-button\"\n data-cy=\"start-launch\"\n disabled={openAuth}\n fullWidth={isBreakpointsDownSm}\n onClick={handleLaunchStart}>\n {openAuth && <Spinner size={[16, 10]} />}\n {t('common.next')}\n </Button>\n </Hidden>\n )}\n {launching && (\n <Waiting>\n <Spinner className=\"spinner\" />\n <div className=\"text\">{t(launchState.status, { appName: name, serverName: info.name })}</div>\n </Waiting>\n )}\n </div>\n <div className=\"footer\">\n {!launching && launchState.exists && (\n <Button\n className=\"footer-item bottom-button\"\n data-cy=\"view-blocklet\"\n component={Link}\n to={`/blocklets/${blocklet.meta.did}/overview`}\n fullWidth={isBreakpointsDownSm}\n rounded\n color=\"primary\"\n variant=\"contained\">\n {t('launchBlocklet.viewApplication')}\n </Button>\n )}\n {!launching && !launchState.exists && (\n <Hidden mdUp>\n <Button\n className=\"bottom-button\"\n data-cy=\"start-launch\"\n disabled={openAuth}\n fullWidth={isBreakpointsDownSm}\n onClick={handleLaunchStart}>\n {openAuth && <Spinner size={[16, 10]} />}\n {t('common.next')}\n </Button>\n </Hidden>\n )}\n </div>\n <Connect\n open={openAuth}\n popup\n className=\"connect\"\n action={`launch-${blocklet.isFree ? 'free' : 'paid'}-blocklet-by-${getAuthMethod(info)}`}\n checkFn={axios.create({ baseURL }).get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n webWalletUrl={getWebWalletUrl(info)}\n onSuccess={handleConnectSuccess}\n onClose={handleClose}\n locale={locale}\n messages={{\n title: `${t('launchBlocklet.dialog.title')}`,\n scan: blocklet.isFree\n ? t('launchBlocklet.dialog.freeDescription')\n : t('launchBlocklet.dialog.nonFreeDescription'),\n confirm: t('launchBlocklet.dialog.confirm'),\n success: t('launchBlocklet.dialog.success'),\n }}\n extraParams={{ blockletMetaUrl }}\n />\n </Container>\n );\n}\n\nInstall.propTypes = {\n blocklet: PropTypes.object.isRequired,\n};\n\nconst Waiting = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-top: 10%;\n color: #4f6af6;\n max-width: 420px;\n text-align: center;\n\n .spinner {\n color: inherit !important;\n }\n\n .text {\n font-size: 20px;\n margin-top: 24px;\n }\n`;\n\nconst Container = styled(ContentLayout)`\n .body {\n align-items: center;\n }\n\n .illustrations {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: start;\n text-align: center;\n margin-top: 16px;\n margin-bottom: 40px;\n width: 100%;\n }\n\n .ills-block {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n flex: 1;\n\n .i-icon {\n width: 64px;\n height: 64px;\n }\n\n .i-name {\n margin-top: 32px;\n font-weight: 500;\n font-size: 16px;\n color: #222222;\n }\n\n .i-sub-name {\n color: #999999;\n }\n }\n\n ${props => props.theme.breakpoints.up('sm')} {\n .ills-block-left {\n margin-left: 60px;\n }\n .ills-block-right {\n margin-right: 60px;\n }\n }\n .arrow-icon {\n align-self: start;\n color: #dde1fb;\n font-size: 38px;\n margin: 25px 0 0;\n ${props => props.theme.breakpoints.down('sm')} {\n margin: 25px 24px 0;\n }\n }\n\n .status-icon {\n width: 48px;\n height: 48px;\n }\n\n .status-title {\n margin-top: 16px;\n text-align: center;\n font-size: 24px;\n line-height: 28px;\n }\n\n .status-desc {\n text-align: center;\n margin-top: 16px;\n color: #999999;\n font-size: 16px;\n line-height: 28px;\n }\n`;\n\nconst Center = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n`;\n\nexport default Install;\n","import React from 'react';\n\nexport default function AgreementApp({ ...props }) {\n return (\n <div {...props} style={{ width: '100%' }}>\n <h3>End User License Agreement for Application</h3>\n <p>Blocklet Server License Agreement ArcBlock, Inc. version 2020-08-28</p>\n <p>BLOCKLET SERVER LICENSE AGREEMENT</p>\n <p>暂无</p>\n </div>\n );\n}\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useHistory, Link } from 'react-router-dom';\nimport styled, { useTheme } from 'styled-components';\nimport { useMediaQuery } from '@material-ui/core';\nimport Tabs from '@arcblock/ux/lib/Tabs';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport { useNodeContext } from '../../contexts/node';\n\nimport Button from './button';\nimport AgreementNode from '../node/eula-content'; // eslint-disable-line\nimport AgreementApp from './agreement-app';\nimport ContentLayout from './content-layout';\nimport PageHeader from './page-header';\nimport LaunchResultMessage from './result-message';\n\n// TODO: 加载 Blocklet 定义的 Agreement\nexport default function Agreement({ blocklet }) {\n const history = useHistory();\n const [currentTab, setCurrentTab] = useState('application');\n const { t } = useLocaleContext();\n const { info } = useNodeContext();\n\n const theme = useTheme();\n const isBreakpointsDownSm = useMediaQuery(theme.breakpoints.down('sm'));\n\n if (blocklet.isInstalled) {\n return (\n <LaunchResultMessage\n variant=\"info\"\n title={t('common.reminder')}\n subTitle={t('launchBlocklet.alreadyInstalled', { name: getDisplayName(blocklet, true) })}\n footer={\n <Button\n className=\"footer-item bottom-button\"\n data-cy=\"view-blocklet\"\n component={Link}\n to={`/blocklets/${blocklet.meta.did}/overview`}\n fullWidth={isBreakpointsDownSm}\n rounded\n color=\"primary\"\n variant=\"contained\">\n {t('launchBlocklet.viewApplication')}\n </Button>\n }\n />\n );\n }\n const handleAgree = () => {\n history.push(`/launch-blocklet/install${window.location.search}`);\n };\n\n const tabMap = new Map([\n [\n 'application',\n {\n label: t('launchBlocklet.appLicenseName'),\n value: 'application',\n component: AgreementApp,\n },\n ],\n ]);\n\n if (!info) {\n return (\n <Center>\n <Spinner />\n </Center>\n );\n }\n\n if (!info.initialized) {\n tabMap.set('abtnode', {\n label: t('launchBlocklet.abtnodeLicenseName'),\n value: 'abtnode',\n component: AgreementNode,\n });\n }\n\n const tabs = [];\n for (const value of tabMap.values()) {\n tabs.push({\n label: value.label,\n value: value.value,\n });\n }\n\n const TabContent = tabMap.get(currentTab).component;\n\n return (\n <Content>\n <PageHeader title={tabMap.size > 1 ? t('launchBlocklet.agreement') : t('launchBlocklet.appLicenseName')} />\n <div className=\"body\">\n {tabMap.size > 1 && <Tabs tabs={tabs} current={currentTab} onChange={setCurrentTab} />}\n <div className=\"agreement\">\n <div className=\"agreement_content\">\n <TabContent style={{ width: '100%' }} />\n </div>\n </div>\n </div>\n <div className=\"footer\">\n <Button className=\"bottom-button\" data-cy=\"agree-all\" onClick={handleAgree}>\n {t('launchBlocklet.agreeAll')}\n </Button>\n </div>\n </Content>\n );\n}\n\nAgreement.propTypes = {\n blocklet: PropTypes.object.isRequired,\n};\n\nconst Content = styled(ContentLayout)`\n .body {\n justify-content: center;\n }\n .agreement {\n position: relative;\n flex: 1;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 300px;\n border: 1px solid #f0f0f0;\n border-radius: 12px;\n\n ${props => props.theme.breakpoints.up('md')} {\n margin-top: 24px;\n }\n\n ${props => props.theme.breakpoints.down('sm')} {\n margin-top: 16px;\n }\n\n .agreement_content {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow-y: auto;\n\n ${props => props.theme.breakpoints.up('md')} {\n padding: 0 24px;\n }\n\n ${props => props.theme.breakpoints.down('sm')} {\n padding: 0 16px;\n }\n }\n }\n`;\n\nconst Center = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n`;\n","import React from 'react';\nimport { useRouteMatch, Switch, Route, Redirect } from 'react-router-dom';\nimport { useAsync } from 'react-use';\nimport joinUrl from 'url-join';\nimport Alert from '@arcblock/ux/lib/Alert';\nimport styled from 'styled-components';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Layout from '@blocklet/launcher-layout';\nimport { StepProvider } from '@blocklet/launcher-layout/lib/context/step';\nimport { useNodeContext } from '../../contexts/node';\nimport useQuery from '../../hooks/query';\n\nimport HeaderAddon from '../../components/layout/addon';\nimport Center from '../../components/launch-blocklet/center';\nimport Complete from '../../components/launch-blocklet/step-complete';\nimport Install from '../../components/launch-blocklet/step-install';\nimport Agreement from '../../components/launch-blocklet/step-agreement';\nimport { getBlockletLogoUrl, getPathPrefix } from '../../libs/util';\n\n// TODO: add skeleton here\nexport default function BlockletLauncher() {\n const { path } = useRouteMatch();\n const { t, locale } = useLocaleContext();\n const query = useQuery();\n const { api } = useNodeContext();\n\n let url = (query.get('blocklet_meta_url') || '').trim();\n url = decodeURIComponent(url);\n\n const state = useAsync(async () => {\n if (!url) {\n throw new Error(t('common.invalidParam'));\n }\n\n const { meta, isFree, isInstalled } = await api.getBlockletMetaFromUrl({ input: { url, checkPrice: true } });\n if (!meta) {\n throw new Error(t('launchBlocklet.error.loadMetaFailed'));\n }\n\n return { meta, isFree, isInstalled };\n });\n\n if (state.error) {\n return (\n <Center>\n <div>\n <Alert style={{ width: '100%', wordBreak: 'break-all' }} variant=\"icon\" type=\"error\">\n {state.error.message}\n </Alert>\n </div>\n </Center>\n );\n }\n\n const { meta, isFree } = state.value || {};\n const basePath = joinUrl(getPathPrefix(), path);\n const steps = [\n {\n key: 'agreement',\n name: t('launchBlocklet.agreement'),\n path: joinUrl(basePath, 'agreement'),\n },\n {\n key: 'install',\n name: t('launchBlocklet.launch'),\n path: joinUrl(basePath, 'install'),\n },\n {\n key: 'complete',\n name: t('launchBlocklet.complete'),\n path: joinUrl(basePath, 'complete'),\n },\n ];\n\n if (meta) {\n meta.registryUrl = new URL(url).origin;\n }\n\n return (\n <StepProvider steps={steps}>\n <Layout\n locale={locale}\n blockletMeta={{ ...meta, isFree }}\n headerEndAddons={<HeaderAddon notification={false} />}\n pcWidth=\"80%\"\n logoUrl={\n meta && meta.logo\n ? getBlockletLogoUrl({\n did: meta.did,\n baseUrl: meta.registryUrl,\n logoPath: meta.logo,\n })\n : null\n }>\n <Content>\n <Switch>\n <Redirect exact path={path} to={`${path}/agreement${window.location.search}`} />\n <Route exact path={`${path}/agreement`}>\n <Agreement blocklet={state.value || {}} />\n </Route>\n <Route exact path={`${path}/install`}>\n <Install blocklet={state.value || {}} />\n </Route>\n <Route exact path={`${path}/complete`}>\n <Complete blocklet={state.value || {}} />\n </Route>\n </Switch>\n </Content>\n </Layout>\n </StepProvider>\n );\n}\n\nconst Content = styled.div`\n padding-top: 34px;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n\n .bottom-button {\n min-width: 200px;\n }\n`;\n"],"sourceRoot":""}