@abtnode/webapp 1.6.21 → 1.6.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +8 -0
  2. package/blocklet.js +9 -9
  3. package/blocklet.yml +1 -1
  4. package/build/asset-manifest.json +20 -20
  5. package/build/index.html +1 -1
  6. package/build/{precache-manifest.bb40ca7060118e6294a11143b5925873.js → precache-manifest.1307cc8850971081e70fdec51fd865a3.js} +18 -18
  7. package/build/service-worker.js +1 -1
  8. package/build/static/js/16.29ff8823.chunk.js +2 -0
  9. package/build/static/js/16.29ff8823.chunk.js.map +1 -0
  10. package/build/static/js/19.792be34a.chunk.js +2 -0
  11. package/build/static/js/19.792be34a.chunk.js.map +1 -0
  12. package/build/static/js/24.34e707e0.chunk.js +2 -0
  13. package/build/static/js/24.34e707e0.chunk.js.map +1 -0
  14. package/build/static/js/{7.8da1bf38.chunk.js → 7.5c8e7c53.chunk.js} +3 -3
  15. package/build/static/js/{7.8da1bf38.chunk.js.LICENSE.txt → 7.5c8e7c53.chunk.js.LICENSE.txt} +0 -0
  16. package/build/static/js/7.5c8e7c53.chunk.js.map +1 -0
  17. package/build/static/js/9.6f93f882.chunk.js +3 -0
  18. package/build/static/js/{9.48cc9dac.chunk.js.LICENSE.txt → 9.6f93f882.chunk.js.LICENSE.txt} +0 -0
  19. package/build/static/js/9.6f93f882.chunk.js.map +1 -0
  20. package/build/static/js/main.0aaea1be.chunk.js +2 -0
  21. package/build/static/js/main.0aaea1be.chunk.js.map +1 -0
  22. package/build/static/js/runtime-main.5d59c7da.js +2 -0
  23. package/build/static/js/{runtime-main.f51e8093.js.map → runtime-main.5d59c7da.js.map} +1 -1
  24. package/package.json +1 -1
  25. package/build/static/js/16.317138b4.chunk.js +0 -2
  26. package/build/static/js/16.317138b4.chunk.js.map +0 -1
  27. package/build/static/js/19.d154b681.chunk.js +0 -2
  28. package/build/static/js/19.d154b681.chunk.js.map +0 -1
  29. package/build/static/js/24.a5f785c7.chunk.js +0 -2
  30. package/build/static/js/24.a5f785c7.chunk.js.map +0 -1
  31. package/build/static/js/7.8da1bf38.chunk.js.map +0 -1
  32. package/build/static/js/9.48cc9dac.chunk.js +0 -3
  33. package/build/static/js/9.48cc9dac.chunk.js.map +0 -1
  34. package/build/static/js/main.7a635cb3.chunk.js +0 -2
  35. package/build/static/js/main.7a635cb3.chunk.js.map +0 -1
  36. package/build/static/js/runtime-main.f51e8093.js +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/@material-ui/icons/CheckCircle.js","../../../node_modules/@material-ui/icons/ArrowDropDown.js","../../../node_modules/@arcblock/ux/lib/ButtonGroup/index.js","../../../node_modules/@arcblock/ux/lib/ClickToCopy/index.js","components/delete-confirm.js","hooks/blocklet-purchase.js","../../../node_modules/@material-ui/icons/Info.js","../../../node_modules/@material-ui/icons/Error.js","../../../node_modules/@material-ui/icons/Warning.js","components/blocklet/purchase.js","components/blocklet/install.js","../../../node_modules/lodash/orderBy.js","../../../node_modules/@material-ui/icons/DeleteOutline.js","../../../node_modules/@material-ui/icons/Launch.js","../../../node_modules/@material-ui/icons/ArrowDownwardSharp.js","../../../node_modules/@material-ui/icons/ArrowUpwardSharp.js","components/blocklet/list.js","components/registry/add.js","components/registry/delete.js","components/registry/switch.js","pages/store/index.js","../../../node_modules/@material-ui/core/esm/Snackbar/index.js","../../../node_modules/@material-ui/core/esm/SnackbarContent/index.js","../../../node_modules/@material-ui/core/esm/ButtonGroup/index.js","hooks/mobile-width.js","components/confirm.js","../../../node_modules/@material-ui/icons/Add.js","components/click-to-copy.js","../../../node_modules/@arcblock/ux/lib/Empty/index.js","../../../node_modules/@arcblock/ux/lib/Toast/index.js"],"names":["_interopRequireDefault","require","_interopRequireWildcard","Object","defineProperty","exports","value","default","React","_default","createElement","d","_styledComponents","_ButtonGroup","_wrap","obj","__esModule","sizes","small","medium","large","getBorderRadius","size","StyledButtonGroup","withConfig","displayName","componentId","props","ClickToCopy","_react","nodeInterop","cache","_getRequireWildcardCache","has","get","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_copyToClipboard","_propTypes","_useWindowSize","_Tooltip","_Typography","_Toast","_Util","_excluded","WeakMap","cacheBabelInterop","cacheNodeInterop","_objectWithoutProperties","source","excluded","i","target","sourceKeys","keys","length","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","newProps","mergeProps","children","content","tip","copiedTip","tipPlacement","style","rest","useState","copied","setCopied","childrenRef","createRef","width","useEffect","timer","setTimeout","clearTimeout","assign","title","placement","disableFocusListener","Container","ref","component","fontSize","color","fontWeight","onClick","e","current","textContent","variant","message","propTypes","any","isRequired","string","object","defaultProps","CancelConfirm","description","confirmPlaceholder","cancel","confirm","initialParams","params","onCancel","onConfirm","keyName","t","useLocaleContext","confirmSetting","setParams","severity","marginTop","marginBottom","dangerouslySetInnerHTML","__html","data-cy","label","autoComplete","fullWidth","autoFocus","inputVal","onChange","__disableConfirm","useBlockletPurchase","did","query","useQuery","history","useHistory","useLocalStorage","sessionId","setSessionId","hasCompleted","setCompleted","session","setSession","doRedirect","URL","window","location","href","pathname","searchParams","prefix","env","apiPrefix","replace","hasPurchased","useSubscription","BlockletEvents","purchaseChange","includes","status","id","useStyles","makeStyles","dialogAuth","padding","textAlign","iconRoot","minWidth","BlockletPurchase","meta","mode","installOpts","locale","useNodeContext","info","gql","api","useSessionContext","classes","action","setAction","step","setStep","webWalletUrl","getWebWalletUrl","onSelect","act","a","onNext","payload","type","blockletDid","registryUrl","blockletRegistry","startSession","input","data","JSON","stringify","initial","cb","delete","callback","encodeURIComponent","nw","joinURL","nextWorkflow","url","nftFactory","onClose","options","popup","open","className","checkFn","checkTimeout","socketUrl","extraParams","sid","onSuccess","showDownload","messages","scan","success","disableBackdropClick","disableEscapeKeyDown","tabPanel","map","x","button","selected","colors","primary","main","secondary","rounded","disabled","getMessage","rootDid","mountPoint","forwardRef","InstallOrUpgrade","showPay","lastVersion","buttonText","enqueueSnackbar","useSnackbar","useBlockletContext","state","find","installed","useMemo","installedVersion","version","requirePurchase","isFreeBlocklet","loading","setLoading","showPurchaseDialog","setShowPurchaseDialog","loadingText","isInstalling","needUpgrade","gt","btnTxt","upgrade","purchase","install","showInstallBtn","onAction","preventDefault","stopPropagation","fn","formatError","autoHideDuration","console","error","InstallButton","Boolean","marginRight","permission","hasPermission","push","configs","some","required","marginLeft","baseOrderBy","isArray","module","collection","iteratees","orders","guard","undefined","BlockletItem","useContext","LocaleContext","node","logoUrl","startsWith","logo","formatRegistryLogoPath","name","cover","addons","icon","formatTimeFromNow","lastPublishedAt","stats","downloads","pretty","display","alignItems","BlockletList","blocklets","versions","reduce","totalVal","onClickLink","currentTarget","contains","Grid","container","spacing","item","lg","md","sm","xs","data-blocklet-did","to","theme","addMenuItemRoot","justifyContent","palette","lineHeight","AddBlockletRegistry","disable","setDisable","setOpen","setUrl","setError","decoded","decodeURIComponent","trim","addProtocol","test","Error","blockletRegistryList","addBlockletRegistry","reload","errMsg","ListItem","Typography","maxWidth","PaperProps","minHeight","actions","paddingTop","overflowY","DialogContentText","TextField","isDisabled","onKeyPress","DeleteBlockletRegistry","setConfirmSetting","deleteBlockletRegistry","setting","IconButton","textTransform","menuName","flexDirection","overflow","textOverflow","whiteSpace","menuIndex","setMenuIndex","selectedIndex","findIndex","index","selectBlockletRegistry","useImperativeHandle","text","endIcon","disablePortal","List","ListItemIcon","ListItemText","ListItemSecondaryAction","protected","SortIcon","direction","BlockletStore","keyword","setKeyword","popularity","directions","setDirections","mainFactor","setMainFactor","currentRegistry","useAsyncRetry","listBlocklets","rawList","searchContent","filter","join","toLocaleLowerCase","filterList","sortByName","sortByPopularity","word","toLowerCase","orderBy","handleSort","property","sort","newSort","switchEl","useRef","Main","Breadcrumbs","separator","aria-label","Box","p","m","mt","placeholder","defaultValue","InputProps","startAdornment","endAdornment","margin","cursor","styled","breakpoints","values","useMobileWidth","useTheme","useMediaQuery","down","ConfirmDialog","showCancel","changeLocale","onCallback","isBreakpointsDownSm","StyledDialog","fullScreen","DialogTitle","DialogContent","Alert","DialogActions","Dialog","_Icon","Wrapper","div","Empty","_ref","number","Toast","_CheckCircle","_Error","_Info","_Close","_Warning","_IconButton","_Snackbar","_SnackbarContent","_colors","_styles","variantIcon","warning","useStyles1","backgroundColor","green","dark","amber","iconVariant","opacity","SnackbarContentWrapper","Icon","duration","handleClose","reason","anchorOrigin","vertical","horizontal","func","oneOf"],"mappings":"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","file":"static/js/16.29ff8823.chunk.js","sourcesContent":["\"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 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckCircle');\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: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');\n\nexports.default = _default;","\"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;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ClickToCopy;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _useWindowSize = _interopRequireDefault(require(\"react-use/lib/useWindowSize\"));\n\nvar _Tooltip = _interopRequireDefault(require(\"@material-ui/core/Tooltip\"));\n\nvar _Typography = _interopRequireDefault(require(\"@material-ui/core/Typography\"));\n\nvar _styledComponents = _interopRequireDefault(require(\"styled-components\"));\n\nvar _Toast = _interopRequireDefault(require(\"../Toast\"));\n\nvar _Util = require(\"../Util\");\n\nconst _excluded = [\"children\", \"content\", \"tip\", \"copiedTip\", \"tipPlacement\", \"style\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ClickToCopy(props) {\n const newProps = (0, _Util.mergeProps)(props, ClickToCopy, ['style']);\n\n const {\n children,\n content,\n tip,\n copiedTip,\n tipPlacement,\n style\n } = newProps,\n rest = _objectWithoutProperties(newProps, _excluded);\n\n const [copied, setCopied] = (0, _react.useState)(false);\n\n const childrenRef = /*#__PURE__*/_react.default.createRef();\n\n const {\n width\n } = (0, _useWindowSize.default)();\n\n const onCopy = e => {\n (0, _copyToClipboard.default)(content || e.current.textContent);\n setCopied(true);\n };\n\n (0, _react.useEffect)(() => {\n let timer = null;\n\n if (copied) {\n timer = setTimeout(() => {\n setCopied(false);\n }, 2000);\n }\n\n return () => {\n if (timer) {\n clearTimeout(timer);\n }\n };\n });\n return /*#__PURE__*/_react.default.createElement(_Tooltip.default, Object.assign({\n title: copied ? copiedTip : tip\n }, rest, {\n placement: tipPlacement,\n disableFocusListener: true\n }), /*#__PURE__*/_react.default.createElement(Container, {\n ref: childrenRef,\n component: \"span\",\n style: Object.assign({\n fontSize: 'inherit',\n color: 'inherit',\n fontWeight: 'inherit'\n }, style),\n onClick: () => onCopy(childrenRef)\n }, children || content, copied && width < 600 && /*#__PURE__*/_react.default.createElement(_Toast.default, {\n variant: \"success\",\n message: copiedTip\n })));\n}\n\nClickToCopy.propTypes = {\n children: _propTypes.default.any.isRequired,\n content: _propTypes.default.string,\n tip: _propTypes.default.string,\n tipPlacement: _propTypes.default.string,\n copiedTip: _propTypes.default.string,\n style: _propTypes.default.object\n};\nClickToCopy.defaultProps = {\n content: '',\n tip: 'Click To Copy',\n copiedTip: 'Copied',\n tipPlacement: 'right',\n style: {}\n};\nconst Container = (0, _styledComponents.default)(_Typography.default).withConfig({\n displayName: \"ClickToCopy__Container\",\n componentId: \"sc-1vo2vcj-0\"\n})([\"display:inline;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;align-items:center;justify-content:start;border-radius:15px;padding:1px 12px;background-color:rgba(0,0,0,0.08);cursor:pointer;\"]);","/* eslint-disable react/no-danger */\n/* eslint-disable react/prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\n\nimport Alert from '@material-ui/lab/Alert';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport ClickToCopy from './click-to-copy';\n\nimport Confirm from './confirm';\n\nexport default function CancelConfirm({\n title,\n description,\n confirmPlaceholder,\n cancel,\n confirm,\n params: initialParams,\n onCancel,\n onConfirm,\n keyName,\n}) {\n const { t } = useLocaleContext();\n\n const confirmSetting = {\n title: () => (\n <div>\n {title}\n {` (${keyName})`}\n </div>\n ),\n description: (params, setParams) => {\n const setValue = value => {\n // eslint-disable-next-line no-underscore-dangle\n setParams({ ...value, __disableConfirm: value.__disableConfirm });\n };\n\n return (\n <div>\n <Alert severity=\"warning\" style={{ width: '100%' }}>\n {t('common.notice')}\n </Alert>\n <div style={{ marginTop: 24, marginBottom: 24 }} dangerouslySetInnerHTML={{ __html: description }} />\n <div style={{ marginBottom: 24 }}>\n {t('common.click')}\n {':'}\n <ClickToCopy data-cy=\"click-copy\">{keyName}</ClickToCopy>\n </div>\n <Typography component=\"div\">\n <TextField\n label={confirmPlaceholder}\n autoComplete=\"off\"\n data-cy=\"delete-confirm-input\"\n variant=\"outlined\"\n fullWidth\n autoFocus\n value={params.inputVal}\n onChange={e => {\n setValue({ ...params, inputVal: e.target.value, __disableConfirm: keyName !== e.target.value });\n }}\n />\n </Typography>\n </div>\n );\n },\n confirm,\n cancel,\n onConfirm,\n onCancel,\n params: {\n inputVal: '',\n __disableConfirm: true,\n ...initialParams,\n },\n };\n\n return (\n <Confirm\n title={confirmSetting.title}\n description={confirmSetting.description}\n confirm={confirmSetting.confirm}\n cancel={confirmSetting.cancel}\n params={confirmSetting.params}\n onConfirm={confirmSetting.onConfirm}\n onCancel={confirmSetting.onCancel}\n />\n );\n}\n\nCancelConfirm.propTypes = {\n title: PropTypes.any.isRequired,\n keyName: PropTypes.any.isRequired,\n description: PropTypes.any.isRequired, // can be a function that renders different content based on params\n confirmPlaceholder: PropTypes.any.isRequired,\n cancel: PropTypes.string,\n confirm: PropTypes.string,\n params: PropTypes.object, // This object holds states managed in the dialog\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func.isRequired,\n};\n\nCancelConfirm.defaultProps = {\n onCancel: () => {},\n cancel: '',\n confirm: 'Confirm',\n params: {},\n};\n","import { useState, useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport useLocalStorage from 'react-use/lib/useLocalStorage';\n\nimport { BlockletEvents } from '@blocklet/meta/lib/constants';\n\nimport useQuery from './query';\nimport { useSubscription } from '../libs/ws';\n\nexport default function useBlockletPurchase(did) {\n const query = useQuery();\n const history = useHistory();\n const [sessionId, setSessionId] = useLocalStorage(`sid:blocklet:purchase:${did}`);\n const [hasCompleted, setCompleted] = useState(false);\n const [session, setSession] = useState(null);\n\n const doRedirect = () => {\n const { pathname, searchParams } = new URL(window.location.href);\n const prefix = window.env && window.env.apiPrefix ? window.env.apiPrefix : '/';\n if (searchParams.get('sid')) {\n setSessionId('');\n history.replace(pathname.replace(prefix, '/'));\n }\n };\n\n const hasPurchased = !!(query.get('assetDid') && sessionId && query.get('sid') === sessionId);\n\n useSubscription(BlockletEvents.purchaseChange, e => {\n if (e.did === did) {\n setSession(e.session);\n\n if (['declined', 'confirmed', 'error'].includes(e.session.status)) {\n setCompleted(true);\n setTimeout(doRedirect, 2000);\n }\n }\n });\n\n useEffect(() => {\n if (session && session.id !== sessionId) {\n setSessionId(session.id);\n }\n }, [session]); // eslint-disable-line\n\n return {\n hasCompleted,\n hasPurchased,\n session,\n setSession,\n doRedirect,\n };\n}\n","\"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 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"\n}), 'Info');\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 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"\n}), 'Error');\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: \"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"\n}), 'Warning');\n\nexports.default = _default;","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { forwardRef, useState } from 'react';\nimport joinURL from 'url-join';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Dialog from '@arcblock/ux/lib/Dialog';\nimport Typography from '@material-ui/core/Typography';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\n\nimport IconPurchase from '@material-ui/icons/ShoppingCart';\nimport IconVerify from '@material-ui/icons/VerifiedUser';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\nimport DidConnect from '@arcblock/did-connect/lib/Connect';\nimport colors from '@arcblock/ux/lib/Colors';\n\nimport { useSessionContext } from '../../contexts/session';\nimport { useNodeContext } from '../../contexts/node';\nimport { getWebWalletUrl } from '../../libs/util';\nimport useBlockletPurchase from '../../hooks/blocklet-purchase';\n\nconst useStyles = makeStyles(() => ({\n dialogAuth: {\n padding: '0 0 24px !important',\n '& .auth-title': {\n textAlign: 'center !important',\n marginBottom: '4px !important',\n },\n '& .auth-tip--scan': {\n textAlign: 'center !important',\n },\n },\n iconRoot: {\n minWidth: 48,\n },\n}));\n\nfunction BlockletPurchase({ meta, mode, onCancel, installOpts }) {\n const { t, locale } = useLocaleContext();\n const { info, api: gql } = useNodeContext();\n const { api } = useSessionContext();\n const classes = useStyles();\n const [action, setAction] = useState(mode !== 'both' ? mode : '');\n const [step, setStep] = useState(mode !== 'both' ? 2 : 1);\n const { session, setSession, hasCompleted, doRedirect } = useBlockletPurchase(meta.did);\n\n const webWalletUrl = getWebWalletUrl(info);\n const prefix = window.env && window.env.apiPrefix ? window.env.apiPrefix : '/';\n\n const onSelect = async act => {\n if (act === action) {\n return;\n }\n\n setAction(act);\n };\n\n const onNext = async () => {\n if (!action) {\n return;\n }\n if (step === 2) {\n return;\n }\n\n // Start a new session and persist session id to local storage\n let payload;\n if (installOpts && installOpts.type === 'component') {\n payload = { ...installOpts, blockletDid: meta.did, action };\n } else {\n payload = { registryUrl: info.blockletRegistry, blockletDid: meta.did, action };\n }\n\n const { session: initial } = await gql.startSession({ input: { data: JSON.stringify(payload) } });\n setSession(initial);\n\n setStep(2);\n\n if (action === 'purchase') {\n setTimeout(async () => {\n const cb = new URL(window.location.href);\n cb.searchParams.delete('assetDid');\n cb.searchParams.set('sid', initial.id);\n cb.searchParams.set('locale', locale);\n cb.searchParams.set('did', meta.did);\n const callback = encodeURIComponent(cb.href);\n\n const nw = new URL(window.location.href);\n nw.pathname = joinURL(prefix, '/api/did/verify-purchase/token');\n nw.searchParams.set('sid', initial.id);\n nw.searchParams.set('locale', locale);\n nw.searchParams.set('autoConnect', 'false');\n const { data } = await api.get(nw.href);\n const nextWorkflow = encodeURIComponent(data.url);\n\n window.location.href = joinURL(\n info.blockletRegistry,\n `/store/purchase/${meta.nftFactory}?cb=${callback}&nw=${nextWorkflow}`\n );\n }, 100);\n }\n };\n\n const onClose = () => {\n doRedirect();\n onCancel();\n setStep(1);\n };\n\n const onVerifySuccess = () => {\n setTimeout(onCancel, 2000);\n };\n\n const options = [\n {\n action: 'purchase',\n title: t('store.purchase.purchase.title'),\n description: t('store.purchase.purchase.description'),\n },\n {\n action: 'verify',\n title: t('store.purchase.verify.title'),\n description: t('store.purchase.verify.description'),\n },\n ];\n\n const getMessage = () => {\n if (session) {\n if (session.status === 'confirmed') {\n return t('store.purchase.confirmed');\n }\n if (session.status === 'declined') {\n return t('store.purchase.declined');\n }\n if (session.status === 'error') {\n return session.message;\n }\n }\n\n return t('store.purchase.waiting');\n };\n\n if (step === 2 && action === 'verify' && session) {\n return (\n <DidConnect\n popup\n open\n className={classes.dialogAuth}\n action=\"verify-purchase\"\n checkFn={api.get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n webWalletUrl={webWalletUrl}\n extraParams={{ locale, sid: session.id }}\n onSuccess={onVerifySuccess}\n onClose={onClose}\n showDownload={false}\n locale={locale}\n messages={{\n title: t('store.purchase.auth.title'),\n scan: t('store.purchase.auth.scan'),\n confirm: t('store.purchase.auth.confirm'),\n success: t('store.purchase.auth.success'),\n }}\n />\n );\n }\n\n return (\n <Dialog\n title={action && step === 2 ? t(`store.purchase.${action}.title`) : t('store.purchase.title')}\n disableBackdropClick\n disableEscapeKeyDown\n open\n fullWidth\n onClose={onClose}>\n {step === 1 && (\n <div style={{ marginBottom: 16 }}>\n <List className={classes.tabPanel}>\n {options.map(x => (\n <ListItem button key={x.action} selected={action === x.action} onClick={() => onSelect(x.action)}>\n <ListItemIcon className={classes.iconRoot}>\n {x.action === 'purchase' ? (\n <IconPurchase\n style={{ color: action === 'purchase' ? colors.primary.main : '#AAA', fontSize: 32 }}\n />\n ) : (\n <IconVerify style={{ color: action === 'verify' ? colors.primary.main : '#AAA', fontSize: 32 }} />\n )}\n </ListItemIcon>\n <ListItemText primary={x.title} secondary={x.description} />\n </ListItem>\n ))}\n </List>\n <Button\n rounded\n fullWidth\n disabled={!action}\n variant=\"contained\"\n color=\"primary\"\n style={{ marginTop: 16 }}\n onClick={onNext}>\n {t('common.next')}\n </Button>\n </div>\n )}\n {step === 2 && action === 'purchase' && (\n <div style={{ textAlign: 'center' }}>\n {!hasCompleted && <Spinner />}\n <Typography component=\"p\">{getMessage()}</Typography>\n </div>\n )}\n </Dialog>\n );\n}\n\nBlockletPurchase.propTypes = {\n meta: PropTypes.object.isRequired,\n mode: PropTypes.oneOf(['both', 'verify']).isRequired,\n onCancel: PropTypes.func.isRequired,\n installOpts: PropTypes.object,\n};\n\nBlockletPurchase.defaultProps = {\n installOpts: {\n // blocklet: install blocklet. component: install blocklet component\n type: 'blocklet',\n\n // component install params\n rootDid: '',\n mountPoint: '',\n url: '',\n },\n};\n\nexport default forwardRef(BlockletPurchase);\n","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useHistory } from 'react-router-dom';\nimport { isFreeBlocklet } from '@blocklet/meta/lib/util';\nimport { useSnackbar } from 'notistack';\nimport { ActionButton } from '@arcblock/ux/lib/Blocklet';\n\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@arcblock/ux/lib/Button';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport { gt } from 'semver';\n\nimport { useBlockletContext } from '../../contexts/blocklets';\nimport { isInstalling, formatError } from '../../libs/util';\nimport useBlockletPurchase from '../../hooks/blocklet-purchase';\nimport Permission from '../permission';\nimport PurchaseDialog from './purchase';\n\nexport default function InstallOrUpgrade({ showPay, meta, lastVersion, buttonText, registryUrl, ...rest }) {\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useLocaleContext();\n const history = useHistory();\n\n const { api, data: installedBlocklets } = useBlockletContext();\n const state = installedBlocklets.find(d => d.meta.did === meta.did) || {};\n\n const installed = useMemo(() => !!state.status, [state.status]);\n const installedVersion = useMemo(() => (installed ? state.meta?.version : null), [installed, state.meta]);\n const requirePurchase = isFreeBlocklet(meta) === false;\n\n const [loading, setLoading] = useState(false);\n const { hasPurchased } = useBlockletPurchase(meta.did);\n const [showPurchaseDialog, setShowPurchaseDialog] = useState(false);\n\n const loadingText = useMemo(() => {\n if (loading) {\n if (installed) {\n return t('blocklet.status.upgrading');\n }\n if (requirePurchase) {\n return t('blocklet.status.purchasing');\n }\n return t('blocklet.status.waiting');\n }\n if (isInstalling(state.status)) return t(`common.${state.status}`);\n return '';\n }, [loading, state.status, installed, t, requirePurchase]);\n\n const needUpgrade = useMemo(() => {\n if (!lastVersion || !installedVersion) {\n return false;\n }\n\n if (lastVersion) {\n if (gt(lastVersion, installedVersion)) {\n return true;\n }\n }\n\n return false;\n }, [lastVersion, installedVersion]);\n\n const btnTxt = useMemo(() => {\n if (needUpgrade) return buttonText.upgrade;\n if (installed) return buttonText.open;\n if (requirePurchase) return buttonText.purchase;\n return buttonText.install;\n }, [installed, needUpgrade, requirePurchase, buttonText]);\n\n // only installed without upgrade show open button\n const showInstallBtn = useMemo(() => !(installed && !needUpgrade), [installed, needUpgrade]);\n\n const onAction = async e => {\n e.preventDefault();\n e.stopPropagation();\n\n try {\n setLoading(true);\n // The purchase dialog should only show on install\n if (!installed && requirePurchase) {\n setShowPurchaseDialog(true);\n return;\n }\n\n const fn = !installed ? 'installBlocklet' : 'upgradeBlocklet';\n await api[fn]({ input: { did: meta.did, registryUrl } });\n } catch (err) {\n enqueueSnackbar(formatError(err), { autoHideDuration: 5000, variant: 'error' });\n console.error('Blocklet installed failed', err);\n } finally {\n setLoading(false);\n }\n };\n\n const InstallButton = ({ disabled }) => (\n <Button\n key={meta.did}\n onClick={onAction}\n size=\"small\"\n disabled={Boolean(loadingText || disabled)}\n variant=\"contained\"\n color=\"primary\"\n data-cy=\"install-blocklet\"\n rounded\n {...rest}>\n {loadingText ? (\n <>\n <Spinner size={[16, 10]} style={{ marginRight: 3 }} />\n {loadingText}\n </>\n ) : (\n btnTxt\n )}\n </Button>\n );\n\n InstallButton.propTypes = {\n disabled: PropTypes.bool,\n };\n\n InstallButton.defaultProps = {\n disabled: false,\n };\n const getTab = d => {\n if (d) {\n return (d.configs || []).some(x => x.required && !x.value) ? 'configuration' : 'overview';\n }\n\n return 'overview';\n };\n\n const onGoDetail = e => {\n e.preventDefault();\n e.stopPropagation();\n history.push(`/blocklets/${meta.did}/${getTab(state)}`);\n };\n\n const onCancelPurchase = () => {\n setLoading(false);\n setShowPurchaseDialog(false);\n };\n\n return (\n <>\n <ActionButton>\n {showInstallBtn ? (\n <Permission permission=\"mutate_blocklet\">\n {hasPermission => <InstallButton disabled={!hasPermission} />}\n </Permission>\n ) : (\n <Button\n rounded\n className=\"action-button\"\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n disabled={Boolean(loadingText)}\n data-cy=\"open-blocklet\"\n onClick={onGoDetail}>\n {loadingText ? (\n <>\n <Spinner size={[16, 10]} style={{ marginRight: 3 }} />\n {loadingText}\n </>\n ) : (\n btnTxt\n )}\n </Button>\n )}\n </ActionButton>\n\n {installed && requirePurchase && showPay && (\n <Typography component=\"small\" style={{ fontSize: 12, color: '#666', marginLeft: 4 }}>\n {t('blocklet.status.purchased')}\n </Typography>\n )}\n {((hasPurchased && !installed) || showPurchaseDialog) && (\n <PurchaseDialog meta={meta} mode={hasPurchased ? 'purchase' : 'both'} onCancel={onCancelPurchase} />\n )}\n </>\n );\n}\n\nInstallOrUpgrade.propTypes = {\n meta: PropTypes.object.isRequired,\n lastVersion: PropTypes.string,\n buttonText: PropTypes.shape({\n purchase: PropTypes.string.isRequired,\n open: PropTypes.string.isRequired,\n install: PropTypes.string.isRequired,\n upgrade: PropTypes.string.isRequired,\n }).isRequired,\n showPay: PropTypes.bool,\n registryUrl: PropTypes.string.isRequired,\n};\n\nInstallOrUpgrade.defaultProps = {\n lastVersion: '',\n showPay: true,\n};\n","var baseOrderBy = require('./_baseOrderBy'),\n isArray = require('./isArray');\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\nmodule.exports = orderBy;\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: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM8 9h8v10H8V9zm7.5-5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'DeleteOutline');\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 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\"\n}), 'Launch');\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: \"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n}), 'ArrowDownwardSharp');\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: \"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"\n}), 'ArrowUpwardSharp');\n\nexports.default = _default;","/* eslint-disable react/jsx-wrap-multilines */\nimport React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport joinURL from 'url-join';\nimport Grid from '@material-ui/core/Grid';\nimport { Link } from 'react-router-dom';\n\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Blocklet from '@arcblock/ux/lib/Blocklet';\n\nimport { formatRegistryLogoPath, formatTimeFromNow } from '../../libs/util';\nimport { useNodeContext } from '../../contexts/node';\nimport InstallOrUpgrade from './install';\n\nfunction BlockletItem({ x, lastVersion }) {\n const { t } = useContext(LocaleContext);\n const node = useNodeContext();\n let logoUrl = joinURL(node.prefix, 'blocklet.png');\n\n const { blockletRegistry } = node.info;\n if (blockletRegistry.startsWith('http') && x.logo) {\n logoUrl = joinURL(blockletRegistry, formatRegistryLogoPath(x.did, x.logo));\n } else {\n const prefix = window.env.apiPrefix || '/';\n let apiPrefix = prefix.replace(/^\\/+/, '').replace(/\\/+$/, '');\n if (apiPrefix) {\n apiPrefix = `/${apiPrefix}`;\n }\n logoUrl = joinURL(apiPrefix, `/blocklet/logo/${x.did}`);\n }\n\n return (\n <Blocklet\n title={x.title || x.name}\n description={x.description}\n did={x.did}\n cover={x.logo ? logoUrl : ''}\n addons={[\n { icon: 'cube', value: `v${x.version}` },\n { icon: 'clock', value: formatTimeFromNow(x.lastPublishedAt) },\n { icon: 'cloud-download', value: x.stats?.downloads || 0, pretty: true },\n ]}\n button={\n <div style={{ display: 'flex', alignItems: 'center' }}>\n <InstallOrUpgrade\n meta={x}\n lastVersion={lastVersion}\n buttonText={{\n purchase: t('common.purchase'),\n open: t('common.open'),\n install: t('common.install'),\n upgrade: t('common.upgrade'),\n }}\n registryUrl={blockletRegistry}\n />\n </div>\n }\n />\n );\n}\n\nBlockletItem.propTypes = {\n x: PropTypes.object.isRequired,\n lastVersion: PropTypes.string,\n};\nBlockletItem.defaultProps = {\n lastVersion: '',\n};\n\nexport default function BlockletList({ blocklets, ...rest }) {\n const versions = blocklets.reduce((totalVal, { did, version }) => {\n totalVal[did] = version;\n return totalVal;\n }, {});\n\n const onClickLink = e => {\n if (!e.currentTarget.contains(e.target)) {\n e.preventDefault();\n return false;\n }\n return true;\n };\n\n return (\n <div {...rest}>\n <Grid container spacing={4}>\n {blocklets.map(x => (\n <Grid item lg={4} md={6} sm={6} xs={12} key={x.did} data-blocklet-did={x.did}>\n <Link to={`/store/${x.did}`} data-cy=\"blocklet-item\" style={{ color: 'initial' }} onClick={onClickLink}>\n <BlockletItem x={x} lastVersion={versions[x.did]} />\n </Link>\n </Grid>\n ))}\n </Grid>\n </div>\n );\n}\n\nBlockletList.propTypes = {\n blocklets: PropTypes.array.isRequired,\n};\n\nBlockletList.defaultProps = {};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Dialog from '@arcblock/ux/lib/Dialog';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport ListItem from '@material-ui/core/ListItem';\nimport AddIcon from '@material-ui/icons/Add';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\nimport Alert from '@arcblock/ux/lib/Alert';\n\nimport { useNodeContext } from '../../contexts/node';\nimport { formatError } from '../../libs/util';\n\nconst useStyles = makeStyles(theme => ({\n addMenuItemRoot: {\n justifyContent: 'center',\n color: theme.palette.primary.main,\n lineHeight: '3.2',\n },\n}));\n\nexport default function AddBlockletRegistry({ disabled }) {\n const { api, info } = useNodeContext();\n const [loading, setLoading] = useState(false);\n const [disable, setDisable] = useState(true);\n const [open, setOpen] = useState(false);\n const [url, setUrl] = useState('');\n const [error, setError] = useState('');\n const { t } = useLocaleContext();\n const classes = useStyles();\n\n const onConfirm = async () => {\n setLoading(true);\n try {\n let decoded = decodeURIComponent(url.trim());\n const regex = /^https?:\\/\\//;\n let addProtocol = false;\n if (!regex.test(decoded)) {\n decoded = `https://${decoded}`;\n addProtocol = true;\n }\n\n // validate\n try {\n new URL(decoded); // eslint-disable-line no-new\n } catch {\n throw new Error('Invalid Blocklet Store URL');\n }\n\n if (info.blockletRegistryList.some(item => [url, decoded].includes(item.url))) {\n throw new Error(t('store.blockletRegistry.haveSameRegistry'));\n }\n\n await api.addBlockletRegistry({ input: { url: addProtocol ? `https://${url}` : url } });\n window.location.reload();\n } catch (err) {\n const errMsg = `${t('store.blockletRegistry.addFailed')} ${formatError(err)}`;\n setError(errMsg);\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <>\n <ListItem\n button\n disabled={disabled}\n className={classes.addMenuItemRoot}\n onClick={() => {\n setOpen(true);\n }}>\n <AddIcon fontSize=\"small\" />\n <Typography variant=\"inherit\">{t('store.blockletRegistry.addRegistry')}</Typography>\n </ListItem>\n <Dialog\n title={t('store.blockletRegistry.addRegistry')}\n fullWidth\n maxWidth=\"md\"\n open={open}\n onClose={() => setOpen(false)}\n PaperProps={{ style: { minHeight: 'auto' } }}\n actions={\n <>\n <Button\n onClick={e => {\n e.stopPropagation();\n setOpen(false);\n }}\n color=\"default\"\n rounded\n size=\"small\">\n {t('common.cancel')}\n </Button>\n <Button\n onClick={e => {\n e.stopPropagation();\n onConfirm();\n }}\n color=\"primary\"\n size=\"small\"\n data-cy=\"install-blocklet-next-step\"\n disabled={loading || !url || disable}\n variant=\"contained\"\n autoFocus\n rounded>\n {loading && <Spinner size={[16, 10]} />}\n {t('common.confirm')}\n </Button>\n </>\n }>\n <div style={{ paddingTop: 12, overflowY: 'hidden' }}>\n <DialogContentText component=\"div\">\n <Typography component=\"div\">\n <TextField\n label={t('store.blockletRegistry.registryUrl')}\n autoComplete=\"off\"\n variant=\"outlined\"\n name=\"url\"\n fullWidth\n value={url}\n onChange={e => {\n setError(null);\n let isDisabled = false;\n if (!e.target.value.trim()) {\n isDisabled = true;\n }\n if (!e.target.value.trim()) {\n setError(t('store.blockletRegistry.registryUrlEmpty'));\n }\n setUrl(e.target.value);\n setDisable(isDisabled);\n }}\n disabled={loading}\n onKeyPress={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n if (!e.target.value.trim()) {\n setError(t('store.blockletRegistry.registryUrlEmpty'));\n } else {\n onConfirm();\n }\n }\n }}\n />\n </Typography>\n </DialogContentText>\n </div>\n {!!error && (\n <Alert type=\"error\" style={{ width: '100%' }}>\n {error}\n </Alert>\n )}\n </Dialog>\n </>\n );\n}\n\nAddBlockletRegistry.propTypes = {\n disabled: PropTypes.bool,\n};\n\nAddBlockletRegistry.defaultProps = {\n disabled: false,\n};\n","/* eslint-disable react/prop-types */\nimport React, { useState } from 'react';\nimport { useSnackbar } from 'notistack';\nimport IconButton from '@material-ui/core/IconButton';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\nimport DelConfirm from '../delete-confirm';\nimport { useNodeContext } from '../../contexts/node';\nimport { formatError } from '../../libs/util';\n\nexport default function DeleteBlockletRegistry(props) {\n const { enqueueSnackbar } = useSnackbar();\n const { api } = useNodeContext();\n const { t } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [confirmSetting, setConfirmSetting] = useState(null);\n const { blockletRegistry } = props;\n\n const onCancel = () => {\n setLoading(false);\n setConfirmSetting(null);\n };\n\n const onConfirm = async () => {\n try {\n setLoading(true);\n await api.deleteBlockletRegistry({ input: { url: blockletRegistry.url } });\n window.location.reload();\n } catch (err) {\n enqueueSnackbar(`Remove Blocklet Store Error: ${formatError(err)}`, {\n autoHideDuration: 2000,\n variant: 'error',\n });\n } finally {\n setLoading(false);\n setConfirmSetting(null);\n }\n };\n\n const setting = {\n keyName: blockletRegistry.url,\n title: t('store.blockletRegistry.deleteRegistry'),\n description: t('store.blockletRegistry.deleteDesc', { name: `<b>${blockletRegistry.url}</b>` }),\n confirmPlaceholder: t('store.blockletRegistry.confirmDesc', { name: blockletRegistry.url }),\n confirm: t('common.delConfirm'),\n cancel: t('common.cancel'),\n onConfirm,\n onCancel,\n };\n\n const onMenuItemClick = e => {\n e.stopPropagation();\n setConfirmSetting(setting);\n };\n\n return (\n <>\n <IconButton disabled={loading} onClick={onMenuItemClick}>\n <DeleteOutlineIcon />\n </IconButton>\n {confirmSetting && (\n <DelConfirm\n keyName={confirmSetting.keyName}\n title={confirmSetting.title}\n description={confirmSetting.description}\n confirmPlaceholder={confirmSetting.confirmPlaceholder}\n confirm={confirmSetting.confirm}\n cancel={confirmSetting.cancel}\n params={confirmSetting.params}\n onConfirm={confirmSetting.onConfirm}\n onCancel={confirmSetting.onCancel}\n />\n )}\n </>\n );\n}\n","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { forwardRef, useImperativeHandle, useState } from 'react';\nimport { useSnackbar } from 'notistack';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Dialog from '@arcblock/ux/lib/Dialog';\nimport Typography from '@material-ui/core/Typography';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport LaunchIcon from '@material-ui/icons/Launch';\nimport IconButton from '@material-ui/core/IconButton';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\nimport AddBlockletRegistry from './add';\nimport DeleteBlockletRegistry from './delete';\nimport Permission from '../permission';\n\nimport { useNodeContext } from '../../contexts/node';\nimport { formatError } from '../../libs/util';\n\nconst useStyles = makeStyles(() => ({\n buttonText: {\n textTransform: 'none !important',\n },\n iconRoot: {\n minWidth: 24,\n },\n menuName: {\n display: 'flex',\n flexDirection: 'column',\n marginRight: '100px',\n '& span': { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' },\n },\n}));\n\nfunction SwitchBlockletRegistry(props, ref) {\n const { api, info } = useNodeContext();\n const { t } = useLocaleContext();\n const { enqueueSnackbar } = useSnackbar();\n const [loading, setLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [menuIndex, setMenuIndex] = React.useState(-1);\n const classes = useStyles();\n const selectedIndex = info.blockletRegistryList.findIndex(x => x.selected);\n\n const onSelect = async index => {\n try {\n setLoading(true);\n setMenuIndex(index);\n\n const blockletRegistry = info.blockletRegistryList[index];\n await api.selectBlockletRegistry({ input: { url: blockletRegistry.url } });\n window.location.reload();\n } catch (err) {\n console.error(err);\n setLoading(false);\n enqueueSnackbar(`${t('store.blockletRegistry.changeFailed')} ${formatError(err)}`, {\n autoHideDuration: 2000,\n variant: 'error',\n });\n }\n };\n\n useImperativeHandle(ref, () => ({\n setOpen,\n }));\n\n return (\n <>\n <Permission permission=\"mutate_node\">\n {hasPermission => (\n <Button\n disabled={!hasPermission}\n classes={{ text: classes.buttonText }}\n color=\"secondary\"\n data-cy=\"store-toggle\"\n onClick={() => {\n setOpen(true);\n }}\n endIcon={<ArrowDropDownIcon />}>\n <Typography color=\"secondary\">{info.blockletRegistryList[selectedIndex].name}</Typography>\n </Button>\n )}\n </Permission>\n <Dialog\n title={t('store.blockletRegistry.switchRegistry')}\n disableBackdropClick\n disableEscapeKeyDown\n disablePortal={false}\n fullWidth\n open={open}\n onClose={() => setOpen(false)}>\n <List className={classes.tabPanel}>\n {info.blockletRegistryList.map((x, index) => (\n <ListItem\n button\n disabled={loading}\n key={x.url}\n selected={selectedIndex === index}\n data-cy=\"store-switch\"\n onClick={() => {\n if (loading) {\n return;\n }\n\n if (index === selectedIndex) {\n setOpen(false);\n return;\n }\n\n onSelect(index);\n }}>\n <ListItemIcon className={classes.iconRoot}>\n {menuIndex === index && loading && <Spinner size={[16, 10]} />}\n </ListItemIcon>\n <ListItemText>\n <div className={classes.menuName}>\n <Typography component=\"span\" variant=\"subtitle1\" style={{ fontWeight: '500' }}>\n {x.name}\n </Typography>\n <Typography className=\"url\" component=\"span\" variant=\"inherit\">\n {`${x.url}`}\n </Typography>\n </div>\n <ListItemSecondaryAction>\n <IconButton\n onClick={e => {\n e.stopPropagation();\n window.open(x.url);\n }}>\n <LaunchIcon />\n </IconButton>\n {!x.protected && <DeleteBlockletRegistry blockletRegistry={x} />}\n </ListItemSecondaryAction>\n </ListItemText>\n </ListItem>\n ))}\n <AddBlockletRegistry disabled={loading} />\n </List>\n </Dialog>\n </>\n );\n}\n\nSwitchBlockletRegistry.propTypes = {};\n\nexport default forwardRef(SwitchBlockletRegistry);\n","/* eslint-disable react/jsx-one-expression-per-line */\n/* eslint-disable operator-linebreak */\nimport React, { useState, useContext, useRef, useMemo } from 'react';\nimport styled from 'styled-components';\nimport useAsyncRetry from 'react-use/lib/useAsyncRetry';\nimport useLocalStorage from 'react-use/lib/useLocalStorage';\nimport { Link } from 'react-router-dom';\nimport orderBy from 'lodash/orderBy';\nimport PropTypes from 'prop-types';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport Typography from '@material-ui/core/Typography';\nimport Box from '@material-ui/core/Box';\nimport Breadcrumbs from '@material-ui/core/Breadcrumbs';\nimport TextField from '@material-ui/core/TextField';\nimport Icon from '@arcblock/ux/lib/Icon';\n\nimport ArrowDownwardSharpIcon from '@material-ui/icons/ArrowDownwardSharp';\nimport ArrowUpwardSharpIcon from '@material-ui/icons/ArrowUpwardSharp';\nimport Alert from '@arcblock/ux/lib/Alert';\nimport Empty from '@arcblock/ux/lib/Empty';\nimport Button from '@arcblock/ux/lib/Button';\nimport ButtonGroup from '@arcblock/ux/lib/ButtonGroup';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport BlockletList from '../../components/blocklet/list';\nimport { useNodeContext } from '../../contexts/node';\nimport { formatError } from '../../libs/util';\nimport SwitchBlockletRegistry from '../../components/registry/switch';\n\nconst SortIcon = ({ direction }) => (direction === 'desc' ? <ArrowDownwardSharpIcon /> : <ArrowUpwardSharpIcon />);\n\nSortIcon.propTypes = {\n direction: PropTypes.string,\n};\nSortIcon.defaultProps = {\n direction: 'asc',\n};\n\nexport default function BlockletStore() {\n const { api, info } = useNodeContext();\n const { t } = useContext(LocaleContext);\n const [keyword, setKeyword] = useState('');\n const [directions, setDirections] = useLocalStorage('directions', { title: 'asc', popularity: 'desc' });\n const [mainFactor, setMainFactor] = useLocalStorage('popularity', 'popularity');\n\n const currentRegistry = info.blockletRegistryList.find(x => x.selected);\n\n const state = useAsyncRetry(async () => {\n const { blocklets } = await api.listBlocklets({ input: { registryUrl: currentRegistry.url } });\n return blocklets;\n });\n\n const rawList = (state.value || []).map(item => {\n item.searchContent = [item.title, item.name, item.description]\n .filter(Boolean)\n .join('')\n .toLocaleLowerCase()\n .replace(/\\s/g, '');\n\n return item;\n });\n\n const filterList = useMemo(() => {\n const sortByName = x => x.title || x.name;\n const sortByPopularity = x => x.stats.downloads;\n const word = keyword.toLowerCase().replace(/\\s/g, '');\n const sortLists = orderBy(\n rawList.filter(item => item.searchContent.includes(word)),\n mainFactor === 'title' ? [sortByName, sortByPopularity] : [sortByPopularity, sortByName],\n mainFactor === 'title' ? [directions.title, directions.popularity] : [directions.popularity, directions.title]\n );\n return sortLists;\n }, [rawList, keyword, directions, mainFactor]);\n\n const handleSort = (property, sort) => {\n const newSort = sort === 'desc' ? 'asc' : 'desc';\n setDirections({ ...directions, [property]: newSort });\n setMainFactor(property);\n };\n const switchEl = useRef(null);\n\n let content = null;\n if (filterList.length) {\n content = <BlockletList blocklets={filterList} />;\n } else if (state.error) {\n content = (\n <Alert type=\"error\" variant=\"icon\">\n <div>\n {formatError(state.error)}\n <Link\n style={{ marginLeft: '12px' }}\n to=\"/settings/basic\"\n onClick={e => {\n switchEl.current.setOpen(true);\n e.preventDefault();\n }}>\n Change Registry\n {'>>'}\n </Link>\n </div>\n </Alert>\n );\n } else if (state.loading) {\n content = <Spinner />;\n } else {\n content = <Empty>{t('common.emptyData')}</Empty>;\n }\n\n return (\n <Main>\n <Breadcrumbs separator=\"›\" aria-label=\"breadcrumb\" className=\"page-breadcrumb\">\n <Typography color=\"textPrimary\">{t('common.store')}</Typography>\n <SwitchBlockletRegistry ref={switchEl} />\n </Breadcrumbs>\n <Box className=\"store-header\" display=\"flex\" justifyContent=\"space-between\" p={0} m={0}>\n <Typography component=\"h2\" variant=\"h4\" className=\"page-header\" color=\"textPrimary\">\n {t('store.headerDescription')}\n </Typography>\n <Box mt={0} display=\"flex\" alignItems=\"center\">\n <TextField\n size=\"small\"\n placeholder={t('common.search')}\n style={{ marginRight: '15px' }}\n value={keyword}\n defaultValue={keyword}\n onChange={e => setKeyword(e.target.value)}\n data-cy=\"search\"\n InputProps={{\n startAdornment: <Icon name=\"search\" size={16} style={{ marginRight: '6px', marginBottom: '6px' }} />,\n endAdornment: (\n <span\n onClick={() => setKeyword('')}\n style={{ margin: '0 5px 6px 6px', cursor: 'pointer' }}\n data-cy=\"search-delete\">\n <Icon name=\"times\" size={16} />\n </span>\n ),\n }}\n />\n <ButtonGroup size=\"small\" color=\"primary\" aria-label=\"split button\" style={{ whiteSpace: 'nowrap' }}>\n <Button\n onClick={() => handleSort('popularity', directions.popularity)}\n endIcon={<SortIcon direction={directions.popularity} />}\n className=\"sort-button\"\n color=\"secondary\"\n variant={mainFactor === 'popularity' ? 'contained' : 'outlined'}>\n {t('store.popularSort')}\n </Button>\n\n <Button\n onClick={() => handleSort('title', directions.title)}\n endIcon={<SortIcon direction={directions.title} />}\n className=\"sort-button\"\n color=\"secondary\"\n variant={mainFactor === 'title' ? 'contained' : 'outlined'}>\n {t('store.nameSort')}\n </Button>\n </ButtonGroup>\n </Box>\n </Box>\n {content}\n </Main>\n );\n}\n\nconst Main = styled.main`\n .sort-button {\n border-radius: 0 !important;\n }\n\n @media (max-width: ${props => props.theme.breakpoints.values.sm}px) {\n .store-header {\n flex-direction: column;\n margin-bottom: 32px !important;\n }\n\n .page-header {\n margin-bottom: 16px !important;\n }\n }\n`;\n","export { default } from './Snackbar';","export { default } from './SnackbarContent';","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","\"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 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\n\nexports.default = _default;","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport Copy from '@arcblock/ux/lib/ClickToCopy';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nexport default function ClickToCopy({ children, ...rest }) {\n const { t } = useContext(LocaleContext);\n return (\n <Copy tip={t('common.copyTip')} copiedTip={t('common.copiedTip')} {...rest}>\n {children}\n </Copy>\n );\n}\n\nClickToCopy.propTypes = {\n children: PropTypes.any.isRequired,\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _styledComponents = _interopRequireDefault(require(\"styled-components\"));\n\nvar _Icon = _interopRequireDefault(require(\"../Icon\"));\n\nconst _excluded = [\"name\", \"color\", \"size\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nconst Wrapper = _styledComponents.default.div.withConfig({\n displayName: \"Empty__Wrapper\",\n componentId: \"sc-g0b1j7-0\"\n})([\"display:flex;justify-content:center;align-items:center;flex-direction:column;height:100%;min-height:100px;color:#999;.empty-icon{margin:10px 0;}\"]);\n\nfunction Empty(_ref) {\n let {\n name,\n color,\n size,\n children\n } = _ref,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/_react.default.createElement(Wrapper, rest, /*#__PURE__*/_react.default.createElement(_Icon.default, {\n name: name,\n size: size,\n className: \"empty-icon\",\n color: color\n }), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"empty-content\"\n }, children));\n}\n\nEmpty.propTypes = {\n color: _propTypes.default.string,\n name: _propTypes.default.string,\n size: _propTypes.default.number,\n children: _propTypes.default.any\n};\nEmpty.defaultProps = {\n color: 'inherit',\n name: 'inbox',\n size: 36,\n children: null\n};\nvar _default = Empty;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = Toast;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _CheckCircle = _interopRequireDefault(require(\"@material-ui/icons/CheckCircle\"));\n\nvar _Error = _interopRequireDefault(require(\"@material-ui/icons/Error\"));\n\nvar _Info = _interopRequireDefault(require(\"@material-ui/icons/Info\"));\n\nvar _Close = _interopRequireDefault(require(\"@material-ui/icons/Close\"));\n\nvar _Warning = _interopRequireDefault(require(\"@material-ui/icons/Warning\"));\n\nvar _IconButton = _interopRequireDefault(require(\"@material-ui/core/IconButton\"));\n\nvar _Snackbar = _interopRequireDefault(require(\"@material-ui/core/Snackbar\"));\n\nvar _SnackbarContent = _interopRequireDefault(require(\"@material-ui/core/SnackbarContent\"));\n\nvar _colors = require(\"@material-ui/core/colors\");\n\nvar _styles = require(\"@material-ui/core/styles\");\n\nconst _excluded = [\"className\", \"message\", \"onClose\", \"variant\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nconst variantIcon = {\n success: _CheckCircle.default,\n warning: _Warning.default,\n error: _Error.default,\n info: _Info.default\n};\nconst useStyles1 = (0, _styles.makeStyles)(theme => ({\n success: {\n backgroundColor: _colors.green[600]\n },\n error: {\n backgroundColor: theme.palette.error.dark\n },\n info: {\n backgroundColor: theme.palette.primary.main\n },\n warning: {\n backgroundColor: _colors.amber[700]\n },\n icon: {\n fontSize: 20\n },\n iconVariant: {\n opacity: 0.9,\n marginRight: theme.spacing(1)\n },\n message: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n\nfunction SnackbarContentWrapper(props) {\n const classes = useStyles1();\n\n const {\n className,\n message,\n onClose,\n variant\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n\n const Icon = variantIcon[variant];\n return /*#__PURE__*/_react.default.createElement(_SnackbarContent.default, Object.assign({\n className: [classes[variant], className].join(' ').trim(),\n message: /*#__PURE__*/_react.default.createElement(\"span\", {\n id: \"client-snackbar\",\n className: classes.message\n }, /*#__PURE__*/_react.default.createElement(Icon, {\n className: [classes.icon, classes.iconVariant].join(' ').trim()\n }), message),\n action: [/*#__PURE__*/_react.default.createElement(_IconButton.default, {\n key: \"close\",\n \"aria-label\": \"close\",\n color: \"inherit\",\n onClick: onClose\n }, /*#__PURE__*/_react.default.createElement(_Close.default, {\n className: classes.icon\n }))]\n }, rest));\n}\n\nSnackbarContentWrapper.propTypes = {\n message: _propTypes.default.string.isRequired,\n onClose: _propTypes.default.func.isRequired,\n className: _propTypes.default.string,\n variant: _propTypes.default.oneOf(['error', 'info', 'success', 'warning'])\n};\nSnackbarContentWrapper.defaultProps = {\n className: '',\n variant: 'success'\n};\n\nfunction Toast(_ref) {\n let {\n onClose,\n variant,\n duration,\n message\n } = _ref;\n\n const [open, setOpen] = _react.default.useState(true);\n\n const handleClose = (e, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n\n setOpen(false);\n onClose();\n };\n\n return /*#__PURE__*/_react.default.createElement(_Snackbar.default, {\n open: open,\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'right'\n },\n autoHideDuration: duration,\n onClose: handleClose\n }, /*#__PURE__*/_react.default.createElement(SnackbarContentWrapper, {\n onClose: handleClose,\n variant: variant,\n message: message\n }));\n}\n\nToast.propTypes = {\n message: _propTypes.default.string.isRequired,\n variant: _propTypes.default.string,\n duration: _propTypes.default.number,\n onClose: _propTypes.default.func\n};\nToast.defaultProps = {\n variant: 'success',\n duration: 3000,\n onClose: () => {}\n};"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (this["webpackJsonp@abtnode/webapp"]=this["webpackJsonp@abtnode/webapp"]||[]).push([[19],{1003:function(e,t,n){"use strict";n.d(t,"a",(function(){return y}));var a,r=n(32),i=n(119),l=n(0),o=n.n(l),c=n(14),s=n(51),u=n.n(s),d=n(459),m=n(20),f=n(1011),p=n(1026),b=n(42),g=["status","variant","source"],v="#FFCF71",h="#888888";function y(e){var t=e.status,n=e.variant,a=e.source,r=Object(i.a)(e,g),c=Object(l.useContext)(m.LocaleContext).t,s={added:h,waiting:v,downloading:v,downloaded:h,installing:v,installed:h,starting:v,running:"success",stopping:v,stopped:h,error:"error",upgrading:v,restarting:v,corrupted:"error",deleting:v},p=Object(b.x)(t),y=c("blocklet.status.".concat("custom"===a&&"installed"===t?"created":t));return"dot"===n?o.a.createElement(d.a,{title:c("blocklet.statusTip",{status:y})},o.a.createElement(f.a,Object.assign({color:s[t]},r))):o.a.createElement(j,Object.assign({type:{added:"primary",waiting:"warning",downloading:"warning",downloaded:"primary",installing:"warning",installed:"primary",starting:"warning",running:"success",stopping:"warning",stopped:"reverse",error:"error",upgrading:"warning",restarting:"warning",corrupted:"error",deleting:"warning"}[t]},r),p&&o.a.createElement(u.a,{size:[12,6],color:"inherit",style:{marginRight:5}}),y)}y.defaultProps={variant:"tag",source:""};var j=Object(c.default)(p.a)(a||(a=Object(r.a)(["\n border-radius: 5px;\n border: 1px solid #ccc;\n"])))},1011:function(e,t,n){"use strict";var a,r=n(32),i=n(14),l={success:"#3ab39d",error:"#D0021B"},o=i.default.div(a||(a=Object(r.a)(["\n display: inline-block;\n width: ",";\n height: ",";\n background: ",";\n border-radius: 100%;\n"])),(function(e){return e.size||"10px"}),(function(e){return e.size||"10px"}),(function(e){return l[e.color]||e.color||l.success}));t.a=o},1026:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var a=n(119),r=n(0),i=n.n(r),l=n(191),o=n.n(l),c=["children"];function s(e){var t=e.children,n=Object(a.a)(e,c);return i.a.createElement(o.a,Object.assign({style:{borderRadius:5,border:"1px solid #ccc"}},n),t)}},1027:function(e,t,n){"use strict";n.d(t,"a",(function(){return p}));var a=n(119),r=n(0),i=n.n(r),l=n(97),o=n.n(l),c=n(928),s=n(356),u=n.n(s),d=n(29),m=n(42),f=["blocklet","style","size"];function p(e){var t=e.blocklet,n=e.style,r=e.size,l=Object(a.a)(e,f),s=Object(d.c)(),p=o()(s.prefix,"blocklet.png"),b=l.variant,g=function(e,t){var n=e.deployedFrom;return n||"registry"!==e.source||(n=t.info.blockletRegistry),n}(t,s);if("registry"===t.source&&t.meta.logo)p=o()(g,Object(m.i)(t.meta.did,t.meta.logo));else{var v=window.env.apiPrefix||"/";p=o()(v,"/blocklet/logo/".concat(t.meta.did))}var h=i.a.createElement("img",{src:p,onError:function(e){e.target.src="".concat(s.prefix,"/blocklet.png")},alt:t.meta.name,style:{width:r}});return t.meta.logo||(h=i.a.createElement(u.a,{did:t.meta.did||"",size:r})),i.a.createElement(c.a,Object.assign({variant:b||"square",style:Object.assign({backgroundColor:"transparent",width:r,height:r},n)},l),h)}p.defaultProps={style:{},size:40}},1036:function(e,t,n){"use strict";var a=n(979),r=n.n(a),i=n(1080),l=n.n(i),o=n(1081),c=n.n(o),s=n(1082),u=n.n(s),d=n(1083),m=n.n(d),f=n(1084),p=n.n(f),b=n(1085),g=n.n(b),v=n(1086),h=n.n(v);t.a={Start:l.a,Stop:c.a,Restart:u.a,Reload:m.a,Remove:r.a,Config:p.a,Log:g.a,Group:h.a}},1053:function(e,t){e.exports={}},1080:function(e,t,n){"use strict";var a=n(34),r=n(76);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(0)),l=(0,a(n(77)).default)(i.createElement("path",{d:"M8 5v14l11-7z"}),"PlayArrow");t.default=l},1081:function(e,t,n){"use strict";var a=n(34),r=n(76);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(0)),l=(0,a(n(77)).default)(i.createElement("path",{d:"M6 6h12v12H6z"}),"Stop");t.default=l},1082:function(e,t,n){"use strict";var a=n(34),r=n(76);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(0)),l=(0,a(n(77)).default)(i.createElement("path",{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"}),"Replay");t.default=l},1083:function(e,t,n){"use strict";var a=n(34),r=n(76);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(0)),l=(0,a(n(77)).default)(i.createElement("path",{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"}),"Autorenew");t.default=l},1084:function(e,t,n){"use strict";var a=n(34),r=n(76);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(0)),l=(0,a(n(77)).default)(i.createElement("path",{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"}),"Settings");t.default=l},1085:function(e,t,n){"use strict";var a=n(34),r=n(76);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(0)),l=(0,a(n(77)).default)(i.createElement("path",{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"}),"Receipt");t.default=l},1086:function(e,t,n){"use strict";var a=n(34),r=n(76);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(0)),l=(0,a(n(77)).default)(i.createElement("path",{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"}),"Group");t.default=l},1189:function(e,t,n){var a=n(1028)((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()}));e.exports=a},1303:function(e,t,n){"use strict";n.d(t,"a",(function(){return P}));var a,r=n(32),i=n(119),l=n(0),o=n.n(l),c=n(14),s=n(950),u=n(20),d=n(37),m=n(345),f=n(13),p=n(1189),b=n.n(p),g=n(326),v=n(459),h=n(191),y=n.n(h),j=n(567),E=n.n(j),x=Object(g.a)((function(){return{tooltip:{maxWidth:"none"}}}));function O(e){var t=e.meta,n=x();return t&&Array.isArray(t.services)?t.services.map((function(e){var t=b()(e.name.replace(/^@abtnode\//,"").replace(/-service$/,"")),a=[];return e.config&&(a=Object.entries(e.config).map((function(e){var t;return e[1]=(t=e[1],Array.isArray(t)?t.join(", "):String(t)),e})).filter((function(e){return e[1]})).sort((function(e,t){var n=e[0]||"",a=t[0]||"";return n.localeCompare(a)}))),o.a.createElement(v.a,{interactive:!0,classes:{tooltip:n.tooltip},title:o.a.createElement("div",{style:{paddingRight:20}},a.map((function(e){var t=Object(f.a)(e,2),n=t[0],a=t[1];return o.a.createElement(M,null,o.a.createElement("div",{style:{flexShrink:0,width:150,textAlign:"right",marginRight:10}},"".concat(n,":")),o.a.createElement("div",null,a))})))},o.a.createElement(y.a,{style:{margin:"0 4px",cursor:"pointer"},type:"success"},"AUTH"===t&&o.a.createElement(E.a,{style:{marginRight:4,fill:"rgb(91, 144, 37)"}}),t))})):null}var w,k,M=c.default.div(a||(a=Object(r.a)(["\n display: flex;\n margin: 4px 0;\n"]))),z=["blocklet","siteMap"];function P(e){var t=e.blocklet,n=e.siteMap,a=Object(i.a)(e,z),r=Object(l.useContext)(u.LocaleContext),c=r.t,f=r.locale;if("running"!==t.status)return null;var p=Object(m.e)({did:t.meta.did,siteMap:n,locale:f});return o.a.createElement(C,a,o.a.createElement(L,null,o.a.createElement(s.a,{href:p,target:"_blank",className:"blocklet-interface"},c("common.open")),o.a.createElement(O,{meta:t.meta.interfaces.find((function(e){return e.type===d.BLOCKLET_INTERFACE_TYPE_WEB}))})))}var L=c.default.div(w||(w=Object(r.a)(["\n display: flex;\n margin: 4px 0;\n"]))),C=c.default.div(k||(k=Object(r.a)(["\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"])))},1845:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return A}));var a,r,i=n(32),l=n(59),o=n(10),c=n.n(o),s=n(19),u=n(13),d=n(0),m=n.n(d),f=n(14),p=n(1002),b=n.n(p),g=n(65),v=n(303),h=n(51),y=n.n(h),j=n(346),E=n.n(j),x=n(191),O=n.n(x),w=n(20),k=n(29),M=n(345),z=n(42),P=n(517),L=n(990),C=n(1036),S=n(1027),R=n(1303),T=n(1003),_=n(991);function A(){var e=Object(k.c)(),t=e.api,n=e.info,a=Object(d.useState)([]),r=Object(u.a)(a,2),i=r[0],o=r[1],f=Object(d.useState)([]),p=Object(u.a)(f,2),h=p[0],j=p[1],x=Object(d.useState)(!1),A=Object(u.a)(x,2),F=A[0],V=A[1],D=Object(d.useState)(null),N=Object(u.a)(D,2),I=N[0],W=N[1],G=Object(d.useContext)(w.LocaleContext).t,J=n.mode,U=n.routing,q=n.version;Object(d.useEffect)((function(){if("debug"===J){var e=null;return V(!0),function a(){t.doBatchQuery({getBlocklets:{input:{}},getRoutingSites:{input:{snapshotHash:""}}}).then(function(){var t=Object(s.a)(c.a.mark((function t(r){return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return V(!1),W(null),o(r.getBlocklets.blocklets||[]),t.t0=j,t.t1=M.d,t.next=7,Promise.all((r.getRoutingSites.sites||[]).map(function(){var e=Object(s.a)(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(P.a)(t.domainAliases);case 2:return t.domainAliases=e.sent,e.abrupt("return",t);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 7:t.t2=t.sent,t.t3=window.location.hostname,t.t4=n.port,t.t5={sites:t.t2,defaultDomain:t.t3,nodePort:t.t4},t.t6=(0,t.t1)(t.t5).siteMap,(0,t.t0)(t.t6),e=setTimeout(a,5e3);case 14:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(t){V(!1),W(t),e=setTimeout(a,5e3)}))}(),function(){clearInterval(e)}}return function(){}}),[J]);var K=(i||[]).filter((function(e){return["running","starting","stopping"].includes(e.status)}));K.unshift({meta:{name:"Blocklet Server",did:n.did,version:q,interfaces:[]},status:"running"});var Q=Object(l.a)({},h);Q[n.did]={domainAliases:[{value:window.location.hostname}],rules:[{name:U.adminPath}]};var Y=null;if(F)Y=m.a.createElement(y.a,null);else if(K.length>0){var $=K;Y=m.a.createElement(_.a,{className:"blocklet-list"},m.a.createElement(b.a,{data:$,icons:Object(l.a)(Object(l.a)({},C.a),L.a),options:{emptyRowsWhenPaging:!1,actionsColumnIndex:-1,tableLayout:"auto",paging:!1,search:!1,header:!1,showTitle:!1},localization:{body:{emptyDataSourceMessage:G("common.noData")}},columns:[{title:G("common.name"),field:"meta.name",render:function(e){return m.a.createElement(g.a,{component:"strong",variant:"body1",className:"blocklet-name"},m.a.createElement(S.a,{blocklet:e,style:{marginRight:8}}),e.meta.title||e.meta.name)}},{title:G("common.version"),field:"meta.version",render:function(e){return m.a.createElement(O.a,null,e.meta.version)}},{title:G("common.status"),field:"status",render:function(e){return m.a.createElement(T.a,{key:e.meta.did,status:e.status,source:e.source})}},{title:G("common.visit"),field:"runtimeInfo.pid",sorting:!1,render:function(e){return m.a.createElement(R.a,{blocklet:e,siteMap:Q})}}]}))}return m.a.createElement(B,null,m.a.createElement(H,null,m.a.createElement("h1",null,G("debug.title"))),I&&m.a.createElement(E.a,{type:"error",variant:"icon"},Object(z.e)(I)),"debug"!==J&&m.a.createElement(v.a,{my:1},m.a.createElement(E.a,{type:"warning"},G("blocklet.dev.modeTip"),m.a.createElement("pre",{style:{background:"rgba(255, 255, 255, 0.5)"}},m.a.createElement("code",null,"\xa0\xa0blocklet server stop ",m.a.createElement("br",null),"\xa0\xa0mkdir debug-server && cd debug-server ",m.a.createElement("br",null),"\xa0\xa0blocklet server init -f --mode debug ",m.a.createElement("br",null),"\xa0\xa0blocklet server start")))),Y)}var H=f.default.header(a||(a=Object(i.a)(["\n font-family: 'Roboto';\n h1 {\n font-size: 24px;\n .primary {\n color: #00c2c4;\n }\n }\n"]))),B=f.default.main(r||(r=Object(i.a)(["\n box-sizing: border-fox;\n padding: 10px 10px 40px;\n max-width: 800px;\n margin: 0 auto;\n\n .blocklet-list {\n .blocklet-name {\n font-weight: bold;\n display: flex;\n align-items: center;\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-regular {\n min-height: 0;\n border-bottom: 1px solid #ddd;\n }\n\n .MuiToolbar-root {\n display: flex;\n }\n\n .MuiTableHead-root th {\n min-width: 100px;\n }\n }\n"])))},990:function(e,t,n){"use strict";var a=n(973),r=n.n(a),i=n(203),l=n.n(i),o=n(979),c=n.n(o),s=n(553),u=n.n(s),d=n(1077),m=n.n(d),f=n(1009),p=n.n(f),b=n(1073),g=n.n(b),v=n(1074),h=n.n(v),y=n(1075),j=n.n(y),E=n(1055),x=n.n(E),O=n(1076),w=n.n(O),k=n(1016),M=n.n(k),z=n(1010),P=n.n(z),L=n(1078),C=n.n(L),S=n(1079),R=n.n(S);t.a={Add:r.a,Check:l.a,Delete:c.a,Edit:p.a,Clear:u.a,DetailPanel:x.a,Filter:g.a,FirstPage:h.a,LastPage:j.a,NextPage:x.a,PreviousPage:w.a,Search:M.a,ResetSearch:u.a,SortArrow:P.a,Export:m.a,ThirdStateCheck:C.a,ViewColumn:R.a}},991:function(e,t,n){"use strict";var a,r=n(32),i=n(14).default.div(a||(a=Object(r.a)(["\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"])));t.a=i}}]);
2
+ //# sourceMappingURL=19.792be34a.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/blocklet/status.js","components/dot.js","components/tag.js","components/blocklet/avatar.js","components/blocklet/icons.js","../../mocks/lib/jspdf.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/lodash/upperCase.js","components/blocklet/service-tags.js","components/blocklet/interface.js","pages/debug/index.js","components/table-icons.js","components/table.js"],"names":["colors","BlockletStatus","status","variant","source","rest","t","useContext","LocaleContext","colorMap","added","waiting","downloading","downloaded","installing","installed","starting","running","stopping","stopped","error","upgrading","restarting","corrupted","deleting","inProgress","isInProgress","statusTxt","title","color","ReTag","type","size","style","marginRight","defaultProps","styled","Tag","success","Dot","div","props","children","borderRadius","border","BlockletAvatar","blocklet","node","useNodeContext","logoUrl","joinURL","prefix","deployedFrom","info","blockletRegistry","getDeployedFrom","meta","logo","formatRegistryLogoPath","did","window","env","apiPrefix","imgEle","src","onError","ev","target","alt","name","width","Object","assign","backgroundColor","height","Start","Stop","Restart","Reload","Remove","Config","Log","Group","module","exports","_interopRequireDefault","require","_interopRequireWildcard","defineProperty","value","default","React","_default","createElement","d","upperCase","createCompounder","result","word","index","toUpperCase","useStyles","makeStyles","tooltip","maxWidth","ServiceTags","classes","Array","isArray","services","map","x","replace","content","config","entries","join","String","filter","sort","a","b","aKey","bKey","localeCompare","Tooltip","interactive","paddingRight","key","Flex","flexShrink","textAlign","margin","cursor","fill","BlockletInterface","siteMap","locale","url","getBlockletUrl","Container","href","className","interfaces","find","BLOCKLET_INTERFACE_TYPE_WEB","BlockletList","api","nodeInfo","useState","blocklets","setBlocklets","setSiteMap","loading","setLoading","setError","mode","routing","version","useEffect","timer","getData","doBatchQuery","getBlocklets","input","getRoutingSites","snapshotHash","then","data","generateSites","Promise","all","sites","site","ensureDomainAliases","domainAliases","location","hostname","port","defaultDomain","nodePort","setTimeout","catch","err","clearInterval","newBlocklets","includes","unshift","newSiteMap","rules","adminPath","length","rows","icons","blockletIcons","tableIcons","options","emptyRowsWhenPaging","actionsColumnIndex","tableLayout","paging","search","header","showTitle","localization","body","emptyDataSourceMessage","columns","field","render","component","sorting","Main","Header","formatError","my","background","main","Add","Check","Delete","Edit","Clear","DetailPanel","NextPage","Filter","FirstPage","LastPage","PreviousPage","Search","ResetSearch","SortArrow","Export","ThirdStateCheck","ViewColumn","TableStyle"],"mappings":"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","file":"static/js/19.792be34a.chunk.js","sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\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, source, ...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 deleting: 'warning',\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 deleting: colors.yellow,\n };\n\n const inProgress = isInProgress(status);\n\n const statusTxt = t(`blocklet.status.${source === 'custom' && status === 'installed' ? 'created' : status}`);\n\n if (variant === 'dot') {\n return (\n <Tooltip title={t('blocklet.statusTip', { status: statusTxt })}>\n <Dot color={colorMap[status]} {...rest} />\n </Tooltip>\n );\n }\n\n return (\n <ReTag type={map[status]} {...rest}>\n {inProgress && <Spinner size={[12, 6]} color=\"inherit\" style={{ marginRight: 5 }} />}\n {statusTxt}\n </ReTag>\n );\n}\n\nBlockletStatus.propTypes = {\n status: PropTypes.string.isRequired,\n variant: PropTypes.oneOf(['dot', 'tag']),\n source: PropTypes.string,\n};\n\nBlockletStatus.defaultProps = {\n variant: 'tag',\n source: '',\n};\n\nconst ReTag = styled(Tag)`\n border-radius: 5px;\n border: 1px solid #ccc;\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","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';\nimport DiDAvatar from '@arcblock/did-connect/lib/Avatar';\n\nimport { useNodeContext } from '../../contexts/node';\nimport { formatRegistryLogoPath } from '../../libs/util';\n\nconst getDeployedFrom = (blocklet, node) => {\n let { deployedFrom } = blocklet;\n if (!deployedFrom && blocklet.source === 'registry') {\n deployedFrom = node.info.blockletRegistry;\n }\n return deployedFrom;\n};\n\nexport default function BlockletAvatar({ blocklet, style, size, ...rest }) {\n const node = useNodeContext();\n let logoUrl = joinURL(node.prefix, 'blocklet.png');\n const { variant } = rest;\n\n const deployedFrom = getDeployedFrom(blocklet, node);\n\n if (blocklet.source === 'registry' && blocklet.meta.logo) {\n logoUrl = joinURL(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 let imgEle = <img src={logoUrl} onError={setFallBackUrl} alt={blocklet.meta.name} style={{ width: size }} />;\n\n if (!blocklet.meta.logo) {\n imgEle = <DiDAvatar did={blocklet.meta.did || ''} size={size} />;\n }\n\n return (\n <Avatar\n variant={variant || 'square'}\n style={Object.assign({ backgroundColor: 'transparent', width: size, height: size }, style)}\n {...rest}>\n {imgEle}\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","module.exports = {};\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;","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 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 { getBlockletUrl } from '../../contexts/routing';\nimport ServiceTags from './service-tags';\n\nexport default function BlockletInterface({ blocklet, siteMap, ...props }) {\n const { t, locale } = useContext(LocaleContext);\n\n if (blocklet.status !== 'running') {\n return null;\n }\n\n const url = getBlockletUrl({ did: blocklet.meta.did, siteMap, locale });\n\n return (\n <Container {...props}>\n <Flex>\n <ExternalLink href={url} target=\"_blank\" className=\"blocklet-interface\">\n {t('common.open')}\n </ExternalLink>\n <ServiceTags meta={blocklet.meta.interfaces.find(x => x.type === BLOCKLET_INTERFACE_TYPE_WEB)} />\n </Flex>\n </Container>\n );\n}\n\nBlockletInterface.propTypes = {\n blocklet: PropTypes.object.isRequired,\n siteMap: PropTypes.object.isRequired,\n};\n\nconst Flex = styled.div`\n display: flex;\n margin: 4px 0;\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","import React, { useContext, useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\nimport MaterialTable from 'material-table';\nimport Typography from '@material-ui/core/Typography';\nimport Box from '@material-ui/core/Box';\nimport Spinner from '@arcblock/ux/lib/Spinner';\n\nimport Alert from '@arcblock/ux/lib/Alert';\nimport Tag from '@arcblock/ux/lib/Tag';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport { useNodeContext } from '../../contexts/node';\nimport { generateSites } from '../../contexts/routing';\nimport { formatError } from '../../libs/util';\nimport ensureDomainAliases from '../../libs/ensure-domain-aliases';\n\nimport tableIcons from '../../components/table-icons';\nimport blockletIcons from '../../components/blocklet/icons';\nimport BlockletAvatar from '../../components/blocklet/avatar';\nimport BlockletInterface from '../../components/blocklet/interface';\nimport BlockletStatus from '../../components/blocklet/status';\n\nimport TableStyle from '../../components/table';\n\nexport default function BlockletList() {\n const { api, info: nodeInfo } = useNodeContext();\n const [blocklets, setBlocklets] = useState([]);\n const [siteMap, setSiteMap] = useState([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n const { t } = useContext(LocaleContext);\n\n const { mode, routing, version } = nodeInfo;\n\n useEffect(() => {\n if (mode === 'debug') {\n const interval = 5000;\n let timer = null;\n\n const getData = () => {\n api\n .doBatchQuery({\n getBlocklets: { input: {} },\n getRoutingSites: { input: { snapshotHash: '' } },\n })\n .then(async data => {\n setLoading(false);\n setError(null);\n\n // set blocklet data\n setBlocklets(data.getBlocklets.blocklets || []);\n\n // set routing data\n setSiteMap(\n generateSites({\n sites: await Promise.all(\n (data.getRoutingSites.sites || []).map(async site => {\n site.domainAliases = await ensureDomainAliases(site.domainAliases);\n return site;\n })\n ),\n defaultDomain: window.location.hostname,\n nodePort: nodeInfo.port,\n }).siteMap\n );\n\n timer = setTimeout(getData, interval);\n })\n .catch(err => {\n setLoading(false);\n setError(err);\n timer = setTimeout(getData, interval);\n });\n };\n setLoading(true);\n getData();\n\n return () => {\n clearInterval(timer);\n };\n }\n\n return () => {};\n }, [mode]); // eslint-disable-line\n\n const newBlocklets = (blocklets || []).filter(d => ['running', 'starting', 'stopping'].includes(d.status));\n\n // mock dashboard as a blocklet\n newBlocklets.unshift({\n meta: {\n name: 'Blocklet Server',\n did: nodeInfo.did,\n version,\n interfaces: [],\n },\n status: 'running',\n });\n\n const newSiteMap = { ...siteMap };\n newSiteMap[nodeInfo.did] = {\n domainAliases: [\n {\n value: window.location.hostname,\n },\n ],\n rules: [\n {\n name: routing.adminPath,\n },\n ],\n };\n\n let content = null;\n if (loading) {\n content = <Spinner />;\n } else if (newBlocklets.length > 0) {\n const rows = newBlocklets;\n content = (\n <TableStyle className=\"blocklet-list\">\n <MaterialTable\n data={rows}\n icons={{ ...blockletIcons, ...tableIcons }}\n options={{\n emptyRowsWhenPaging: false,\n actionsColumnIndex: -1,\n tableLayout: 'auto',\n paging: false,\n search: false,\n header: false,\n showTitle: false,\n }}\n localization={{\n body: {\n emptyDataSourceMessage: t('common.noData'),\n },\n }}\n columns={[\n {\n title: t('common.name'),\n field: 'meta.name',\n render: d => (\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 ),\n },\n {\n title: t('common.version'),\n field: 'meta.version',\n render: d => <Tag>{d.meta.version}</Tag>,\n },\n {\n title: t('common.status'),\n field: 'status',\n render: d => <BlockletStatus key={d.meta.did} status={d.status} source={d.source} />,\n },\n {\n title: t('common.visit'),\n field: 'runtimeInfo.pid',\n sorting: false,\n render: d => <BlockletInterface blocklet={d} siteMap={newSiteMap} />,\n },\n ]}\n />\n </TableStyle>\n );\n }\n\n return (\n <Main>\n <Header>\n <h1>{t('debug.title')}</h1>\n </Header>\n\n {error && (\n <Alert type=\"error\" variant=\"icon\">\n {formatError(error)}\n </Alert>\n )}\n\n {mode !== 'debug' && (\n <Box my={1}>\n <Alert type=\"warning\">\n {t('blocklet.dev.modeTip')}\n <pre style={{ background: 'rgba(255, 255, 255, 0.5)' }}>\n <code>\n &nbsp;&nbsp;blocklet server stop <br />\n &nbsp;&nbsp;mkdir debug-server && cd debug-server <br />\n &nbsp;&nbsp;blocklet server init -f --mode debug <br />\n &nbsp;&nbsp;blocklet server start\n </code>\n </pre>\n </Alert>\n </Box>\n )}\n\n {content}\n </Main>\n );\n}\n\nconst Header = styled.header`\n font-family: 'Roboto';\n h1 {\n font-size: 24px;\n .primary {\n color: #00c2c4;\n }\n }\n`;\n\nconst Main = styled.main`\n box-sizing: border-fox;\n padding: 10px 10px 40px;\n max-width: 800px;\n margin: 0 auto;\n\n .blocklet-list {\n .blocklet-name {\n font-weight: bold;\n display: flex;\n align-items: center;\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-regular {\n min-height: 0;\n border-bottom: 1px solid #ddd;\n }\n\n .MuiToolbar-root {\n display: flex;\n }\n\n .MuiTableHead-root th {\n min-width: 100px;\n }\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"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (this["webpackJsonp@abtnode/webapp"]=this["webpackJsonp@abtnode/webapp"]||[]).push([[24],{1031:function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var a=n(13),r=n(0),o=n(30),c=n(1013),i=n.n(c),s=n(37),l=n(365),m=n(23);function u(e){var t=Object(l.a)(),n=Object(o.k)(),c=i()("sid:blocklet:purchase:".concat(e)),u=Object(a.a)(c,2),p=u[0],d=u[1],f=Object(r.useState)(!1),b=Object(a.a)(f,2),h=b[0],g=b[1],y=Object(r.useState)(null),w=Object(a.a)(y,2),v=w[0],k=w[1],x=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")&&(d(""),n.replace(t.replace(r,"/")))},E=!(!t.get("assetDid")||!p||t.get("sid")!==p);return Object(m.c)(s.BlockletEvents.purchaseChange,(function(t){t.did===e&&(k(t.session),["declined","confirmed","error"].includes(t.session.status)&&(g(!0),setTimeout(x,2e3)))})),Object(r.useEffect)((function(){v&&v.id!==p&&d(v.id)}),[v]),{hasCompleted:h,hasPurchased:E,session:v,setSession:k,doRedirect:x}}},1108:function(e,t,n){"use strict";var a=n(59),r=n(10),o=n.n(r),c=n(19),i=n(13),s=n(0),l=n.n(s),m=n(97),u=n.n(m),p=n(326),d=n(51),f=n.n(d),b=n(974),h=n.n(b),g=n(65),y=n(900),w=n(901),v=n(916),k=n(952),x=n(1147),E=n.n(x),j=n(1148),O=n.n(j),_=n(20),N=n(105),P=n.n(N),C=n(152),A=n.n(C),S=n(153),B=n.n(S),R=n(54),z=n(29),U=n(42),L=n(1031),M=Object(p.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}}}));function T(e){var t=e.meta,n=e.mode,r=e.onCancel,m=e.installOpts,p=Object(_.useLocaleContext)(),d=p.t,b=p.locale,x=Object(z.c)(),j=x.info,N=x.api,C=Object(R.c)().api,S=M(),T=Object(s.useState)("both"!==n?n:""),D=Object(i.a)(T,2),F=D[0],W=D[1],V=Object(s.useState)("both"!==n?2:1),q=Object(i.a)(V,2),J=q[0],I=q[1],H=Object(L.a)(t.did),K=H.session,Y=H.setSession,G=H.hasCompleted,Q=H.doRedirect,X=Object(U.v)(j),Z=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/",$=function(){var e=Object(c.a)(o.a.mark((function e(t){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==F){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)}}(),ee=function(){var e=Object(c.a)(o.a.mark((function e(){var n,r,i;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(F){e.next=2;break}return e.abrupt("return");case 2:if(2!==J){e.next=4;break}return e.abrupt("return");case 4:return n=m&&"component"===m.type?Object(a.a)(Object(a.a)({},m),{},{blockletDid:t.did,action:F}):{registryUrl:j.blockletRegistry,blockletDid:t.did,action:F},e.next=7,N.startSession({input:{data:JSON.stringify(n)}});case 7:r=e.sent,i=r.session,Y(i),I(2),"purchase"===F&&setTimeout(Object(c.a)(o.a.mark((function e(){var n,a,r,c,s,l;return o.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",i.id),n.searchParams.set("locale",b),n.searchParams.set("did",t.did),a=encodeURIComponent(n.href),(r=new URL(window.location.href)).pathname=u()(Z,"/api/did/verify-purchase/token"),r.searchParams.set("sid",i.id),r.searchParams.set("locale",b),r.searchParams.set("autoConnect","false"),e.next=13,C.get(r.href);case 13:c=e.sent,s=c.data,l=encodeURIComponent(s.url),window.location.href=u()(j.blockletRegistry,"/store/purchase/".concat(t.nftFactory,"?cb=").concat(a,"&nw=").concat(l));case 17:case"end":return e.stop()}}),e)}))),100);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),te=function(){Q(),r(),I(1)},ne=[{action:"purchase",title:d("store.purchase.purchase.title"),description:d("store.purchase.purchase.description")},{action:"verify",title:d("store.purchase.verify.title"),description:d("store.purchase.verify.description")}];return 2===J&&"verify"===F&&K?l.a.createElement(A.a,{popup:!0,open:!0,className:S.dialogAuth,action:"verify-purchase",checkFn:C.get,checkTimeout:6e5,socketUrl:C.socketUrl,webWalletUrl:X,extraParams:{locale:b,sid:K.id},onSuccess:function(){setTimeout(r,2e3)},onClose:te,showDownload:!1,locale:b,messages:{title:d("store.purchase.auth.title"),scan:d("store.purchase.auth.scan"),confirm:d("store.purchase.auth.confirm"),success:d("store.purchase.auth.success")}}):l.a.createElement(h.a,{title:d(F&&2===J?"store.purchase.".concat(F,".title"):"store.purchase.title"),disableBackdropClick:!0,disableEscapeKeyDown:!0,open:!0,fullWidth:!0,onClose:te},1===J&&l.a.createElement("div",{style:{marginBottom:16}},l.a.createElement(y.a,{className:S.tabPanel},ne.map((function(e){return l.a.createElement(w.a,{button:!0,key:e.action,selected:F===e.action,onClick:function(){return $(e.action)}},l.a.createElement(k.a,{className:S.iconRoot},"purchase"===e.action?l.a.createElement(E.a,{style:{color:"purchase"===F?B.a.primary.main:"#AAA",fontSize:32}}):l.a.createElement(O.a,{style:{color:"verify"===F?B.a.primary.main:"#AAA",fontSize:32}})),l.a.createElement(v.a,{primary:e.title,secondary:e.description}))}))),l.a.createElement(P.a,{rounded:!0,fullWidth:!0,disabled:!F,variant:"contained",color:"primary",style:{marginTop:16},onClick:ee},d("common.next"))),2===J&&"purchase"===F&&l.a.createElement("div",{style:{textAlign:"center"}},!G&&l.a.createElement(f.a,null),l.a.createElement(g.a,{component:"p"},function(){if(K){if("confirmed"===K.status)return d("store.purchase.confirmed");if("declined"===K.status)return d("store.purchase.declined");if("error"===K.status)return K.message}return d("store.purchase.waiting")}())))}T.defaultProps={installOpts:{type:"blocklet",rootDid:"",mountPoint:"",url:""}},t.a=Object(s.forwardRef)(T)},1275:function(e,t,n){"use strict";n.d(t,"a",(function(){return N}));var a=n(10),r=n.n(a),o=n(19),c=n(13),i=n(119),s=n(0),l=n.n(s),m=n(30),u=n(265),p=n(79),d=n(1274),f=n(51),b=n.n(f),h=n(65),g=n(105),y=n.n(g),w=n(20),v=n(1034),k=n(348),x=n(42),E=n(1031),j=n(344),O=n(1108),_=["showPay","meta","lastVersion","buttonText","registryUrl"];function N(e){var t=e.showPay,n=e.meta,a=e.lastVersion,f=e.buttonText,g=e.registryUrl,N=Object(i.a)(e,_),P=Object(p.c)().enqueueSnackbar,C=Object(w.useLocaleContext)().t,A=Object(m.k)(),S=Object(k.b)(),B=S.api,R=S.data.find((function(e){return e.meta.did===n.did}))||{},z=Object(s.useMemo)((function(){return!!R.status}),[R.status]),U=Object(s.useMemo)((function(){var e;return z?null===(e=R.meta)||void 0===e?void 0:e.version:null}),[z,R.meta]),L=!1===Object(u.isFreeBlocklet)(n),M=Object(s.useState)(!1),T=Object(c.a)(M,2),D=T[0],F=T[1],W=Object(E.a)(n.did).hasPurchased,V=Object(s.useState)(!1),q=Object(c.a)(V,2),J=q[0],I=q[1],H=Object(s.useMemo)((function(){return D?C(z?"blocklet.status.upgrading":L?"blocklet.status.purchasing":"blocklet.status.waiting"):Object(x.y)(R.status)?C("common.".concat(R.status)):""}),[D,R.status,z,C,L]),K=Object(s.useMemo)((function(){return!(!a||!U)&&!(!a||!Object(v.gt)(a,U))}),[a,U]),Y=Object(s.useMemo)((function(){return K?f.upgrade:z?f.open:L?f.purchase:f.install}),[z,K,L,f]),G=Object(s.useMemo)((function(){return!(z&&!K)}),[z,K]),Q=function(){var e=Object(o.a)(r.a.mark((function e(t){var a;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.preventDefault(),t.stopPropagation(),e.prev=2,F(!0),z||!L){e.next=7;break}return I(!0),e.abrupt("return");case 7:return a=z?"upgradeBlocklet":"installBlocklet",e.next=10,B[a]({input:{did:n.did,registryUrl:g}});case 10:e.next=16;break;case 12:e.prev=12,e.t0=e.catch(2),P(Object(x.e)(e.t0),{autoHideDuration:5e3,variant:"error"}),console.error("Blocklet installed failed",e.t0);case 16:return e.prev=16,F(!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)}}(),X=function(e){var t=e.disabled;return l.a.createElement(y.a,Object.assign({key:n.did,onClick:Q,size:"small",disabled:Boolean(H||t),variant:"contained",color:"primary","data-cy":"install-blocklet",rounded:!0},N),H?l.a.createElement(l.a.Fragment,null,l.a.createElement(b.a,{size:[16,10],style:{marginRight:3}}),H):Y)};X.defaultProps={disabled:!1};return l.a.createElement(l.a.Fragment,null,l.a.createElement(d.ActionButton,null,G?l.a.createElement(j.a,{permission:"mutate_blocklet"},(function(e){return l.a.createElement(X,{disabled:!e})})):l.a.createElement(y.a,{rounded:!0,className:"action-button",variant:"contained",color:"primary",size:"small",disabled:Boolean(H),"data-cy":"open-blocklet",onClick:function(e){var t;e.preventDefault(),e.stopPropagation(),A.push("/blocklets/".concat(n.did,"/").concat((t=R)&&(t.configs||[]).some((function(e){return e.required&&!e.value}))?"configuration":"overview"))}},H?l.a.createElement(l.a.Fragment,null,l.a.createElement(b.a,{size:[16,10],style:{marginRight:3}}),H):Y)),z&&L&&t&&l.a.createElement(h.a,{component:"small",style:{fontSize:12,color:"#666",marginLeft:4}},C("blocklet.status.purchased")),(W&&!z||J)&&l.a.createElement(O.a,{meta:n,mode:W?"purchase":"both",onCancel:function(){F(!1),I(!1)}}))}N.defaultProps={lastVersion:"",showPay:!0}},1859:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return Z}));var a,r=n(32),o=n(10),c=n.n(o),i=n(19),s=n(13),l=n(0),m=n.n(l),u=n(14),p=n(366),d=n.n(p),f=n(30),b=n(61),h=n(97),g=n.n(h),y=n(51),w=n.n(y),v=n(65),k=n(959),x=n(949),E=n(191),j=n.n(E),O=n(1623),_=n.n(O),N=n(346),P=n.n(N),C=n(265),A=n(20),S=(n(1624),n(1625),n(119)),B=n(550),R=n.n(B),z=["stats"];function U(e){var t=e.stats,n=Object(S.a)(e,z),a=Object(l.useContext)(A.LocaleContext).t;return t.downloads=t.downloads||0,m.a.createElement(L,Object.assign({component:"p"},n),m.a.createElement("span",{className:"blocklet__stat",title:a("blocklet.list.download")},m.a.createElement(R.a,{name:"arrow-to-bottom",size:14,className:"blocklet__stat__icon"}),t.downloads),!!t.star&&m.a.createElement("span",{className:"blocklet__stat",title:a("blocklet.list.star")},m.a.createElement(R.a,{name:"heart",size:14,className:"blocklet__stat__icon"}),t.star))}var L=Object(u.default)(v.a)(a||(a=Object(r.a)(["\n .blocklet__stat {\n margin-right: 16px;\n font-size: 14px;\n font-weight: 500;\n color: #999;\n &:last-child {\n // \u7406\u8bba\u4e0a\u9700\u8981\u8bbe\u7f6e\u62100\uff0c\u4f46\u89c6\u89c9\u6548\u679c\u4e0d\u662f\u5f88\u597d\uff0c\u52a0\u4e0a\u4e86\u4e00\u4e2a\u5c0f\u7684\u95f4\u8ddd\n margin-right: 5px;\n }\n\n .blocklet__stat__icon {\n margin-right: 4px;\n color: inherit !important;\n }\n }\n"]))),M=n(1626),T=n.n(M),D=n(5),F=n.n(D),W=n(89),V=n.n(W),q=n(1645),J=n.n(q);J.a.propTypes={children:F.a.node.isRequired};var I={pre:function(e){var t=e.children;if(!Array.isArray(V()(t,"[0].props.children")))return null;var n=t[0].props,a=n.className,r=Object(s.a)(n.children,1)[0],o=(a||"").split("-").pop();return r?m.a.createElement(J.a,{language:o||"shell",code:r}):null},alert:P.a,p:function(e){return m.a.createElement(v.a,Object.assign({variant:"body1"},e))},h2:function(e){return m.a.createElement(v.a,Object.assign({variant:"h3"},e))},h3:function(e){return m.a.createElement(v.a,Object.assign({variant:"h4"},e))},h4:function(e){return m.a.createElement(v.a,Object.assign({variant:"h5"},e))},h5:function(e){return m.a.createElement(v.a,Object.assign({variant:"h5"},e))},h6:function(e){return m.a.createElement(v.a,Object.assign({variant:"h6"},e))}};var H,K,Y=new T.a({createElement:function(e,t,n){var a=I&&e&&I[e]||e||"div";return m.a.createElement(a,t,n)}}).Compiler,G=n(1275),Q=n(29),X=n(42);function Z(){var e=Object(f.m)().did,t=Object(Q.c)(),n=t.api,a=t.info,r=Object(A.useLocaleContext)().t,o=Object(l.useState)([]),u=Object(s.a)(o,2),p=u[0],h=u[1],y=a.blockletRegistryList.find((function(e){return e.selected})),E=d()(Object(i.a)(c.a.mark((function t(){var r,o;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.getBlockletMeta({input:{did:e,registryUrl:a.blockletRegistry}});case 2:return r=t.sent,o=r.meta,h(o.version),t.abrupt("return",o);case 6:case"end":return t.stop()}}),t)})))),O=function(){var e=Object(i.a)(c.a.mark((function e(t){var a,r,o,i;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.action,r=t.version,o=t.blocklet,e.prev=1,i="install"===a?"installBlocklet":"upgradeBlocklet",e.next=5,n[i]({input:{did:o.did,version:r}});case 5:E.retry(),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(1),console.error("Blocklet ".concat(a," failed"),e.t0);case 11:case"end":return e.stop()}}),e,null,[[1,8]])})));return function(t){return e.apply(this,arguments)}}(),N=null,S=Object(l.useMemo)((function(){return Object(X.f)(E.value)}),[E.value]);if(E.value){var B=E.value,R=B.name,z=B.version,L=B.keywords,M=B.htmlAst,T=B.stats,D=B.screenshots,F=void 0===D?[]:D,W=B.author,V=B.documentation,q=B.repository,J=B.community,I=B.support,H=B.title,K=B.lastPublishedAt,Z=B.color,$=void 0===Z?"primary":Z;M&&M.children&&Array.isArray(M.children)&&function e(t,n){t.forEach((function(t){t.tagName&&"img"===t.tagName&&t.properties&&t.properties.src&&!t.properties.src.startsWith("http")&&(t.properties.src=g()(n,"/".concat(t.properties.src)),t.properties.srcSet&&Array.isArray(t.properties.srcSet)&&(t.properties.srcSet=t.properties.srcSet.map((function(e){return e.startsWith("http")?e:g()(n,e)})))),t.children&&Array.isArray(t.children)&&t.children.length>0&&e(t.children,n)}))}(M.children,a.blockletRegistry);var ne=H||R;N=m.a.createElement(ee,{color:$},m.a.createElement("div",{className:"meta"},m.a.createElement(v.a,{component:"h2",variant:"h2",className:"title"},ne,m.a.createElement("span",{className:"payment"},m.a.createElement("span",{className:"payment__price"},Object(C.isFreeBlocklet)(E.value)?r("common.free"):S.map((function(e){return"".concat(e.value," ").concat(e.name)})).join(" + ")),m.a.createElement("span",{className:"payment__tip"},Object(C.isFreeBlocklet)(E.value)?"This blocklet is free to use":"You need to pay to use this blocklet"))),m.a.createElement(U,{stats:T,className:"blocklet__stats"}),m.a.createElement(v.a,{component:"p",className:"tags"},m.a.createElement(j.a,{className:"tag",type:"reverse"},"v",z),Array.isArray(L)&&L.length>0&&L.map((function(e){return m.a.createElement(j.a,{className:"tag",key:e},e)})))),m.a.createElement("div",{className:"markdown-body"},m.a.createElement(x.a,{container:!0,spacing:4},F.length>0?m.a.createElement(x.a,{item:!0,xs:12,md:8},m.a.createElement(_.a,{lazyLoad:!0,showNav:!1,showThumbnails:!0,showPlayButton:!1,showFullscreenButton:!1,showBullets:!0,items:F.map((function(t){return{original:g()(a.blockletRegistry,Object(X.j)(e,t)),thumbnail:g()(a.blockletRegistry,Object(X.j)(e,t))}}))})):m.a.createElement(x.a,{item:!0,xs:12,md:8},m.a.createElement(te,{component:"div",className:"content-wrapper post-content"},M?Y(M):r("store.detail.empty"))),m.a.createElement(x.a,{item:!0,xs:12,md:4},m.a.createElement(G.a,{meta:E.value,lastVersion:p,onSubmit:O,className:"action-button",showPay:!1,buttonText:{purchase:r("store.detail.purchase",{name:ne}),open:r("store.detail.open",{name:ne}),install:r("store.detail.install",{name:ne}),upgrade:r("store.detail.upgrade",{name:ne})},registryUrl:y.url}),m.a.createElement(v.a,{component:"ul",className:"meta-info"},!!W&&m.a.createElement("li",{className:"meta-info__row"},m.a.createElement("span",{className:"info-row__key"},r("common.author")),m.a.createElement("span",{className:"info-row__value"},Object(X.h)(W))),!!q&&!!q.url&&m.a.createElement("li",{className:"meta-info__row"},m.a.createElement("span",{className:"info-row__key"},r("common.repository")),m.a.createElement("a",{href:Object(X.C)(q.url),target:"_blank",className:"info-row__value",title:q.type},Object(X.C)(q.url))),!!J&&m.a.createElement("li",{className:"meta-info__row"},m.a.createElement("span",{className:"info-row__key"},r("common.community")),m.a.createElement("a",{href:J,target:"_blank",className:"info-row__value"},J)),!!V&&m.a.createElement("li",{className:"meta-info__row"},m.a.createElement("span",{className:"info-row__key"},r("common.documentation")),m.a.createElement("a",{href:V,target:"_blank",className:"info-row__value"},V)),!!I&&m.a.createElement("li",{className:"meta-info__row"},m.a.createElement("span",{className:"info-row__key"},r("common.support")),m.a.createElement("a",{href:"mailto:".concat(I),target:"_blank",className:"info-row__value"},I)),K&&m.a.createElement("li",{className:"meta-info__row"},m.a.createElement("span",{className:"info-row__key"},r("common.lastPublishedAt")),m.a.createElement("span",{className:"info-row__value",title:Object(X.n)(K)},Object(X.l)(K)))))),F.length>0&&m.a.createElement(te,{component:"div",className:"content-wrapper post-content"},Y(M))))}else N=E.error?m.a.createElement(P.a,{type:"error",variant:"icon"},Object(X.e)(E.error)):m.a.createElement(w.a,null);return m.a.createElement("main",null,m.a.createElement(k.a,{separator:"\u203a","aria-label":"breadcrumb",className:"page-breadcrumb"},m.a.createElement(b.Link,{color:"secondary",to:"/store"},m.a.createElement(v.a,{color:"secondary"},r("common.store"))),m.a.createElement(v.a,{color:"textPrimary"},y.name),m.a.createElement(v.a,{color:"textPrimary"},r("common.detail"))),N)}var $="source-code-pro, Menlo, Monaco, Consolas, Courier New, monospace !important",ee=u.default.div(H||(H=Object(r.a)(["\n margin: 24px 0;\n\n .title {\n font-size: 40px;\n font-weight: bold;\n color: ",";\n margin-bottom: 10px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n @media (max-width: ","px) {\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n }\n }\n\n .payment {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n @media (max-width: ","px) {\n margin-top: 16px;\n align-items: flex-start;\n }\n\n .payment__price {\n margin-bottom: 8px;\n color: ",";\n }\n\n .payment__tip {\n font-size: 14px;\n color: ",";\n font-weight: normal;\n }\n }\n\n .blocklet__stats {\n margin-bottom: 16px;\n }\n\n .tags {\n margin: 16px 0 48px;\n @media (max-width: ","px) {\n margin-bottom: 32px;\n }\n\n .tag {\n margin-right: 8px;\n text-transform: capitalize;\n &:last-of-type {\n margin-right: 0;\n }\n }\n }\n\n .action-button {\n width: 100%;\n padding: 8px 22px;\n }\n\n .meta-info {\n list-style: none;\n padding: 0;\n margin: 24px 0;\n\n .meta-info__row {\n display: flex;\n line-height: 2;\n }\n\n .info-row__key {\n width: 130px;\n flex-shrink: 0;\n font-weight: 500;\n }\n .info-row__value {\n white-space: break-word;\n word-break: break-all;\n }\n }\n\n .sidebar-buttons {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .use-button {\n width: 100%;\n }\n\n .image-gallery {\n .image-gallery-thumbnail.active {\n border-color: ",";\n }\n .image-gallery-bullets .image-gallery-bullet {\n border-color: ",";\n box-shadow: none;\n }\n .image-gallery-bullets .image-gallery-bullet.active {\n background-color: ",";\n }\n .image-gallery-slide {\n .image-gallery-image {\n display: flex;\n justify-content: center;\n img {\n max-height: 600px !important;\n width: auto;\n margin: 0 auto;\n @media (max-width: ","px) {\n height: auto;\n max-height: auto;\n }\n }\n }\n }\n }\n\n .markdown-body .highlight pre,\n .markdown-body pre {\n background-color: #222;\n border-radius: 5px;\n }\n .markdown-body code {\n font-family: ",";\n }\n .markdown-body pre code {\n color: #fff;\n font-size: 14px;\n font-family: ",";\n }\n\n .markdown-body h1,\n .markdown-body h2,\n .markdown-body h3,\n .markdown-body h4,\n .markdown-body h5,\n .markdown-body h6 {\n font-weight: 600;\n line-height: 1.25;\n margin-bottom: 16px;\n margin-top: 24px;\n border-bottom: none;\n }\n\n .markdown-body .CodeMirror pre {\n background: #f6f8fa !important;\n }\n\n .markdown-body .anchor {\n display: none;\n }\n"])),(function(e){return e.theme.palette.text.primary}),(function(e){return e.theme.breakpoints.values.sm}),(function(e){return e.theme.breakpoints.values.sm}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.text.primary}),(function(e){return e.theme.breakpoints.values.sm}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.breakpoints.values.sm}),$,$),te=Object(u.default)(v.a)(K||(K=Object(r.a)(["\n width: 100%;\n word-wrap: break-word;\n word-break: break-word;\n line-height: 1.5em;\n\n .alert-content {\n max-width: 100%;\n p:last-of-type {\n margin-bottom: 0;\n }\n }\n\n iframe {\n width: 100% !important;\n }\n\n a {\n color: ",";\n }\n"])),(function(e){return e.theme.palette.primary.main}))}}]);
2
+ //# sourceMappingURL=24.34e707e0.chunk.js.map