@aloudata/ink-lineage 0.0.1-beta.26 → 0.0.1-beta.27
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/BigDagre.d.ts.map +1 -1
- package/dist/BigDagre.js +3 -110
- package/dist/BigDagre.js.map +1 -1
- package/package.json +1 -1
package/dist/BigDagre.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BigDagre.d.ts","sourceRoot":"","sources":["../src/BigDagre.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG;;;EAW1C;
|
|
1
|
+
{"version":3,"file":"BigDagre.d.ts","sourceRoot":"","sources":["../src/BigDagre.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG;;;EAW1C;AAGD,wBAAgB,QAAQ,CACpB,KAAK,EAAE,GAAG,EAAE,EACZ,KAAK,EAAE,GAAG,EAAE,EACZ,MAAM,EAAE,MAAM,EACd,YAAY,EAAE;IACV,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;;;EAqGJ"}
|
package/dist/BigDagre.js
CHANGED
|
@@ -12,120 +12,13 @@ export function getCanvasCenter(canvas) {
|
|
|
12
12
|
centerY: centerY,
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
function isChainStructure(nodes, edges) {
|
|
16
|
-
if (nodes.length < 2)
|
|
17
|
-
return false;
|
|
18
|
-
// 构建邻接表
|
|
19
|
-
var adjacencyList = new Map();
|
|
20
|
-
var inDegree = new Map();
|
|
21
|
-
var outDegree = new Map();
|
|
22
|
-
// 初始化
|
|
23
|
-
nodes.forEach(function (node) {
|
|
24
|
-
adjacencyList.set(node.id, []);
|
|
25
|
-
inDegree.set(node.id, 0);
|
|
26
|
-
outDegree.set(node.id, 0);
|
|
27
|
-
});
|
|
28
|
-
// 构建图
|
|
29
|
-
edges.forEach(function (edge) {
|
|
30
|
-
var source = edge.source;
|
|
31
|
-
var target = edge.target;
|
|
32
|
-
if (adjacencyList.has(source) && adjacencyList.has(target)) {
|
|
33
|
-
adjacencyList.get(source).push(target);
|
|
34
|
-
outDegree.set(source, (outDegree.get(source) || 0) + 1);
|
|
35
|
-
inDegree.set(target, (inDegree.get(target) || 0) + 1);
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
// 检查是否所有节点都连通
|
|
39
|
-
var visited = new Set();
|
|
40
|
-
var startNode = nodes[0].id;
|
|
41
|
-
var queue = [startNode];
|
|
42
|
-
visited.add(startNode);
|
|
43
|
-
while (queue.length > 0) {
|
|
44
|
-
var current = queue.shift();
|
|
45
|
-
var neighbors = adjacencyList.get(current) || [];
|
|
46
|
-
neighbors.forEach(function (neighbor) {
|
|
47
|
-
if (!visited.has(neighbor)) {
|
|
48
|
-
visited.add(neighbor);
|
|
49
|
-
queue.push(neighbor);
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
// 如果不连通,不是链路
|
|
54
|
-
if (visited.size !== nodes.length)
|
|
55
|
-
return false;
|
|
56
|
-
// 检查每个节点的度数
|
|
57
|
-
var startNodes = 0; // 只有出度的节点(起点)
|
|
58
|
-
var endNodes = 0; // 只有入度的节点(终点)
|
|
59
|
-
var middleNodes = 0; // 有1个入度和1个出度的节点(中间节点)
|
|
60
|
-
nodes.forEach(function (node) {
|
|
61
|
-
var inCount = inDegree.get(node.id) || 0;
|
|
62
|
-
var outCount = outDegree.get(node.id) || 0;
|
|
63
|
-
if (inCount === 0 && outCount === 1) {
|
|
64
|
-
startNodes++;
|
|
65
|
-
}
|
|
66
|
-
else if (inCount === 1 && outCount === 0) {
|
|
67
|
-
endNodes++;
|
|
68
|
-
}
|
|
69
|
-
else if (inCount === 1 && outCount === 1) {
|
|
70
|
-
middleNodes++;
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
// 链路结构:1个起点 + 1个终点 + (n-2)个中间节点 = n个节点
|
|
74
|
-
return startNodes === 1 && endNodes === 1 && middleNodes === nodes.length - 2;
|
|
75
|
-
}
|
|
76
|
-
var getCompactLayoutConfig = function (isChain, nodes, edges) {
|
|
77
|
-
var nodeCount = nodes.length;
|
|
78
|
-
// 基础间距
|
|
79
|
-
var baseRanksep = 160;
|
|
80
|
-
var baseNodesep = 60;
|
|
81
|
-
// 最小间距限制,避免节点过于拥挤
|
|
82
|
-
var minRanksep = 40;
|
|
83
|
-
var minNodesep = 20;
|
|
84
|
-
// 计算平均节点大小,用于调整间距
|
|
85
|
-
var avgNodeSize = nodes.reduce(function (sum, node) {
|
|
86
|
-
var _a = node.style || {}, _b = _a.width, width = _b === void 0 ? 0 : _b, _c = _a.height, height = _c === void 0 ? 0 : _c;
|
|
87
|
-
return sum + Math.max(width, height);
|
|
88
|
-
}, 0) / nodeCount;
|
|
89
|
-
// 根据节点数量计算紧凑系数
|
|
90
|
-
var compactFactor = 1;
|
|
91
|
-
if (nodeCount <= 6) {
|
|
92
|
-
compactFactor = 0.5; // 4-6个节点时,间距减少50%
|
|
93
|
-
}
|
|
94
|
-
else if (nodeCount <= 10) {
|
|
95
|
-
compactFactor = 0.7; // 7-10个节点时,间距减少30%
|
|
96
|
-
}
|
|
97
|
-
// 根据节点大小进一步调整间距
|
|
98
|
-
// 如果节点较小,可以更紧凑一些
|
|
99
|
-
var sizeAdjustment = avgNodeSize < 100 ? 0.8 : 1;
|
|
100
|
-
compactFactor *= sizeAdjustment;
|
|
101
|
-
// 链路结构特殊处理:使用更紧凑的水平间距
|
|
102
|
-
if (isChain) {
|
|
103
|
-
// 链路结构使用更小的水平间距,让节点更紧密排列
|
|
104
|
-
var chainRanksep = Math.max(60, avgNodeSize * 1.5); // 水平间距基于节点大小
|
|
105
|
-
var chainNodesep = Math.max(20, avgNodeSize * 0.3); // 垂直间距很小
|
|
106
|
-
return {
|
|
107
|
-
ranksep: chainRanksep,
|
|
108
|
-
nodesep: chainNodesep,
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
// 计算最终间距,确保不小于最小间距
|
|
112
|
-
var finalRanksep = Math.max(Math.round(baseRanksep * compactFactor), minRanksep);
|
|
113
|
-
var finalNodesep = Math.max(Math.round(baseNodesep * compactFactor), minNodesep);
|
|
114
|
-
return {
|
|
115
|
-
ranksep: finalRanksep,
|
|
116
|
-
nodesep: finalNodesep,
|
|
117
|
-
};
|
|
118
|
-
};
|
|
119
15
|
export function BigDagre(nodes, edges, canvas, layoutConfig) {
|
|
120
16
|
var g = new dagre.graphlib.Graph();
|
|
121
17
|
g.setDefaultEdgeLabel(function () { return ({}); });
|
|
122
|
-
// 检测是否为链路结构
|
|
123
|
-
var isChain = isChainStructure(nodes, edges);
|
|
124
|
-
var compactConfig = getCompactLayoutConfig(isChain, nodes, edges);
|
|
125
18
|
g.setGraph({
|
|
126
|
-
rankdir: layoutConfig === null || layoutConfig === void 0 ? void 0 : layoutConfig.rankdir,
|
|
127
|
-
ranksep:
|
|
128
|
-
nodesep:
|
|
19
|
+
rankdir: (layoutConfig === null || layoutConfig === void 0 ? void 0 : layoutConfig.rankdir) || 'TB',
|
|
20
|
+
ranksep: (layoutConfig === null || layoutConfig === void 0 ? void 0 : layoutConfig.ranksep) || 160,
|
|
21
|
+
nodesep: (layoutConfig === null || layoutConfig === void 0 ? void 0 : layoutConfig.nodesep) || 60,
|
|
129
22
|
});
|
|
130
23
|
var startNode = null;
|
|
131
24
|
nodes.forEach(function (nodeCfg) {
|
package/dist/BigDagre.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BigDagre.js","sourceRoot":"","sources":["../src/BigDagre.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,UAAU,eAAe,CAAC,MAAW;IACjC,IAAA,KAA+C,MAAM,CAAC,SAAS,EAAE,EAAxD,WAAW,WAAA,EAAU,YAAY,YAAuB,CAAC;IACxE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO;IAElE,IAAM,OAAO,GAAG,WAAW,GAAG,GAAG,CAAC;IAClC,IAAM,OAAO,GAAG,YAAY,GAAG,GAAG,CAAC;IAEnC,OAAO;QACH,OAAO,SAAA;QACP,OAAO,SAAA;KACV,CAAC;AACN,CAAC;
|
|
1
|
+
{"version":3,"file":"BigDagre.js","sourceRoot":"","sources":["../src/BigDagre.ts"],"names":[],"mappings":"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"}
|