@cuipengyu5/bling-renderer-core 0.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.
Files changed (93) hide show
  1. package/es/adapter/index.d.ts +24 -0
  2. package/es/adapter/index.js +95 -0
  3. package/es/components/Div.d.ts +2 -0
  4. package/es/components/Div.js +19 -0
  5. package/es/components/VisualDom/index.css +19 -0
  6. package/es/components/VisualDom/index.d.ts +3 -0
  7. package/es/components/VisualDom/index.js +44 -0
  8. package/es/context/index.d.ts +1 -0
  9. package/es/context/index.js +11 -0
  10. package/es/hoc/index.d.ts +7 -0
  11. package/es/hoc/index.js +90 -0
  12. package/es/hoc/leaf.d.ts +32 -0
  13. package/es/hoc/leaf.js +521 -0
  14. package/es/index.d.ts +7 -0
  15. package/es/index.js +9 -0
  16. package/es/renderer/addon.d.ts +2 -0
  17. package/es/renderer/addon.js +107 -0
  18. package/es/renderer/base.d.ts +13 -0
  19. package/es/renderer/base.js +1120 -0
  20. package/es/renderer/block.d.ts +2 -0
  21. package/es/renderer/block.js +43 -0
  22. package/es/renderer/component.d.ts +2 -0
  23. package/es/renderer/component.js +59 -0
  24. package/es/renderer/index.d.ts +8 -0
  25. package/es/renderer/index.js +8 -0
  26. package/es/renderer/page.d.ts +2 -0
  27. package/es/renderer/page.js +91 -0
  28. package/es/renderer/renderer.d.ts +2 -0
  29. package/es/renderer/renderer.js +230 -0
  30. package/es/renderer/temp.d.ts +2 -0
  31. package/es/renderer/temp.js +139 -0
  32. package/es/style.js +1 -0
  33. package/es/types/index.d.ts +275 -0
  34. package/es/types/index.js +1 -0
  35. package/es/utils/common.d.ts +119 -0
  36. package/es/utils/common.js +378 -0
  37. package/es/utils/data-helper.d.ts +74 -0
  38. package/es/utils/data-helper.js +300 -0
  39. package/es/utils/index.d.ts +3 -0
  40. package/es/utils/index.js +3 -0
  41. package/es/utils/is-use-loop.d.ts +2 -0
  42. package/es/utils/is-use-loop.js +16 -0
  43. package/es/utils/logger.d.ts +3 -0
  44. package/es/utils/logger.js +5 -0
  45. package/es/utils/request.d.ts +54 -0
  46. package/es/utils/request.js +209 -0
  47. package/lib/adapter/index.d.ts +24 -0
  48. package/lib/adapter/index.js +99 -0
  49. package/lib/components/Div.d.ts +2 -0
  50. package/lib/components/Div.js +24 -0
  51. package/lib/components/VisualDom/index.css +19 -0
  52. package/lib/components/VisualDom/index.d.ts +3 -0
  53. package/lib/components/VisualDom/index.js +49 -0
  54. package/lib/context/index.d.ts +1 -0
  55. package/lib/context/index.js +16 -0
  56. package/lib/hoc/index.d.ts +7 -0
  57. package/lib/hoc/index.js +95 -0
  58. package/lib/hoc/leaf.d.ts +32 -0
  59. package/lib/hoc/leaf.js +526 -0
  60. package/lib/index.d.ts +7 -0
  61. package/lib/index.js +34 -0
  62. package/lib/renderer/addon.d.ts +2 -0
  63. package/lib/renderer/addon.js +112 -0
  64. package/lib/renderer/base.d.ts +13 -0
  65. package/lib/renderer/base.js +1126 -0
  66. package/lib/renderer/block.d.ts +2 -0
  67. package/lib/renderer/block.js +48 -0
  68. package/lib/renderer/component.d.ts +2 -0
  69. package/lib/renderer/component.js +64 -0
  70. package/lib/renderer/index.d.ts +8 -0
  71. package/lib/renderer/index.js +18 -0
  72. package/lib/renderer/page.d.ts +2 -0
  73. package/lib/renderer/page.js +96 -0
  74. package/lib/renderer/renderer.d.ts +2 -0
  75. package/lib/renderer/renderer.js +235 -0
  76. package/lib/renderer/temp.d.ts +2 -0
  77. package/lib/renderer/temp.js +144 -0
  78. package/lib/style.js +1 -0
  79. package/lib/types/index.d.ts +275 -0
  80. package/lib/types/index.js +3 -0
  81. package/lib/utils/common.d.ts +119 -0
  82. package/lib/utils/common.js +409 -0
  83. package/lib/utils/data-helper.d.ts +74 -0
  84. package/lib/utils/data-helper.js +306 -0
  85. package/lib/utils/index.d.ts +3 -0
  86. package/lib/utils/index.js +21 -0
  87. package/lib/utils/is-use-loop.d.ts +2 -0
  88. package/lib/utils/is-use-loop.js +19 -0
  89. package/lib/utils/logger.d.ts +3 -0
  90. package/lib/utils/logger.js +9 -0
  91. package/lib/utils/request.d.ts +54 -0
  92. package/lib/utils/request.js +217 -0
  93. package/package.json +64 -0
@@ -0,0 +1,526 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.leafWrapper = leafWrapper;
6
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
7
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
9
+ var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
10
+ var _lowcodeTypes = require("@alilc/lowcode-types");
11
+ var _lowcodeUtils = require("@alilc/lowcode-utils");
12
+ var _common = require("../utils/common");
13
+ var _adapter = _interopRequireDefault(require("../adapter"));
14
+ var _logger = _interopRequireDefault(require("../utils/logger"));
15
+ var _excluded = ["visible"],
16
+ _excluded2 = ["forwardedRef"];
17
+ var RerenderType = /*#__PURE__*/function (RerenderType) {
18
+ RerenderType["All"] = "All";
19
+ RerenderType["ChildChanged"] = "ChildChanged";
20
+ RerenderType["PropsChanged"] = "PropsChanged";
21
+ RerenderType["VisibleChanged"] = "VisibleChanged";
22
+ RerenderType["MinimalRenderUnit"] = "MinimalRenderUnit";
23
+ return RerenderType;
24
+ }(RerenderType || {}); // 缓存 Leaf 层组件,防止重新渲染问题
25
+ var LeafCache = function LeafCache(documentId, device) {
26
+ this.documentId = documentId;
27
+ this.device = device;
28
+ /** 组件缓存 */
29
+ this.component = new Map();
30
+ /**
31
+ * 状态缓存,场景:属性变化后,改组件被销毁,state 为空,没有展示修改后的属性
32
+ */
33
+ this.state = new Map();
34
+ /**
35
+ * 订阅事件缓存,导致 rerender 的订阅事件
36
+ */
37
+ this.event = new Map();
38
+ this.ref = new Map();
39
+ };
40
+ var cache;
41
+
42
+ /** 部分没有渲染的 node 节点进行兜底处理 or 渲染方式没有渲染 LeafWrapper */
43
+ function initRerenderEvent(_ref) {
44
+ var _cache$event$get, _cache$event$get2, _leaf$onPropChange, _leaf$onChildrenChang, _leaf$onVisibleChange;
45
+ var schema = _ref.schema,
46
+ __debug = _ref.__debug,
47
+ container = _ref.container,
48
+ getNode = _ref.getNode;
49
+ var leaf = getNode === null || getNode === void 0 ? void 0 : getNode(schema.id);
50
+ if (!leaf || (_cache$event$get = cache.event.get(schema.id)) !== null && _cache$event$get !== void 0 && _cache$event$get.clear || leaf === cache.event.get(schema.id)) {
51
+ return;
52
+ }
53
+ (_cache$event$get2 = cache.event.get(schema.id)) === null || _cache$event$get2 === void 0 ? void 0 : _cache$event$get2.dispose.forEach(function (disposeFn) {
54
+ return disposeFn && disposeFn();
55
+ });
56
+ var debounceRerender = (0, _common.debounce)(function () {
57
+ container.rerender();
58
+ }, 20);
59
+ cache.event.set(schema.id, {
60
+ clear: false,
61
+ leaf: leaf,
62
+ dispose: [leaf === null || leaf === void 0 ? void 0 : (_leaf$onPropChange = leaf.onPropChange) === null || _leaf$onPropChange === void 0 ? void 0 : _leaf$onPropChange.call(leaf, function () {
63
+ if (!container.autoRepaintNode) {
64
+ return;
65
+ }
66
+ __debug(schema.componentName + "[" + schema.id + "] leaf not render in SimulatorRendererView, leaf onPropsChange make rerender");
67
+ debounceRerender();
68
+ }), leaf === null || leaf === void 0 ? void 0 : (_leaf$onChildrenChang = leaf.onChildrenChange) === null || _leaf$onChildrenChang === void 0 ? void 0 : _leaf$onChildrenChang.call(leaf, function () {
69
+ if (!container.autoRepaintNode) {
70
+ return;
71
+ }
72
+ __debug(schema.componentName + "[" + schema.id + "] leaf not render in SimulatorRendererView, leaf onChildrenChange make rerender");
73
+ debounceRerender();
74
+ }), leaf === null || leaf === void 0 ? void 0 : (_leaf$onVisibleChange = leaf.onVisibleChange) === null || _leaf$onVisibleChange === void 0 ? void 0 : _leaf$onVisibleChange.call(leaf, function () {
75
+ if (!container.autoRepaintNode) {
76
+ return;
77
+ }
78
+ __debug(schema.componentName + "[" + schema.id + "] leaf not render in SimulatorRendererView, leaf onVisibleChange make rerender");
79
+ debounceRerender();
80
+ })]
81
+ });
82
+ }
83
+
84
+ /** 渲染的 node 节点全局注册事件清除 */
85
+ function clearRerenderEvent(id) {
86
+ var _cache$event$get3, _cache$event$get4, _cache$event$get4$dis;
87
+ if ((_cache$event$get3 = cache.event.get(id)) !== null && _cache$event$get3 !== void 0 && _cache$event$get3.clear) {
88
+ return;
89
+ }
90
+ (_cache$event$get4 = cache.event.get(id)) === null || _cache$event$get4 === void 0 ? void 0 : (_cache$event$get4$dis = _cache$event$get4.dispose) === null || _cache$event$get4$dis === void 0 ? void 0 : _cache$event$get4$dis.forEach(function (disposeFn) {
91
+ return disposeFn && disposeFn();
92
+ });
93
+ cache.event.set(id, {
94
+ clear: true,
95
+ dispose: []
96
+ });
97
+ }
98
+
99
+ // 给每个组件包裹一个 HOC Leaf,支持组件内部属性变化,自响应渲染
100
+ function leafWrapper(Comp, _ref2) {
101
+ var _baseRenderer$props, _baseRenderer$props$d, _baseRenderer$props2, _baseRenderer$props$d2, _baseRenderer$props3, _baseRenderer$props4, _baseRenderer$props5, _baseRenderer$props6, _host$designer;
102
+ var schema = _ref2.schema,
103
+ baseRenderer = _ref2.baseRenderer,
104
+ componentInfo = _ref2.componentInfo,
105
+ scope = _ref2.scope;
106
+ var __debug = baseRenderer.__debug,
107
+ getProps = baseRenderer.__getComponentProps,
108
+ getChildren = baseRenderer.__getSchemaChildrenVirtualDom,
109
+ __parseData = baseRenderer.__parseData;
110
+ var engine = baseRenderer.context.engine;
111
+ var host = (_baseRenderer$props = baseRenderer.props) === null || _baseRenderer$props === void 0 ? void 0 : _baseRenderer$props.__host;
112
+ var curDocumentId = (_baseRenderer$props$d = (_baseRenderer$props2 = baseRenderer.props) === null || _baseRenderer$props2 === void 0 ? void 0 : _baseRenderer$props2.documentId) !== null && _baseRenderer$props$d !== void 0 ? _baseRenderer$props$d : '';
113
+ var curDevice = (_baseRenderer$props$d2 = (_baseRenderer$props3 = baseRenderer.props) === null || _baseRenderer$props3 === void 0 ? void 0 : _baseRenderer$props3.device) !== null && _baseRenderer$props$d2 !== void 0 ? _baseRenderer$props$d2 : '';
114
+ var getNode = (_baseRenderer$props4 = baseRenderer.props) === null || _baseRenderer$props4 === void 0 ? void 0 : _baseRenderer$props4.getNode;
115
+ var container = (_baseRenderer$props5 = baseRenderer.props) === null || _baseRenderer$props5 === void 0 ? void 0 : _baseRenderer$props5.__container;
116
+ var setSchemaChangedSymbol = (_baseRenderer$props6 = baseRenderer.props) === null || _baseRenderer$props6 === void 0 ? void 0 : _baseRenderer$props6.setSchemaChangedSymbol;
117
+ var editor = host === null || host === void 0 ? void 0 : (_host$designer = host.designer) === null || _host$designer === void 0 ? void 0 : _host$designer.editor;
118
+ var runtime = _adapter["default"].getRuntime();
119
+ var forwardRef = runtime.forwardRef,
120
+ createElement = runtime.createElement;
121
+ var Component = runtime.Component;
122
+ var componentCacheId = schema.id;
123
+ if (!cache || curDocumentId && curDocumentId !== cache.documentId || curDevice && curDevice !== cache.device) {
124
+ var _cache;
125
+ (_cache = cache) === null || _cache === void 0 ? void 0 : _cache.event.forEach(function (event) {
126
+ var _event$dispose;
127
+ (_event$dispose = event.dispose) === null || _event$dispose === void 0 ? void 0 : _event$dispose.forEach(function (disposeFn) {
128
+ return disposeFn && disposeFn();
129
+ });
130
+ });
131
+ cache = new LeafCache(curDocumentId, curDevice);
132
+ }
133
+ if (!(0, _lowcodeUtils.isReactComponent)(Comp)) {
134
+ _logger["default"].error(schema.componentName + " component may be has errors: ", Comp);
135
+ }
136
+ initRerenderEvent({
137
+ schema: schema,
138
+ __debug: __debug,
139
+ container: container,
140
+ getNode: getNode
141
+ });
142
+ if (curDocumentId && cache.component.has(componentCacheId) && cache.component.get(componentCacheId).Comp === Comp) {
143
+ return cache.component.get(componentCacheId).LeafWrapper;
144
+ }
145
+ var LeafHoc = /*#__PURE__*/function (_Component) {
146
+ function LeafHoc(props, context) {
147
+ var _this;
148
+ _this = _Component.call(this, props, context) || this;
149
+ // 监听以下事件,当变化时更新自己
150
+ _this.recordInfo = {};
151
+ _this.curEventLeaf = void 0;
152
+ _this.disposeFunctions = [];
153
+ _this.__component_tag = 'leafWrapper';
154
+ _this.renderUnitInfo = void 0;
155
+ // 最小渲染单元做防抖处理
156
+ _this.makeUnitRenderDebounced = (0, _common.debounce)(function () {
157
+ var _this$leaf, _this$leaf$export, _this$leaf2;
158
+ _this.beforeRender(RerenderType.MinimalRenderUnit);
159
+ var schema = (_this$leaf = _this.leaf) === null || _this$leaf === void 0 ? void 0 : (_this$leaf$export = _this$leaf["export"]) === null || _this$leaf$export === void 0 ? void 0 : _this$leaf$export.call(_this$leaf, _lowcodeTypes.IPublicEnumTransformStage.Render);
160
+ if (!schema) {
161
+ return;
162
+ }
163
+ var nextProps = getProps(schema, scope, Comp, componentInfo);
164
+ var children = getChildren(schema, scope, Comp);
165
+ var nextState = {
166
+ nodeProps: nextProps,
167
+ nodeChildren: children,
168
+ childrenInState: true
169
+ };
170
+ if ('children' in nextProps) {
171
+ nextState.nodeChildren = nextProps.children;
172
+ }
173
+ __debug(((_this$leaf2 = _this.leaf) === null || _this$leaf2 === void 0 ? void 0 : _this$leaf2.componentName) + "(" + _this.props.componentId + ") MinimalRenderUnit Render!");
174
+ _this.setState(nextState);
175
+ }, 20);
176
+ _this.recordTime = function () {
177
+ var _host$designer2, _host$designer2$curre, _host$designer2$curre2, _this$recordInfo$node, _this$leaf3;
178
+ if (!_this.recordInfo.startTime) {
179
+ return;
180
+ }
181
+ var endTime = Date.now();
182
+ var nodeCount = host === null || host === void 0 ? void 0 : (_host$designer2 = host.designer) === null || _host$designer2 === void 0 ? void 0 : (_host$designer2$curre = _host$designer2.currentDocument) === null || _host$designer2$curre === void 0 ? void 0 : (_host$designer2$curre2 = _host$designer2$curre.getNodeCount) === null || _host$designer2$curre2 === void 0 ? void 0 : _host$designer2$curre2.call(_host$designer2$curre);
183
+ var componentName = ((_this$recordInfo$node = _this.recordInfo.node) === null || _this$recordInfo$node === void 0 ? void 0 : _this$recordInfo$node.componentName) || ((_this$leaf3 = _this.leaf) === null || _this$leaf3 === void 0 ? void 0 : _this$leaf3.componentName) || 'UnknownComponent';
184
+ editor === null || editor === void 0 ? void 0 : editor.eventBus.emit(_lowcodeTypes.GlobalEvent.Node.Rerender, {
185
+ componentName: componentName,
186
+ time: endTime - _this.recordInfo.startTime,
187
+ type: _this.recordInfo.type,
188
+ nodeCount: nodeCount
189
+ });
190
+ _this.recordInfo.startTime = null;
191
+ };
192
+ _this.makeUnitRender = function () {
193
+ _this.makeUnitRenderDebounced();
194
+ };
195
+ __debug(schema.componentName + "[" + _this.props.componentId + "] leaf render in SimulatorRendererView");
196
+ clearRerenderEvent(componentCacheId);
197
+ _this.curEventLeaf = _this.leaf;
198
+ cache.ref.set(componentCacheId, {
199
+ makeUnitRender: _this.makeUnitRender
200
+ });
201
+ var cacheState = cache.state.get(componentCacheId);
202
+ if (!cacheState || cacheState.__tag !== props.__tag) {
203
+ cacheState = _this.getDefaultState(props);
204
+ }
205
+ _this.state = cacheState;
206
+ return _this;
207
+ }
208
+ (0, _inheritsLoose2["default"])(LeafHoc, _Component);
209
+ var _proto = LeafHoc.prototype;
210
+ _proto.componentDidUpdate = function componentDidUpdate() {
211
+ this.recordTime();
212
+ };
213
+ _proto.componentDidMount = function componentDidMount() {
214
+ var _leaf = this.leaf;
215
+ this.initOnPropsChangeEvent(_leaf);
216
+ this.initOnChildrenChangeEvent(_leaf);
217
+ this.initOnVisibleChangeEvent(_leaf);
218
+ this.recordTime();
219
+ };
220
+ _proto.getDefaultState = function getDefaultState(nextProps) {
221
+ var _this$leaf4, _this$leaf4$export;
222
+ var _ref3 = nextProps.__inner__ || ((_this$leaf4 = this.leaf) === null || _this$leaf4 === void 0 ? void 0 : (_this$leaf4$export = _this$leaf4["export"]) === null || _this$leaf4$export === void 0 ? void 0 : _this$leaf4$export.call(_this$leaf4, _lowcodeTypes.IPublicEnumTransformStage.Render)) || {},
223
+ _ref3$hidden = _ref3.hidden,
224
+ hidden = _ref3$hidden === void 0 ? false : _ref3$hidden,
225
+ _ref3$condition = _ref3.condition,
226
+ condition = _ref3$condition === void 0 ? true : _ref3$condition;
227
+ return {
228
+ nodeChildren: null,
229
+ childrenInState: false,
230
+ visible: !hidden,
231
+ condition: __parseData === null || __parseData === void 0 ? void 0 : __parseData(condition, scope),
232
+ nodeCacheProps: {},
233
+ nodeProps: {}
234
+ };
235
+ };
236
+ _proto.setState = function setState(state) {
237
+ cache.state.set(componentCacheId, (0, _extends2["default"])({}, this.state, state, {
238
+ __tag: this.props.__tag
239
+ }));
240
+ _Component.prototype.setState.call(this, state);
241
+ }
242
+
243
+ /** 由于内部属性变化,在触发渲染前,会执行该函数 */;
244
+ _proto.beforeRender = function beforeRender(type, node) {
245
+ this.recordInfo.startTime = Date.now();
246
+ this.recordInfo.type = type;
247
+ this.recordInfo.node = node;
248
+ setSchemaChangedSymbol === null || setSchemaChangedSymbol === void 0 ? void 0 : setSchemaChangedSymbol(true);
249
+ };
250
+ _proto.judgeMiniUnitRender = function judgeMiniUnitRender() {
251
+ var _this$leaf5;
252
+ if (!this.renderUnitInfo) {
253
+ this.getRenderUnitInfo();
254
+ }
255
+ var renderUnitInfo = this.renderUnitInfo || {
256
+ singleRender: true
257
+ };
258
+ if (renderUnitInfo.singleRender) {
259
+ return;
260
+ }
261
+ var ref = cache.ref.get(renderUnitInfo.minimalUnitId);
262
+ if (!ref) {
263
+ __debug('Cant find minimalRenderUnit ref! This make rerender!');
264
+ container === null || container === void 0 ? void 0 : container.rerender();
265
+ return;
266
+ }
267
+ __debug(((_this$leaf5 = this.leaf) === null || _this$leaf5 === void 0 ? void 0 : _this$leaf5.componentName) + "(" + this.props.componentId + ") need render, make its minimalRenderUnit " + renderUnitInfo.minimalUnitName + "(" + renderUnitInfo.minimalUnitId + ")");
268
+ ref.makeUnitRender();
269
+ };
270
+ _proto.getRenderUnitInfo = function getRenderUnitInfo(leaf) {
271
+ if (leaf === void 0) {
272
+ leaf = this.leaf;
273
+ }
274
+ // leaf 在低代码组件中存在 mock 的情况,退出最小渲染单元判断
275
+ if (!leaf || typeof leaf.isRoot !== 'function') {
276
+ return;
277
+ }
278
+ if (leaf.isRootNode) {
279
+ this.renderUnitInfo = (0, _extends2["default"])({
280
+ singleRender: true
281
+ }, this.renderUnitInfo || {});
282
+ }
283
+ if (leaf.componentMeta.isMinimalRenderUnit) {
284
+ this.renderUnitInfo = {
285
+ minimalUnitId: leaf.id,
286
+ minimalUnitName: leaf.componentName,
287
+ singleRender: false
288
+ };
289
+ }
290
+ if (leaf.hasLoop()) {
291
+ var _leaf2, _leaf2$parent, _leaf3, _leaf3$parent;
292
+ // 含有循环配置的元素,父元素是最小渲染单元
293
+ this.renderUnitInfo = {
294
+ minimalUnitId: (_leaf2 = leaf) === null || _leaf2 === void 0 ? void 0 : (_leaf2$parent = _leaf2.parent) === null || _leaf2$parent === void 0 ? void 0 : _leaf2$parent.id,
295
+ minimalUnitName: (_leaf3 = leaf) === null || _leaf3 === void 0 ? void 0 : (_leaf3$parent = _leaf3.parent) === null || _leaf3$parent === void 0 ? void 0 : _leaf3$parent.componentName,
296
+ singleRender: false
297
+ };
298
+ }
299
+ if (leaf.parent) {
300
+ this.getRenderUnitInfo(leaf.parent);
301
+ }
302
+ };
303
+ _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {
304
+ var componentId = nextProps.componentId;
305
+ if (nextProps.__tag === this.props.__tag) {
306
+ return null;
307
+ }
308
+ var _leaf = getNode === null || getNode === void 0 ? void 0 : getNode(componentId);
309
+ if (_leaf && this.curEventLeaf && _leaf !== this.curEventLeaf) {
310
+ this.disposeFunctions.forEach(function (fn) {
311
+ return fn();
312
+ });
313
+ this.disposeFunctions = [];
314
+ this.initOnChildrenChangeEvent(_leaf);
315
+ this.initOnPropsChangeEvent(_leaf);
316
+ this.initOnVisibleChangeEvent(_leaf);
317
+ this.curEventLeaf = _leaf;
318
+ }
319
+ var _this$getDefaultState = this.getDefaultState(nextProps),
320
+ visible = _this$getDefaultState.visible,
321
+ resetState = (0, _objectWithoutPropertiesLoose2["default"])(_this$getDefaultState, _excluded);
322
+ this.setState(resetState);
323
+ }
324
+
325
+ /** 监听参数变化 */;
326
+ _proto.initOnPropsChangeEvent = function initOnPropsChangeEvent(leaf) {
327
+ var _this2 = this,
328
+ _leaf5,
329
+ _leaf5$onPropChange;
330
+ if (leaf === void 0) {
331
+ leaf = this.leaf;
332
+ }
333
+ var handlePropsChange = (0, _common.debounce)(function (propChangeInfo) {
334
+ var _node$export, _leaf4;
335
+ var key = propChangeInfo.key,
336
+ _propChangeInfo$newVa = propChangeInfo.newValue,
337
+ newValue = _propChangeInfo$newVa === void 0 ? null : _propChangeInfo$newVa;
338
+ var node = leaf;
339
+ if (key === '___condition___') {
340
+ var _this2$leaf;
341
+ var _ref4 = ((_this2$leaf = _this2.leaf) === null || _this2$leaf === void 0 ? void 0 : _this2$leaf["export"](_lowcodeTypes.IPublicEnumTransformStage.Render)) || {},
342
+ _ref4$condition = _ref4.condition,
343
+ condition = _ref4$condition === void 0 ? true : _ref4$condition;
344
+ var conditionValue = __parseData === null || __parseData === void 0 ? void 0 : __parseData(condition, scope);
345
+ __debug("key is ___condition___, change condition value to [" + condition + "]");
346
+ // 条件表达式改变
347
+ _this2.setState({
348
+ condition: conditionValue
349
+ });
350
+ return;
351
+ }
352
+
353
+ // 如果循坏条件变化,从根节点重新渲染
354
+ // 目前多层循坏无法判断需要从哪一层开始渲染,故先粗暴解决
355
+ if (key === '___loop___') {
356
+ __debug('key is ___loop___, render a page!');
357
+ container === null || container === void 0 ? void 0 : container.rerender();
358
+ // 由于 scope 变化,需要清空缓存,使用新的 scope
359
+ cache.component["delete"](componentCacheId);
360
+ return;
361
+ }
362
+ _this2.beforeRender(RerenderType.PropsChanged);
363
+ var state = _this2.state;
364
+ var nodeCacheProps = state.nodeCacheProps;
365
+ var nodeProps = getProps(node === null || node === void 0 ? void 0 : (_node$export = node["export"]) === null || _node$export === void 0 ? void 0 : _node$export.call(node, _lowcodeTypes.IPublicEnumTransformStage.Render), scope, Comp, componentInfo);
366
+ if (key && !(key in nodeProps) && key in _this2.props) {
367
+ // 当 key 在 this.props 中时,且不存在在计算值中,需要用 newValue 覆盖掉 this.props 的取值
368
+ nodeCacheProps[key] = newValue;
369
+ }
370
+ __debug(((_leaf4 = leaf) === null || _leaf4 === void 0 ? void 0 : _leaf4.componentName) + "[" + _this2.props.componentId + "] component trigger onPropsChange!", nodeProps, nodeCacheProps, key, newValue);
371
+ _this2.setState('children' in nodeProps ? {
372
+ nodeChildren: nodeProps.children,
373
+ nodeProps: nodeProps,
374
+ childrenInState: true,
375
+ nodeCacheProps: nodeCacheProps
376
+ } : {
377
+ nodeProps: nodeProps,
378
+ nodeCacheProps: nodeCacheProps
379
+ });
380
+ _this2.judgeMiniUnitRender();
381
+ });
382
+ var dispose = (_leaf5 = leaf) === null || _leaf5 === void 0 ? void 0 : (_leaf5$onPropChange = _leaf5.onPropChange) === null || _leaf5$onPropChange === void 0 ? void 0 : _leaf5$onPropChange.call(_leaf5, function (propChangeInfo) {
383
+ if (!_this2.autoRepaintNode) {
384
+ return;
385
+ }
386
+ handlePropsChange(propChangeInfo);
387
+ });
388
+ dispose && this.disposeFunctions.push(dispose);
389
+ }
390
+
391
+ /**
392
+ * 监听显隐变化
393
+ */;
394
+ _proto.initOnVisibleChangeEvent = function initOnVisibleChangeEvent(leaf) {
395
+ var _leaf6,
396
+ _leaf6$onVisibleChang,
397
+ _this3 = this;
398
+ if (leaf === void 0) {
399
+ leaf = this.leaf;
400
+ }
401
+ var dispose = (_leaf6 = leaf) === null || _leaf6 === void 0 ? void 0 : (_leaf6$onVisibleChang = _leaf6.onVisibleChange) === null || _leaf6$onVisibleChang === void 0 ? void 0 : _leaf6$onVisibleChang.call(_leaf6, function (flag) {
402
+ var _leaf7;
403
+ if (!_this3.autoRepaintNode) {
404
+ return;
405
+ }
406
+ if (_this3.state.visible === flag) {
407
+ return;
408
+ }
409
+ __debug(((_leaf7 = leaf) === null || _leaf7 === void 0 ? void 0 : _leaf7.componentName) + "[" + _this3.props.componentId + "] component trigger onVisibleChange(" + flag + ") event");
410
+ _this3.beforeRender(RerenderType.VisibleChanged);
411
+ _this3.setState({
412
+ visible: flag
413
+ });
414
+ _this3.judgeMiniUnitRender();
415
+ });
416
+ dispose && this.disposeFunctions.push(dispose);
417
+ }
418
+
419
+ /**
420
+ * 监听子元素变化(拖拽,删除...)
421
+ */;
422
+ _proto.initOnChildrenChangeEvent = function initOnChildrenChangeEvent(leaf) {
423
+ var _leaf8,
424
+ _leaf8$onChildrenChan,
425
+ _this4 = this;
426
+ if (leaf === void 0) {
427
+ leaf = this.leaf;
428
+ }
429
+ var dispose = (_leaf8 = leaf) === null || _leaf8 === void 0 ? void 0 : (_leaf8$onChildrenChan = _leaf8.onChildrenChange) === null || _leaf8$onChildrenChan === void 0 ? void 0 : _leaf8$onChildrenChan.call(_leaf8, function (param) {
430
+ var _leaf9, _leaf9$export;
431
+ if (!_this4.autoRepaintNode) {
432
+ return;
433
+ }
434
+ var _ref5 = param || {},
435
+ type = _ref5.type,
436
+ node = _ref5.node;
437
+ _this4.beforeRender(RerenderType.ChildChanged + "-" + type, node);
438
+ // TODO: 缓存同级其他元素的 children。
439
+ // 缓存二级 children Next 查询筛选组件有问题
440
+ // 缓存一级 children Next Tab 组件有问题
441
+ var nextChild = getChildren((_leaf9 = leaf) === null || _leaf9 === void 0 ? void 0 : (_leaf9$export = _leaf9["export"]) === null || _leaf9$export === void 0 ? void 0 : _leaf9$export.call(_leaf9, _lowcodeTypes.IPublicEnumTransformStage.Render), scope, Comp);
442
+ __debug(schema.componentName + "[" + _this4.props.componentId + "] component trigger onChildrenChange event", nextChild);
443
+ _this4.setState({
444
+ nodeChildren: nextChild,
445
+ childrenInState: true
446
+ });
447
+ _this4.judgeMiniUnitRender();
448
+ });
449
+ dispose && this.disposeFunctions.push(dispose);
450
+ };
451
+ _proto.componentWillUnmount = function componentWillUnmount() {
452
+ this.disposeFunctions.forEach(function (fn) {
453
+ return fn();
454
+ });
455
+ };
456
+ _proto.render = function render() {
457
+ if (!this.state.visible || !this.state.condition) {
458
+ return null;
459
+ }
460
+ var _this$props = this.props,
461
+ forwardedRef = _this$props.forwardedRef,
462
+ rest = (0, _objectWithoutPropertiesLoose2["default"])(_this$props, _excluded2);
463
+ var compProps = (0, _extends2["default"])({}, rest, this.state.nodeCacheProps || {}, this.state.nodeProps || {}, {
464
+ children: [],
465
+ __id: this.props.componentId,
466
+ ref: forwardedRef
467
+ });
468
+ delete compProps.__inner__;
469
+ if (this.hasChildren) {
470
+ return engine.createElement(Comp, compProps, this.children);
471
+ }
472
+ return engine.createElement(Comp, compProps);
473
+ };
474
+ return (0, _createClass2["default"])(LeafHoc, [{
475
+ key: "autoRepaintNode",
476
+ get: function get() {
477
+ return container === null || container === void 0 ? void 0 : container.autoRepaintNode;
478
+ }
479
+ }, {
480
+ key: "hasChildren",
481
+ get: function get() {
482
+ if (!this.state.childrenInState) {
483
+ return 'children' in this.props;
484
+ }
485
+ return true;
486
+ }
487
+ }, {
488
+ key: "children",
489
+ get: function get() {
490
+ if (this.state.childrenInState) {
491
+ return this.state.nodeChildren;
492
+ }
493
+ if (this.props.children && !Array.isArray(this.props.children)) {
494
+ return [this.props.children];
495
+ }
496
+ if (this.props.children && this.props.children.length) {
497
+ return this.props.children;
498
+ }
499
+ return this.props.children;
500
+ }
501
+ }, {
502
+ key: "leaf",
503
+ get: function get() {
504
+ var _this$props$_leaf;
505
+ if ((_this$props$_leaf = this.props._leaf) !== null && _this$props$_leaf !== void 0 && _this$props$_leaf.isMock) {
506
+ // 低代码组件作为一个整体更新,其内部的组件不需要监听相关事件
507
+ return undefined;
508
+ }
509
+ return getNode === null || getNode === void 0 ? void 0 : getNode(componentCacheId);
510
+ }
511
+ }]);
512
+ }(Component);
513
+ LeafHoc.displayName = schema.componentName;
514
+ var LeafWrapper = forwardRef(function (props, ref) {
515
+ return createElement(LeafHoc, (0, _extends2["default"])({}, props, {
516
+ forwardedRef: ref
517
+ }));
518
+ });
519
+ LeafWrapper = (0, _lowcodeUtils.cloneEnumerableProperty)(LeafWrapper, Comp);
520
+ LeafWrapper.displayName = Comp.displayName;
521
+ cache.component.set(componentCacheId, {
522
+ LeafWrapper: LeafWrapper,
523
+ Comp: Comp
524
+ });
525
+ return LeafWrapper;
526
+ }
package/lib/index.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import adapter from './adapter';
2
+ import contextFactory from './context';
3
+ export { adapter, contextFactory };
4
+ export * from './renderer';
5
+ export * as types from './types';
6
+ export * as utils from './utils';
7
+ export * from './hoc';
package/lib/index.js ADDED
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ var _exportNames = {
6
+ adapter: true,
7
+ contextFactory: true,
8
+ types: true,
9
+ utils: true
10
+ };
11
+ exports.utils = exports.types = void 0;
12
+ var _adapter = _interopRequireDefault(require("./adapter"));
13
+ exports.adapter = _adapter["default"];
14
+ var _context = _interopRequireDefault(require("./context"));
15
+ exports.contextFactory = _context["default"];
16
+ var _renderer = require("./renderer");
17
+ Object.keys(_renderer).forEach(function (key) {
18
+ if (key === "default" || key === "__esModule") return;
19
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
20
+ if (key in exports && exports[key] === _renderer[key]) return;
21
+ exports[key] = _renderer[key];
22
+ });
23
+ var _types = _interopRequireWildcard(require("./types"));
24
+ exports.types = _types;
25
+ var _utils = _interopRequireWildcard(require("./utils"));
26
+ exports.utils = _utils;
27
+ var _hoc = require("./hoc");
28
+ Object.keys(_hoc).forEach(function (key) {
29
+ if (key === "default" || key === "__esModule") return;
30
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
31
+ if (key in exports && exports[key] === _hoc[key]) return;
32
+ exports[key] = _hoc[key];
33
+ });
34
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
@@ -0,0 +1,2 @@
1
+ import { IBaseRenderComponent } from '../types';
2
+ export default function addonRendererFactory(): IBaseRenderComponent;