@flowgram.ai/free-stack-plugin 0.1.0-alpha.3 → 0.1.0-alpha.31
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/dist/esm/index.js +98 -192
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +42 -45
- package/dist/index.d.ts +42 -45
- package/dist/index.js +100 -201
- package/dist/index.js.map +1 -1
- package/package.json +17 -17
package/dist/index.d.ts
CHANGED
|
@@ -1,38 +1,32 @@
|
|
|
1
1
|
import * as _flowgram_ai_core from '@flowgram.ai/core';
|
|
2
|
-
import {
|
|
3
|
-
import { WorkfloEntityHoverable, WorkflowNodeEntity, WorkflowLineEntity } from '@flowgram.ai/free-layout-core';
|
|
2
|
+
import { WorkflowNodeEntity } from '@flowgram.ai/free-layout-core';
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
6
|
+
* SPDX-License-Identifier: MIT
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
interface StackingContext {
|
|
10
|
+
hoveredEntityID?: string;
|
|
11
|
+
selectedNodes: WorkflowNodeEntity[];
|
|
12
|
+
selectedIDs: Set<string>;
|
|
13
|
+
sortNodes: (nodes: WorkflowNodeEntity[]) => WorkflowNodeEntity[];
|
|
12
14
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
/** index 起始值 */
|
|
16
|
-
startIndex: number;
|
|
17
|
-
/** 允许存在的层级 */
|
|
18
|
-
allowLevel: number;
|
|
19
|
-
/** 每层 index 跨度 */
|
|
20
|
-
levelIndexStep: number;
|
|
21
|
-
/** 叠加计算后出现的最深层级 */
|
|
22
|
-
maxLevel: number;
|
|
23
|
-
/** 最大 index */
|
|
24
|
-
maxIndex: number;
|
|
25
|
-
};
|
|
26
|
-
declare enum StackingComputeMode {
|
|
27
|
-
/** 层叠计算模式 */
|
|
28
|
-
Stacking = "stacking",
|
|
29
|
-
/** 层级计算模式 */
|
|
30
|
-
Layers = "layers"
|
|
15
|
+
interface StackContextManagerOptions {
|
|
16
|
+
sortNodes: (nodes: WorkflowNodeEntity[]) => WorkflowNodeEntity[];
|
|
31
17
|
}
|
|
18
|
+
type FreeStackPluginOptions = Partial<StackContextManagerOptions>;
|
|
32
19
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
22
|
+
* SPDX-License-Identifier: MIT
|
|
23
|
+
*/
|
|
24
|
+
declare const createFreeStackPlugin: _flowgram_ai_core.PluginCreator<Partial<StackContextManagerOptions>>;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
28
|
+
* SPDX-License-Identifier: MIT
|
|
29
|
+
*/
|
|
36
30
|
|
|
37
31
|
declare class StackingContextManager {
|
|
38
32
|
private readonly document;
|
|
@@ -42,10 +36,10 @@ declare class StackingContextManager {
|
|
|
42
36
|
private readonly hoverService;
|
|
43
37
|
private readonly selectService;
|
|
44
38
|
readonly node: HTMLDivElement;
|
|
39
|
+
private options;
|
|
45
40
|
private disposers;
|
|
46
|
-
private mode;
|
|
47
41
|
constructor();
|
|
48
|
-
init(
|
|
42
|
+
init(options?: Partial<StackContextManagerOptions>): void;
|
|
49
43
|
ready(): void;
|
|
50
44
|
dispose(): void;
|
|
51
45
|
/**
|
|
@@ -54,7 +48,6 @@ declare class StackingContextManager {
|
|
|
54
48
|
*/
|
|
55
49
|
private compute;
|
|
56
50
|
private _compute;
|
|
57
|
-
private stackingCompute;
|
|
58
51
|
private get nodes();
|
|
59
52
|
private get lines();
|
|
60
53
|
private get context();
|
|
@@ -65,18 +58,16 @@ declare class StackingContextManager {
|
|
|
65
58
|
private onSelect;
|
|
66
59
|
}
|
|
67
60
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
};
|
|
61
|
+
/**
|
|
62
|
+
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
63
|
+
* SPDX-License-Identifier: MIT
|
|
64
|
+
*/
|
|
65
|
+
declare const BASE_Z_INDEX = 8;
|
|
74
66
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}) => void;
|
|
67
|
+
/**
|
|
68
|
+
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
69
|
+
* SPDX-License-Identifier: MIT
|
|
70
|
+
*/
|
|
80
71
|
|
|
81
72
|
declare class StackingComputing {
|
|
82
73
|
private currentLevel;
|
|
@@ -85,6 +76,7 @@ declare class StackingComputing {
|
|
|
85
76
|
private nodeIndexes;
|
|
86
77
|
private nodeLevel;
|
|
87
78
|
private lineLevel;
|
|
79
|
+
private selectedNodeParentSet;
|
|
88
80
|
private context;
|
|
89
81
|
compute(params: {
|
|
90
82
|
root: WorkflowNodeEntity;
|
|
@@ -102,10 +94,15 @@ declare class StackingComputing {
|
|
|
102
94
|
};
|
|
103
95
|
private clearCache;
|
|
104
96
|
private computeNodeIndexesMap;
|
|
97
|
+
private computeSelectedNodeParentSet;
|
|
98
|
+
private getNodeParents;
|
|
105
99
|
private computeTopLevel;
|
|
106
100
|
private layerHandler;
|
|
101
|
+
private sortNodes;
|
|
102
|
+
private getNodesAllLines;
|
|
103
|
+
private isHigherFirstLine;
|
|
107
104
|
private getLevel;
|
|
108
105
|
private levelIncrease;
|
|
109
106
|
}
|
|
110
107
|
|
|
111
|
-
export {
|
|
108
|
+
export { BASE_Z_INDEX, type FreeStackPluginOptions, type StackContextManagerOptions, StackingComputing, type StackingContext, StackingContextManager, createFreeStackPlugin };
|
package/dist/index.js
CHANGED
|
@@ -26,45 +26,41 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
// src/index.ts
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
31
|
-
|
|
32
|
-
StackingComputeMode: () => StackingComputeMode,
|
|
29
|
+
var index_exports = {};
|
|
30
|
+
__export(index_exports, {
|
|
31
|
+
BASE_Z_INDEX: () => BASE_Z_INDEX,
|
|
33
32
|
StackingComputing: () => StackingComputing,
|
|
34
|
-
StackingConfig: () => StackingConfig,
|
|
35
33
|
StackingContextManager: () => StackingContextManager,
|
|
36
|
-
|
|
37
|
-
StackingType: () => StackingType,
|
|
38
|
-
createFreeStackPlugin: () => createFreeStackPlugin,
|
|
39
|
-
layersComputing: () => layersComputing
|
|
34
|
+
createFreeStackPlugin: () => createFreeStackPlugin
|
|
40
35
|
});
|
|
41
|
-
module.exports = __toCommonJS(
|
|
36
|
+
module.exports = __toCommonJS(index_exports);
|
|
42
37
|
|
|
43
38
|
// src/create-free-stack-plugin.ts
|
|
44
39
|
var import_core2 = require("@flowgram.ai/core");
|
|
45
40
|
|
|
46
41
|
// src/manager.ts
|
|
47
|
-
var
|
|
42
|
+
var import_lodash_es = require("lodash-es");
|
|
48
43
|
var import_inversify = require("inversify");
|
|
49
|
-
var
|
|
50
|
-
var import_core = require("@flowgram.ai/core");
|
|
44
|
+
var import_utils = require("@flowgram.ai/utils");
|
|
51
45
|
var import_free_layout_core2 = require("@flowgram.ai/free-layout-core");
|
|
52
46
|
var import_free_layout_core3 = require("@flowgram.ai/free-layout-core");
|
|
53
47
|
var import_free_layout_core4 = require("@flowgram.ai/free-layout-core");
|
|
54
|
-
var
|
|
48
|
+
var import_document2 = require("@flowgram.ai/document");
|
|
49
|
+
var import_core = require("@flowgram.ai/core");
|
|
55
50
|
|
|
56
51
|
// src/stacking-computing.ts
|
|
57
|
-
var import_document = require("@flowgram.ai/document");
|
|
58
52
|
var import_free_layout_core = require("@flowgram.ai/free-layout-core");
|
|
53
|
+
var import_document = require("@flowgram.ai/document");
|
|
59
54
|
var StackingComputing = class {
|
|
60
55
|
compute(params) {
|
|
61
56
|
this.clearCache();
|
|
62
57
|
const { root, nodes, context } = params;
|
|
63
58
|
this.context = context;
|
|
64
59
|
this.nodeIndexes = this.computeNodeIndexesMap(nodes);
|
|
60
|
+
this.selectedNodeParentSet = this.computeSelectedNodeParentSet(nodes);
|
|
65
61
|
this.topLevel = this.computeTopLevel(nodes);
|
|
66
62
|
this.maxLevel = this.topLevel * 2;
|
|
67
|
-
this.layerHandler(root.
|
|
63
|
+
this.layerHandler(root.blocks);
|
|
68
64
|
return {
|
|
69
65
|
nodeLevel: this.nodeLevel,
|
|
70
66
|
lineLevel: this.lineLevel,
|
|
@@ -87,10 +83,25 @@ var StackingComputing = class {
|
|
|
87
83
|
});
|
|
88
84
|
return nodeIndexMap;
|
|
89
85
|
}
|
|
86
|
+
computeSelectedNodeParentSet(nodes) {
|
|
87
|
+
const selectedNodeParents = this.context.selectedNodes.flatMap(
|
|
88
|
+
(node) => this.getNodeParents(node)
|
|
89
|
+
);
|
|
90
|
+
return new Set(selectedNodeParents.map((node) => node.id));
|
|
91
|
+
}
|
|
92
|
+
getNodeParents(node) {
|
|
93
|
+
const nodes = [];
|
|
94
|
+
let currentNode = node;
|
|
95
|
+
while (currentNode && currentNode.flowNodeType !== import_document.FlowNodeBaseType.ROOT) {
|
|
96
|
+
nodes.unshift(currentNode);
|
|
97
|
+
currentNode = currentNode.parent;
|
|
98
|
+
}
|
|
99
|
+
return nodes;
|
|
100
|
+
}
|
|
90
101
|
computeTopLevel(nodes) {
|
|
91
102
|
const nodesWithoutRoot = nodes.filter((node) => node.id !== import_document.FlowNodeBaseType.ROOT);
|
|
92
103
|
const nodeHasChildren = nodesWithoutRoot.reduce((count, node) => {
|
|
93
|
-
if (node.
|
|
104
|
+
if (node.blocks.length > 0) {
|
|
94
105
|
return count + 1;
|
|
95
106
|
} else {
|
|
96
107
|
return count;
|
|
@@ -98,44 +109,69 @@ var StackingComputing = class {
|
|
|
98
109
|
}, 0);
|
|
99
110
|
return nodesWithoutRoot.length + nodeHasChildren + 1;
|
|
100
111
|
}
|
|
101
|
-
layerHandler(
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
const bIndex = this.nodeIndexes.get(b.id);
|
|
105
|
-
if (aIndex === void 0 || bIndex === void 0) {
|
|
106
|
-
return 0;
|
|
107
|
-
}
|
|
108
|
-
return aIndex - bIndex;
|
|
109
|
-
});
|
|
110
|
-
const lines = nodes.map((node) => {
|
|
111
|
-
const linesData = node.getData(import_free_layout_core.WorkflowNodeLinesData);
|
|
112
|
-
const outputLines = linesData.outputLines.filter(Boolean);
|
|
113
|
-
const inputLines = linesData.inputLines.filter(Boolean);
|
|
114
|
-
return [...outputLines, ...inputLines];
|
|
115
|
-
}).flat();
|
|
112
|
+
layerHandler(layerNodes, pinTop = false) {
|
|
113
|
+
const nodes = this.sortNodes(layerNodes);
|
|
114
|
+
const lines = this.getNodesAllLines(nodes);
|
|
116
115
|
lines.forEach((line) => {
|
|
117
116
|
if (line.isDrawing || // 正在绘制
|
|
118
117
|
this.context.hoveredEntityID === line.id || // hover
|
|
119
|
-
this.context.selectedIDs.
|
|
118
|
+
this.context.selectedIDs.has(line.id)) {
|
|
120
119
|
this.lineLevel.set(line.id, this.maxLevel);
|
|
121
120
|
} else {
|
|
122
121
|
this.lineLevel.set(line.id, this.getLevel(pinTop));
|
|
123
122
|
}
|
|
124
123
|
});
|
|
125
124
|
this.levelIncrease();
|
|
126
|
-
|
|
127
|
-
const selected = this.context.selectedIDs.
|
|
125
|
+
nodes.forEach((node) => {
|
|
126
|
+
const selected = this.context.selectedIDs.has(node.id);
|
|
128
127
|
if (selected) {
|
|
129
128
|
this.nodeLevel.set(node.id, this.topLevel);
|
|
130
129
|
} else {
|
|
131
130
|
this.nodeLevel.set(node.id, this.getLevel(pinTop));
|
|
132
131
|
}
|
|
133
132
|
this.levelIncrease();
|
|
134
|
-
if (node.
|
|
135
|
-
this.layerHandler(node.
|
|
133
|
+
if (node.blocks.length > 0) {
|
|
134
|
+
this.layerHandler(node.blocks, pinTop || selected);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
sortNodes(nodes) {
|
|
139
|
+
const baseSortNodes = nodes.sort((a, b) => {
|
|
140
|
+
const aIndex = this.nodeIndexes.get(a.id);
|
|
141
|
+
const bIndex = this.nodeIndexes.get(b.id);
|
|
142
|
+
if (aIndex === void 0 || bIndex === void 0) {
|
|
143
|
+
return 0;
|
|
144
|
+
}
|
|
145
|
+
return aIndex - bIndex;
|
|
146
|
+
});
|
|
147
|
+
const contextSortNodes = this.context.sortNodes(baseSortNodes);
|
|
148
|
+
return contextSortNodes.sort((a, b) => {
|
|
149
|
+
const aIsSelectedParent = this.selectedNodeParentSet.has(a.id);
|
|
150
|
+
const bIsSelectedParent = this.selectedNodeParentSet.has(b.id);
|
|
151
|
+
if (aIsSelectedParent && !bIsSelectedParent) {
|
|
152
|
+
return 1;
|
|
153
|
+
} else if (!aIsSelectedParent && bIsSelectedParent) {
|
|
154
|
+
return -1;
|
|
155
|
+
} else {
|
|
156
|
+
return 0;
|
|
136
157
|
}
|
|
137
158
|
});
|
|
138
159
|
}
|
|
160
|
+
getNodesAllLines(nodes) {
|
|
161
|
+
const lines = nodes.map((node) => {
|
|
162
|
+
const linesData = node.getData(import_free_layout_core.WorkflowNodeLinesData);
|
|
163
|
+
const outputLines = linesData.outputLines.filter(Boolean);
|
|
164
|
+
const inputLines = linesData.inputLines.filter(Boolean);
|
|
165
|
+
return [...outputLines, ...inputLines];
|
|
166
|
+
}).flat();
|
|
167
|
+
const filteredLines = lines.filter(
|
|
168
|
+
(line) => this.lineLevel.get(line.id) === void 0 || this.isHigherFirstLine(line)
|
|
169
|
+
);
|
|
170
|
+
return filteredLines;
|
|
171
|
+
}
|
|
172
|
+
isHigherFirstLine(line) {
|
|
173
|
+
return line.to?.parent === line.from || line.from?.parent === line.to;
|
|
174
|
+
}
|
|
139
175
|
getLevel(pinTop) {
|
|
140
176
|
if (pinTop) {
|
|
141
177
|
return this.topLevel + this.currentLevel;
|
|
@@ -147,138 +183,8 @@ var StackingComputing = class {
|
|
|
147
183
|
}
|
|
148
184
|
};
|
|
149
185
|
|
|
150
|
-
// src/layers-computing.ts
|
|
151
|
-
var import_document2 = require("@flowgram.ai/document");
|
|
152
|
-
|
|
153
186
|
// src/constant.ts
|
|
154
|
-
var
|
|
155
|
-
StackingItem2["Line"] = "line";
|
|
156
|
-
StackingItem2["Node"] = "node";
|
|
157
|
-
return StackingItem2;
|
|
158
|
-
})(StackingItem || {});
|
|
159
|
-
var StackingType = /* @__PURE__ */ ((StackingType2) => {
|
|
160
|
-
StackingType2["Line"] = "line" /* Line */;
|
|
161
|
-
StackingType2["Node"] = "node" /* Node */;
|
|
162
|
-
return StackingType2;
|
|
163
|
-
})(StackingType || {});
|
|
164
|
-
var StackingBaseIndex = {
|
|
165
|
-
["line" /* Line */]: 0,
|
|
166
|
-
["node" /* Node */]: 1
|
|
167
|
-
};
|
|
168
|
-
var startIndex = 8;
|
|
169
|
-
var allowLevel = 2;
|
|
170
|
-
var levelIndexStep = Object.keys(StackingType).length;
|
|
171
|
-
var maxLevel = allowLevel * 2;
|
|
172
|
-
var maxIndex = startIndex + maxLevel * levelIndexStep;
|
|
173
|
-
var StackingConfig = {
|
|
174
|
-
/** index 起始值 */
|
|
175
|
-
startIndex,
|
|
176
|
-
/** 允许存在的层级 */
|
|
177
|
-
allowLevel,
|
|
178
|
-
/** 每层 index 跨度 */
|
|
179
|
-
levelIndexStep,
|
|
180
|
-
/** 叠加计算后出现的最深层级 */
|
|
181
|
-
maxLevel,
|
|
182
|
-
/** 最大 index */
|
|
183
|
-
maxIndex
|
|
184
|
-
};
|
|
185
|
-
var StackingComputeMode = /* @__PURE__ */ ((StackingComputeMode2) => {
|
|
186
|
-
StackingComputeMode2["Stacking"] = "stacking";
|
|
187
|
-
StackingComputeMode2["Layers"] = "layers";
|
|
188
|
-
return StackingComputeMode2;
|
|
189
|
-
})(StackingComputeMode || {});
|
|
190
|
-
|
|
191
|
-
// src/layers-computing.ts
|
|
192
|
-
var NodeComputing;
|
|
193
|
-
((NodeComputing2) => {
|
|
194
|
-
NodeComputing2.compute = (node, context) => {
|
|
195
|
-
const zIndex = nodeZIndex(node, context);
|
|
196
|
-
const element = nodeElement(node);
|
|
197
|
-
element.style.position = "absolute";
|
|
198
|
-
element.style.zIndex = (0, NodeComputing2.zIndexStringify)(zIndex);
|
|
199
|
-
};
|
|
200
|
-
NodeComputing2.stackingIndex = (stackingType, level) => {
|
|
201
|
-
if (level < 1) {
|
|
202
|
-
return void 0;
|
|
203
|
-
}
|
|
204
|
-
const baseZIndex = StackingBaseIndex[stackingType];
|
|
205
|
-
const zIndex = StackingConfig.startIndex + StackingConfig.levelIndexStep * (level - 1) + baseZIndex;
|
|
206
|
-
return zIndex;
|
|
207
|
-
};
|
|
208
|
-
NodeComputing2.nodeStackingLevel = (node, context, disableTopLevel = false) => {
|
|
209
|
-
const unReversedLinage = [];
|
|
210
|
-
let currentNode = node;
|
|
211
|
-
while (currentNode) {
|
|
212
|
-
unReversedLinage.push(currentNode);
|
|
213
|
-
currentNode = currentNode.parent;
|
|
214
|
-
}
|
|
215
|
-
const linage = unReversedLinage.reverse();
|
|
216
|
-
const nodeLevel = linage.length - 1;
|
|
217
|
-
const topLevelIndex = linage.findIndex((node2) => {
|
|
218
|
-
if (context.selectedIDs.includes(node2.id)) {
|
|
219
|
-
return true;
|
|
220
|
-
}
|
|
221
|
-
return false;
|
|
222
|
-
});
|
|
223
|
-
const topLevel = StackingConfig.allowLevel + (linage.length - topLevelIndex);
|
|
224
|
-
if (!disableTopLevel && topLevelIndex !== -1) {
|
|
225
|
-
return topLevel;
|
|
226
|
-
}
|
|
227
|
-
return nodeLevel;
|
|
228
|
-
};
|
|
229
|
-
NodeComputing2.zIndexStringify = (zIndex) => {
|
|
230
|
-
if (zIndex === void 0) {
|
|
231
|
-
return "auto";
|
|
232
|
-
}
|
|
233
|
-
return zIndex.toString();
|
|
234
|
-
};
|
|
235
|
-
const nodeZIndex = (node, context) => {
|
|
236
|
-
const level = (0, NodeComputing2.nodeStackingLevel)(node, context);
|
|
237
|
-
const zIndex = (0, NodeComputing2.stackingIndex)("node" /* Node */, level);
|
|
238
|
-
return zIndex;
|
|
239
|
-
};
|
|
240
|
-
const nodeElement = (node) => {
|
|
241
|
-
const nodeRenderData = node.getData(import_document2.FlowNodeRenderData);
|
|
242
|
-
return nodeRenderData.node;
|
|
243
|
-
};
|
|
244
|
-
})(NodeComputing || (NodeComputing = {}));
|
|
245
|
-
var LineComputing;
|
|
246
|
-
((LineComputing2) => {
|
|
247
|
-
LineComputing2.compute = (line, context) => {
|
|
248
|
-
const zIndex = lineZIndex(line, context);
|
|
249
|
-
const element = line.node;
|
|
250
|
-
element.style.position = "absolute";
|
|
251
|
-
element.style.zIndex = NodeComputing.zIndexStringify(zIndex);
|
|
252
|
-
};
|
|
253
|
-
const lineStackingLevel = (line, context) => {
|
|
254
|
-
if (line.isDrawing || // 正在绘制
|
|
255
|
-
context.hoveredEntityID === line.id || // hover
|
|
256
|
-
context.selectedIDs.includes(line.id)) {
|
|
257
|
-
return StackingConfig.maxLevel + 1;
|
|
258
|
-
}
|
|
259
|
-
const fromLevel = NodeComputing.nodeStackingLevel(line.from, context, true);
|
|
260
|
-
if (!line.to) {
|
|
261
|
-
return fromLevel;
|
|
262
|
-
}
|
|
263
|
-
const toLevel = NodeComputing.nodeStackingLevel(line.to, context, true);
|
|
264
|
-
const level = Math.min(fromLevel, toLevel);
|
|
265
|
-
return level;
|
|
266
|
-
};
|
|
267
|
-
const lineZIndex = (line, context) => {
|
|
268
|
-
const level = lineStackingLevel(line, context);
|
|
269
|
-
const zIndex = NodeComputing.stackingIndex("line" /* Line */, level);
|
|
270
|
-
return zIndex;
|
|
271
|
-
};
|
|
272
|
-
})(LineComputing || (LineComputing = {}));
|
|
273
|
-
var layersComputing = (params) => {
|
|
274
|
-
const { nodes, lines, context } = params;
|
|
275
|
-
nodes.forEach((node) => {
|
|
276
|
-
NodeComputing.compute(node, context);
|
|
277
|
-
});
|
|
278
|
-
lines.forEach((line) => {
|
|
279
|
-
LineComputing.compute(line, context);
|
|
280
|
-
});
|
|
281
|
-
};
|
|
187
|
+
var BASE_Z_INDEX = 8;
|
|
282
188
|
|
|
283
189
|
// src/manager.ts
|
|
284
190
|
var StackingContextManager = class {
|
|
@@ -286,16 +192,18 @@ var StackingContextManager = class {
|
|
|
286
192
|
this.node = import_utils.domUtils.createDivWithClass(
|
|
287
193
|
"gedit-playground-layer gedit-flow-render-layer"
|
|
288
194
|
);
|
|
195
|
+
this.options = {
|
|
196
|
+
sortNodes: (nodes) => nodes
|
|
197
|
+
};
|
|
289
198
|
this.disposers = [];
|
|
290
|
-
this.mode = "stacking" /* Stacking */;
|
|
291
199
|
/**
|
|
292
200
|
* 触发计算
|
|
293
201
|
* 10ms内仅计算一次
|
|
294
202
|
*/
|
|
295
|
-
this.compute = (0,
|
|
203
|
+
this.compute = (0, import_lodash_es.debounce)(this._compute, 10);
|
|
296
204
|
}
|
|
297
|
-
init(
|
|
298
|
-
|
|
205
|
+
init(options = {}) {
|
|
206
|
+
this.options = { ...this.options, ...options };
|
|
299
207
|
this.pipelineRenderer.node.appendChild(this.node);
|
|
300
208
|
this.mountListener();
|
|
301
209
|
}
|
|
@@ -306,17 +214,6 @@ var StackingContextManager = class {
|
|
|
306
214
|
this.disposers.forEach((disposer) => disposer.dispose());
|
|
307
215
|
}
|
|
308
216
|
_compute() {
|
|
309
|
-
if (this.mode === "stacking" /* Stacking */) {
|
|
310
|
-
return this.stackingCompute();
|
|
311
|
-
} else {
|
|
312
|
-
return layersComputing({
|
|
313
|
-
nodes: this.nodes,
|
|
314
|
-
lines: this.lines,
|
|
315
|
-
context: this.context
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
stackingCompute() {
|
|
320
217
|
const context = this.context;
|
|
321
218
|
const stackingComputing = new StackingComputing();
|
|
322
219
|
const { nodeLevel, lineLevel } = stackingComputing.compute({
|
|
@@ -326,24 +223,30 @@ var StackingContextManager = class {
|
|
|
326
223
|
});
|
|
327
224
|
this.nodes.forEach((node) => {
|
|
328
225
|
const level = nodeLevel.get(node.id);
|
|
329
|
-
const nodeRenderData = node.getData(
|
|
226
|
+
const nodeRenderData = node.getData(import_document2.FlowNodeRenderData);
|
|
330
227
|
const element = nodeRenderData.node;
|
|
331
228
|
element.style.position = "absolute";
|
|
332
|
-
if (
|
|
229
|
+
if (level === void 0) {
|
|
230
|
+
nodeRenderData.stackIndex = 0;
|
|
333
231
|
element.style.zIndex = "auto";
|
|
334
232
|
return;
|
|
335
233
|
}
|
|
336
|
-
|
|
234
|
+
nodeRenderData.stackIndex = level;
|
|
235
|
+
const zIndex = BASE_Z_INDEX + level;
|
|
236
|
+
element.style.zIndex = String(zIndex);
|
|
337
237
|
});
|
|
338
238
|
this.lines.forEach((line) => {
|
|
339
239
|
const level = lineLevel.get(line.id);
|
|
340
240
|
const element = line.node;
|
|
341
241
|
element.style.position = "absolute";
|
|
342
|
-
if (
|
|
242
|
+
if (level === void 0) {
|
|
243
|
+
line.stackIndex = 0;
|
|
343
244
|
element.style.zIndex = "auto";
|
|
344
245
|
return;
|
|
345
246
|
}
|
|
346
|
-
|
|
247
|
+
line.stackIndex = level;
|
|
248
|
+
const zIndex = BASE_Z_INDEX + level;
|
|
249
|
+
element.style.zIndex = String(zIndex);
|
|
347
250
|
});
|
|
348
251
|
}
|
|
349
252
|
get nodes() {
|
|
@@ -354,10 +257,10 @@ var StackingContextManager = class {
|
|
|
354
257
|
}
|
|
355
258
|
get context() {
|
|
356
259
|
return {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
260
|
+
hoveredEntityID: this.hoverService.someHovered?.id,
|
|
261
|
+
selectedNodes: this.selectService.selectedNodes,
|
|
262
|
+
selectedIDs: new Set(this.selectService.selection.map((entity) => entity.id)),
|
|
263
|
+
sortNodes: this.options.sortNodes
|
|
361
264
|
};
|
|
362
265
|
}
|
|
363
266
|
mountListener() {
|
|
@@ -412,12 +315,13 @@ StackingContextManager = __decorateClass([
|
|
|
412
315
|
|
|
413
316
|
// src/create-free-stack-plugin.ts
|
|
414
317
|
var createFreeStackPlugin = (0, import_core2.definePluginCreator)({
|
|
318
|
+
singleton: true,
|
|
415
319
|
onBind({ bind }) {
|
|
416
320
|
bind(StackingContextManager).toSelf().inSingletonScope();
|
|
417
321
|
},
|
|
418
|
-
onInit(ctx,
|
|
322
|
+
onInit(ctx, options) {
|
|
419
323
|
const stackingContextManager = ctx.get(StackingContextManager);
|
|
420
|
-
stackingContextManager.init(
|
|
324
|
+
stackingContextManager.init(options);
|
|
421
325
|
},
|
|
422
326
|
onReady(ctx) {
|
|
423
327
|
const stackingContextManager = ctx.get(StackingContextManager);
|
|
@@ -430,14 +334,9 @@ var createFreeStackPlugin = (0, import_core2.definePluginCreator)({
|
|
|
430
334
|
});
|
|
431
335
|
// Annotate the CommonJS export names for ESM import in node:
|
|
432
336
|
0 && (module.exports = {
|
|
433
|
-
|
|
434
|
-
StackingComputeMode,
|
|
337
|
+
BASE_Z_INDEX,
|
|
435
338
|
StackingComputing,
|
|
436
|
-
StackingConfig,
|
|
437
339
|
StackingContextManager,
|
|
438
|
-
|
|
439
|
-
StackingType,
|
|
440
|
-
createFreeStackPlugin,
|
|
441
|
-
layersComputing
|
|
340
|
+
createFreeStackPlugin
|
|
442
341
|
});
|
|
443
342
|
//# sourceMappingURL=index.js.map
|