@abtnode/blocklet-services 1.8.30 → 1.8.31

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.
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/301.b7595d83.chunk.js","mappings":"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","sources":["components/setup/connect.js","components/setup/layout.js","components/setup/step-actions.js","components/setup/button.js","components/setup/config.js","components/setup/domain.js","components/setup/public-instance.js","components/setup/access-control.js","components/setup/required.js","components/setup/fuel.js","components/setup/complete.js","pages/setup.js","../../ux/lib/launch-blocklet/content-layout.js","../../ux/lib/layout/addon.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport DidConnect from '@arcblock/did-connect/lib/Connect';\nimport Toast from '@abtnode/ux/lib/toast';\nimport styled from '@emotion/styled';\n\nimport { useSessionContext } from '../../contexts/session';\nimport { getWebWalletUrl, setSessionToken } from '../../util';\n\nexport default function Connect({ onNext }) {\n const { t, locale } = useLocaleContext();\n const { api, session } = useSessionContext();\n\n const onConnect = async (result, decrypt) => {\n setSessionToken(decrypt(result.sessionToken));\n try {\n await session.refresh();\n onNext();\n } catch (err) {\n Toast.error(err.message);\n }\n };\n\n return (\n <WrapConnect\n popup\n open\n hideCloseButton\n action=\"setup\"\n checkFn={api.get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n webWalletUrl={getWebWalletUrl()}\n onSuccess={onConnect}\n locale={locale}\n messages={{\n title: t('setup.connect.title'),\n scan: t('setup.connect.scan'),\n confirm: t('setup.connect.confirm'),\n success: t('setup.connect.success'),\n }}\n extraParams={{ setup: true }}\n />\n );\n}\n\nConnect.propTypes = {\n onNext: PropTypes.func,\n};\n\nConnect.defaultProps = {\n onNext: () => {},\n};\n\nconst WrapConnect = styled(DidConnect)`\n .action-info-desc {\n padding: 0 72px;\n }\n`;\n","import styled from '@emotion/styled';\n\nimport ContentLayout from '@abtnode/ux/lib/launch-blocklet/content-layout';\n\nconst Container = styled(ContentLayout)`\n display: flex;\n flex-direction: column;\n padding-bottom: 16px;\n ${(props) => props.theme.breakpoints.up('md')} {\n padding-top: 34px;\n padding-bottom: 34px;\n }\n .header {\n width: 100%;\n margin-bottom: 34px;\n ${(props) => props.theme.breakpoints.up('md')} {\n margin-bottom: 64px;\n }\n }\n .container-main {\n position: relative;\n flex: 1;\n width: 100%;\n }\n .container-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n overflow-y: auto;\n }\n`;\n\nexport default Container;\n","import PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\n\nimport Box from '@mui/material/Box';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\n\nimport { hasRequiredSteps } from '../../util';\n\nexport default function StepActions({ blocklet, onStartNow, children, disabled }) {\n const { t } = useLocaleContext();\n\n if (!blocklet || hasRequiredSteps(blocklet.meta)) {\n return <Center>{children}</Center>;\n }\n\n return (\n <Between>\n <Button\n className=\"start-now\"\n variant=\"contained\"\n color=\"primary\"\n disabled={disabled}\n onClick={() => onStartNow()}>\n {t('setup.startNow')}\n </Button>\n <Box display=\"flex\" alignItems=\"center\">\n {children}\n </Box>\n </Between>\n );\n}\n\nStepActions.propTypes = {\n blocklet: PropTypes.object,\n onStartNow: PropTypes.func,\n children: PropTypes.any,\n disabled: PropTypes.bool,\n};\nStepActions.defaultProps = {\n blocklet: null,\n onStartNow: () => {},\n children: null,\n disabled: false,\n};\n\nconst Center = styled(Box)`\n padding-top: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n .bottom-button {\n min-width: 200px;\n }\n ${(props) => props.theme.breakpoints.down('md')} {\n .bottom-button {\n min-width: 150px;\n }\n }\n`;\n\nconst Between = styled(Box)`\n padding-bottom: 48px;\n padding-top: 24px;\n margin: 0 auto;\n width: 80%;\n display: flex;\n align-items: center;\n justify-content: space-around;\n .start-now {\n min-width: 140px;\n }\n .bottom-button {\n min-width: 120px;\n }\n ${(props) => props.theme.breakpoints.down('lg')} {\n width: 100%;\n }\n\n ${(props) => props.theme.breakpoints.down('md')} {\n .start-now {\n min-width: 100px;\n }\n .bottom-button {\n min-width: 80px;\n }\n }\n`;\n","import Button from '@arcblock/ux/lib/Button';\n\nexport default function StyledButton({ ...props }) {\n return <Button className=\"bottom-button\" variant=\"contained\" color=\"primary\" {...props} />;\n}\n","import { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport omit from 'lodash/omit';\nimport uniqBy from 'lodash/uniqBy';\nimport flatten from 'lodash/flatten';\n\nimport Box from '@mui/material/Box';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport SchemaForm from '@abtnode/ux/lib/schema-form';\nimport Toast from '@abtnode/ux/lib/toast';\nimport CompactLayout from '@blocklet/launcher-layout/lib/compact-layout';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\n\nimport { getAppMissingConfigs, forEachChildSync } from '@blocklet/meta/lib/util';\nimport { BLOCKLET_CONFIGURABLE_KEY } from '@blocklet/meta/lib/constants';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nexport default function Config({ onNext, onPrevious }) {\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down('md'));\n const { t } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [editingItem, setEditingItem] = useState(null);\n const { blocklet, actions } = useBlockletContext();\n\n const selfConfigs = (blocklet.configs || []).filter((x) => !BLOCKLET_CONFIGURABLE_KEY[x.key]);\n const customColor = blocklet.environments.find((x) => x.key === 'BLOCKLET_PASSPORT_COLOR');\n\n const configurableEnvs = [\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_NAME,\n description: t('blocklet.config.name'),\n value: blocklet.environments.find((x) => x.key === 'BLOCKLET_APP_NAME').value,\n custom: true,\n },\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_DESCRIPTION,\n description: t('blocklet.config.description'),\n value: blocklet.environments.find((x) => x.key === 'BLOCKLET_APP_DESCRIPTION').value,\n custom: true,\n },\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_PASSPORT_COLOR,\n description: t('blocklet.config.passportColor'),\n value: customColor ? customColor.value : 'auto',\n custom: true,\n componentType: 'passport',\n componentProps: {\n blocklet,\n },\n },\n ];\n\n const childrenConfigs = [];\n forEachChildSync(blocklet, (b, { ancestors }) => {\n const ancestorDids = ancestors.slice(1).map((x) => x.meta.did);\n\n childrenConfigs.push((b.configs || []).map((x) => ({ ...x, childDid: ancestorDids.concat(b.meta.did) })));\n });\n\n const filteredConfigs = uniqBy(flatten([...selfConfigs, ...childrenConfigs]), 'key').filter((x) => !!x.key);\n\n const sortedConfig = filteredConfigs.sort((a, b) => {\n if (a.required && !b.required) {\n return -1;\n }\n\n if (b.required && !a.required) {\n return 1;\n }\n\n return 0;\n });\n\n const missingRequiredConfigs = getAppMissingConfigs(blocklet).length;\n\n const onSubmitConfig = async (value) => {\n const { childDid, ...config } = editingItem;\n\n const configs = [\n {\n // omit the backend unused configs\n ...omit(config, ['componentType', 'componentProps']),\n value,\n },\n ];\n\n try {\n setLoading(true);\n await actions.configBlocklet({\n configs,\n childDid,\n });\n } catch (err) {\n Toast.error(err.message);\n } finally {\n setLoading(false);\n }\n };\n\n const defaultValue = {};\n\n const schemaList = [...configurableEnvs, ...sortedConfig].map((item) => {\n const { value, ...rest } = item;\n defaultValue[item.key] = value;\n return {\n ...rest,\n };\n });\n\n const clickBack = () => {\n onPrevious();\n };\n\n return (\n <Layout>\n <div className=\"header\" style={{ marginBottom: 16 }}>\n <PageHeader title={t('setup.config.title')} subTitle={t('setup.config.subTitle')} onClickBack={clickBack} />\n </div>\n <div className=\"container-main\">\n <div className=\"container-inner\">\n <CompactLayout\n bottom={\n <StepActions\n mt={8}\n disabled={loading || editingItem}\n blocklet={blocklet}\n onStartNow={() => onNext('complete')}>\n <Box display=\"flex\" alignItems=\"center\">\n <Button\n disabled={loading || missingRequiredConfigs || editingItem}\n onClick={() => {\n actions.refreshFuel({ showError: false });\n onNext();\n }}>\n {t('setup.next')}\n </Button>\n </Box>\n </StepActions>\n }>\n <SchemaForm\n style={{ margin: '0 auto 20px', paddingTop: isMobile ? 0 : 38 }}\n loading={loading}\n schema={schemaList}\n defaultValue={defaultValue}\n onChange={(changeValue, { action, currentItem }) => {\n if (action === 'edit') {\n setEditingItem(currentItem);\n } else if (['cancel', 'confirm'].includes(action)) {\n setEditingItem(null);\n }\n if (action === 'confirm') {\n onSubmitConfig(changeValue[currentItem.key]);\n }\n }}\n />\n </CompactLayout>\n </div>\n </div>\n </Layout>\n );\n}\n\nConfig.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\n\nConfig.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n","import { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\n\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport Toast from '@abtnode/ux/lib/toast';\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport { validateDomain, sleep } from '@abtnode/ux/lib/util';\nimport { BLOCKLET_CONFIGURABLE_KEY } from '@blocklet/meta/lib/constants';\nimport Dialog from '@arcblock/ux/lib/Dialog';\nimport { replaceSlotToIp } from '@blocklet/meta/lib/util';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport api from '../../libs/api';\nimport client from '../../libs/client';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nconst isCertInProgress = (cert) => ['waiting', 'creating', 'renewaling'].includes(cert?.status);\n\nconst waitForCert = (domain) =>\n new Promise((resolve, reject) => {\n const timer = setInterval(async () => {\n try {\n const { cert } = await client.findCertificateByDomain({ input: { domain } });\n\n if (cert?.status === 'generated') {\n clearInterval(timer);\n resolve(true);\n return;\n }\n\n if (!isCertInProgress(cert)) {\n clearInterval(timer);\n resolve(false);\n }\n } catch (err) {\n clearInterval(timer);\n reject(err);\n }\n }, 1000);\n });\n\nconst addCert = async (domain) => {\n await client.issueLetsEncryptCert({ input: { domain } });\n return waitForCert(domain);\n};\n\nexport default function Domain({ onNext, onPrevious }) {\n const { t, locale } = useContext(LocaleContext);\n const [loadingText, setLoadingText] = useState('');\n const [error, setError] = useState(false);\n const { blocklet } = useBlockletContext();\n const [ip, setIp] = useState('');\n const [showCertFailed, setShowCertFailed] = useState(false);\n\n const site = blocklet?.site || {};\n const domains = site.domainAliases || [];\n const defaultCustomDomain = domains.filter((x) => !x.isProtected)[0]?.value || '';\n const systemDomains = domains.filter((x) => x.isProtected).map((x) => replaceSlotToIp(x.value, ip));\n const [domain, setDomain] = useState(defaultCustomDomain);\n\n const addDomain = async (secure) => {\n setLoadingText(t('setup.domain.addingDomain'));\n await sleep(1500);\n if (!domains.some((x) => x.value === domain)) {\n await client.addDomainAlias({ input: { id: blocklet.site.id, domainAlias: domain } });\n await client.takeRoutingSnapshot({\n input: { dryRun: false, message: `add domain ${domain} from blocklet services` },\n });\n }\n await client.configBlocklet({\n input: {\n did: [blocklet.meta.did],\n configs: [{ key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_URL, value: `http${secure ? 's' : ''}://${domain}` }],\n },\n });\n onNext();\n };\n\n const submitDomain = async () => {\n if (loadingText) {\n return;\n }\n\n try {\n setLoadingText(t('setup.domain.checkingResolvable'));\n await sleep(1500);\n const {\n data: { address },\n } = await api.get(`/dns-resolve?hostname=${domain}`);\n if (!address) {\n throw new Error(t('setup.domain.cannotResolve', { domain }));\n }\n\n if (address !== ip) {\n throw new Error(t('setup.domain.resolvedAddressError', { domain, curDomain: window.location.hostname }));\n }\n\n setLoadingText(t('setup.domain.addingCert'));\n let generated = false;\n const { cert } = await client.findCertificateByDomain({ input: { domain } });\n if (!cert) {\n generated = await addCert(domain, locale);\n } else if (cert.status === 'generated') {\n generated = true;\n } else if (['waiting', 'creating', 'renewaling'].includes(cert.status)) {\n generated = await waitForCert(domain, locale);\n } else {\n generated = await addCert(domain, locale);\n }\n\n if (generated) {\n addDomain(generated);\n } else {\n setShowCertFailed(true);\n }\n } catch (err) {\n Toast.error(err.message);\n setLoadingText('');\n }\n };\n\n useEffect(() => {\n api\n .get(`/dns-resolve?hostname=${window.location.hostname}`)\n .then(({ data }) => {\n setIp(data.address || '');\n })\n .catch((err) => {\n console.error(err.message);\n });\n }, []);\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('setup.domain.title')} subTitle={t('setup.domain.subTitle')} onClickBack={onPrevious} />\n </div>\n {showCertFailed && (\n <Dialog\n PaperProps={{\n style: {\n minHeight: 'auto',\n },\n }}\n open={showCertFailed}\n showCloseButton={false}\n title={t('setup.domain.genCertFailed')}\n actions={\n <>\n <Button\n color=\"reverse\"\n variant=\"text\"\n onClick={() => {\n setLoadingText('');\n setShowCertFailed(false);\n }}>\n {t('setup.cancel')}\n </Button>\n <Button\n color=\"primary\"\n variant=\"text\"\n onClick={() => {\n setShowCertFailed(false);\n addDomain(false);\n }}>\n {t('setup.confirm')}\n </Button>\n </>\n }>\n {t('setup.domain.certFailedDesc')}\n </Dialog>\n )}\n <Box className=\"form\">\n <Box>\n <Box mb={1} color=\"text.primary\" fontWeight=\"fontWeightBold\">\n <Box display=\"inline\">{t('setup.domain.skipStart')}</Box>\n <Button\n variant=\"text\"\n size=\"small\"\n disabled={!!loadingText}\n onClick={() => onNext()}\n style={{ paddingTop: 0 }}>\n <span style={{ textDecoration: 'underline' }}>{t('setup.domain.skip')}</span>\n </Button>\n <Box display=\"inline\">{t('setup.domain.skipEnd')}</Box>\n </Box>\n {systemDomains.map((x) => (\n <Box component=\"li\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n {x}\n </Box>\n ))}\n <Box mt={1} fontWeight=\"fontWeightBold\" color=\"text.secondary\">\n {t('setup.domain.certTip')}\n </Box>\n <Box />\n </Box>\n\n <Box mt={4} fontWeight=\"fontWeightBold\">\n {t('setup.domain.subTitle')}\n </Box>\n <TextField\n style={{ marginTop: 16, minHeight: 64 }}\n label={t('setup.domain.label')}\n fullWidth\n value={domain}\n onChange={(e) => {\n const { value } = e.target;\n setDomain(value);\n const errMessage = validateDomain(value, locale);\n setError(errMessage);\n }}\n autoFocus\n size=\"small\"\n variant=\"outlined\"\n error={!!error}\n helperText={error}\n />\n\n {domain && (\n <Box color=\"text.secondary\">\n <Box display=\"flex\">\n {t('setup.domain.tipStart')}\n <Box mx={0.5} color=\"primary.main\" fontWeight=\"fontWeightBold\">\n {domain}\n </Box>\n {t('setup.domain.tipEnd')}\n </Box>\n <Box component=\"li\">\n {t('setup.domain.recordType')}:{' '}\n <Box display=\"inline\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n A\n </Box>\n </Box>\n <Box component=\"li\">\n {t('setup.domain.recordValue')}:{' '}\n <Box display=\"inline\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n {ip}\n </Box>\n </Box>\n </Box>\n )}\n </Box>\n <StepActions mt={8} disabled={!!loadingText} blocklet={blocklet} onStartNow={() => onNext('complete')}>\n {!domain ? (\n <Button variant=\"outlined\" disabled={!!loadingText} onClick={() => onNext()}>\n {t('setup.skip')}\n </Button>\n ) : (\n <Button loading={!!loadingText} disabled={error || !!loadingText || !domain} onClick={() => submitDomain()}>\n {loadingText || t('setup.next')}\n </Button>\n )}\n </StepActions>\n </Container>\n );\n}\n\nDomain.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\nDomain.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n\nconst Container = styled(Layout)`\n height: 100%;\n overflow-y: auto;\n .form {\n width: 580px;\n word-break: break-all;\n ${(props) => props.theme.breakpoints.down('md')} {\n width: 80%;\n }\n }\n`;\n","import { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\n\nfunction PublicInstance({ children }) {\n const { t } = useLocaleContext();\n return (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {children}\n <Tooltip title={t('blocklet.config.access.publicInstanceTip')}>\n <IconButton>\n <InfoOutlinedIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n </div>\n );\n}\nPublicInstance.propTypes = {\n children: PropTypes.any.isRequired,\n};\n\nexport default memo(PublicInstance);\n","import { useState, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\n\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport useTheme from '@mui/material/styles/useTheme';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Toast from '@abtnode/ux/lib/toast';\nimport { WHO_CAN_ACCESS } from '@abtnode/constant';\n\nimport { getWhoCanAccess } from '@blocklet/meta/lib/util';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport { sleep } from '@abtnode/ux/lib/util';\nimport AccessConfig from '@abtnode/ux/lib/who-can-access/config';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\nimport PublicInstance from './public-instance';\n\nexport default function AccessControl({ onNext }) {\n const theme = useTheme();\n const { t, locale } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [value, setValue] = useState('');\n const [publicToStore, setPublicToStore] = useState(false);\n const { blocklet, actions, getPublicInstance } = useBlockletContext();\n\n useEffect(() => {\n setValue(getWhoCanAccess(blocklet));\n setPublicToStore(getPublicInstance(blocklet));\n }, [blocklet]); // eslint-disable-line\n\n const submit = async (whoCanAccess) => {\n try {\n setLoading(true);\n await sleep(800);\n await actions.configWhoCanAccess(whoCanAccess);\n setLoading(false);\n } catch (err) {\n setLoading(false);\n Toast.error(err.message);\n }\n };\n\n const handleChange = async (event) => {\n if (loading) {\n return;\n }\n setValue(event.target.value);\n await submit(event.target.value);\n };\n const handleCheckBox = async (event) => {\n const isPublic = event.target.checked;\n try {\n setLoading(true);\n await actions.configPublicToStore(isPublic);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n Toast.error(error.message);\n }\n };\n\n const iconStyle = {\n marginRight: 4,\n fontSize: 18,\n verticalAlign: 'text-bottom',\n color: theme.palette.text.secondary,\n };\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('blocklet.config.access.description')} />\n </div>\n\n <FormControl component=\"fieldset\">\n <RadioGroup name=\"inherit\" value={value} onChange={handleChange}>\n {AccessConfig.map((rule) => {\n return (\n <div key={rule.value} style={{ marginBottom: 16 }}>\n <FormControlLabel\n value={rule.value}\n control={<Radio color=\"primary\" />}\n label={\n <span>\n <rule.icon style={iconStyle} />\n {rule.title[locale]}\n </span>\n }\n />\n <Box className=\"tip\">\n {rule.description[locale]}\n {rule.value === WHO_CAN_ACCESS.ALL && value === WHO_CAN_ACCESS.ALL && blocklet.source === 'registry' && (\n <PublicInstance>\n <FormControlLabel\n style={{ marginRight: 0 }}\n value={rule.value}\n control={<Checkbox size=\"small\" />}\n label={<span>{t('blocklet.config.access.publicToStore')}</span>}\n onChange={handleCheckBox}\n checked={publicToStore}\n disabled={loading}\n />\n </PublicInstance>\n )}\n </Box>\n </div>\n );\n })}\n </RadioGroup>\n </FormControl>\n\n <StepActions mt={8} disabled={loading} blocklet={blocklet} onStartNow={() => onNext('complete')}>\n <Box display=\"flex\" alignItems=\"center\">\n <Button loading={loading} disabled={loading} onClick={() => onNext()}>\n {t('setup.continue')}\n </Button>\n </Box>\n </StepActions>\n </Container>\n );\n}\n\nAccessControl.propTypes = {\n onNext: PropTypes.func,\n};\n\nAccessControl.defaultProps = {\n onNext: () => {},\n};\n\nconst Container = styled(Layout)`\n height: 100%;\n overflow-y: auto;\n .header {\n width: 100%;\n }\n .tip {\n margin-left: 32px;\n font-size: 12px;\n margin-top: -8px;\n color: ${(props) => props.theme.palette.text.secondary};\n }\n`;\n","import styled from '@emotion/styled';\n\nconst Required = styled.span`\n color: ${(props) => props.theme.palette.error.main};\n &::before {\n content: '*';\n }\n`;\n\nexport default Required;\n","import { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport joinUrl from 'url-join';\n\nimport Box from '@mui/material/Box';\nimport Link from '@mui/material/Link';\nimport LaunchIcon from '@mui/icons-material/Launch';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport DidConnect from '@arcblock/did-connect/lib/Connect';\nimport DidAddress from '@arcblock/did-connect/lib/Address';\nimport Spinner from '@arcblock/ux/lib/Spinner';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport { useSessionContext } from '../../contexts/session';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nexport default function Fuel({ onNext, onPrevious }) {\n const { locale, t } = useContext(LocaleContext);\n const { blocklet, gas, tokenInfo, actions } = useBlockletContext();\n const { api } = useSessionContext();\n const [open, setOpen] = useState(false);\n const { need = '', current = '', owe = 99999, deficiency, symbol = '', endpoint } = gas || {};\n const { origin: explorer = '/' } = endpoint ? new URL(endpoint) : {};\n\n useEffect(() => {\n const timer = setInterval(() => {\n actions.refreshFuel();\n }, 2000);\n\n return () => {\n clearInterval(timer);\n };\n }, []); // eslint-disable-line\n\n const onSuccess = () => {\n setOpen(false);\n };\n\n if (!gas) {\n return (\n <Box display=\"flex\" justifyContent=\"center\" alignItems=\"center\" width=\"100%\">\n <Spinner />\n </Box>\n );\n }\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('setup.fuel.title')} onClickBack={onPrevious} />\n </div>\n\n <Box className=\"qr-body\">\n <Box mb={6} className=\"tip\">\n {t('setup.fuel.tipStart').replace('slot', '')}\n <span className=\"amount\">{`${need} ${symbol}`}</span>\n {t('setup.fuel.tipEnd')}\n </Box>\n <Box fontSize={16} fontWeight=\"fontWeightBold\" mb={0.5}>\n {t('setup.fuel.addressTitle')}\n </Box>\n <Box display=\"flex\" alignItems=\"center\">\n <DidAddress className=\"address\">{blocklet.appDid}</DidAddress>\n <Link\n style={{ lineHeight: 1 }}\n target=\"_blank\"\n href={joinUrl(explorer, '/explorer/accounts/', blocklet.appDid)}\n underline=\"hover\">\n <LaunchIcon className=\"icon-launch\" />\n </Link>\n </Box>\n <Box my={2}>\n <Button color=\"primary\" onClick={() => setOpen(true)} disabled={!owe}>\n {t('setup.fuel.fuelApp')}\n </Button>\n </Box>\n <DidConnect\n popup\n open={open}\n action=\"fuel\"\n checkFn={api.get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n onSuccess={onSuccess}\n onClose={() => setOpen(false)}\n locale={locale}\n messages={{\n title: t('setup.connect.title'),\n scan: t('setup.connect.scan'),\n confirm: t('setup.connect.confirm'),\n success: t('setup.connect.success'),\n }}\n extraParams={{ amount: deficiency, ...tokenInfo, endpoint }}\n />\n\n <Box display=\"flex\" color=\"text.secondary\">\n <Box display=\"flex\">\n <Box>{t('setup.fuel.need')}:</Box>\n <Box ml={0.5} color=\"primary.main\" fontWeight=\"fontWeightBold\">\n {need}\n </Box>\n </Box>\n <Box display=\"flex\" ml={3}>\n <Box>{t('setup.fuel.current')}:</Box>\n <Box ml={0.5} color={owe > 0 ? 'error.main' : 'primary.main'} fontWeight=\"fontWeightBold\">\n {current}\n </Box>\n </Box>\n </Box>\n </Box>\n\n <StepActions mt={8}>\n <Button disabled={owe > 0} onClick={() => onNext()}>\n {t('setup.next')}\n </Button>\n </StepActions>\n </Container>\n );\n}\n\nFuel.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\nFuel.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n\nconst Container = styled(Layout)`\n .qr-body {\n width: 580px;\n ${(props) => props.theme.breakpoints.down('md')} {\n width: 80%;\n }\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .tip {\n font-size: 16px;\n font-weight: bold;\n }\n\n .address {\n width: 100%;\n text-align: center;\n }\n\n .amount {\n color: ${(props) => props.theme.palette.primary.main};\n }\n\n .icon-launch {\n font-size: 16px;\n margin-left: 6px;\n line-height: 1;\n color: ${(props) => props.theme.palette.primary.main};\n }\n }\n`;\n","import { useState, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\n\nimport ResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\n\nimport Box from '@mui/material/Box';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Toast from '@abtnode/ux/lib/toast';\nimport { getAccessUrl } from '@abtnode/ux/lib/util';\nimport { evaluateURLs } from '@abtnode/util/lib/url-evaluation';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport api from '../../libs/api';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport { PREFIX } from '../../util';\n\nexport default function Complete({ onPrevious }) {\n const { t } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [status, setStatus] = useState('starting'); // stopped, starting, running\n const [startupError, setStartupError] = useState();\n const { blocklet } = useBlockletContext();\n const [recommendedURL, setRecommendedURL] = useState('');\n const fromLauncher = new URL(window.location.href).searchParams.get('from_launcher');\n\n const isStopped = !['starting', 'running'].includes(status);\n const isStarting = status === 'starting';\n const statusText = {\n stopped: t('blocklet.start'),\n starting: t('blocklet.starting'),\n running: t('blocklet.open'),\n };\n\n const visitBlocklet = () => {\n const url = new URL(window.location.href);\n const redirect = url.searchParams.get('redirect');\n if (redirect) {\n window.location.href = new URL(redirect, recommendedURL).href;\n } else {\n window.location.href = recommendedURL;\n }\n };\n\n const startBlocklet = async () => {\n setLoading(true);\n setStatus('starting');\n try {\n await api.post('/blocklet/start', {\n fromSetup: true,\n });\n setLoading(false);\n setStatus('running');\n } catch (err) {\n const errMsg = err?.response?.data || err.message;\n Toast.error(errMsg);\n setLoading(false);\n setStatus('stopped');\n setStartupError(errMsg);\n }\n };\n\n useEffect(() => {\n setStatus(blocklet.status);\n if (!['starting', 'running'].includes(blocklet.status)) {\n startBlocklet();\n }\n }, []); // eslint-disable-line\n\n useEffect(() => {\n const _setRecommendedURL = async () => {\n const results = await evaluateURLs(blocklet.site.domainAliases.map((item) => getAccessUrl(item.value, PREFIX)));\n setRecommendedURL(results[0].url);\n };\n if (!recommendedURL) {\n _setRecommendedURL();\n }\n }, [blocklet, recommendedURL]);\n\n const serverUrl = localStorage.getItem('blocklet-server-url');\n const title = startupError ? t('setup.complete.failedTitle') : t('setup.complete.title');\n\n const isButtonLoading = isStarting || !recommendedURL;\n\n if (fromLauncher && !isButtonLoading) {\n if (isStopped) {\n startBlocklet();\n } else {\n visitBlocklet();\n }\n }\n\n return (\n <Container>\n <StyledResultMessage\n variant={startupError ? 'error' : 'success'}\n title={title}\n footer={\n <StepActions>\n {isStopped && (\n <Button variant=\"outlined\" disabled={loading} onClick={() => onPrevious()}>\n {t('setup.previous')}\n </Button>\n )}\n\n {fromLauncher ? (\n <LinkEle rel=\"noreferrer\">\n <Spinner size={[16, 10]} style={{ marginRight: 14 }} /> {t('common.redirecting')}\n </LinkEle>\n ) : (\n <>\n <Button\n style={{ marginLeft: isStopped ? 24 : 0 }}\n disabled={loading || isStarting}\n onClick={() => (isStopped ? startBlocklet() : visitBlocklet())}\n loading={isButtonLoading}>\n {statusText[status] || statusText.stopped}\n </Button>\n\n {(status === 'running' || startupError) && !!serverUrl && (\n <Box width=\"100%\" mt={2}>\n <a href={serverUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"back-to-server-link\">\n {t('setup.complete.backToServer')}\n </a>\n </Box>\n )}\n </>\n )}\n </StepActions>\n }\n />\n </Container>\n );\n}\n\nconst Container = styled(Layout)`\n justify-content: center;\n .icon-success {\n width: 64px;\n height: 64px;\n color: ${(props) => props.theme.palette.success.main};\n }\n .back-to-server-link {\n color: ${(props) => props.theme.palette.primary.main};\n }\n`;\n\nconst StyledResultMessage = styled(ResultMessage)`\n && .result-footer {\n height: 120px;\n > div {\n flex-wrap: wrap;\n }\n }\n`;\n\nComplete.propTypes = {\n onPrevious: PropTypes.func,\n};\n\nComplete.defaultProps = {\n onPrevious: () => {},\n};\n\nconst LinkEle = styled.a`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 36px;\n color: ${(props) => props.theme.palette.primary.main};\n`;\n","import { useEffect } from 'react';\nimport { Routes, Route, Navigate, useNavigate } from 'react-router-dom';\nimport styled from '@emotion/styled';\nimport joinUrl from 'url-join';\nimport { Global, css } from '@emotion/react';\n\nimport Box from '@mui/material/Box';\nimport Layout from '@blocklet/launcher-layout';\nimport { StepProvider } from '@blocklet/launcher-layout/lib/context/step';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport HeaderAddon from '@abtnode/ux/lib/layout/addon';\nimport ServerLogoNotext from '@arcblock/icons/lib/ServerLogoNotext';\nimport ServerLogo from '@arcblock/icons/lib/ServerLogo';\n\nimport { WELLKNOWN_SERVICE_PATH_PREFIX } from '@abtnode/constant';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\n\nimport { hasRequiredEnvironments, saveServerUrl, PREFIX } from '../util';\nimport { useBlockletContext } from '../contexts/blocklet';\nimport { SessionContext } from '../contexts/session';\nimport Connect from '../components/setup/connect';\nimport Config from '../components/setup/config';\nimport Domain from '../components/setup/domain';\nimport AccessControl from '../components/setup/access-control';\nimport Required from '../components/setup/required';\nimport Fuel from '../components/setup/fuel';\nimport Complete from '../components/setup/complete';\n\nexport default function BlockletSetup() {\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down('md'));\n const { t, locale } = useLocaleContext();\n const navigate = useNavigate();\n const { meta, blocklet, actions } = useBlockletContext();\n const serverUrl = localStorage.getItem('blocklet-server-url');\n\n const fromLauncher = new URL(window.location.href).searchParams.get('from_launcher');\n\n useEffect(() => {\n actions.refreshMeta();\n actions.refreshBlocklet({ showError: false });\n // setup 流程刚开始时, 保存 serverUrl 到 localStorage, 方便在 setup 流程结束后返回 server\n saveServerUrl();\n }, []); // eslint-disable-line\n\n useEffect(() => {\n actions.refreshFuel({ showError: false });\n }, [blocklet?.meta?.did]); // eslint-disable-line\n\n const basePath = `${WELLKNOWN_SERVICE_PATH_PREFIX}/setup`;\n const steps = [\n {\n key: 'connect',\n name: t('setup.steps.connect'),\n path: joinUrl(basePath, 'connect'),\n },\n {\n key: 'access',\n name: t('setup.steps.access'),\n path: joinUrl(basePath, 'access'),\n },\n {\n key: 'domain',\n name: t('setup.steps.domain'),\n path: joinUrl(basePath, 'domain'),\n },\n {\n key: 'config',\n name: (\n <>\n {t('setup.steps.config')} {hasRequiredEnvironments(meta) && <Required />}\n </>\n ),\n path: joinUrl(basePath, 'config'),\n },\n meta?.requirements?.fuels?.length\n ? {\n key: 'fuel',\n name: (\n <>\n {t('setup.steps.fuel')} <Required />\n </>\n ),\n path: joinUrl(basePath, 'fuel'),\n }\n : null,\n ].filter(Boolean);\n\n const stepIndex = steps.findIndex(\n (x) => `${PREFIX.replace(/\\/$/, '')}${basePath}/${x.key}` === window.location.pathname\n );\n\n const logoUrl = joinUrl(PREFIX, WELLKNOWN_SERVICE_PATH_PREFIX, '/blocklet/logo');\n\n const onNext = async (key) => {\n const { search } = new URL(window.location.href);\n if (!key) {\n if (steps[stepIndex + 1]) {\n navigate(`${joinUrl(basePath, steps[stepIndex + 1].key)}${search}`);\n } else {\n navigate(`${joinUrl(basePath, 'complete')}${search}`);\n }\n } else {\n const index = steps.findIndex((x) => x.key === key);\n if (index > -1) {\n navigate(`${joinUrl(basePath, steps[index].key)}${search}`);\n } else {\n navigate(`${joinUrl(basePath, 'complete')}${search}`);\n }\n }\n\n await actions.refreshBlocklet();\n };\n\n const onPrevious = () => {\n navigate(-1);\n };\n\n function withSetup(Component, props) {\n if (!blocklet) {\n return (\n <Box width=\"100%\" height=\"100%\" display=\"flex\" justifyContent=\"center\" alignItems=\"center\">\n <Spinner />\n </Box>\n );\n }\n\n return <Component blocklet={blocklet} {...props} onNext={onNext} onPrevious={onPrevious} />;\n }\n\n const clickLogo = () => {\n window.open(serverUrl);\n };\n\n const logo = !isMobile ? (\n <ServerLogo onClick={clickLogo} width=\"128\" height=\"48\" style={{ marginTop: -1, cursor: 'pointer' }} />\n ) : (\n <ServerLogoNotext onClick={clickLogo} width=\"32\" height=\"32\" style={{ cursor: 'pointer' }} />\n );\n\n const totalSteps = [\n {\n key: 'agreement',\n name: t('setup.steps.introduction'),\n },\n {\n key: 'select-node',\n name: t('setup.steps.selectNodeDesc'),\n },\n {\n key: 'install',\n name: t('setup.steps.launchAppDesc'),\n },\n {\n key: 'setup',\n name: t('setup.steps.setupAppDesc'),\n children: steps,\n },\n {\n key: 'complete',\n name: t('setup.steps.launched'),\n path: joinUrl(basePath, 'complete'),\n },\n ];\n\n if (!fromLauncher) {\n totalSteps.splice(1, 1);\n }\n\n return (\n <StyledStepProvider steps={totalSteps}>\n <Global styles={launcherGlobalStyle} />\n <Layout\n locale={locale}\n blockletMeta={{ ...meta, title: getDisplayName({ ...blocklet, meta }) }}\n navLogo={logo}\n pcWidth=\"80%\"\n style={{ height: '100%' }}\n logoUrl={logoUrl}\n useOfSkeleton={false}\n headerEndAddons={<HeaderAddon SessionContext={SessionContext} sessionManagerProps={{ disableLogout: true }} />}\n launchingText={t('setup.title')}>\n <Routes>\n <Route path=\"connect\" element={<Connect onNext={onNext} />} />\n <Route path=\"domain\" element={withSetup(Domain)} />\n <Route path=\"config\" element={withSetup(Config)} />\n <Route path=\"access\" element={withSetup(AccessControl)} />\n <Route path=\"fuel\" element={withSetup(Fuel)} />\n <Route path=\"complete\" element={withSetup(Complete)} />\n <Route path=\"*\" element={<Navigate to={`connect${window.location.search}`} replace />} />\n </Routes>\n </Layout>\n </StyledStepProvider>\n );\n}\n\nconst launcherGlobalStyle = css`\n html,\n body,\n #root,\n #root > .wrapper {\n height: 100%;\n }\n`;\n\nconst StyledStepProvider = styled(StepProvider)``;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ContentLayout;\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _templateObject;\nconst _excluded = [\"children\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\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; }\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; }\nfunction ContentLayout(_ref) {\n let {\n children\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, _objectSpread(_objectSpread({}, props), {}, {\n children: children\n }));\n}\nContentLayout.propTypes = {\n children: _propTypes.default.any.isRequired\n};\nconst Container = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n width: 100%;\\n height: 100%;\\n\\n .header {\\n text-align: center;\\n }\\n\\n .body {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n margin-top: 30px;\\n width: 100%;\\n min-height: 200px;\\n flex: 1;\\n\\n \", \" {\\n padding: 24px;\\n }\\n\\n \", \" {\\n padding: 0 16px 16px;\\n }\\n }\\n\\n .footer {\\n display: flex;\\n justify-content: center;\\n\\n \", \" {\\n padding-bottom: 34px;\\n }\\n\\n \", \" {\\n margin-top: auto;\\n padding-bottom: 10px;\\n }\\n }\\n\"])), props => props.theme.breakpoints.up('md'), props => props.theme.breakpoints.down('md'), props => props.theme.breakpoints.up('sm'), props => props.theme.breakpoints.down('md'));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = HeaderAddon;\nvar _react = require(\"react\");\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _IconButton = _interopRequireDefault(require(\"@mui/material/IconButton\"));\nvar _reactRouterDom = require(\"react-router-dom\");\nvar _SessionManager = _interopRequireDefault(require(\"@arcblock/did-connect/lib/SessionManager\"));\nvar _selector = _interopRequireDefault(require(\"@arcblock/ux/lib/Locale/selector\"));\nvar _context = require(\"@arcblock/ux/lib/Locale/context\");\nvar _Globe = _interopRequireDefault(require(\"@arcblock/icons/lib/Globe\"));\nvar _QuestionMarkCircle = _interopRequireDefault(require(\"@arcblock/icons/lib/QuestionMarkCircle\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _templateObject;\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction HeaderAddon(_ref) {\n let {\n SessionContext,\n extraItems,\n showLocale,\n showHelper,\n showSessionManager,\n sessionManagerProps\n } = _ref;\n const {\n session\n } = (0, _react.useContext)(SessionContext);\n const {\n locale\n } = (0, _react.useContext)(_context.LocaleContext);\n const location = (0, _reactRouterDom.useLocation)();\n const docPaths = {\n '/dashboard': '/introduction/abtnode-overview',\n '/store': '/marketplace',\n '/blocklets': '/blocklet',\n '/router/rules': '/router',\n '/router/engine': '/router',\n '/settings/basic': '/misc',\n '/settings/team': '/misc/member-management',\n '/console': '/misc/graphql-console'\n };\n const onHelpClick = () => {\n const pathName = location.pathname;\n let path = '';\n if (pathName.indexOf('/blocklets') > -1) {\n path = docPaths['/blocklets'];\n } else if (pathName.indexOf('/store') > -1) {\n path = docPaths['/store'];\n } else if (docPaths[pathName]) {\n path = docPaths[pathName];\n }\n window.open(\"https://docs.arcblock.io/abtnode/\".concat(locale).concat(path), '_blank');\n };\n return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, {\n children: [extraItems.map((x, index) => /*#__PURE__*/(0, _react.cloneElement)(x, {\n key: index\n })), showLocale && /*#__PURE__*/(0, _jsxRuntime.jsx)(_selector.default, {\n \"data-cy\": \"locale-addon\",\n icon: _Globe.default,\n size: 23,\n showText: false,\n className: \"locale-addon\"\n }), showHelper && /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {\n onClick: onHelpClick,\n children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_QuestionMarkCircle.default, {})\n }), showSessionManager && /*#__PURE__*/(0, _jsxRuntime.jsx)(_SessionManager.default, _objectSpread({\n session: session,\n size: 24,\n showRole: true\n }, sessionManagerProps))]\n });\n}\nHeaderAddon.propTypes = {\n SessionContext: _propTypes.default.object.isRequired,\n webWalletUrl: _propTypes.default.string,\n extraItems: _propTypes.default.array,\n showLocale: _propTypes.default.bool,\n showSessionManager: _propTypes.default.bool,\n showHelper: _propTypes.default.bool,\n sessionManagerProps: _propTypes.default.object\n};\nHeaderAddon.defaultProps = {\n webWalletUrl: '',\n extraItems: [],\n showLocale: true,\n showSessionManager: true,\n showHelper: true,\n sessionManagerProps: {}\n};\nconst Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\\n .MuiIconButton-root svg {\\n width: 26px;\\n height: 26px;\\n }\\n\\n .user-addon {\\n .user-avatar {\\n width: 28px;\\n border-radius: 14px;\\n height: auto;\\n }\\n }\\n\\n \", \" {\\n > button,\\n > a {\\n padding-left: 8px;\\n padding-right: 8px;\\n }\\n }\\n\"])), props => props.theme.breakpoints.down('md'));"],"names":["Connect","onNext","useLocaleContext","t","locale","useSessionContext","api","session","onConnect","result","decrypt","setSessionToken","sessionToken","refresh","Toast","message","WrapConnect","popup","open","hideCloseButton","action","checkFn","get","checkTimeout","socketUrl","webWalletUrl","getWebWalletUrl","onSuccess","messages","title","scan","confirm","success","extraParams","setup","defaultProps","styled","DidConnect","ContentLayout","props","theme","breakpoints","up","StepActions","blocklet","onStartNow","children","disabled","hasRequiredSteps","meta","Center","Between","Button","className","variant","color","onClick","Box","display","alignItems","down","StyledButton","Config","onPrevious","isMobile","useMediaQuery","useState","loading","setLoading","editingItem","setEditingItem","useBlockletContext","actions","selfConfigs","configs","filter","x","BLOCKLET_CONFIGURABLE_KEY","key","customColor","environments","find","configurableEnvs","description","value","custom","componentType","componentProps","childrenConfigs","forEachChildSync","b","ancestorDids","ancestors","slice","map","did","push","childDid","concat","sortedConfig","uniqBy","flatten","sort","a","required","missingRequiredConfigs","getAppMissingConfigs","length","onSubmitConfig","config","omit","configBlocklet","defaultValue","schemaList","item","rest","style","marginBottom","subTitle","onClickBack","bottom","mt","refreshFuel","showError","margin","paddingTop","schema","onChange","changeValue","currentItem","includes","isCertInProgress","cert","status","waitForCert","domain","Promise","resolve","reject","timer","setInterval","client","input","clearInterval","addCert","Domain","useContext","LocaleContext","loadingText","setLoadingText","error","setError","ip","setIp","showCertFailed","setShowCertFailed","domains","site","domainAliases","defaultCustomDomain","isProtected","systemDomains","replaceSlotToIp","setDomain","addDomain","secure","sleep","some","id","domainAlias","dryRun","submitDomain","address","data","Error","curDomain","window","location","hostname","generated","useEffect","then","catch","err","console","Dialog","PaperProps","minHeight","showCloseButton","mb","fontWeight","size","textDecoration","component","TextField","marginTop","label","fullWidth","e","target","errMessage","validateDomain","autoFocus","helperText","mx","Container","Layout","PublicInstance","Tooltip","IconButton","InfoOutlined","fontSize","memo","AccessControl","useTheme","setValue","publicToStore","setPublicToStore","getPublicInstance","getWhoCanAccess","submit","whoCanAccess","configWhoCanAccess","handleChange","event","handleCheckBox","isPublic","checked","configPublicToStore","iconStyle","marginRight","verticalAlign","palette","text","secondary","FormControl","RadioGroup","name","AccessConfig","rule","FormControlLabel","control","Radio","icon","WHO_CAN_ACCESS","source","Checkbox","main","Fuel","gas","tokenInfo","setOpen","need","current","owe","deficiency","symbol","endpoint","URL","origin","explorer","replace","appDid","Link","lineHeight","href","joinUrl","underline","Launch","my","onClose","amount","ml","justifyContent","width","Spinner","primary","Complete","setStatus","startupError","setStartupError","recommendedURL","setRecommendedURL","fromLauncher","searchParams","isStopped","isStarting","statusText","stopped","starting","running","visitBlocklet","redirect","startBlocklet","fromSetup","errMsg","response","_setRecommendedURL","evaluateURLs","getAccessUrl","PREFIX","results","url","serverUrl","localStorage","getItem","isButtonLoading","StyledResultMessage","footer","LinkEle","rel","marginLeft","ResultMessage","BlockletSetup","navigate","useNavigate","refreshMeta","refreshBlocklet","saveServerUrl","basePath","WELLKNOWN_SERVICE_PATH_PREFIX","steps","path","hasRequiredEnvironments","requirements","fuels","Boolean","stepIndex","findIndex","pathname","logoUrl","search","index","withSetup","Component","height","clickLogo","logo","ServerLogoNotext","cursor","ServerLogo","totalSteps","splice","StyledStepProvider","Global","styles","launcherGlobalStyle","blockletMeta","getDisplayName","navLogo","pcWidth","useOfSkeleton","headerEndAddons","SessionContext","sessionManagerProps","disableLogout","launchingText","element","to","css","StepProvider","exports","_templateObject","_styled","_interopRequireDefault","require","_propTypes","_jsxRuntime","_excluded","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","i","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","configurable","writable","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","prototype","propertyIsEnumerable","call","_ref","jsx","propTypes","any","isRequired","strings","raw","div","freeze","HeaderAddon","_react","_IconButton","_reactRouterDom","_SessionManager","_selector","_context","_Globe","_QuestionMarkCircle","extraItems","showLocale","showHelper","showSessionManager","useLocation","docPaths","jsxs","Div","cloneElement","showText","pathName","showRole","string","array","bool"],"sourceRoot":""}
1
+ {"version":3,"file":"static/js/301.af995050.chunk.js","mappings":"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","sources":["components/setup/connect.js","components/setup/layout.js","components/setup/step-actions.js","components/setup/button.js","components/setup/config.js","components/setup/domain.js","components/setup/public-instance.js","components/setup/access-control.js","components/setup/required.js","components/setup/fuel.js","components/setup/complete.js","pages/setup.js","../../ux/lib/launch-blocklet/content-layout.js","../../ux/lib/layout/addon.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport DidConnect from '@arcblock/did-connect/lib/Connect';\nimport Toast from '@abtnode/ux/lib/toast';\nimport styled from '@emotion/styled';\n\nimport { useSessionContext } from '../../contexts/session';\nimport { getWebWalletUrl, setSessionToken } from '../../util';\n\nexport default function Connect({ onNext }) {\n const { t, locale } = useLocaleContext();\n const { api, session } = useSessionContext();\n\n const onConnect = async (result, decrypt) => {\n setSessionToken(decrypt(result.sessionToken));\n try {\n await session.refresh();\n onNext();\n } catch (err) {\n Toast.error(err.message);\n }\n };\n\n return (\n <WrapConnect\n popup\n open\n hideCloseButton\n action=\"setup\"\n checkFn={api.get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n webWalletUrl={getWebWalletUrl()}\n onSuccess={onConnect}\n locale={locale}\n messages={{\n title: t('setup.connect.title'),\n scan: t('setup.connect.scan'),\n confirm: t('setup.connect.confirm'),\n success: t('setup.connect.success'),\n }}\n extraParams={{ setup: true }}\n />\n );\n}\n\nConnect.propTypes = {\n onNext: PropTypes.func,\n};\n\nConnect.defaultProps = {\n onNext: () => {},\n};\n\nconst WrapConnect = styled(DidConnect)`\n .action-info-desc {\n padding: 0 72px;\n }\n`;\n","import styled from '@emotion/styled';\n\nimport ContentLayout from '@abtnode/ux/lib/launch-blocklet/content-layout';\n\nconst Container = styled(ContentLayout)`\n display: flex;\n flex-direction: column;\n padding-bottom: 16px;\n ${(props) => props.theme.breakpoints.up('md')} {\n padding-top: 34px;\n padding-bottom: 34px;\n }\n .header {\n width: 100%;\n margin-bottom: 34px;\n ${(props) => props.theme.breakpoints.up('md')} {\n margin-bottom: 64px;\n }\n }\n .container-main {\n position: relative;\n flex: 1;\n width: 100%;\n }\n .container-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n overflow-y: auto;\n }\n`;\n\nexport default Container;\n","import PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\n\nimport Box from '@mui/material/Box';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\n\nimport { hasRequiredSteps } from '../../util';\n\nexport default function StepActions({ blocklet, onStartNow, children, disabled }) {\n const { t } = useLocaleContext();\n\n if (!blocklet || hasRequiredSteps(blocklet.meta)) {\n return <Center>{children}</Center>;\n }\n\n return (\n <Between>\n <Button\n className=\"start-now\"\n variant=\"contained\"\n color=\"primary\"\n disabled={disabled}\n onClick={() => onStartNow()}>\n {t('setup.startNow')}\n </Button>\n <Box display=\"flex\" alignItems=\"center\">\n {children}\n </Box>\n </Between>\n );\n}\n\nStepActions.propTypes = {\n blocklet: PropTypes.object,\n onStartNow: PropTypes.func,\n children: PropTypes.any,\n disabled: PropTypes.bool,\n};\nStepActions.defaultProps = {\n blocklet: null,\n onStartNow: () => {},\n children: null,\n disabled: false,\n};\n\nconst Center = styled(Box)`\n padding-top: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n .bottom-button {\n min-width: 200px;\n }\n ${(props) => props.theme.breakpoints.down('md')} {\n .bottom-button {\n min-width: 150px;\n }\n }\n`;\n\nconst Between = styled(Box)`\n padding-bottom: 48px;\n padding-top: 24px;\n margin: 0 auto;\n width: 80%;\n display: flex;\n align-items: center;\n justify-content: space-around;\n .start-now {\n min-width: 140px;\n }\n .bottom-button {\n min-width: 120px;\n }\n ${(props) => props.theme.breakpoints.down('lg')} {\n width: 100%;\n }\n\n ${(props) => props.theme.breakpoints.down('md')} {\n .start-now {\n min-width: 100px;\n }\n .bottom-button {\n min-width: 80px;\n }\n }\n`;\n","import Button from '@arcblock/ux/lib/Button';\n\nexport default function StyledButton({ ...props }) {\n return <Button className=\"bottom-button\" variant=\"contained\" color=\"primary\" {...props} />;\n}\n","import { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport omit from 'lodash/omit';\nimport uniqBy from 'lodash/uniqBy';\nimport flatten from 'lodash/flatten';\n\nimport Box from '@mui/material/Box';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport SchemaForm from '@abtnode/ux/lib/schema-form';\nimport Toast from '@abtnode/ux/lib/toast';\nimport CompactLayout from '@blocklet/launcher-layout/lib/compact-layout';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\n\nimport { getAppMissingConfigs, forEachChildSync } from '@blocklet/meta/lib/util';\nimport { BLOCKLET_CONFIGURABLE_KEY } from '@blocklet/meta/lib/constants';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nexport default function Config({ onNext, onPrevious }) {\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down('md'));\n const { t } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [editingItem, setEditingItem] = useState(null);\n const { blocklet, actions } = useBlockletContext();\n\n const selfConfigs = (blocklet.configs || []).filter((x) => !BLOCKLET_CONFIGURABLE_KEY[x.key]);\n const customColor = blocklet.environments.find((x) => x.key === 'BLOCKLET_PASSPORT_COLOR');\n\n const configurableEnvs = [\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_NAME,\n description: t('blocklet.config.name'),\n value: blocklet.environments.find((x) => x.key === 'BLOCKLET_APP_NAME').value,\n custom: true,\n },\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_DESCRIPTION,\n description: t('blocklet.config.description'),\n value: blocklet.environments.find((x) => x.key === 'BLOCKLET_APP_DESCRIPTION').value,\n custom: true,\n },\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_PASSPORT_COLOR,\n description: t('blocklet.config.passportColor'),\n value: customColor ? customColor.value : 'auto',\n custom: true,\n componentType: 'passport',\n componentProps: {\n blocklet,\n },\n },\n ];\n\n const childrenConfigs = [];\n forEachChildSync(blocklet, (b, { ancestors }) => {\n const ancestorDids = ancestors.slice(1).map((x) => x.meta.did);\n\n childrenConfigs.push((b.configs || []).map((x) => ({ ...x, childDid: ancestorDids.concat(b.meta.did) })));\n });\n\n const filteredConfigs = uniqBy(flatten([...selfConfigs, ...childrenConfigs]), 'key').filter((x) => !!x.key);\n\n const sortedConfig = filteredConfigs.sort((a, b) => {\n if (a.required && !b.required) {\n return -1;\n }\n\n if (b.required && !a.required) {\n return 1;\n }\n\n return 0;\n });\n\n const missingRequiredConfigs = getAppMissingConfigs(blocklet).length;\n\n const onSubmitConfig = async (value) => {\n const { childDid, ...config } = editingItem;\n\n const configs = [\n {\n // omit the backend unused configs\n ...omit(config, ['componentType', 'componentProps']),\n value,\n },\n ];\n\n try {\n setLoading(true);\n await actions.configBlocklet({\n configs,\n childDid,\n });\n } catch (err) {\n Toast.error(err.message);\n } finally {\n setLoading(false);\n }\n };\n\n const defaultValue = {};\n\n const schemaList = [...configurableEnvs, ...sortedConfig].map((item) => {\n const { value, ...rest } = item;\n defaultValue[item.key] = value;\n return {\n ...rest,\n };\n });\n\n const clickBack = () => {\n onPrevious();\n };\n\n return (\n <Layout>\n <div className=\"header\" style={{ marginBottom: 16 }}>\n <PageHeader title={t('setup.config.title')} subTitle={t('setup.config.subTitle')} onClickBack={clickBack} />\n </div>\n <div className=\"container-main\">\n <div className=\"container-inner\">\n <CompactLayout\n bottom={\n <StepActions\n mt={8}\n disabled={loading || editingItem}\n blocklet={blocklet}\n onStartNow={() => onNext('complete')}>\n <Box display=\"flex\" alignItems=\"center\">\n <Button\n disabled={loading || missingRequiredConfigs || editingItem}\n onClick={() => {\n actions.refreshFuel({ showError: false });\n onNext();\n }}>\n {t('setup.next')}\n </Button>\n </Box>\n </StepActions>\n }>\n <SchemaForm\n style={{ margin: '0 auto 20px', paddingTop: isMobile ? 0 : 38 }}\n loading={loading}\n schema={schemaList}\n defaultValue={defaultValue}\n onChange={(changeValue, { action, currentItem }) => {\n if (action === 'edit') {\n setEditingItem(currentItem);\n } else if (['cancel', 'confirm'].includes(action)) {\n setEditingItem(null);\n }\n if (action === 'confirm') {\n onSubmitConfig(changeValue[currentItem.key]);\n }\n }}\n />\n </CompactLayout>\n </div>\n </div>\n </Layout>\n );\n}\n\nConfig.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\n\nConfig.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n","import { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\n\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport Toast from '@abtnode/ux/lib/toast';\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport { validateDomain, sleep } from '@abtnode/ux/lib/util';\nimport { BLOCKLET_CONFIGURABLE_KEY } from '@blocklet/meta/lib/constants';\nimport Dialog from '@arcblock/ux/lib/Dialog';\nimport { replaceSlotToIp } from '@blocklet/meta/lib/util';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport api from '../../libs/api';\nimport client from '../../libs/client';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nconst isCertInProgress = (cert) => ['waiting', 'creating', 'renewaling'].includes(cert?.status);\n\nconst waitForCert = (domain) =>\n new Promise((resolve, reject) => {\n const timer = setInterval(async () => {\n try {\n const { cert } = await client.findCertificateByDomain({ input: { domain } });\n\n if (cert?.status === 'generated') {\n clearInterval(timer);\n resolve(true);\n return;\n }\n\n if (!isCertInProgress(cert)) {\n clearInterval(timer);\n resolve(false);\n }\n } catch (err) {\n clearInterval(timer);\n reject(err);\n }\n }, 1000);\n });\n\nconst addCert = async (domain) => {\n await client.issueLetsEncryptCert({ input: { domain } });\n return waitForCert(domain);\n};\n\nexport default function Domain({ onNext, onPrevious }) {\n const { t, locale } = useContext(LocaleContext);\n const [loadingText, setLoadingText] = useState('');\n const [error, setError] = useState(false);\n const { blocklet } = useBlockletContext();\n const [ip, setIp] = useState('');\n const [showCertFailed, setShowCertFailed] = useState(false);\n\n const site = blocklet?.site || {};\n const domains = site.domainAliases || [];\n const defaultCustomDomain = domains.filter((x) => !x.isProtected)[0]?.value || '';\n const systemDomains = domains.filter((x) => x.isProtected).map((x) => replaceSlotToIp(x.value, ip));\n const [domain, setDomain] = useState(defaultCustomDomain);\n\n const addDomain = async (secure) => {\n setLoadingText(t('setup.domain.addingDomain'));\n await sleep(1500);\n if (!domains.some((x) => x.value === domain)) {\n await client.addDomainAlias({ input: { id: blocklet.site.id, domainAlias: domain } });\n await client.takeRoutingSnapshot({\n input: { dryRun: false, message: `add domain ${domain} from blocklet services` },\n });\n }\n await client.configBlocklet({\n input: {\n did: [blocklet.meta.did],\n configs: [{ key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_URL, value: `http${secure ? 's' : ''}://${domain}` }],\n },\n });\n onNext();\n };\n\n const submitDomain = async () => {\n if (loadingText) {\n return;\n }\n\n try {\n setLoadingText(t('setup.domain.checkingResolvable'));\n await sleep(1500);\n const {\n data: { address },\n } = await api.get(`/dns-resolve?hostname=${domain}`);\n if (!address) {\n throw new Error(t('setup.domain.cannotResolve', { domain }));\n }\n\n if (address !== ip) {\n throw new Error(t('setup.domain.resolvedAddressError', { domain, curDomain: window.location.hostname }));\n }\n\n setLoadingText(t('setup.domain.addingCert'));\n let generated = false;\n const { cert } = await client.findCertificateByDomain({ input: { domain } });\n if (!cert) {\n generated = await addCert(domain, locale);\n } else if (cert.status === 'generated') {\n generated = true;\n } else if (['waiting', 'creating', 'renewaling'].includes(cert.status)) {\n generated = await waitForCert(domain, locale);\n } else {\n generated = await addCert(domain, locale);\n }\n\n if (generated) {\n addDomain(generated);\n } else {\n setShowCertFailed(true);\n }\n } catch (err) {\n Toast.error(err.message);\n setLoadingText('');\n }\n };\n\n useEffect(() => {\n api\n .get(`/dns-resolve?hostname=${window.location.hostname}`)\n .then(({ data }) => {\n setIp(data.address || '');\n })\n .catch((err) => {\n console.error(err.message);\n });\n }, []);\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('setup.domain.title')} subTitle={t('setup.domain.subTitle')} onClickBack={onPrevious} />\n </div>\n {showCertFailed && (\n <Dialog\n PaperProps={{\n style: {\n minHeight: 'auto',\n },\n }}\n open={showCertFailed}\n showCloseButton={false}\n title={t('setup.domain.genCertFailed')}\n actions={\n <>\n <Button\n color=\"reverse\"\n variant=\"text\"\n onClick={() => {\n setLoadingText('');\n setShowCertFailed(false);\n }}>\n {t('setup.cancel')}\n </Button>\n <Button\n color=\"primary\"\n variant=\"text\"\n onClick={() => {\n setShowCertFailed(false);\n addDomain(false);\n }}>\n {t('setup.confirm')}\n </Button>\n </>\n }>\n {t('setup.domain.certFailedDesc')}\n </Dialog>\n )}\n <Box className=\"form\">\n <Box>\n <Box mb={1} color=\"text.primary\" fontWeight=\"fontWeightBold\">\n <Box display=\"inline\">{t('setup.domain.skipStart')}</Box>\n <Button\n variant=\"text\"\n size=\"small\"\n disabled={!!loadingText}\n onClick={() => onNext()}\n style={{ paddingTop: 0 }}>\n <span style={{ textDecoration: 'underline' }}>{t('setup.domain.skip')}</span>\n </Button>\n <Box display=\"inline\">{t('setup.domain.skipEnd')}</Box>\n </Box>\n {systemDomains.map((x) => (\n <Box component=\"li\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n {x}\n </Box>\n ))}\n <Box mt={1} fontWeight=\"fontWeightBold\" color=\"text.secondary\">\n {t('setup.domain.certTip')}\n </Box>\n <Box />\n </Box>\n\n <Box mt={4} fontWeight=\"fontWeightBold\">\n {t('setup.domain.subTitle')}\n </Box>\n <TextField\n style={{ marginTop: 16, minHeight: 64 }}\n label={t('setup.domain.label')}\n fullWidth\n value={domain}\n onChange={(e) => {\n const { value } = e.target;\n setDomain(value);\n const errMessage = validateDomain(value, locale);\n setError(errMessage);\n }}\n autoFocus\n size=\"small\"\n variant=\"outlined\"\n error={!!error}\n helperText={error}\n />\n\n {domain && (\n <Box color=\"text.secondary\">\n <Box display=\"flex\">\n {t('setup.domain.tipStart')}\n <Box mx={0.5} color=\"primary.main\" fontWeight=\"fontWeightBold\">\n {domain}\n </Box>\n {t('setup.domain.tipEnd')}\n </Box>\n <Box component=\"li\">\n {t('setup.domain.recordType')}:{' '}\n <Box display=\"inline\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n A\n </Box>\n </Box>\n <Box component=\"li\">\n {t('setup.domain.recordValue')}:{' '}\n <Box display=\"inline\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n {ip}\n </Box>\n </Box>\n </Box>\n )}\n </Box>\n <StepActions mt={8} disabled={!!loadingText} blocklet={blocklet} onStartNow={() => onNext('complete')}>\n {!domain ? (\n <Button variant=\"outlined\" disabled={!!loadingText} onClick={() => onNext()}>\n {t('setup.skip')}\n </Button>\n ) : (\n <Button loading={!!loadingText} disabled={error || !!loadingText || !domain} onClick={() => submitDomain()}>\n {loadingText || t('setup.next')}\n </Button>\n )}\n </StepActions>\n </Container>\n );\n}\n\nDomain.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\nDomain.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n\nconst Container = styled(Layout)`\n height: 100%;\n overflow-y: auto;\n .form {\n width: 580px;\n word-break: break-all;\n ${(props) => props.theme.breakpoints.down('md')} {\n width: 80%;\n }\n }\n`;\n","import { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\n\nfunction PublicInstance({ children }) {\n const { t } = useLocaleContext();\n return (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {children}\n <Tooltip title={t('blocklet.config.access.publicInstanceTip')}>\n <IconButton>\n <InfoOutlinedIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n </div>\n );\n}\nPublicInstance.propTypes = {\n children: PropTypes.any.isRequired,\n};\n\nexport default memo(PublicInstance);\n","import { useState, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\n\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport useTheme from '@mui/material/styles/useTheme';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Toast from '@abtnode/ux/lib/toast';\nimport { WHO_CAN_ACCESS } from '@abtnode/constant';\n\nimport { getWhoCanAccess } from '@blocklet/meta/lib/util';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport { sleep } from '@abtnode/ux/lib/util';\nimport AccessConfig from '@abtnode/ux/lib/who-can-access/config';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\nimport PublicInstance from './public-instance';\n\nexport default function AccessControl({ onNext }) {\n const theme = useTheme();\n const { t, locale } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [value, setValue] = useState('');\n const [publicToStore, setPublicToStore] = useState(false);\n const { blocklet, actions, getPublicInstance } = useBlockletContext();\n\n useEffect(() => {\n setValue(getWhoCanAccess(blocklet));\n setPublicToStore(getPublicInstance(blocklet));\n }, [blocklet]); // eslint-disable-line\n\n const submit = async (whoCanAccess) => {\n try {\n setLoading(true);\n await sleep(800);\n await actions.configWhoCanAccess(whoCanAccess);\n setLoading(false);\n } catch (err) {\n setLoading(false);\n Toast.error(err.message);\n }\n };\n\n const handleChange = async (event) => {\n if (loading) {\n return;\n }\n setValue(event.target.value);\n await submit(event.target.value);\n };\n const handleCheckBox = async (event) => {\n const isPublic = event.target.checked;\n try {\n setLoading(true);\n await actions.configPublicToStore(isPublic);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n Toast.error(error.message);\n }\n };\n\n const iconStyle = {\n marginRight: 4,\n fontSize: 18,\n verticalAlign: 'text-bottom',\n color: theme.palette.text.secondary,\n };\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('blocklet.config.access.description')} />\n </div>\n\n <FormControl component=\"fieldset\">\n <RadioGroup name=\"inherit\" value={value} onChange={handleChange}>\n {AccessConfig.map((rule) => {\n return (\n <div key={rule.value} style={{ marginBottom: 16 }}>\n <FormControlLabel\n value={rule.value}\n control={<Radio color=\"primary\" />}\n label={\n <span>\n <rule.icon style={iconStyle} />\n {rule.title[locale]}\n </span>\n }\n />\n <Box className=\"tip\">\n {rule.description[locale]}\n {rule.value === WHO_CAN_ACCESS.ALL && value === WHO_CAN_ACCESS.ALL && blocklet.source === 'registry' && (\n <PublicInstance>\n <FormControlLabel\n style={{ marginRight: 0 }}\n value={rule.value}\n control={<Checkbox size=\"small\" />}\n label={<span>{t('blocklet.config.access.publicToStore')}</span>}\n onChange={handleCheckBox}\n checked={publicToStore}\n disabled={loading}\n />\n </PublicInstance>\n )}\n </Box>\n </div>\n );\n })}\n </RadioGroup>\n </FormControl>\n\n <StepActions mt={8} disabled={loading} blocklet={blocklet} onStartNow={() => onNext('complete')}>\n <Box display=\"flex\" alignItems=\"center\">\n <Button loading={loading} disabled={loading} onClick={() => onNext()}>\n {t('setup.continue')}\n </Button>\n </Box>\n </StepActions>\n </Container>\n );\n}\n\nAccessControl.propTypes = {\n onNext: PropTypes.func,\n};\n\nAccessControl.defaultProps = {\n onNext: () => {},\n};\n\nconst Container = styled(Layout)`\n height: 100%;\n overflow-y: auto;\n .header {\n width: 100%;\n }\n .tip {\n margin-left: 32px;\n font-size: 12px;\n margin-top: -8px;\n color: ${(props) => props.theme.palette.text.secondary};\n }\n`;\n","import styled from '@emotion/styled';\n\nconst Required = styled.span`\n color: ${(props) => props.theme.palette.error.main};\n &::before {\n content: '*';\n }\n`;\n\nexport default Required;\n","import { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport joinUrl from 'url-join';\n\nimport Box from '@mui/material/Box';\nimport Link from '@mui/material/Link';\nimport LaunchIcon from '@mui/icons-material/Launch';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport DidConnect from '@arcblock/did-connect/lib/Connect';\nimport DidAddress from '@arcblock/did-connect/lib/Address';\nimport Spinner from '@arcblock/ux/lib/Spinner';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport { useSessionContext } from '../../contexts/session';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nexport default function Fuel({ onNext, onPrevious }) {\n const { locale, t } = useContext(LocaleContext);\n const { blocklet, gas, tokenInfo, actions } = useBlockletContext();\n const { api } = useSessionContext();\n const [open, setOpen] = useState(false);\n const { need = '', current = '', owe = 99999, deficiency, symbol = '', endpoint } = gas || {};\n const { origin: explorer = '/' } = endpoint ? new URL(endpoint) : {};\n\n useEffect(() => {\n const timer = setInterval(() => {\n actions.refreshFuel();\n }, 2000);\n\n return () => {\n clearInterval(timer);\n };\n }, []); // eslint-disable-line\n\n const onSuccess = () => {\n setOpen(false);\n };\n\n if (!gas) {\n return (\n <Box display=\"flex\" justifyContent=\"center\" alignItems=\"center\" width=\"100%\">\n <Spinner />\n </Box>\n );\n }\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('setup.fuel.title')} onClickBack={onPrevious} />\n </div>\n\n <Box className=\"qr-body\">\n <Box mb={6} className=\"tip\">\n {t('setup.fuel.tipStart').replace('slot', '')}\n <span className=\"amount\">{`${need} ${symbol}`}</span>\n {t('setup.fuel.tipEnd')}\n </Box>\n <Box fontSize={16} fontWeight=\"fontWeightBold\" mb={0.5}>\n {t('setup.fuel.addressTitle')}\n </Box>\n <Box display=\"flex\" alignItems=\"center\">\n <DidAddress className=\"address\">{blocklet.appDid}</DidAddress>\n <Link\n style={{ lineHeight: 1 }}\n target=\"_blank\"\n href={joinUrl(explorer, '/explorer/accounts/', blocklet.appDid)}\n underline=\"hover\">\n <LaunchIcon className=\"icon-launch\" />\n </Link>\n </Box>\n <Box my={2}>\n <Button color=\"primary\" onClick={() => setOpen(true)} disabled={!owe}>\n {t('setup.fuel.fuelApp')}\n </Button>\n </Box>\n <DidConnect\n popup\n open={open}\n action=\"fuel\"\n checkFn={api.get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n onSuccess={onSuccess}\n onClose={() => setOpen(false)}\n locale={locale}\n messages={{\n title: t('setup.connect.title'),\n scan: t('setup.connect.scan'),\n confirm: t('setup.connect.confirm'),\n success: t('setup.connect.success'),\n }}\n extraParams={{ amount: deficiency, ...tokenInfo, endpoint }}\n />\n\n <Box display=\"flex\" color=\"text.secondary\">\n <Box display=\"flex\">\n <Box>{t('setup.fuel.need')}:</Box>\n <Box ml={0.5} color=\"primary.main\" fontWeight=\"fontWeightBold\">\n {need}\n </Box>\n </Box>\n <Box display=\"flex\" ml={3}>\n <Box>{t('setup.fuel.current')}:</Box>\n <Box ml={0.5} color={owe > 0 ? 'error.main' : 'primary.main'} fontWeight=\"fontWeightBold\">\n {current}\n </Box>\n </Box>\n </Box>\n </Box>\n\n <StepActions mt={8}>\n <Button disabled={owe > 0} onClick={() => onNext()}>\n {t('setup.next')}\n </Button>\n </StepActions>\n </Container>\n );\n}\n\nFuel.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\nFuel.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n\nconst Container = styled(Layout)`\n .qr-body {\n width: 580px;\n ${(props) => props.theme.breakpoints.down('md')} {\n width: 80%;\n }\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .tip {\n font-size: 16px;\n font-weight: bold;\n }\n\n .address {\n width: 100%;\n text-align: center;\n }\n\n .amount {\n color: ${(props) => props.theme.palette.primary.main};\n }\n\n .icon-launch {\n font-size: 16px;\n margin-left: 6px;\n line-height: 1;\n color: ${(props) => props.theme.palette.primary.main};\n }\n }\n`;\n","import { useState, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\n\nimport ResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\n\nimport Box from '@mui/material/Box';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Toast from '@abtnode/ux/lib/toast';\nimport { getAccessUrl } from '@abtnode/ux/lib/util';\nimport { evaluateURLs } from '@abtnode/util/lib/url-evaluation';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport api from '../../libs/api';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport { PREFIX } from '../../util';\n\nexport default function Complete({ onPrevious }) {\n const { t } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [status, setStatus] = useState('starting'); // stopped, starting, running\n const [startupError, setStartupError] = useState();\n const { blocklet } = useBlockletContext();\n const [recommendedURL, setRecommendedURL] = useState('');\n const fromLauncher = new URL(window.location.href).searchParams.get('from_launcher');\n\n const isStopped = !['starting', 'running'].includes(status);\n const isStarting = status === 'starting';\n const statusText = {\n stopped: t('blocklet.start'),\n starting: t('blocklet.starting'),\n running: t('blocklet.open'),\n };\n\n const visitBlocklet = () => {\n const url = new URL(window.location.href);\n const redirect = url.searchParams.get('redirect');\n if (redirect) {\n window.location.href = new URL(redirect, recommendedURL).href;\n } else {\n window.location.href = recommendedURL;\n }\n };\n\n const startBlocklet = async () => {\n setLoading(true);\n setStatus('starting');\n try {\n await api.post('/blocklet/start', {\n fromSetup: true,\n });\n setLoading(false);\n setStatus('running');\n } catch (err) {\n const errMsg = err?.response?.data || err.message;\n Toast.error(errMsg);\n setLoading(false);\n setStatus('stopped');\n setStartupError(errMsg);\n }\n };\n\n useEffect(() => {\n setStatus(blocklet.status);\n if (!['starting', 'running'].includes(blocklet.status)) {\n startBlocklet();\n }\n }, []); // eslint-disable-line\n\n useEffect(() => {\n const _setRecommendedURL = async () => {\n const results = await evaluateURLs(blocklet.site.domainAliases.map((item) => getAccessUrl(item.value, PREFIX)));\n setRecommendedURL(results[0].url);\n };\n if (!recommendedURL) {\n _setRecommendedURL();\n }\n }, [blocklet, recommendedURL]);\n\n const serverUrl = localStorage.getItem('blocklet-server-url');\n const title = startupError ? t('setup.complete.failedTitle') : t('setup.complete.title');\n\n const isButtonLoading = isStarting || !recommendedURL;\n\n if (fromLauncher && !isButtonLoading) {\n if (isStopped) {\n startBlocklet();\n } else {\n visitBlocklet();\n }\n }\n\n return (\n <Container>\n <StyledResultMessage\n variant={startupError ? 'error' : 'success'}\n title={title}\n footer={\n <StepActions>\n {isStopped && (\n <Button variant=\"outlined\" disabled={loading} onClick={() => onPrevious()}>\n {t('setup.previous')}\n </Button>\n )}\n\n {fromLauncher ? (\n <LinkEle rel=\"noreferrer\">\n <Spinner size={[16, 10]} style={{ marginRight: 14 }} /> {t('common.redirecting')}\n </LinkEle>\n ) : (\n <>\n <Button\n style={{ marginLeft: isStopped ? 24 : 0 }}\n disabled={loading || isStarting}\n onClick={() => (isStopped ? startBlocklet() : visitBlocklet())}\n loading={isButtonLoading}>\n {statusText[status] || statusText.stopped}\n </Button>\n\n {(status === 'running' || startupError) && !!serverUrl && (\n <Box width=\"100%\" mt={2}>\n <a href={serverUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"back-to-server-link\">\n {t('setup.complete.backToServer')}\n </a>\n </Box>\n )}\n </>\n )}\n </StepActions>\n }\n />\n </Container>\n );\n}\n\nconst Container = styled(Layout)`\n justify-content: center;\n .icon-success {\n width: 64px;\n height: 64px;\n color: ${(props) => props.theme.palette.success.main};\n }\n .back-to-server-link {\n color: ${(props) => props.theme.palette.primary.main};\n }\n`;\n\nconst StyledResultMessage = styled(ResultMessage)`\n && .result-footer {\n height: 120px;\n > div {\n flex-wrap: wrap;\n }\n }\n`;\n\nComplete.propTypes = {\n onPrevious: PropTypes.func,\n};\n\nComplete.defaultProps = {\n onPrevious: () => {},\n};\n\nconst LinkEle = styled.a`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 36px;\n color: ${(props) => props.theme.palette.primary.main};\n`;\n","import { useEffect } from 'react';\nimport { Routes, Route, Navigate, useNavigate } from 'react-router-dom';\nimport styled from '@emotion/styled';\nimport joinUrl from 'url-join';\nimport { Global, css } from '@emotion/react';\n\nimport Box from '@mui/material/Box';\nimport Layout from '@blocklet/launcher-layout';\nimport { StepProvider } from '@blocklet/launcher-layout/lib/context/step';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport HeaderAddon from '@abtnode/ux/lib/layout/addon';\nimport ServerLogoNotext from '@arcblock/icons/lib/ServerLogoNotext';\nimport ServerLogo from '@arcblock/icons/lib/ServerLogo';\n\nimport { WELLKNOWN_SERVICE_PATH_PREFIX } from '@abtnode/constant';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\n\nimport { hasRequiredEnvironments, saveServerUrl, PREFIX } from '../util';\nimport { useBlockletContext } from '../contexts/blocklet';\nimport { SessionContext } from '../contexts/session';\nimport Connect from '../components/setup/connect';\nimport Config from '../components/setup/config';\nimport Domain from '../components/setup/domain';\nimport AccessControl from '../components/setup/access-control';\nimport Required from '../components/setup/required';\nimport Fuel from '../components/setup/fuel';\nimport Complete from '../components/setup/complete';\n\nexport default function BlockletSetup() {\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down('md'));\n const { t, locale } = useLocaleContext();\n const navigate = useNavigate();\n const { meta, blocklet, actions } = useBlockletContext();\n const serverUrl = localStorage.getItem('blocklet-server-url');\n\n const fromLauncher = new URL(window.location.href).searchParams.get('from_launcher');\n\n useEffect(() => {\n actions.refreshMeta();\n actions.refreshBlocklet({ showError: false });\n // setup 流程刚开始时, 保存 serverUrl 到 localStorage, 方便在 setup 流程结束后返回 server\n saveServerUrl();\n }, []); // eslint-disable-line\n\n useEffect(() => {\n actions.refreshFuel({ showError: false });\n }, [blocklet?.meta?.did]); // eslint-disable-line\n\n const basePath = `${WELLKNOWN_SERVICE_PATH_PREFIX}/setup`;\n const steps = [\n {\n key: 'connect',\n name: t('setup.steps.connect'),\n path: joinUrl(basePath, 'connect'),\n },\n {\n key: 'access',\n name: t('setup.steps.access'),\n path: joinUrl(basePath, 'access'),\n },\n {\n key: 'domain',\n name: t('setup.steps.domain'),\n path: joinUrl(basePath, 'domain'),\n },\n {\n key: 'config',\n name: (\n <>\n {t('setup.steps.config')} {hasRequiredEnvironments(meta) && <Required />}\n </>\n ),\n path: joinUrl(basePath, 'config'),\n },\n meta?.requirements?.fuels?.length\n ? {\n key: 'fuel',\n name: (\n <>\n {t('setup.steps.fuel')} <Required />\n </>\n ),\n path: joinUrl(basePath, 'fuel'),\n }\n : null,\n ].filter(Boolean);\n\n const stepIndex = steps.findIndex(\n (x) => `${PREFIX.replace(/\\/$/, '')}${basePath}/${x.key}` === window.location.pathname\n );\n\n const logoUrl = joinUrl(PREFIX, WELLKNOWN_SERVICE_PATH_PREFIX, '/blocklet/logo');\n\n const onNext = async (key) => {\n const { search } = new URL(window.location.href);\n if (!key) {\n if (steps[stepIndex + 1]) {\n navigate(`${joinUrl(basePath, steps[stepIndex + 1].key)}${search}`);\n } else {\n navigate(`${joinUrl(basePath, 'complete')}${search}`);\n }\n } else {\n const index = steps.findIndex((x) => x.key === key);\n if (index > -1) {\n navigate(`${joinUrl(basePath, steps[index].key)}${search}`);\n } else {\n navigate(`${joinUrl(basePath, 'complete')}${search}`);\n }\n }\n\n await actions.refreshBlocklet();\n };\n\n const onPrevious = () => {\n navigate(-1);\n };\n\n function withSetup(Component, props) {\n if (!blocklet) {\n return (\n <Box width=\"100%\" height=\"100%\" display=\"flex\" justifyContent=\"center\" alignItems=\"center\">\n <Spinner />\n </Box>\n );\n }\n\n return <Component blocklet={blocklet} {...props} onNext={onNext} onPrevious={onPrevious} />;\n }\n\n const clickLogo = () => {\n window.open(serverUrl);\n };\n\n const logo = !isMobile ? (\n <ServerLogo onClick={clickLogo} width=\"128\" height=\"48\" style={{ marginTop: -1, cursor: 'pointer' }} />\n ) : (\n <ServerLogoNotext onClick={clickLogo} width=\"32\" height=\"32\" style={{ cursor: 'pointer' }} />\n );\n\n const totalSteps = [\n {\n key: 'agreement',\n name: t('setup.steps.introduction'),\n },\n {\n key: 'select-node',\n name: t('setup.steps.selectNodeDesc'),\n },\n {\n key: 'install',\n name: t('setup.steps.launchAppDesc'),\n },\n {\n key: 'setup',\n name: t('setup.steps.setupAppDesc'),\n children: steps,\n },\n {\n key: 'complete',\n name: t('setup.steps.launched'),\n path: joinUrl(basePath, 'complete'),\n },\n ];\n\n if (!fromLauncher) {\n totalSteps.splice(1, 1);\n }\n\n return (\n <StyledStepProvider steps={totalSteps}>\n <Global styles={launcherGlobalStyle} />\n <Layout\n locale={locale}\n blockletMeta={{ ...meta, title: getDisplayName({ ...blocklet, meta }) }}\n navLogo={logo}\n pcWidth=\"80%\"\n style={{ height: '100%' }}\n logoUrl={logoUrl}\n useOfSkeleton={false}\n headerEndAddons={<HeaderAddon SessionContext={SessionContext} sessionManagerProps={{ disableLogout: true }} />}\n launchingText={t('setup.title')}>\n <Routes>\n <Route path=\"connect\" element={<Connect onNext={onNext} />} />\n <Route path=\"domain\" element={withSetup(Domain)} />\n <Route path=\"config\" element={withSetup(Config)} />\n <Route path=\"access\" element={withSetup(AccessControl)} />\n <Route path=\"fuel\" element={withSetup(Fuel)} />\n <Route path=\"complete\" element={withSetup(Complete)} />\n <Route path=\"*\" element={<Navigate to={`connect${window.location.search}`} replace />} />\n </Routes>\n </Layout>\n </StyledStepProvider>\n );\n}\n\nconst launcherGlobalStyle = css`\n html,\n body,\n #root,\n #root > .wrapper {\n height: 100%;\n }\n`;\n\nconst StyledStepProvider = styled(StepProvider)``;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ContentLayout;\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _templateObject;\nconst _excluded = [\"children\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\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; }\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; }\nfunction ContentLayout(_ref) {\n let {\n children\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, _objectSpread(_objectSpread({}, props), {}, {\n children: children\n }));\n}\nContentLayout.propTypes = {\n children: _propTypes.default.any.isRequired\n};\nconst Container = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n width: 100%;\\n height: 100%;\\n\\n .header {\\n text-align: center;\\n }\\n\\n .body {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n margin-top: 30px;\\n width: 100%;\\n min-height: 200px;\\n flex: 1;\\n\\n \", \" {\\n padding: 24px;\\n }\\n\\n \", \" {\\n padding: 0 16px 16px;\\n }\\n }\\n\\n .footer {\\n display: flex;\\n justify-content: center;\\n\\n \", \" {\\n padding-bottom: 34px;\\n }\\n\\n \", \" {\\n margin-top: auto;\\n padding-bottom: 10px;\\n }\\n }\\n\"])), props => props.theme.breakpoints.up('md'), props => props.theme.breakpoints.down('md'), props => props.theme.breakpoints.up('sm'), props => props.theme.breakpoints.down('md'));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = HeaderAddon;\nvar _react = require(\"react\");\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _IconButton = _interopRequireDefault(require(\"@mui/material/IconButton\"));\nvar _reactRouterDom = require(\"react-router-dom\");\nvar _SessionManager = _interopRequireDefault(require(\"@arcblock/did-connect/lib/SessionManager\"));\nvar _selector = _interopRequireDefault(require(\"@arcblock/ux/lib/Locale/selector\"));\nvar _context = require(\"@arcblock/ux/lib/Locale/context\");\nvar _Globe = _interopRequireDefault(require(\"@arcblock/icons/lib/Globe\"));\nvar _QuestionMarkCircle = _interopRequireDefault(require(\"@arcblock/icons/lib/QuestionMarkCircle\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _templateObject;\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction HeaderAddon(_ref) {\n let {\n SessionContext,\n extraItems,\n showLocale,\n showHelper,\n showSessionManager,\n sessionManagerProps\n } = _ref;\n const {\n session\n } = (0, _react.useContext)(SessionContext);\n const {\n locale\n } = (0, _react.useContext)(_context.LocaleContext);\n const location = (0, _reactRouterDom.useLocation)();\n const docPaths = {\n '/dashboard': '/introduction/abtnode-overview',\n '/store': '/marketplace',\n '/blocklets': '/blocklet',\n '/router/rules': '/router',\n '/router/engine': '/router',\n '/settings/basic': '/misc',\n '/settings/team': '/misc/member-management',\n '/console': '/misc/graphql-console'\n };\n const onHelpClick = () => {\n const pathName = location.pathname;\n let path = '';\n if (pathName.indexOf('/blocklets') > -1) {\n path = docPaths['/blocklets'];\n } else if (pathName.indexOf('/store') > -1) {\n path = docPaths['/store'];\n } else if (docPaths[pathName]) {\n path = docPaths[pathName];\n }\n window.open(\"https://docs.arcblock.io/abtnode/\".concat(locale).concat(path), '_blank');\n };\n return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, {\n children: [extraItems.map((x, index) => /*#__PURE__*/(0, _react.cloneElement)(x, {\n key: index\n })), showLocale && /*#__PURE__*/(0, _jsxRuntime.jsx)(_selector.default, {\n \"data-cy\": \"locale-addon\",\n icon: _Globe.default,\n size: 23,\n showText: false,\n className: \"locale-addon\"\n }), showHelper && /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {\n onClick: onHelpClick,\n children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_QuestionMarkCircle.default, {})\n }), showSessionManager && /*#__PURE__*/(0, _jsxRuntime.jsx)(_SessionManager.default, _objectSpread({\n session: session,\n size: 24,\n showRole: true\n }, sessionManagerProps))]\n });\n}\nHeaderAddon.propTypes = {\n SessionContext: _propTypes.default.object.isRequired,\n webWalletUrl: _propTypes.default.string,\n extraItems: _propTypes.default.array,\n showLocale: _propTypes.default.bool,\n showSessionManager: _propTypes.default.bool,\n showHelper: _propTypes.default.bool,\n sessionManagerProps: _propTypes.default.object\n};\nHeaderAddon.defaultProps = {\n webWalletUrl: '',\n extraItems: [],\n showLocale: true,\n showSessionManager: true,\n showHelper: true,\n sessionManagerProps: {}\n};\nconst Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\\n .MuiIconButton-root svg {\\n width: 26px;\\n height: 26px;\\n }\\n\\n .user-addon {\\n .user-avatar {\\n width: 28px;\\n border-radius: 14px;\\n height: auto;\\n }\\n }\\n\\n \", \" {\\n > button,\\n > a {\\n padding-left: 8px;\\n padding-right: 8px;\\n }\\n }\\n\"])), props => props.theme.breakpoints.down('md'));"],"names":["Connect","onNext","useLocaleContext","t","locale","useSessionContext","api","session","onConnect","result","decrypt","setSessionToken","sessionToken","refresh","Toast","message","WrapConnect","popup","open","hideCloseButton","action","checkFn","get","checkTimeout","socketUrl","webWalletUrl","getWebWalletUrl","onSuccess","messages","title","scan","confirm","success","extraParams","setup","defaultProps","styled","DidConnect","ContentLayout","props","theme","breakpoints","up","StepActions","blocklet","onStartNow","children","disabled","hasRequiredSteps","meta","Center","Between","Button","className","variant","color","onClick","Box","display","alignItems","down","StyledButton","Config","onPrevious","isMobile","useMediaQuery","useState","loading","setLoading","editingItem","setEditingItem","useBlockletContext","actions","selfConfigs","configs","filter","x","BLOCKLET_CONFIGURABLE_KEY","key","customColor","environments","find","configurableEnvs","description","value","custom","componentType","componentProps","childrenConfigs","forEachChildSync","b","ancestorDids","ancestors","slice","map","did","push","childDid","concat","sortedConfig","uniqBy","flatten","sort","a","required","missingRequiredConfigs","getAppMissingConfigs","length","onSubmitConfig","config","omit","configBlocklet","defaultValue","schemaList","item","rest","style","marginBottom","subTitle","onClickBack","bottom","mt","refreshFuel","showError","margin","paddingTop","schema","onChange","changeValue","currentItem","includes","isCertInProgress","cert","status","waitForCert","domain","Promise","resolve","reject","timer","setInterval","client","input","clearInterval","addCert","Domain","useContext","LocaleContext","loadingText","setLoadingText","error","setError","ip","setIp","showCertFailed","setShowCertFailed","domains","site","domainAliases","defaultCustomDomain","isProtected","systemDomains","replaceSlotToIp","setDomain","addDomain","secure","sleep","some","id","domainAlias","dryRun","submitDomain","address","data","Error","curDomain","window","location","hostname","generated","useEffect","then","catch","err","console","Dialog","PaperProps","minHeight","showCloseButton","mb","fontWeight","size","textDecoration","component","TextField","marginTop","label","fullWidth","e","target","errMessage","validateDomain","autoFocus","helperText","mx","Container","Layout","PublicInstance","Tooltip","IconButton","InfoOutlined","fontSize","memo","AccessControl","useTheme","setValue","publicToStore","setPublicToStore","getPublicInstance","getWhoCanAccess","submit","whoCanAccess","configWhoCanAccess","handleChange","event","handleCheckBox","isPublic","checked","configPublicToStore","iconStyle","marginRight","verticalAlign","palette","text","secondary","FormControl","RadioGroup","name","AccessConfig","rule","FormControlLabel","control","Radio","icon","WHO_CAN_ACCESS","source","Checkbox","main","Fuel","gas","tokenInfo","setOpen","need","current","owe","deficiency","symbol","endpoint","URL","origin","explorer","replace","appDid","Link","lineHeight","href","joinUrl","underline","Launch","my","onClose","amount","ml","justifyContent","width","Spinner","primary","Complete","setStatus","startupError","setStartupError","recommendedURL","setRecommendedURL","fromLauncher","searchParams","isStopped","isStarting","statusText","stopped","starting","running","visitBlocklet","redirect","startBlocklet","fromSetup","errMsg","response","_setRecommendedURL","evaluateURLs","getAccessUrl","PREFIX","results","url","serverUrl","localStorage","getItem","isButtonLoading","StyledResultMessage","footer","LinkEle","rel","marginLeft","ResultMessage","BlockletSetup","navigate","useNavigate","refreshMeta","refreshBlocklet","saveServerUrl","basePath","WELLKNOWN_SERVICE_PATH_PREFIX","steps","path","hasRequiredEnvironments","requirements","fuels","Boolean","stepIndex","findIndex","pathname","logoUrl","search","index","withSetup","Component","height","clickLogo","logo","ServerLogoNotext","cursor","ServerLogo","totalSteps","splice","StyledStepProvider","Global","styles","launcherGlobalStyle","blockletMeta","getDisplayName","navLogo","pcWidth","useOfSkeleton","headerEndAddons","SessionContext","sessionManagerProps","disableLogout","launchingText","element","to","css","StepProvider","exports","_templateObject","_styled","_interopRequireDefault","require","_propTypes","_jsxRuntime","_excluded","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","i","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","configurable","writable","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","prototype","propertyIsEnumerable","call","_ref","jsx","propTypes","any","isRequired","strings","raw","div","freeze","HeaderAddon","_react","_IconButton","_reactRouterDom","_SessionManager","_selector","_context","_Globe","_QuestionMarkCircle","extraItems","showLocale","showHelper","showSessionManager","useLocation","docPaths","jsxs","Div","cloneElement","showText","pathName","showRole","string","array","bool"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (self.webpackChunk_abtnode_blocklet_services=self.webpackChunk_abtnode_blocklet_services||[]).push([[737],{76737:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return N}});var r,o,a,i,l=t(71171),c=t(33028),s=t(96234),u=t(59740),d=t(30969),p=t(16380),f=t(54470),h=t(58165),v=t(8825),_=t(65629),E=t(88029),m=t(42167),L=t(54177),g=t(43685),O=t(51193),b=t.n(O),C=t(74364),x=t(81721),T=t(61802),y=t(71901),w=t(47650),j=t(7017),k=t(20244),P=t(56229),B=t(99042),A=t(4485),S=t(37574),R=["appInfo"];function I(e){var n=e.appInfo,t=(0,u.Z)(e,R),r=(0,d.useState)(!1),o=(0,s.Z)(r,2),a=o[0],i=o[1],l=(0,y.Z)((function(e){return e.breakpoints.down("md")}))?32:48;return a?(0,S.jsx)(g.default,{did:n.publisher,size:l}):(0,S.jsx)(C.default,(0,c.Z)((0,c.Z)({src:n.icon,alt:n.title,width:l,height:l},t),{},{onError:function(){return i(!0)}}))}function N(){var e=(0,m.useLocaleContext)().t,n=(0,d.useState)(null),t=(0,s.Z)(n,2),r=t[0],o=t[1],a=(0,d.useState)(!1),i=(0,s.Z)(a,2),l=i[0],c=i[1],u=(0,d.useState)(!1),p=(0,s.Z)(u,2),_=p[0],g=p[1],O=(0,y.Z)((function(e){return e.breakpoints.down("md")})),C=function(){var e=new URL(window.location.href).searchParams.get("redirect")||"/";window.location=decodeURIComponent(e)};(0,d.useEffect)((function(){var e=null,n=function(){B.Z.get("/blocklet/detail").then((function(n){var t=n.data;"running"!==t.status?"starting"!==t.status&&(g(!1),o(t),clearInterval(e)):C()})).catch((function(e){c(!1),L.default.error(e.message)}))};c(!0),B.Z.get("/blocklet/detail").then((function(t){var r=t.data;c(!1),"running"!==r.status?(o(r),"starting"===r.status&&(g(!0),e=setInterval(n,3e3))):C()})).catch((function(e){c(!1),L.default.error(e.message)}))}),[]);if(!r)return(0,S.jsx)(x.default,{children:(0,S.jsx)(T.default,{})});var R={icon:"".concat(k.WELLKNOWN_SERVICE_PATH_PREFIX,"/blocklet/logo"),title:(0,j.getDisplayName)(r),publisher:r.appDid},N=localStorage.getItem("blocklet-server-url");return(0,S.jsxs)(z,{children:[(0,S.jsx)(f.Global,{styles:K}),(0,S.jsxs)("header",{className:"root-header",children:[!O&&(0,S.jsx)("div",{className:"left",children:(0,S.jsx)(w.Z,{width:"128",height:"48",onClick:function(){N&&window.open(N)},style:{cursor:N?"pointer":""}})}),(0,S.jsx)("div",{className:"right",children:(0,S.jsx)(P.Z,{SessionContext:A.B3})})]}),(0,S.jsxs)(F,{elevation:0,children:[(0,S.jsxs)(D,{children:[(0,S.jsx)(I,{appInfo:R}),(0,S.jsxs)("div",{className:"app-info_content",children:[(0,S.jsx)(h.Z,{className:"app-info_name",children:R.title}),(0,S.jsx)(b(),{size:14,className:"app-info_did",children:R.publisher})]})]}),(0,S.jsxs)(h.Z,{className:"title-box",children:[(0,S.jsx)(h.Z,{className:"icon",children:(0,S.jsx)(v.default,{})}),(0,S.jsx)(h.Z,{className:"title",children:e("blocklet.startApplication")})]}),(0,S.jsx)(h.Z,{className:"sub-title",children:e("blocklet.startDescription",{name:(0,j.getDisplayName)(r)})}),(0,S.jsx)(h.Z,{mt:8,children:(0,S.jsx)(E.default,{style:{minWidth:200},disabled:l||_,variant:"contained",color:"primary",size:"large",loading:_,onClick:function(){return c(!0),g(!0),void B.Z.post("/blocklet/start").then((function(){C()})).catch((function(e){L.default.error(e.message),c(!1),g(!1)}))},children:e(_?"blocklet.starting":"blocklet.start")})})]})]})}var K=(0,f.css)(r||(r=(0,l.Z)(["\n html,\n body,\n #root,\n #root > .wrapper {\n height: 100%;\n }\n"]))),z=p.default.div(o||(o=(0,l.Z)(["\n width: 100vw;\n height: 100%;\n background: #f6f8fa;\n display: flex;\n justify-content: center;\n align-items: center;\n\n .root-header {\n position: fixed;\n z-index: 200;\n top: 0;\n display: flex;\n width: 100%;\n height: 68px;\n align-items: center;\n justify-content: flex-end;\n padding: 24px;\n max-width: 1245px;\n\n "," {\n padding: 14px 16px;\n height: 56px;\n }\n\n .left {\n margin-top: 4px;\n margin-right: auto;\n "," {\n margin-top: 0%;\n }\n }\n\n .right {\n display: flex;\n align-items: center;\n "," {\n button,\n a {\n padding-left: 8px;\n padding-right: 8px;\n }\n }\n }\n }\n"])),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.breakpoints.down("md")})),F=(0,p.default)(_.Z)(a||(a=(0,l.Z)(["\n width: 80vw;\n max-width: 1245px;\n height: 80vh;\n box-sizing: border-box;\n padding: 32px;\n &.MuiPaper-rounded {\n border-radius: 8px;\n }\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n\n "," {\n width: 100vw;\n height: 100%;\n left: 0;\n top: 0;\n padding: 32px 0;\n }\n\n .MuiIconButton-root {\n svg {\n fill: #888;\n }\n &.Mui-disabled {\n opacity: 0.4;\n }\n }\n\n .title-box {\n display: flex;\n align-items: center;\n "," {\n margin-top: 60px;\n }\n }\n\n .icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: ",";\n color: ",";\n }\n\n .title {\n margin-left: 12px;\n color: ",";\n font-size: 24px;\n font-weight: bolder;\n }\n\n .sub-title {\n margin-top: 24px;\n color: ",";\n font-size: 16px;\n }\n"])),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.common.white}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.grey[700]})),D=p.default.div(i||(i=(0,l.Z)(["\n display: flex;\n align-items: center;\n position: absolute;\n left: 24px;\n right: 24px;\n top: 24px;\n font-size: 16px;\n font-weight: 500;\n color: #222;\n\n /* \u7981\u6b62 app icon shrink */\n > *:first-child {\n flex: 0 0 auto;\n }\n\n .app-info_content {\n padding-left: 16px;\n overflow: hidden;\n }\n\n .app-info_name {\n max-width: 100%;\n padding-right: 32px;\n line-height: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: bold;\n }\n\n .app-info_did {\n transform: translate(0, 2px);\n }\n\n .app-info_did .did-address__text {\n color: #666;\n font-size: 14px;\n }\n\n "," {\n top: 12px;\n .app-info_did {\n transform: translate(0, 0);\n }\n .app-info_did .did-address__text {\n font-size: 12px;\n }\n }\n"])),(function(e){return e.theme.breakpoints.down("md")}))},59505:function(e){var n=function(e){return function(n){var t=Object.entries(e).find((function(e){return e[1]===Number(n)}));return t?t[0]:"unknown"}},t=function(e){return function(n){return Object.keys(e).find((function(t){return e[t]===Number(n)}))}},r=Object.freeze({added:0,downloading:1,downloaded:2,installing:3,installed:4,starting:5,running:6,stopping:7,stopped:8,error:9,upgrading:10,restarting:11,corrupted:12,waiting:13,deleted:14}),o=n(r),a=t(r),i=Object.freeze({registry:0,local:1,upload:2,url:3,custom:4}),l=n(i),c=t(i),s=Object.freeze({static:"static",dapp:"dapp",starter:!1,gateway:"gateway"}),u=Object.freeze({added:"blocklet.added",downloadFailed:"blocklet.downloadFailed",installed:"blocklet.installed",installFailed:"blocklet.installFailed",upgraded:"blocklet.upgraded",upgradeFailed:"blocklet.upgradedFailed",downgraded:"blocklet.downgraded",downgradeFailed:"blocklet.downgradedFailed",updated:"blocklet.updated",statusChange:"blocklet.statusChange",removed:"blocklet.removed",started:"blocklet.started",startFailed:"blocklet.startFailed",stopped:"blocklet.stopped",reloaded:"blocklet.reloaded",purchaseChange:"blocklet.purchaseChange"}),d="service",p="wellknown",f=["web",d,p],h="publicUrl",v="wellknownUrl",_=[h],E=[h,v],m="http",L=["tcp","udp",m];e.exports=Object.freeze({BlockletStatus:r,fromBlockletStatus:o,toBlockletStatus:a,BlockletSource:i,fromBlockletSource:l,toBlockletSource:c,BlockletGroup:s,BLOCKLET_GROUPS:["dapp","static","gateway"],BlockletEvents:u,BLOCKLET_PLATFORMS:["aix","darwin","freebsd","linux","openbsd","sunos","win32"],BLOCKLET_ARCHITECTURES:["arm","arm64","ia32","mips","mipsel","ppc","ppc64","s390","s390x","x32","x64"],BLOCKLET_MODES:Object.freeze({PRODUCTION:"production",DEVELOPMENT:"development"}),BLOCKLET_FACTORY_SHARES:{developer:.7,store:.3},BLOCKLET_INTERFACE_PUBLIC:h,BLOCKLET_INTERFACE_WELLKNOWN:v,BLOCKLET_UI_INTERFACES:_,BLOCKLET_STANDARD_INTERFACES:E,BLOCKLET_INTERFACE_TYPE_WEB:"web",BLOCKLET_INTERFACE_TYPE_SERVICE:d,BLOCKLET_INTERFACE_TYPE_WELLKNOWN:p,BLOCKLET_INTERFACE_TYPES:f,BLOCKLET_INTERFACE_PROTOCOL_HTTP:m,BLOCKLET_INTERFACE_PROTOCOL_TCP:"tcp",BLOCKLET_INTERFACE_PROTOCOL_UDP:"udp",BLOCKLET_INTERFACE_PROTOCOLS:L,BLOCKLET_DYNAMIC_PATH_PREFIX:"*",BLOCKLET_DEFAULT_PORT_NAME:"BLOCKLET_PORT",BLOCKLET_DEFAULT_PATH_REWRITE:"/",BLOCKLET_RELEASE_FOLDER:".blocklet/release",BLOCKLET_RELEASE_FILE:"blocklet.json",BLOCKLET_BUNDLE_FOLDER:".blocklet/bundle",BLOCKLET_BUNDLE_FILE:"blocklet.zip",BLOCKLET_ENTRY_FILE:"blocklet.js",BLOCKLET_META_FILE:"blocklet.yml",BLOCKLET_META_FILE_ALT:"blocklet.yaml",BLOCKLET_DEFAULT_VERSION:"1.0.0",BLOCKLET_LATEST_SPEC_VERSION:"1.2.7",BLOCKLET_LATEST_REQUIREMENT_SERVER:">=1.7.0",BLOCKLET_LATEST_REQUIREMENT_ABTNODE:">=1.5.15",BLOCKLET_CONFIGURABLE_KEY:{BLOCKLET_CLUSTER_SIZE:"BLOCKLET_CLUSTER_SIZE",BLOCKLET_APP_NAME:"BLOCKLET_APP_NAME",BLOCKLET_APP_DESCRIPTION:"BLOCKLET_APP_DESCRIPTION",BLOCKLET_APP_SK:"BLOCKLET_APP_SK",BLOCKLET_APP_LOGO:"BLOCKLET_APP_LOGO",BLOCKLET_APP_LOGO_SQUARE:"BLOCKLET_APP_LOGO_SQUARE",BLOCKLET_APP_URL:"BLOCKLET_APP_URL",BLOCKLET_PASSPORT_COLOR:"BLOCKLET_PASSPORT_COLOR",BLOCKLET_WALLET_TYPE:"BLOCKLET_WALLET_TYPE",BLOCKLET_DELETABLE:"BLOCKLET_DELETABLE"},CHAIN_INFO_CONFIG:{CHAIN_TYPE:["type","arcblock"],CHAIN_ID:["id","none"],CHAIN_HOST:["host","none"]}})},65724:function(e,n,t){var r=t(59505);e.exports=r},7017:function(e,n,t){var r=t(43681).default,o=t(27609).default,a=t(91461).default,i=t(38636).default,l=t(46292),c=t(67179),s=t(19611),u=t(20244),d=u.NODE_SERVICES,p=u.SLOT_FOR_IP_DNS_SITE,f=u.WHO_CAN_ACCESS,h=t(65724),v=h.BlockletGroup,_=h.fromBlockletStatus,E=h.fromBlockletSource,m=h.BLOCKLET_INTERFACE_TYPE_WEB,L=h.BLOCKLET_CONFIGURABLE_KEY,g=h.CHAIN_INFO_CONFIG,O=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return"".concat(n.map((function(e){return e&&e.meta?e.meta.did:""})).join("/")).concat(n.length?"/":"").concat(e&&e.meta?e.meta.did:"")},b=function e(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},l=r.parallel,c=void 0!==l&&l,s=r.sync,u=r.params,d=r._parent,p=r._root,f=r._level,h=void 0===f?0:f,v=r._tasks,_=r._ancestors,E=void 0===_?[]:_,m=p||d||n,L=O(n,E),g=E.concat(n);if(s){var b=t(n,{parent:d,root:m,level:h,params:u,ancestors:E,id:L});if(n.children){var C,x=i(n.children);try{for(x.s();!(C=x.n()).done;){var T=C.value;e(T,t,{sync:s,params:b,_parent:n,_root:m,_level:h+1,_ancestors:g})}}catch(P){x.e(P)}finally{x.f()}}return null}if(!c)return new Promise(function(){var r=a(o().mark((function r(a,l){var c,s,p,f;return o().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,t(n,{parent:d,root:m,level:h,ancestors:E,params:u,id:L});case 3:if(c=r.sent,!n.children){r.next=22;break}s=i(n.children),r.prev=6,s.s();case 8:if((p=s.n()).done){r.next=14;break}return f=p.value,r.next=12,e(f,t,{params:c,_parent:n,_root:m,_level:h+1,_ancestors:g});case 12:r.next=8;break;case 14:r.next=19;break;case 16:r.prev=16,r.t0=r.catch(6),s.e(r.t0);case 19:return r.prev=19,s.f(),r.finish(19);case 22:a(null),r.next=28;break;case 25:r.prev=25,r.t1=r.catch(0),l(r.t1);case 28:case"end":return r.stop()}}),r,null,[[0,25],[6,16,19,22]])})));return function(e,n){return r.apply(this,arguments)}}());var y=v||[];if(y.push(t(n,{parent:d,root:m,level:h,ancestors:E,id:L})),n.children){var w,j=i(n.children);try{for(j.s();!(w=j.n()).done;){var k=w.value;e(k,t,{parallel:c,_parent:n,_root:m,_level:h+1,_tasks:y,_ancestors:g})}}catch(P){j.e(P)}finally{j.f()}}return v?null:Promise.all(y)},C=function(e,n){return b(e,n,{sync:!0})},x=function(e,n,t){return b(e,(function(e,t){return 0===t.level?{}:n(e,t)}),t)},T=function(e,n){var t={};if(!n)return t;for(var r=n.length-1;r>=0;r--){var o=n[r];Array.isArray(o.configs)&&o.configs.forEach((function(n){var r=n.key,o=n.value,a=n.secure,i=n.shared;if(!t[r]&&o&&!1===a&&!1!==i&&!L[r]){var l=(e.configs||[]).find((function(e){return e.key===r}));l&&l.value||(t[r]=o)}}))}return t},y=function(e){if(!e)return null;var n=(e.meta||e||{}).interfaces,t=void 0===n?[]:n;return Array.isArray(t)?t.find((function(e){return e.type===m})):null},w=function(e,n){var t=[n];n===d.AUTH&&t.push(d.AUTH_SERVICE);var r=y(e);return r?(r.services||[]).find((function(e){return t.includes(e.name)})):null};e.exports={isFreeBlocklet:function(e){return!e.payment||(e.payment.price||[]).map((function(e){return e.value||0})).every((function(e){return 0===e}))},isFreeComponent:function(e){return!e.payment||(!e.payment.componentPrice||!e.payment.componentPrice.length)},isComponentBlocklet:function(e){return!1!==l(e,"capabilities.component")},forEachBlocklet:b,forEachBlockletSync:C,forEachChild:x,forEachChildSync:function(e,n){return x(e,n,{sync:!0})},isDeletableBlocklet:function(e){if(!e)return!1;var n=e.environments.find((function(e){return"BLOCKLET_DELETABLE"===e.key}));return!n||"yes"===n.value},getSharedConfigObj:T,getAppMissingConfigs:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=[];return C(e,(function(e,t){var r=t.ancestors,o=e.configs||[],a=T(e,r);o.forEach((function(t){!t.required||t.value||a[t.key]||n.push({did:e.meta.did,key:t.key,description:t.description})}))})),n},getComponentMissingConfigs:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=[],r=e.configs||[],o=T(e,n);return r.forEach((function(n){!n.required||n.value||o[n.key]||t.push({did:e.meta.did,key:n.key,description:n.description})})),t},isEnvShareable:function(e){return!!e&&!(!e.key&&!e.name)&&!e.secure&&!1!==e.shared&&!L[e.key||e.name]},wipeSensitiveData:function(e){return e?(b(e,(function(n){(n.configs||[]).forEach((function(e){e.secure&&(e.value=e.value?"__encrypted__":"")})),(n.environments||[]).forEach((function(e){["BLOCKLET_APP_SK"].includes(e.key)&&(e.value="__encrypted__")})),delete e.configObj,delete e.environmentObj}),{sync:!0}),e):e},hasRunnableComponent:function(e){var n=!1;return C(e,(function(e){e.meta.group!==v.gateway&&(n=!0)})),n},getDisplayName:function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return"";var t,r=e.meta;if(!n&&e.environments){var o=e.environments.find((function(e){return"BLOCKLET_APP_NAME"===e.key}));o&&o.value&&(t=o.value)}return t||r.title||r.name},fixBlockletStatus:function(e){e&&(C(e,(function(e){e.status=_(e.status),void 0!==e.source&&(e.source=E(e.source))})),e.settings&&(e.settings.children||[]).forEach((function(e){C(e,(function(e){e.status=_(e.status),void 0!==e.source&&(e.source=E(e.source))}))})))},findWebInterface:y,findServiceFromMeta:w,getWhoCanAccess:function(e){if(!e)return f.ALL;if(l(e,"settings.whoCanAccess"))return e.settings.whoCanAccess;var n=w(e.meta,d.AUTH);return l(n,"config.whoCanAccess")?n.config.whoCanAccess:f.ALL},replaceSlotToIp:function(e,n){return(e||"").replace(p,(n||"").replace(/\./g,"-"))},urlFriendly:function(e){return c(e.replace(/^[@./-]/,"").replace(/[@./_]/g,"-"))},getComponentId:O,getComponentName:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return"".concat(n.map((function(e){return e&&e.meta?e.meta.name:""})).join("/")).concat(n.length?"/":"").concat(e&&e.meta?e.meta.name:"")},getComponentBundleId:function(e){return"".concat(e.meta.bundleName,"@").concat(e.meta.version)},findComponentById:function e(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=r._ancestors,a=void 0===o?[]:o,l=r.returnAncestors,c=void 0!==l&&l,s=O(n,a);if(t===s)return c?{component:n,ancestors:a}:n;var u,d=i(n.children||[]);try{for(d.s();!(u=d.n()).done;){var p=u.value,f=a.concat(n),h=e(p,t,{_ancestors:f,returnAncestors:c});if(h)return h}}catch(v){d.e(v)}finally{d.f()}return null},getParentComponentName:function(e){if(!e)return"";var n=e.split("/");return n.pop(),n.length?(n[n.length-1].startsWith("@")&&n.pop(),n.length?n.join("/"):""):""},getConnectAppUrl:function(e){var n=e.request,t=e.baseUrl,r=n.headers["x-blocklet-did"]||"",o=n.headers["x-blocklet-real-did"]||"",a=n.headers["x-path-prefix"]||"/",i=n.headers["x-group-path-prefix"]||"/",l=t;return r!==o&&a!==i&&(l=s(s(l,"/").replace(a,i),"")),l},getChainInfo:function(e){return Object.entries(g).reduce((function(n,t){var o=r(t,2),a=o[0],i=r(o[1],2),c=i[0],s=i[1];return n[c]=l(e,a)||s,n}),{})}}},56229:function(e,n,t){"use strict";n.Z=L;var r,o=t(30969),a=v(t(16380)),i=v(t(24974)),l=v(t(4328)),c=t(86822),s=v(t(85820)),u=v(t(71847)),d=t(42167),p=v(t(46513)),f=v(t(91077)),h=t(37574);function v(e){return e&&e.__esModule?e:{default:e}}function _(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function E(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?_(Object(t),!0).forEach((function(n){m(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):_(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function m(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function L(e){var n=e.SessionContext,t=e.extraItems,r=e.showLocale,a=e.showHelper,i=e.showSessionManager,v=e.sessionManagerProps,_=(0,o.useContext)(n).session,m=(0,o.useContext)(d.LocaleContext).locale,L=(0,c.useLocation)(),g={"/dashboard":"/introduction/abtnode-overview","/store":"/marketplace","/blocklets":"/blocklet","/router/rules":"/router","/router/engine":"/router","/settings/basic":"/misc","/settings/team":"/misc/member-management","/console":"/misc/graphql-console"};return(0,h.jsxs)(b,{children:[t.map((function(e,n){return(0,o.cloneElement)(e,{key:n})})),r&&(0,h.jsx)(u.default,{"data-cy":"locale-addon",icon:p.default,size:23,showText:!1,className:"locale-addon"}),a&&(0,h.jsx)(l.default,{onClick:function(){var e=L.pathname,n="";e.indexOf("/blocklets")>-1?n=g["/blocklets"]:e.indexOf("/store")>-1?n=g["/store"]:g[e]&&(n=g[e]),window.open("https://docs.arcblock.io/abtnode/".concat(m).concat(n),"_blank")},children:(0,h.jsx)(f.default,{})}),i&&(0,h.jsx)(s.default,E({session:_,size:24,showRole:!0},v))]})}L.propTypes={SessionContext:i.default.object.isRequired,webWalletUrl:i.default.string,extraItems:i.default.array,showLocale:i.default.bool,showSessionManager:i.default.bool,showHelper:i.default.bool,sessionManagerProps:i.default.object},L.defaultProps={webWalletUrl:"",extraItems:[],showLocale:!0,showSessionManager:!0,showHelper:!0,sessionManagerProps:{}};var g,O,b=a.default.div(r||(g=["\n display: flex;\n justify-content: center;\n align-items: center;\n\n .MuiIconButton-root svg {\n width: 26px;\n height: 26px;\n }\n\n .user-addon {\n .user-avatar {\n width: 28px;\n border-radius: 14px;\n height: auto;\n }\n }\n\n "," {\n > button,\n > a {\n padding-left: 8px;\n padding-right: 8px;\n }\n }\n"],O||(O=g.slice(0)),r=Object.freeze(Object.defineProperties(g,{raw:{value:Object.freeze(O)}}))),(function(e){return e.theme.breakpoints.down("md")}))},91077:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;(r=t(30969))&&r.__esModule;var r,o=t(37574);function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}var c=function(e){return(0,o.jsxs)("svg",i(i({},e),{},{children:[(0,o.jsx)("path",{d:"M9.928 13.133a.981.981 0 0 0-.678.252.79.79 0 0 0-.281.61c0 .27.094.482.283.636.19.154.41.231.663.231.257 0 .48-.076.673-.228.19-.153.287-.365.287-.639a.796.796 0 0 0-.275-.61.958.958 0 0 0-.672-.252zM12.633 7.2a2.526 2.526 0 0 0-1.035-.88c-.441-.212-.955-.32-1.528-.32-.617 0-1.166.129-1.63.383-.467.255-.826.582-1.07.972-.245.392-.37.786-.37 1.172 0 .205.086.397.254.57.169.174.38.262.625.262.419 0 .705-.246.85-.729.132-.399.296-.703.485-.905.177-.19.465-.286.856-.286.336 0 .602.095.813.29.208.191.309.42.309.698a.78.78 0 0 1-.1.387c-.07.125-.156.24-.258.342-.108.109-.287.27-.53.484a9.184 9.184 0 0 0-.679.647 2.268 2.268 0 0 0-.42.656 2.27 2.27 0 0 0-.159.884c0 .288.08.511.24.663.156.15.352.227.58.227.439 0 .714-.24.796-.687.041-.186.073-.316.094-.39.019-.067.046-.136.081-.205.034-.068.089-.144.162-.227.076-.088.179-.19.305-.306.472-.422.805-.727.99-.908.19-.186.356-.41.493-.665A1.9 1.9 0 0 0 13 8.416a2.18 2.18 0 0 0-.367-1.217",fill:"currentColor"}),(0,o.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10 17.5a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15zm0 1.5a9 9 0 1 0 0-18 9 9 0 0 0 0 18z",fill:"currentColor"})]}))};c.defaultProps={width:"20",height:"20",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},c.displayName="question-mark-circle";var s=c;n.default=s},47650:function(e,n,t){"use strict";n.Z=void 0;(r=t(30969))&&r.__esModule;var r,o=t(37574);function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}var c=function(e){return(0,o.jsxs)("svg",i(i({},e),{},{children:[(0,o.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M49.152 10.673L30.72 0 12.288 10.673v14.194L0 31.982v21.345L18.432 64l12.258-7.098.03.017.03-.017L43.008 64 61.44 53.327V31.982l-12.288-7.115V10.673zm10.368 22.42l-12.288-7.115V11.784L30.72 2.224l-16.512 9.56v14.194L1.92 33.093v19.122l16.512 9.561L30.69 54.68l.03.017.03-.017 12.258 7.097 16.512-9.56V33.093z",fill:"url(#paint0_linear_615_418)"}),(0,o.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M80.005 26.07V10.03h7.737a3.795 3.795 0 0 1 3.79 3.8v1.152c0 1.01-.394 1.929-1.035 2.61a3.801 3.801 0 0 1 1.901 3.295v1.382c0 2.1-1.696 3.8-3.79 3.8h-8.603zm1.684-8.983h6.226a2.11 2.11 0 0 0 1.932-2.104V13.83a2.108 2.108 0 0 0-2.105-2.112h-6.053v5.369zm0 7.294v-5.598l6.92-.007c1.163 0 2.105.945 2.105 2.111v1.382a2.108 2.108 0 0 1-2.105 2.112h-6.92zm15.566-14.352v16.04h-1.762V10.03h1.762zm8.733 4.331h-1.827a3.816 3.816 0 0 0-3.811 3.822v4.066a3.816 3.816 0 0 0 3.811 3.822h1.827a3.817 3.817 0 0 0 3.811-3.822v-4.066a3.817 3.817 0 0 0-3.811-3.822zm-1.827 1.768c-1.131 0-2.049.92-2.049 2.054v4.066c0 1.135.918 2.054 2.049 2.054h1.827c1.131 0 2.048-.92 2.048-2.054v-4.066a2.051 2.051 0 0 0-2.048-2.054h-1.827zm21.043 9.948v-5.77h2.148l3.322 5.77h2.035l-3.821-6.638 2.993-5.198h-2.035l-2.474 4.298h-2.168V10.03h-1.762v16.047h1.762zm-5.556-7.581v-.313a2.051 2.051 0 0 0-2.048-2.054h-1.827c-1.132 0-2.049.92-2.049 2.054v4.066c0 1.135.917 2.054 2.049 2.054h1.827c1.131 0 2.048-.92 2.048-2.054v-.313h1.762v.313a3.816 3.816 0 0 1-3.81 3.822h-1.827a3.816 3.816 0 0 1-3.811-3.822v-4.066a3.816 3.816 0 0 1 3.811-3.822h1.827a3.816 3.816 0 0 1 3.81 3.822v.313h-1.762zm17.918 7.575V10.03h-1.762v16.04h1.762zm4.989-5.372v1.55c0 1.135.917 2.054 2.049 2.054h1.827c1.131 0 2.048-.92 2.048-2.054v-.313h1.762v.313a3.816 3.816 0 0 1-3.81 3.822h-1.827a3.816 3.816 0 0 1-3.811-3.822v-4.066a3.816 3.816 0 0 1 3.811-3.822h1.827a3.816 3.816 0 0 1 3.81 3.822v.748h.001v1.768h-7.687zm5.924-1.768h-5.924v-.748c0-1.134.917-2.054 2.049-2.054h1.827c1.131 0 2.048.92 2.048 2.054v.748zm5.489-1.917H152.4v-1.768h1.568V12.39h1.684v2.856h4.077v1.768h-4.077v5.693c0 .925.747 1.675 1.669 1.675s1.67-.75 1.67-1.675v-.351h1.684v.351a3.358 3.358 0 0 1-3.354 3.364 3.358 3.358 0 0 1-3.353-3.364v-5.693z",fill:"#121319"}),(0,o.jsx)("path",{d:"M91.034 36.52c-.112.196-.233.34-.364.434a.793.793 0 0 1-.462.126c-.196 0-.41-.07-.644-.21-.224-.15-.495-.313-.812-.49a6.307 6.307 0 0 0-1.12-.476c-.42-.15-.92-.224-1.498-.224-.523 0-.98.065-1.372.196a2.87 2.87 0 0 0-.994.518 2.117 2.117 0 0 0-.588.812 2.59 2.59 0 0 0-.196 1.022c0 .476.13.872.392 1.19.27.317.625.588 1.064.812.439.224.938.424 1.498.602.56.177 1.134.368 1.722.574.588.196 1.162.429 1.722.7.56.261 1.06.597 1.498 1.008.439.401.789.896 1.05 1.484.27.588.406 1.302.406 2.142 0 .914-.159 1.773-.476 2.576a5.884 5.884 0 0 1-1.372 2.086c-.597.588-1.33 1.054-2.198 1.4-.868.336-1.862.504-2.982.504a9.288 9.288 0 0 1-1.904-.196 9.827 9.827 0 0 1-1.806-.532 9.763 9.763 0 0 1-1.61-.84 7.8 7.8 0 0 1-1.344-1.092l1.106-1.806c.093-.131.215-.238.364-.322a.883.883 0 0 1 .476-.14c.233 0 .485.098.756.294.27.186.593.396.966.63.373.233.807.448 1.302.644.504.186 1.106.28 1.806.28 1.073 0 1.904-.252 2.492-.756.588-.514.882-1.246.882-2.198 0-.532-.135-.966-.406-1.302a3.073 3.073 0 0 0-1.05-.84 7.585 7.585 0 0 0-1.498-.588c-.56-.159-1.13-.332-1.708-.518a14.738 14.738 0 0 1-1.708-.672 5.535 5.535 0 0 1-1.498-1.022 4.75 4.75 0 0 1-1.064-1.568c-.261-.635-.392-1.414-.392-2.338 0-.738.145-1.456.434-2.156.299-.7.728-1.321 1.288-1.862.56-.542 1.25-.976 2.072-1.302.821-.327 1.764-.49 2.828-.49 1.195 0 2.296.186 3.304.56 1.008.373 1.867.896 2.576 1.568l-.938 1.778zM104.274 44.248a3.95 3.95 0 0 0-.196-1.26 2.909 2.909 0 0 0-.56-1.05 2.557 2.557 0 0 0-.966-.7c-.382-.178-.83-.266-1.344-.266-.998 0-1.787.284-2.365.854-.57.569-.934 1.376-1.093 2.422h6.524zm-6.594 2.086c.056.737.187 1.376.392 1.918a4 4 0 0 0 .813 1.33c.335.345.732.606 1.189.784.467.168.98.252 1.54.252s1.041-.066 1.442-.196c.411-.131.766-.276 1.064-.434.308-.159.574-.304.798-.434a1.38 1.38 0 0 1 .672-.196c.29 0 .504.107.644.322l.994 1.26a5.902 5.902 0 0 1-1.288 1.134 7.653 7.653 0 0 1-1.498.728 8.298 8.298 0 0 1-1.582.378c-.532.074-1.05.112-1.554.112a7.772 7.772 0 0 1-2.785-.49 6.361 6.361 0 0 1-2.24-1.47c-.635-.654-1.135-1.456-1.499-2.408-.364-.962-.545-2.072-.545-3.332 0-.98.158-1.9.476-2.758.317-.868.77-1.62 1.358-2.254a6.47 6.47 0 0 1 2.17-1.526c.858-.374 1.824-.56 2.897-.56.906 0 1.741.144 2.506.434.766.289 1.424.714 1.974 1.274.551.55.98 1.232 1.288 2.044.318.802.476 1.722.476 2.758 0 .522-.056.877-.168 1.064-.112.177-.326.266-.644.266h-8.89zM113.24 41.21c.448-.859.98-1.531 1.596-2.016.616-.495 1.344-.742 2.184-.742.662 0 1.194.144 1.596.434l-.224 2.59c-.047.168-.117.289-.21.364a.558.558 0 0 1-.35.098c-.14 0-.35-.024-.63-.07a4.694 4.694 0 0 0-.798-.07c-.383 0-.724.056-1.022.168-.299.112-.57.275-.812.49a3.354 3.354 0 0 0-.63.756c-.178.298-.346.639-.504 1.022v8.848h-3.458V38.718h2.03c.354 0 .602.065.742.196.14.121.233.345.28.672l.21 1.624zM133.373 38.718l-5.698 14.364h-3.136l-5.698-14.364h2.856c.261 0 .476.06.644.182a.849.849 0 0 1 .35.462l2.772 7.672a20.846 20.846 0 0 1 .686 2.604 31.6 31.6 0 0 1 .308-1.288c.112-.43.247-.868.406-1.316l2.828-7.672a.944.944 0 0 1 .35-.462 1 1 0 0 1 .602-.182h2.73zM144.032 44.248a3.95 3.95 0 0 0-.196-1.26 2.909 2.909 0 0 0-.56-1.05 2.557 2.557 0 0 0-.966-.7c-.382-.178-.83-.266-1.344-.266-.998 0-1.787.284-2.366.854-.569.569-.933 1.376-1.092 2.422h6.524zm-6.594 2.086c.056.737.187 1.376.392 1.918.206.532.476.975.812 1.33.336.345.733.606 1.19.784.467.168.98.252 1.54.252s1.041-.066 1.442-.196c.411-.131.766-.276 1.064-.434.308-.159.574-.304.798-.434a1.38 1.38 0 0 1 .672-.196c.29 0 .504.107.644.322l.994 1.26a5.902 5.902 0 0 1-1.288 1.134 7.653 7.653 0 0 1-1.498.728 8.298 8.298 0 0 1-1.582.378c-.532.074-1.05.112-1.554.112a7.776 7.776 0 0 1-2.786-.49 6.37 6.37 0 0 1-2.24-1.47c-.634-.654-1.134-1.456-1.498-2.408-.364-.962-.546-2.072-.546-3.332 0-.98.159-1.9.476-2.758.318-.868.77-1.62 1.358-2.254a6.48 6.48 0 0 1 2.17-1.526c.859-.374 1.825-.56 2.898-.56.906 0 1.741.144 2.506.434.766.289 1.424.714 1.974 1.274.551.55.98 1.232 1.288 2.044.318.802.476 1.722.476 2.758 0 .522-.056.877-.168 1.064-.112.177-.326.266-.644.266h-8.89zM152.997 41.21c.448-.859.98-1.531 1.596-2.016.616-.495 1.344-.742 2.184-.742.663 0 1.195.144 1.596.434l-.224 2.59c-.046.168-.116.289-.21.364a.556.556 0 0 1-.35.098c-.14 0-.35-.024-.63-.07a4.676 4.676 0 0 0-.798-.07c-.382 0-.723.056-1.022.168a2.599 2.599 0 0 0-.812.49 3.408 3.408 0 0 0-.63.756c-.177.298-.345.639-.504 1.022v8.848h-3.458V38.718h2.03c.355 0 .602.065.742.196.14.121.234.345.28.672l.21 1.624z",fill:"#121319"}),(0,o.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M49.152 24.83L30.72 14.19 12.288 24.831v21.283L30.72 56.756l18.432-10.642V24.831zm-34.944 1.11l16.512-9.534 16.512 9.533v19.067L30.72 54.539l-16.512-9.533V25.939zm13.338-2.894a.96.96 0 0 1 .924-.696h4.5a.96.96 0 0 1 .924.696l.856 2.999 2.12 1.223 3.025-.757a.96.96 0 0 1 1.064.451l2.25 3.898a.96.96 0 0 1-.14 1.148l-2.17 2.24v2.448l2.17 2.24a.96.96 0 0 1 .14 1.148l-2.25 3.899a.96.96 0 0 1-1.065.45l-3.024-.756-2.12 1.223-.856 2.998a.96.96 0 0 1-.923.697H28.47a.96.96 0 0 1-.924-.697L26.69 44.9l-2.12-1.223-3.024.757a.96.96 0 0 1-1.065-.451l-2.25-3.898a.96.96 0 0 1 .141-1.148l2.168-2.241v-2.447l-2.168-2.241a.96.96 0 0 1-.142-1.148l2.251-3.898a.96.96 0 0 1 1.065-.451l3.025.757 2.119-1.223.856-2.999zm.44 4.467a.96.96 0 0 0 .443-.567l.765-2.676h3.053l.764 2.676a.96.96 0 0 0 .443.567l2.792 1.612a.96.96 0 0 0 .713.1l2.7-.676 1.526 2.644-1.935 2a.96.96 0 0 0-.27.668v3.223c0 .25.097.489.27.668l1.935 2-1.527 2.643-2.699-.675a.96.96 0 0 0-.713.1l-2.792 1.612a.96.96 0 0 0-.443.567l-.764 2.676h-3.053l-.765-2.676a.96.96 0 0 0-.443-.567l-2.792-1.612a.96.96 0 0 0-.713-.1l-2.7.675-1.526-2.643 1.935-2a.96.96 0 0 0 .27-.668V33.86a.96.96 0 0 0-.27-.667l-1.935-2 1.527-2.644 2.7.676a.96.96 0 0 0 .712-.1l2.792-1.612zm2.734 14.128a6.168 6.168 0 1 1 0-12.337 6.168 6.168 0 0 1 0 12.337zm4.248-6.169a4.248 4.248 0 1 1-8.496 0 4.248 4.248 0 0 1 8.496 0z",fill:"url(#paint1_linear_615_418)"}),(0,o.jsxs)("defs",{children:[(0,o.jsxs)("linearGradient",{id:"paint0_linear_615_418",x1:"30.72",y1:"96",x2:"94.667",y2:"34.611",gradientUnits:"userSpaceOnUse",children:[(0,o.jsx)("stop",{stopColor:"#0FA4B7"}),(0,o.jsx)("stop",{offset:".495",stopColor:"#1DC1C7"}),(0,o.jsx)("stop",{offset:"1",stopColor:"#2BE0D7"})]}),(0,o.jsxs)("linearGradient",{id:"paint1_linear_615_418",x1:"27.437",y1:"99.246",x2:"97.761",y2:"44.937",gradientUnits:"userSpaceOnUse",children:[(0,o.jsx)("stop",{stopColor:"#0FA4B7"}),(0,o.jsx)("stop",{offset:".495",stopColor:"#1DC1C7"}),(0,o.jsx)("stop",{offset:"1",stopColor:"#2BE0D7"})]})]})]}))};c.defaultProps={width:"170",height:"64",viewBox:"0 0 170 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},c.displayName="server-logo";var s=c;n.Z=s},8825:function(e,n,t){"use strict";var r=t(71600);Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var o=r(t(48035)),a=t(37574),i=(0,o.default)((0,a.jsx)("path",{d:"M8 5v14l11-7z"}),"PlayArrow");n.default=i}}]);
2
+ //# sourceMappingURL=737.4a50663c.chunk.js.map