UNPKG

lazy-widgets

Version:

Typescript retained mode GUI for the HTML canvas API

42 lines 1.26 kB
import { mergeRects } from './mergeRects.js'; import { rectsOverlap } from './rectsOverlap.js'; /** * Similar to {@link mergeRects}, except only overlapping rectangles are merged. * * @returns Returns a list containing all merged rectangles * * @category Helper */ export function mergeOverlappingRects(rects) { if (rects.length === 0) { return []; } let merged; // eslint-disable-next-line no-constant-condition while (true) { const rectCount = rects.length; merged = [rects[0]]; for (let i = 1; i < rectCount; i++) { const rect = rects[i]; const mergedCount = merged.length; let wasMerged = false; for (let j = 0; j < mergedCount; j++) { const otherRect = merged[j]; if (rectsOverlap(rect, otherRect)) { wasMerged = true; merged[j] = mergeRects([rect, otherRect]); break; } } if (!wasMerged) { merged.push(rect); } } if (merged.length === rectCount) { break; } rects = merged; } return merged; } //# sourceMappingURL=mergeOverlappingRects.js.map