@logicflow/extension
Version:
LogicFlow Extensions
34 lines (33 loc) • 1.23 kB
JavaScript
/**
*
* @param bounds
* @param group
*/
export function isBoundsInGroup(bounds, group) {
var minX = bounds.minX, minY = bounds.minY, maxX = bounds.maxX, maxY = bounds.maxY;
var x = group.x, y = group.y, width = group.width, height = group.height;
return (minX >= x - width / 2 &&
maxX <= x + width / 2 &&
minY >= y - height / 2 &&
maxY <= y + height / 2);
}
/**
* 判断 bounds 是否可以移动到下一个范围
* @param groupBounds
* @param node
* @param deltaX
* @param deltaY
*/
export function isAllowMoveTo(groupBounds, node, deltaX, deltaY) {
var minX = groupBounds.minX, minY = groupBounds.minY, maxX = groupBounds.maxX, maxY = groupBounds.maxY;
var x = node.x, y = node.y, width = node.width, height = node.height;
// DONE: 计算节点坐标 (x, y) 可移动的范围,并判断 x + deltaX, y + deltaY 是否在范围内
var allowMoveMinX = minX + width / 2;
var allowMoveMinY = minY + height / 2;
var allowMoveMaxX = maxX - width / 2;
var allowMoveMaxY = maxY - height / 2;
return {
x: x + deltaX >= allowMoveMinX && x + deltaX <= allowMoveMaxX,
y: y + deltaY >= allowMoveMinY && y + deltaY <= allowMoveMaxY,
};
}