in packages/shared/src/coordinate.ts [258:281]
export function calcBoundingRect(rects: IRect[]) {
if (!rects?.length) return
if (rects?.length === 1 && !rects[0]) return
let minTop = Infinity
let maxBottom = -Infinity
let minLeft = Infinity
let maxRight = -Infinity
rects.forEach((item) => {
const rect = new Rect(item.x, item.y, item.width, item.height)
if (rect.top <= minTop) {
minTop = rect.top
}
if (rect.bottom >= maxBottom) {
maxBottom = rect.bottom
}
if (rect.left <= minLeft) {
minLeft = rect.left
}
if (rect.right >= maxRight) {
maxRight = rect.right
}
})
return new Rect(minLeft, minTop, maxRight - minLeft, maxBottom - minTop)
}