UNPKG

@logicflow/extension

Version:
34 lines (33 loc) 1.23 kB
/** * * @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, }; }