@pisell/lowcode-renderer 1.0.48 → 1.0.50
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/es/Render/index.js +34 -13
- package/lib/Render/index.js +22 -6
- package/package.json +2 -2
package/es/Render/index.js
CHANGED
|
@@ -17,10 +17,18 @@ import { injectComponents } from "@alilc/lowcode-plugin-inject";
|
|
|
17
17
|
import { AssetLoader, buildComponents } from "@alilc/lowcode-utils";
|
|
18
18
|
import { Skeleton } from "antd";
|
|
19
19
|
import { isArray, mergeWith, cloneDeep } from "lodash-es";
|
|
20
|
-
import React, { useEffect, useState } from "react";
|
|
20
|
+
import React, { useEffect, useState, useMemo } from "react";
|
|
21
21
|
import ReactRenderer from "../ReactRenderer";
|
|
22
22
|
import appHelper from "../appHelper";
|
|
23
|
+
import { generateUniqueIdByObj } from "@pisell/utils";
|
|
23
24
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
25
|
+
var isLoadAssets = false;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* 缓存处理后的data信息 二次访问时
|
|
29
|
+
* 直接从缓存中获取
|
|
30
|
+
*/
|
|
31
|
+
var cacheDataMap = new Map();
|
|
24
32
|
var Render = function Render(props) {
|
|
25
33
|
var packages = props.packages,
|
|
26
34
|
projectSchema = props.projectSchema,
|
|
@@ -29,7 +37,13 @@ var Render = function Render(props) {
|
|
|
29
37
|
locale = props.locale,
|
|
30
38
|
_props$isShowSkeleton = props.isShowSkeleton,
|
|
31
39
|
isShowSkeleton = _props$isShowSkeleton === void 0 ? true : _props$isShowSkeleton;
|
|
32
|
-
var
|
|
40
|
+
var schemaHash = useMemo(function () {
|
|
41
|
+
if (projectSchema) {
|
|
42
|
+
return generateUniqueIdByObj(projectSchema);
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}, [projectSchema]);
|
|
46
|
+
var _useState = useState(schemaHash ? cacheDataMap.get(schemaHash) || {} : {}),
|
|
33
47
|
_useState2 = _slicedToArray(_useState, 2),
|
|
34
48
|
data = _useState2[0],
|
|
35
49
|
setData = _useState2[1];
|
|
@@ -51,7 +65,7 @@ var Render = function Render(props) {
|
|
|
51
65
|
}
|
|
52
66
|
function _init() {
|
|
53
67
|
_init = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
54
|
-
var componentsMapArray, componentsTree, i18n, projectDataSource, componentsMap, packagesMap, pageSchema, libraryMap, libraryAsset, assetLoader, components;
|
|
68
|
+
var componentsMapArray, componentsTree, i18n, projectDataSource, componentsMap, packagesMap, pageSchema, libraryMap, libraryAsset, assetLoader, components, _data;
|
|
55
69
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
56
70
|
while (1) switch (_context.prev = _context.next) {
|
|
57
71
|
case 0:
|
|
@@ -88,24 +102,31 @@ var Render = function Render(props) {
|
|
|
88
102
|
// console.log(libraryMap,'libraryMap',libraryAsset);
|
|
89
103
|
// const vendors = [assetBundle(libraryAsset, AssetLevel.Library)];
|
|
90
104
|
|
|
105
|
+
// 静态资源load后不再二次加载
|
|
106
|
+
if (isLoadAssets) {
|
|
107
|
+
_context.next = 15;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
91
110
|
// TODO asset may cause pollution
|
|
92
111
|
assetLoader = new AssetLoader();
|
|
93
|
-
_context.next =
|
|
112
|
+
_context.next = 14;
|
|
94
113
|
return assetLoader.load(libraryAsset);
|
|
95
|
-
case
|
|
96
|
-
|
|
97
|
-
return injectComponents(buildComponents(libraryMap, componentsMap));
|
|
114
|
+
case 14:
|
|
115
|
+
isLoadAssets = true;
|
|
98
116
|
case 15:
|
|
117
|
+
_context.next = 17;
|
|
118
|
+
return injectComponents(buildComponents(libraryMap, componentsMap));
|
|
119
|
+
case 17:
|
|
99
120
|
components = _context.sent;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
setData({
|
|
121
|
+
_data = {
|
|
103
122
|
schema: pageSchema,
|
|
104
123
|
components: components,
|
|
105
124
|
i18n: i18n,
|
|
106
125
|
projectDataSource: projectDataSource
|
|
107
|
-
}
|
|
108
|
-
|
|
126
|
+
};
|
|
127
|
+
cacheDataMap.set(schemaHash, _data);
|
|
128
|
+
setData(_data);
|
|
129
|
+
case 21:
|
|
109
130
|
case "end":
|
|
110
131
|
return _context.stop();
|
|
111
132
|
}
|
|
@@ -123,7 +144,7 @@ var Render = function Render(props) {
|
|
|
123
144
|
if (!schema || !components) {
|
|
124
145
|
init();
|
|
125
146
|
}
|
|
126
|
-
}, [data, projectSchema]);
|
|
147
|
+
}, [data, projectSchema, schemaHash]);
|
|
127
148
|
if (!schema || !components) {
|
|
128
149
|
if (!isShowSkeleton) {
|
|
129
150
|
return null;
|
package/lib/Render/index.js
CHANGED
|
@@ -39,6 +39,9 @@ var import_lodash_es = require("lodash-es");
|
|
|
39
39
|
var import_react = __toESM(require("react"));
|
|
40
40
|
var import_ReactRenderer = __toESM(require("../ReactRenderer"));
|
|
41
41
|
var import_appHelper = __toESM(require("../appHelper"));
|
|
42
|
+
var import_utils = require("@pisell/utils");
|
|
43
|
+
var isLoadAssets = false;
|
|
44
|
+
var cacheDataMap = /* @__PURE__ */ new Map();
|
|
42
45
|
var Render = (props) => {
|
|
43
46
|
const {
|
|
44
47
|
packages,
|
|
@@ -48,7 +51,15 @@ var Render = (props) => {
|
|
|
48
51
|
locale,
|
|
49
52
|
isShowSkeleton = true
|
|
50
53
|
} = props;
|
|
51
|
-
const
|
|
54
|
+
const schemaHash = (0, import_react.useMemo)(() => {
|
|
55
|
+
if (projectSchema) {
|
|
56
|
+
return (0, import_utils.generateUniqueIdByObj)(projectSchema);
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}, [projectSchema]);
|
|
60
|
+
const [data, setData] = (0, import_react.useState)(
|
|
61
|
+
schemaHash ? cacheDataMap.get(schemaHash) || {} : {}
|
|
62
|
+
);
|
|
52
63
|
const { schema, components, i18n = {}, projectDataSource = {} } = data;
|
|
53
64
|
(0, import_react.useEffect)(() => {
|
|
54
65
|
document.body.id = "body";
|
|
@@ -80,17 +91,22 @@ var Render = (props) => {
|
|
|
80
91
|
libraryAsset.push(urls);
|
|
81
92
|
}
|
|
82
93
|
});
|
|
83
|
-
|
|
84
|
-
|
|
94
|
+
if (!isLoadAssets) {
|
|
95
|
+
const assetLoader = new import_lowcode_utils.AssetLoader();
|
|
96
|
+
await assetLoader.load(libraryAsset);
|
|
97
|
+
isLoadAssets = true;
|
|
98
|
+
}
|
|
85
99
|
const components3 = await (0, import_lowcode_plugin_inject.injectComponents)(
|
|
86
100
|
(0, import_lowcode_utils.buildComponents)(libraryMap, componentsMap)
|
|
87
101
|
);
|
|
88
|
-
|
|
102
|
+
const _data = {
|
|
89
103
|
schema: pageSchema,
|
|
90
104
|
components: components3,
|
|
91
105
|
i18n: i18n3,
|
|
92
106
|
projectDataSource: projectDataSource3
|
|
93
|
-
}
|
|
107
|
+
};
|
|
108
|
+
cacheDataMap.set(schemaHash, _data);
|
|
109
|
+
setData(_data);
|
|
94
110
|
}
|
|
95
111
|
const {
|
|
96
112
|
schema: schema2,
|
|
@@ -101,7 +117,7 @@ var Render = (props) => {
|
|
|
101
117
|
if (!schema2 || !components2) {
|
|
102
118
|
init();
|
|
103
119
|
}
|
|
104
|
-
}, [data, projectSchema]);
|
|
120
|
+
}, [data, projectSchema, schemaHash]);
|
|
105
121
|
if (!schema || !components) {
|
|
106
122
|
if (!isShowSkeleton) {
|
|
107
123
|
return null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pisell/lowcode-renderer",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.50",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"module": "./es/index.js",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"@alifd/next": "^1.25.44",
|
|
19
19
|
"lodash-es": "^4.17.21",
|
|
20
20
|
"dayjs": "^1.11.9",
|
|
21
|
-
"@pisell/utils": "1.0.
|
|
21
|
+
"@pisell/utils": "1.0.24"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"react": ">=16.9.0",
|