ice-entity-designer 0.12.2 → 0.12.3

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.
@@ -59,7 +59,9 @@ export declare class WaterPipe extends FlowEdge {
59
59
  }
60
60
  export default class WaterProcessDesigner extends FlowDesigner {
61
61
  constructor(ice: any);
62
+ dispose(): void;
62
63
  get nodes(): any[];
64
+ private __portOccupancyHandler;
63
65
  /**
64
66
  * 选中判据:水务的符号不是 `FlowNode` 的分支(`WaterSymbol extends ICEGroup`),
65
67
  * 所以必须在这里把它(与管线)补进"可点选"的集合 —— 否则点符号选不中,
@@ -73,6 +75,27 @@ export default class WaterProcessDesigner extends FlowDesigner {
73
75
  createSymbol(kind: WaterSymbolKind, props?: any): any;
74
76
  /** 建一段管线(要标介质;管径缺了会给 warning) */
75
77
  createPipe(props?: any): any;
78
+ /**
79
+ * 端口占用 → 位号 / 名称侧移(见 `water_shapes.ts` 的 `syncShape()`)。
80
+ *
81
+ * **边是唯一真相**:管线两端写着 `links.start/end = {id, position}`,所以这里整体重算一遍,
82
+ * 只把**变了**的推给符号(`setOccupiedPorts()` 自己比对,没变不重建)。
83
+ *
84
+ * 为什么不让符号自己问引擎:`syncShape()` 在**构造期**就会跑(那时还没有边),
85
+ * 而且符号拿不到"边变了"的通知 —— 边在设计器手里,由它推最省事也最准。
86
+ *
87
+ * 谁需要调用:增删管线与载入快照都由本类内部调了;**交互式改接**(把端点拖到另一个端口)
88
+ * 由构造期挂的 `mouseup` 兜住;宿主自己搬动组件树之后也可以显式调一次。
89
+ */
90
+ refreshPortOccupancy(): void;
91
+ /**
92
+ * 删除之后重算端口占用:基类的 `remove()` 会**级联删掉**挂在被删图元上的连线,
93
+ * 所以这里必须整体重算,而不是只盯"被删的那条边"。
94
+ */
95
+ remove(id: string): void;
96
+ clear(): void;
97
+ /** 载入快照之后重算:快照里不带端口占用(那是派生数据,不进 codec 的完整性约束)。 */
98
+ load(json: string): any;
76
99
  /** 阀门开 / 闭(运行工况:关阀 → 流径断开) */
77
100
  setValveState(id: string, valveState: WaterValveState): any;
78
101
  /**
@@ -59,7 +59,9 @@ export declare class WaterPipe extends FlowEdge {
59
59
  }
60
60
  export default class WaterProcessDesigner extends FlowDesigner {
61
61
  constructor(ice: any);
62
+ dispose(): void;
62
63
  get nodes(): any[];
64
+ private __portOccupancyHandler;
63
65
  /**
64
66
  * 选中判据:水务的符号不是 `FlowNode` 的分支(`WaterSymbol extends ICEGroup`),
65
67
  * 所以必须在这里把它(与管线)补进"可点选"的集合 —— 否则点符号选不中,
@@ -73,6 +75,27 @@ export default class WaterProcessDesigner extends FlowDesigner {
73
75
  createSymbol(kind: WaterSymbolKind, props?: any): any;
74
76
  /** 建一段管线(要标介质;管径缺了会给 warning) */
75
77
  createPipe(props?: any): any;
78
+ /**
79
+ * 端口占用 → 位号 / 名称侧移(见 `water_shapes.ts` 的 `syncShape()`)。
80
+ *
81
+ * **边是唯一真相**:管线两端写着 `links.start/end = {id, position}`,所以这里整体重算一遍,
82
+ * 只把**变了**的推给符号(`setOccupiedPorts()` 自己比对,没变不重建)。
83
+ *
84
+ * 为什么不让符号自己问引擎:`syncShape()` 在**构造期**就会跑(那时还没有边),
85
+ * 而且符号拿不到"边变了"的通知 —— 边在设计器手里,由它推最省事也最准。
86
+ *
87
+ * 谁需要调用:增删管线与载入快照都由本类内部调了;**交互式改接**(把端点拖到另一个端口)
88
+ * 由构造期挂的 `mouseup` 兜住;宿主自己搬动组件树之后也可以显式调一次。
89
+ */
90
+ refreshPortOccupancy(): void;
91
+ /**
92
+ * 删除之后重算端口占用:基类的 `remove()` 会**级联删掉**挂在被删图元上的连线,
93
+ * 所以这里必须整体重算,而不是只盯"被删的那条边"。
94
+ */
95
+ remove(id: string): void;
96
+ clear(): void;
97
+ /** 载入快照之后重算:快照里不带端口占用(那是派生数据,不进 codec 的完整性约束)。 */
98
+ load(json: string): any;
76
99
  /** 阀门开 / 闭(运行工况:关阀 → 流径断开) */
77
100
  setValveState(id: string, valveState: WaterValveState): any;
78
101
  /**
@@ -81,6 +81,23 @@ export declare const WATER_STYLE: {
81
81
  /** 明确停用/旁通时的颜色 */
82
82
  idleColor: string;
83
83
  };
84
+ /**
85
+ * 标签与端口柱之间的最小间隙(世界像素)。
86
+ *
87
+ * 端口(`T` / `B`)落在形状盒的**边中点**上,而位号 / 名称也居中画在那条中轴线上 ——
88
+ * 于是"从上 / 下进线"的那一小段必然扫过文字(见 `syncShape()` 里的说明)。
89
+ * 8px 是让文字避开那条线(连同箭头)的余量,与线宽 / 箭头半宽同量级。
90
+ */
91
+ export declare const WATER_LABEL_PORT_GAP = 8;
92
+ /**
93
+ * 估算一段文字占多宽(世界像素,不给 ctx 也能算)。
94
+ *
95
+ * 为什么要自己估:`syncShape()` 在**构造期**就会跑,那时还没有画布上下文;
96
+ * 而"标签要让开端口柱"这件事只需要一个够用的宽度(宁可略宽,不要压住线)。
97
+ * 口径:CJK / 全角按 1 个字宽算,其余(拉丁、数字、标点)按 0.55 个字宽 ——
98
+ * 与引擎自己的降级估算(`label.length * fontSize`)同思路,只是更贴近实际字宽。
99
+ */
100
+ export declare function estimateWaterTextWidth(text: string, fontSize: number): number;
84
101
  /** 污泥线单元(配色与校验都要用) */
85
102
  export declare const WATER_SLUDGE_KINDS: WaterSymbolKind[];
86
103
  export type WaterValveState = 'open' | 'closed';
@@ -116,7 +133,19 @@ export default class WaterSymbol extends ICEGroup {
116
133
  */
117
134
  private __originX;
118
135
  private __originY;
136
+ /**
137
+ * 本符号**被连线占用**的端口(`T` / `R` / `B` / `L` / `C`)。
138
+ *
139
+ * 只影响位号 / 名称的排版(让开端口柱,见 `syncShape()`),**不进 state** ——
140
+ * 它是从边推出来的派生数据,进了 state 反而要过 codec 那套完整性约束与快照往返。
141
+ * 由 `WaterProcessDesigner.__syncPortOccupancy()` 在增删连线 / 载入快照之后推进来。
142
+ */
143
+ private occupiedPorts;
119
144
  hasDerivedChildren(): boolean;
145
+ /** 设计器把"这个符号的哪几条边上有连线"推过来;变了才重建(避免无谓重绘)。 */
146
+ setOccupiedPorts(ports: string[]): void;
147
+ /** 当前被占用的端口(测试 / 属性面板用)。 */
148
+ getOccupiedPorts(): string[];
120
149
  getSerializableChildren(): any[];
121
150
  constructor(props?: any);
122
151
  protected static arrangeParam(props?: any): any;
@@ -81,6 +81,23 @@ export declare const WATER_STYLE: {
81
81
  /** 明确停用/旁通时的颜色 */
82
82
  idleColor: string;
83
83
  };
84
+ /**
85
+ * 标签与端口柱之间的最小间隙(世界像素)。
86
+ *
87
+ * 端口(`T` / `B`)落在形状盒的**边中点**上,而位号 / 名称也居中画在那条中轴线上 ——
88
+ * 于是"从上 / 下进线"的那一小段必然扫过文字(见 `syncShape()` 里的说明)。
89
+ * 8px 是让文字避开那条线(连同箭头)的余量,与线宽 / 箭头半宽同量级。
90
+ */
91
+ export declare const WATER_LABEL_PORT_GAP = 8;
92
+ /**
93
+ * 估算一段文字占多宽(世界像素,不给 ctx 也能算)。
94
+ *
95
+ * 为什么要自己估:`syncShape()` 在**构造期**就会跑,那时还没有画布上下文;
96
+ * 而"标签要让开端口柱"这件事只需要一个够用的宽度(宁可略宽,不要压住线)。
97
+ * 口径:CJK / 全角按 1 个字宽算,其余(拉丁、数字、标点)按 0.55 个字宽 ——
98
+ * 与引擎自己的降级估算(`label.length * fontSize`)同思路,只是更贴近实际字宽。
99
+ */
100
+ export declare function estimateWaterTextWidth(text: string, fontSize: number): number;
84
101
  /** 污泥线单元(配色与校验都要用) */
85
102
  export declare const WATER_SLUDGE_KINDS: WaterSymbolKind[];
86
103
  export type WaterValveState = 'open' | 'closed';
@@ -116,7 +133,19 @@ export default class WaterSymbol extends ICEGroup {
116
133
  */
117
134
  private __originX;
118
135
  private __originY;
136
+ /**
137
+ * 本符号**被连线占用**的端口(`T` / `R` / `B` / `L` / `C`)。
138
+ *
139
+ * 只影响位号 / 名称的排版(让开端口柱,见 `syncShape()`),**不进 state** ——
140
+ * 它是从边推出来的派生数据,进了 state 反而要过 codec 那套完整性约束与快照往返。
141
+ * 由 `WaterProcessDesigner.__syncPortOccupancy()` 在增删连线 / 载入快照之后推进来。
142
+ */
143
+ private occupiedPorts;
119
144
  hasDerivedChildren(): boolean;
145
+ /** 设计器把"这个符号的哪几条边上有连线"推过来;变了才重建(避免无谓重绘)。 */
146
+ setOccupiedPorts(ports: string[]): void;
147
+ /** 当前被占用的端口(测试 / 属性面板用)。 */
148
+ getOccupiedPorts(): string[];
120
149
  getSerializableChildren(): any[];
121
150
  constructor(props?: any);
122
151
  protected static arrangeParam(props?: any): any;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "author": "大漠穷秋",
3
3
  "name": "ice-entity-designer",
4
- "version": "0.12.2",
4
+ "version": "0.12.3",
5
5
  "description": "An entity designer based on ice-render.",
6
6
  "repository": {
7
7
  "type": "git",
@@ -37,7 +37,8 @@
37
37
  "files": [
38
38
  "dist",
39
39
  "react.js",
40
- "react.d.ts"
40
+ "react.d.ts",
41
+ "CHANGELOG.md"
41
42
  ],
42
43
  "scripts": {
43
44
  "start": "rollup -c -w --environment NODE_ENV:development",