Files
lan-manager/web/node_modules/@antv/g6-pc/lib/behavior/activate-relations.js
openclaw 0a5f6a8047 Initial commit: Lan-manager project code
- Go backend (server/)
- Frontend (web/, server/static/)
- Database and deployment files
- Scripts and docs

Co-Authored-By: 狸花猫/Claude-Qwen3.6-Plus 🐾
2026-04-20 00:52:58 +08:00

261 lines
8.0 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _util = require("@antv/util");
var clickNodeId = null;
var _default = exports.default = {
getDefaultCfg: function getDefaultCfg() {
return {
// 可选 mouseenter || click
// 选择 click 会监听 touchmouseenter 不会监听
trigger: 'mouseenter',
activeState: 'active',
inactiveState: 'inactive',
resetSelected: false,
shouldClearStatusOnSecond: false,
shouldUpdate: function shouldUpdate() {
return true;
}
};
},
getEvents: function getEvents() {
if (this.get('trigger') === 'mouseenter') {
return {
'node:mouseenter': 'setAllItemStates',
'combo:mouseenter': 'setAllItemStates',
'node:mouseleave': 'clearActiveState',
'combo:mouseleave': 'clearActiveState'
};
}
return {
'node:click': 'setAllItemStates',
'combo:click': 'setAllItemStates',
'canvas:click': 'clearActiveState',
'node:touchstart': 'setOnTouchStart',
'combo:touchstart': 'setOnTouchStart',
'canvas:touchstart': 'clearOnTouchStart'
};
},
setOnTouchStart: function setOnTouchStart(e) {
var self = this;
try {
var touches = e.originalEvent.touches;
var event1 = touches[0];
var event2 = touches[1];
if (event1 && event2) {
return;
}
e.preventDefault();
} catch (e) {
console.warn('Touch original event not exist!');
}
self.setAllItemStates(e);
},
clearOnTouchStart: function clearOnTouchStart(e) {
var self = this;
try {
var touches = e.originalEvent.touches;
var event1 = touches[0];
var event2 = touches[1];
if (event1 && event2) {
return;
}
e.preventDefault();
} catch (e) {
console.warn('Touch original event not exist!');
}
self.clearActiveState(e);
},
setAllItemStates: function setAllItemStates(e) {
clearTimeout(this.timer);
this.throttleSetAllItemStates(e, this);
},
clearActiveState: function clearActiveState(e) {
var _this = this;
// avoid clear state frequently, it costs a lot since all the items' states on the graph need to be cleared
var shouldClearStatusOnSecond = this.shouldClearStatusOnSecond;
if (shouldClearStatusOnSecond) {
clickNodeId = null;
}
this.timer = setTimeout(function () {
_this.throttleClearActiveState(e, _this);
}, 50);
},
throttleSetAllItemStates: (0, _util.throttle)(function (e, self) {
var item = e.item;
var graph = self.graph;
if (!graph || graph.destroyed) return;
self.item = item;
if (!self.shouldUpdate(e.item, {
event: e,
action: 'activate'
}, self)) {
return;
}
var shouldClearStatusOnSecond = self.shouldClearStatusOnSecond;
var currentNodeId = item.getModel().id;
if (clickNodeId === currentNodeId && shouldClearStatusOnSecond) {
self.throttleClearActiveState(e, self);
clickNodeId = null;
return;
}
var activeState = self.activeState;
var inactiveState = self.inactiveState;
var nodes = graph.getNodes();
var combos = graph.getCombos();
var edges = graph.getEdges();
var vEdges = graph.get('vedges');
var nodeLength = nodes.length;
var comboLength = combos.length;
var edgeLength = edges.length;
var vEdgeLength = vEdges.length;
var inactiveItems = self.inactiveItems || {};
var activeItems = self.activeItems || {};
for (var i = 0; i < nodeLength; i++) {
var node = nodes[i];
var nodeId = node.getID();
var hasSelected = node.hasState('selected');
if (self.resetSelected) {
if (hasSelected) {
graph.setItemState(node, 'selected', false);
}
}
if (activeItems[nodeId]) {
graph.setItemState(node, activeState, false);
delete activeItems[nodeId];
}
if (inactiveState && !inactiveItems[nodeId]) {
graph.setItemState(node, inactiveState, true);
inactiveItems[nodeId] = node;
}
}
for (var i = 0; i < comboLength; i++) {
var combo = combos[i];
var comboId = combo.getID();
var hasSelected = combo.hasState('selected');
if (self.resetSelected) {
if (hasSelected) {
graph.setItemState(combo, 'selected', false);
}
}
if (activeItems[comboId]) {
graph.setItemState(combo, activeState, false);
delete activeItems[comboId];
}
if (inactiveState && !inactiveItems[comboId]) {
graph.setItemState(combo, inactiveState, true);
inactiveItems[comboId] = combo;
}
}
for (var i = 0; i < edgeLength; i++) {
var edge = edges[i];
var edgeId = edge.getID();
if (activeItems[edgeId]) {
graph.setItemState(edge, activeState, false);
delete activeItems[edgeId];
}
if (inactiveState && !inactiveItems[edgeId]) {
graph.setItemState(edge, inactiveState, true);
inactiveItems[edgeId] = edge;
}
}
for (var i = 0; i < vEdgeLength; i++) {
var vEdge = vEdges[i];
var vEdgeId = vEdge.getID();
if (activeItems[vEdgeId]) {
graph.setItemState(vEdge, activeState, false);
delete activeItems[vEdgeId];
}
if (inactiveState && !inactiveItems[vEdgeId]) {
graph.setItemState(vEdge, inactiveState, true);
inactiveItems[vEdgeId] = vEdge;
}
}
if (item && !item.destroyed) {
if (inactiveState) {
graph.setItemState(item, inactiveState, false);
delete inactiveItems[item.getID()];
}
if (!activeItems[item.getID()]) {
graph.setItemState(item, activeState, true);
activeItems[item.getID()] = item;
}
var rEdges = item.getEdges();
var rEdgeLegnth = rEdges.length;
for (var i = 0; i < rEdgeLegnth; i++) {
var edge = rEdges[i];
var edgeId = edge.getID();
var otherEnd = void 0;
if (edge.getSource() === item) {
otherEnd = edge.getTarget();
} else {
otherEnd = edge.getSource();
}
var otherEndId = otherEnd.getID();
if (inactiveState && inactiveItems[otherEndId]) {
graph.setItemState(otherEnd, inactiveState, false);
delete inactiveItems[otherEndId];
}
if (!activeItems[otherEndId]) {
graph.setItemState(otherEnd, activeState, true);
activeItems[otherEndId] = otherEnd;
}
if (inactiveItems[edgeId]) {
graph.setItemState(edge, inactiveState, false);
delete inactiveItems[edgeId];
}
if (!activeItems[edgeId]) {
graph.setItemState(edge, activeState, true);
activeItems[edgeId] = edge;
}
edge.toFront();
}
}
self.activeItems = activeItems;
self.inactiveItems = inactiveItems;
if (shouldClearStatusOnSecond) {
clickNodeId = item.getModel().id;
}
graph.emit('afteractivaterelations', {
item: e.item,
action: 'activate'
});
}, 50, {
trailing: true,
leading: true
}),
throttleClearActiveState: (0, _util.throttle)(function (e, self) {
var graph = self.get('graph');
if (!graph || graph.destroyed) return;
if (!self.shouldUpdate(e.item, {
event: e,
action: 'deactivate'
}, self)) return;
var activeState = self.activeState;
var inactiveState = self.inactiveState;
var activeItems = self.activeItems || {};
var inactiveItems = self.inactiveItems || {};
Object.values(activeItems).filter(function (item) {
return !item.destroyed;
}).forEach(function (item) {
graph.clearItemStates(item, activeState);
});
Object.values(inactiveItems).filter(function (item) {
return !item.destroyed;
}).forEach(function (item) {
graph.clearItemStates(item, inactiveState);
});
self.activeItems = {};
self.inactiveItems = {};
graph.emit('afteractivaterelations', {
item: e.item || self.get('item'),
action: 'deactivate'
});
}, 50, {
trailing: true,
leading: true
})
};