@abtnode/webapp 1.7.15 → 1.7.16
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.js +4 -4
- package/blocklet.yml +1 -1
- package/build/asset-manifest.json +6 -6
- package/build/index.html +1 -1
- package/build/{precache-manifest.75ccdfe1beea8a294a566b342de457a1.js → precache-manifest.111eaabd1a806e634fb3b7f27cdbfad5.js} +5 -5
- package/build/service-worker.js +1 -1
- package/build/static/js/20.6e0ae300.chunk.js +2 -0
- package/build/static/js/20.6e0ae300.chunk.js.map +1 -0
- package/build/static/js/{runtime-main.596d5bc7.js → runtime-main.9c757117.js} +2 -2
- package/build/static/js/{runtime-main.596d5bc7.js.map → runtime-main.9c757117.js.map} +1 -1
- package/package.json +1 -1
- package/build/static/js/20.ca430cdf.chunk.js +0 -2
- package/build/static/js/20.ca430cdf.chunk.js.map +0 -1
package/blocklet.yml
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"static/js/3.f815705f.chunk.js.map": "./static/js/3.f815705f.chunk.js.map",
|
|
11
11
|
"main.js": "./static/js/main.07ae2b71.chunk.js",
|
|
12
12
|
"main.js.map": "./static/js/main.07ae2b71.chunk.js.map",
|
|
13
|
-
"runtime-main.js": "./static/js/runtime-main.
|
|
14
|
-
"runtime-main.js.map": "./static/js/runtime-main.
|
|
13
|
+
"runtime-main.js": "./static/js/runtime-main.9c757117.js",
|
|
14
|
+
"runtime-main.js.map": "./static/js/runtime-main.9c757117.js.map",
|
|
15
15
|
"static/css/6.e9ffd314.chunk.css": "./static/css/6.e9ffd314.chunk.css",
|
|
16
16
|
"static/js/6.f5ee91dd.chunk.js": "./static/js/6.f5ee91dd.chunk.js",
|
|
17
17
|
"static/js/6.f5ee91dd.chunk.js.map": "./static/js/6.f5ee91dd.chunk.js.map",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"static/js/18.328bc71d.chunk.js.map": "./static/js/18.328bc71d.chunk.js.map",
|
|
45
45
|
"static/js/19.ef77b080.chunk.js": "./static/js/19.ef77b080.chunk.js",
|
|
46
46
|
"static/js/19.ef77b080.chunk.js.map": "./static/js/19.ef77b080.chunk.js.map",
|
|
47
|
-
"static/js/20.
|
|
48
|
-
"static/js/20.
|
|
47
|
+
"static/js/20.6e0ae300.chunk.js": "./static/js/20.6e0ae300.chunk.js",
|
|
48
|
+
"static/js/20.6e0ae300.chunk.js.map": "./static/js/20.6e0ae300.chunk.js.map",
|
|
49
49
|
"static/css/21.6391f1d6.chunk.css": "./static/css/21.6391f1d6.chunk.css",
|
|
50
50
|
"static/js/21.c9581516.chunk.js": "./static/js/21.c9581516.chunk.js",
|
|
51
51
|
"static/js/21.c9581516.chunk.js.map": "./static/js/21.c9581516.chunk.js.map",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"static/js/28.fa16a4e7.chunk.js": "./static/js/28.fa16a4e7.chunk.js",
|
|
65
65
|
"static/js/28.fa16a4e7.chunk.js.map": "./static/js/28.fa16a4e7.chunk.js.map",
|
|
66
66
|
"index.html": "./index.html",
|
|
67
|
-
"precache-manifest.
|
|
67
|
+
"precache-manifest.111eaabd1a806e634fb3b7f27cdbfad5.js": "./precache-manifest.111eaabd1a806e634fb3b7f27cdbfad5.js",
|
|
68
68
|
"service-worker.js": "./service-worker.js",
|
|
69
69
|
"static/css/21.6391f1d6.chunk.css.map": "./static/css/21.6391f1d6.chunk.css.map",
|
|
70
70
|
"static/css/6.e9ffd314.chunk.css.map": "./static/css/6.e9ffd314.chunk.css.map",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"static/media/long-arrow.4be14920.svg": "./static/media/long-arrow.4be14920.svg"
|
|
95
95
|
},
|
|
96
96
|
"entrypoints": [
|
|
97
|
-
"static/js/runtime-main.
|
|
97
|
+
"static/js/runtime-main.9c757117.js",
|
|
98
98
|
"static/css/6.e9ffd314.chunk.css",
|
|
99
99
|
"static/js/6.f5ee91dd.chunk.js",
|
|
100
100
|
"static/js/main.07ae2b71.chunk.js"
|
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"/><script>"https:"===window.location.protocol&&document.write('<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />')</script><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/6.e9ffd314.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,o,u=t[0],d=t[1],i=t[2],l=t[3]||[],s=0,h=[];s<u.length;s++)o=u[s],Object.prototype.hasOwnProperty.call(c,o)&&c[o]&&h.push(c[o][0]),c[o]=0;for(n in d)Object.prototype.hasOwnProperty.call(d,n)&&(e[n]=d[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,o=1;o<r.length;o++){var i=r[o];0!==c[i]&&(n=!1)}n&&(a.splice(t--,1),e=d(d.s=r[0]))}return 0===a.length&&(f.forEach((function(e){if(void 0===c[e]){c[e]=null;var t=document.createElement("link");d.nc&&t.setAttribute("nonce",d.nc),t.rel="prefetch",t.as="script",t.href=u(e),document.head.appendChild(t)}})),f.length=0),e}var n={},o={5:0},c={5:0},a=[],f=[];function u(e){return d.p+"static/js/"+({}[e]||e)+"."+{0:"806c0fce",1:"6e89b573",2:"436e9649",3:"f815705f",7:"0ec5d2a8",8:"b234d0d6",9:"c664793b",10:"9f50416f",11:"53b5ae0b",12:"f1bf1115",13:"f4134870",14:"6e625019",15:"1e67e159",16:"f557b837",17:"c0ca9b01",18:"328bc71d",19:"ef77b080",20:"
|
|
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"/><script>"https:"===window.location.protocol&&document.write('<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />')</script><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/6.e9ffd314.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,o,u=t[0],d=t[1],i=t[2],l=t[3]||[],s=0,h=[];s<u.length;s++)o=u[s],Object.prototype.hasOwnProperty.call(c,o)&&c[o]&&h.push(c[o][0]),c[o]=0;for(n in d)Object.prototype.hasOwnProperty.call(d,n)&&(e[n]=d[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,o=1;o<r.length;o++){var i=r[o];0!==c[i]&&(n=!1)}n&&(a.splice(t--,1),e=d(d.s=r[0]))}return 0===a.length&&(f.forEach((function(e){if(void 0===c[e]){c[e]=null;var t=document.createElement("link");d.nc&&t.setAttribute("nonce",d.nc),t.rel="prefetch",t.as="script",t.href=u(e),document.head.appendChild(t)}})),f.length=0),e}var n={},o={5:0},c={5:0},a=[],f=[];function u(e){return d.p+"static/js/"+({}[e]||e)+"."+{0:"806c0fce",1:"6e89b573",2:"436e9649",3:"f815705f",7:"0ec5d2a8",8:"b234d0d6",9:"c664793b",10:"9f50416f",11:"53b5ae0b",12:"f1bf1115",13:"f4134870",14:"6e625019",15:"1e67e159",16:"f557b837",17:"c0ca9b01",18:"328bc71d",19:"ef77b080",20:"6e0ae300",21:"c9581516",22:"9d6df20d",23:"334b85e6",24:"14cea2af",25:"47277c1e",26:"e04a6f53",27:"4d9d8a27",28:"fa16a4e7"}[e]+".chunk.js"}function d(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,d),r.l=!0,r.exports}d.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{7:1,8:1,9:1,21:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{0:"31d6cfe0",1:"31d6cfe0",2:"31d6cfe0",3:"31d6cfe0",7:"1cefc4d5",8:"416fbabe",9:"416fbabe",10:"31d6cfe0",11:"31d6cfe0",12:"31d6cfe0",13:"31d6cfe0",14:"31d6cfe0",15:"31d6cfe0",16:"31d6cfe0",17:"31d6cfe0",18:"31d6cfe0",19:"31d6cfe0",20:"31d6cfe0",21:"6391f1d6",22:"31d6cfe0",23:"31d6cfe0",24:"31d6cfe0",25:"31d6cfe0",26:"31d6cfe0",27:"31d6cfe0",28:"31d6cfe0"}[e]+".chunk.css",c=d.p+n,a=document.getElementsByTagName("link"),f=0;f<a.length;f++){var u=(l=a[f]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(u===n||u===c))return t()}var i=document.getElementsByTagName("style");for(f=0;f<i.length;f++){var l;if((u=(l=i[f]).getAttribute("data-href"))===n||u===c)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||c,a=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");a.code="CSS_CHUNK_LOAD_FAILED",a.request=n,delete o[e],s.parentNode.removeChild(s),r(a)},s.href=c,document.getElementsByTagName("head")[0].appendChild(s)})).then((function(){o[e]=0})));var r=c[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=c[e]=[t,n]}));t.push(r[2]=n);var a,f=document.createElement("script");f.charset="utf-8",f.timeout=120,d.nc&&f.setAttribute("nonce",d.nc),f.src=u(e);var i=new Error;a=function(t){f.onerror=f.onload=null,clearTimeout(l);var r=c[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,r[1](i)}c[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)},d.m=e,d.c=n,d.d=function(e,t,r){d.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},d.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.t=function(e,t){if(1&t&&(e=d(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(d.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)d.d(r,n,function(t){return e[t]}.bind(null,n));return r},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,"a",t),t},d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},d.p="./",d.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/6.f5ee91dd.chunk.js"></script><script src="./static/js/main.07ae2b71.chunk.js"></script></body></html>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
self.__precacheManifest = (self.__precacheManifest || []).concat([
|
|
2
2
|
{
|
|
3
|
-
"revision": "
|
|
3
|
+
"revision": "d5bc79686beed6f6f7459c31104d842f",
|
|
4
4
|
"url": "./index.html"
|
|
5
5
|
},
|
|
6
6
|
{
|
|
@@ -92,8 +92,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
|
|
|
92
92
|
"url": "./static/js/2.436e9649.chunk.js.LICENSE.txt"
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
|
-
"revision": "
|
|
96
|
-
"url": "./static/js/20.
|
|
95
|
+
"revision": "43bd890dcd8e5c3cf6a5",
|
|
96
|
+
"url": "./static/js/20.6e0ae300.chunk.js"
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
99
|
"revision": "475a6d0b87eb29a83dce",
|
|
@@ -172,8 +172,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
|
|
|
172
172
|
"url": "./static/js/main.07ae2b71.chunk.js"
|
|
173
173
|
},
|
|
174
174
|
{
|
|
175
|
-
"revision": "
|
|
176
|
-
"url": "./static/js/runtime-main.
|
|
175
|
+
"revision": "e95186c94e961b05dcef",
|
|
176
|
+
"url": "./static/js/runtime-main.9c757117.js"
|
|
177
177
|
},
|
|
178
178
|
{
|
|
179
179
|
"revision": "5ab204b9b95c06640dbefae9a65b1db2",
|
package/build/service-worker.js
CHANGED
|
@@ -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.
|
|
17
|
+
"./precache-manifest.111eaabd1a806e634fb3b7f27cdbfad5.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([[20],{1192:function(e,t,n){"use strict";n.d(t,"e",(function(){return O})),n.d(t,"b",(function(){return x})),n.d(t,"a",(function(){return N})),n.d(t,"d",(function(){return R})),n.d(t,"c",(function(){return T}));var a=n(19),r=n.n(a),l=n(32),c=n(1193),o=n.n(c),i=n(1359),s=n.n(i),u=n(1360),d=n.n(u),m=n(1361),p=n(1362),f=n.n(p),b=n(155),h=n.n(b),g=n(1228),k=n.n(g),v=n(552),E=function(e){return function(e){for(var t=window.atob(e),n=new Uint8Array(t.length),a=0;a<t.length;a++)n[a]=t.charCodeAt(a);return n.buffer}(Object(v.toDataURL)(e,{size:200}).replace(/^[^,]*,/,""))};function O(e){return e.replace(/[\s/@_]/g,"-").replace(/[^a-zA-Z0-9_-]/g,"").replace(/(^[-\s]+)|([-\s]+$)/g,"").toLowerCase()}function x(e,t){var n=s()(o()(t.meta),(function(e){return null!==e}));return n.name=e,n.did=k()(e),n.logo="logo.png",n.interfaces.forEach((function(e){e.services||delete e.services})),t.children.forEach((function(e){e.dynamic&&e.bundleSource&&n.children.push({name:e.meta.name,source:e.bundleSource,title:e.meta.title,mountPoint:e.mountPoint})})),n.environments=(t.configs||[]).map((function(e){return{name:e.key,description:"Automatically generated when exporting",required:!!e.required,secure:!!e.secure,default:e.secure?"":e.value||""}})),n.capabilities.component=!1,n}var w=function(e){return"Copyright \xa9 2022 ".concat(e||"","\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \u201cSoftware\u201d), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.")},j=".DS_Store\n.blocklet",y="name: Deploy\n\non:\n push:\n branches:\n - main\n\njobs:\n Deploy:\n runs-on: ubuntu-latest\n\n steps:\n - name: Checkout repo\n uses: actions/checkout@v2\n\n - name: Blocklet workflow\n uses: blocklet/action-workflow@v1\n with:\n skip-upload: true\n skip-deploy: true\n bundle-command: blocklet bundle --create-release\n github-token: ${{ secrets.GITHUB_TOKEN }}";function N(e){return B.apply(this,arguments)}function B(){return(B=Object(l.a)(r.a.mark((function e(t){var n,a,l,c,o,i,s=arguments;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=s.length>1&&void 0!==s[1]?s[1]:{},a=n.holder,l="".concat(t.name.split("/").pop()),c="# ".concat(t.title,"\n\n## Introduction\n\n").concat(t.description),o=new d.a,(i=o.folder(l)).file("blocklet.yml",m.a.dump(t)),i.file("blocklet.md",c),i.file("README.md",c),i.file("logo.png",E(t.did)),i.file("LICENSE",w(a)),i.file(".gitignore",j),i.folder("screenshots").file(".gitkeep",""),i.folder(".github").folder("workflows").file("main.yml",y),e.next=15,new Promise((function(e,t){o.generateAsync({type:"blob"}).then((function(t){f()(t,"".concat(l,".zip")),e()})).catch((function(e){t(e)}))}));case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var R=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=t.routing.adminPath,r=n?encodeURIComponent(h()(window.location.origin,a)):h()(window.location.origin,a),l=h()(null===t||void 0===t?void 0:t.blockletRegistry,"/api/blocklets/".concat(e.did,"/blocklet.json"));return{serverUrl:r,metaUrl:l}},T=function(e,t){var n=R(e,t),a=n.metaUrl,r=n.serverUrl,l=new URL(h()(r,"/launch-blocklet/agreement"));return l.searchParams.set("blocklet_meta_url",a),l.searchParams.set("from",window.location.href),l.href}},1228:function(e,t,n){(function(t){var a=n(1207).types,r=n(1172).toHex,l=n(1368).fromPublicKey;e.exports=function(e){var n=r(t.from("string"===typeof e?e.trim():e));return l(n,{role:a.RoleType.ROLE_ANY})}}).call(this,n(760).Buffer)},1257:function(e,t){},1258:function(e,t){},1259:function(e,t){},1260:function(e,t){},1261:function(e,t){},1265:function(e,t){},1266:function(e,t){},1267:function(e,t){},1268:function(e,t){},1271:function(e,t){},1272:function(e,t){},1331:function(e,t,n){e.exports=n.p+"static/media/logo.3f75f557.svg"},1647:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=s;var a=o(n(0)),r=o(n(26)),l=o(n(8)),c=["children"];function o(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function s(e){var t=e.children,n=i(e,c);return a.default.createElement(u,n,t)}s.propTypes={children:l.default.any.isRequired};var u=r.default.div.withConfig({displayName:"content-layout__Container",componentId:"sc-panu44-0"})(["display:flex;flex-direction:column;align-items:center;width:100%;height:100%;.header{text-align:center;}.body{display:flex;flex-direction:column;align-items:center;margin-top:30px;width:100%;min-height:200px;flex:1;","{padding:24px;}","{padding:0 16px 16px;}}.footer{display:flex;justify-content:center;","{padding-bottom:34px;}","{margin-top:auto;padding-bottom:10px;}}"],(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.breakpoints.up("sm")}),(function(e){return e.theme.breakpoints.down("md")}))},2077:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return ft}));var a,r,l,c=n(29),o=n(111),i=n(19),s=n.n(i),u=n(32),d=n(0),m=n.n(d),p=n(41),f=n(1653),b=n(155),h=n.n(b),g=n(542),k=n.n(g),v=n(621),E=n(26),O=n(33),x=n(2029),w=n.n(x),j=n(1518),y=n(704),N=n.n(y),B=n(2031),R=n.n(B),T=n(2032),I=n.n(T),S=n(2033),A=n.n(S),U=n(2034),L=n.n(U),C=n(703),F=n.n(C),_=n(40),P=n(551),D=E.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"]))),M=n(1316),z=n.n(M),H=n(178),W=n(1379),G=n.n(W),Y=n(89),V=n.n(Y),q=n(1647),K=n.n(q),J=n(92),$=n.n(J);var X=E.default.a(r||(r=Object(c.a)(["\n display: block;\n height: 36px;\n color: ",";\n"])),(function(e){return e.theme.palette.primary.main})),Z=Object(E.default)(K.a)(l||(l=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("md")}),(function(e){return"error"===e.variant?e.theme.palette.error.main:e.theme.palette.success.main})),Q=function(e){var t=e.blocklet,n=Object(O.useLocaleContext)().t,a=Object(_.c)().info,r=Object(P.a)(),l=decodeURIComponent(r.get("accessUrl")||"");return z()(t)?m.a.createElement($.a,{relative:"parent"},m.a.createElement(V.a,null)):m.a.createElement(Z,null,m.a.createElement("div",{className:"body"},m.a.createElement(G.a,{variant:"success",title:Object(H.getDisplayName)(t,!0),subTitle:n("launchBlocklet.installSuccess",{serverName:a.name}),footer:m.a.createElement(X,{href:l,rel:"noreferrer","data-cy":"open-blocklet"},n("common.open"))})))},ee=n(11),te=n(90),ne=n(564),ae=n.n(ne),re=n(1248),le=n.n(re),ce=n(2036),oe=n.n(ce),ie=n(1178),se=n.n(ie),ue=n(724),de=n(1370),me=n.n(de),pe=n(182),fe=n.n(pe),be=n(545),he=n.n(be),ge=n(543),ke=n.n(ge),ve=n(51),Ee=n(1648),Oe=n.n(Ee),xe=n(154),we=n.n(xe),je=n(2039),ye=n.n(je),Ne=n(596),Be=n(66),Re=n(110),Te=n(1192),Ie=n(204),Se=n(135),Ae=n.n(Se),Ue=["children"];function Le(e){var t=e.children,n=Object(Ie.a)(e,Ue);return m.a.createElement(Ae.a,Object.assign({variant:"contained",color:"primary"},n),t)}var Ce=m.a.forwardRef((function(e,t){return m.a.createElement(Le,Object.assign({},e,{forwardedRef:t}))})),Fe=n(8),_e=n.n(Fe),Pe=n(443),De=n.n(Pe);function Me(e){var t=e.blocklet,n=e.blockletMetaUrl,a=t.meta,r=a.did,l=a.logo;return l?m.a.createElement(De.a,{src:Object(Re.l)({did:r,logoPath:l,baseUrl:new URL(n).origin}),width:64,size:"contain",placeholder:"application logo"}):m.a.createElement(ke.a,{did:r,size:64})}function ze(e){var t=e.onCancel,n=e.onUpgrade,a=Object(O.useLocaleContext)().t;return m.a.createElement(G.a,{variant:"info",title:a("launchBlocklet.newVersion"),subTitle:a("launchBlocklet.newVersionDesc"),footer:m.a.createElement(m.a.Fragment,null,m.a.createElement(Ce,{onClick:t,variant:"outlined"},a("launchBlocklet.later")),m.a.createElement(Ce,{onClick:n,style:{marginLeft:24}},a("launchBlocklet.upgradeNow")))})}Me.propTypes={blocklet:_e.a.object.isRequired,blockletMetaUrl:_e.a.string.isRequired},ze.defaultProps={onCancel:function(){},onUpgrade:function(){}};var He,We,Ge,Ye,Ve,qe=n(1331),Ke=n.n(qe),Je=n(35);var $e,Xe,Ze=E.default.a(He||(He=Object(c.a)(["\n display: flex;\n justify-content: center;\n align-items: center;\n height: 36px;\n color: ",";\n"])),(function(e){return e.theme.palette.primary.main})),Qe=E.default.div(We||(We=Object(c.a)(["\n color: #1dc1c7;\n"]))),et=Object(E.default)(K.a)(Ge||(Ge=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 .ills-block-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n flex: 1;\n }\n .ills-block {\n max-width: 220px;\n .i-icon {\n width: 64px;\n height: 64px;\n }\n\n .i-name {\n margin-top: 16px;\n font-weight: 400;\n font-size: 16px;\n color: #222222;\n }\n\n .i-sub-name {\n color: #999999;\n }\n }\n\n .arrow-icon {\n align-self: start;\n color: #c4c5ca;\n font-size: 30px;\n margin: 16px 0 0;\n "," {\n margin: 25px 24px 0;\n }\n }\n\n .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 .launch-page-header {\n transition: all ease 0.3s;\n &.header-hide {\n opacity: 0;\n }\n }\n .result-footer {\n overflow: visible;\n }\n"])),(function(e){return e.theme.breakpoints.down("md")})),tt=E.default.div(Ye||(Ye=Object(c.a)(["\n .msg-before {\n display: inline-block;\n color: #aaa;\n font-size: 14px;\n margin-right: 6px;\n }\n"]))),nt=function(e){var t=e.blocklet,n=Object(P.a)(),a=Object(p.k)(),r=Object(E.useTheme)(),l=Object(v.a)(r.breakpoints.down("md")),c=se()("skip-blocklet-setup",!1),i=Object(ee.a)(c,1)[0],f=n.get("blocklet_meta_url"),b=new URL(f).origin,h=function(e){var t=Object(d.useState)(""),n=Object(ee.a)(t,2),a=n[0],r=n[1],l=Object(d.useRef)(null);l.current=e;var c=function(e){return function(t){t.meta.did===l.current.meta.did&&e(t)}};return Object(Je.b)(ve.BlockletEvents.added,c((function(){return r("added")}))),Object(Je.b)(ve.BlockletEvents.installed,c((function(){return r("installed")}))),Object(Je.b)(ve.BlockletEvents.statusChange,c((function(e){switch(e.status){case ve.BlockletStatus.downloading:r("downloading");break;case ve.BlockletStatus.installing:r("installing")}}))),Object(Je.b)(ve.BlockletEvents.installFailed,c((function(){r("installFailed")}))),Object(Je.b)(ve.BlockletEvents.downloadFailed,c((function(){r("downloadFailed")}))),a}(t),g=Object(_.c)(),x=g.api,w=g.info,j=g.loading,y=Object(O.useLocaleContext)(),N=y.t,B=y.locale,R=Object(Be.c)().session,T=Object(d.useState)(!1),I=Object(ee.a)(T,2),S=I[0],A=I[1],U=Object(d.useState)(!1),L=Object(ee.a)(U,2),C=L[0],F=L[1],D=Object(d.useState)({meta:null,loading:!0,error:null}),M=Object(ee.a)(D,2),W=M[0],Y=M[1],q=Object(d.useState)({exists:t.isInstalled,status:"launchBlocklet.installing",upgradeAvailable:null,blocklet:null,error:null,errorAction:t.isInstalled?"view":"retry"}),K=Object(ee.a)(q,2),J=K[0],X=K[1],Z=Object(d.useState)(""),Q=Object(ee.a)(Z,2),ne=Q[0],re=Q[1],ce=new URL(window.location.href).searchParams.get("from");if(Object(d.useEffect)((function(){(function(){var e=Object(u.a)(s.a.mark((function e(){var n,a,r;return s.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,x.getBlocklet({input:{did:t.meta.did}});case 5:if(n=e.sent,a=n.blocklet,Y((function(e){return Object(o.a)(Object(o.a)({},e),{},{loading:!1})})),a){e.next=10;break}return e.abrupt("return");case 10:if(!le.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,Ie(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,Ie(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),Y((function(e){return Object(o.a)(Object(o.a)({},e),{},{loading:!1})}));case 24:case"end":return e.stop()}}),e,null,[[2,20]])})));return function(){return e.apply(this,arguments)}})()()}),[t]),"installFailed"!==h&&"downloadFailed"!==h||(F(!1),X(Object(o.a)(Object(o.a)({},J),{},{error:"launchBlocklet.error.".concat(h)}))),z()(t)||j)return m.a.createElement($.a,{relative:"parent"},m.a.createElement(V.a,null));var ie=Object(H.getDisplayName)(t,!0),de=null,pe=function(){var e=Object(u.a)(s.a.mark((function e(){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(R.user&&(R.user.permissions||[]).includes("mutate_blocklet"))||!t.isFree){e.next=8;break}return F(!0),X(Object(o.a)(Object(o.a)({},J),{},{error:""})),e.next=6,x.installBlocklet({input:{url:f}}).catch((function(e){we.a.error(e.message),console.error("install blocklet failed",e)}));case 6:return de=Ue(),e.abrupt("return");case 8:A(!0);case 9:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),be=function(e){X(Object(o.a)(Object(o.a)({},J),{},{status:"launchBlocklet.redirecting"})),clearInterval(de),setTimeout((function(){!function(e){var t="/blocklets/".concat(e.meta.did,"/configuration"),r="/launch-blocklet/complete?status=installed&name=".concat(encodeURIComponent(ie),"&accessUrl=").concat(encodeURIComponent(t),"&blocklet_meta_url=").concat(f),l=n.get("from_launcher");l&&(r+="&from_launcher=".concat(l)),a.push(r)}(e)}),1500)},ge=function(){var e=Object(u.a)(s.a.mark((function e(n){var a,r,l,c;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.interfaces.map((function(e){return e.url})),e.next=3,Object(Re.k)(r);case 3:if(l=e.sent,!z()(l)&&!i){e.next=7;break}return be(n),e.abrupt("return");case 7:X(Object(o.a)(Object(o.a)({},J),{},{status:"launchBlocklet.redirecting"})),clearInterval(de),(c=new URL(l)).searchParams.set("serverUrl",null===(a=Object(Te.d)(t,w))||void 0===a?void 0:a.serverUrl),"running"!==n.status&&c.searchParams.set("__start__","1"),re(c.href),setTimeout((function(){window.location.href=c.href}),1500);case 14:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Ee=function(){var e=Object(u.a)(s.a.mark((function e(t){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:setTimeout(Object(u.a)(s.a.mark((function e(){var n;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x.getBlocklet({input:{did:t.meta.did}});case 2:if("installed"!==(n=e.sent).blocklet.status){e.next=8;break}return e.next=6,Ie(n.blocklet);case 6:e.next=9;break;case 8:de=Ue();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)}}(),xe=function(e,t){return X(Object(o.a)(Object(o.a)({},J),{},{error:e,errorAction:t}))},je=function(e,t){if(!t)return["stopped","stopping"].includes(e.status)?(F(!1),void X((function(e){return Object(o.a)(Object(o.a)({},e),{},{exists:!0})}))):["error","corrupted"].includes(e.status)?(F(!1),void X((function(e){return Object(o.a)(Object(o.a)({},e),{},{exists:!0,error:"launchBlocklet.error.installedButError",errorAction:"view"})}))):void("running"!==e.status?"installed"===e.status&&ge(e):ge(e));!function(e,t){F(!1),X((function(e){return Object(o.a)(Object(o.a)({},e),{},{upgradeAvailable:t})}))}(0,t)},Ie=function(){var e=Object(u.a)(s.a.mark((function e(t,n){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=4;break}return F(!1),X(Object(o.a)(Object(o.a)({},J),{},{error:"launchBlocklet.error.launchFailed"})),e.abrupt("return");case 4:X(Object(o.a)(Object(o.a)({},J),{},{blocklet:t})),je(t,n);case 6:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),Se=function(){var e=Object(u.a)(s.a.mark((function e(t,n){var a;return s.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:b},F(!0),X(Object(o.a)(Object(o.a)({},J),{},{status:"common.upgrading"})),e.next=6,x.upgradeBlocklet({input:a});case 6:e.next=12;break;case 8:e.prev=8,e.t0=e.catch(0),we.a.error(e.t0.message),X(Object(o.a)(Object(o.a)({},J),{},{error:"launchBlocklet.error.upgradeFailed"}));case 12:case"end":return e.stop()}}),e,null,[[0,8]])})));return function(t,n){return e.apply(this,arguments)}}(),Ae=oe()(Object(u.a)(s.a.mark((function e(){var n,a,r;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x.getBlocklet({input:{did:t.meta.did}});case 2:if(n=e.sent,a=n.blocklet){e.next=9;break}return clearInterval(de),F(!1),xe("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(de),xe("launchBlocklet.error.startFailed","view")),ve.BlockletStatus.installed===r&&(clearInterval(de),Ee(a)),[ve.BlockletStatus.stopped,ve.BlockletStatus.running].includes(r)&&Ie(a);case 13:case"end":return e.stop()}}),e)}))),2e3),Ue=function(){return setInterval(Ae,2e3)},Le=function(){var e=Object(u.a)(s.a.mark((function e(t,n){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return localStorage.setItem("__sst",n(t.sessionToken)),e.next=3,R.refresh();case 3:F(!0),A(!1),de=Ue();case 6:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}();if(t.isInstalled)return m.a.createElement(G.a,{variant:"info",title:N("common.reminder"),subTitle:N("launchBlocklet.alreadyExists",{name:Object(H.getDisplayName)(t,!0)}),footer:m.a.createElement(at,null,!ne&&m.a.createElement(V.a,{size:[16,10]}),ne&&m.a.createElement(Ce,{className:"last-button",href:ne,"data-cy":"open-blocklet"},N("common.open")))});if(W.error)return m.a.createElement(k.a,{variant:"icon",type:"error"},W.error.message);if(W.loading)return m.a.createElement("div",{style:{marginTop:"100px",textAlign:"center",width:"100%"}},m.a.createElement(V.a,null));var Fe="/";window.env&&window.env.apiPrefix&&(Fe=window.env.apiPrefix);var _e={view:m.a.createElement(Ce,{className:"bottom-button",component:te.Link,to:"/blocklets/".concat(t.meta.did,"/overview"),fullWidth:l,"data-cy":"view-blocklet",color:"primary",variant:"contained"},N("launchBlocklet.viewApplication")),retry:m.a.createElement(ue.a,{display:"flex",flexDirection:"column"},m.a.createElement(Ce,{className:"bottom-button","data-cy":"retry-install",disabled:S,fullWidth:l,onClick:pe},S&&m.a.createElement(V.a,{size:[16,10]}),N("common.retry")),ce&&m.a.createElement(Ce,{style:{marginTop:24},variant:"text",className:"bottom-button","data-cy":"go-back",disabled:S,fullWidth:l,onClick:function(){window.location.href=ce}},N("common.back")))};if(!C&&J.upgradeAvailable)return m.a.createElement(et,null,m.a.createElement(ze,{onCancel:function(){return e=J.blocklet,void ge(e);var e},onUpgrade:function(){return Se(J.blocklet,J.upgradeAvailable)}}));if(!C&&J.exists)return m.a.createElement(et,null,m.a.createElement(G.a,{variant:"info",title:ie,subTitle:N("launchBlocklet.error.installedButStopped"),footer:_e.view}));if(J.error)return m.a.createElement(et,null,m.a.createElement(G.a,{variant:"error",title:ie,subTitle:N(J.error,{appName:ie,serverName:w.name}),footer:_e[J.errorAction]}));var Pe={message:m.a.createElement(tt,null,m.a.createElement("span",{className:"msg-before"},"1/5"),N("launchBlocklet.waiting.verifying"))};switch(h){case"downloading":Pe={message:m.a.createElement(tt,null,m.a.createElement("span",{className:"msg-before"},"2/5"),N("launchBlocklet.waiting.downloading"))};break;case"installing":Pe={message:m.a.createElement(tt,null,m.a.createElement("span",{className:"msg-before"},"3/5"),N("launchBlocklet.waiting.extracting"))};break;case"installed":Pe={message:m.a.createElement(tt,null,m.a.createElement("span",{className:"msg-before"},"4/5"),N("launchBlocklet.waiting.installing"))}}return m.a.createElement(et,null,!J.upgradeAvailable&&m.a.createElement("div",{className:"header"},m.a.createElement(Oe.a,{className:"launch-page-header ".concat(ne?"header-hide":""),title:N(C?"launchBlocklet.start":"common.launch"),subTitle:C?"":N("launchBlocklet.subTitle",{appName:ie,serverName:w.name})})),m.a.createElement("div",{className:"body"},!C&&m.a.createElement("div",{className:"illustrations"},m.a.createElement("div",{className:"ills-block ills-block-left"},m.a.createElement("div",{className:"ills-block-inner"},m.a.createElement(Me,{className:"i-icon",blocklet:t,blockletMetaUrl:f}),m.a.createElement("div",{className:"i-name"},ie))),m.a.createElement(me.a,{className:"arrow-icon"}),m.a.createElement("div",{className:"ills-block ills-block-right"},m.a.createElement("div",{className:"ills-block-inner"},m.a.createElement("img",{width:"64",height:"64",src:Ke.a,alt:""}),m.a.createElement("div",{className:"i-name"},w.name),m.a.createElement(he.a,{size:12,prepend:m.a.createElement(ke.a,{did:w.did,size:12,style:{marginRight:4}})},w.did)))),!C&&!J.exists&&m.a.createElement(Ce,{className:"bottom-button","data-cy":"start-launch",disabled:S,onClick:pe},S&&m.a.createElement(V.a,{size:[16,10]}),N("common.next")),C&&!ne&&m.a.createElement(Qe,null,m.a.createElement(ye.a,Object.assign({},Pe,{increaseSpeed:.3,messageLoop:!1}))),C&&!!ne&&m.a.createElement(G.a,{variant:ne?"success":"loading",title:ne?ie:"",subTitle:ne?N("launchBlocklet.installSuccess",{serverName:w.name}):N(J.status,{appName:ie,serverName:w.name}),footer:ne?m.a.createElement(Ze,{href:ne,rel:"noreferrer","data-cy":"open-blocklet"},m.a.createElement(V.a,{size:[16,10],style:{marginRight:14}})," ",N("common.redirecting")):"",style:{marginBottom:34}})),m.a.createElement(fe.a,{open:S,popup:!0,className:"connect",action:"launch-".concat(t.isFree?"free":"paid","-blocklet-by-").concat(Object(Ne.getServerAuthMethod)(w)),checkFn:ae.a.create({baseURL:Fe}).get,checkTimeout:6e5,socketUrl:x.socketUrl,webWalletUrl:Object(Re.s)(w),onSuccess:Le,onClose:function(){return A(!1)},locale:B,messages:{title:"".concat(N("launchBlocklet.dialog.title")),scan:t.isFree?N("launchBlocklet.dialog.freeDescription"):N("launchBlocklet.dialog.nonFreeDescription"),confirm:N("launchBlocklet.dialog.confirm"),success:N("launchBlocklet.dialog.success")},extraParams:{blockletMetaUrl:f}}))},at=E.default.div(Ve||(Ve=Object(c.a)(["\n .MuiButton-root {\n "," {\n min-width: 200px;\n }\n }\n .last-button {\n margin-left: ","px;\n }\n"])),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.spacing(2)})),rt=n(2046),lt=n.n(rt),ct=n(2047),ot=n.n(ct);function it(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 st(e){var t=e.blocklet,n=Object(p.k)(),a=Object(d.useState)(null),r=Object(ee.a)(a,2),l=r[0],c=r[1],o=Object(d.useState)(null),i=Object(ee.a)(o,2),f=i[0],b=i[1],h=Object(d.useState)(!1),g=Object(ee.a)(h,2),v=g[0],E=g[1],x=Object(O.useLocaleContext)(),w=x.t,j=x.locale,y=Object(_.c)(),N=y.info,B=y.api,R=t.isRunning,T=Object(d.useMemo)((function(){return z()(t)||v}),[t,v]);if(Object(d.useEffect)((function(){R&&function(){var e=Object(u.a)(s.a.mark((function e(){var n,a,r,l,o;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,E(!0),e.next=4,B.getBlocklet({input:{did:t.meta.did}});case 4:return n=e.sent,a=n.blocklet,r=a.interfaces.map((function(e){return e.url})),e.next=9,Object(Re.k)(r);case 9:if((l=e.sent)||!z()(l)){e.next=13;break}return c(null),e.abrupt("return");case 13:o=new URL(l),c(o.href),e.next=20;break;case 17:e.prev=17,e.t0=e.catch(0),b(e.t0.message);case 20:return e.prev=20,E(!1),e.finish(20);case 23:case"end":return e.stop()}}),e,null,[[0,17,20,23]])})));return function(){return e.apply(this,arguments)}}()()}),[t]),f)return m.a.createElement($.a,{relative:"parent"},m.a.createElement("div",null,m.a.createElement(k.a,{style:{wordBreak:"break-all"},variant:"icon",type:"error"},f)));if(T)return m.a.createElement($.a,{relative:"parent"},m.a.createElement(V.a,null));var I=t.meta,S={data:I};if(!I)return m.a.createElement($.a,{relative:"parent"},m.a.createElement(V.a,null));if(t.isInstalled){var A=l?"alreadyRunning":"alreadyInstalled";return m.a.createElement(G.a,{variant:"info",title:w("common.reminder"),subTitle:w("launchBlocklet.".concat(A),{name:Object(H.getDisplayName)(t,!0)}),footer:m.a.createElement(pt,null,m.a.createElement(Ce,{"data-cy":"view-blocklet",component:te.Link,to:"/blocklets/".concat(t.meta.did,"/overview"),variant:l?"outlined":"contained",color:"primary"},w("launchBlocklet.viewApplication")),l&&m.a.createElement(Ce,{className:"last-button",href:l,"data-cy":"open-blocklet"},w("common.open")))})}return N?m.a.createElement(mt,null,m.a.createElement(Oe.a,{title:w("launchBlocklet.introduction"),subTitle:w("launchBlocklet.welcome")}),m.a.createElement("div",{className:"app-content"},m.a.createElement("div",{className:"agreement"},m.a.createElement("div",{className:"agreement-content"},m.a.createElement(ot.a,{blockletMeta:S,locale:j})))),m.a.createElement("div",{className:"button-container","data-cy":"agree-all"},m.a.createElement(lt.a,{onContinue:function(){n.push("/launch-blocklet/install".concat(window.location.search))},description:m.a.createElement(it,null),texts:{listenName:w("launchBlocklet.license"),buttonNext:w("launchBlocklet.next")}}))):m.a.createElement($.a,{relative:"parent"},m.a.createElement(V.a,null))}var ut,dt,mt=E.default.div($e||($e=Object(c.a)(["\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n\n .app-content {\n padding: 34px 24px 24px;\n "," {\n padding-top: 10px;\n }\n width: 100%;\n flex: 1;\n }\n .agreement {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n border: 1px solid ",";\n border-radius: 12px;\n\n "," {\n margin-top: 24px;\n }\n\n "," {\n margin-top: 16px;\n }\n\n .agreement-content {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n font-size: 14px;\n overflow-y: auto;\n\n "," {\n padding: 0 24px;\n }\n\n "," {\n padding: 0 16px;\n }\n\n &:after {\n display: block;\n content: '';\n height: 24px;\n }\n }\n }\n .button-container {\n padding-top: 24px;\n padding-bottom: 34px;\n "," {\n padding-right: 24px;\n margin-left: auto;\n }\n "," {\n padding-top: 0;\n padding-bottom: 16px;\n }\n }\n"])),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.palette.grey[100]}),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.down("md")})),pt=E.default.div(Xe||(Xe=Object(c.a)(["\n .MuiButton-root {\n "," {\n min-width: 200px;\n }\n }\n .last-button {\n margin-left: ","px;\n }\n"])),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.spacing(2)}));function ft(){var e=Object(v.a)((function(e){return e.breakpoints.down("md")})),t=Object(p.n)().path,n=Object(O.useLocaleContext)(),a=n.t,r=n.locale,l=Object(P.a)(),c=Object(_.c)(),i=c.api,d=c.info,b=!!l.get("from_launcher"),g=Object(Re.s)(d),E=(l.get("blocklet_meta_url")||"").trim();E=decodeURIComponent(E);var x=Object(f.a)(Object(u.a)(s.a.mark((function e(){var t,n,r,l,c;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(E){e.next=2;break}throw new Error(a("common.invalidParam"));case 2:return e.next=4,i.getBlockletMetaFromUrl({input:{url:E,checkPrice:!0}});case 4:if(t=e.sent,n=t.meta,r=t.isFree,l=t.isInstalled,c=t.isRunning,n){e.next=11;break}throw new Error(a("launchBlocklet.error.loadMetaFailed"));case 11:return e.abrupt("return",{meta:n,isFree:r,isInstalled:l,isRunning:c});case 12:case"end":return e.stop()}}),e)}))));if(x.error)return m.a.createElement(D,null,m.a.createElement("div",null,m.a.createElement(k.a,{style:{width:"100%",wordBreak:"break-all"},variant:"icon",type:"error"},x.error.message)));var y=x.value||{},B=y.meta,T=y.isFree,S=h()(Object(Re.r)(),t),U=[{key:"agreement",name:a("launchBlocklet.introduction"),path:h()(S,"agreement")},{key:"install",name:a("launchBlocklet.launch"),path:h()(S,"install")},{key:"setup",name:a("launchBlocklet.setup"),path:h()(S,"complete")}],C=m.a.createElement(ht,null,m.a.createElement(F.a,{logo:e?m.a.createElement(I.a,{width:"32",height:"32"}):m.a.createElement(A.a,{width:"128",height:"48"})}));return b&&(U.splice(0,1),C=m.a.createElement(ht,null,m.a.createElement(F.a,{logo:e?m.a.createElement(I.a,{width:"32",height:"32"}):m.a.createElement(A.a,{width:"128",height:"48"}),previousData:{logo:e?m.a.createElement(R.a,{width:"32",height:"32"}):m.a.createElement(L.a,{width:"145",height:"48"})}}))),B&&(B.registryUrl=new URL(E).origin),m.a.createElement(j.StepProvider,{steps:U},m.a.createElement(w.a,{locale:r,blockletMeta:Object(o.a)(Object(o.a)({},B),{},{isFree:T}),navLogo:C,headerEndAddons:m.a.createElement(N.a,{webWalletUrl:g,SessionContext:Be.a}),pcWidth:"80%",logoUrl:B&&B.logo?Object(Re.l)({did:B.did,baseUrl:B.registryUrl,logoPath:B.logo}):null},m.a.createElement(bt,null,m.a.createElement(p.g,null,m.a.createElement(p.c,{exact:!0,path:t,to:"".concat(t,"/agreement").concat(window.location.search)}),m.a.createElement(p.d,{exact:!0,path:"".concat(t,"/agreement")},m.a.createElement(st,{blocklet:x.value||{},loading:x.loading})),m.a.createElement(p.d,{exact:!0,path:"".concat(t,"/install")},m.a.createElement(nt,{blocklet:x.value||{}})),m.a.createElement(p.d,{exact:!0,path:"".concat(t,"/complete")},m.a.createElement(Q,{blocklet:x.value||{}}))))))}var bt=E.default.div(ut||(ut=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"]))),ht=E.default.div(dt||(dt=Object(c.a)(["\n margin-top: -1px;\n"])))}}]);
|
|
2
|
+
//# sourceMappingURL=20.6e0ae300.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["components/blocklet/util.js","../../../blocklet/meta/lib/did.js","assets/logo.svg","../../ux/lib/launch-blocklet/content-layout.js","components/launch-blocklet/center.js","components/launch-blocklet/step-complete.js","components/launch-blocklet/button.js","components/launch-blocklet/app-logo.js","components/launch-blocklet/status/upgrade-available.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":["getLogo","did","base64","bufStr","window","atob","bytes","Uint8Array","length","i","charCodeAt","buffer","base64ToArrayBuffer","toDataURL","size","replace","getNameByTitle","title","toLowerCase","genExportedMeta","name","blocklet","meta","pickBy","cloneDeep","x","toBlockletDid","logo","interfaces","forEach","services","children","child","dynamic","bundleSource","push","source","mountPoint","environments","configs","map","key","description","required","secure","default","value","capabilities","component","license","holder","Gitignore","GithubAction","downloadExportedSource","a","folderName","split","pop","readme","zip","JSZip","folder","file","yaml","dump","Promise","resolve","reject","generateAsync","type","then","content","saveAs","catch","err","getLaunchURL","info","encodeURI","adminPath","routing","serverUrl","encodeURIComponent","joinURL","location","origin","metaUrl","blockletRegistry","getLaunchAgreementUrl","url","URL","searchParams","set","href","types","require","toHex","fromPublicKey","module","exports","pk","Buffer","from","trim","role","RoleType","ROLE_ANY","Object","defineProperty","ContentLayout","_react","_interopRequireDefault","_styledComponents","_propTypes","_excluded","obj","__esModule","_objectWithoutProperties","excluded","target","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","prototype","propertyIsEnumerable","call","_ref","props","createElement","Container","propTypes","any","isRequired","div","withConfig","displayName","componentId","theme","breakpoints","up","down","Center","styled","Link","palette","primary","main","variant","error","success","Complete","t","useLocaleContext","useNodeContext","query","useQuery","accessUrl","decodeURIComponent","get","isEmpty","relative","className","getDisplayName","subTitle","serverName","footer","rel","data-cy","WrappedButton","color","React","forwardRef","ref","forwardedRef","AppLogo","blockletMetaUrl","logoPath","src","getBlockletLogoUrl","baseUrl","width","placeholder","Upgrade","onCancel","onUpgrade","onClick","style","marginLeft","PropTypes","object","string","defaultProps","LinkEle","WaiterContainer","MessageDiv","Install","history","useHistory","useTheme","isBreakpointsDownSm","useMediaQuery","useLocalStorage","skipSetup","blockletRegistryUrl","waiterState","blockletData","useState","setWaiterState","useRef","current","createTargetHandler","handler","b","useSubscription","BlockletEvents","added","installed","statusChange","e","status","BlockletStatus","downloading","installing","installFailed","downloadFailed","useWaiterState","api","loading","locale","session","useSessionContext","openAuth","setOpenAuth","launching","setLaunching","blockletState","setBlockletState","exists","isInstalled","upgradeAvailable","errorAction","launchState","setLaunchState","nextAccessUrl","setNextAccessUrl","fromUrl","useEffect","getBlocklet","input","pre","semver","gt","version","appDidEnv","find","handleLaunchState","appDid","currentVersion","console","onMount","intervalId","handleLaunchStart","user","permissions","includes","isFree","installBlocklet","Toast","message","poll","visitOverview","clearInterval","setTimeout","nextUrl","fromLauncher","redirectToBlockletOverview","visitBlocklet","urls","getAccessibleUrl","handleInstalled","result","handleError","handleBlockletExisted","handleUpgradeAvailable","handleUpgrade","registryUrl","upgradeBlocklet","checkBlockletStatus","throttle","statusCode","corrupted","stopped","running","setInterval","handleConnectSuccess","decrypt","localStorage","setItem","sessionToken","refresh","ButtonWrap","marginTop","textAlign","baseURL","env","apiPrefix","errorActions","view","to","fullWidth","retry","Box","display","flexDirection","disabled","appName","waiterData","height","serverLogo","alt","prepend","marginRight","increaseSpeed","messageLoop","marginBottom","open","popup","action","getServerAuthMethod","checkFn","axios","create","checkTimeout","socketUrl","webWalletUrl","getWebWalletUrl","onSuccess","onClose","messages","scan","confirm","extraParams","spacing","AgreementApp","Agreement","setAccessUrl","setError","accessUrlLoading","setAccessUrlLoading","isRunning","useMemo","accessUrlTmp","wordBreak","data","blockletMeta","already","onContinue","search","texts","listenName","buttonNext","grey","BlockletLauncher","isMobile","path","useRouteMatch","state","useAsync","Error","getBlockletMetaFromUrl","checkPrice","basePath","joinUrl","getPathPrefix","steps","navLogo","LogoContainer","splice","previousData","headerEndAddons","SessionContext","pcWidth","logoUrl","Content","exact"],"mappings":"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","file":"static/js/20.6e0ae300.chunk.js","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport pickBy from 'lodash/pickBy';\nimport JSZip from 'jszip';\nimport yaml from 'js-yaml';\nimport saveAs from 'file-saver';\nimport joinURL from 'url-join';\n\nimport toBlockletDid from '@blocklet/meta/lib/did';\n\nimport { toDataURL } from '@arcblock/did-motif';\n\nconst base64ToArrayBuffer = base64 => {\n const bufStr = window.atob(base64);\n const bytes = new Uint8Array(bufStr.length);\n for (let i = 0; i < bufStr.length; i++) {\n bytes[i] = bufStr.charCodeAt(i);\n }\n return bytes.buffer;\n};\n\nconst getLogo = did => {\n const url = toDataURL(did, { size: 200 });\n const base64 = url.replace(/^[^,]*,/, '');\n return base64ToArrayBuffer(base64);\n};\n\nexport function getNameByTitle(title) {\n return title\n .replace(/[\\s/@_]/g, '-')\n .replace(/[^a-zA-Z0-9_-]/g, '')\n .replace(/(^[-\\s]+)|([-\\s]+$)/g, '')\n .toLowerCase();\n}\n\nexport function genExportedMeta(name, blocklet) {\n const meta = pickBy(cloneDeep(blocklet.meta), x => x !== null);\n\n meta.name = name;\n meta.did = toBlockletDid(name);\n meta.logo = 'logo.png';\n\n meta.interfaces.forEach(x => {\n // filter null or undefined\n if (!x.services) {\n delete x.services;\n }\n });\n\n blocklet.children.forEach(child => {\n if (child.dynamic && child.bundleSource) {\n meta.children.push({\n name: child.meta.name,\n source: child.bundleSource,\n title: child.meta.title,\n mountPoint: child.mountPoint,\n });\n }\n });\n\n meta.environments = (blocklet.configs || []).map(x => ({\n name: x.key,\n description: 'Automatically generated when exporting',\n required: !!x.required,\n secure: !!x.secure,\n default: x.secure ? '' : x.value || '',\n }));\n\n meta.capabilities.component = false;\n\n return meta;\n}\n\nconst license = holder => `Copyright © 2022 ${holder || ''}\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.`;\n\nconst Gitignore = `.DS_Store\n.blocklet`;\n\nconst GithubAction = `name: Deploy\n\non:\n push:\n branches:\n - main\n\njobs:\n Deploy:\n runs-on: ubuntu-latest\n\n steps:\n - name: Checkout repo\n uses: actions/checkout@v2\n\n - name: Blocklet workflow\n uses: blocklet/action-workflow@v1\n with:\n skip-upload: true\n skip-deploy: true\n bundle-command: blocklet bundle --create-release\n github-token: \\${{ secrets.GITHUB_TOKEN }}`;\n\nexport async function downloadExportedSource(meta, { holder } = {}) {\n const folderName = `${meta.name.split('/').pop()}`;\n const readme = `# ${meta.title}\\n\\n## Introduction\\n\\n${meta.description}`;\n\n const zip = new JSZip();\n const folder = zip.folder(folderName);\n folder.file('blocklet.yml', yaml.dump(meta));\n folder.file('blocklet.md', readme);\n folder.file('README.md', readme);\n folder.file('logo.png', getLogo(meta.did));\n folder.file('LICENSE', license(holder));\n folder.file('.gitignore', Gitignore);\n folder.folder('screenshots').file('.gitkeep', '');\n folder.folder('.github').folder('workflows').file('main.yml', GithubAction);\n await new Promise((resolve, reject) => {\n zip\n .generateAsync({ type: 'blob' })\n .then(content => {\n saveAs(content, `${folderName}.zip`);\n resolve();\n })\n .catch(err => {\n reject(err);\n });\n });\n}\nexport const getLaunchURL = (meta, info, encodeURI = false) => {\n const adminPath = process.env.NODE_ENV === 'production' ? info.routing.adminPath : '';\n const serverUrl = encodeURI\n ? encodeURIComponent(joinURL(window.location.origin, adminPath))\n : joinURL(window.location.origin, adminPath);\n const metaUrl = joinURL(info?.blockletRegistry, `/api/blocklets/${meta.did}/blocklet.json`);\n return { serverUrl, metaUrl };\n};\nexport const getLaunchAgreementUrl = (meta, info) => {\n const { metaUrl, serverUrl } = getLaunchURL(meta, info);\n\n const url = new URL(joinURL(serverUrl, '/launch-blocklet/agreement'));\n url.searchParams.set('blocklet_meta_url', metaUrl);\n url.searchParams.set('from', window.location.href);\n return url.href;\n};\n","const { types } = require('@ocap/mcrypto');\nconst { toHex } = require('@ocap/util');\nconst { fromPublicKey } = require('@arcblock/did');\n\nconst toBlockletDid = (name) => {\n const pk = toHex(Buffer.from(typeof name === 'string' ? name.trim() : name));\n return fromPublicKey(pk, { role: types.RoleType.ROLE_ANY });\n};\n\nmodule.exports = toBlockletDid;\n","module.exports = __webpack_public_path__ + \"static/media/logo.3f75f557.svg\";","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ContentLayout;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _styledComponents = _interopRequireDefault(require(\"styled-components\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nconst _excluded = [\"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ContentLayout(_ref) {\n let {\n children\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/_react.default.createElement(Container, props, children);\n}\n\nContentLayout.propTypes = {\n children: _propTypes.default.any.isRequired\n};\n\nconst Container = _styledComponents.default.div.withConfig({\n displayName: \"content-layout__Container\",\n componentId: \"sc-panu44-0\"\n})([\"display:flex;flex-direction:column;align-items:center;width:100%;height:100%;.header{text-align:center;}.body{display:flex;flex-direction:column;align-items:center;margin-top:30px;width:100%;min-height:200px;flex:1;\", \"{padding:24px;}\", \"{padding:0 16px 16px;}}.footer{display:flex;justify-content:center;\", \"{padding-bottom:34px;}\", \"{margin-top:auto;padding-bottom:10px;}}\"], props => props.theme.breakpoints.up('md'), props => props.theme.breakpoints.down('md'), props => props.theme.breakpoints.up('sm'), props => props.theme.breakpoints.down('md'));","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';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\nimport ResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport ContentLayout from '@abtnode/ux/lib/launch-blocklet/content-layout';\nimport Center from '@arcblock/ux/lib/Center';\n\nimport { useNodeContext } from '../../contexts/node';\nimport useQuery from '../../hooks/query';\n\nfunction Complete({ blocklet }) {\n const { t } = useLocaleContext();\n const { info } = useNodeContext();\n const query = useQuery();\n const accessUrl = decodeURIComponent(query.get('accessUrl') || '');\n\n if (isEmpty(blocklet)) {\n return (\n <Center relative=\"parent\">\n <Spinner />\n </Center>\n );\n }\n return (\n <Container>\n <div className=\"body\">\n <ResultMessage\n variant=\"success\"\n title={getDisplayName(blocklet, true)}\n subTitle={t('launchBlocklet.installSuccess', { serverName: info.name })}\n footer={\n <Link href={accessUrl} rel=\"noreferrer\" data-cy=\"open-blocklet\">\n {t('common.open')}\n </Link>\n }\n />\n </div>\n </Container>\n );\n}\n\nconst Link = styled.a`\n display: block;\n height: 36px;\n color: ${props => props.theme.palette.primary.main};\n`;\n\nconst Container = styled(ContentLayout)`\n .app-info_desc {\n font-weight: 400;\n margin-top: 40px;\n font-size: 18px;\n line-height: 21px;\n color: #222222;\n }\n\n .body {\n text-align: center;\n }\n\n ${props => {\n return props.theme.breakpoints.down('md');\n }} {\n .app-info_desc {\n font-size: 16px;\n }\n }\n\n .circle_icon {\n font-size: 58px;\n color: ${props => (props.variant === 'error' ? props.theme.palette.error.main : props.theme.palette.success.main)};\n }\n`;\n\nComplete.propTypes = {\n blocklet: PropTypes.object.isRequired,\n};\n\nexport default Complete;\n","import React from 'react';\nimport Button from '@arcblock/ux/lib/Button';\nimport PropTypes from 'prop-types';\n\nfunction WrappedButton({ children, ...props }) {\n return (\n <Button variant=\"contained\" color=\"primary\" {...props}>\n {children}\n </Button>\n );\n}\n\nWrappedButton.propTypes = {\n children: PropTypes.any.isRequired,\n};\n\nexport default React.forwardRef((props, ref) => <WrappedButton {...props} forwardedRef={ref} />);\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 { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport ResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\nimport Button from '../button';\n\nexport default function Upgrade({ onCancel, onUpgrade }) {\n const { t } = useLocaleContext();\n\n return (\n <ResultMessage\n variant=\"info\"\n title={t('launchBlocklet.newVersion')}\n subTitle={t('launchBlocklet.newVersionDesc')}\n footer={\n <>\n <Button onClick={onCancel} variant=\"outlined\">\n {t('launchBlocklet.later')}\n </Button>\n <Button onClick={onUpgrade} style={{ marginLeft: 24 }}>\n {t('launchBlocklet.upgradeNow')}\n </Button>\n </>\n }\n />\n );\n}\n\nUpgrade.propTypes = {\n onCancel: PropTypes.func,\n onUpgrade: PropTypes.func,\n};\n\nUpgrade.defaultProps = {\n onCancel: () => {},\n onUpgrade: () => {},\n};\n","import React, { useEffect, useState, useRef } 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 useLocalStorage from 'react-use/lib/useLocalStorage';\nimport { useMediaQuery } from '@mui/material';\nimport Box from '@mui/material/Box';\nimport ArrowForward from '@mui/icons-material/ArrowForward';\nimport Alert from '@arcblock/ux/lib/Alert';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Center from '@arcblock/ux/lib/Center';\nimport Connect from '@arcblock/did-connect/lib/Connect';\nimport DidAddress from '@arcblock/did-connect/lib/Address';\nimport Avatar from '@arcblock/did-connect/lib/Avatar';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\nimport { BlockletStatus, BlockletEvents } from '@blocklet/meta/lib/constants';\nimport ResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport ContentLayout from '@abtnode/ux/lib/launch-blocklet/content-layout';\nimport Toast from '@abtnode/ux/lib/toast';\nimport AnimationWaiter from '@arcblock/ux/lib/AnimationWaiter';\nimport { getServerAuthMethod } from '@abtnode/auth/lib/util/get-auth-method';\nimport { useNodeContext } from '../../contexts/node';\nimport { useSessionContext } from '../../contexts/session';\nimport { getWebWalletUrl, getAccessibleUrl } from '../../libs/util';\nimport { getLaunchURL } from '../blocklet/util';\nimport useQuery from '../../hooks/query';\nimport Button from './button';\nimport AppLogo from './app-logo';\nimport StatusUpgrade from './status/upgrade-available';\nimport serverLogo from '../../assets/logo.svg';\nimport { useSubscription } from '../../libs/ws';\n\n// TODO: 当前state应该可以替换掉下面的 blockletState 和 launchState\nconst useWaiterState = blockletData => {\n const [waiterState, setWaiterState] = useState('');\n const blocklet = useRef(null);\n blocklet.current = blockletData;\n\n const createTargetHandler = handler => {\n return b => {\n if (b.meta.did === blocklet.current.meta.did) {\n handler(b);\n }\n };\n };\n\n useSubscription(\n BlockletEvents.added,\n createTargetHandler(() => setWaiterState('added'))\n );\n useSubscription(\n BlockletEvents.installed,\n createTargetHandler(() => setWaiterState('installed'))\n );\n\n useSubscription(\n BlockletEvents.statusChange,\n createTargetHandler(e => {\n switch (e.status) {\n case BlockletStatus.downloading:\n setWaiterState('downloading');\n break;\n case BlockletStatus.installing:\n setWaiterState('installing');\n break;\n default:\n }\n })\n );\n\n useSubscription(\n BlockletEvents.installFailed,\n createTargetHandler(() => {\n setWaiterState('installFailed');\n })\n );\n useSubscription(\n BlockletEvents.downloadFailed,\n createTargetHandler(() => {\n setWaiterState('downloadFailed');\n })\n );\n\n return waiterState;\n};\n\nfunction Install({ blocklet }) {\n const query = useQuery();\n const history = useHistory();\n const theme = useTheme();\n const isBreakpointsDownSm = useMediaQuery(theme.breakpoints.down('md'));\n const [skipSetup] = useLocalStorage('skip-blocklet-setup', false);\n const blockletMetaUrl = query.get('blocklet_meta_url');\n const blockletRegistryUrl = new URL(blockletMetaUrl).origin;\n const waiterState = useWaiterState(blocklet);\n\n const { api, info, loading } = 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 const [nextAccessUrl, setNextAccessUrl] = useState('');\n // 当前安装过程中的状态\n const fromUrl = new URL(window.location.href).searchParams.get('from');\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 (waiterState === 'installFailed' || waiterState === 'downloadFailed') {\n setLaunching(false);\n setLaunchState({ ...launchState, error: `launchBlocklet.error.${waiterState}` });\n }\n\n if (isEmpty(blocklet) || loading) {\n return (\n <Center relative=\"parent\">\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 let nextUrl = `/launch-blocklet/complete?status=installed&name=${encodeURIComponent(\n name\n )}&accessUrl=${encodeURIComponent(accessUrl)}&blocklet_meta_url=${blockletMetaUrl}`;\n\n const fromLauncher = query.get('from_launcher');\n if (fromLauncher) {\n nextUrl += `&from_launcher=${fromLauncher}`;\n }\n history.push(nextUrl);\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 },\n })\n .catch(err => {\n Toast.error(err.message);\n console.error('install blocklet failed', err);\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) || skipSetup) {\n visitOverview(b);\n return;\n }\n\n setLaunchState({ ...launchState, status: 'launchBlocklet.redirecting' });\n clearInterval(intervalId);\n\n const url = new URL(accessUrl);\n // install blocklet 并跳转到 blocklet setup 界面时携带 serverUrl 查询参数\n url.searchParams.set('serverUrl', getLaunchURL(blocklet, info)?.serverUrl);\n\n if (b.status !== 'running') {\n url.searchParams.set('__start__', '1');\n }\n\n setNextAccessUrl(url.href);\n\n setTimeout(() => {\n window.location.href = url.href;\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 Toast.error(error.message);\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 }, 2000);\n\n const poll = () => setInterval(checkBlockletStatus, 2000);\n\n const handleConnectSuccess = async (result, decrypt) => {\n localStorage.setItem('__sst', decrypt(result.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 (blocklet.isInstalled) {\n return (\n <ResultMessage\n variant=\"info\"\n title={t('common.reminder')}\n subTitle={t('launchBlocklet.alreadyExists', { name: getDisplayName(blocklet, true) })}\n footer={\n <ButtonWrap>\n {!nextAccessUrl && <Spinner size={[16, 10]} />}\n {nextAccessUrl && (\n <Button className=\"last-button\" href={nextAccessUrl} data-cy=\"open-blocklet\">\n {t('common.open')}\n </Button>\n )}\n </ButtonWrap>\n }\n />\n );\n }\n\n if (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 data-cy=\"view-blocklet\"\n color=\"primary\"\n variant=\"contained\">\n {t('launchBlocklet.viewApplication')}\n </Button>\n ),\n retry: (\n <Box display=\"flex\" flexDirection=\"column\">\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 {fromUrl && (\n <Button\n style={{ marginTop: 24 }}\n variant=\"text\"\n className=\"bottom-button\"\n data-cy=\"go-back\"\n disabled={openAuth}\n fullWidth={isBreakpointsDownSm}\n onClick={() => {\n window.location.href = fromUrl;\n }}>\n {t('common.back')}\n </Button>\n )}\n </Box>\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 <ResultMessage\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 <ResultMessage\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 let waiterData = {\n message: (\n <MessageDiv>\n <span className=\"msg-before\">1/5</span>\n {t('launchBlocklet.waiting.verifying')}\n </MessageDiv>\n ),\n };\n\n switch (waiterState) {\n case 'downloading':\n waiterData = {\n message: (\n <MessageDiv>\n <span className=\"msg-before\">2/5</span>\n {t('launchBlocklet.waiting.downloading')}\n </MessageDiv>\n ),\n };\n break;\n case 'installing':\n waiterData = {\n message: (\n <MessageDiv>\n <span className=\"msg-before\">3/5</span>\n {t('launchBlocklet.waiting.extracting')}\n </MessageDiv>\n ),\n };\n break;\n case 'installed':\n waiterData = {\n message: (\n <MessageDiv>\n <span className=\"msg-before\">4/5</span>\n {t('launchBlocklet.waiting.installing')}\n </MessageDiv>\n ),\n };\n break;\n default:\n }\n\n return (\n <Container>\n {!launchState.upgradeAvailable && (\n <div className=\"header\">\n <PageHeader\n className={`launch-page-header ${nextAccessUrl ? 'header-hide' : ''}`}\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 <div className=\"ills-block-inner\">\n <AppLogo className=\"i-icon\" blocklet={blocklet} blockletMetaUrl={blockletMetaUrl} />\n <div className=\"i-name\">{name}</div>\n </div>\n </div>\n <ArrowForward className=\"arrow-icon\" />\n <div className=\"ills-block ills-block-right\">\n <div className=\"ills-block-inner\">\n <img width=\"64\" height=\"64\" src={serverLogo} alt=\"\" />\n <div className=\"i-name\">{info.name}</div>\n <DidAddress size={12} prepend={<Avatar did={info.did} size={12} style={{ marginRight: 4 }} />}>\n {info.did}\n </DidAddress>\n </div>\n </div>\n </div>\n )}\n {!launching && !launchState.exists && (\n <Button className=\"bottom-button\" data-cy=\"start-launch\" disabled={openAuth} onClick={handleLaunchStart}>\n {openAuth && <Spinner size={[16, 10]} />}\n {t('common.next')}\n </Button>\n )}\n {launching && !nextAccessUrl && (\n <WaiterContainer>\n <AnimationWaiter {...waiterData} increaseSpeed={0.3} messageLoop={false} />\n </WaiterContainer>\n )}\n {launching && !!nextAccessUrl && (\n <ResultMessage\n variant={nextAccessUrl ? 'success' : 'loading'}\n title={nextAccessUrl ? name : ''}\n subTitle={\n nextAccessUrl\n ? t('launchBlocklet.installSuccess', { serverName: info.name })\n : t(launchState.status, { appName: name, serverName: info.name })\n }\n footer={\n nextAccessUrl ? (\n <LinkEle href={nextAccessUrl} rel=\"noreferrer\" data-cy=\"open-blocklet\">\n <Spinner size={[16, 10]} style={{ marginRight: 14 }} /> {t('common.redirecting')}\n </LinkEle>\n ) : (\n ''\n )\n }\n style={{ marginBottom: 34 }}\n />\n )}\n </div>\n <Connect\n open={openAuth}\n popup\n className=\"connect\"\n action={`launch-${blocklet.isFree ? 'free' : 'paid'}-blocklet-by-${getServerAuthMethod(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 LinkEle = styled.a`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 36px;\n color: ${props => props.theme.palette.primary.main};\n`;\n\nconst WaiterContainer = styled.div`\n color: #1dc1c7;\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 .ills-block-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n flex: 1;\n }\n .ills-block {\n max-width: 220px;\n .i-icon {\n width: 64px;\n height: 64px;\n }\n\n .i-name {\n margin-top: 16px;\n font-weight: 400;\n font-size: 16px;\n color: #222222;\n }\n\n .i-sub-name {\n color: #999999;\n }\n }\n\n .arrow-icon {\n align-self: start;\n color: #c4c5ca;\n font-size: 30px;\n margin: 16px 0 0;\n ${props => props.theme.breakpoints.down('md')} {\n margin: 25px 24px 0;\n }\n }\n\n .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 .launch-page-header {\n transition: all ease 0.3s;\n &.header-hide {\n opacity: 0;\n }\n }\n .result-footer {\n overflow: visible;\n }\n`;\n\nconst MessageDiv = styled.div`\n .msg-before {\n display: inline-block;\n color: #aaa;\n font-size: 14px;\n margin-right: 6px;\n }\n`;\n\nexport default Install;\nconst ButtonWrap = styled.div`\n .MuiButton-root {\n ${props => props.theme.breakpoints.up('md')} {\n min-width: 200px;\n }\n }\n .last-button {\n margin-left: ${props => props.theme.spacing(2)}px;\n }\n`;\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, { useEffect, useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useHistory, Link } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\nimport ResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\nimport ServerEula from '@blocklet/launcher-layout/lib/wizard/server-eula';\nimport WizardDesc from '@blocklet/launcher-layout/lib/wizard/wizard-desc';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Alert from '@arcblock/ux/lib/Alert';\nimport isEmpty from 'lodash/isEmpty';\nimport Center from '@arcblock/ux/lib/Center';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport { useNodeContext } from '../../contexts/node';\nimport AgreementApp from './agreement-app';\nimport { getAccessibleUrl } from '../../libs/util';\nimport Button from './button';\n\n// TODO: 加载 Blocklet 定义的 Agreement\nexport default function Agreement({ blocklet }) {\n const history = useHistory();\n const [accessUrl, setAccessUrl] = useState(null);\n const [error, setError] = useState(null);\n const [accessUrlLoading, setAccessUrlLoading] = useState(false);\n const { t, locale } = useLocaleContext();\n const { info, api } = useNodeContext();\n const { isRunning } = blocklet;\n const loading = useMemo(() => isEmpty(blocklet) || accessUrlLoading, [blocklet, accessUrlLoading]);\n\n const clickNext = () => {\n history.push(`/launch-blocklet/install${window.location.search}`);\n };\n\n useEffect(() => {\n const onMount = async () => {\n try {\n setAccessUrlLoading(true);\n const { blocklet: b } = await api.getBlocklet({ input: { did: blocklet.meta.did } });\n const urls = b.interfaces.map(x => x.url);\n const accessUrlTmp = await getAccessibleUrl(urls);\n if (!accessUrlTmp && isEmpty(accessUrlTmp)) {\n setAccessUrl(null);\n return;\n }\n const url = new URL(accessUrlTmp);\n setAccessUrl(url.href);\n } catch (err) {\n setError(err.message);\n } finally {\n setAccessUrlLoading(false);\n }\n };\n if (isRunning) {\n onMount();\n }\n // eslint-disable-next-line\n }, [blocklet]);\n\n if (error) {\n return (\n <Center relative=\"parent\">\n <div>\n <Alert style={{ wordBreak: 'break-all' }} variant=\"icon\" type=\"error\">\n {error}\n </Alert>\n </div>\n </Center>\n );\n }\n\n if (loading) {\n return (\n <Center relative=\"parent\">\n <Spinner />\n </Center>\n );\n }\n\n const data = blocklet.meta;\n const blockletMeta = { data };\n\n if (!data) {\n return (\n <Center relative=\"parent\">\n <Spinner />\n </Center>\n );\n }\n\n if (blocklet.isInstalled) {\n const already = accessUrl ? 'alreadyRunning' : 'alreadyInstalled';\n return (\n <ResultMessage\n variant=\"info\"\n title={t('common.reminder')}\n subTitle={t(`launchBlocklet.${already}`, { name: getDisplayName(blocklet, true) })}\n footer={\n <ButtonWrap>\n <Button\n data-cy=\"view-blocklet\"\n component={Link}\n to={`/blocklets/${blocklet.meta.did}/overview`}\n variant={accessUrl ? 'outlined' : 'contained'}\n color=\"primary\">\n {t('launchBlocklet.viewApplication')}\n </Button>\n {accessUrl && (\n <Button className=\"last-button\" href={accessUrl} data-cy=\"open-blocklet\">\n {t('common.open')}\n </Button>\n )}\n </ButtonWrap>\n }\n />\n );\n }\n\n if (!info) {\n return (\n <Center relative=\"parent\">\n <Spinner />\n </Center>\n );\n }\n\n return (\n <Container>\n <PageHeader title={t('launchBlocklet.introduction')} subTitle={t('launchBlocklet.welcome')} />\n <div className=\"app-content\">\n <div className=\"agreement\">\n <div className=\"agreement-content\">\n <WizardDesc blockletMeta={blockletMeta} locale={locale} />\n </div>\n </div>\n </div>\n <div className=\"button-container\" data-cy=\"agree-all\">\n <ServerEula\n onContinue={clickNext}\n description={<AgreementApp />}\n texts={{\n listenName: t('launchBlocklet.license'),\n buttonNext: t('launchBlocklet.next'),\n }}\n />\n </div>\n </Container>\n );\n}\n\nAgreement.propTypes = {\n blocklet: PropTypes.object.isRequired,\n};\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n\n .app-content {\n padding: 34px 24px 24px;\n ${props => props.theme.breakpoints.down('md')} {\n padding-top: 10px;\n }\n width: 100%;\n flex: 1;\n }\n .agreement {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n border: 1px solid ${props => props.theme.palette.grey['100']};\n border-radius: 12px;\n\n ${props => props.theme.breakpoints.up('md')} {\n margin-top: 24px;\n }\n\n ${props => props.theme.breakpoints.down('md')} {\n margin-top: 16px;\n }\n\n .agreement-content {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n font-size: 14px;\n overflow-y: auto;\n\n ${props => props.theme.breakpoints.up('md')} {\n padding: 0 24px;\n }\n\n ${props => props.theme.breakpoints.down('md')} {\n padding: 0 16px;\n }\n\n &:after {\n display: block;\n content: '';\n height: 24px;\n }\n }\n }\n .button-container {\n padding-top: 24px;\n padding-bottom: 34px;\n ${props => props.theme.breakpoints.up('md')} {\n padding-right: 24px;\n margin-left: auto;\n }\n ${props => props.theme.breakpoints.down('md')} {\n padding-top: 0;\n padding-bottom: 16px;\n }\n }\n`;\n\nconst ButtonWrap = styled.div`\n .MuiButton-root {\n ${props => props.theme.breakpoints.up('md')} {\n min-width: 200px;\n }\n }\n .last-button {\n margin-left: ${props => props.theme.spacing(2)}px;\n }\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 useMediaQuery from '@mui/material/useMediaQuery';\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 HeaderAddon from '@abtnode/ux/lib/layout/addon';\nimport LauncherLogoNotext from '@arcblock/icons/lib/LauncherLogoNotext';\nimport ServerLogoNotext from '@arcblock/icons/lib/ServerLogoNotext';\nimport ServerLogo from '@arcblock/icons/lib/ServerLogo';\nimport LauncherLogo from '@arcblock/icons/lib/LauncherLogo';\nimport NavLogo from '@abtnode/ux/lib/nav-logo';\nimport { useNodeContext } from '../../contexts/node';\nimport useQuery from '../../hooks/query';\n\nimport Center from '../../components/launch-blocklet/center';\nimport Complete from '../../components/launch-blocklet/step-complete';\nimport Install from '../../components/launch-blocklet/step-install';\nimport Agreement from '../../components/launch-blocklet/step-agreement';\nimport { getBlockletLogoUrl, getPathPrefix, getWebWalletUrl } from '../../libs/util';\nimport { SessionContext } from '../../contexts/session';\n\n// TODO: add skeleton here\nexport default function BlockletLauncher() {\n const isMobile = useMediaQuery(theme => theme.breakpoints.down('md'));\n const { path } = useRouteMatch();\n const { t, locale } = useLocaleContext();\n const query = useQuery();\n const { api, info } = useNodeContext();\n const fromLauncher = !!query.get('from_launcher');\n const webWalletUrl = getWebWalletUrl(info);\n\n let url = (query.get('blocklet_meta_url') || '').trim();\n url = decodeURIComponent(url);\n\n const state = useAsync(async () => {\n if (!url) {\n throw new Error(t('common.invalidParam'));\n }\n\n const { meta, isFree, isInstalled, isRunning } = await api.getBlockletMetaFromUrl({\n input: { url, checkPrice: true },\n });\n if (!meta) {\n throw new Error(t('launchBlocklet.error.loadMetaFailed'));\n }\n\n return { meta, isFree, isInstalled, isRunning };\n });\n\n if (state.error) {\n return (\n <Center>\n <div>\n <Alert style={{ width: '100%', wordBreak: 'break-all' }} variant=\"icon\" type=\"error\">\n {state.error.message}\n </Alert>\n </div>\n </Center>\n );\n }\n\n const { meta, isFree } = state.value || {};\n const basePath = joinUrl(getPathPrefix(), path);\n const steps = [\n {\n key: 'agreement',\n name: t('launchBlocklet.introduction'),\n path: joinUrl(basePath, 'agreement'),\n },\n {\n key: 'install',\n name: t('launchBlocklet.launch'),\n path: joinUrl(basePath, 'install'),\n },\n {\n key: 'setup',\n name: t('launchBlocklet.setup'),\n path: joinUrl(basePath, 'complete'),\n },\n ];\n\n let navLogo = (\n <LogoContainer>\n <NavLogo\n logo={!isMobile ? <ServerLogo width=\"128\" height=\"48\" /> : <ServerLogoNotext width=\"32\" height=\"32\" />}\n />\n </LogoContainer>\n );\n\n // 从launcher 代表已经同意了 blocklet agreement\n if (fromLauncher) {\n steps.splice(0, 1);\n\n navLogo = (\n <LogoContainer>\n <NavLogo\n logo={!isMobile ? <ServerLogo width=\"128\" height=\"48\" /> : <ServerLogoNotext width=\"32\" height=\"32\" />}\n previousData={{\n logo: !isMobile ? <LauncherLogo width=\"145\" height=\"48\" /> : <LauncherLogoNotext width=\"32\" height=\"32\" />,\n }}\n />\n </LogoContainer>\n );\n }\n\n if (meta) {\n meta.registryUrl = new URL(url).origin;\n }\n\n return (\n <StepProvider steps={steps}>\n <Layout\n locale={locale}\n blockletMeta={{ ...meta, isFree }}\n navLogo={navLogo}\n headerEndAddons={<HeaderAddon webWalletUrl={webWalletUrl} SessionContext={SessionContext} />}\n pcWidth=\"80%\"\n logoUrl={\n meta && meta.logo\n ? getBlockletLogoUrl({\n did: meta.did,\n baseUrl: meta.registryUrl,\n logoPath: meta.logo,\n })\n : null\n }>\n <Content>\n <Switch>\n <Redirect exact path={path} to={`${path}/agreement${window.location.search}`} />\n <Route exact path={`${path}/agreement`}>\n <Agreement blocklet={state.value || {}} loading={state.loading} />\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\nconst LogoContainer = styled.div`\n margin-top: -1px;\n`;\n"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e){function t(t){for(var n,o,u=t[0],d=t[1],i=t[2],l=t[3]||[],s=0,h=[];s<u.length;s++)o=u[s],Object.prototype.hasOwnProperty.call(c,o)&&c[o]&&h.push(c[o][0]),c[o]=0;for(n in d)Object.prototype.hasOwnProperty.call(d,n)&&(e[n]=d[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,o=1;o<r.length;o++){var i=r[o];0!==c[i]&&(n=!1)}n&&(a.splice(t--,1),e=d(d.s=r[0]))}return 0===a.length&&(f.forEach((function(e){if(void 0===c[e]){c[e]=null;var t=document.createElement("link");d.nc&&t.setAttribute("nonce",d.nc),t.rel="prefetch",t.as="script",t.href=u(e),document.head.appendChild(t)}})),f.length=0),e}var n={},o={5:0},c={5:0},a=[],f=[];function u(e){return d.p+"static/js/"+({}[e]||e)+"."+{0:"806c0fce",1:"6e89b573",2:"436e9649",3:"f815705f",7:"0ec5d2a8",8:"b234d0d6",9:"c664793b",10:"9f50416f",11:"53b5ae0b",12:"f1bf1115",13:"f4134870",14:"6e625019",15:"1e67e159",16:"f557b837",17:"c0ca9b01",18:"328bc71d",19:"ef77b080",20:"
|
|
2
|
-
//# sourceMappingURL=runtime-main.
|
|
1
|
+
!function(e){function t(t){for(var n,o,u=t[0],d=t[1],i=t[2],l=t[3]||[],s=0,h=[];s<u.length;s++)o=u[s],Object.prototype.hasOwnProperty.call(c,o)&&c[o]&&h.push(c[o][0]),c[o]=0;for(n in d)Object.prototype.hasOwnProperty.call(d,n)&&(e[n]=d[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,o=1;o<r.length;o++){var i=r[o];0!==c[i]&&(n=!1)}n&&(a.splice(t--,1),e=d(d.s=r[0]))}return 0===a.length&&(f.forEach((function(e){if(void 0===c[e]){c[e]=null;var t=document.createElement("link");d.nc&&t.setAttribute("nonce",d.nc),t.rel="prefetch",t.as="script",t.href=u(e),document.head.appendChild(t)}})),f.length=0),e}var n={},o={5:0},c={5:0},a=[],f=[];function u(e){return d.p+"static/js/"+({}[e]||e)+"."+{0:"806c0fce",1:"6e89b573",2:"436e9649",3:"f815705f",7:"0ec5d2a8",8:"b234d0d6",9:"c664793b",10:"9f50416f",11:"53b5ae0b",12:"f1bf1115",13:"f4134870",14:"6e625019",15:"1e67e159",16:"f557b837",17:"c0ca9b01",18:"328bc71d",19:"ef77b080",20:"6e0ae300",21:"c9581516",22:"9d6df20d",23:"334b85e6",24:"14cea2af",25:"47277c1e",26:"e04a6f53",27:"4d9d8a27",28:"fa16a4e7"}[e]+".chunk.js"}function d(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,d),r.l=!0,r.exports}d.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{7:1,8:1,9:1,21:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{0:"31d6cfe0",1:"31d6cfe0",2:"31d6cfe0",3:"31d6cfe0",7:"1cefc4d5",8:"416fbabe",9:"416fbabe",10:"31d6cfe0",11:"31d6cfe0",12:"31d6cfe0",13:"31d6cfe0",14:"31d6cfe0",15:"31d6cfe0",16:"31d6cfe0",17:"31d6cfe0",18:"31d6cfe0",19:"31d6cfe0",20:"31d6cfe0",21:"6391f1d6",22:"31d6cfe0",23:"31d6cfe0",24:"31d6cfe0",25:"31d6cfe0",26:"31d6cfe0",27:"31d6cfe0",28:"31d6cfe0"}[e]+".chunk.css",c=d.p+n,a=document.getElementsByTagName("link"),f=0;f<a.length;f++){var u=(l=a[f]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(u===n||u===c))return t()}var i=document.getElementsByTagName("style");for(f=0;f<i.length;f++){var l;if((u=(l=i[f]).getAttribute("data-href"))===n||u===c)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||c,a=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");a.code="CSS_CHUNK_LOAD_FAILED",a.request=n,delete o[e],s.parentNode.removeChild(s),r(a)},s.href=c,document.getElementsByTagName("head")[0].appendChild(s)})).then((function(){o[e]=0})));var r=c[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=c[e]=[t,n]}));t.push(r[2]=n);var a,f=document.createElement("script");f.charset="utf-8",f.timeout=120,d.nc&&f.setAttribute("nonce",d.nc),f.src=u(e);var i=new Error;a=function(t){f.onerror=f.onload=null,clearTimeout(l);var r=c[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,r[1](i)}c[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)},d.m=e,d.c=n,d.d=function(e,t,r){d.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},d.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.t=function(e,t){if(1&t&&(e=d(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(d.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)d.d(r,n,function(t){return e[t]}.bind(null,n));return r},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,"a",t),t},d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},d.p="./",d.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()}([]);
|
|
2
|
+
//# sourceMappingURL=runtime-main.9c757117.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../webpack/bootstrap"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","prefetchChunks","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","deferredPrefetch","apply","shift","deferredModules","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","forEach","undefined","link","document","createElement","nc","setAttribute","rel","as","href","jsonpScriptSrc","head","appendChild","installedModules","installedCssChunks","5","p","exports","module","l","e","promises","Promise","resolve","reject","fullhref","existingLinkTags","getElementsByTagName","dataHref","tag","getAttribute","existingStyleTags","linkTag","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","error","clearTimeout","chunk","errorType","realSrc","message","name","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","this","oldJsonpFunction","slice"],"mappings":"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","file":"static/js/runtime-main.596d5bc7.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n \t\tvar prefetchChunks = data[3] || [];\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n \t\tdeferredPrefetch.push.apply(deferredPrefetch, prefetchChunks);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\tif(deferredModules.length === 0) {\n \t\t\t// chunk prefetching for javascript\n \t\t\tdeferredPrefetch.forEach(function(chunkId) {\n \t\t\t\tif(installedChunks[chunkId] === undefined) {\n \t\t\t\t\tinstalledChunks[chunkId] = null;\n \t\t\t\t\tvar link = document.createElement('link');\n\n \t\t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\t\tlink.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t\t}\n \t\t\t\t\tlink.rel = \"prefetch\";\n \t\t\t\t\tlink.as = \"script\";\n \t\t\t\t\tlink.href = jsonpScriptSrc(chunkId);\n \t\t\t\t\tdocument.head.appendChild(link);\n \t\t\t\t}\n \t\t\t});\n \t\t\tdeferredPrefetch.length = 0;\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t5: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t5: 0\n \t};\n\n \tvar deferredModules = [], deferredPrefetch = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"0\":\"806c0fce\",\"1\":\"6e89b573\",\"2\":\"436e9649\",\"3\":\"f815705f\",\"7\":\"0ec5d2a8\",\"8\":\"b234d0d6\",\"9\":\"c664793b\",\"10\":\"9f50416f\",\"11\":\"53b5ae0b\",\"12\":\"f1bf1115\",\"13\":\"f4134870\",\"14\":\"6e625019\",\"15\":\"1e67e159\",\"16\":\"f557b837\",\"17\":\"c0ca9b01\",\"18\":\"328bc71d\",\"19\":\"ef77b080\",\"20\":\"ca430cdf\",\"21\":\"c9581516\",\"22\":\"9d6df20d\",\"23\":\"334b85e6\",\"24\":\"14cea2af\",\"25\":\"47277c1e\",\"26\":\"e04a6f53\",\"27\":\"4d9d8a27\",\"28\":\"fa16a4e7\"}[chunkId] + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"7\":1,\"8\":1,\"9\":1,\"21\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"0\":\"31d6cfe0\",\"1\":\"31d6cfe0\",\"2\":\"31d6cfe0\",\"3\":\"31d6cfe0\",\"7\":\"1cefc4d5\",\"8\":\"416fbabe\",\"9\":\"416fbabe\",\"10\":\"31d6cfe0\",\"11\":\"31d6cfe0\",\"12\":\"31d6cfe0\",\"13\":\"31d6cfe0\",\"14\":\"31d6cfe0\",\"15\":\"31d6cfe0\",\"16\":\"31d6cfe0\",\"17\":\"31d6cfe0\",\"18\":\"31d6cfe0\",\"19\":\"31d6cfe0\",\"20\":\"31d6cfe0\",\"21\":\"6391f1d6\",\"22\":\"31d6cfe0\",\"23\":\"31d6cfe0\",\"24\":\"31d6cfe0\",\"25\":\"31d6cfe0\",\"26\":\"31d6cfe0\",\"27\":\"31d6cfe0\",\"28\":\"31d6cfe0\"}[chunkId] + \".chunk.css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = this[\"webpackJsonp@abtnode/webapp\"] = this[\"webpackJsonp@abtnode/webapp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["../webpack/bootstrap"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","prefetchChunks","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","deferredPrefetch","apply","shift","deferredModules","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","forEach","undefined","link","document","createElement","nc","setAttribute","rel","as","href","jsonpScriptSrc","head","appendChild","installedModules","installedCssChunks","5","p","exports","module","l","e","promises","Promise","resolve","reject","fullhref","existingLinkTags","getElementsByTagName","dataHref","tag","getAttribute","existingStyleTags","linkTag","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","error","clearTimeout","chunk","errorType","realSrc","message","name","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","this","oldJsonpFunction","slice"],"mappings":"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","file":"static/js/runtime-main.9c757117.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n \t\tvar prefetchChunks = data[3] || [];\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n \t\tdeferredPrefetch.push.apply(deferredPrefetch, prefetchChunks);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\tif(deferredModules.length === 0) {\n \t\t\t// chunk prefetching for javascript\n \t\t\tdeferredPrefetch.forEach(function(chunkId) {\n \t\t\t\tif(installedChunks[chunkId] === undefined) {\n \t\t\t\t\tinstalledChunks[chunkId] = null;\n \t\t\t\t\tvar link = document.createElement('link');\n\n \t\t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\t\tlink.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t\t}\n \t\t\t\t\tlink.rel = \"prefetch\";\n \t\t\t\t\tlink.as = \"script\";\n \t\t\t\t\tlink.href = jsonpScriptSrc(chunkId);\n \t\t\t\t\tdocument.head.appendChild(link);\n \t\t\t\t}\n \t\t\t});\n \t\t\tdeferredPrefetch.length = 0;\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t5: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t5: 0\n \t};\n\n \tvar deferredModules = [], deferredPrefetch = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"0\":\"806c0fce\",\"1\":\"6e89b573\",\"2\":\"436e9649\",\"3\":\"f815705f\",\"7\":\"0ec5d2a8\",\"8\":\"b234d0d6\",\"9\":\"c664793b\",\"10\":\"9f50416f\",\"11\":\"53b5ae0b\",\"12\":\"f1bf1115\",\"13\":\"f4134870\",\"14\":\"6e625019\",\"15\":\"1e67e159\",\"16\":\"f557b837\",\"17\":\"c0ca9b01\",\"18\":\"328bc71d\",\"19\":\"ef77b080\",\"20\":\"6e0ae300\",\"21\":\"c9581516\",\"22\":\"9d6df20d\",\"23\":\"334b85e6\",\"24\":\"14cea2af\",\"25\":\"47277c1e\",\"26\":\"e04a6f53\",\"27\":\"4d9d8a27\",\"28\":\"fa16a4e7\"}[chunkId] + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"7\":1,\"8\":1,\"9\":1,\"21\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"0\":\"31d6cfe0\",\"1\":\"31d6cfe0\",\"2\":\"31d6cfe0\",\"3\":\"31d6cfe0\",\"7\":\"1cefc4d5\",\"8\":\"416fbabe\",\"9\":\"416fbabe\",\"10\":\"31d6cfe0\",\"11\":\"31d6cfe0\",\"12\":\"31d6cfe0\",\"13\":\"31d6cfe0\",\"14\":\"31d6cfe0\",\"15\":\"31d6cfe0\",\"16\":\"31d6cfe0\",\"17\":\"31d6cfe0\",\"18\":\"31d6cfe0\",\"19\":\"31d6cfe0\",\"20\":\"31d6cfe0\",\"21\":\"6391f1d6\",\"22\":\"31d6cfe0\",\"23\":\"31d6cfe0\",\"24\":\"31d6cfe0\",\"25\":\"31d6cfe0\",\"26\":\"31d6cfe0\",\"27\":\"31d6cfe0\",\"28\":\"31d6cfe0\"}[chunkId] + \".chunk.css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = this[\"webpackJsonp@abtnode/webapp\"] = this[\"webpackJsonp@abtnode/webapp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""}
|