@blocklet/launcher-layout 2.3.18 → 2.3.20

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.
@@ -0,0 +1,52 @@
1
+ import PropTypes from 'prop-types';
2
+ import styled from '@emotion/styled';
3
+ import { Box } from '@mui/material';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ function MarkdownBody({
6
+ children
7
+ }) {
8
+ return /*#__PURE__*/_jsx(Root, {
9
+ children: children
10
+ });
11
+ }
12
+ const codeFont = 'source-code-pro, Menlo, Monaco, Consolas, Courier New, monospace !important';
13
+ const Root = styled(Box)`
14
+ .highlight pre,
15
+ pre {
16
+ border-radius: 5px;
17
+ }
18
+ code {
19
+ font-family: ${codeFont};
20
+ }
21
+ pre code {
22
+ font-size: 14px;
23
+ font-family: ${codeFont};
24
+ }
25
+
26
+ h1,
27
+ h2,
28
+ h3,
29
+ h4,
30
+ h5,
31
+ h6 {
32
+ font-weight: 700 !important;
33
+ font-size: 1.2rem !important;
34
+ line-height: 1.5 !important;
35
+ margin-bottom: 16px;
36
+ margin-top: 24px;
37
+ border-bottom: initial !important;
38
+ }
39
+
40
+ .CodeMirror pre {
41
+ background: #f6f8fa !important;
42
+ }
43
+
44
+ .anchor {
45
+ display: none;
46
+ }
47
+ `;
48
+ MarkdownBody.propTypes = {
49
+ children: PropTypes.any.isRequired
50
+ };
51
+ MarkdownBody.defaultProps = {};
52
+ export default MarkdownBody;
@@ -1,14 +1,15 @@
1
1
  import { createElement } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { getDisplayName } from '@blocklet/meta/lib/util';
4
+ import DID from '@arcblock/ux/lib/DID';
4
5
  import get from 'lodash/get';
5
6
  import styled from '@emotion/styled';
7
+ import MarkdownPreview from '@uiw/react-markdown-preview';
8
+ import { Box, Table, TableBody, TableCell, TableContainer, TableRow, Typography } from '@mui/material';
6
9
  import RehypeReact from 'rehype-react';
7
- import Table from '@mui/material/Table';
8
- import TableBody from '@mui/material/TableBody';
9
- import TableCell from '@mui/material/TableCell';
10
- import TableContainer from '@mui/material/TableContainer';
11
- import TableRow from '@mui/material/TableRow';
10
+ import joinURL from 'url-join';
11
+ import { useCreation, useRequest } from 'ahooks';
12
+ import MarkdownBody from '../markdown-body';
12
13
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
14
  const isFreeBlocklet = meta => {
14
15
  if (!meta.payment) {
@@ -56,11 +57,61 @@ function WizardDesc({
56
57
  const {
57
58
  data
58
59
  } = blockletMeta;
60
+
61
+ // FIXME: @zhanghan 暂且假定这里是有 registryUrl 的值的,后续需要更好的方式来判断一个 blocklet 来源于哪个 registryUrl
62
+ const {
63
+ registryUrl,
64
+ did
65
+ } = data;
59
66
  const name = getDisplayName({
60
67
  meta: data
61
68
  });
69
+ const readmeState = useRequest(() => {
70
+ if (registryUrl && did) {
71
+ return fetch(joinURL(registryUrl, '/api/blocklets', did, 'readme')).then(res => res.json());
72
+ }
73
+ return null;
74
+ }, {
75
+ refreshDeps: [registryUrl, did]
76
+ });
77
+ const markdownSource = useCreation(() => {
78
+ if (!readmeState.data) {
79
+ return '';
80
+ }
81
+ return readmeState.data[locale] || readmeState.data.en || readmeState.data[Object.keys(readmeState.data)[0]];
82
+ }, [readmeState]);
62
83
  const blockletDesc = data && data.htmlAst ? renderAst(data.htmlAst) : '';
63
84
  const isFree = isFreeBlocklet(data);
85
+ let authorInfo = get(data, 'owner.fullName');
86
+ if (authorInfo) {
87
+ const ownerDid = get(data, 'owner.did');
88
+ if (ownerDid) {
89
+ authorInfo = /*#__PURE__*/_jsxs(Box, {
90
+ sx: {
91
+ display: 'flex',
92
+ alignItems: 'center',
93
+ gap: 1
94
+ },
95
+ children: [authorInfo, /*#__PURE__*/_jsx(DID, {
96
+ sx: {
97
+ lineHeight: 'initial',
98
+ '&::before': {
99
+ content: '"("'
100
+ },
101
+ '&::after': {
102
+ content: '")"'
103
+ }
104
+ },
105
+ did: ownerDid,
106
+ compact: true,
107
+ size: 14,
108
+ locale: locale
109
+ })]
110
+ });
111
+ }
112
+ } else {
113
+ authorInfo = get(data, 'author.name');
114
+ }
64
115
  const infos = [{
65
116
  key: get(localeData[locale], 'appinfo.name'),
66
117
  value: getDisplayName({
@@ -71,7 +122,7 @@ function WizardDesc({
71
122
  value: data.version
72
123
  }, {
73
124
  key: get(localeData[locale], 'appinfo.author'),
74
- value: get(data, 'author.name')
125
+ value: authorInfo
75
126
  }, {
76
127
  type: 'description',
77
128
  key: get(localeData[locale], 'appinfo.description'),
@@ -190,12 +241,55 @@ function WizardDesc({
190
241
  })
191
242
  })
192
243
  })
193
- }), /*#__PURE__*/_jsx("div", {
244
+ }), markdownSource ? /*#__PURE__*/_jsxs("div", {
245
+ className: "app-overview",
246
+ children: [/*#__PURE__*/_jsx(Typography, {
247
+ variant: "h5",
248
+ gutterBottom: true,
249
+ children: get(localeData[locale], 'appinfo.overview')
250
+ }), /*#__PURE__*/_jsx(MarkdownBody, {
251
+ children: /*#__PURE__*/_jsx(PostContent, {
252
+ component: "div",
253
+ className: "content-wrapper post-content",
254
+ children: /*#__PURE__*/_jsx(MarkdownPreview, {
255
+ source: markdownSource
256
+ // 先保留后面两个参数,可用于精细判断
257
+ // eslint-disable-next-line no-unused-vars
258
+ ,
259
+ urlTransform: (url, key, node) => {
260
+ if (url.startsWith('/')) {
261
+ return joinURL(registryUrl, url);
262
+ }
263
+ return url;
264
+ }
265
+ })
266
+ })
267
+ })]
268
+ }) : blockletDesc ? /*#__PURE__*/_jsx("div", {
194
269
  className: "app-overview",
195
270
  children: blockletDesc
196
- })]
271
+ }) : null]
197
272
  });
198
273
  }
274
+ const PostContent = styled(Typography)`
275
+ width: 100%;
276
+ word-wrap: break-word;
277
+ word-break: break-word;
278
+ line-height: 1.5em;
279
+ min-height: 10vh;
280
+ margin-bottom: 40px !important;
281
+
282
+ .alert-content {
283
+ max-width: 100%;
284
+ p:last-of-type {
285
+ margin-bottom: 0;
286
+ }
287
+ }
288
+
289
+ iframe {
290
+ width: 100% !important;
291
+ }
292
+ `;
199
293
  const Container = styled.div`
200
294
  .info-table {
201
295
  a {
@@ -9,8 +9,8 @@ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  var _templateObject;
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
14
14
  function CompactLayout(_ref) {
15
15
  let {
16
16
  children,
package/lib/content.js CHANGED
@@ -8,8 +8,8 @@ var _styled = _interopRequireDefault(require("@emotion/styled"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _jsxRuntime = require("react/jsx-runtime");
10
10
  var _templateObject;
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
13
13
  function Content(_ref) {
14
14
  let {
15
15
  children
@@ -8,7 +8,7 @@ exports.useStepContext = useStepContext;
8
8
  var _react = require("react");
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
12
  const StepContext = /*#__PURE__*/(0, _react.createContext)();
13
13
  const {
14
14
  Provider
package/lib/header.js CHANGED
@@ -17,8 +17,8 @@ var _blockletDefaultLogo = _interopRequireDefault(require("./assets/blocklet-def
17
17
  var _locale = require("./locale");
18
18
  var _jsxRuntime = require("react/jsx-runtime");
19
19
  var _templateObject, _templateObject2, _templateObject3;
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
20
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
22
22
  function AppHeader(_ref) {
23
23
  let {
24
24
  blockletMeta,
package/lib/index.js CHANGED
@@ -24,15 +24,15 @@ var _nav = _interopRequireDefault(require("./nav"));
24
24
  var _jsxRuntime = require("react/jsx-runtime");
25
25
  const _excluded = ["blockletMeta", "loading", "children", "logoUrl", "locale", "header", "headerEndAddons", "pcWidth", "pcHeight", "navLogo", "useOfSkeleton", "stepTip", "navSubTitle", "contentMaxWidth", "theme"];
26
26
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
27
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
28
28
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
29
29
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
30
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
30
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
31
31
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
32
32
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
33
- function _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; }
34
- function _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; }
35
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
33
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
34
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }
35
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
36
36
  const HEADER_HEIGHT_MD = '72px';
37
37
  const MobileContent = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n box-sizing: border-box;\n display: flex;\n overflow: hidden;\n width: 100%;\n height: 100%;\n padding-top: ", ";\n"])), HEADER_HEIGHT_MD);
38
38
  const PcContent = _styled.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n min-width: 900px;\n max-width: ", ";\n max-height: 880px;\n border-radius: 8px;\n background-color: #fff;\n width: ", ";\n height: ", ";\n\n @media (max-height: 1200px) {\n margin-top: ", ";\n height: 100%;\n max-height: 100%;\n }\n"])), props => props.contentMaxWidth, props => props.width || '80%', props => props.height || '80%', HEADER_HEIGHT_MD);
@@ -13,15 +13,15 @@ var _PriorityHigh = _interopRequireDefault(require("@mui/icons-material/Priority
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  var _templateObject;
15
15
  const _excluded = ["variant", "title", "subTitle", "footer"];
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
18
18
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
19
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
21
21
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
22
22
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
23
- function _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; }
24
- function _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; }
23
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
24
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }
25
25
  function LaunchResultMessage(_ref) {
26
26
  let {
27
27
  variant,
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+ var _material = require("@mui/material");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ var _templateObject;
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
14
+ function MarkdownBody(_ref) {
15
+ let {
16
+ children
17
+ } = _ref;
18
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
19
+ children: children
20
+ });
21
+ }
22
+ const codeFont = 'source-code-pro, Menlo, Monaco, Consolas, Courier New, monospace !important';
23
+ const Root = (0, _styled.default)(_material.Box)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .highlight pre,\n pre {\n border-radius: 5px;\n }\n code {\n font-family: ", ";\n }\n pre code {\n font-size: 14px;\n font-family: ", ";\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-weight: 700 !important;\n font-size: 1.2rem !important;\n line-height: 1.5 !important;\n margin-bottom: 16px;\n margin-top: 24px;\n border-bottom: initial !important;\n }\n\n .CodeMirror pre {\n background: #f6f8fa !important;\n }\n\n .anchor {\n display: none;\n }\n"])), codeFont, codeFont);
24
+ MarkdownBody.propTypes = {
25
+ children: _propTypes.default.any.isRequired
26
+ };
27
+ MarkdownBody.defaultProps = {};
28
+ var _default = exports.default = MarkdownBody;
package/lib/nav.js CHANGED
@@ -12,8 +12,8 @@ var _step = require("./context/step");
12
12
  var _header = _interopRequireDefault(require("./header"));
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  var _templateObject, _templateObject2;
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
17
17
  function Nav(_ref) {
18
18
  let {
19
19
  blockletMeta,
@@ -10,15 +10,15 @@ var _ArrowBackIos = _interopRequireDefault(require("@mui/icons-material/ArrowBac
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  var _templateObject;
12
12
  const _excluded = ["title", "subTitle", "onClickBack"];
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
15
15
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16
16
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
18
18
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
19
19
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
20
- function _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; }
21
- function _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; }
20
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
21
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }
22
22
  function PageHeader(_ref) {
23
23
  let {
24
24
  title,
@@ -10,7 +10,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _react2 = require("@emotion/react");
11
11
  var _Theme = require("@arcblock/ux/lib/Theme");
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
14
  const defaultTheme = (0, _Theme.create)({});
15
15
  const ThemeContext = /*#__PURE__*/(0, _react.createContext)({});
16
16
  function ThemeProvider() {
@@ -14,8 +14,8 @@ var _submit = _interopRequireDefault(require("@blocklet/launcher-ux/lib/hot-key/
14
14
  var _jsxRuntime = require("react/jsx-runtime");
15
15
  var _templateObject;
16
16
  /* eslint-disable react/jsx-wrap-multilines */
17
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
17
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
19
19
  function ServerEula(_ref) {
20
20
  let {
21
21
  onContinue,
@@ -7,18 +7,19 @@ exports.default = void 0;
7
7
  var _react = require("react");
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _util = require("@blocklet/meta/lib/util");
10
+ var _DID = _interopRequireDefault(require("@arcblock/ux/lib/DID"));
10
11
  var _get = _interopRequireDefault(require("lodash/get"));
11
12
  var _styled = _interopRequireDefault(require("@emotion/styled"));
13
+ var _reactMarkdownPreview = _interopRequireDefault(require("@uiw/react-markdown-preview"));
14
+ var _material = require("@mui/material");
12
15
  var _rehypeReact = _interopRequireDefault(require("rehype-react"));
13
- var _Table = _interopRequireDefault(require("@mui/material/Table"));
14
- var _TableBody = _interopRequireDefault(require("@mui/material/TableBody"));
15
- var _TableCell = _interopRequireDefault(require("@mui/material/TableCell"));
16
- var _TableContainer = _interopRequireDefault(require("@mui/material/TableContainer"));
17
- var _TableRow = _interopRequireDefault(require("@mui/material/TableRow"));
16
+ var _urlJoin = _interopRequireDefault(require("url-join"));
17
+ var _ahooks = require("ahooks");
18
+ var _markdownBody = _interopRequireDefault(require("../markdown-body"));
18
19
  var _jsxRuntime = require("react/jsx-runtime");
19
- var _templateObject;
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
20
+ var _templateObject, _templateObject2;
21
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
22
23
  const isFreeBlocklet = meta => {
23
24
  if (!meta.payment) {
24
25
  return true;
@@ -66,11 +67,61 @@ function WizardDesc(_ref) {
66
67
  const {
67
68
  data
68
69
  } = blockletMeta;
70
+
71
+ // FIXME: @zhanghan 暂且假定这里是有 registryUrl 的值的,后续需要更好的方式来判断一个 blocklet 来源于哪个 registryUrl
72
+ const {
73
+ registryUrl,
74
+ did
75
+ } = data;
69
76
  const name = (0, _util.getDisplayName)({
70
77
  meta: data
71
78
  });
79
+ const readmeState = (0, _ahooks.useRequest)(() => {
80
+ if (registryUrl && did) {
81
+ return fetch((0, _urlJoin.default)(registryUrl, '/api/blocklets', did, 'readme')).then(res => res.json());
82
+ }
83
+ return null;
84
+ }, {
85
+ refreshDeps: [registryUrl, did]
86
+ });
87
+ const markdownSource = (0, _ahooks.useCreation)(() => {
88
+ if (!readmeState.data) {
89
+ return '';
90
+ }
91
+ return readmeState.data[locale] || readmeState.data.en || readmeState.data[Object.keys(readmeState.data)[0]];
92
+ }, [readmeState]);
72
93
  const blockletDesc = data && data.htmlAst ? renderAst(data.htmlAst) : '';
73
94
  const isFree = isFreeBlocklet(data);
95
+ let authorInfo = (0, _get.default)(data, 'owner.fullName');
96
+ if (authorInfo) {
97
+ const ownerDid = (0, _get.default)(data, 'owner.did');
98
+ if (ownerDid) {
99
+ authorInfo = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
100
+ sx: {
101
+ display: 'flex',
102
+ alignItems: 'center',
103
+ gap: 1
104
+ },
105
+ children: [authorInfo, /*#__PURE__*/(0, _jsxRuntime.jsx)(_DID.default, {
106
+ sx: {
107
+ lineHeight: 'initial',
108
+ '&::before': {
109
+ content: '"("'
110
+ },
111
+ '&::after': {
112
+ content: '")"'
113
+ }
114
+ },
115
+ did: ownerDid,
116
+ compact: true,
117
+ size: 14,
118
+ locale: locale
119
+ })]
120
+ });
121
+ }
122
+ } else {
123
+ authorInfo = (0, _get.default)(data, 'author.name');
124
+ }
74
125
  const infos = [{
75
126
  key: (0, _get.default)(localeData[locale], 'appinfo.name'),
76
127
  value: (0, _util.getDisplayName)({
@@ -81,7 +132,7 @@ function WizardDesc(_ref) {
81
132
  value: data.version
82
133
  }, {
83
134
  key: (0, _get.default)(localeData[locale], 'appinfo.author'),
84
- value: (0, _get.default)(data, 'author.name')
135
+ value: authorInfo
85
136
  }, {
86
137
  type: 'description',
87
138
  key: (0, _get.default)(localeData[locale], 'appinfo.description'),
@@ -173,13 +224,13 @@ function WizardDesc(_ref) {
173
224
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Container, {
174
225
  children: [handleDescEle || descEle, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
175
226
  className: "info-table",
176
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TableContainer.default, {
177
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Table.default, {
227
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.TableContainer, {
228
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Table, {
178
229
  size: "small",
179
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TableBody.default, {
230
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.TableBody, {
180
231
  children: infos.map(e => {
181
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_TableRow.default, {
182
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TableCell.default, {
232
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.TableRow, {
233
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.TableCell, {
183
234
  component: "th",
184
235
  scope: "row",
185
236
  style: {
@@ -192,7 +243,7 @@ function WizardDesc(_ref) {
192
243
  },
193
244
  children: e.key
194
245
  })
195
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TableCell.default, {
246
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.TableCell, {
196
247
  children: e.value
197
248
  })]
198
249
  }, e.key);
@@ -200,13 +251,38 @@ function WizardDesc(_ref) {
200
251
  })
201
252
  })
202
253
  })
203
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
254
+ }), markdownSource ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
255
+ className: "app-overview",
256
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
257
+ variant: "h5",
258
+ gutterBottom: true,
259
+ children: (0, _get.default)(localeData[locale], 'appinfo.overview')
260
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_markdownBody.default, {
261
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PostContent, {
262
+ component: "div",
263
+ className: "content-wrapper post-content",
264
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactMarkdownPreview.default, {
265
+ source: markdownSource
266
+ // 先保留后面两个参数,可用于精细判断
267
+ // eslint-disable-next-line no-unused-vars
268
+ ,
269
+ urlTransform: (url, key, node) => {
270
+ if (url.startsWith('/')) {
271
+ return (0, _urlJoin.default)(registryUrl, url);
272
+ }
273
+ return url;
274
+ }
275
+ })
276
+ })
277
+ })]
278
+ }) : blockletDesc ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
204
279
  className: "app-overview",
205
280
  children: blockletDesc
206
- })]
281
+ }) : null]
207
282
  });
208
283
  }
209
- const Container = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .info-table {\n a {\n word-break: break-all;\n }\n }\n .app-overview {\n font-size: 16px;\n margin: 16px 0 0 16px;\n h1 {\n margin: 8px 0;\n font-size: 20px;\n }\n h2 {\n margin: 8px 0;\n font-size: 18px;\n }\n ul {\n display: block;\n list-style-type: disc;\n padding-left: 2em;\n li {\n display: list-item;\n list-style: disc;\n }\n }\n blockquote {\n margin-left: 2em;\n }\n }\n"])));
284
+ const PostContent = (0, _styled.default)(_material.Typography)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 100%;\n word-wrap: break-word;\n word-break: break-word;\n line-height: 1.5em;\n min-height: 10vh;\n margin-bottom: 40px !important;\n\n .alert-content {\n max-width: 100%;\n p:last-of-type {\n margin-bottom: 0;\n }\n }\n\n iframe {\n width: 100% !important;\n }\n"])));
285
+ const Container = _styled.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n .info-table {\n a {\n word-break: break-all;\n }\n }\n .app-overview {\n font-size: 16px;\n margin: 16px 0 0 16px;\n h1 {\n margin: 8px 0;\n font-size: 20px;\n }\n h2 {\n margin: 8px 0;\n font-size: 18px;\n }\n ul {\n display: block;\n list-style-type: disc;\n padding-left: 2em;\n li {\n display: list-item;\n list-style: disc;\n }\n }\n blockquote {\n margin-left: 2em;\n }\n }\n"])));
210
286
  WizardDesc.propTypes = {
211
287
  blockletMeta: _propTypes.default.object.isRequired,
212
288
  locale: _propTypes.default.string.isRequired,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blocklet/launcher-layout",
3
- "version": "2.3.18",
3
+ "version": "2.3.20",
4
4
  "description": "Common ux components of launcher",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -39,19 +39,21 @@
39
39
  "url": "https://github.com/blocklet/launcher/issues"
40
40
  },
41
41
  "peerDependencies": {
42
- "react": ">=18.1.0"
43
- },
44
- "dependencies": {
45
42
  "@arcblock/did-connect": "^2.9.76",
46
- "@arcblock/icons": "^2.9.76",
47
43
  "@arcblock/ux": "^2.9.76",
48
- "@blocklet/launcher-util": "2.3.18",
49
- "@blocklet/launcher-ux": "2.3.18",
44
+ "@mui/icons-material": "^5.15.15",
45
+ "@mui/material": "^5.15.15",
46
+ "react": "^18.2.0"
47
+ },
48
+ "dependencies": {
49
+ "@arcblock/icons": "^2.9.88",
50
+ "@blocklet/launcher-util": "2.3.20",
51
+ "@blocklet/launcher-ux": "2.3.20",
50
52
  "@blocklet/meta": "^1.16.26",
51
53
  "@emotion/react": "^11.11.4",
52
54
  "@emotion/styled": "^11.11.5",
53
- "@mui/icons-material": "^5.15.15",
54
- "@mui/material": "^5.15.15",
55
+ "@uiw/react-markdown-preview": "^5.1.1",
56
+ "ahooks": "^3.8.0",
55
57
  "is-empty": "^1.2.0",
56
58
  "lodash": "^4.17.21",
57
59
  "prop-types": "^15.8.1",
@@ -59,13 +61,13 @@
59
61
  "url-join": "^4.0.1"
60
62
  },
61
63
  "devDependencies": {
62
- "@babel/cli": "^7.24.1",
63
- "@babel/core": "^7.24.4",
64
- "@babel/preset-env": "^7.24.4",
65
- "@babel/preset-react": "^7.24.1",
64
+ "@babel/cli": "^7.24.6",
65
+ "@babel/core": "^7.24.6",
66
+ "@babel/preset-env": "^7.24.6",
67
+ "@babel/preset-react": "^7.24.6",
66
68
  "@storybook/react": "^6.5.16",
67
69
  "babel-plugin-inline-react-svg": "^2.0.2",
68
- "glob": "^10.3.12"
70
+ "glob": "^10.4.1"
69
71
  },
70
72
  "exports": {
71
73
  ".": {
@@ -77,5 +79,5 @@
77
79
  "require": "./lib/"
78
80
  }
79
81
  },
80
- "gitHead": "608cc097c964e4e993265f6376b0134457554117"
82
+ "gitHead": "f066eec3d7942533b3dbc88419840e3ce06a05d1"
81
83
  }