@abtnode/webapp 1.6.9 → 1.6.10
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 +5 -5
- package/blocklet.yml +1 -1
- package/build/asset-manifest.json +18 -18
- package/build/index.html +1 -1
- package/build/{precache-manifest.d77c71fa590027f941a9b90889c41ebc.js → precache-manifest.4ebb2e70b7f40bbffcb9c15b4a0a3567.js} +16 -16
- package/build/service-worker.js +1 -1
- package/build/static/js/11.f9ceb4b3.chunk.js +2 -0
- package/build/static/js/11.f9ceb4b3.chunk.js.map +1 -0
- package/build/static/js/{22.cdd3d1a4.chunk.js → 22.0f55f82b.chunk.js} +2 -2
- package/build/static/js/22.0f55f82b.chunk.js.map +1 -0
- package/build/static/js/{23.4208ebea.chunk.js → 23.32485069.chunk.js} +2 -2
- package/build/static/js/23.32485069.chunk.js.map +1 -0
- package/build/static/js/{28.9b1197ca.chunk.js → 28.40163b1b.chunk.js} +2 -2
- package/build/static/js/28.40163b1b.chunk.js.map +1 -0
- package/build/static/js/8.378ea0cc.chunk.js +3 -0
- package/build/static/js/{8.8084d3ca.chunk.js.LICENSE.txt → 8.378ea0cc.chunk.js.LICENSE.txt} +0 -0
- package/build/static/js/8.378ea0cc.chunk.js.map +1 -0
- package/build/static/js/main.11941b8b.chunk.js +2 -0
- package/build/static/js/main.11941b8b.chunk.js.map +1 -0
- package/build/static/js/{runtime-main.278e8ea4.js → runtime-main.eb2b4e6c.js} +2 -2
- package/build/static/js/{runtime-main.278e8ea4.js.map → runtime-main.eb2b4e6c.js.map} +1 -1
- package/package.json +1 -1
- package/build/static/js/11.ec811533.chunk.js +0 -2
- package/build/static/js/11.ec811533.chunk.js.map +0 -1
- package/build/static/js/22.cdd3d1a4.chunk.js.map +0 -1
- package/build/static/js/23.4208ebea.chunk.js.map +0 -1
- package/build/static/js/28.9b1197ca.chunk.js.map +0 -1
- package/build/static/js/8.8084d3ca.chunk.js +0 -3
- package/build/static/js/8.8084d3ca.chunk.js.map +0 -1
- package/build/static/js/main.ce53947b.chunk.js +0 -2
- package/build/static/js/main.ce53947b.chunk.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../mocks/lib/jspdf.js","../../../node_modules/pretty-ms-i18n/index.js","../../../node_modules/pretty-ms-i18n/lang/en.js","../../../node_modules/pretty-ms-i18n/lang/zh.js","../../../node_modules/pretty-ms-i18n/lib/parse_ms.js","../../../node_modules/parse-ms/index.js","../../../node_modules/@material-ui/icons/PlayArrow.js","../../../node_modules/@material-ui/icons/Stop.js","../../../node_modules/@material-ui/icons/Replay.js","../../../node_modules/@material-ui/icons/Autorenew.js","../../../node_modules/@material-ui/icons/Settings.js","../../../node_modules/@material-ui/icons/Receipt.js","../../../node_modules/@material-ui/icons/Group.js","../../../node_modules/@material-ui/icons/MoreVert.js","../../../node_modules/lodash/upperCase.js","components/blocklet/service-tags.js","components/blocklet/interface.js","components/blocklet/actions.js","components/blocklet/version.js","../../../node_modules/@material-ui/icons/ArrowUpward.js","components/uptime.js","components/blocklet/install-from-url.js","components/blocklet/add.js","pages/blocklets/index.js","../../../node_modules/@material-ui/core/esm/ButtonGroup/index.js","hooks/mobile-width.js","components/confirm.js","components/table-icons.js","components/table.js","../../../blocklet/meta/lib/util.js","components/blocklet/status.js","components/dot.js","../../../node_modules/@arcblock/ux/lib/ButtonGroup/index.js","../../../node_modules/pretty-ms-i18n/lib/register_lang.js","components/tag.js","components/blocklet/avatar.js","components/blocklet/icons.js","hooks/persistent-sort.js"],"names":["module","exports","en_US","require","zh_CN","registerLang","prettyMilliseconds","year","long","short","day","hour","minute","second","millisecond","microsecond","nanosecond","parseMilliseconds","getLocale","getLang","pluralize","word","count","milliseconds","options","Number","isFinite","TypeError","colonNotation","compact","formatSubMilliseconds","separateMilliseconds","verbose","secondsDecimalDigits","millisecondsDecimalDigits","locale","result","floorDecimals","value","decimalDigits","flooredInterimValue","Math","floor","round","toFixed","add","unit","valueToString","length","prefix","suffix","valueString","toString","wholeDigits","includes","split","minLength","repeat","max","Object","values","parsed","filter","x","days","hours","minutes","push","trunc","seconds","microseconds","nanoseconds","millisecondsAndBelow","roundedMiliseconds","ceil","millisecondsString","parseFloat","secondsFixed","secondsString","keepDecimalsOnWholeSeconds","replace","longUnit","shortUnit","unitCount","separator","slice","join","roundTowardsZero","_interopRequireDefault","_interopRequireWildcard","defineProperty","default","React","_default","createElement","d","upperCase","createCompounder","index","toUpperCase","useStyles","makeStyles","tooltip","maxWidth","ServiceTags","meta","classes","Array","isArray","services","map","name","content","config","entries","String","sort","a","b","aKey","bKey","localeCompare","Tooltip","interactive","title","style","paddingRight","key","Flex","flexShrink","width","textAlign","marginRight","margin","cursor","type","fill","styled","div","BlockletInterface","blocklet","props","useContext","LocaleContext","t","status","webInterface","interfaces","find","BLOCKLET_INTERFACE_TYPE_WEB","EmptyTipOut","to","did","className","url","checkIsWildcardDomain","encodeWildcardDomain","Container","href","appendParams","target","BlockletActions","onStart","onComplete","variant","rest","history","useHistory","node","useNodeContext","useState","anchorEl","setAnchorEl","currentAction","setCurrentAction","loading","setLoading","confirmSetting","setConfirmSetting","createHandler","action","fn","requireUserConfirm","onConfirm","params","input","keepData","removeType","sleep","Toast","success","errMsg","formatError","error","Error","onCancel","confirmSettings","stop","description","confirm","cancel","restart","remove","setParams","component","gutterBottom","onChange","e","control","label","cancelDownload","open","Boolean","onOpen","stopPropagation","preventDefault","currentTarget","onAction","handler","console","removeAction","isDeletableBlocklet","icon","Icons","Remove","api","deleteBlocklet","disabled","cancelDownloadAction","cancelDownloadBlocklet","missingRequiredConfigs","getRequiredMissingConfigs","actions","Start","startBlocklet","isDownloading","mode","BLOCKLET_MODES","DEVELOPMENT","Stop","stopBlocklet","Restart","restartBlocklet","Reload","reloadBlocklet","onlyInMenu","Config","isAuthServiceEnabled","Group","Log","inProgress","isInProgress","Div","data-cy","permission","hasPermission","aria-label","aria-controls","aria-haspopup","actions-blocklet-did","onClick","size","id","keepMounted","onClose","PaperProps","severity","i","dense","minWidth","fontSize","primary","defaultProps","theme","breakpoints","sm","BlockletVersion","checkUpgrade","info","setError","newVersionBlocklet","setNewVersionBlocklet","enqueueSnackbar","useSnackbar","useEffect","getLatestBlockletVersion","version","then","data","registryUrl","semver","gt","catch","err","source","deployedFrom","blockletRegistry","upgradeBlocklet","autoHideDuration","setting","marginLeft","color","message","withPermission","times","useUpTime","initialTime","format","elapsedTime","setElapsedTime","setDelayTimes","time","delay","setDelay","timer","setInterval","delayTime","clearInterval","UpTime","useFormat","InstallFromUrl","defaultUrl","onSuccess","onError","useLocaleContext","setUrl","activeStep","setActiveStep","dist","setMeta","existingMeta","setExistingMeta","onGetMeta","decoded","decodeURIComponent","trim","URL","getBlockletMetaFromUrl","newer","getBlocklet","attachRuntimeInfo","existedBlocklet","gte","onInstall","installBlocklet","rows","formatPerson","author","tarball","steps","body","Typography","TextField","autoComplete","fullWidth","autoFocus","marginBottom","helperText","onKeyPress","paddingLeft","row","valueComponent","nameWidth","nameFormatter","s","step","showCloseButton","disableBackdropClick","disableEscapeKeyDown","rounded","Stepper","alternativeLabel","Step","StepLabel","DialogContentText","marginTop","AddBlocklet","setSuccess","setOpen","installSetting","setInstallSetting","anchorRef","useRef","closeInstallFromUrl","undefined","aria-expanded","ref","prevOpen","Popper","current","role","placement","disablePortal","Paper","ClickAwayListener","onClickAway","contains","MenuList","MenuItem","duration","BlockletList","blocklets","useBlockletContext","useLocalStorage","pageSize","setNewPageSize","usePersistentSort","sortDirections","onSortChange","onActionStart","onActionComplete","refresh","silent","isBreakpointsUpMd","useMediaQuery","up","isBreakpointsUpLg","useLocation","pathname","search","query","URLSearchParams","get","metaUrl","items","textDecoration","dateFields","forEach","f","date","Date","columns","field","defaultSort","customSort","aSorProperty","bSorProperty","toLowerCase","render","tab","sorting","aVersion","bVersion","lt","installedAt","createdAt","formatToDatetime","aUptime","runtimeInfo","uptime","prettyT","formatLocale","prettyMs","status-blocklet-did","configs","some","required","Box","display","justifyContent","alignItems","icons","blockletIcons","tableIcons","header","emptyRowsWhenPaging","actionsColumnIndex","tableLayout","maxBodyHeight","pageSizeOptions","localization","toolbar","searchPlaceholder","emptyDataSourceMessage","onOrderChange","onChangeRowsPerPage","newPageSize","Main","main","useMobileWidth","useTheme","down","ConfirmDialog","showCancel","initialParams","changeLocale","onCallback","cb","isBreakpointsDownSm","StyledDialog","fullScreen","DialogTitle","DialogContent","Alert","DialogActions","padding","__disableConfirm","Dialog","Add","Check","Delete","Edit","Clear","DetailPanel","NextPage","Filter","FirstPage","LastPage","PreviousPage","Search","ResetSearch","SortArrow","Export","ThirdStateCheck","ViewColumn","TableStyle","forEachBlocklet","parallel","sync","children","child","tasks","Promise","all","isFreeBlocklet","payment","price","every","environments","missingConfigs","item","y","wipeSensitiveData","secure","configObj","environmentObj","colors","BlockletStatus","colorMap","added","waiting","downloading","downloaded","installing","installed","starting","running","stopping","stopped","upgrading","restarting","corrupted","statusTxt","borderRadius","border","Dot","_styledComponents","_ButtonGroup","_wrap","obj","__esModule","sizes","small","medium","large","getBorderRadius","StyledButtonGroup","withConfig","displayName","componentId","langs","Map","set","Tag","BlockletAvatar","logoUrl","joinURL","logo","formatRegistryLogoPath","window","env","apiPrefix","assign","backgroundColor","height","src","ev","alt","initialDirections","setSortDirections","columnIndex","directionValue","newSortDirections"],"mappings":"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","file":"static/js/11.f9ceb4b3.chunk.js","sourcesContent":["module.exports = {};\n","const en_US = require('./lang/en');\nconst zh_CN = require('./lang/zh');\n\nconst { registerLang } = require('./lib/register_lang');\nconst prettyMilliseconds = require('./lib/parse_ms');\n\nregisterLang('en_US', en_US);\nregisterLang('zh_CN', zh_CN);\n\nprettyMilliseconds.registerLang = registerLang;\n\nmodule.exports = prettyMilliseconds;\n","module.exports = {\n year: {\n long: 'year',\n short: 'y',\n },\n day: {\n long: 'day',\n short: 'd',\n },\n hour: {\n long: 'hour',\n short: 'h',\n },\n minute: {\n long: 'minute',\n short: 'm',\n },\n second: {\n long: 'second',\n short: 's',\n },\n millisecond: {\n long: 'millisecond',\n short: 'ms',\n },\n microsecond: {\n long: 'microsecond',\n short: 'µs',\n },\n nanosecond: {\n long: 'nanosecond',\n short: 'ns',\n },\n};\n","module.exports = {\n year: {\n long: '年',\n short: '年',\n },\n day: {\n long: '天',\n short: '天',\n },\n hour: {\n long: '小时',\n short: '小时',\n },\n minute: {\n long: '分钟',\n short: '分',\n },\n second: {\n long: '秒钟',\n short: '秒',\n },\n millisecond: {\n long: '毫秒',\n short: '毫秒',\n },\n microsecond: {\n long: '微秒',\n short: '微秒',\n },\n nanosecond: {\n long: '纳秒',\n short: '纳秒',\n },\n};\n","const parseMilliseconds = require('parse-ms');\nconst { getLang: getLocale } = require('./register_lang');\n\nconst pluralize = (word, count) => (count === 1 ? word : `${word}s`);\n\nconst SECOND_ROUNDING_EPSILON = 0.0000001;\n\nmodule.exports = (milliseconds, options = {}) => {\n if (!Number.isFinite(milliseconds)) {\n throw new TypeError('Expected a finite number');\n }\n\n if (options.colonNotation) {\n options.compact = false;\n options.formatSubMilliseconds = false;\n options.separateMilliseconds = false;\n options.verbose = false;\n }\n\n if (options.compact) {\n options.secondsDecimalDigits = 0;\n options.millisecondsDecimalDigits = 0;\n }\n\n const locale = getLocale(options.locale);\n const result = [];\n\n const floorDecimals = (value, decimalDigits) => {\n const flooredInterimValue = Math.floor(value * 10 ** decimalDigits + SECOND_ROUNDING_EPSILON);\n const flooredValue = Math.round(flooredInterimValue) / 10 ** decimalDigits;\n return flooredValue.toFixed(decimalDigits);\n };\n\n const add = (value, unit, valueToString) => {\n if (\n (result.length === 0 || !options.colonNotation) &&\n value === 0 &&\n !(options.colonNotation && unit === 'minute')\n ) {\n return;\n }\n\n const { long } = locale[unit] || getLocale('en_US')[unit];\n const { short } = locale[unit] || getLocale('en_US')[unit];\n\n let valueString = (valueToString || value || '0').toString();\n let prefix;\n let suffix;\n if (options.colonNotation) {\n prefix = result.length > 0 ? ':' : '';\n suffix = '';\n const wholeDigits = valueString.includes('.') ? valueString.split('.')[0].length : valueString.length;\n const minLength = result.length > 0 ? 2 : 1;\n valueString = '0'.repeat(Math.max(0, minLength - wholeDigits)) + valueString;\n } else {\n prefix = '';\n if (options.locale === 'zh_CN') {\n if (Object.values(parsed).filter((x) => x > 0).length > 1) {\n if (!parsed.days && !parsed.hours && parsed.minutes && options.compact) {\n suffix = long;\n } else {\n suffix = short;\n }\n } else if (parsed.minutes) {\n suffix = long;\n } else {\n suffix = short;\n }\n } else {\n suffix = options.verbose ? ` ${pluralize(long, value)}` : short;\n }\n }\n\n result.push(prefix + valueString + suffix);\n };\n\n const parsed = parseMilliseconds(milliseconds);\n\n add(Math.trunc(parsed.days / 365), 'year');\n add(parsed.days % 365, 'day');\n add(parsed.hours, 'hour');\n add(parsed.minutes, 'minute');\n\n if (\n options.separateMilliseconds ||\n options.formatSubMilliseconds ||\n (!options.colonNotation && milliseconds < 1000)\n ) {\n add(parsed.seconds, 'second');\n if (options.formatSubMilliseconds) {\n add(parsed.milliseconds, 'millisecond');\n add(parsed.microseconds, 'microsecond');\n add(parsed.nanoseconds, 'nanosecond');\n } else {\n const millisecondsAndBelow = parsed.milliseconds + parsed.microseconds / 1000 + parsed.nanoseconds / 1e6;\n\n const millisecondsDecimalDigits =\n typeof options.millisecondsDecimalDigits === 'number' ? options.millisecondsDecimalDigits : 0;\n\n const roundedMiliseconds =\n millisecondsAndBelow >= 1 ? Math.round(millisecondsAndBelow) : Math.ceil(millisecondsAndBelow);\n\n const millisecondsString = millisecondsDecimalDigits\n ? millisecondsAndBelow.toFixed(millisecondsDecimalDigits)\n : roundedMiliseconds;\n\n add(Number.parseFloat(millisecondsString, 10), 'millisecond', millisecondsString);\n }\n } else {\n const seconds = (milliseconds / 1000) % 60;\n const secondsDecimalDigits = typeof options.secondsDecimalDigits === 'number' ? options.secondsDecimalDigits : 1;\n const secondsFixed = floorDecimals(seconds, secondsDecimalDigits);\n const secondsString = options.keepDecimalsOnWholeSeconds ? secondsFixed : secondsFixed.replace(/\\.0+$/, '');\n add(Number.parseFloat(secondsString, 10), 'second', secondsString);\n }\n\n if (result.length === 0) {\n const longUnit = (locale.millisecond || getLocale('en_US').millisecond).long;\n const shortUnit = (locale.millisecond || getLocale('en_US').millisecond).short;\n\n if (options.locale === 'zh_CN') {\n return `0${options.verbose ? `${longUnit}` : shortUnit}`;\n }\n\n return `0${options.verbose ? ` ${longUnit}s` : shortUnit}`;\n }\n\n if (options.compact) {\n return result[0];\n }\n\n if (typeof options.unitCount === 'number') {\n const separator = options.colonNotation ? '' : ' ';\n return result.slice(0, Math.max(options.unitCount, 1)).join(separator);\n }\n\n return options.colonNotation ? result.join('') : result.join(' ');\n};\n","'use strict';\nmodule.exports = milliseconds => {\n\tif (typeof milliseconds !== 'number') {\n\t\tthrow new TypeError('Expected a number');\n\t}\n\n\tconst roundTowardsZero = milliseconds > 0 ? Math.floor : Math.ceil;\n\n\treturn {\n\t\tdays: roundTowardsZero(milliseconds / 86400000),\n\t\thours: roundTowardsZero(milliseconds / 3600000) % 24,\n\t\tminutes: roundTowardsZero(milliseconds / 60000) % 60,\n\t\tseconds: roundTowardsZero(milliseconds / 1000) % 60,\n\t\tmilliseconds: roundTowardsZero(milliseconds) % 1000,\n\t\tmicroseconds: roundTowardsZero(milliseconds * 1000) % 1000,\n\t\tnanoseconds: roundTowardsZero(milliseconds * 1e6) % 1000\n\t};\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 5v14l11-7z\"\n}), 'PlayArrow');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 6h12v12H6z\"\n}), 'Stop');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z\"\n}), 'Replay');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z\"\n}), 'Autorenew');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z\"\n}), 'Settings');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 17H6v-2h12v2zm0-4H6v-2h12v2zm0-4H6V7h12v2zM3 22l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20z\"\n}), 'Receipt');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z\"\n}), 'Group');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'MoreVert');\n\nexports.default = _default;","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\nvar upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n});\n\nmodule.exports = upperCase;\n","import React from 'react';\nimport styled from 'styled-components';\nimport PropTypes from 'prop-types';\nimport upperCase from 'lodash/upperCase';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Tag from '@arcblock/ux/lib/Tag';\nimport DidLogo from '@arcblock/icons/lib/DidLogo';\n\nconst useStyles = makeStyles(() => ({\n tooltip: {\n maxWidth: 'none',\n },\n}));\n\nexport default function ServiceTags({ meta }) {\n const classes = useStyles();\n if (!meta || !Array.isArray(meta.services)) {\n return null;\n }\n\n return meta.services.map(x => {\n const name = upperCase(x.name.replace(/^@abtnode\\//, '').replace(/-service$/, ''));\n const formatValue = value => (Array.isArray(value) ? value.join(', ') : String(value));\n\n let content = [];\n if (x.config) {\n content = Object.entries(x.config)\n .map(d => {\n d[1] = formatValue(d[1]);\n return d;\n })\n .filter(d => d[1])\n .sort((a, b) => {\n const aKey = a[0] || '';\n const bKey = b[0] || '';\n\n return aKey.localeCompare(bKey);\n });\n }\n\n return (\n <Tooltip\n interactive\n classes={{ tooltip: classes.tooltip }}\n title={\n // eslint-disable-next-line react/jsx-wrap-multilines\n <div style={{ paddingRight: 20 }}>\n {content.map(([key, value]) => (\n <Flex>\n <div style={{ flexShrink: 0, width: 150, textAlign: 'right', marginRight: 10 }}>{`${key}:`}</div>\n <div>{value}</div>\n </Flex>\n ))}\n </div>\n }>\n <Tag style={{ margin: '0 4px', cursor: 'pointer' }} type=\"success\">\n {name === 'AUTH' && <DidLogo style={{ marginRight: 4, fill: 'rgb(91, 144, 37)' }} />}\n {name}\n </Tag>\n </Tooltip>\n );\n });\n}\n\nServiceTags.propTypes = {\n meta: PropTypes.object.isRequired,\n};\n\nconst Flex = styled.div`\n display: flex;\n margin: 4px 0;\n`;\n","import React, { useContext } from 'react';\nimport { Link } from 'react-router-dom';\nimport styled from 'styled-components';\nimport PropTypes from 'prop-types';\n\nimport ExternalLink from '@material-ui/core/Link';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport { BLOCKLET_INTERFACE_TYPE_WEB } from '@blocklet/meta/lib/constants';\n\nimport { appendParams, checkIsWildcardDomain, encodeWildcardDomain } from '../../libs/util';\nimport ServiceTags from './service-tags';\n\nexport default function BlockletInterface({ blocklet, ...props }) {\n const { t, locale } = useContext(LocaleContext);\n\n if (blocklet.status !== 'running') {\n return null;\n }\n\n // eslint-disable-next-line no-nested-ternary\n const webInterface = (blocklet.interfaces || []).find(x => x.type === BLOCKLET_INTERFACE_TYPE_WEB);\n\n if (!webInterface) {\n return (\n <EmptyTipOut>\n {t('blocklet.urlEmptyTip')}\n <Link to={`/router/rules?fromDid=${blocklet.meta.did}`} className=\"interface-link\">\n {t('blocklet.goToAddRule')}\n </Link>\n </EmptyTipOut>\n );\n }\n\n const { name, url } = webInterface;\n\n if (checkIsWildcardDomain(url)) {\n return encodeWildcardDomain(url, locale);\n }\n\n return (\n <Container {...props}>\n <Flex>\n <ExternalLink href={appendParams(url, { locale })} target=\"_blank\" className=\"blocklet-interface\">\n {t('common.open')}\n </ExternalLink>\n <ServiceTags meta={blocklet.meta.interfaces.find(x => x.name === name)} />\n </Flex>\n </Container>\n );\n}\n\nBlockletInterface.propTypes = {\n blocklet: PropTypes.object.isRequired,\n};\n\nconst Flex = styled.div`\n display: flex;\n margin: 4px 0;\n`;\n\nconst EmptyTipOut = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst Container = styled.div`\n .blocklet-interface {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n white-space: nowrap;\n\n img {\n margin-right: 4px;\n }\n }\n`;\n","/* eslint-disable operator-linebreak */\nimport React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { useHistory, Link } from 'react-router-dom';\n\nimport IconButton from '@material-ui/core/IconButton';\nimport Menu from '@material-ui/core/Menu';\nimport Divider from '@material-ui/core/Divider';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Typography from '@material-ui/core/Typography';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Alert from '@material-ui/lab/Alert';\n\nimport Button from '@arcblock/ux/lib/Button';\nimport ButtonGroup from '@arcblock/ux/lib/ButtonGroup';\nimport { getRequiredMissingConfigs, isAuthServiceEnabled, isDeletableBlocklet } from '@blocklet/meta/lib/util';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport { BLOCKLET_MODES } from '@blocklet/meta/lib/constants';\n\nimport Toast from '../toast';\nimport { sleep, formatError, isInProgress, isDownloading } from '../../libs/util';\nimport { useNodeContext } from '../../contexts/node';\nimport Confirm from '../confirm';\nimport Icons from './icons';\nimport Permission from '../permission';\n\nexport default function BlockletActions({ blocklet, onStart, onComplete, variant, ...rest }) {\n const history = useHistory();\n const node = useNodeContext();\n const [anchorEl, setAnchorEl] = useState(null);\n const [currentAction, setCurrentAction] = useState(null);\n const [loading, setLoading] = useState(false);\n const [confirmSetting, setConfirmSetting] = useState(null);\n const { t } = useContext(LocaleContext);\n\n const createHandler =\n (action, fn, requireUserConfirm = false) =>\n async () => {\n const onConfirm = async params => {\n onStart({ action, blocklet });\n setLoading(true);\n setCurrentAction(action);\n setConfirmSetting(null);\n try {\n const input = { did: blocklet.meta.did };\n if (action === 'remove') {\n input.keepData = params.removeType === 'keepData';\n }\n await fn({ input });\n if (action !== 'remove') {\n await sleep(1000); // just avoid user feeling so fast\n }\n\n if (action === 'reload') {\n Toast.success(t('blocklet.reloadSuccess'));\n }\n\n onComplete({ action, blocklet });\n } catch (err) {\n const errMsg = `Blocklet ${action} failed: ${formatError(err)}`;\n onComplete({ action, blocklet, error: new Error(errMsg) });\n } finally {\n setLoading(false);\n }\n };\n\n const onCancel = () => {\n setLoading(false);\n setConfirmSetting(null);\n };\n\n const confirmSettings = {\n stop: {\n title: `${t('common.stop')} ${blocklet.meta.title || blocklet.meta.name}`,\n description: t('blocklet.index.stopDescription'),\n confirm: t('blocklet.index.confirmStop'),\n cancel: t('common.cancel'),\n onConfirm,\n onCancel,\n },\n restart: {\n title: `${t('common.restart')} ${blocklet.meta.title || blocklet.meta.name}`,\n description: t('blocklet.index.restartDescription'),\n confirm: t('blocklet.index.confirmRestart'),\n cancel: t('common.cancel'),\n onConfirm,\n onCancel,\n },\n remove: {\n title: `${t('common.remove')} ${blocklet.meta.title || blocklet.meta.name}`,\n description: (params, setParams) => (\n <Typography component=\"div\">\n <Typography gutterBottom>{t('blocklet.index.removeDescription')}</Typography>\n <Typography gutterBottom>\n <b>{t('blocklet.index.deleteRoutingRuleDescription')}</b>\n </Typography>\n <RadioGroup\n name=\"removeType\"\n value={params.removeType}\n onChange={e => setParams({ ...params, removeType: e.target.value })}>\n <FormControlLabel value=\"keepData\" control={<Radio />} label={t('blocklet.index.removeKeepData')} />\n <FormControlLabel value=\"complete\" control={<Radio />} label={t('blocklet.index.removeComplete')} />\n </RadioGroup>\n </Typography>\n ),\n confirm: t('blocklet.index.confirmRemove'),\n cancel: t('common.cancel'),\n onConfirm,\n onCancel,\n params: { removeType: 'keepData' },\n },\n cancelDownload: {\n title: `${t('common.cancel')}`,\n description: t('blocklet.index.cancelDownloadDescription', {\n name: blocklet.meta.title || blocklet.meta.name,\n }),\n confirm: t('common.confirm'),\n cancel: t('common.cancel'),\n onConfirm,\n onCancel,\n },\n };\n\n if (requireUserConfirm) {\n setConfirmSetting(confirmSettings[action]);\n } else {\n await onConfirm();\n }\n };\n\n const open = Boolean(anchorEl);\n\n const onOpen = e => {\n try {\n e.stopPropagation();\n e.preventDefault();\n // eslint-disable-next-line no-empty\n } catch {}\n setAnchorEl(e.currentTarget);\n };\n\n const onClose = e => {\n try {\n e.stopPropagation();\n e.preventDefault();\n // eslint-disable-next-line no-empty\n } catch {}\n setAnchorEl(null);\n };\n\n const onAction = async (action, e) => {\n try {\n e.stopPropagation();\n e.preventDefault();\n // eslint-disable-next-line no-empty\n } catch {}\n setAnchorEl(null);\n if (typeof action.handler === 'function') {\n try {\n setLoading(true);\n setCurrentAction(action.action);\n await action.handler();\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(`Blocklet ${action.name} failed: `, err);\n } finally {\n setLoading(false);\n }\n }\n };\n\n const removeAction = isDeletableBlocklet(blocklet)\n ? {\n action: 'remove',\n icon: Icons.Remove,\n name: t('common.remove'),\n handler: createHandler('remove', node.api.deleteBlocklet, true),\n disabled: blocklet.status === 'running',\n }\n : null;\n\n const cancelDownloadAction = {\n action: 'remove',\n icon: Icons.Remove,\n name: t('common.cancel'),\n handler: createHandler('cancelDownload', node.api.cancelDownloadBlocklet, true),\n };\n\n const missingRequiredConfigs = getRequiredMissingConfigs(blocklet);\n\n const actions = [\n {\n action: 'start',\n icon: Icons.Start,\n name: t('common.start'),\n handler: createHandler('start', node.api.startBlocklet),\n disabled:\n blocklet.status === 'running' ||\n blocklet.status === 'corrupted' ||\n missingRequiredConfigs.length > 0 ||\n isDownloading(blocklet.status) ||\n blocklet.mode === BLOCKLET_MODES.DEVELOPMENT,\n },\n {\n action: 'stop',\n icon: Icons.Stop,\n name: t('common.stop'),\n handler: createHandler('stop', node.api.stopBlocklet, true),\n disabled: blocklet.status !== 'running' || blocklet.mode === BLOCKLET_MODES.DEVELOPMENT,\n },\n {\n action: 'restart',\n icon: Icons.Restart,\n name: t('common.restart'),\n handler: createHandler('restart', node.api.restartBlocklet, true),\n disabled: blocklet.status !== 'running' || blocklet.mode === BLOCKLET_MODES.DEVELOPMENT,\n },\n {\n action: 'reload',\n icon: Icons.Reload,\n name: t('common.reload'),\n handler: createHandler('reload', node.api.reloadBlocklet),\n disabled: blocklet.status !== 'running' || blocklet.mode === BLOCKLET_MODES.DEVELOPMENT,\n },\n\n isDownloading(blocklet.status) ? cancelDownloadAction : removeAction,\n\n {\n separator: true,\n },\n {\n onlyInMenu: true,\n action: 'config',\n icon: Icons.Config,\n name: t('common.config'),\n handler: () => {\n history.push(`/blocklets/${blocklet.meta.did}/configuration`);\n },\n disabled: isDownloading(blocklet.status),\n },\n isAuthServiceEnabled(blocklet)\n ? {\n onlyInMenu: true,\n action: 'team',\n icon: Icons.Group,\n name: t('common.manageTeam'),\n handler: () => {\n history.push(`/blocklets/${blocklet.meta.did}/members`);\n },\n disabled: isDownloading(blocklet.status),\n }\n : null,\n {\n onlyInMenu: true,\n action: 'log',\n icon: Icons.Log,\n name: t('common.log'),\n handler: () => {\n history.push(`/logs/blocklet-${blocklet.meta.did}`);\n },\n disabled: isDownloading(blocklet.status),\n },\n ].filter(Boolean);\n\n const inProgress = loading || isInProgress(blocklet.status);\n\n if (variant === 'menu') {\n return (\n <Div data-cy=\"blocklet-actions\">\n <Permission permission=\"mutate_blocklet\">\n {hasPermission => (\n <IconButton\n aria-label=\"more\"\n aria-controls=\"actions-menu\"\n aria-haspopup=\"true\"\n data-cy=\"trigger-blocklet-actions\"\n actions-blocklet-did={blocklet.meta.did}\n onClick={onOpen}\n size=\"small\"\n disabled={!hasPermission || (!isDownloading(blocklet.status) && Boolean(inProgress))}>\n <MoreVertIcon />\n </IconButton>\n )}\n </Permission>\n\n <Menu id=\"actions-menu\" anchorEl={anchorEl} keepMounted open={open} onClose={onClose} PaperProps={{}}>\n {missingRequiredConfigs.length > 0 && (\n <Alert style={{ maxWidth: '400px' }} severity=\"error\">\n {t('blocklet.config.user.missingRequired')}\n <br />\n <Link to={`/blocklets/${blocklet.meta.did}/configuration`}>{t('blocklet.config.user.gotoFix')}</Link>\n </Alert>\n )}\n {actions.map((action, i) => {\n if (action.separator) {\n // eslint-disable-next-line react/no-array-index-key\n return <Divider key={`separator-${i}`} />;\n }\n return (\n <MenuItem\n dense\n key={action.name}\n onClick={e => onAction(action, e)}\n disabled={action.disabled}\n data-cy={`${action.action}-blocklet`}>\n <ListItemIcon style={{ minWidth: 24 }}>\n <action.icon fontSize=\"small\" />\n </ListItemIcon>\n <ListItemText primary={action.name} />\n </MenuItem>\n );\n })}\n </Menu>\n {confirmSetting && (\n <Confirm\n title={confirmSetting.title}\n description={confirmSetting.description}\n confirm={confirmSetting.confirm}\n cancel={confirmSetting.cancel}\n params={confirmSetting.params}\n onConfirm={confirmSetting.onConfirm}\n onCancel={confirmSetting.onCancel}\n />\n )}\n </Div>\n );\n }\n\n return (\n <Div data-cy=\"blocklet-actions\" {...rest}>\n <ButtonGroup>\n {actions\n .filter(x => !x.separator && !x.onlyInMenu)\n .map(action => (\n <Button\n title={action.name}\n key={action.name}\n data-cy={`${action.action}-blocklet`}\n onClick={() => onAction(action)}\n disabled={Boolean(action.disabled) || Boolean(inProgress)}>\n {currentAction === action.action && Boolean(inProgress) ? <Spinner size={[16, 10]} /> : <action.icon />}\n <span className=\"blocklet-action-text\">{action.name}</span>\n </Button>\n ))}\n </ButtonGroup>\n {confirmSetting && (\n <Confirm\n title={confirmSetting.title}\n description={confirmSetting.description}\n confirm={confirmSetting.confirm}\n cancel={confirmSetting.cancel}\n params={confirmSetting.params}\n onConfirm={confirmSetting.onConfirm}\n onCancel={confirmSetting.onCancel}\n />\n )}\n </Div>\n );\n}\n\nBlockletActions.propTypes = {\n blocklet: PropTypes.object.isRequired,\n onStart: PropTypes.func.isRequired,\n onComplete: PropTypes.func.isRequired,\n variant: PropTypes.oneOf(['menu', 'group']),\n};\n\nBlockletActions.defaultProps = {\n variant: 'menu',\n};\n\nconst Div = styled.div`\n display: flex;\n align-items: center;\n\n @media (max-width: ${props => props.theme.breakpoints.values.sm}px) {\n .MuiButton-root {\n padding: 4px;\n font-size: 10px;\n }\n }\n`;\n","import React, { useContext, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport semver from 'semver';\n\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Button from '@material-ui/core/IconButton';\nimport UpgradeIcon from '@material-ui/icons/ArrowUpward';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Tag from '@arcblock/ux/lib/Tag';\nimport Toast from '@arcblock/ux/lib/Toast';\nimport { useSnackbar } from 'notistack';\n\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport Confirm from '../confirm';\nimport { withPermission } from '../permission';\n\nimport { useNodeContext } from '../../contexts/node';\nimport { sleep, formatError, isInProgress } from '../../libs/util';\n\nconst BlockletVersion = ({ blocklet, checkUpgrade, hasPermission, ...rest }) => {\n const { info, api } = useNodeContext();\n const { t } = useContext(LocaleContext);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState('');\n const [newVersionBlocklet, setNewVersionBlocklet] = useState(null);\n const [confirmSetting, setConfirmSetting] = useState(null);\n const { enqueueSnackbar } = useSnackbar();\n\n useEffect(() => {\n setNewVersionBlocklet(null);\n if (checkUpgrade) {\n api\n .getLatestBlockletVersion({ input: { did: blocklet.meta.did, version: blocklet.meta.version } })\n .then(({ data }) => {\n if (data) {\n const { version, registryUrl } = data;\n if (version && semver.gt(version, blocklet.meta.version)) {\n setNewVersionBlocklet({ version, registryUrl });\n }\n }\n })\n // eslint-disable-next-line max-len\n .catch(err => console.error(`Failed to fetch latest version: ${blocklet.meta.name}, error: ${formatError(err)}`)); // prettier-ignore\n }\n }, [blocklet.meta.version, blocklet.source, blocklet.deployedFrom, info.blockletRegistry, checkUpgrade]); // eslint-disable-line\n\n const onCancel = () => {\n setLoading(false);\n setConfirmSetting(null);\n };\n\n const onConfirm = async () => {\n setLoading(true);\n\n try {\n const input = {\n did: blocklet.meta.did,\n version: newVersionBlocklet.version,\n registryUrl: newVersionBlocklet.registryUrl,\n };\n await sleep(2000);\n await api.upgradeBlocklet({ input });\n } catch (err) {\n enqueueSnackbar(`Blocklet upgrade failed: ${formatError(err)}`, { autoHideDuration: 5000, variant: 'error' });\n } finally {\n setLoading(false);\n setConfirmSetting(null);\n }\n };\n\n const setting = {\n title: `${t('common.upgrade')} ${t('common.blocklet')} ${blocklet.meta.title || blocklet.meta.name}`,\n description: t('blocklet.index.upgradeDescription'),\n confirm: t('blocklet.index.confirmUpgrade'),\n cancel: t('common.cancel'),\n onConfirm,\n onCancel,\n };\n\n if (hasPermission && newVersionBlocklet && !isInProgress(blocklet.status)) {\n return (\n <>\n <Tag {...rest}>{blocklet.meta.version}</Tag>\n <Tooltip title={t('common.updateAvailable', { version: newVersionBlocklet.version })}>\n <Button size=\"small\" style={{ marginLeft: 8 }} disabled={loading} onClick={() => setConfirmSetting(setting)}>\n {loading ? <Spinner size={[16, 10]} /> : <UpgradeIcon style={{ fontSize: 16, color: 'red' }} />}\n </Button>\n </Tooltip>\n {!!error && <Toast variant=\"error\" message={error} onClose={() => setError('')} />}\n {confirmSetting && (\n <Confirm\n title={confirmSetting.title}\n description={confirmSetting.description}\n confirm={confirmSetting.confirm}\n cancel={confirmSetting.cancel}\n params={confirmSetting.params}\n onConfirm={confirmSetting.onConfirm}\n onCancel={confirmSetting.onCancel}\n />\n )}\n </>\n );\n }\n\n return <Tag {...rest}>{blocklet.meta.version}</Tag>;\n};\n\nBlockletVersion.propTypes = {\n blocklet: PropTypes.object.isRequired,\n checkUpgrade: PropTypes.bool,\n hasPermission: PropTypes.bool,\n};\n\nBlockletVersion.defaultProps = {\n checkUpgrade: true,\n hasPermission: false,\n};\n\nexport default withPermission(BlockletVersion, 'mutate_blocklet');\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"\n}), 'ArrowUpward');\n\nexports.default = _default;","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\n\nconst times = {\n oneSecond: 1,\n oneMin: 1 * 60,\n oneHour: 1 * 60 * 60,\n oneDay: 24 * 60 * 60,\n};\n\nexport const useUpTime = (initialTime, format) => {\n const [elapsedTime, setElapsedTime] = useState(0);\n\n const setDelayTimes = time => {\n if (time >= times.oneDay) {\n return times.oneDay;\n }\n\n if (time >= times.oneHour) {\n return times.oneHour;\n }\n\n if (time >= times.oneMin) {\n return times.oneMin;\n }\n\n return times.oneSecond;\n };\n\n const [delay, setDelay] = useState(setDelayTimes(initialTime / 1000));\n\n useEffect(() => {\n const timer = setInterval(() => {\n setElapsedTime(elapsedTime + delay);\n\n const delayTime = setDelayTimes(initialTime / 1000 + elapsedTime + delay);\n if (delay !== delayTime) {\n setDelay(delayTime);\n }\n }, delay * 1000);\n\n return () => clearInterval(timer);\n // eslint-disable-next-line\n }, [delay, elapsedTime]);\n\n useEffect(() => {\n setElapsedTime(0);\n setDelay(setDelayTimes(initialTime / 1000));\n }, [initialTime]); // eslint-disable-line\n\n return format(initialTime + elapsedTime * 1000);\n};\n\nexport default function UpTime({ initialTime, format, ...rest }) {\n const useFormat = useUpTime(initialTime, format);\n\n return <Typography {...rest}>{useFormat}</Typography>;\n}\n\nUpTime.propTypes = {\n initialTime: PropTypes.number.isRequired,\n format: PropTypes.func,\n};\n\nUpTime.defaultProps = {\n format: t => t,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport semver from 'semver';\n\nimport Dialog from '@arcblock/ux/lib/Dialog';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport StepLabel from '@material-ui/core/StepLabel';\n\nimport InfoRow from '@arcblock/ux/lib/InfoRow';\nimport DidAddress from '@arcblock/did-connect/lib/Address';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\nimport Alert from '@arcblock/ux/lib/Alert';\nimport Tag from '@arcblock/ux/lib/Tag';\n\nimport { useNodeContext } from '../../contexts/node';\nimport { formatError, formatPerson } from '../../libs/util';\n\nexport default function InstallFromUrl({ defaultUrl, onCancel, onSuccess, onError }) {\n const { api } = useNodeContext();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState('');\n const { t } = useLocaleContext();\n\n const [url, setUrl] = useState(defaultUrl);\n const [activeStep, setActiveStep] = useState(defaultUrl ? 1 : 0);\n\n const [meta, setMeta] = useState({ dist: {} });\n const [existingMeta, setExistingMeta] = useState(null);\n\n const onGetMeta = async () => {\n setError(null);\n setLoading(true);\n\n try {\n const decoded = decodeURIComponent(url.trim());\n // validate\n try {\n new URL(decoded); // eslint-disable-line no-new\n } catch {\n throw new Error('Invalid URL');\n }\n\n // request\n const { meta: newer } = await api.getBlockletMetaFromUrl({ input: { url: decoded } });\n const { blocklet: existedBlocklet } = await api.getBlocklet({\n input: { did: newer.did, attachRuntimeInfo: false },\n });\n\n if (existedBlocklet && semver.gte(existedBlocklet.meta.version, newer.version)) {\n setExistingMeta(existedBlocklet.meta);\n setMeta(newer);\n } else {\n setMeta(newer);\n }\n if (!defaultUrl) {\n setActiveStep(1);\n }\n } catch (err) {\n console.error(err);\n const errMsg = `Blocklet Install failed: ${formatError(err)}`;\n setError(errMsg);\n onError(err);\n } finally {\n setLoading(false);\n }\n };\n\n const onInstall = async () => {\n setLoading(true);\n try {\n await api.installBlocklet({ input: { url: decodeURIComponent(url.trim()) } });\n onSuccess();\n } catch (err) {\n const errMsg = `Blocklet Install failed: ${formatError(err)}`;\n setError(errMsg);\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n if (defaultUrl) {\n onGetMeta();\n }\n }, [defaultUrl]); // eslint-disable-line\n\n const rows = [\n { name: t('common.name'), value: meta.title || meta.name },\n { name: t('common.version'), value: meta.version },\n { name: t('common.did'), value: <DidAddress>{meta.did}</DidAddress> },\n { name: t('common.author'), value: formatPerson(meta.author) },\n { name: t('blocklet.dist.downloadLink'), value: meta.dist.tarball },\n ];\n\n const getStep1Body = () => {\n if (loading) {\n return (\n <div style={{ textAlign: 'center' }}>\n <Spinner />\n </div>\n );\n }\n if (meta.did) {\n return (\n <div style={{ paddingLeft: '10%' }}>\n {rows.map(row => {\n if (row.name === t('common.did')) {\n return (\n <InfoRow\n valueComponent=\"div\"\n key={row.name}\n nameWidth={120}\n name={row.name}\n nameFormatter={() => t('common.did')}>\n {row.value}\n </InfoRow>\n );\n }\n return (\n <InfoRow valueComponent=\"div\" key={row.name} nameWidth={120} name={row.name}>\n {row.value}\n </InfoRow>\n );\n })}\n {existingMeta && (\n <Alert type=\"error\" variant=\"icon\" style={{ margin: '15px 0 0 -16px' }}>\n <div>\n {t('blocklet.fromUrl.existTipPrefix')}\n <Tag content={existingMeta.version} style={{ margin: '0 5px' }} />\n {t('blocklet.fromUrl.existTipSuffix')}\n </div>\n </Alert>\n )}\n </div>\n );\n }\n return null;\n };\n\n const steps = [\n {\n label: t('blocklet.fromUrl.step0'),\n body: (\n <Typography component=\"div\">\n <TextField\n label={t('blocklet.fromUrl.label')}\n autoComplete=\"off\"\n variant=\"outlined\"\n name=\"url\"\n data-cy=\"blocklet-url-input\"\n fullWidth\n autoFocus\n style={{ marginBottom: 32 }}\n helperText={t('blocklet.fromUrl.description')}\n value={url}\n onChange={e => {\n setError(null);\n setUrl(e.target.value);\n }}\n disabled={loading}\n onKeyPress={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n onGetMeta();\n }\n }}\n />\n </Typography>\n ),\n cancel: t('common.cancel'),\n confirm: t('common.next'),\n onCancel,\n onConfirm: onGetMeta,\n },\n {\n label: t('blocklet.fromUrl.step1'),\n body: getStep1Body(),\n cancel: defaultUrl ? t('common.cancel') : t('common.pre'),\n confirm: existingMeta ? t('common.confirm') : t('blocklet.fromUrl.confirm'),\n onCancel: () => {\n if (!defaultUrl) {\n setActiveStep(s => s - 1);\n } else {\n onCancel();\n }\n },\n onConfirm: () => {\n if (existingMeta) {\n onCancel();\n } else {\n onInstall();\n }\n },\n },\n ];\n const step = steps[activeStep];\n\n return (\n <Dialog\n title={t('blocklet.fromUrl.title')}\n fullWidth\n maxWidth=\"md\"\n onClose={() => step.onCancel()}\n showCloseButton={activeStep === 0}\n disableBackdropClick\n disableEscapeKeyDown\n open\n actions={\n <>\n {step.cancel && (\n <Button\n onClick={e => {\n e.stopPropagation();\n step.onCancel();\n }}\n color=\"default\"\n rounded\n size=\"small\">\n {step.cancel || t('common.cancel')}\n </Button>\n )}\n <Button\n onClick={e => {\n e.stopPropagation();\n step.onConfirm();\n }}\n color=\"primary\"\n size=\"small\"\n data-cy=\"install-blocklet-next-step\"\n disabled={loading || !url || error}\n variant=\"contained\"\n autoFocus\n rounded\n style={{ marginLeft: 8 }}>\n {loading && activeStep === 0 && <Spinner size={[16, 10]} />}\n {step.confirm}\n </Button>\n </>\n }>\n {!defaultUrl && (\n <Stepper alternativeLabel activeStep={activeStep}>\n {steps.map(({ label }) => (\n <Step key={label}>\n <StepLabel>{label}</StepLabel>\n </Step>\n ))}\n </Stepper>\n )}\n <DialogContentText component=\"div\">{step.body}</DialogContentText>\n {!!error && (\n <Alert severity=\"error\" style={{ width: '100%', marginTop: 8 }}>\n {error}\n </Alert>\n )}\n </Dialog>\n );\n}\n\nInstallFromUrl.propTypes = {\n defaultUrl: PropTypes.string,\n onCancel: PropTypes.func.isRequired,\n onSuccess: PropTypes.func.isRequired,\n onError: PropTypes.func,\n};\n\nInstallFromUrl.defaultProps = {\n onError: () => {},\n defaultUrl: '',\n};\n","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { useState, useRef } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport Paper from '@material-ui/core/Paper';\nimport Popper from '@material-ui/core/Popper';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport MenuList from '@material-ui/core/MenuList';\nimport AddIcon from '@material-ui/icons/Add';\n\nimport Toast from '@arcblock/ux/lib/Toast';\nimport Button from '@arcblock/ux/lib/Button';\nimport ButtonGroup from '@arcblock/ux/lib/ButtonGroup';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport InstallFromUrl from './install-from-url';\n\nexport default function AddBlocklet() {\n const history = useHistory();\n const { t } = useLocaleContext();\n\n const [error, setError] = useState('');\n const [success, setSuccess] = useState('');\n const [open, setOpen] = useState(false);\n const [installSetting, setInstallSetting] = useState(null);\n\n const anchorRef = useRef(null);\n\n const onToggle = () => {\n setOpen(prevOpen => !prevOpen);\n };\n\n const onClose = e => {\n if (anchorRef.current && anchorRef.current.contains(e.target)) {\n return;\n }\n\n setOpen(false);\n };\n\n const closeInstallFromUrl = () => {\n setInstallSetting(null);\n };\n\n const openInstallFromUrl = () => {\n setInstallSetting({\n onCancel: () => {\n closeInstallFromUrl();\n setOpen(false);\n setInstallSetting(null);\n },\n onSuccess: () => {\n closeInstallFromUrl();\n },\n });\n };\n\n return (\n <>\n <ButtonGroup variant=\"contained\" size=\"small\" color=\"primary\" aria-label=\"split button\" rounded>\n <Button size=\"small\" onClick={() => history.push('/store')}>\n <AddIcon />\n {t('blocklet.installFromMarket')}\n </Button>\n <Button\n size=\"small\"\n aria-controls={open ? 'split-button-menu' : undefined}\n aria-expanded={open ? 'true' : undefined}\n ref={anchorRef}\n data-cy=\"open-install-menu\"\n onClick={onToggle}>\n <ArrowDropDownIcon />\n </Button>\n </ButtonGroup>\n <Popper\n open={open}\n anchorEl={anchorRef.current}\n role={undefined}\n placement=\"bottom-end\"\n disablePortal={false}\n className=\"popper\">\n <Paper>\n <ClickAwayListener onClickAway={onClose}>\n <MenuList id=\"split-button-menu\">\n <MenuItem data-cy=\"open-install-form\" onClick={() => openInstallFromUrl()}>\n {t('blocklet.installFromUrl')}\n </MenuItem>\n </MenuList>\n </ClickAwayListener>\n </Paper>\n </Popper>\n {!!error && <Toast variant=\"error\" message={error} onClose={() => setError('')} />}\n {!!success && <Toast variant=\"success\" duration={3000} message={success} onClose={() => setSuccess('')} />}\n {installSetting && <InstallFromUrl onCancel={installSetting.onCancel} onSuccess={installSetting.onSuccess} />}\n </>\n );\n}\n\nAddBlocklet.propTypes = {};\n\nAddBlocklet.defaultProps = {};\n","/* eslint-disable implicit-arrow-linebreak */\n/* eslint-disable object-curly-newline */\n/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { useState, useContext, useEffect } from 'react';\nimport styled from 'styled-components';\nimport useLocalStorage from 'react-use/lib/useLocalStorage';\nimport { Link, useLocation, useHistory } from 'react-router-dom';\nimport prettyMs from 'pretty-ms-i18n';\nimport semver from 'semver';\n\nimport MaterialTable from 'material-table';\nimport Typography from '@material-ui/core/Typography';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Box from '@material-ui/core/Box';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nimport Alert from '@arcblock/ux/lib/Alert';\nimport Toast from '@arcblock/ux/lib/Toast';\nimport Button from '@arcblock/ux/lib/Button';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport { getRequiredMissingConfigs } from '@blocklet/meta/lib/util';\n\nimport { useNodeContext } from '../../contexts/node';\nimport { useBlockletContext } from '../../contexts/blocklets';\nimport { formatError, formatToDatetime, formatLocale } from '../../libs/util';\n\nimport tableIcons from '../../components/table-icons';\nimport blockletIcons from '../../components/blocklet/icons';\nimport BlockletActions from '../../components/blocklet/actions';\nimport BlockletStatus from '../../components/blocklet/status';\nimport BlockletVersion from '../../components/blocklet/version';\nimport BlockletAvatar from '../../components/blocklet/avatar';\nimport BlockletInterface from '../../components/blocklet/interface';\nimport BlockletAdd from '../../components/blocklet/add';\nimport usePersistentSort from '../../hooks/persistent-sort';\nimport UpTime from '../../components/uptime';\n\nimport TableStyle from '../../components/table';\nimport InstallFromUrl from '../../components/blocklet/install-from-url';\nimport Permission from '../../components/permission';\n\nexport default function BlockletList() {\n const node = useNodeContext();\n const blocklets = useBlockletContext();\n const [error, setError] = useState('');\n const { t, locale } = useContext(LocaleContext);\n const [pageSize, setNewPageSize] = useLocalStorage('ps_blocklets_list', 10);\n\n const { sortDirections, onSortChange } = usePersistentSort('blocklet', ['asc', '', '', '', '', '', '']);\n const [installSetting, setInstallSetting] = useState(null);\n\n const onPageSizeChange = newPageSize => {\n setNewPageSize(newPageSize);\n };\n\n const onActionStart = () => {};\n const onActionComplete = async data => {\n if (data.error) {\n setError(data.error.message);\n return;\n }\n if (data.action === 'remove') {\n node.refresh({ silent: true });\n }\n };\n const isBreakpointsUpMd = useMediaQuery(theme => theme.breakpoints.up('md'));\n const isBreakpointsUpLg = useMediaQuery(theme => theme.breakpoints.up('lg'));\n\n // auto open installFromUrl\n const history = useHistory();\n const { pathname, search } = useLocation();\n useEffect(() => {\n const query = new URLSearchParams(search);\n const action = query.get('action');\n const metaUrl = query.get('url');\n if (action === 'install' && metaUrl) {\n setInstallSetting({\n defaultUrl: metaUrl,\n onCancel: () => history.push(pathname),\n onSuccess: () => history.push(pathname),\n });\n } else {\n setInstallSetting(null);\n }\n }, [search, setInstallSetting, history, pathname]);\n\n let content = null;\n const items = blocklets.data || [];\n\n if (blocklets.loading) {\n content = <Spinner />;\n } else if (blocklets.error) {\n content = (\n <Alert type=\"error\" variant=\"icon\">\n <div>\n {/* message */}\n {formatError(blocklets.error)}\n {/* retry */}\n <Button onClick={() => blocklets.refresh({ silent: false })}>\n <span style={{ color: '#44cdc6', textDecoration: 'underline' }}>{t('common.retry')}</span>\n </Button>\n </div>\n </Alert>\n );\n } else if (items.length > 0) {\n const dateFields = ['installedAt', 'startedAt', 'stoppedAt', 'createdAt'];\n const rows = items.map(x => {\n dateFields.forEach(f => {\n if (x[f]) {\n const date = new Date(x[f]);\n x[f] = date;\n }\n });\n\n return x;\n });\n\n /* eslint-disable indent */\n const columns = isBreakpointsUpMd\n ? [\n {\n title: t('common.name'),\n field: 'meta.title',\n width: 360,\n defaultSort: sortDirections[0],\n customSort: (a, b) => {\n const aSorProperty = a.meta.title || a.meta.name;\n const bSorProperty = b.meta.title || b.meta.name;\n\n if (aSorProperty.toLowerCase() > bSorProperty.toLowerCase()) {\n return 1;\n }\n\n if (aSorProperty.toLowerCase() < bSorProperty.toLowerCase()) {\n return -1;\n }\n\n return 0;\n },\n render: d => {\n const tab = getRequiredMissingConfigs(d).length > 0 ? 'configuration' : 'overview';\n return (\n <Link to={`/blocklets/${d.meta.did}/${tab}`}>\n <Typography component=\"strong\" variant=\"body1\" className=\"blocklet-name\">\n <BlockletAvatar blocklet={d} style={{ marginRight: 8 }} />\n {d.meta.title || d.meta.name}\n </Typography>\n </Link>\n );\n },\n },\n ...(isBreakpointsUpLg\n ? [\n {\n title: t('common.visit'),\n field: 'runtimeInfo.pid',\n sorting: false,\n defaultSort: sortDirections[1],\n render: d => <BlockletInterface blocklet={d} />,\n },\n ]\n : []),\n {\n title: t('common.version'),\n field: 'meta.version',\n width: 120,\n defaultSort: sortDirections[2],\n customSort: (a, b) => {\n const aVersion = a.meta.version;\n const bVersion = b.meta.version;\n\n if (semver.gt(aVersion, bVersion)) {\n return 1;\n }\n\n if (semver.lt(aVersion, bVersion)) {\n return -1;\n }\n\n return 0;\n },\n render: d => <BlockletVersion blocklet={d} />,\n },\n ...(isBreakpointsUpLg\n ? [\n {\n title: t('common.installedAt'),\n defaultSort: sortDirections[3],\n type: 'datetime',\n width: 200,\n customSort: (a, b) => {\n const aSortInstalledAt = +new Date(a.installedAt || a.createdAt);\n const bSortInstalledAt = +new Date(b.installedAt || b.createdAt);\n\n return aSortInstalledAt - bSortInstalledAt;\n },\n render: d => formatToDatetime(d.installedAt || d.createdAt),\n },\n ]\n : []),\n {\n title: t('common.uptime'),\n field: 'runtimeInfo.uptime',\n width: 120,\n defaultSort: sortDirections[4],\n customSort: (a, b) => {\n const aUptime = a.runtimeInfo ? a.runtimeInfo.uptime : 0;\n const bUptime = b.runtimeInfo ? b.runtimeInfo.uptime : 0;\n\n return bUptime - aUptime;\n },\n render: d => {\n // 只在 running 状态展示 uptime\n if (d.status === 'running' && d.runtimeInfo) {\n return (\n <UpTime\n initialTime={Number(d.runtimeInfo.uptime)}\n format={prettyT => {\n const options = { compact: true, locale: formatLocale(locale) };\n\n return prettyMs(prettyT, options);\n }}\n />\n );\n }\n\n return '';\n },\n },\n {\n title: t('common.status'),\n field: 'status',\n width: 120,\n defaultSort: sortDirections[5],\n render: d => <BlockletStatus status-blocklet-did={d.meta.did} key={d.meta.did} status={d.status} />,\n },\n {\n title: t('common.actions'),\n sorting: false,\n width: 90,\n render: d => (\n <BlockletActions\n key={d.meta.did}\n blocklet={d}\n variant=\"menu\"\n onStart={onActionStart}\n onComplete={onActionComplete}\n />\n ),\n },\n ]\n : [\n {\n title: t('common.name'),\n field: 'meta.title',\n defaultSort: sortDirections[0],\n customSort: (a, b) => {\n const aSorProperty = a.meta.title || a.meta.name;\n const bSorProperty = b.meta.title || b.meta.name;\n\n if (aSorProperty.toLowerCase() > bSorProperty.toLowerCase()) {\n return 1;\n }\n\n if (aSorProperty.toLowerCase() < bSorProperty.toLowerCase()) {\n return -1;\n }\n\n return 0;\n },\n render: d => {\n const tab = (d.configs || []).some(x => x.required && !x.value) ? 'configuration' : 'overview';\n return (\n <Box\n className=\"blocklet-item--mobile\"\n display=\"flex\"\n justifyContent=\"space-between\"\n alignItems=\"center\">\n <BlockletAvatar className=\"blocklet__avatar\" blocklet={d} size={isBreakpointsUpMd ? 40 : 60} />\n <Link className=\"blocklet__content\" to={`/blocklets/${d.meta.did}/${tab}`}>\n <Box display=\"flex\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Typography component=\"strong\" variant=\"body1\" className=\"blocklet__name\">\n {d.meta.title || d.meta.name}\n </Typography>\n <BlockletActions\n key={d.meta.did}\n blocklet={d}\n variant=\"menu\"\n onStart={onActionStart}\n onComplete={onActionComplete}\n />\n </Box>\n <Typography component=\"small\" className=\"blocklet__addons\">\n <div>\n <BlockletVersion blocklet={d} />\n </div>\n <BlockletStatus status-blocklet-did={d.meta.did} key={d.meta.did} status={d.status} />\n </Typography>\n </Link>\n </Box>\n );\n },\n },\n ];\n /* eslint-enable indent */\n content = (\n <TableStyle className=\"blocklet-list\">\n <MaterialTable\n title={t('blocklet.index.tableTitle')}\n data={rows}\n icons={{ ...blockletIcons, ...tableIcons }}\n options={{\n header: isBreakpointsUpMd,\n emptyRowsWhenPaging: false,\n actionsColumnIndex: -1,\n tableLayout: 'auto',\n maxBodyHeight: '100%',\n pageSize,\n pageSizeOptions: [10, 20, 50, 100],\n }}\n localization={{\n toolbar: { searchPlaceholder: t('common.search') },\n body: {\n emptyDataSourceMessage: t('common.noData'),\n },\n }}\n onOrderChange={onSortChange}\n onChangeRowsPerPage={onPageSizeChange}\n columns={columns}\n />\n </TableStyle>\n );\n } else if (items.length === 0) {\n content = (\n <>\n <Alert type=\"warning\" variant=\"icon\">\n {t('blocklet.index.noBlocklet')}\n </Alert>\n </>\n );\n }\n\n return (\n <>\n <Main>\n <Typography component=\"h2\" variant=\"h4\" className=\"page-header\" color=\"textPrimary\">\n {t('common.blocklets')}\n <Permission permission=\"mutate_blocklet\">\n <BlockletAdd />\n </Permission>\n </Typography>\n {content}\n {!!error && <Toast variant=\"error\" message={error} onClose={() => setError(null)} />}\n </Main>\n\n {installSetting && (\n <InstallFromUrl\n defaultUrl={installSetting.defaultUrl}\n onCancel={installSetting.onCancel}\n onSuccess={installSetting.onSuccess}\n />\n )}\n </>\n );\n}\n\nconst Main = styled.main`\n .page-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .blocklet-list {\n .blocklet-item--mobile {\n .blocklet__avatar {\n margin-right: -60px;\n }\n .blocklet__content {\n padding-left: 68px;\n flex: 1;\n display: flex;\n flex-direction: column;\n z-index: 1;\n }\n .blocklet__name {\n font-weight: bold;\n text-decoration: none;\n white-space: normal;\n word-break: break-all;\n }\n .blocklet__addons {\n display: flex;\n justify-content: space-between;\n margin-top: 5px;\n margin-bottom: -10px;\n }\n }\n .blocklet-name {\n font-weight: bold;\n text-decoration: underline;\n display: flex;\n align-items: center;\n white-space: normal;\n word-break: break-all;\n }\n\n .blocklet-interface {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n\n img {\n margin-right: 4px;\n }\n }\n\n .MuiToolbar-root {\n display: flex;\n }\n }\n`;\n","export { default } from './ButtonGroup';","import { useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nfunction useMobileWidth() {\n const theme = useTheme();\n const isBreakpointsDownSm = useMediaQuery(theme.breakpoints.down('sm'));\n const minWidth = isBreakpointsDownSm ? 300 : theme.breakpoints.values.sm;\n return { minWidth };\n}\n\nexport default useMobileWidth;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Alert from '@material-ui/lab/Alert';\nimport useTheme from '@material-ui/core/styles/useTheme';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\n\nimport { formatError } from '../libs/util';\nimport useMobileWidth from '../hooks/mobile-width';\n\nexport default function ConfirmDialog({\n title,\n description,\n showCancel,\n cancel,\n confirm,\n color,\n params: initialParams,\n onCancel,\n onConfirm,\n}) {\n const [params, setParams] = useState(initialParams);\n const [open, setOpen] = useState(true);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState('');\n const { t: changeLocale } = useLocaleContext();\n const theme = useTheme();\n\n const onCallback = async cb => {\n if (typeof cb === 'function') {\n setLoading(true);\n try {\n await cb(params);\n setOpen(false);\n } catch (err) {\n setError(formatError(err));\n console.error(err);\n } finally {\n setLoading(false);\n }\n } else {\n setOpen(false);\n }\n };\n\n const t = typeof title === 'function' ? title() : title;\n const d = typeof description === 'function' ? description(params, setParams, setError) : description;\n\n const isBreakpointsDownSm = useMediaQuery(theme.breakpoints.down('sm'));\n\n const handleClick = e => {\n e.stopPropagation();\n };\n const { minWidth } = useMobileWidth();\n\n return (\n <StyledDialog onClick={handleClick} fullScreen={isBreakpointsDownSm} open={open} style={{ minWidth }}>\n <DialogTitle>{t}</DialogTitle>\n <DialogContent style={{ minWidth }}>\n <DialogContentText component=\"div\">{d}</DialogContentText>\n {!!error && (\n <Alert severity=\"error\" style={{ width: '100%', marginTop: 8 }}>\n {error}\n </Alert>\n )}\n </DialogContent>\n <DialogActions className=\"delete-actions\" style={{ padding: '8px 24px 24px' }}>\n {showCancel && (\n <Button\n onClick={e => {\n e.stopPropagation();\n onCallback(onCancel);\n }}\n color=\"default\"\n data-cy=\"cancel-confirm-dialog\"\n rounded\n size=\"small\">\n {cancel || changeLocale('common.cancel')}\n </Button>\n )}\n <Button\n onClick={e => {\n e.stopPropagation();\n onCallback(onConfirm);\n }}\n color={color}\n size=\"small\"\n // eslint-disable-next-line no-underscore-dangle\n disabled={params.__disableConfirm || loading}\n variant=\"contained\"\n data-cy=\"submit-confirm-dialog\"\n autoFocus\n rounded>\n {loading && <Spinner size={[16, 10]} />}\n {confirm}\n </Button>\n </DialogActions>\n </StyledDialog>\n );\n}\n\nConfirmDialog.propTypes = {\n title: PropTypes.any.isRequired,\n description: PropTypes.any.isRequired, // can be a function that renders different content based on params\n showCancel: PropTypes.bool,\n cancel: PropTypes.string,\n color: PropTypes.string,\n confirm: PropTypes.string,\n params: PropTypes.object, // This object holds states managed in the dialog\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func.isRequired,\n};\n\nConfirmDialog.defaultProps = {\n onCancel: () => {},\n showCancel: true,\n cancel: '',\n confirm: 'Confirm',\n color: 'danger',\n params: {},\n};\n\nconst StyledDialog = styled(Dialog)`\n .delete-actions .Mui-disabled {\n color: rgba(0, 0, 0, 0.26) !important;\n box-shadow: none;\n background-color: rgba(0, 0, 0, 0.12) !important;\n }\n`;\n","import Add from '@material-ui/icons/Add';\nimport Check from '@material-ui/icons/Check';\nimport Delete from '@material-ui/icons/Delete';\nimport Clear from '@material-ui/icons/Clear';\nimport Export from '@material-ui/icons/SaveAlt';\nimport Edit from '@material-ui/icons/Edit';\nimport Filter from '@material-ui/icons/Filter';\nimport FirstPage from '@material-ui/icons/FirstPage';\nimport LastPage from '@material-ui/icons/LastPage';\nimport NextPage from '@material-ui/icons/ChevronRight';\nimport PreviousPage from '@material-ui/icons/ChevronLeft';\nimport Search from '@material-ui/icons/Search';\nimport SortArrow from '@material-ui/icons/ArrowDropDown';\nimport ThirdStateCheck from '@material-ui/icons/Remove';\nimport ViewColumn from '@material-ui/icons/ViewColumn';\n\nexport default {\n Add,\n Check,\n Delete,\n Edit,\n Clear,\n DetailPanel: NextPage,\n Filter,\n FirstPage,\n LastPage,\n NextPage,\n PreviousPage,\n Search,\n ResetSearch: Clear,\n SortArrow,\n Export,\n ThirdStateCheck,\n ViewColumn,\n};\n","import styled from 'styled-components';\n\nconst TableStyle = styled.div`\n .MuiPaper-root {\n box-shadow: none !important;\n border: none !important;\n border-radius: 0 !important;\n background: transparent;\n }\n .MuiToolbar-root {\n background: transparent;\n padding-left: 0;\n display: none;\n }\n\n .MuiTableHead-root th {\n min-width: 100px;\n background: transparent;\n }\n\n .MuiTable-root {\n overflow-y: hidden;\n }\n .MuiTableRow-root {\n border: none !important;\n }\n\n .MuiTableCell-root {\n padding-right: 16px;\n &:last-of-type {\n padding-right: 0;\n }\n }\n`;\n\nexport default TableStyle;\n","/* eslint-disable no-await-in-loop */\nconst get = require('lodash/get');\n\nconst forEachBlocklet = (blocklet, cb, { parallel = false, sync } = {}) => {\n // sync\n if (sync) {\n cb(blocklet);\n if (blocklet.children) {\n for (const child of blocklet.children) {\n cb(child);\n }\n }\n return null;\n }\n\n // serial\n if (!parallel) {\n return (async () => {\n await cb(blocklet);\n if (blocklet.children) {\n for (const child of blocklet.children) {\n await cb(child);\n }\n }\n return null;\n })();\n }\n\n // parallel\n const tasks = [];\n tasks.push(cb(blocklet));\n if (blocklet.children) {\n for (const child of blocklet.children) {\n tasks.push(cb(child));\n }\n }\n return Promise.all(tasks);\n};\n\nconst isAuthServiceEnabled = (blocklet) => {\n const interfaces = get(blocklet, 'meta.interfaces') || [];\n const isRootEnabled = interfaces.some((x) => {\n const services = get(x, 'services') || [];\n return services.some((s) => s.name === '@abtnode/auth-service');\n });\n\n if (isRootEnabled) {\n return true;\n }\n\n const children = get(blocklet, 'children') || [];\n for (const child of children) {\n if (isAuthServiceEnabled(child)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst getRequiredMissingConfigs = (blocklet) => {\n const missingConfigs = [];\n const configs = blocklet.configs || [];\n configs.forEach((item) => {\n if (item.required && !item.value) {\n missingConfigs.push({ did: blocklet.meta.did, key: item.key });\n }\n });\n\n // eslint-disable-next-line no-restricted-syntax\n for (const child of blocklet.children || []) {\n const childConfigs = child.configs || [];\n // configProp does not exist in root blocklet config\n // or value of configProp in root blocklet config is empty.\n childConfigs.forEach((x) => {\n if (x.required && !x.value && !configs.some((y) => y.key === x.key && y.value)) {\n missingConfigs.push({ did: child.meta.did, key: x.key });\n }\n });\n }\n\n return missingConfigs;\n};\n\nconst isFreeBlocklet = (meta) => {\n if (!meta.payment) {\n return true;\n }\n\n const priceList = (meta.payment.price || []).map((x) => x.value || 0);\n return priceList.every((x) => x === 0);\n};\n\nconst wipeSensitiveData = (blocklet) => {\n if (!blocklet) {\n return blocklet;\n }\n\n forEachBlocklet(\n blocklet,\n (d) => {\n (d.configs || []).forEach((x) => {\n if (x.secure) {\n x.value = x.value ? '__encrypted__' : '';\n }\n });\n (d.environments || []).forEach((x) => {\n if (['BLOCKLET_APP_SK'].includes(x.key)) {\n x.value = '__encrypted__';\n }\n });\n\n delete blocklet.configObj;\n delete blocklet.environmentObj;\n },\n { sync: true }\n );\n\n return blocklet;\n};\n\nconst isDeletableBlocklet = (blocklet) => {\n if (!blocklet) {\n return false;\n }\n\n const config = blocklet.environments.find((x) => x.key === 'BLOCKLET_DELETABLE');\n if (!config) {\n return true;\n }\n\n return config.value === 'yes';\n};\n\nmodule.exports = {\n isFreeBlocklet,\n isDeletableBlocklet,\n forEachBlocklet,\n isAuthServiceEnabled,\n getRequiredMissingConfigs,\n wipeSensitiveData,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport Dot from '../dot';\nimport Tag from '../tag';\nimport { isInProgress } from '../../libs/util';\n\nconst colors = {\n yellow: '#FFCF71',\n grey: '#888888',\n};\n\nexport default function BlockletStatus({ status, variant, ...rest }) {\n const { t } = useContext(LocaleContext);\n\n const map = {\n added: 'primary',\n waiting: 'warning',\n downloading: 'warning',\n downloaded: 'primary',\n installing: 'warning',\n installed: 'primary',\n starting: 'warning',\n running: 'success',\n stopping: 'warning',\n stopped: 'reverse',\n error: 'error',\n upgrading: 'warning',\n restarting: 'warning',\n corrupted: 'error',\n };\n\n const colorMap = {\n added: colors.grey,\n waiting: colors.yellow,\n downloading: colors.yellow,\n downloaded: colors.grey,\n installing: colors.yellow,\n installed: colors.grey,\n starting: colors.yellow,\n running: 'success',\n stopping: colors.yellow,\n stopped: colors.grey,\n error: 'error',\n upgrading: colors.yellow,\n restarting: colors.yellow,\n corrupted: 'error',\n };\n\n const inProgress = isInProgress(status);\n\n const statusTxt = t(`blocklet.status.${status}`);\n\n if (variant === 'dot') {\n return (\n <Tooltip title={t('blocklet.statusTip', { status: t(`blocklet.status.${status}`) })}>\n <Dot color={colorMap[status]} {...rest} />\n </Tooltip>\n );\n }\n\n return (\n <Tag type={map[status]} style={{ borderRadius: 5, border: '1px solid #ccc' }} {...rest}>\n {inProgress && <Spinner size={[12, 6]} color=\"inherit\" style={{ marginRight: 5 }} />}\n {statusTxt}\n </Tag>\n );\n}\n\nBlockletStatus.propTypes = {\n status: PropTypes.string.isRequired,\n variant: PropTypes.oneOf(['dot', 'tag']),\n};\n\nBlockletStatus.defaultProps = {\n variant: 'tag',\n};\n","import styled from 'styled-components';\n\nconst color = {\n success: '#3ab39d',\n error: '#D0021B',\n};\n\nconst defaultSize = '10px';\n\nconst Dot = styled.div`\n display: inline-block;\n width: ${props => props.size || defaultSize};\n height: ${props => props.size || defaultSize};\n background: ${props => color[props.color] || props.color || color.success};\n border-radius: 100%;\n`;\n\nexport default Dot;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _styledComponents = _interopRequireDefault(require(\"styled-components\"));\n\nvar _ButtonGroup = _interopRequireDefault(require(\"@material-ui/core/ButtonGroup\"));\n\nvar _wrap = _interopRequireDefault(require(\"../Button/wrap\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst sizes = {\n small: 16,\n medium: 18,\n large: 20\n};\n\nconst getBorderRadius = size => sizes[size || 'medium'];\n\nconst StyledButtonGroup = (0, _styledComponents.default)(_ButtonGroup.default).withConfig({\n displayName: \"ButtonGroup__StyledButtonGroup\",\n componentId: \"sc-1popzk9-0\"\n})([\".MuiButton-root:first-of-type{border-radius:\", \"px 0 0 \", \"px;}.MuiButton-root:last-of-type{border-radius:0 \", \"px \", \"px 0;}\"], props => getBorderRadius(props.size), props => getBorderRadius(props.size), props => getBorderRadius(props.size), props => getBorderRadius(props.size));\n\nvar _default = (0, _wrap.default)(StyledButtonGroup);\n\nexports.default = _default;","const langs = new Map();\n\nconst registerLang = (locale, obj) => {\n langs.set(locale, obj);\n};\n\nconst getLang = (locale = 'en_US') => langs.get(locale) || langs.get('en_US');\n\nmodule.exports = {\n registerLang,\n getLang,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport OriTag from '@arcblock/ux/lib/Tag';\n\nexport default function Tag({ children, ...rest }) {\n return (\n <OriTag style={{ borderRadius: 5, border: '1px solid #ccc' }} {...rest}>\n {children}\n </OriTag>\n );\n}\n\nTag.propTypes = {\n children: PropTypes.any.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport joinURL from 'url-join';\n\nimport Avatar from '@material-ui/core/Avatar';\n\nimport { useNodeContext } from '../../contexts/node';\nimport { formatRegistryLogoPath } from '../../libs/util';\n\nexport default function BlockletAvatar({ blocklet, style, size, ...rest }) {\n const node = useNodeContext();\n let logoUrl = joinURL(node.prefix, 'blocklet.png');\n\n if (!blocklet.deployedFrom) {\n blocklet.deployedFrom = node.info.blockletRegistry;\n }\n\n if (blocklet.source === 'registry' && blocklet.meta.logo) {\n logoUrl = joinURL(blocklet.deployedFrom, formatRegistryLogoPath(blocklet.meta.did, blocklet.meta.logo));\n } else {\n const prefix = window.env.apiPrefix || '/';\n logoUrl = joinURL(prefix, `/blocklet/logo/${blocklet.meta.did}`);\n }\n\n const setFallBackUrl = ev => {\n ev.target.src = `${node.prefix}/blocklet.png`;\n };\n\n return (\n <Avatar\n style={Object.assign(\n { backgroundColor: 'transparent', border: '2px solid #ddd', width: size, height: size },\n style\n )}\n {...rest}>\n <img\n src={logoUrl}\n onError={setFallBackUrl}\n alt={blocklet.meta.name}\n style={{ width: size, backgroundColor: '#fff' }}\n />\n </Avatar>\n );\n}\n\nBlockletAvatar.propTypes = {\n blocklet: PropTypes.object.isRequired,\n style: PropTypes.object,\n size: PropTypes.number,\n};\n\nBlockletAvatar.defaultProps = {\n style: {},\n size: 40,\n};\n","import Remove from '@material-ui/icons/Delete';\nimport Start from '@material-ui/icons/PlayArrow';\nimport Stop from '@material-ui/icons/Stop';\nimport Restart from '@material-ui/icons/Replay';\nimport Reload from '@material-ui/icons/Autorenew';\nimport Config from '@material-ui/icons/Settings';\nimport Log from '@material-ui/icons/Receipt';\nimport Group from '@material-ui/icons/Group';\n\nexport default {\n Start,\n Stop,\n Restart,\n Reload,\n Remove,\n Config,\n Log,\n Group,\n};\n","/* eslint-disable no-use-before-define */\nimport useLocalStorage from 'react-use/lib/useLocalStorage';\n\nexport default function usePersistentSort(name, initialDirections) {\n const [sortDirections, setSortDirections] = useLocalStorage(`ps_${name}`, initialDirections);\n\n const onSortChange = (columnIndex, directionValue) => {\n const newSortDirections = directionValue ? new Array(initialDirections.length).fill('') : [...initialDirections];\n\n if (columnIndex > -1) {\n newSortDirections[columnIndex] = directionValue;\n }\n\n setSortDirections(newSortDirections);\n };\n\n return {\n sortDirections, // 当前的排序\n onSortChange, // 给外部的回调,可以更新内部的 sort\n };\n}\n"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(this["webpackJsonp@abtnode/webapp"]=this["webpackJsonp@abtnode/webapp"]||[]).push([[22],{1179:function(e,t,n){"use strict";n.d(t,"a",(function(){return Q}));var a=n(11),r=n.n(a),c=n(19),o=n(13),i=n(117),l=n(0),s=n.n(l),u=n(30),d=n(955),m=n(78),p=n(50),f=n.n(p),b=n(63),v=n(102),h=n.n(v),y=n(22),g=n(990),k=n(342),O=n(64),j=n(972),E=n.n(j),x=n(40),w=n(357),C=n(23);function R(e){var t=Object(w.a)(),n=Object(u.k)(),a=E()("sid:blocklet:purchase:".concat(e)),r=Object(o.a)(a,2),c=r[0],i=r[1],s=Object(l.useState)(!1),d=Object(o.a)(s,2),m=d[0],p=d[1],f=Object(l.useState)(null),b=Object(o.a)(f,2),v=b[0],h=b[1],y=function(){var e=new URL(window.location.href),t=e.pathname,a=e.searchParams,r=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/";a.get("sid")&&(i(""),n.replace(t.replace(r,"/")))},g=!(!t.get("assetDid")||!c||t.get("sid")!==c);return Object(C.c)(x.BlockletEvents.purchaseChange,(function(t){t.did===e&&(h(t.session),["declined","confirmed","error"].includes(t.session.status)&&(p(!0),setTimeout(y,2e3)))})),Object(l.useEffect)((function(){v&&v.id!==c&&i(v.id)}),[v]),{hasCompleted:m,hasPurchased:g,session:v,setSession:h,doRedirect:y}}var P=n(337),S=n(105),L=n.n(S),B=n(320),_=n(939),N=n.n(_),D=n(867),T=n(868),U=n(884),z=n(920),A=n(1151),F=n.n(A),W=n(1152),I=n.n(W),M=n(148),V=n.n(M),q=n(152),H=n.n(q),K=n(53),J=n(29),Y=Object(B.a)((function(){return{dialogAuth:{padding:"0 0 24px !important","& .auth-title":{textAlign:"center !important",marginBottom:"4px !important"},"& .auth-tip--scan":{textAlign:"center !important"}},iconRoot:{minWidth:48}}}));var $=Object(l.forwardRef)((function(e){var t=e.meta,n=e.mode,a=e.onCancel,i=Object(y.useLocaleContext)(),u=i.t,d=i.locale,m=Object(J.c)(),p=m.info,v=m.api,g=Object(K.c)().api,k=Y(),j=Object(l.useState)("both"!==n?n:""),E=Object(o.a)(j,2),x=E[0],w=E[1],C=Object(l.useState)("both"!==n?2:1),P=Object(o.a)(C,2),S=P[0],B=P[1],_=R(t.did),A=_.session,W=_.setSession,M=_.hasCompleted,q=_.doRedirect,$=Object(O.x)(p),G=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/",Q=function(){var e=Object(c.a)(r.a.mark((function e(t){return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==x){e.next=2;break}return e.abrupt("return");case 2:w(t);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),X=function(){var e=Object(c.a)(r.a.mark((function e(){var n,a,o;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(x){e.next=2;break}return e.abrupt("return");case 2:if(2!==S){e.next=4;break}return e.abrupt("return");case 4:return n=JSON.stringify({blockletDid:t.did,registryUrl:p.blockletRegistry,action:x}),e.next=7,v.startSession({input:{data:n}});case 7:a=e.sent,o=a.session,W(o),B(2),"purchase"===x&&setTimeout(Object(c.a)(r.a.mark((function e(){var n,a,c,i,l,s;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(n=new URL(window.location.href)).searchParams.delete("assetDid"),n.searchParams.set("sid",o.id),n.searchParams.set("locale",d),a=encodeURIComponent(n.href),(c=new URL(window.location.href)).pathname=L()(G,"/api/did/verify-purchase/token"),c.searchParams.set("sid",o.id),c.searchParams.set("locale",d),c.searchParams.set("autoConnect","false"),e.next=12,g.get(c.href);case 12:i=e.sent,l=i.data,s=encodeURIComponent(l.url),window.location.href=L()(p.blockletRegistry,"/store/purchase/".concat(t.nftFactory,"?cb=").concat(a,"&nw=").concat(s));case 16:case"end":return e.stop()}}),e)}))),100);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Z=function(){q(),a(),B(1)},ee=[{action:"purchase",title:u("store.purchase.purchase.title"),description:u("store.purchase.purchase.description")},{action:"verify",title:u("store.purchase.verify.title"),description:u("store.purchase.verify.description")}];return 2===S&&"verify"===x&&A?s.a.createElement(V.a,{popup:!0,open:!0,className:k.dialogAuth,action:"verify-purchase",checkFn:g.get,checkTimeout:6e5,socketUrl:g.socketUrl,webWalletUrl:$,extraParams:{locale:d,sid:A.id},onSuccess:function(){setTimeout(a,2e3)},onClose:Z,showDownload:!1,locale:d,messages:{title:u("store.purchase.auth.title"),scan:u("store.purchase.auth.scan"),confirm:u("store.purchase.auth.confirm"),success:u("store.purchase.auth.success")}}):s.a.createElement(N.a,{title:u(x&&2===S?"store.purchase.".concat(x,".title"):"store.purchase.title"),disableBackdropClick:!0,disableEscapeKeyDown:!0,open:!0,fullWidth:!0,onClose:Z},1===S&&s.a.createElement("div",{style:{marginBottom:16}},s.a.createElement(D.a,{className:k.tabPanel},ee.map((function(e){return s.a.createElement(T.a,{button:!0,key:e.action,selected:x===e.action,onClick:function(){return Q(e.action)}},s.a.createElement(z.a,{className:k.iconRoot},"purchase"===e.action?s.a.createElement(F.a,{style:{color:"purchase"===x?H.a.primary.main:"#AAA",fontSize:32}}):s.a.createElement(I.a,{style:{color:"verify"===x?H.a.primary.main:"#AAA",fontSize:32}})),s.a.createElement(U.a,{primary:e.title,secondary:e.description}))}))),s.a.createElement(h.a,{rounded:!0,fullWidth:!0,disabled:!x,variant:"contained",color:"primary",style:{marginTop:16},onClick:X},u("common.next"))),2===S&&"purchase"===x&&s.a.createElement("div",{style:{textAlign:"center"}},!M&&s.a.createElement(f.a,null),s.a.createElement(b.a,{component:"p"},function(){if(A){if("confirmed"===A.status)return u("store.purchase.confirmed");if("declined"===A.status)return u("store.purchase.declined");if("error"===A.status)return A.message}return u("store.purchase.waiting")}())))})),G=["meta","lastVersion","buttonText","registryUrl"];function Q(e){var t=e.meta,n=e.lastVersion,a=e.buttonText,p=e.registryUrl,v=Object(i.a)(e,G),j=Object(m.c)().enqueueSnackbar,E=Object(y.useLocaleContext)().t,x=Object(u.k)(),w=Object(k.b)(),C=w.api,S=w.data.find((function(e){return e.meta.did===t.did}))||{},L=Object(l.useMemo)((function(){return!!S.status}),[S.status]),B=Object(l.useMemo)((function(){var e;return L?null===(e=S.meta)||void 0===e?void 0:e.version:null}),[L,S.meta]),_=!1===Object(d.isFreeBlocklet)(t),N=Object(l.useState)(!1),D=Object(o.a)(N,2),T=D[0],U=D[1],z=R(t.did).hasPurchased,A=Object(l.useState)(!1),F=Object(o.a)(A,2),W=F[0],I=F[1],M=Object(l.useMemo)((function(){return T?E(L?"blocklet.status.upgrading":_?"blocklet.status.purchasing":"blocklet.status.waiting"):Object(O.A)(S.status)?E("common.".concat(S.status)):""}),[T,S.status,L,E,_]),V=Object(l.useMemo)((function(){return!(!n||!B)&&!(!n||!Object(g.gt)(n,B))}),[n,B]),q=Object(l.useMemo)((function(){return V?a.upgrade:L?a.open:_?a.purchase:a.install}),[L,V,_,a]),H=Object(l.useMemo)((function(){return!(L&&!V)}),[L,V]),K=function(){var e=Object(c.a)(r.a.mark((function e(n){var a;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.preventDefault(),n.stopPropagation(),e.prev=2,U(!0),L||!_){e.next=7;break}return I(!0),e.abrupt("return");case 7:return a=L?"upgradeBlocklet":"installBlocklet",e.next=10,C[a]({input:{did:t.did,registryUrl:p}});case 10:e.next=16;break;case 12:e.prev=12,e.t0=e.catch(2),j(Object(O.g)(e.t0),{autoHideDuration:5e3,variant:"error"}),console.error("Blocklet installed failed",e.t0);case 16:return e.prev=16,U(!1),e.finish(16);case 19:case"end":return e.stop()}}),e,null,[[2,12,16,19]])})));return function(t){return e.apply(this,arguments)}}(),J=function(e){var n=e.disabled;return s.a.createElement(h.a,Object.assign({key:t.did,onClick:K,size:"small",disabled:Boolean(M||n),variant:"contained",color:"primary","data-cy":"install-blocklet",rounded:!0},v),M?s.a.createElement(s.a.Fragment,null,s.a.createElement(f.a,{size:[16,10],style:{marginRight:3}}),M):q)};J.defaultProps={disabled:!1};return s.a.createElement(s.a.Fragment,null,s.a.createElement("div",null,H?s.a.createElement(P.a,{permission:"mutate_blocklet"},(function(e){return s.a.createElement(J,{disabled:!e})})):s.a.createElement(h.a,{rounded:!0,className:"action-button",variant:"contained",color:"primary",size:"small",disabled:Boolean(M),"data-cy":"open-blocklet",onClick:function(e){var n;e.preventDefault(),e.stopPropagation(),x.push("/blocklets/".concat(t.did,"/").concat((n=S)&&(n.configs||[]).some((function(e){return e.required&&!e.value}))?"configuration":"overview"))}},M?s.a.createElement(s.a.Fragment,null,s.a.createElement(f.a,{size:[16,10],style:{marginRight:3}}),M):q),L&&_&&s.a.createElement(b.a,{component:"small",style:{fontSize:12,color:"#666",marginLeft:4}},E("blocklet.status.purchased"))),(z&&!L||W)&&s.a.createElement($,{meta:t,mode:z?"purchase":"both",onCancel:function(){U(!1),I(!1)}}))}Q.defaultProps={lastVersion:""}},1538:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return Re}));var a=n(32),r=n(365),c=n(57),o=n(11),i=n.n(o),l=n(19),s=n(13),u=n(0),d=n.n(u),m=n(14),p=n(356),f=n.n(p),b=n(972),v=n.n(b),h=n(59),y=n(1321),g=n.n(y),k=n(50),O=n.n(k),j=n(63),E=n(296),x=n(926),w=n(894),C=n(536),R=n.n(C),P=n(1324),S=n.n(P),L=n(1325),B=n.n(L),_=n(339),N=n.n(_),D=n(954),T=n.n(D),U=n(102),z=n.n(U),A=n(975),F=n.n(A),W=n(22),I=n(117),M=n(105),V=n.n(M),q=n(880),H=n(320),K=n(8),J=n(1322),Y=n.n(J),$=n(64),G=n(29),Q=n(1179),X=["blocklets"],Z=Object(H.a)((function(e){return{root:{backgroundColor:"transparent!important","& .MuiButton-root:not(.Mui-disabled)":{backgroundColor:Object(K.j)(e.palette.primary.main,.94),color:e.palette.primary.main,position:"relative","&::after":{content:'""',position:"absolute",top:"50%",left:"50%",width:"150%",height:"150%",transform:"translate(-50%, -50%)"}}}}}));function ee(e){var t,n=e.x,a=e.lastVersion,r=Object(u.useContext)(W.LocaleContext).t,c=Z(),o=Object(G.c)(),i=V()(o.prefix,"blocklet.png"),l=o.info.blockletRegistry;if(l.startsWith("http")&&n.logo)i=V()(l,Object($.k)(n.did,n.logo));else{var s=(window.env.apiPrefix||"/").replace(/^\/+/,"").replace(/\/+$/,"");s&&(s="/".concat(s)),i=V()(s,"/blocklet/logo/".concat(n.did))}return d.a.createElement(Y.a,{title:n.title||n.name,description:n.description,cover:i,addons:[{icon:"cube",value:"v".concat(n.version)},{icon:"clock",value:Object($.n)(n.lastPublishedAt)},{icon:"cloud-download",value:(null===(t=n.stats)||void 0===t?void 0:t.downloads)||0,pretty:!0}],button:d.a.createElement("div",{className:c.root},d.a.createElement(Q.a,{meta:n,lastVersion:a,buttonText:{purchase:r("common.purchase"),open:r("common.open"),install:r("common.install"),upgrade:r("common.upgrade")},registryUrl:l}))})}function te(e){var t=e.blocklets,n=Object(I.a)(e,X),a=t.reduce((function(e,t){var n=t.did,a=t.version;return e[n]=a,e}),{}),r=function(e){return!!e.currentTarget.contains(e.target)||(e.preventDefault(),!1)};return d.a.createElement("div",n,d.a.createElement(q.a,{container:!0,spacing:4},t.map((function(e){return d.a.createElement(q.a,{item:!0,lg:4,md:6,sm:6,xs:12,key:e.did,"data-blocklet-did":e.did},d.a.createElement(h.Link,{to:"/store/".concat(e.did),"data-cy":"blocklet-item",style:{color:"initial"},onClick:r},d.a.createElement(ee,{x:e,lastVersion:a[e.did]})))}))))}ee.defaultProps={lastVersion:""},te.defaultProps={};var ne=n(78),ae=n(939),re=n.n(ae),ce=n(867),oe=n(868),ie=n(884),le=n(920),se=n(921),ue=n(968),de=n.n(ue),me=n(915),pe=n(938),fe=n.n(pe),be=Object(H.a)((function(e){return{addMenuItemRoot:{justifyContent:"center",color:e.palette.primary.main,lineHeight:"3.2"}}}));function ve(e){var t=e.disabled,n=Object(G.c)(),a=n.api,r=n.info,c=Object(u.useState)(!1),o=Object(s.a)(c,2),m=o[0],p=o[1],f=Object(u.useState)(!0),b=Object(s.a)(f,2),v=b[0],h=b[1],y=Object(u.useState)(!1),g=Object(s.a)(y,2),k=g[0],E=g[1],x=Object(u.useState)(""),C=Object(s.a)(x,2),R=C[0],P=C[1],S=Object(u.useState)(""),L=Object(s.a)(S,2),B=L[0],_=L[1],D=Object(W.useLocaleContext)().t,T=be(),U=function(){var e=Object(l.a)(i.a.mark((function e(){var t,n,c;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:p(!0),e.prev=1,t=decodeURIComponent(R.trim()),n=!1,/^https?:\/\//.test(t)||(t="https://".concat(t),n=!0),e.prev=6,new URL(t),e.next=13;break;case 10:throw e.prev=10,e.t0=e.catch(6),new Error("Invalid Blocklet Store URL");case 13:if(!r.blockletRegistryList.some((function(e){return[R,t].includes(e.url)}))){e.next=15;break}throw new Error(D("store.blockletRegistry.haveSameRegistry"));case 15:return e.next=17,a.addBlockletRegistry({input:{url:n?"https://".concat(R):R}});case 17:window.location.reload(),e.next=24;break;case 20:e.prev=20,e.t1=e.catch(1),c="".concat(D("store.blockletRegistry.addFailed")," ").concat(Object($.g)(e.t1)),_(c);case 24:return e.prev=24,p(!1),e.finish(24);case 27:case"end":return e.stop()}}),e,null,[[1,20,24,27],[6,10]])})));return function(){return e.apply(this,arguments)}}();return d.a.createElement(d.a.Fragment,null,d.a.createElement(oe.a,{button:!0,disabled:t,className:T.addMenuItemRoot,onClick:function(){E(!0)}},d.a.createElement(fe.a,{fontSize:"small"}),d.a.createElement(j.a,{variant:"inherit"},D("store.blockletRegistry.addRegistry"))),d.a.createElement(re.a,{title:D("store.blockletRegistry.addRegistry"),fullWidth:!0,maxWidth:"md",open:k,onClose:function(){return E(!1)},PaperProps:{style:{minHeight:"auto"}},actions:d.a.createElement(d.a.Fragment,null,d.a.createElement(z.a,{onClick:function(e){e.stopPropagation(),E(!1)},color:"default",rounded:!0,size:"small"},D("common.cancel")),d.a.createElement(z.a,{onClick:function(e){e.stopPropagation(),U()},color:"primary",size:"small","data-cy":"install-blocklet-next-step",disabled:m||!R||v,variant:"contained",autoFocus:!0,rounded:!0},m&&d.a.createElement(O.a,{size:[16,10]}),D("common.confirm")))},d.a.createElement("div",{style:{paddingTop:12,overflowY:"hidden"}},d.a.createElement(me.a,{component:"div"},d.a.createElement(j.a,{component:"div"},d.a.createElement(w.a,{label:D("store.blockletRegistry.registryUrl"),autoComplete:"off",variant:"outlined",name:"url",fullWidth:!0,value:R,onChange:function(e){_(null);var t=!1;e.target.value.trim()||(t=!0),e.target.value.trim()||_(D("store.blockletRegistry.registryUrlEmpty")),P(e.target.value),h(t)},disabled:m,onKeyPress:function(e){"Enter"===e.key&&(e.preventDefault(),e.target.value.trim()?U():_(D("store.blockletRegistry.registryUrlEmpty")))}})))),!!B&&d.a.createElement(N.a,{type:"error",style:{width:"100%"}},B)))}ve.defaultProps={disabled:!1};var he=n(180),ye=n(1323),ge=n.n(ye),ke=n(988);function Oe(e){var t=Object(ne.c)().enqueueSnackbar,n=Object(G.c)().api,a=Object(W.useLocaleContext)().t,r=Object(u.useState)(!1),c=Object(s.a)(r,2),o=c[0],m=c[1],p=Object(u.useState)(null),f=Object(s.a)(p,2),b=f[0],v=f[1],h=e.blockletRegistry,y=function(){var e=Object(l.a)(i.a.mark((function e(){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,m(!0),e.next=4,n.deleteBlockletRegistry({input:{url:h.url}});case 4:window.location.reload(),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),t("Remove Blocklet Store Error: ".concat(Object($.g)(e.t0)),{autoHideDuration:2e3,variant:"error"});case 10:return e.prev=10,m(!1),v(null),e.finish(10);case 14:case"end":return e.stop()}}),e,null,[[0,7,10,14]])})));return function(){return e.apply(this,arguments)}}(),g={keyName:h.url,title:a("store.blockletRegistry.deleteRegistry"),description:a("store.blockletRegistry.deleteDesc",{name:"<b>".concat(h.url,"</b>")}),confirmPlaceholder:a("store.blockletRegistry.confirmDesc",{name:h.url}),confirm:a("common.delConfirm"),cancel:a("common.cancel"),onConfirm:y,onCancel:function(){m(!1),v(null)}};return d.a.createElement(d.a.Fragment,null,d.a.createElement(he.a,{disabled:o,onClick:function(e){e.stopPropagation(),v(g)}},d.a.createElement(ge.a,null)),b&&d.a.createElement(ke.a,{keyName:b.keyName,title:b.title,description:b.description,confirmPlaceholder:b.confirmPlaceholder,confirm:b.confirm,cancel:b.cancel,params:b.params,onConfirm:b.onConfirm,onCancel:b.onCancel}))}var je=n(337),Ee=Object(H.a)((function(){return{buttonText:{textTransform:"none !important"},iconRoot:{minWidth:24},menuName:{display:"flex",flexDirection:"column",marginRight:"100px","& span":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}}}));var xe,we=Object(u.forwardRef)((function(e,t){var n=Object(G.c)(),a=n.api,r=n.info,c=Object(W.useLocaleContext)().t,o=Object(ne.c)().enqueueSnackbar,m=Object(u.useState)(!1),p=Object(s.a)(m,2),f=p[0],b=p[1],v=Object(u.useState)(!1),h=Object(s.a)(v,2),y=h[0],g=h[1],k=d.a.useState(-1),E=Object(s.a)(k,2),x=E[0],w=E[1],C=Ee(),R=r.blockletRegistryList.findIndex((function(e){return e.selected})),P=function(){var e=Object(l.a)(i.a.mark((function e(t){var n;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,b(!0),w(t),n=r.blockletRegistryList[t],e.next=6,a.selectBlockletRegistry({input:{url:n.url}});case 6:window.location.reload(),e.next=14;break;case 9:e.prev=9,e.t0=e.catch(0),console.error(e.t0),b(!1),o("".concat(c("store.blockletRegistry.changeFailed")," ").concat(Object($.g)(e.t0)),{autoHideDuration:2e3,variant:"error"});case 14:case"end":return e.stop()}}),e,null,[[0,9]])})));return function(t){return e.apply(this,arguments)}}();return Object(u.useImperativeHandle)(t,(function(){return{setOpen:g}})),d.a.createElement(d.a.Fragment,null,d.a.createElement(je.a,{permission:"mutate_node"},(function(e){return d.a.createElement(z.a,{disabled:!e,classes:{text:C.buttonText},color:"secondary","data-cy":"store-toggle",onClick:function(){g(!0)},endIcon:d.a.createElement(de.a,null)},d.a.createElement(j.a,{color:"secondary"},r.blockletRegistryList[R].name))})),d.a.createElement(re.a,{title:c("store.blockletRegistry.switchRegistry"),disableBackdropClick:!0,disableEscapeKeyDown:!0,disablePortal:!1,fullWidth:!0,open:y,onClose:function(){return g(!1)}},d.a.createElement(ce.a,{className:C.tabPanel},r.blockletRegistryList.map((function(e,t){return d.a.createElement(oe.a,{button:!0,disabled:f,key:e.url,selected:R===t,"data-cy":"store-switch",onClick:function(){f||(t!==R?P(t):g(!1))}},d.a.createElement(le.a,{className:C.iconRoot},x===t&&f&&d.a.createElement(O.a,{size:[16,10]})),d.a.createElement(ie.a,null,d.a.createElement("div",{className:C.menuName},d.a.createElement(j.a,{component:"span",variant:"subtitle1",style:{fontWeight:"500"}},e.name),d.a.createElement(j.a,{className:"url",component:"span",variant:"inherit"},"".concat(e.url))),d.a.createElement(se.a,null,!e.protected&&d.a.createElement(Oe,{blockletRegistry:e}))))})),d.a.createElement(ve,{disabled:f}))))})),Ce=function(e){return"desc"===e.direction?d.a.createElement(S.a,null):d.a.createElement(B.a,null)};function Re(){var e=Object(G.c)(),t=e.api,n=e.info,a=Object(u.useContext)(W.LocaleContext).t,o=Object(u.useState)(""),m=Object(s.a)(o,2),p=m[0],b=m[1],y=v()("directions",{title:"asc",popularity:"desc"}),k=Object(s.a)(y,2),C=k[0],P=k[1],S=v()("popularity","popularity"),L=Object(s.a)(S,2),B=L[0],_=L[1],D=n.blockletRegistryList.find((function(e){return e.selected})),U=f()(Object(l.a)(i.a.mark((function e(){var n,a;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.listBlocklets({input:{registryUrl:D.url}});case 2:return n=e.sent,a=n.blocklets,e.abrupt("return",a);case 5:case"end":return e.stop()}}),e)})))),A=(U.value||[]).map((function(e){return e.searchContent=[e.title,e.name,e.description].filter(Boolean).join("").toLocaleLowerCase().replace(/\s/g,""),e})),I=Object(u.useMemo)((function(){var e=function(e){return e.title||e.name},t=function(e){return e.stats.downloads},n=p.toLowerCase().replace(/\s/g,"");return g()(A.filter((function(e){return e.searchContent.includes(n)})),"title"===B?[e,t]:[t,e],"title"===B?[C.title,C.popularity]:[C.popularity,C.title])}),[A,p,C,B]),M=function(e,t){var n="desc"===t?"asc":"desc";P(Object(c.a)(Object(c.a)({},C),{},Object(r.a)({},e,n))),_(e)},V=Object(u.useRef)(null),q=null;return q=I.length?d.a.createElement(te,{blocklets:I}):U.error?d.a.createElement(N.a,{type:"error",variant:"icon"},d.a.createElement("div",null,Object($.g)(U.error),d.a.createElement(h.Link,{style:{marginLeft:"12px"},to:"/settings/basic",onClick:function(e){V.current.setOpen(!0),e.preventDefault()}},"Change Registry",">>"))):U.loading?d.a.createElement(O.a,null):d.a.createElement(T.a,null,a("common.emptyData")),d.a.createElement(Pe,null,d.a.createElement(x.a,{separator:"\u203a","aria-label":"breadcrumb",className:"page-breadcrumb"},d.a.createElement(j.a,{color:"textPrimary"},a("common.store")),d.a.createElement(we,{ref:V})),d.a.createElement(E.a,{className:"store-header",display:"flex",justifyContent:"space-between",p:0,m:0},d.a.createElement(j.a,{component:"h2",variant:"h4",className:"page-header",color:"textPrimary"},a("store.headerDescription")),d.a.createElement(E.a,{mt:0,display:"flex",alignItems:"center"},d.a.createElement(w.a,{size:"small",placeholder:a("common.search"),style:{marginRight:"15px"},value:p,defaultValue:p,onChange:function(e){return b(e.target.value)},"data-cy":"search",InputProps:{startAdornment:d.a.createElement(R.a,{name:"search",size:16,style:{marginRight:"6px",marginBottom:"6px"}}),endAdornment:d.a.createElement("span",{onClick:function(){return b("")},style:{margin:"0 5px 6px 6px",cursor:"pointer"},"data-cy":"search-delete"},d.a.createElement(R.a,{name:"times",size:16}))}}),d.a.createElement(F.a,{size:"small",color:"primary","aria-label":"split button",style:{whiteSpace:"nowrap"}},d.a.createElement(z.a,{onClick:function(){return M("popularity",C.popularity)},endIcon:d.a.createElement(Ce,{direction:C.popularity}),className:"sort-button",color:"secondary",variant:"popularity"===B?"contained":"outlined"},a("store.popularSort")),d.a.createElement(z.a,{onClick:function(){return M("title",C.title)},endIcon:d.a.createElement(Ce,{direction:C.title}),className:"sort-button",color:"secondary",variant:"title"===B?"contained":"outlined"},a("store.nameSort"))))),q)}Ce.defaultProps={direction:"asc"};var Pe=m.default.main(xe||(xe=Object(a.a)(["\n .sort-button {\n border-radius: 0 !important;\n }\n\n @media (max-width: ","px) {\n .store-header {\n flex-direction: column;\n margin-bottom: 32px !important;\n }\n\n .page-header {\n margin-bottom: 16px !important;\n }\n }\n"])),(function(e){return e.theme.breakpoints.values.sm}))},931:function(e,t,n){"use strict";n.d(t,"a",(function(){return S}));var a=n(32),r=n(11),c=n.n(r),o=n(19),i=n(13),l=n(0),s=n.n(l),u=n(14),d=n(445),m=n(50),p=n.n(m),f=n(876),b=n(446),v=n(915),h=n(916),y=n(925),g=n(993),k=n.n(g),O=n(324),j=n(22),E=n(102),x=n.n(E),w=n(64),C=n(17);var R,P=function(){var e=Object(C.a)();return{minWidth:Object(O.a)(e.breakpoints.down("sm"))?300:e.breakpoints.values.sm}};function S(e){var t=e.title,n=e.description,a=e.showCancel,r=e.cancel,u=e.confirm,d=e.color,m=e.params,g=e.onCancel,E=e.onConfirm,C=Object(l.useState)(m),R=Object(i.a)(C,2),S=R[0],B=R[1],_=Object(l.useState)(!0),N=Object(i.a)(_,2),D=N[0],T=N[1],U=Object(l.useState)(!1),z=Object(i.a)(U,2),A=z[0],F=z[1],W=Object(l.useState)(""),I=Object(i.a)(W,2),M=I[0],V=I[1],q=Object(j.useLocaleContext)().t,H=k()(),K=function(){var e=Object(o.a)(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!==typeof t){e.next=17;break}return F(!0),e.prev=2,e.next=5,t(S);case 5:T(!1),e.next=12;break;case 8:e.prev=8,e.t0=e.catch(2),V(Object(w.g)(e.t0)),console.error(e.t0);case 12:return e.prev=12,F(!1),e.finish(12);case 15:e.next=18;break;case 17:T(!1);case 18:case"end":return e.stop()}}),e,null,[[2,8,12,15]])})));return function(t){return e.apply(this,arguments)}}(),J="function"===typeof t?t():t,Y="function"===typeof n?n(S,B,V):n,$=Object(O.a)(H.breakpoints.down("sm")),G=P().minWidth;return s.a.createElement(L,{onClick:function(e){e.stopPropagation()},fullScreen:$,open:D,style:{minWidth:G}},s.a.createElement(h.a,null,J),s.a.createElement(b.a,{style:{minWidth:G}},s.a.createElement(v.a,{component:"div"},Y),!!M&&s.a.createElement(y.a,{severity:"error",style:{width:"100%",marginTop:8}},M)),s.a.createElement(f.a,{className:"delete-actions",style:{padding:"8px 24px 24px"}},a&&s.a.createElement(x.a,{onClick:function(e){e.stopPropagation(),K(g)},color:"default","data-cy":"cancel-confirm-dialog",rounded:!0,size:"small"},r||q("common.cancel")),s.a.createElement(x.a,{onClick:function(e){e.stopPropagation(),K(E)},color:d,size:"small",disabled:S.__disableConfirm||A,variant:"contained","data-cy":"submit-confirm-dialog",autoFocus:!0,rounded:!0},A&&s.a.createElement(p.a,{size:[16,10]}),u)))}S.defaultProps={onCancel:function(){},showCancel:!0,cancel:"",confirm:"Confirm",color:"danger",params:{}};var L=Object(u.default)(d.a)(R||(R=Object(a.a)(["\n .delete-actions .Mui-disabled {\n color: rgba(0, 0, 0, 0.26) !important;\n box-shadow: none;\n background-color: rgba(0, 0, 0, 0.12) !important;\n }\n"])))},946:function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var a=n(117),r=n(0),c=n.n(r),o=n(977),i=n.n(o),l=n(22),s=["children"];function u(e){var t=e.children,n=Object(a.a)(e,s),o=Object(r.useContext)(l.LocaleContext).t;return c.a.createElement(i.a,Object.assign({tip:o("common.copyTip"),copiedTip:o("common.copiedTip")},n),t)}},955:function(e,t,n){var a=n(11),r=n(262),c=n(966),o=n(532),i=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=n.parallel,i=void 0!==o&&o,l=n.sync;if(l){if(t(e),e.children){var s,u=c(e.children);try{for(u.s();!(s=u.n()).done;){var d=s.value;t(d)}}catch(v){u.e(v)}finally{u.f()}}return null}if(!i)return r(a.mark((function n(){var r,o,i;return a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,t(e);case 2:if(!e.children){n.next=20;break}r=c(e.children),n.prev=4,r.s();case 6:if((o=r.n()).done){n.next=12;break}return i=o.value,n.next=10,t(i);case 10:n.next=6;break;case 12:n.next=17;break;case 14:n.prev=14,n.t0=n.catch(4),r.e(n.t0);case 17:return n.prev=17,r.f(),n.finish(17);case 20:return n.abrupt("return",null);case 21:case"end":return n.stop()}}),n,null,[[4,14,17,20]])})))();var m=[];if(m.push(t(e)),e.children){var p,f=c(e.children);try{for(f.s();!(p=f.n()).done;){var b=p.value;m.push(t(b))}}catch(v){f.e(v)}finally{f.f()}}return Promise.all(m)};e.exports={isFreeBlocklet:function(e){return!e.payment||(e.payment.price||[]).map((function(e){return e.value||0})).every((function(e){return 0===e}))},forEachBlocklet:i,isAuthServiceEnabled:function e(t){if((o(t,"meta.interfaces")||[]).some((function(e){return(o(e,"services")||[]).some((function(e){return"@abtnode/auth-service"===e.name}))})))return!0;var n,a=o(t,"children")||[],r=c(a);try{for(r.s();!(n=r.n()).done;){if(e(n.value))return!0}}catch(i){r.e(i)}finally{r.f()}return!1},getRequiredMissingConfigs:function(e){var t=[],n=e.configs||[];n.forEach((function(n){n.required&&!n.value&&t.push({did:e.meta.did,key:n.key})}));var a,r=c(e.children||[]);try{var o=function(){var e=a.value;(e.configs||[]).forEach((function(a){!a.required||a.value||n.some((function(e){return e.key===a.key&&e.value}))||t.push({did:e.meta.did,key:a.key})}))};for(r.s();!(a=r.n()).done;)o()}catch(i){r.e(i)}finally{r.f()}return t},wipeSensitiveData:function(e){return e?(i(e,(function(t){(t.configs||[]).forEach((function(e){e.secure&&(e.value=e.value?"__encrypted__":"")})),(t.environments||[]).forEach((function(e){["BLOCKLET_APP_SK"].includes(e.key)&&(e.value="__encrypted__")})),delete e.configObj,delete e.environmentObj}),{sync:!0}),e):e}}},988:function(e,t,n){"use strict";n.d(t,"a",(function(){return m}));var a=n(57),r=n(0),c=n.n(r),o=n(63),i=n(894),l=n(925),s=n(22),u=n(946),d=n(931);function m(e){var t=e.title,n=e.description,r=e.confirmPlaceholder,m=e.cancel,p=e.confirm,f=e.params,b=e.onCancel,v=e.onConfirm,h=e.keyName,y=Object(s.useLocaleContext)().t,g={title:function(){return c.a.createElement("div",null,t," (".concat(h,")"))},description:function(e,t){return c.a.createElement("div",null,c.a.createElement(l.a,{severity:"warning",style:{width:"100%"}},y("common.notice")),c.a.createElement("div",{style:{marginTop:24,marginBottom:24},dangerouslySetInnerHTML:{__html:n}}),c.a.createElement("div",{style:{marginBottom:24}},y("common.click"),"\uff1a",c.a.createElement(u.a,{"data-cy":"click-copy"},h)),c.a.createElement(o.a,{component:"div"},c.a.createElement(i.a,{label:r,autoComplete:"off","data-cy":"delete-confirm-input",variant:"outlined",fullWidth:!0,autoFocus:!0,value:e.inputVal,onChange:function(n){var r;r=Object(a.a)(Object(a.a)({},e),{},{inputVal:n.target.value,__disableConfirm:h!==n.target.value}),t(Object(a.a)(Object(a.a)({},r),{},{__disableConfirm:r.__disableConfirm}))}})))},confirm:p,cancel:m,onConfirm:v,onCancel:b,params:Object(a.a)({inputVal:"",__disableConfirm:!0},f)};return c.a.createElement(d.a,{title:g.title,description:g.description,confirm:g.confirm,cancel:g.cancel,params:g.params,onConfirm:g.onConfirm,onCancel:g.onCancel})}m.defaultProps={onCancel:function(){},cancel:"",confirm:"Confirm",params:{}}}}]);
|
|
2
|
-
//# sourceMappingURL=22.
|
|
1
|
+
(this["webpackJsonp@abtnode/webapp"]=this["webpackJsonp@abtnode/webapp"]||[]).push([[22],{1179:function(e,t,n){"use strict";n.d(t,"a",(function(){return Q}));var a=n(11),r=n.n(a),c=n(19),o=n(13),i=n(117),l=n(0),s=n.n(l),u=n(30),d=n(955),m=n(78),p=n(50),f=n.n(p),b=n(63),v=n(102),h=n.n(v),y=n(22),g=n(990),k=n(342),O=n(64),j=n(972),E=n.n(j),x=n(40),w=n(357),C=n(23);function R(e){var t=Object(w.a)(),n=Object(u.k)(),a=E()("sid:blocklet:purchase:".concat(e)),r=Object(o.a)(a,2),c=r[0],i=r[1],s=Object(l.useState)(!1),d=Object(o.a)(s,2),m=d[0],p=d[1],f=Object(l.useState)(null),b=Object(o.a)(f,2),v=b[0],h=b[1],y=function(){var e=new URL(window.location.href),t=e.pathname,a=e.searchParams,r=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/";a.get("sid")&&(i(""),n.replace(t.replace(r,"/")))},g=!(!t.get("assetDid")||!c||t.get("sid")!==c);return Object(C.c)(x.BlockletEvents.purchaseChange,(function(t){t.did===e&&(h(t.session),["declined","confirmed","error"].includes(t.session.status)&&(p(!0),setTimeout(y,2e3)))})),Object(l.useEffect)((function(){v&&v.id!==c&&i(v.id)}),[v]),{hasCompleted:m,hasPurchased:g,session:v,setSession:h,doRedirect:y}}var P=n(337),S=n(105),L=n.n(S),B=n(320),_=n(939),N=n.n(_),D=n(867),T=n(868),U=n(884),z=n(920),A=n(1151),F=n.n(A),W=n(1152),I=n.n(W),M=n(148),V=n.n(M),q=n(152),H=n.n(q),K=n(53),J=n(29),Y=Object(B.a)((function(){return{dialogAuth:{padding:"0 0 24px !important","& .auth-title":{textAlign:"center !important",marginBottom:"4px !important"},"& .auth-tip--scan":{textAlign:"center !important"}},iconRoot:{minWidth:48}}}));var $=Object(l.forwardRef)((function(e){var t=e.meta,n=e.mode,a=e.onCancel,i=Object(y.useLocaleContext)(),u=i.t,d=i.locale,m=Object(J.c)(),p=m.info,v=m.api,g=Object(K.c)().api,k=Y(),j=Object(l.useState)("both"!==n?n:""),E=Object(o.a)(j,2),x=E[0],w=E[1],C=Object(l.useState)("both"!==n?2:1),P=Object(o.a)(C,2),S=P[0],B=P[1],_=R(t.did),A=_.session,W=_.setSession,M=_.hasCompleted,q=_.doRedirect,$=Object(O.x)(p),G=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/",Q=function(){var e=Object(c.a)(r.a.mark((function e(t){return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==x){e.next=2;break}return e.abrupt("return");case 2:w(t);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),X=function(){var e=Object(c.a)(r.a.mark((function e(){var n,a,o;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(x){e.next=2;break}return e.abrupt("return");case 2:if(2!==S){e.next=4;break}return e.abrupt("return");case 4:return n=JSON.stringify({blockletDid:t.did,registryUrl:p.blockletRegistry,action:x}),e.next=7,v.startSession({input:{data:n}});case 7:a=e.sent,o=a.session,W(o),B(2),"purchase"===x&&setTimeout(Object(c.a)(r.a.mark((function e(){var n,a,c,i,l,s;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(n=new URL(window.location.href)).searchParams.delete("assetDid"),n.searchParams.set("sid",o.id),n.searchParams.set("locale",d),a=encodeURIComponent(n.href),(c=new URL(window.location.href)).pathname=L()(G,"/api/did/verify-purchase/token"),c.searchParams.set("sid",o.id),c.searchParams.set("locale",d),c.searchParams.set("autoConnect","false"),e.next=12,g.get(c.href);case 12:i=e.sent,l=i.data,s=encodeURIComponent(l.url),window.location.href=L()(p.blockletRegistry,"/store/purchase/".concat(t.nftFactory,"?cb=").concat(a,"&nw=").concat(s));case 16:case"end":return e.stop()}}),e)}))),100);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Z=function(){q(),a(),B(1)},ee=[{action:"purchase",title:u("store.purchase.purchase.title"),description:u("store.purchase.purchase.description")},{action:"verify",title:u("store.purchase.verify.title"),description:u("store.purchase.verify.description")}];return 2===S&&"verify"===x&&A?s.a.createElement(V.a,{popup:!0,open:!0,className:k.dialogAuth,action:"verify-purchase",checkFn:g.get,checkTimeout:6e5,socketUrl:g.socketUrl,webWalletUrl:$,extraParams:{locale:d,sid:A.id},onSuccess:function(){setTimeout(a,2e3)},onClose:Z,showDownload:!1,locale:d,messages:{title:u("store.purchase.auth.title"),scan:u("store.purchase.auth.scan"),confirm:u("store.purchase.auth.confirm"),success:u("store.purchase.auth.success")}}):s.a.createElement(N.a,{title:u(x&&2===S?"store.purchase.".concat(x,".title"):"store.purchase.title"),disableBackdropClick:!0,disableEscapeKeyDown:!0,open:!0,fullWidth:!0,onClose:Z},1===S&&s.a.createElement("div",{style:{marginBottom:16}},s.a.createElement(D.a,{className:k.tabPanel},ee.map((function(e){return s.a.createElement(T.a,{button:!0,key:e.action,selected:x===e.action,onClick:function(){return Q(e.action)}},s.a.createElement(z.a,{className:k.iconRoot},"purchase"===e.action?s.a.createElement(F.a,{style:{color:"purchase"===x?H.a.primary.main:"#AAA",fontSize:32}}):s.a.createElement(I.a,{style:{color:"verify"===x?H.a.primary.main:"#AAA",fontSize:32}})),s.a.createElement(U.a,{primary:e.title,secondary:e.description}))}))),s.a.createElement(h.a,{rounded:!0,fullWidth:!0,disabled:!x,variant:"contained",color:"primary",style:{marginTop:16},onClick:X},u("common.next"))),2===S&&"purchase"===x&&s.a.createElement("div",{style:{textAlign:"center"}},!M&&s.a.createElement(f.a,null),s.a.createElement(b.a,{component:"p"},function(){if(A){if("confirmed"===A.status)return u("store.purchase.confirmed");if("declined"===A.status)return u("store.purchase.declined");if("error"===A.status)return A.message}return u("store.purchase.waiting")}())))})),G=["meta","lastVersion","buttonText","registryUrl"];function Q(e){var t=e.meta,n=e.lastVersion,a=e.buttonText,p=e.registryUrl,v=Object(i.a)(e,G),j=Object(m.c)().enqueueSnackbar,E=Object(y.useLocaleContext)().t,x=Object(u.k)(),w=Object(k.b)(),C=w.api,S=w.data.find((function(e){return e.meta.did===t.did}))||{},L=Object(l.useMemo)((function(){return!!S.status}),[S.status]),B=Object(l.useMemo)((function(){var e;return L?null===(e=S.meta)||void 0===e?void 0:e.version:null}),[L,S.meta]),_=!1===Object(d.isFreeBlocklet)(t),N=Object(l.useState)(!1),D=Object(o.a)(N,2),T=D[0],U=D[1],z=R(t.did).hasPurchased,A=Object(l.useState)(!1),F=Object(o.a)(A,2),W=F[0],I=F[1],M=Object(l.useMemo)((function(){return T?E(L?"blocklet.status.upgrading":_?"blocklet.status.purchasing":"blocklet.status.waiting"):Object(O.A)(S.status)?E("common.".concat(S.status)):""}),[T,S.status,L,E,_]),V=Object(l.useMemo)((function(){return!(!n||!B)&&!(!n||!Object(g.gt)(n,B))}),[n,B]),q=Object(l.useMemo)((function(){return V?a.upgrade:L?a.open:_?a.purchase:a.install}),[L,V,_,a]),H=Object(l.useMemo)((function(){return!(L&&!V)}),[L,V]),K=function(){var e=Object(c.a)(r.a.mark((function e(n){var a;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.preventDefault(),n.stopPropagation(),e.prev=2,U(!0),L||!_){e.next=7;break}return I(!0),e.abrupt("return");case 7:return a=L?"upgradeBlocklet":"installBlocklet",e.next=10,C[a]({input:{did:t.did,registryUrl:p}});case 10:e.next=16;break;case 12:e.prev=12,e.t0=e.catch(2),j(Object(O.g)(e.t0),{autoHideDuration:5e3,variant:"error"}),console.error("Blocklet installed failed",e.t0);case 16:return e.prev=16,U(!1),e.finish(16);case 19:case"end":return e.stop()}}),e,null,[[2,12,16,19]])})));return function(t){return e.apply(this,arguments)}}(),J=function(e){var n=e.disabled;return s.a.createElement(h.a,Object.assign({key:t.did,onClick:K,size:"small",disabled:Boolean(M||n),variant:"contained",color:"primary","data-cy":"install-blocklet",rounded:!0},v),M?s.a.createElement(s.a.Fragment,null,s.a.createElement(f.a,{size:[16,10],style:{marginRight:3}}),M):q)};J.defaultProps={disabled:!1};return s.a.createElement(s.a.Fragment,null,s.a.createElement("div",null,H?s.a.createElement(P.a,{permission:"mutate_blocklet"},(function(e){return s.a.createElement(J,{disabled:!e})})):s.a.createElement(h.a,{rounded:!0,className:"action-button",variant:"contained",color:"primary",size:"small",disabled:Boolean(M),"data-cy":"open-blocklet",onClick:function(e){var n;e.preventDefault(),e.stopPropagation(),x.push("/blocklets/".concat(t.did,"/").concat((n=S)&&(n.configs||[]).some((function(e){return e.required&&!e.value}))?"configuration":"overview"))}},M?s.a.createElement(s.a.Fragment,null,s.a.createElement(f.a,{size:[16,10],style:{marginRight:3}}),M):q),L&&_&&s.a.createElement(b.a,{component:"small",style:{fontSize:12,color:"#666",marginLeft:4}},E("blocklet.status.purchased"))),(z&&!L||W)&&s.a.createElement($,{meta:t,mode:z?"purchase":"both",onCancel:function(){U(!1),I(!1)}}))}Q.defaultProps={lastVersion:""}},1538:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return Re}));var a=n(32),r=n(365),c=n(57),o=n(11),i=n.n(o),l=n(19),s=n(13),u=n(0),d=n.n(u),m=n(14),p=n(356),f=n.n(p),b=n(972),v=n.n(b),h=n(59),y=n(1321),g=n.n(y),k=n(50),O=n.n(k),j=n(63),E=n(296),x=n(926),w=n(894),C=n(536),R=n.n(C),P=n(1324),S=n.n(P),L=n(1325),B=n.n(L),_=n(339),N=n.n(_),D=n(954),T=n.n(D),U=n(102),z=n.n(U),A=n(975),F=n.n(A),W=n(22),I=n(117),M=n(105),V=n.n(M),q=n(880),H=n(320),K=n(8),J=n(1322),Y=n.n(J),$=n(64),G=n(29),Q=n(1179),X=["blocklets"],Z=Object(H.a)((function(e){return{root:{backgroundColor:"transparent!important","& .MuiButton-root:not(.Mui-disabled)":{backgroundColor:Object(K.j)(e.palette.primary.main,.94),color:e.palette.primary.main,position:"relative","&::after":{content:'""',position:"absolute",top:"50%",left:"50%",width:"150%",height:"150%",transform:"translate(-50%, -50%)"}}}}}));function ee(e){var t,n=e.x,a=e.lastVersion,r=Object(u.useContext)(W.LocaleContext).t,c=Z(),o=Object(G.c)(),i=V()(o.prefix,"blocklet.png"),l=o.info.blockletRegistry;if(l.startsWith("http")&&n.logo)i=V()(l,Object($.k)(n.did,n.logo));else{var s=(window.env.apiPrefix||"/").replace(/^\/+/,"").replace(/\/+$/,"");s&&(s="/".concat(s)),i=V()(s,"/blocklet/logo/".concat(n.did))}return d.a.createElement(Y.a,{title:n.title||n.name,description:n.description,cover:i,addons:[{icon:"cube",value:"v".concat(n.version)},{icon:"clock",value:Object($.n)(n.lastPublishedAt)},{icon:"cloud-download",value:(null===(t=n.stats)||void 0===t?void 0:t.downloads)||0,pretty:!0}],button:d.a.createElement("div",{className:c.root},d.a.createElement(Q.a,{meta:n,lastVersion:a,buttonText:{purchase:r("common.purchase"),open:r("common.open"),install:r("common.install"),upgrade:r("common.upgrade")},registryUrl:l}))})}function te(e){var t=e.blocklets,n=Object(I.a)(e,X),a=t.reduce((function(e,t){var n=t.did,a=t.version;return e[n]=a,e}),{}),r=function(e){return!!e.currentTarget.contains(e.target)||(e.preventDefault(),!1)};return d.a.createElement("div",n,d.a.createElement(q.a,{container:!0,spacing:4},t.map((function(e){return d.a.createElement(q.a,{item:!0,lg:4,md:6,sm:6,xs:12,key:e.did,"data-blocklet-did":e.did},d.a.createElement(h.Link,{to:"/store/".concat(e.did),"data-cy":"blocklet-item",style:{color:"initial"},onClick:r},d.a.createElement(ee,{x:e,lastVersion:a[e.did]})))}))))}ee.defaultProps={lastVersion:""},te.defaultProps={};var ne=n(78),ae=n(939),re=n.n(ae),ce=n(867),oe=n(868),ie=n(884),le=n(920),se=n(921),ue=n(968),de=n.n(ue),me=n(915),pe=n(938),fe=n.n(pe),be=Object(H.a)((function(e){return{addMenuItemRoot:{justifyContent:"center",color:e.palette.primary.main,lineHeight:"3.2"}}}));function ve(e){var t=e.disabled,n=Object(G.c)(),a=n.api,r=n.info,c=Object(u.useState)(!1),o=Object(s.a)(c,2),m=o[0],p=o[1],f=Object(u.useState)(!0),b=Object(s.a)(f,2),v=b[0],h=b[1],y=Object(u.useState)(!1),g=Object(s.a)(y,2),k=g[0],E=g[1],x=Object(u.useState)(""),C=Object(s.a)(x,2),R=C[0],P=C[1],S=Object(u.useState)(""),L=Object(s.a)(S,2),B=L[0],_=L[1],D=Object(W.useLocaleContext)().t,T=be(),U=function(){var e=Object(l.a)(i.a.mark((function e(){var t,n,c;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:p(!0),e.prev=1,t=decodeURIComponent(R.trim()),n=!1,/^https?:\/\//.test(t)||(t="https://".concat(t),n=!0),e.prev=6,new URL(t),e.next=13;break;case 10:throw e.prev=10,e.t0=e.catch(6),new Error("Invalid Blocklet Store URL");case 13:if(!r.blockletRegistryList.some((function(e){return[R,t].includes(e.url)}))){e.next=15;break}throw new Error(D("store.blockletRegistry.haveSameRegistry"));case 15:return e.next=17,a.addBlockletRegistry({input:{url:n?"https://".concat(R):R}});case 17:window.location.reload(),e.next=24;break;case 20:e.prev=20,e.t1=e.catch(1),c="".concat(D("store.blockletRegistry.addFailed")," ").concat(Object($.g)(e.t1)),_(c);case 24:return e.prev=24,p(!1),e.finish(24);case 27:case"end":return e.stop()}}),e,null,[[1,20,24,27],[6,10]])})));return function(){return e.apply(this,arguments)}}();return d.a.createElement(d.a.Fragment,null,d.a.createElement(oe.a,{button:!0,disabled:t,className:T.addMenuItemRoot,onClick:function(){E(!0)}},d.a.createElement(fe.a,{fontSize:"small"}),d.a.createElement(j.a,{variant:"inherit"},D("store.blockletRegistry.addRegistry"))),d.a.createElement(re.a,{title:D("store.blockletRegistry.addRegistry"),fullWidth:!0,maxWidth:"md",open:k,onClose:function(){return E(!1)},PaperProps:{style:{minHeight:"auto"}},actions:d.a.createElement(d.a.Fragment,null,d.a.createElement(z.a,{onClick:function(e){e.stopPropagation(),E(!1)},color:"default",rounded:!0,size:"small"},D("common.cancel")),d.a.createElement(z.a,{onClick:function(e){e.stopPropagation(),U()},color:"primary",size:"small","data-cy":"install-blocklet-next-step",disabled:m||!R||v,variant:"contained",autoFocus:!0,rounded:!0},m&&d.a.createElement(O.a,{size:[16,10]}),D("common.confirm")))},d.a.createElement("div",{style:{paddingTop:12,overflowY:"hidden"}},d.a.createElement(me.a,{component:"div"},d.a.createElement(j.a,{component:"div"},d.a.createElement(w.a,{label:D("store.blockletRegistry.registryUrl"),autoComplete:"off",variant:"outlined",name:"url",fullWidth:!0,value:R,onChange:function(e){_(null);var t=!1;e.target.value.trim()||(t=!0),e.target.value.trim()||_(D("store.blockletRegistry.registryUrlEmpty")),P(e.target.value),h(t)},disabled:m,onKeyPress:function(e){"Enter"===e.key&&(e.preventDefault(),e.target.value.trim()?U():_(D("store.blockletRegistry.registryUrlEmpty")))}})))),!!B&&d.a.createElement(N.a,{type:"error",style:{width:"100%"}},B)))}ve.defaultProps={disabled:!1};var he=n(180),ye=n(1323),ge=n.n(ye),ke=n(988);function Oe(e){var t=Object(ne.c)().enqueueSnackbar,n=Object(G.c)().api,a=Object(W.useLocaleContext)().t,r=Object(u.useState)(!1),c=Object(s.a)(r,2),o=c[0],m=c[1],p=Object(u.useState)(null),f=Object(s.a)(p,2),b=f[0],v=f[1],h=e.blockletRegistry,y=function(){var e=Object(l.a)(i.a.mark((function e(){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,m(!0),e.next=4,n.deleteBlockletRegistry({input:{url:h.url}});case 4:window.location.reload(),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),t("Remove Blocklet Store Error: ".concat(Object($.g)(e.t0)),{autoHideDuration:2e3,variant:"error"});case 10:return e.prev=10,m(!1),v(null),e.finish(10);case 14:case"end":return e.stop()}}),e,null,[[0,7,10,14]])})));return function(){return e.apply(this,arguments)}}(),g={keyName:h.url,title:a("store.blockletRegistry.deleteRegistry"),description:a("store.blockletRegistry.deleteDesc",{name:"<b>".concat(h.url,"</b>")}),confirmPlaceholder:a("store.blockletRegistry.confirmDesc",{name:h.url}),confirm:a("common.delConfirm"),cancel:a("common.cancel"),onConfirm:y,onCancel:function(){m(!1),v(null)}};return d.a.createElement(d.a.Fragment,null,d.a.createElement(he.a,{disabled:o,onClick:function(e){e.stopPropagation(),v(g)}},d.a.createElement(ge.a,null)),b&&d.a.createElement(ke.a,{keyName:b.keyName,title:b.title,description:b.description,confirmPlaceholder:b.confirmPlaceholder,confirm:b.confirm,cancel:b.cancel,params:b.params,onConfirm:b.onConfirm,onCancel:b.onCancel}))}var je=n(337),Ee=Object(H.a)((function(){return{buttonText:{textTransform:"none !important"},iconRoot:{minWidth:24},menuName:{display:"flex",flexDirection:"column",marginRight:"100px","& span":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}}}));var xe,we=Object(u.forwardRef)((function(e,t){var n=Object(G.c)(),a=n.api,r=n.info,c=Object(W.useLocaleContext)().t,o=Object(ne.c)().enqueueSnackbar,m=Object(u.useState)(!1),p=Object(s.a)(m,2),f=p[0],b=p[1],v=Object(u.useState)(!1),h=Object(s.a)(v,2),y=h[0],g=h[1],k=d.a.useState(-1),E=Object(s.a)(k,2),x=E[0],w=E[1],C=Ee(),R=r.blockletRegistryList.findIndex((function(e){return e.selected})),P=function(){var e=Object(l.a)(i.a.mark((function e(t){var n;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,b(!0),w(t),n=r.blockletRegistryList[t],e.next=6,a.selectBlockletRegistry({input:{url:n.url}});case 6:window.location.reload(),e.next=14;break;case 9:e.prev=9,e.t0=e.catch(0),console.error(e.t0),b(!1),o("".concat(c("store.blockletRegistry.changeFailed")," ").concat(Object($.g)(e.t0)),{autoHideDuration:2e3,variant:"error"});case 14:case"end":return e.stop()}}),e,null,[[0,9]])})));return function(t){return e.apply(this,arguments)}}();return Object(u.useImperativeHandle)(t,(function(){return{setOpen:g}})),d.a.createElement(d.a.Fragment,null,d.a.createElement(je.a,{permission:"mutate_node"},(function(e){return d.a.createElement(z.a,{disabled:!e,classes:{text:C.buttonText},color:"secondary","data-cy":"store-toggle",onClick:function(){g(!0)},endIcon:d.a.createElement(de.a,null)},d.a.createElement(j.a,{color:"secondary"},r.blockletRegistryList[R].name))})),d.a.createElement(re.a,{title:c("store.blockletRegistry.switchRegistry"),disableBackdropClick:!0,disableEscapeKeyDown:!0,disablePortal:!1,fullWidth:!0,open:y,onClose:function(){return g(!1)}},d.a.createElement(ce.a,{className:C.tabPanel},r.blockletRegistryList.map((function(e,t){return d.a.createElement(oe.a,{button:!0,disabled:f,key:e.url,selected:R===t,"data-cy":"store-switch",onClick:function(){f||(t!==R?P(t):g(!1))}},d.a.createElement(le.a,{className:C.iconRoot},x===t&&f&&d.a.createElement(O.a,{size:[16,10]})),d.a.createElement(ie.a,null,d.a.createElement("div",{className:C.menuName},d.a.createElement(j.a,{component:"span",variant:"subtitle1",style:{fontWeight:"500"}},e.name),d.a.createElement(j.a,{className:"url",component:"span",variant:"inherit"},"".concat(e.url))),d.a.createElement(se.a,null,!e.protected&&d.a.createElement(Oe,{blockletRegistry:e}))))})),d.a.createElement(ve,{disabled:f}))))})),Ce=function(e){return"desc"===e.direction?d.a.createElement(S.a,null):d.a.createElement(B.a,null)};function Re(){var e=Object(G.c)(),t=e.api,n=e.info,a=Object(u.useContext)(W.LocaleContext).t,o=Object(u.useState)(""),m=Object(s.a)(o,2),p=m[0],b=m[1],y=v()("directions",{title:"asc",popularity:"desc"}),k=Object(s.a)(y,2),C=k[0],P=k[1],S=v()("popularity","popularity"),L=Object(s.a)(S,2),B=L[0],_=L[1],D=n.blockletRegistryList.find((function(e){return e.selected})),U=f()(Object(l.a)(i.a.mark((function e(){var n,a;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.listBlocklets({input:{registryUrl:D.url}});case 2:return n=e.sent,a=n.blocklets,e.abrupt("return",a);case 5:case"end":return e.stop()}}),e)})))),A=(U.value||[]).map((function(e){return e.searchContent=[e.title,e.name,e.description].filter(Boolean).join("").toLocaleLowerCase().replace(/\s/g,""),e})),I=Object(u.useMemo)((function(){var e=function(e){return e.title||e.name},t=function(e){return e.stats.downloads},n=p.toLowerCase().replace(/\s/g,"");return g()(A.filter((function(e){return e.searchContent.includes(n)})),"title"===B?[e,t]:[t,e],"title"===B?[C.title,C.popularity]:[C.popularity,C.title])}),[A,p,C,B]),M=function(e,t){var n="desc"===t?"asc":"desc";P(Object(c.a)(Object(c.a)({},C),{},Object(r.a)({},e,n))),_(e)},V=Object(u.useRef)(null),q=null;return q=I.length?d.a.createElement(te,{blocklets:I}):U.error?d.a.createElement(N.a,{type:"error",variant:"icon"},d.a.createElement("div",null,Object($.g)(U.error),d.a.createElement(h.Link,{style:{marginLeft:"12px"},to:"/settings/basic",onClick:function(e){V.current.setOpen(!0),e.preventDefault()}},"Change Registry",">>"))):U.loading?d.a.createElement(O.a,null):d.a.createElement(T.a,null,a("common.emptyData")),d.a.createElement(Pe,null,d.a.createElement(x.a,{separator:"\u203a","aria-label":"breadcrumb",className:"page-breadcrumb"},d.a.createElement(j.a,{color:"textPrimary"},a("common.store")),d.a.createElement(we,{ref:V})),d.a.createElement(E.a,{className:"store-header",display:"flex",justifyContent:"space-between",p:0,m:0},d.a.createElement(j.a,{component:"h2",variant:"h4",className:"page-header",color:"textPrimary"},a("store.headerDescription")),d.a.createElement(E.a,{mt:0,display:"flex",alignItems:"center"},d.a.createElement(w.a,{size:"small",placeholder:a("common.search"),style:{marginRight:"15px"},value:p,defaultValue:p,onChange:function(e){return b(e.target.value)},"data-cy":"search",InputProps:{startAdornment:d.a.createElement(R.a,{name:"search",size:16,style:{marginRight:"6px",marginBottom:"6px"}}),endAdornment:d.a.createElement("span",{onClick:function(){return b("")},style:{margin:"0 5px 6px 6px",cursor:"pointer"},"data-cy":"search-delete"},d.a.createElement(R.a,{name:"times",size:16}))}}),d.a.createElement(F.a,{size:"small",color:"primary","aria-label":"split button",style:{whiteSpace:"nowrap"}},d.a.createElement(z.a,{onClick:function(){return M("popularity",C.popularity)},endIcon:d.a.createElement(Ce,{direction:C.popularity}),className:"sort-button",color:"secondary",variant:"popularity"===B?"contained":"outlined"},a("store.popularSort")),d.a.createElement(z.a,{onClick:function(){return M("title",C.title)},endIcon:d.a.createElement(Ce,{direction:C.title}),className:"sort-button",color:"secondary",variant:"title"===B?"contained":"outlined"},a("store.nameSort"))))),q)}Ce.defaultProps={direction:"asc"};var Pe=m.default.main(xe||(xe=Object(a.a)(["\n .sort-button {\n border-radius: 0 !important;\n }\n\n @media (max-width: ","px) {\n .store-header {\n flex-direction: column;\n margin-bottom: 32px !important;\n }\n\n .page-header {\n margin-bottom: 16px !important;\n }\n }\n"])),(function(e){return e.theme.breakpoints.values.sm}))},931:function(e,t,n){"use strict";n.d(t,"a",(function(){return S}));var a=n(32),r=n(11),c=n.n(r),o=n(19),i=n(13),l=n(0),s=n.n(l),u=n(14),d=n(445),m=n(50),p=n.n(m),f=n(876),b=n(446),v=n(915),h=n(916),y=n(925),g=n(993),k=n.n(g),O=n(324),j=n(22),E=n(102),x=n.n(E),w=n(64),C=n(17);var R,P=function(){var e=Object(C.a)();return{minWidth:Object(O.a)(e.breakpoints.down("sm"))?300:e.breakpoints.values.sm}};function S(e){var t=e.title,n=e.description,a=e.showCancel,r=e.cancel,u=e.confirm,d=e.color,m=e.params,g=e.onCancel,E=e.onConfirm,C=Object(l.useState)(m),R=Object(i.a)(C,2),S=R[0],B=R[1],_=Object(l.useState)(!0),N=Object(i.a)(_,2),D=N[0],T=N[1],U=Object(l.useState)(!1),z=Object(i.a)(U,2),A=z[0],F=z[1],W=Object(l.useState)(""),I=Object(i.a)(W,2),M=I[0],V=I[1],q=Object(j.useLocaleContext)().t,H=k()(),K=function(){var e=Object(o.a)(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!==typeof t){e.next=17;break}return F(!0),e.prev=2,e.next=5,t(S);case 5:T(!1),e.next=12;break;case 8:e.prev=8,e.t0=e.catch(2),V(Object(w.g)(e.t0)),console.error(e.t0);case 12:return e.prev=12,F(!1),e.finish(12);case 15:e.next=18;break;case 17:T(!1);case 18:case"end":return e.stop()}}),e,null,[[2,8,12,15]])})));return function(t){return e.apply(this,arguments)}}(),J="function"===typeof t?t():t,Y="function"===typeof n?n(S,B,V):n,$=Object(O.a)(H.breakpoints.down("sm")),G=P().minWidth;return s.a.createElement(L,{onClick:function(e){e.stopPropagation()},fullScreen:$,open:D,style:{minWidth:G}},s.a.createElement(h.a,null,J),s.a.createElement(b.a,{style:{minWidth:G}},s.a.createElement(v.a,{component:"div"},Y),!!M&&s.a.createElement(y.a,{severity:"error",style:{width:"100%",marginTop:8}},M)),s.a.createElement(f.a,{className:"delete-actions",style:{padding:"8px 24px 24px"}},a&&s.a.createElement(x.a,{onClick:function(e){e.stopPropagation(),K(g)},color:"default","data-cy":"cancel-confirm-dialog",rounded:!0,size:"small"},r||q("common.cancel")),s.a.createElement(x.a,{onClick:function(e){e.stopPropagation(),K(E)},color:d,size:"small",disabled:S.__disableConfirm||A,variant:"contained","data-cy":"submit-confirm-dialog",autoFocus:!0,rounded:!0},A&&s.a.createElement(p.a,{size:[16,10]}),u)))}S.defaultProps={onCancel:function(){},showCancel:!0,cancel:"",confirm:"Confirm",color:"danger",params:{}};var L=Object(u.default)(d.a)(R||(R=Object(a.a)(["\n .delete-actions .Mui-disabled {\n color: rgba(0, 0, 0, 0.26) !important;\n box-shadow: none;\n background-color: rgba(0, 0, 0, 0.12) !important;\n }\n"])))},946:function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var a=n(117),r=n(0),c=n.n(r),o=n(977),i=n.n(o),l=n(22),s=["children"];function u(e){var t=e.children,n=Object(a.a)(e,s),o=Object(r.useContext)(l.LocaleContext).t;return c.a.createElement(i.a,Object.assign({tip:o("common.copyTip"),copiedTip:o("common.copiedTip")},n),t)}},955:function(e,t,n){var a=n(11),r=n(262),c=n(966),o=n(532),i=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=n.parallel,i=void 0!==o&&o,l=n.sync;if(l){if(t(e),e.children){var s,u=c(e.children);try{for(u.s();!(s=u.n()).done;){var d=s.value;t(d)}}catch(v){u.e(v)}finally{u.f()}}return null}if(!i)return r(a.mark((function n(){var r,o,i;return a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,t(e);case 2:if(!e.children){n.next=20;break}r=c(e.children),n.prev=4,r.s();case 6:if((o=r.n()).done){n.next=12;break}return i=o.value,n.next=10,t(i);case 10:n.next=6;break;case 12:n.next=17;break;case 14:n.prev=14,n.t0=n.catch(4),r.e(n.t0);case 17:return n.prev=17,r.f(),n.finish(17);case 20:return n.abrupt("return",null);case 21:case"end":return n.stop()}}),n,null,[[4,14,17,20]])})))();var m=[];if(m.push(t(e)),e.children){var p,f=c(e.children);try{for(f.s();!(p=f.n()).done;){var b=p.value;m.push(t(b))}}catch(v){f.e(v)}finally{f.f()}}return Promise.all(m)};e.exports={isFreeBlocklet:function(e){return!e.payment||(e.payment.price||[]).map((function(e){return e.value||0})).every((function(e){return 0===e}))},isDeletableBlocklet:function(e){if(!e)return!1;var t=e.environments.find((function(e){return"BLOCKLET_DELETABLE"===e.key}));return!t||"yes"===t.value},forEachBlocklet:i,isAuthServiceEnabled:function e(t){if((o(t,"meta.interfaces")||[]).some((function(e){return(o(e,"services")||[]).some((function(e){return"@abtnode/auth-service"===e.name}))})))return!0;var n,a=o(t,"children")||[],r=c(a);try{for(r.s();!(n=r.n()).done;){if(e(n.value))return!0}}catch(i){r.e(i)}finally{r.f()}return!1},getRequiredMissingConfigs:function(e){var t=[],n=e.configs||[];n.forEach((function(n){n.required&&!n.value&&t.push({did:e.meta.did,key:n.key})}));var a,r=c(e.children||[]);try{var o=function(){var e=a.value;(e.configs||[]).forEach((function(a){!a.required||a.value||n.some((function(e){return e.key===a.key&&e.value}))||t.push({did:e.meta.did,key:a.key})}))};for(r.s();!(a=r.n()).done;)o()}catch(i){r.e(i)}finally{r.f()}return t},wipeSensitiveData:function(e){return e?(i(e,(function(t){(t.configs||[]).forEach((function(e){e.secure&&(e.value=e.value?"__encrypted__":"")})),(t.environments||[]).forEach((function(e){["BLOCKLET_APP_SK"].includes(e.key)&&(e.value="__encrypted__")})),delete e.configObj,delete e.environmentObj}),{sync:!0}),e):e}}},988:function(e,t,n){"use strict";n.d(t,"a",(function(){return m}));var a=n(57),r=n(0),c=n.n(r),o=n(63),i=n(894),l=n(925),s=n(22),u=n(946),d=n(931);function m(e){var t=e.title,n=e.description,r=e.confirmPlaceholder,m=e.cancel,p=e.confirm,f=e.params,b=e.onCancel,v=e.onConfirm,h=e.keyName,y=Object(s.useLocaleContext)().t,g={title:function(){return c.a.createElement("div",null,t," (".concat(h,")"))},description:function(e,t){return c.a.createElement("div",null,c.a.createElement(l.a,{severity:"warning",style:{width:"100%"}},y("common.notice")),c.a.createElement("div",{style:{marginTop:24,marginBottom:24},dangerouslySetInnerHTML:{__html:n}}),c.a.createElement("div",{style:{marginBottom:24}},y("common.click"),"\uff1a",c.a.createElement(u.a,{"data-cy":"click-copy"},h)),c.a.createElement(o.a,{component:"div"},c.a.createElement(i.a,{label:r,autoComplete:"off","data-cy":"delete-confirm-input",variant:"outlined",fullWidth:!0,autoFocus:!0,value:e.inputVal,onChange:function(n){var r;r=Object(a.a)(Object(a.a)({},e),{},{inputVal:n.target.value,__disableConfirm:h!==n.target.value}),t(Object(a.a)(Object(a.a)({},r),{},{__disableConfirm:r.__disableConfirm}))}})))},confirm:p,cancel:m,onConfirm:v,onCancel:b,params:Object(a.a)({inputVal:"",__disableConfirm:!0},f)};return c.a.createElement(d.a,{title:g.title,description:g.description,confirm:g.confirm,cancel:g.cancel,params:g.params,onConfirm:g.onConfirm,onCancel:g.onCancel})}m.defaultProps={onCancel:function(){},cancel:"",confirm:"Confirm",params:{}}}}]);
|
|
2
|
+
//# sourceMappingURL=22.0f55f82b.chunk.js.map
|