@dckj-npm/lowcode-plugin-code-generator 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +52 -0
  3. package/es/components/CodeGenActionBtn/CodeGenActionBtn.d.ts +8 -0
  4. package/es/components/CodeGenActionBtn/CodeGenActionBtn.js +196 -0
  5. package/es/components/CodeGenActionBtn/CodeGenActionBtn.scss +13 -0
  6. package/es/components/CodeGenActionBtn/index.d.ts +1 -0
  7. package/es/components/CodeGenActionBtn/index.js +1 -0
  8. package/es/components/CodeGenPreview/CodeGenPreview.d.ts +8 -0
  9. package/es/components/CodeGenPreview/CodeGenPreview.js +40 -0
  10. package/es/components/CodeGenPreview/CodeGenPreview.scss +16 -0
  11. package/es/components/CodeGenPreview/fixPreviewCode.d.ts +2 -0
  12. package/es/components/CodeGenPreview/fixPreviewCode.js +101 -0
  13. package/es/components/CodeGenPreview/index.d.ts +1 -0
  14. package/es/components/CodeGenPreview/index.js +1 -0
  15. package/es/components/CodeGenPreview/useIsInIntranet.d.ts +4 -0
  16. package/es/components/CodeGenPreview/useIsInIntranet.js +66 -0
  17. package/es/components/CodeGenResult/CodeGenResult.d.ts +9 -0
  18. package/es/components/CodeGenResult/CodeGenResult.js +162 -0
  19. package/es/components/CodeGenResult/CodeGenResult.scss +7 -0
  20. package/es/components/CodeGenResult/index.d.ts +1 -0
  21. package/es/components/CodeGenResult/index.js +1 -0
  22. package/es/components/CodeSandboxPreview/CodeSandboxPreview.d.ts +4 -0
  23. package/es/components/CodeSandboxPreview/CodeSandboxPreview.js +186 -0
  24. package/es/components/CodeSandboxPreview/CodeSandboxPreview.scss +18 -0
  25. package/es/components/CodeSandboxPreview/index.d.ts +1 -0
  26. package/es/components/CodeSandboxPreview/index.js +1 -0
  27. package/es/components/FileTypeIcon/FileTypeIcon.d.ts +6 -0
  28. package/es/components/FileTypeIcon/FileTypeIcon.js +12 -0
  29. package/es/components/FileTypeIcon/FileTypeIcon.scss +36 -0
  30. package/es/components/FileTypeIcon/index.d.ts +1 -0
  31. package/es/components/FileTypeIcon/index.js +1 -0
  32. package/es/components/GravityCode/GravityCode.d.ts +9 -0
  33. package/es/components/GravityCode/GravityCode.js +1 -0
  34. package/es/components/GravityCode/index.d.ts +1 -0
  35. package/es/components/GravityCode/index.js +1 -0
  36. package/es/components/GravityPreview/ForceUpdate.d.ts +6 -0
  37. package/es/components/GravityPreview/ForceUpdate.js +12 -0
  38. package/es/components/GravityPreview/GravityPreview.d.ts +7 -0
  39. package/es/components/GravityPreview/GravityPreview.js +37 -0
  40. package/es/components/GravityPreview/GravitySdk.d.ts +10 -0
  41. package/es/components/GravityPreview/GravitySdk.js +183 -0
  42. package/es/components/GravityPreview/index.d.ts +1 -0
  43. package/es/components/GravityPreview/index.js +1 -0
  44. package/es/components/SourcesView/SourcesView.d.ts +9 -0
  45. package/es/components/SourcesView/SourcesView.js +197 -0
  46. package/es/components/SourcesView/SourcesView.scss +24 -0
  47. package/es/components/SourcesView/index.d.ts +1 -0
  48. package/es/components/SourcesView/index.js +1 -0
  49. package/es/demo/index.d.ts +1 -0
  50. package/es/demo/index.js +223 -0
  51. package/es/demo/index.scss +56 -0
  52. package/es/index.d.ts +30 -0
  53. package/es/index.js +67 -0
  54. package/es/style.js +2 -0
  55. package/es/types/SyncCodeGenResult.d.ts +7 -0
  56. package/es/types/SyncCodeGenResult.js +1 -0
  57. package/es/types/index.d.ts +1 -0
  58. package/es/types/index.js +1 -0
  59. package/es/typings.d.js +0 -0
  60. package/lib/components/CodeGenActionBtn/CodeGenActionBtn.d.ts +8 -0
  61. package/lib/components/CodeGenActionBtn/CodeGenActionBtn.js +204 -0
  62. package/lib/components/CodeGenActionBtn/CodeGenActionBtn.scss +13 -0
  63. package/lib/components/CodeGenActionBtn/index.d.ts +1 -0
  64. package/lib/components/CodeGenActionBtn/index.js +9 -0
  65. package/lib/components/CodeGenPreview/CodeGenPreview.d.ts +8 -0
  66. package/lib/components/CodeGenPreview/CodeGenPreview.js +45 -0
  67. package/lib/components/CodeGenPreview/CodeGenPreview.scss +16 -0
  68. package/lib/components/CodeGenPreview/fixPreviewCode.d.ts +2 -0
  69. package/lib/components/CodeGenPreview/fixPreviewCode.js +106 -0
  70. package/lib/components/CodeGenPreview/index.d.ts +1 -0
  71. package/lib/components/CodeGenPreview/index.js +9 -0
  72. package/lib/components/CodeGenPreview/useIsInIntranet.d.ts +4 -0
  73. package/lib/components/CodeGenPreview/useIsInIntranet.js +72 -0
  74. package/lib/components/CodeGenResult/CodeGenResult.d.ts +9 -0
  75. package/lib/components/CodeGenResult/CodeGenResult.js +169 -0
  76. package/lib/components/CodeGenResult/CodeGenResult.scss +7 -0
  77. package/lib/components/CodeGenResult/index.d.ts +1 -0
  78. package/lib/components/CodeGenResult/index.js +9 -0
  79. package/lib/components/CodeSandboxPreview/CodeSandboxPreview.d.ts +4 -0
  80. package/lib/components/CodeSandboxPreview/CodeSandboxPreview.js +193 -0
  81. package/lib/components/CodeSandboxPreview/CodeSandboxPreview.scss +18 -0
  82. package/lib/components/CodeSandboxPreview/index.d.ts +1 -0
  83. package/lib/components/CodeSandboxPreview/index.js +9 -0
  84. package/lib/components/FileTypeIcon/FileTypeIcon.d.ts +6 -0
  85. package/lib/components/FileTypeIcon/FileTypeIcon.js +17 -0
  86. package/lib/components/FileTypeIcon/FileTypeIcon.scss +36 -0
  87. package/lib/components/FileTypeIcon/index.d.ts +1 -0
  88. package/lib/components/FileTypeIcon/index.js +9 -0
  89. package/lib/components/GravityCode/GravityCode.d.ts +9 -0
  90. package/lib/components/GravityCode/GravityCode.js +3 -0
  91. package/lib/components/GravityCode/index.d.ts +1 -0
  92. package/lib/components/GravityCode/index.js +9 -0
  93. package/lib/components/GravityPreview/ForceUpdate.d.ts +6 -0
  94. package/lib/components/GravityPreview/ForceUpdate.js +17 -0
  95. package/lib/components/GravityPreview/GravityPreview.d.ts +7 -0
  96. package/lib/components/GravityPreview/GravityPreview.js +44 -0
  97. package/lib/components/GravityPreview/GravitySdk.d.ts +10 -0
  98. package/lib/components/GravityPreview/GravitySdk.js +196 -0
  99. package/lib/components/GravityPreview/index.d.ts +1 -0
  100. package/lib/components/GravityPreview/index.js +9 -0
  101. package/lib/components/SourcesView/SourcesView.d.ts +9 -0
  102. package/lib/components/SourcesView/SourcesView.js +204 -0
  103. package/lib/components/SourcesView/SourcesView.scss +24 -0
  104. package/lib/components/SourcesView/index.d.ts +1 -0
  105. package/lib/components/SourcesView/index.js +9 -0
  106. package/lib/demo/index.d.ts +1 -0
  107. package/lib/demo/index.js +228 -0
  108. package/lib/demo/index.scss +56 -0
  109. package/lib/index.d.ts +30 -0
  110. package/lib/index.js +74 -0
  111. package/lib/style.js +2 -0
  112. package/lib/types/SyncCodeGenResult.d.ts +7 -0
  113. package/lib/types/SyncCodeGenResult.js +3 -0
  114. package/lib/types/index.d.ts +1 -0
  115. package/lib/types/index.js +9 -0
  116. package/lib/typings.d.js +1 -0
  117. package/package.json +94 -0
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.useIsInIntranet = useIsInIntranet;
6
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
11
+ // 预先检测下是否在内网环境中
12
+ var isInIntranetPromise = detectIsInIntranet();
13
+
14
+ /**
15
+ * 判断是否在内网环境中中
16
+ */
17
+ function useIsInIntranet() {
18
+ var _React$useState = _react["default"].useState({
19
+ isInIntranet: false
20
+ }),
21
+ state = _React$useState[0],
22
+ setState = _React$useState[1];
23
+ (0, _react.useEffect)(function () {
24
+ // 如果预加载失败了,可以尝试重试下
25
+ isInIntranetPromise["catch"](function () {
26
+ isInIntranetPromise = detectIsInIntranet();
27
+ return isInIntranetPromise;
28
+ }).then(function (isInIntranet) {
29
+ setState({
30
+ isInIntranet: isInIntranet
31
+ });
32
+ });
33
+ }, []);
34
+ return state.isInIntranet;
35
+ }
36
+
37
+ /**
38
+ * 判断是否在内网环境中中
39
+ */
40
+ function detectIsInIntranet() {
41
+ return _detectIsInIntranet.apply(this, arguments);
42
+ }
43
+ function _detectIsInIntranet() {
44
+ _detectIsInIntranet = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
45
+ var res;
46
+ return _regenerator["default"].wrap(function _callee$(_context) {
47
+ while (1) switch (_context.prev = _context.next) {
48
+ case 0:
49
+ _context.prev = 0;
50
+ _context.next = 3;
51
+ return fetch('https://dev.g.alicdn.com/ali-lowcode/ali-lowcode-materials/1.1.0/schema.json');
52
+ case 3:
53
+ res = _context.sent;
54
+ if (!res.ok) {
55
+ _context.next = 6;
56
+ break;
57
+ }
58
+ return _context.abrupt("return", true);
59
+ case 6:
60
+ return _context.abrupt("return", false);
61
+ case 9:
62
+ _context.prev = 9;
63
+ _context.t0 = _context["catch"](0);
64
+ return _context.abrupt("return", false);
65
+ case 12:
66
+ case "end":
67
+ return _context.stop();
68
+ }
69
+ }, _callee, null, [[0, 9]]);
70
+ }));
71
+ return _detectIsInIntranet.apply(this, arguments);
72
+ }
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import './CodeGenResult.scss';
3
+ import { Result } from '@alilc/lowcode-code-generator/standalone-loader';
4
+ import { ProjectSchema } from '@alilc/lowcode-types';
5
+ export declare function CodeGenResult({ result, schema }: {
6
+ result: Result | null | undefined;
7
+ schema: ProjectSchema | null;
8
+ originalSchema: ProjectSchema | null;
9
+ }): JSX.Element;
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.CodeGenResult = CodeGenResult;
6
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
7
+ var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
9
+ require("./CodeGenResult.scss");
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _fileSaver = _interopRequireDefault(require("file-saver"));
12
+ var _jszip = _interopRequireDefault(require("jszip"));
13
+ var _next = require("@alifd/next");
14
+ var _CodeGenPreview = require("../CodeGenPreview");
15
+ var _SourcesView = require("../SourcesView");
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
18
+ function CodeGenResult(_ref) {
19
+ var result = _ref.result,
20
+ schema = _ref.schema;
21
+ var _useState = (0, _react.useState)({
22
+ expandedKeys: ['sources', 'preview']
23
+ }),
24
+ paneState = _useState[0],
25
+ setPaneState = _useState[1];
26
+ var _useState2 = (0, _react.useState)(null),
27
+ gravityCode = _useState2[0],
28
+ setGravityCode = _useState2[1];
29
+ var _useState3 = (0, _react.useState)(0),
30
+ refresh = _useState3[0],
31
+ setRefresh = _useState3[1];
32
+ (0, _react.useEffect)(function () {
33
+ setGravityCode(convertCodeGenResult(result, schema));
34
+ }, [result]);
35
+ if (!result) {
36
+ return null;
37
+ }
38
+ var sourcesViewHeight = paneState.expandedKeys.includes('preview') ? '40vh' : '80vh';
39
+ var gravityDemoHeight = paneState.expandedKeys.includes('sources') ? '40vh' : '80vh';
40
+ var handleDownloadSources = /*#__PURE__*/function () {
41
+ var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(e) {
42
+ var zip;
43
+ return _regenerator["default"].wrap(function _callee$(_context) {
44
+ while (1) switch (_context.prev = _context.next) {
45
+ case 0:
46
+ _context.prev = 0;
47
+ e.preventDefault();
48
+ e.stopPropagation();
49
+ zip = new _jszip["default"]();
50
+ Object.values((gravityCode === null || gravityCode === void 0 ? void 0 : gravityCode.modules) || {}).forEach(function (file) {
51
+ zip.file(file.fpath.replace(/^\/+/, ''), file.code);
52
+ });
53
+ _context.next = 7;
54
+ return zip.generateAsync({
55
+ type: 'blob'
56
+ }).then(function (content) {
57
+ _fileSaver["default"].saveAs(content, 'ali-lowcode-generated-sources.zip');
58
+ });
59
+ case 7:
60
+ _context.next = 13;
61
+ break;
62
+ case 9:
63
+ _context.prev = 9;
64
+ _context.t0 = _context["catch"](0);
65
+ console.log('failed to download sources: ', _context.t0);
66
+ _next.Message.error('下载失败!');
67
+ case 13:
68
+ case "end":
69
+ return _context.stop();
70
+ }
71
+ }, _callee, null, [[0, 9]]);
72
+ }));
73
+ return function handleDownloadSources(_x) {
74
+ return _ref2.apply(this, arguments);
75
+ };
76
+ }();
77
+ return /*#__PURE__*/_react["default"].createElement("div", {
78
+ className: "code-gen-result"
79
+ }, /*#__PURE__*/_react["default"].createElement(_next.Collapse, {
80
+ expandedKeys: paneState.expandedKeys,
81
+ onExpand: function onExpand(expandedKeys) {
82
+ setPaneState({
83
+ expandedKeys: expandedKeys
84
+ });
85
+ }
86
+ }, /*#__PURE__*/_react["default"].createElement(_next.Collapse.Panel, {
87
+ title: /*#__PURE__*/_react["default"].createElement("span", null, "\u51FA\u7801\u751F\u6210\u7684\u6E90\u4EE3\u7801", ' ', /*#__PURE__*/_react["default"].createElement("a", {
88
+ href: "javascript:void(0)",
89
+ onClick: handleDownloadSources
90
+ }, "\u5BFC\u51FA/\u4E0B\u8F7D zip \u5305")),
91
+ key: "sources"
92
+ }, gravityCode != null && /*#__PURE__*/_react["default"].createElement(_SourcesView.SourcesView, {
93
+ height: sourcesViewHeight,
94
+ code: gravityCode,
95
+ onCodeChange: setGravityCode
96
+ })), /*#__PURE__*/_react["default"].createElement(_next.Collapse.Panel, {
97
+ title: /*#__PURE__*/_react["default"].createElement("span", null, "\u5728\u7EBF\u9884\u89C8", ' ', /*#__PURE__*/_react["default"].createElement("a", {
98
+ href: "#refresh",
99
+ onClick: function onClick(e) {
100
+ e.preventDefault();
101
+ e.stopPropagation();
102
+ setRefresh(Date.now());
103
+ }
104
+ }, "\u5237\u65B0")),
105
+ key: "preview"
106
+ }, /*#__PURE__*/_react["default"].createElement("div", {
107
+ className: "code-gen-result-gravity-demo",
108
+ style: {
109
+ height: gravityDemoHeight
110
+ }
111
+ }, /*#__PURE__*/_react["default"].createElement(_CodeGenPreview.CodeGenPreview, {
112
+ code: gravityCode,
113
+ height: gravityDemoHeight,
114
+ refresh: refresh
115
+ })))));
116
+ }
117
+ function convertCodeGenResult(result, schema) {
118
+ var schemaFiles = {
119
+ '/.project-schema.json': {
120
+ fpath: '/.project-schema.json',
121
+ code: JSON.stringify(schema, null, 2) + "\n"
122
+ }
123
+ };
124
+ if (!result || !Array.isArray(result) || !result.length) {
125
+ return {
126
+ type: 'demo',
127
+ modules: schemaFiles
128
+ };
129
+ }
130
+ var code = {
131
+ type: 'demo',
132
+ modules: result.reduce(function (acc, file) {
133
+ var _extends2;
134
+ return (0, _extends3["default"])({}, acc, (_extends2 = {}, _extends2["/" + file.pathName] = {
135
+ fpath: "/" + file.pathName,
136
+ code: file.content,
137
+ entry: undefined,
138
+ packagejson: ['package.json'].includes(file.pathName) ? 1 : undefined
139
+ }, _extends2));
140
+ }, {})
141
+ };
142
+ var foundEntry = false;
143
+
144
+ // 设置入口文件
145
+ ['index.js', 'index.ts', 'index.tsx', 'app.js', 'app.ts', 'app.tsx'].forEach(function (fileName) {
146
+ if (!foundEntry) {
147
+ var filePath = "/src/" + fileName;
148
+ if (code.modules[filePath]) {
149
+ foundEntry = true;
150
+ if (fileName === 'index.js') {
151
+ code.modules[filePath].entry = 1;
152
+ } else {
153
+ code.modules['/src/index.js'] = {
154
+ fpath: '/src/index.js',
155
+ entry: 1,
156
+ code: "import \"./" + fileName.replace(/\.\w+$/, '') + "\""
157
+ };
158
+ }
159
+ }
160
+ }
161
+ });
162
+ if (!foundEntry) {
163
+ console.warn('Failed to find entry file for demo.');
164
+ }
165
+
166
+ // 补充 schema 文件
167
+ Object.assign(code.modules, schemaFiles);
168
+ return code;
169
+ }
@@ -0,0 +1,7 @@
1
+ .code-gen-result {
2
+ .code-gen-result-gravity-demo {
3
+ iframe {
4
+ height: 100%;
5
+ }
6
+ }
7
+ }
@@ -0,0 +1 @@
1
+ export * from './CodeGenResult';
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _CodeGenResult = require("./CodeGenResult");
5
+ Object.keys(_CodeGenResult).forEach(function (key) {
6
+ if (key === "default" || key === "__esModule") return;
7
+ if (key in exports && exports[key] === _CodeGenResult[key]) return;
8
+ exports[key] = _CodeGenResult[key];
9
+ });
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import type { CodeGenPreviewProps } from '../CodeGenPreview';
3
+ import './CodeSandboxPreview.scss';
4
+ export declare function CodeSandboxPreview({ code, height }: CodeGenPreviewProps): JSX.Element;
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.CodeSandboxPreview = CodeSandboxPreview;
6
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _next = require("@alifd/next");
11
+ var _fixPreviewCode = require("../CodeGenPreview/fixPreviewCode");
12
+ require("./CodeSandboxPreview.scss");
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
15
+ // 使用 CodeSandbox 来进行预览
16
+ // @see https://codesandbox.io/docs/api#get-request
17
+ function CodeSandboxPreview(_ref) {
18
+ var code = _ref.code,
19
+ height = _ref.height;
20
+ var parameters = (0, _react.useMemo)(function () {
21
+ var files = {};
22
+ if (code && code.modules) {
23
+ var fixedCode = (0, _fixPreviewCode.fixPreviewCode)(code);
24
+ Object.values(fixedCode.modules).forEach(function (file) {
25
+ var _file$fpath;
26
+ files[file === null || file === void 0 ? void 0 : (_file$fpath = file.fpath) === null || _file$fpath === void 0 ? void 0 : _file$fpath.slice(1)] = {
27
+ isBinary: false,
28
+ content: file.code
29
+ };
30
+ });
31
+
32
+ // 入口文件需要顺便引入下样式
33
+ files['src/index.js'] = {
34
+ isBinary: false,
35
+ content: "\n// \u76EE\u524D\u9700\u8981\u5355\u72EC\u5F15\u5165\u4E0B\u6837\u5F0F\u6587\u4EF6\nimport \"@alifd/next/dist/next.css\";\nimport \"@alifd/pro-layout/dist/AlifdProLayout.css\";\n\n// \u5F15\u5165\u5165\u53E3\u6587\u4EF6\nimport './app';\n"
36
+ };
37
+ }
38
+ return {
39
+ files: files,
40
+ template: 'create-react-app'
41
+ };
42
+ }, [code]);
43
+ var _useState = (0, _react.useState)({
44
+ parameters: parameters,
45
+ sandboxId: '',
46
+ isCreating: false,
47
+ hasError: false,
48
+ error: null
49
+ }),
50
+ state = _useState[0],
51
+ setState = _useState[1];
52
+ (0, _react.useEffect)(function () {
53
+ if (state.parameters !== parameters || state.sandboxId === 'retry' || !state.sandboxId) {
54
+ var hasCanceled = false;
55
+ setState(function (prev) {
56
+ return (0, _extends2["default"])({}, prev, {
57
+ hasError: false,
58
+ code: code,
59
+ parameters: parameters,
60
+ isCreating: true
61
+ });
62
+ });
63
+ (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
64
+ var sandboxId;
65
+ return _regenerator["default"].wrap(function _callee$(_context) {
66
+ while (1) switch (_context.prev = _context.next) {
67
+ case 0:
68
+ _context.prev = 0;
69
+ _context.next = 3;
70
+ return createCodeSandbox(parameters);
71
+ case 3:
72
+ sandboxId = _context.sent;
73
+ if (!hasCanceled) {
74
+ setState(function (prev) {
75
+ return (0, _extends2["default"])({}, prev, {
76
+ hasError: false,
77
+ isCreating: false,
78
+ sandboxId: sandboxId
79
+ });
80
+ });
81
+ }
82
+ _context.next = 10;
83
+ break;
84
+ case 7:
85
+ _context.prev = 7;
86
+ _context.t0 = _context["catch"](0);
87
+ if (!hasCanceled) {
88
+ setState(function (prev) {
89
+ return (0, _extends2["default"])({}, prev, {
90
+ hasError: true,
91
+ error: _context.t0,
92
+ isCreating: false
93
+ });
94
+ });
95
+ }
96
+ case 10:
97
+ case "end":
98
+ return _context.stop();
99
+ }
100
+ }, _callee, null, [[0, 7]]);
101
+ }))();
102
+ return function () {
103
+ hasCanceled = true;
104
+ };
105
+ }
106
+ return function () {};
107
+ }, [parameters, state.sandboxId, state.parameters]);
108
+ var handleRetry = function handleRetry() {
109
+ setState(function (prev) {
110
+ return (0, _extends2["default"])({}, prev, {
111
+ hasError: false,
112
+ sandboxId: 'retry'
113
+ });
114
+ });
115
+ };
116
+ return /*#__PURE__*/_react["default"].createElement("div", {
117
+ className: "code-gen-plugin-code-sandbox-preview",
118
+ style: {
119
+ height: height
120
+ },
121
+ "data-code-sandbox-id": state.sandboxId
122
+ }, function () {
123
+ if (state.hasError) {
124
+ return /*#__PURE__*/_react["default"].createElement(_next.Message, {
125
+ title: "\u751F\u6210 CodeSandbox \u9884\u89C8\u5E94\u7528\u5931\u8D25"
126
+ }, /*#__PURE__*/_react["default"].createElement("p", null, "\u8BE6\u7EC6\u9519\u8BEF\uFF1A", "" + (state.error || '网络开小差了')), /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement(_next.Button, {
127
+ onClick: handleRetry
128
+ }, "\u91CD\u65B0\u5C1D\u8BD5\u4E0B")));
129
+ }
130
+ return state.sandboxId ? /*#__PURE__*/_react["default"].createElement("iframe", {
131
+ src: "https://codesandbox.io/embed/" + state.sandboxId + "?autoresize=1&fontsize=14&hidenavigation=1&theme=dark&view=preview",
132
+ title: "CodeSandbox Preview",
133
+ allow: "accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking",
134
+ sandbox: "allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
135
+ }) : /*#__PURE__*/_react["default"].createElement(_next.Loading, {
136
+ tip: "\u6B63\u5728\u751F\u6210 CodeSandbox \u9884\u89C8\u5E94\u7528..."
137
+ });
138
+ }());
139
+ }
140
+ function createCodeSandbox(_x) {
141
+ return _createCodeSandbox.apply(this, arguments);
142
+ }
143
+ function _createCodeSandbox() {
144
+ _createCodeSandbox = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(parameters) {
145
+ var res, json, _ref3, sandbox_id;
146
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
147
+ while (1) switch (_context2.prev = _context2.next) {
148
+ case 0:
149
+ if (Object.entries((parameters === null || parameters === void 0 ? void 0 : parameters.files) || {}).length) {
150
+ _context2.next = 2;
151
+ break;
152
+ }
153
+ return _context2.abrupt("return", '');
154
+ case 2:
155
+ _context2.next = 4;
156
+ return fetch('https://codesandbox.io/api/v1/sandboxes/define?json=1', {
157
+ method: 'POST',
158
+ headers: {
159
+ 'Content-Type': 'application/json',
160
+ Accept: 'application/json'
161
+ },
162
+ body: JSON.stringify(parameters)
163
+ });
164
+ case 4:
165
+ res = _context2.sent;
166
+ if (res.ok) {
167
+ _context2.next = 7;
168
+ break;
169
+ }
170
+ throw new Error("\u521B\u5EFA CodeSandbox \u5931\u8D25\uFF0C\u9519\u8BEF\u7801\uFF1A" + res.status + " " + res.statusText);
171
+ case 7:
172
+ _context2.next = 9;
173
+ return res.json()["catch"](function (err) {
174
+ throw new Error("\u521B\u5EFA CodeSandbox \u5931\u8D25\uFF0C\u670D\u52A1\u5F02\u5E38(" + ((err === null || err === void 0 ? void 0 : err.message) || err || '未知异常') + ")");
175
+ });
176
+ case 9:
177
+ json = _context2.sent;
178
+ _ref3 = json || {}, sandbox_id = _ref3.sandbox_id;
179
+ if (!(!sandbox_id || typeof sandbox_id !== 'string')) {
180
+ _context2.next = 13;
181
+ break;
182
+ }
183
+ throw new Error("\u521B\u5EFA CodeSandbox \u5931\u8D25\uFF0C\u670D\u52A1\u54CD\u5E94\u5F02\u5E38");
184
+ case 13:
185
+ return _context2.abrupt("return", sandbox_id);
186
+ case 14:
187
+ case "end":
188
+ return _context2.stop();
189
+ }
190
+ }, _callee2);
191
+ }));
192
+ return _createCodeSandbox.apply(this, arguments);
193
+ }
@@ -0,0 +1,18 @@
1
+ .code-gen-plugin-code-sandbox-preview {
2
+ display: flex;
3
+ flex-direction: row;
4
+ align-items: center;
5
+ align-content: center;
6
+ justify-content: center;
7
+ justify-items: center;
8
+ height: 100%;
9
+
10
+ iframe {
11
+ width: 100%;
12
+ height: 100%;
13
+ min-height: 300px;
14
+ border: 0;
15
+ border-radius: 0;
16
+ overflow: hidden;
17
+ }
18
+ }
@@ -0,0 +1 @@
1
+ export * from './CodeSandboxPreview';
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _CodeSandboxPreview = require("./CodeSandboxPreview");
5
+ Object.keys(_CodeSandboxPreview).forEach(function (key) {
6
+ if (key === "default" || key === "__esModule") return;
7
+ if (key in exports && exports[key] === _CodeSandboxPreview[key]) return;
8
+ exports[key] = _CodeSandboxPreview[key];
9
+ });
@@ -0,0 +1,6 @@
1
+ import './FileTypeIcon.scss';
2
+ import React from 'react';
3
+ export declare type FileTypeIconProps = React.HtmlHTMLAttributes<HTMLSpanElement> & {
4
+ type: string;
5
+ };
6
+ export declare function FileTypeIcon({ type, ...props }: FileTypeIconProps): JSX.Element;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.FileTypeIcon = FileTypeIcon;
6
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
8
+ require("./FileTypeIcon.scss");
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _excluded = ["type"];
11
+ function FileTypeIcon(_ref) {
12
+ var type = _ref.type,
13
+ props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
14
+ return /*#__PURE__*/_react["default"].createElement("i", (0, _extends2["default"])({}, props, {
15
+ className: "file-types-iconfont file-types-icon-" + type + " " + (props.className || '')
16
+ }));
17
+ }
@@ -0,0 +1,36 @@
1
+ // source: https://at.alicdn.com/t/font_2997782_rtal7ux80t.css
2
+
3
+ @font-face {
4
+ font-family: "file-types-iconfont"; /* Project id 2997782 */
5
+ src: url('//at.alicdn.com/t/font_2997782_rtal7ux80t.woff2?t=1638951976966') format('woff2'),
6
+ url('//at.alicdn.com/t/font_2997782_rtal7ux80t.woff?t=1638951976966') format('woff'),
7
+ url('//at.alicdn.com/t/font_2997782_rtal7ux80t.ttf?t=1638951976966') format('truetype');
8
+ }
9
+
10
+ .file-types-iconfont {
11
+ font-family: "file-types-iconfont" !important;
12
+ font-size: 16px;
13
+ font-style: normal;
14
+ -webkit-font-smoothing: antialiased;
15
+ -moz-osx-font-smoothing: grayscale;
16
+ }
17
+
18
+ .file-types-icon-folder:before {
19
+ content: "\e6e9";
20
+ }
21
+
22
+ .file-types-icon-text:before {
23
+ content: "\e6a7";
24
+ }
25
+
26
+ .file-types-icon-jsx:before {
27
+ content: "\e63b";
28
+ }
29
+
30
+ .file-types-icon-js:before {
31
+ content: "\e618";
32
+ }
33
+
34
+ .file-types-icon-json:before {
35
+ content: "\e642";
36
+ }
@@ -0,0 +1 @@
1
+ export * from './FileTypeIcon';
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _FileTypeIcon = require("./FileTypeIcon");
5
+ Object.keys(_FileTypeIcon).forEach(function (key) {
6
+ if (key === "default" || key === "__esModule") return;
7
+ if (key in exports && exports[key] === _FileTypeIcon[key]) return;
8
+ exports[key] = _FileTypeIcon[key];
9
+ });
@@ -0,0 +1,9 @@
1
+ export declare type GravityCode = {
2
+ type: string;
3
+ modules: Record<string, {
4
+ entry?: 1;
5
+ packagejson?: 1;
6
+ code: string;
7
+ fpath: string;
8
+ }>;
9
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
@@ -0,0 +1 @@
1
+ export * from './GravityCode';
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _GravityCode = require("./GravityCode");
5
+ Object.keys(_GravityCode).forEach(function (key) {
6
+ if (key === "default" || key === "__esModule") return;
7
+ if (key in exports && exports[key] === _GravityCode[key]) return;
8
+ exports[key] = _GravityCode[key];
9
+ });
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export interface ForceUpdateProps {
3
+ watchKey: string | number;
4
+ children?: React.ReactNode;
5
+ }
6
+ export declare function ForceUpdate({ watchKey, children }: ForceUpdateProps): JSX.Element;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.ForceUpdate = ForceUpdate;
6
+ var _react = _interopRequireDefault(require("react"));
7
+ function ForceUpdate(_ref) {
8
+ var watchKey = _ref.watchKey,
9
+ children = _ref.children;
10
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, [/*#__PURE__*/_react["default"].createElement(ForceUpdateContent, {
11
+ key: watchKey
12
+ }, children)]);
13
+ }
14
+ function ForceUpdateContent(_ref2) {
15
+ var children = _ref2.children;
16
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, children);
17
+ }
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { GravityCode } from '../GravityCode/GravityCode';
3
+ export declare function GravityPreview({ code, height, refresh }: {
4
+ code: GravityCode | null;
5
+ height: string | number;
6
+ refresh: string | number;
7
+ }): JSX.Element;