/** * Partition one physical spread page into two logical half pages. * * Pure geometry: every element is assigned to the half holding the larger * share of its horizontal extent, right-half coordinates are re-based so each * logical page starts at x=0, and boxes are clamped to the logical page * bounds. Elements that genuinely span the gutter (a panoramic photo) end up * on the half with the larger overlap with their box clamped, a documented * v1 trade-off: the element content itself stays intact. */ import type { SpreadCandidateElement } from './types.js'; export interface PartitionedElements { left: T[]; right: T[]; } /** * Assign every element to the half holding the larger share of its width. * Exact ties go left (reading order: left page comes first). */ export declare function partitionElements(elements: T[], pageWidth: number): PartitionedElements; /** * Re-base an element's box onto its logical page: right-half elements shift * left by half the physical width, then every box is clamped to the logical * page bounds [0, halfWidth]. Returns a NEW element (input is not mutated). */ export declare function rebaseElementBox(element: T, pageWidth: number, half: 'left' | 'right'): T; //# sourceMappingURL=spreadPartition.d.ts.map