ice-render 1.4.7 → 1.4.8

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.
@@ -371,6 +371,21 @@ declare abstract class ICEComponent extends ICEEventTarget {
371
371
  * 默认为 false(普通容器/叶子组件的子节点是「真数据」,必须序列化)。
372
372
  */
373
373
  hasDerivedChildren(): boolean;
374
+ /**
375
+ * 复合组件里**需要进文档的真实子节点**(可选实现)。
376
+ *
377
+ * 背景:`hasDerivedChildren() === true` 表示「子节点都是派生结果、不进文档」,
378
+ * 但有一类组件**既是复合组件、又是容器** —— 典型是流程图 / BPMN 的节点与池:
379
+ * 它自己按 state 派生形状(内框 / 角标 / 标题),同时又真的装着子节点(泳道、泳道里的节点)。
380
+ * 只声明 `hasDerivedChildren()` 的话,序列化会把**真实子节点也一起跳过**,
381
+ * 于是 `serialize() → load()` 之后池里的泳道和节点整套消失(实测:3 个元素只剩 1 个)。
382
+ *
383
+ * 实现这个方法的组件要返回「真实子节点」(通常 = `childNodes` 减去派生部件),
384
+ * 引擎据此只序列化这些子节点;反序列化时构造函数仍会重建派生部件,不会重复。
385
+ *
386
+ * 不实现时行为**与以前完全一致**(复合组件一个子节点都不进文档)—— 默认不变,属增量能力。
387
+ */
388
+ getSerializableChildren(): ICEComponent[];
374
389
  /**
375
390
  * 获取组件的最小包围盒,此盒子的变换矩阵与组件自身完全相同。
376
391
  * 此方法需要在 render() 之后调用,组件没有渲染时无法计算最小包围盒。
@@ -371,6 +371,21 @@ declare abstract class ICEComponent extends ICEEventTarget {
371
371
  * 默认为 false(普通容器/叶子组件的子节点是「真数据」,必须序列化)。
372
372
  */
373
373
  hasDerivedChildren(): boolean;
374
+ /**
375
+ * 复合组件里**需要进文档的真实子节点**(可选实现)。
376
+ *
377
+ * 背景:`hasDerivedChildren() === true` 表示「子节点都是派生结果、不进文档」,
378
+ * 但有一类组件**既是复合组件、又是容器** —— 典型是流程图 / BPMN 的节点与池:
379
+ * 它自己按 state 派生形状(内框 / 角标 / 标题),同时又真的装着子节点(泳道、泳道里的节点)。
380
+ * 只声明 `hasDerivedChildren()` 的话,序列化会把**真实子节点也一起跳过**,
381
+ * 于是 `serialize() → load()` 之后池里的泳道和节点整套消失(实测:3 个元素只剩 1 个)。
382
+ *
383
+ * 实现这个方法的组件要返回「真实子节点」(通常 = `childNodes` 减去派生部件),
384
+ * 引擎据此只序列化这些子节点;反序列化时构造函数仍会重建派生部件,不会重复。
385
+ *
386
+ * 不实现时行为**与以前完全一致**(复合组件一个子节点都不进文档)—— 默认不变,属增量能力。
387
+ */
388
+ getSerializableChildren(): ICEComponent[];
374
389
  /**
375
390
  * 获取组件的最小包围盒,此盒子的变换矩阵与组件自身完全相同。
376
391
  * 此方法需要在 render() 之后调用,组件没有渲染时无法计算最小包围盒。
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "author": "大漠穷秋",
3
3
  "name": "ice-render",
4
- "version": "1.4.7",
4
+ "version": "1.4.8",
5
5
  "description": "A canvas engine for interactive graphics.",
6
6
  "repository": {
7
7
  "type": "git",