@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.
- package/LICENSE +21 -0
- package/README.md +52 -0
- package/es/components/CodeGenActionBtn/CodeGenActionBtn.d.ts +8 -0
- package/es/components/CodeGenActionBtn/CodeGenActionBtn.js +196 -0
- package/es/components/CodeGenActionBtn/CodeGenActionBtn.scss +13 -0
- package/es/components/CodeGenActionBtn/index.d.ts +1 -0
- package/es/components/CodeGenActionBtn/index.js +1 -0
- package/es/components/CodeGenPreview/CodeGenPreview.d.ts +8 -0
- package/es/components/CodeGenPreview/CodeGenPreview.js +40 -0
- package/es/components/CodeGenPreview/CodeGenPreview.scss +16 -0
- package/es/components/CodeGenPreview/fixPreviewCode.d.ts +2 -0
- package/es/components/CodeGenPreview/fixPreviewCode.js +101 -0
- package/es/components/CodeGenPreview/index.d.ts +1 -0
- package/es/components/CodeGenPreview/index.js +1 -0
- package/es/components/CodeGenPreview/useIsInIntranet.d.ts +4 -0
- package/es/components/CodeGenPreview/useIsInIntranet.js +66 -0
- package/es/components/CodeGenResult/CodeGenResult.d.ts +9 -0
- package/es/components/CodeGenResult/CodeGenResult.js +162 -0
- package/es/components/CodeGenResult/CodeGenResult.scss +7 -0
- package/es/components/CodeGenResult/index.d.ts +1 -0
- package/es/components/CodeGenResult/index.js +1 -0
- package/es/components/CodeSandboxPreview/CodeSandboxPreview.d.ts +4 -0
- package/es/components/CodeSandboxPreview/CodeSandboxPreview.js +186 -0
- package/es/components/CodeSandboxPreview/CodeSandboxPreview.scss +18 -0
- package/es/components/CodeSandboxPreview/index.d.ts +1 -0
- package/es/components/CodeSandboxPreview/index.js +1 -0
- package/es/components/FileTypeIcon/FileTypeIcon.d.ts +6 -0
- package/es/components/FileTypeIcon/FileTypeIcon.js +12 -0
- package/es/components/FileTypeIcon/FileTypeIcon.scss +36 -0
- package/es/components/FileTypeIcon/index.d.ts +1 -0
- package/es/components/FileTypeIcon/index.js +1 -0
- package/es/components/GravityCode/GravityCode.d.ts +9 -0
- package/es/components/GravityCode/GravityCode.js +1 -0
- package/es/components/GravityCode/index.d.ts +1 -0
- package/es/components/GravityCode/index.js +1 -0
- package/es/components/GravityPreview/ForceUpdate.d.ts +6 -0
- package/es/components/GravityPreview/ForceUpdate.js +12 -0
- package/es/components/GravityPreview/GravityPreview.d.ts +7 -0
- package/es/components/GravityPreview/GravityPreview.js +37 -0
- package/es/components/GravityPreview/GravitySdk.d.ts +10 -0
- package/es/components/GravityPreview/GravitySdk.js +183 -0
- package/es/components/GravityPreview/index.d.ts +1 -0
- package/es/components/GravityPreview/index.js +1 -0
- package/es/components/SourcesView/SourcesView.d.ts +9 -0
- package/es/components/SourcesView/SourcesView.js +197 -0
- package/es/components/SourcesView/SourcesView.scss +24 -0
- package/es/components/SourcesView/index.d.ts +1 -0
- package/es/components/SourcesView/index.js +1 -0
- package/es/demo/index.d.ts +1 -0
- package/es/demo/index.js +223 -0
- package/es/demo/index.scss +56 -0
- package/es/index.d.ts +30 -0
- package/es/index.js +67 -0
- package/es/style.js +2 -0
- package/es/types/SyncCodeGenResult.d.ts +7 -0
- package/es/types/SyncCodeGenResult.js +1 -0
- package/es/types/index.d.ts +1 -0
- package/es/types/index.js +1 -0
- package/es/typings.d.js +0 -0
- package/lib/components/CodeGenActionBtn/CodeGenActionBtn.d.ts +8 -0
- package/lib/components/CodeGenActionBtn/CodeGenActionBtn.js +204 -0
- package/lib/components/CodeGenActionBtn/CodeGenActionBtn.scss +13 -0
- package/lib/components/CodeGenActionBtn/index.d.ts +1 -0
- package/lib/components/CodeGenActionBtn/index.js +9 -0
- package/lib/components/CodeGenPreview/CodeGenPreview.d.ts +8 -0
- package/lib/components/CodeGenPreview/CodeGenPreview.js +45 -0
- package/lib/components/CodeGenPreview/CodeGenPreview.scss +16 -0
- package/lib/components/CodeGenPreview/fixPreviewCode.d.ts +2 -0
- package/lib/components/CodeGenPreview/fixPreviewCode.js +106 -0
- package/lib/components/CodeGenPreview/index.d.ts +1 -0
- package/lib/components/CodeGenPreview/index.js +9 -0
- package/lib/components/CodeGenPreview/useIsInIntranet.d.ts +4 -0
- package/lib/components/CodeGenPreview/useIsInIntranet.js +72 -0
- package/lib/components/CodeGenResult/CodeGenResult.d.ts +9 -0
- package/lib/components/CodeGenResult/CodeGenResult.js +169 -0
- package/lib/components/CodeGenResult/CodeGenResult.scss +7 -0
- package/lib/components/CodeGenResult/index.d.ts +1 -0
- package/lib/components/CodeGenResult/index.js +9 -0
- package/lib/components/CodeSandboxPreview/CodeSandboxPreview.d.ts +4 -0
- package/lib/components/CodeSandboxPreview/CodeSandboxPreview.js +193 -0
- package/lib/components/CodeSandboxPreview/CodeSandboxPreview.scss +18 -0
- package/lib/components/CodeSandboxPreview/index.d.ts +1 -0
- package/lib/components/CodeSandboxPreview/index.js +9 -0
- package/lib/components/FileTypeIcon/FileTypeIcon.d.ts +6 -0
- package/lib/components/FileTypeIcon/FileTypeIcon.js +17 -0
- package/lib/components/FileTypeIcon/FileTypeIcon.scss +36 -0
- package/lib/components/FileTypeIcon/index.d.ts +1 -0
- package/lib/components/FileTypeIcon/index.js +9 -0
- package/lib/components/GravityCode/GravityCode.d.ts +9 -0
- package/lib/components/GravityCode/GravityCode.js +3 -0
- package/lib/components/GravityCode/index.d.ts +1 -0
- package/lib/components/GravityCode/index.js +9 -0
- package/lib/components/GravityPreview/ForceUpdate.d.ts +6 -0
- package/lib/components/GravityPreview/ForceUpdate.js +17 -0
- package/lib/components/GravityPreview/GravityPreview.d.ts +7 -0
- package/lib/components/GravityPreview/GravityPreview.js +44 -0
- package/lib/components/GravityPreview/GravitySdk.d.ts +10 -0
- package/lib/components/GravityPreview/GravitySdk.js +196 -0
- package/lib/components/GravityPreview/index.d.ts +1 -0
- package/lib/components/GravityPreview/index.js +9 -0
- package/lib/components/SourcesView/SourcesView.d.ts +9 -0
- package/lib/components/SourcesView/SourcesView.js +204 -0
- package/lib/components/SourcesView/SourcesView.scss +24 -0
- package/lib/components/SourcesView/index.d.ts +1 -0
- package/lib/components/SourcesView/index.js +9 -0
- package/lib/demo/index.d.ts +1 -0
- package/lib/demo/index.js +228 -0
- package/lib/demo/index.scss +56 -0
- package/lib/index.d.ts +30 -0
- package/lib/index.js +74 -0
- package/lib/style.js +2 -0
- package/lib/types/SyncCodeGenResult.d.ts +7 -0
- package/lib/types/SyncCodeGenResult.js +3 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.js +9 -0
- package/lib/typings.d.js +1 -0
- 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 @@
|
|
|
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,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,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 @@
|
|
|
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,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
|
+
}
|