@gant-lowcode/plugin-code-generator 1.0.10 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/{dist → es}/components/code-gen-action/index.d.ts +2 -1
- package/es/components/code-gen-action/index.js +330 -0
- package/es/components/code-gen-action/index.less +20 -0
- package/es/components/code-gen-preview/fixPreviewCode.js +100 -0
- package/{dist → es}/components/code-gen-preview/index.d.ts +3 -2
- package/es/components/code-gen-preview/index.js +5 -0
- package/es/components/code-gen-preview/index.less +16 -0
- package/{dist → es}/components/code-gen-result/index.d.ts +2 -2
- package/es/components/code-gen-result/index.js +207 -0
- package/es/components/code-gen-result/index.less +20 -0
- package/{dist → es}/components/codesandbox-preview/index.d.ts +2 -1
- package/es/components/codesandbox-preview/index.js +192 -0
- package/es/components/codesandbox-preview/index.less +18 -0
- package/{dist → es}/components/file-tree/index.d.ts +3 -2
- package/es/components/file-tree/index.js +162 -0
- package/es/components/file-tree/index.less +54 -0
- package/{dist → es}/components/file-type-icon/index.d.ts +2 -2
- package/es/components/file-type-icon/index.js +12 -0
- package/es/components/file-type-icon/index.less +77 -0
- package/{dist → es}/components/sources-view/index.d.ts +2 -1
- package/es/components/sources-view/index.js +128 -0
- package/es/components/sources-view/index.less +12 -0
- package/{dist → es}/index.d.ts +3 -4
- package/es/index.js +67 -0
- package/es/style.js +9 -0
- package/{dist → es}/types/index.d.ts +3 -3
- package/es/types/index.js +1 -0
- package/lib/components/code-gen-action/index.d.ts +7 -0
- package/lib/components/code-gen-action/index.js +336 -0
- package/lib/components/code-gen-action/index.less +20 -0
- package/lib/components/code-gen-preview/fixPreviewCode.d.ts +2 -0
- package/lib/components/code-gen-preview/fixPreviewCode.js +105 -0
- package/lib/components/code-gen-preview/index.d.ts +9 -0
- package/lib/components/code-gen-preview/index.js +9 -0
- package/lib/components/code-gen-preview/index.less +16 -0
- package/lib/components/code-gen-result/index.d.ts +14 -0
- package/lib/components/code-gen-result/index.js +215 -0
- package/lib/components/code-gen-result/index.less +20 -0
- package/lib/components/codesandbox-preview/index.d.ts +4 -0
- package/lib/components/codesandbox-preview/index.js +199 -0
- package/lib/components/codesandbox-preview/index.less +18 -0
- package/lib/components/file-tree/index.d.ts +21 -0
- package/lib/components/file-tree/index.js +170 -0
- package/lib/components/file-tree/index.less +54 -0
- package/lib/components/file-type-icon/index.d.ts +6 -0
- package/lib/components/file-type-icon/index.js +17 -0
- package/lib/components/file-type-icon/index.less +77 -0
- package/lib/components/sources-view/index.d.ts +8 -0
- package/lib/components/sources-view/index.js +135 -0
- package/lib/components/sources-view/index.less +12 -0
- package/lib/index.d.ts +27 -0
- package/lib/index.js +74 -0
- package/lib/style.js +9 -0
- package/lib/types/index.d.ts +17 -0
- package/lib/types/index.js +3 -0
- package/package.json +27 -19
- package/dist/components/code-gen-action/index.css +0 -18
- package/dist/components/code-gen-action/index.js +0 -203
- package/dist/components/code-gen-preview/fixPreviewCode.js +0 -119
- package/dist/components/code-gen-preview/index.css +0 -18
- package/dist/components/code-gen-preview/index.js +0 -9
- package/dist/components/code-gen-result/index.css +0 -18
- package/dist/components/code-gen-result/index.js +0 -147
- package/dist/components/codesandbox-preview/index.css +0 -17
- package/dist/components/codesandbox-preview/index.js +0 -147
- package/dist/components/file-tree/index.css +0 -55
- package/dist/components/file-tree/index.js +0 -138
- package/dist/components/file-type-icon/index.css +0 -73
- package/dist/components/file-type-icon/index.js +0 -10
- package/dist/components/sources-view/index.css +0 -11
- package/dist/components/sources-view/index.js +0 -128
- package/dist/index.js +0 -50
- package/dist/types/index.js +0 -1
- /package/{dist → es}/components/code-gen-preview/fixPreviewCode.d.ts +0 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.CodeGenActionBtn = CodeGenActionBtn;
|
|
6
|
+
exports.fixSchema = fixSchema;
|
|
7
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
8
|
+
var _drawer = _interopRequireDefault(require("antd/lib/drawer"));
|
|
9
|
+
var _space = _interopRequireDefault(require("antd/lib/space"));
|
|
10
|
+
var _button = _interopRequireDefault(require("antd/lib/button"));
|
|
11
|
+
var _spin = _interopRequireDefault(require("antd/lib/spin"));
|
|
12
|
+
var _alert = _interopRequireDefault(require("antd/lib/alert"));
|
|
13
|
+
var _message2 = _interopRequireDefault(require("antd/lib/message"));
|
|
14
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
15
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
16
|
+
var _react = require("react");
|
|
17
|
+
var _standaloneLoader = require("@gant-lowcode/code-generator/standalone-loader");
|
|
18
|
+
var _lowcodeTypes = require("@gant-lowcode/lowcode-types");
|
|
19
|
+
var _coerce = _interopRequireDefault(require("semver/functions/coerce.js"));
|
|
20
|
+
var _compare = _interopRequireDefault(require("semver/functions/compare.js"));
|
|
21
|
+
var _index = require("../code-gen-result/index");
|
|
22
|
+
require("./index.less");
|
|
23
|
+
var _icons = require("@ant-design/icons");
|
|
24
|
+
var _fileSaver = _interopRequireDefault(require("file-saver"));
|
|
25
|
+
var _ahooks = require("ahooks");
|
|
26
|
+
function CodeGenActionBtn(_ref) {
|
|
27
|
+
var ctx = _ref.ctx;
|
|
28
|
+
var _useState = (0, _react.useState)({
|
|
29
|
+
open: false,
|
|
30
|
+
hasError: false,
|
|
31
|
+
error: null,
|
|
32
|
+
loading: false,
|
|
33
|
+
result: null,
|
|
34
|
+
schema: null,
|
|
35
|
+
originalSchema: null
|
|
36
|
+
}),
|
|
37
|
+
state = _useState[0],
|
|
38
|
+
setState = _useState[1];
|
|
39
|
+
var codeGenResultRef = (0, _react.useRef)(null);
|
|
40
|
+
var handleClick = /*#__PURE__*/function () {
|
|
41
|
+
var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
42
|
+
var getProjectSchema, originalSchema, schema, result;
|
|
43
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
44
|
+
while (1) switch (_context.prev = _context.next) {
|
|
45
|
+
case 0:
|
|
46
|
+
_context.prev = 0;
|
|
47
|
+
// 打开基于 Gravity 的编辑器/出码预览器
|
|
48
|
+
setState(function (prev) {
|
|
49
|
+
return (0, _extends2["default"])({}, prev, {
|
|
50
|
+
loading: true,
|
|
51
|
+
open: true,
|
|
52
|
+
hasError: false
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
console.log("--ctx", ctx);
|
|
56
|
+
getProjectSchema = ctx.config.get("getProjectSchema");
|
|
57
|
+
if (!getProjectSchema) {
|
|
58
|
+
_context.next = 10;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
_context.next = 7;
|
|
62
|
+
return getProjectSchema();
|
|
63
|
+
case 7:
|
|
64
|
+
originalSchema = _context.sent;
|
|
65
|
+
_context.next = 13;
|
|
66
|
+
break;
|
|
67
|
+
case 10:
|
|
68
|
+
_context.next = 12;
|
|
69
|
+
return ctx.project.exportSchema(_lowcodeTypes.IPublicEnumTransformStage.Save);
|
|
70
|
+
case 12:
|
|
71
|
+
originalSchema = _context.sent;
|
|
72
|
+
case 13:
|
|
73
|
+
_context.next = 15;
|
|
74
|
+
return fixSchema(originalSchema);
|
|
75
|
+
case 15:
|
|
76
|
+
schema = _context.sent;
|
|
77
|
+
console.log("got schema: ", schema);
|
|
78
|
+
setState(function (prev) {
|
|
79
|
+
return (0, _extends2["default"])({}, prev, {
|
|
80
|
+
schema: schema,
|
|
81
|
+
originalSchema: originalSchema
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
// 出码...
|
|
86
|
+
_context.next = 20;
|
|
87
|
+
return (0, _standaloneLoader.generateCode)({
|
|
88
|
+
solution: "gantLegacy",
|
|
89
|
+
schema: schema,
|
|
90
|
+
flattenResult: true,
|
|
91
|
+
builderOptions: {
|
|
92
|
+
// mode: 'fully',
|
|
93
|
+
rootPaths: ["packages", "icost"],
|
|
94
|
+
pagePaths: [],
|
|
95
|
+
configPaths: []
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
case 20:
|
|
99
|
+
result = _context.sent;
|
|
100
|
+
console.log("generated: ", result);
|
|
101
|
+
setState(function (prev) {
|
|
102
|
+
return (0, _extends2["default"])({}, prev, {
|
|
103
|
+
loading: false,
|
|
104
|
+
result: result
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
_context.next = 29;
|
|
108
|
+
break;
|
|
109
|
+
case 25:
|
|
110
|
+
_context.prev = 25;
|
|
111
|
+
_context.t0 = _context["catch"](0);
|
|
112
|
+
console.error("failed to run code generator: ", _context.t0);
|
|
113
|
+
setState(function (prev) {
|
|
114
|
+
return (0, _extends2["default"])({}, prev, {
|
|
115
|
+
hasError: true,
|
|
116
|
+
error: _context.t0 instanceof Error ? _context.t0 : new Error("" + ((_context.t0 === null || _context.t0 === void 0 ? void 0 : _context.t0.message) || _context.t0))
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
case 29:
|
|
120
|
+
case "end":
|
|
121
|
+
return _context.stop();
|
|
122
|
+
}
|
|
123
|
+
}, _callee, null, [[0, 25]]);
|
|
124
|
+
}));
|
|
125
|
+
return function handleClick() {
|
|
126
|
+
return _ref2.apply(this, arguments);
|
|
127
|
+
};
|
|
128
|
+
}();
|
|
129
|
+
var _useRequest = (0, _ahooks.useRequest)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
130
|
+
var codeGen, content;
|
|
131
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
132
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
133
|
+
case 0:
|
|
134
|
+
_context2.prev = 0;
|
|
135
|
+
codeGen = codeGenResultRef.current;
|
|
136
|
+
if (codeGen) {
|
|
137
|
+
_context2.next = 4;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
return _context2.abrupt("return");
|
|
141
|
+
case 4:
|
|
142
|
+
_context2.next = 6;
|
|
143
|
+
return codeGen.codeZip();
|
|
144
|
+
case 6:
|
|
145
|
+
content = _context2.sent;
|
|
146
|
+
_fileSaver["default"].saveAs(content, "gant-lowcode-generated-sources.zip");
|
|
147
|
+
_context2.next = 14;
|
|
148
|
+
break;
|
|
149
|
+
case 10:
|
|
150
|
+
_context2.prev = 10;
|
|
151
|
+
_context2.t0 = _context2["catch"](0);
|
|
152
|
+
console.log("failed to download sources: ", _context2.t0);
|
|
153
|
+
_message2["default"].error("下载失败!");
|
|
154
|
+
case 14:
|
|
155
|
+
case "end":
|
|
156
|
+
return _context2.stop();
|
|
157
|
+
}
|
|
158
|
+
}, _callee2, null, [[0, 10]]);
|
|
159
|
+
})), {
|
|
160
|
+
manual: true
|
|
161
|
+
}),
|
|
162
|
+
run = _useRequest.run,
|
|
163
|
+
downloading = _useRequest.loading;
|
|
164
|
+
var handleDownload = /*#__PURE__*/function () {
|
|
165
|
+
var _ref4 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(e) {
|
|
166
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
167
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
168
|
+
case 0:
|
|
169
|
+
e.preventDefault();
|
|
170
|
+
e.stopPropagation();
|
|
171
|
+
run();
|
|
172
|
+
case 3:
|
|
173
|
+
case "end":
|
|
174
|
+
return _context3.stop();
|
|
175
|
+
}
|
|
176
|
+
}, _callee3);
|
|
177
|
+
}));
|
|
178
|
+
return function handleDownload(_x) {
|
|
179
|
+
return _ref4.apply(this, arguments);
|
|
180
|
+
};
|
|
181
|
+
}();
|
|
182
|
+
var _useRequest2 = (0, _ahooks.useRequest)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
183
|
+
var codeGen, blob, setCodeUpload;
|
|
184
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
185
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
186
|
+
case 0:
|
|
187
|
+
codeGen = codeGenResultRef.current;
|
|
188
|
+
if (codeGen) {
|
|
189
|
+
_context4.next = 3;
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
return _context4.abrupt("return");
|
|
193
|
+
case 3:
|
|
194
|
+
_context4.prev = 3;
|
|
195
|
+
_context4.next = 6;
|
|
196
|
+
return codeGen.codeZip();
|
|
197
|
+
case 6:
|
|
198
|
+
blob = _context4.sent;
|
|
199
|
+
setCodeUpload = ctx.config.get("setCodeUpload");
|
|
200
|
+
if (!setCodeUpload) {
|
|
201
|
+
_context4.next = 11;
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
_context4.next = 11;
|
|
205
|
+
return setCodeUpload({
|
|
206
|
+
zipFile: blob
|
|
207
|
+
});
|
|
208
|
+
case 11:
|
|
209
|
+
_context4.next = 17;
|
|
210
|
+
break;
|
|
211
|
+
case 13:
|
|
212
|
+
_context4.prev = 13;
|
|
213
|
+
_context4.t0 = _context4["catch"](3);
|
|
214
|
+
console.log("failed to git push: ", _context4.t0);
|
|
215
|
+
_message2["default"].error("上传失败!");
|
|
216
|
+
case 17:
|
|
217
|
+
case "end":
|
|
218
|
+
return _context4.stop();
|
|
219
|
+
}
|
|
220
|
+
}, _callee4, null, [[3, 13]]);
|
|
221
|
+
})), {
|
|
222
|
+
manual: true
|
|
223
|
+
}),
|
|
224
|
+
handleUpload = _useRequest2.run,
|
|
225
|
+
uploading = _useRequest2.loading;
|
|
226
|
+
var drawerChildren = null;
|
|
227
|
+
if (state.hasError) {
|
|
228
|
+
var _state$error;
|
|
229
|
+
drawerChildren = /*#__PURE__*/React.createElement(_alert["default"], {
|
|
230
|
+
type: "error",
|
|
231
|
+
message: "\u51FA\u9519\u4E86",
|
|
232
|
+
description: (_state$error = state.error) === null || _state$error === void 0 ? void 0 : _state$error.message
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
if (state.loading) {
|
|
236
|
+
drawerChildren = /*#__PURE__*/React.createElement(_spin["default"], {
|
|
237
|
+
className: "code-gen-plugin-loading",
|
|
238
|
+
spinning: true,
|
|
239
|
+
tip: "\u6B63\u5728\u51FA\u7801..."
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
drawerChildren = /*#__PURE__*/React.createElement(_index.CodeGenResult, {
|
|
243
|
+
ref: codeGenResultRef,
|
|
244
|
+
result: state.result,
|
|
245
|
+
schema: state.schema,
|
|
246
|
+
originalSchema: state.originalSchema
|
|
247
|
+
});
|
|
248
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_button["default"], {
|
|
249
|
+
type: "text",
|
|
250
|
+
onClick: handleClick
|
|
251
|
+
}, /*#__PURE__*/React.createElement(_icons.CodeOutlined, null)), /*#__PURE__*/React.createElement(_drawer["default"], {
|
|
252
|
+
open: state.open,
|
|
253
|
+
title: "\u51FA\u7801\u7ED3\u679C",
|
|
254
|
+
width: "95vw",
|
|
255
|
+
rootClassName: "code-gen-drawer",
|
|
256
|
+
extra: /*#__PURE__*/React.createElement(_space["default"], null, /*#__PURE__*/React.createElement(_button["default"], {
|
|
257
|
+
type: "link",
|
|
258
|
+
onClick: handleUpload,
|
|
259
|
+
loading: uploading
|
|
260
|
+
}, "\u4E0A\u4F20git"), /*#__PURE__*/React.createElement(_button["default"], {
|
|
261
|
+
type: "link",
|
|
262
|
+
onClick: handleDownload,
|
|
263
|
+
loading: downloading
|
|
264
|
+
}, "\u4E0B\u8F7D\u6E90\u4EE3\u7801")),
|
|
265
|
+
onClose: function onClose() {
|
|
266
|
+
setState(function (prev) {
|
|
267
|
+
return (0, _extends2["default"])({}, prev, {
|
|
268
|
+
open: false
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
}, drawerChildren));
|
|
273
|
+
}
|
|
274
|
+
function fixSchema(_x2) {
|
|
275
|
+
return _fixSchema.apply(this, arguments);
|
|
276
|
+
}
|
|
277
|
+
function _fixSchema() {
|
|
278
|
+
_fixSchema = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5(schema) {
|
|
279
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
280
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
281
|
+
case 0:
|
|
282
|
+
return _context5.abrupt("return", deepClone((0, _extends2["default"])({}, schema, {
|
|
283
|
+
componentsMap: schema.componentsMap.filter(function (c) {
|
|
284
|
+
return c["package"];
|
|
285
|
+
}) // 去掉没有 package 的组件
|
|
286
|
+
.map(function (c) {
|
|
287
|
+
// 修正版本号(对于没有有效版本号的组件,默认使用 latest)
|
|
288
|
+
if (!isValidVersion(c.version)) {
|
|
289
|
+
console.warn('[WARN] got invalid version "%o" for component "%s", use "latest" as fallback', c.version, c);
|
|
290
|
+
return (0, _extends2["default"])({}, c, {
|
|
291
|
+
version: "latest"
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// 修正 gantd-lowcode-materials 的版本,最小为1.1.0
|
|
296
|
+
if (c["package"] === 'gantd-lowcode-materials' && (0, _compare["default"])((0, _coerce["default"])(c.version) || '', '1.1.0') <= 0) {
|
|
297
|
+
return (0, _extends2["default"])({}, c, {
|
|
298
|
+
version: 'latest'
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
return c;
|
|
302
|
+
})
|
|
303
|
+
})));
|
|
304
|
+
case 1:
|
|
305
|
+
case "end":
|
|
306
|
+
return _context5.stop();
|
|
307
|
+
}
|
|
308
|
+
}, _callee5);
|
|
309
|
+
}));
|
|
310
|
+
return _fixSchema.apply(this, arguments);
|
|
311
|
+
}
|
|
312
|
+
function deepClone(x) {
|
|
313
|
+
try {
|
|
314
|
+
return JSON.parse(JSON.stringify(x));
|
|
315
|
+
} catch (e) {
|
|
316
|
+
throw new Error("failed to clone schema -- " + e);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
function isValidVersion(version) {
|
|
320
|
+
if (!version) {
|
|
321
|
+
return false;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// 对于一些明显非法的版本号过滤下
|
|
325
|
+
if (version === "{{version}}" || version === "null" || version === "undefined") {
|
|
326
|
+
return false;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// 对于 latest/beta/rc 这样的 tag 版本号要支持下
|
|
330
|
+
if (/^[a-z][a-z0-9]+([a-z0-9-]+)?$/i.test(version)) {
|
|
331
|
+
return true;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// 最后支持下所有 semver 能识别的版本
|
|
335
|
+
return (0, _coerce["default"])(version) !== null;
|
|
336
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
.code-gen-plugin-loading {
|
|
2
|
+
width: 100%;
|
|
3
|
+
margin: 2em auto;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.code-gen-drawer {
|
|
7
|
+
.ant-drawer-body {
|
|
8
|
+
margin: 0;
|
|
9
|
+
padding: 0;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.code-gen-plugin-result {
|
|
14
|
+
width: 100%;
|
|
15
|
+
.next-message-error {
|
|
16
|
+
.next-message-content {
|
|
17
|
+
white-space: pre-wrap;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.fixPreviewCode = fixPreviewCode;
|
|
6
|
+
var _extends4 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
7
|
+
// 默认生成的代码不符合在线预览的规则,需要处理下
|
|
8
|
+
function fixPreviewCode(code, unused) {
|
|
9
|
+
var _JSON$parse, _fixedCode$modules$P;
|
|
10
|
+
if (!code) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
var fixedModules = Object.entries(code.modules || {})
|
|
14
|
+
// 去掉隐藏文件和 html 以及 md 等无用文件:
|
|
15
|
+
.filter(function (_ref) {
|
|
16
|
+
var fpath = _ref[0];
|
|
17
|
+
return !fpath.startsWith("/.") && !fpath.endsWith(".html") && !fpath.endsWith(".md");
|
|
18
|
+
})
|
|
19
|
+
// 所有的 jsx 文件改成 js 文件(因为 gravity 不支持 jsx)
|
|
20
|
+
.map(function (_ref2) {
|
|
21
|
+
var fpath = _ref2[0],
|
|
22
|
+
module = _ref2[1];
|
|
23
|
+
return [fpath.replace(/\.jsx$/, ".js"), module];
|
|
24
|
+
}).map(function (_ref3) {
|
|
25
|
+
var fpath = _ref3[0],
|
|
26
|
+
module = _ref3[1];
|
|
27
|
+
return [fpath.replace(/\.scss$/, ".css"), module];
|
|
28
|
+
}).reduce(function (acc, _ref4) {
|
|
29
|
+
var _extends2;
|
|
30
|
+
var fpath = _ref4[0],
|
|
31
|
+
module = _ref4[1];
|
|
32
|
+
return (0, _extends4["default"])({}, acc, (_extends2 = {}, _extends2[fpath] = (0, _extends4["default"])({}, module, {
|
|
33
|
+
fpath: fpath,
|
|
34
|
+
code: module.code
|
|
35
|
+
// 所有的 import xxx from '@/yyy' 转换为 import xxx from '/src/yyy'
|
|
36
|
+
.replace(/import\s+([^\s]+)\s+from\s+['"]@\/([^'"]+)['"]/g, function (_, name, path) {
|
|
37
|
+
return "import " + name + " from '/src/" + path + "'";
|
|
38
|
+
})
|
|
39
|
+
// 所有的 import styles from 'xxx.scss' 转换为 import styles from '/src/xxx.css'
|
|
40
|
+
.replace(/import\s+([^\s]+)\s+from\s+['"]([^'"]+)\.scss['"]/g, function (_, name, path) {
|
|
41
|
+
return "import " + name + " from '" + path + ".css'";
|
|
42
|
+
})
|
|
43
|
+
}), _extends2));
|
|
44
|
+
}, {});
|
|
45
|
+
var fixedCode = (0, _extends4["default"])({}, code, {
|
|
46
|
+
modules: fixedModules
|
|
47
|
+
});
|
|
48
|
+
fixedCode.modules["/src/app.js"] = (0, _extends4["default"])({}, fixedCode.modules["/src/app.js"], {
|
|
49
|
+
code: "\n // \u6CE8\u610F\uFF1A\u4E3A\u4E86\u65B9\u4FBF\u5728\u6D4F\u89C8\u5668\u4E2D\u8FDB\u884C\u9884\u89C8\uFF0C\u8FD9\u91CC\u7B80\u5316\u4E86\u4E00\u4E9B\u5185\u5BB9\n import './shims';\n import './global.css';\n\n import React from 'react';\n import ReactDOM from 'react-dom';\n\n import Page from '" + Object.keys(fixedModules).find(function (fpath) {
|
|
50
|
+
return fpath.startsWith("/src/pages/");
|
|
51
|
+
}) + "';\n\n ReactDOM.render(<Page/>, document.getElementById('root'));\n"
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// 一些垫片
|
|
55
|
+
fixedCode.modules["/src/shims.js"] = {
|
|
56
|
+
fpath: "/src/shims.js",
|
|
57
|
+
code: ""
|
|
58
|
+
};
|
|
59
|
+
fixedCode.modules["/package.json"] = (0, _extends4["default"])({}, fixedCode.modules["/package.json"], {
|
|
60
|
+
code: JSON.stringify({
|
|
61
|
+
name: "demo",
|
|
62
|
+
version: "1.0.0",
|
|
63
|
+
dependencies: (0, _extends4["default"])({
|
|
64
|
+
react: "^16.8.3",
|
|
65
|
+
"react-dom": "^16.8.3"
|
|
66
|
+
}, (_JSON$parse = JSON.parse(((_fixedCode$modules$P = fixedCode.modules["/package.json"]) === null || _fixedCode$modules$P === void 0 ? void 0 : _fixedCode$modules$P.code) || "{}")) === null || _JSON$parse === void 0 ? void 0 : _JSON$parse.dependencies)
|
|
67
|
+
})
|
|
68
|
+
});
|
|
69
|
+
fixedCode.modules = pickKeys(fixedCode.modules, [
|
|
70
|
+
// '/tsconfig.json',
|
|
71
|
+
// '/jsconfig.json',
|
|
72
|
+
// '/build.json',
|
|
73
|
+
// '/abc.json',
|
|
74
|
+
"/package.json", "/src/routes.js", "/src/app.js", "/src/constants.js", "/src/utils.js", "/src/i18n.js", "/src/global.css", "/src/index.js", "/src/shims.js"].concat(Object.keys(fixedModules).filter(function (fpath) {
|
|
75
|
+
return fpath.startsWith("/src/pages/");
|
|
76
|
+
})));
|
|
77
|
+
fixedCode.modules["/src/routes.js"] = (0, _extends4["default"])({}, fixedCode.modules["/src/routes.js"], {
|
|
78
|
+
code: "\n"
|
|
79
|
+
});
|
|
80
|
+
fixedCode.modules["/src/global.css"] = {
|
|
81
|
+
fpath: "/src/global.css",
|
|
82
|
+
code: "\nbody {\n -webkit-font-smoothing: antialiased;\n}\n"
|
|
83
|
+
};
|
|
84
|
+
Object.assign(fixedCode.modules, {
|
|
85
|
+
"/src/index.html": {
|
|
86
|
+
code: '<div id="root"></div>',
|
|
87
|
+
fpath: "/src/index.html"
|
|
88
|
+
},
|
|
89
|
+
"/src/index.less": {
|
|
90
|
+
fpath: "/src/index.less",
|
|
91
|
+
code: "\n\n "
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
fixedCode.type = "riddle";
|
|
95
|
+
return fixedCode;
|
|
96
|
+
}
|
|
97
|
+
function pickKeys(data, keys) {
|
|
98
|
+
return keys.reduce(function (acc, key) {
|
|
99
|
+
if (data[key]) {
|
|
100
|
+
var _extends3;
|
|
101
|
+
return (0, _extends4["default"])({}, acc, (_extends3 = {}, _extends3[key] = data[key], _extends3));
|
|
102
|
+
}
|
|
103
|
+
return acc;
|
|
104
|
+
}, {});
|
|
105
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { GravityCode } from "../../types";
|
|
3
|
+
import "./index.less";
|
|
4
|
+
export declare type CodeGenPreviewProps = {
|
|
5
|
+
code: GravityCode | null;
|
|
6
|
+
height: string | number;
|
|
7
|
+
refresh: string | number;
|
|
8
|
+
};
|
|
9
|
+
export declare function CodeGenPreview(props: CodeGenPreviewProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.CodeGenPreview = CodeGenPreview;
|
|
5
|
+
var _index = require("../codesandbox-preview/index");
|
|
6
|
+
require("./index.less");
|
|
7
|
+
function CodeGenPreview(props) {
|
|
8
|
+
return /*#__PURE__*/React.createElement(_index.CodeSandboxPreview, props);
|
|
9
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IPublicTypeProjectSchema } from "@gant-lowcode/lowcode-types";
|
|
3
|
+
import { Result } from "@gant-lowcode/code-generator/standalone-loader";
|
|
4
|
+
import "./index.less";
|
|
5
|
+
interface CodeGenResultProps {
|
|
6
|
+
result: Result | null | undefined;
|
|
7
|
+
schema: IPublicTypeProjectSchema | null;
|
|
8
|
+
originalSchema: IPublicTypeProjectSchema | null;
|
|
9
|
+
}
|
|
10
|
+
export interface CodeGenResultRef {
|
|
11
|
+
codeZip: () => Promise<Blob>;
|
|
12
|
+
}
|
|
13
|
+
export declare const CodeGenResult: import("react").ForwardRefExoticComponent<CodeGenResultProps & import("react").RefAttributes<CodeGenResultRef>>;
|
|
14
|
+
export {};
|