UNPKG

@1771technologies/lytenyte-pro

Version:

Blazingly fast headless React data grid with 100s of features.

51 lines (50 loc) 1.66 kB
import { areRectsEqual } from "./are-rects-equal.js"; export function splitOnPivot(rect, pivot) { if (rect.isUnit || areRectsEqual(rect, pivot)) return null; const splits = []; const isAfter = pivot.columnStart > rect.columnStart; const isSame = pivot.columnStart === rect.columnStart && pivot.columnEnd === rect.columnEnd; // The pivot is on the right side of the rect. So we split by end if (isAfter) { const split = { ...rect, columnEnd: rect.columnEnd - 1, borderEnd: false }; if (split.columnStart !== split.columnEnd) splits.push(split); } else { const split = { ...rect, columnStart: rect.columnStart + 1, borderStart: false, }; if (split.columnStart !== split.columnEnd) splits.push(split); } if (pivot.rowStart > rect.rowStart) { const split = { ...rect, columnStart: pivot.columnStart, columnEnd: pivot.columnEnd, rowEnd: rect.rowEnd - 1, borderBottom: false, borderStart: !isAfter, borderEnd: isSame || isAfter, }; if (split.rowStart !== split.rowEnd) splits.push(split); } else { const split = { ...rect, columnStart: pivot.columnStart, columnEnd: pivot.columnEnd, rowStart: rect.rowStart + 1, borderTop: false, borderStart: !isAfter, borderEnd: isSame || isAfter, }; if (split.rowStart !== split.rowEnd) splits.push(split); } return splits; }