import { ResolvedPaintItem } from '../../../../../contracts/src/index.js'; /** * Per-fragment rendering info for between-border groups. * * - showBetweenBorder: replace bottom border with the between definition * - suppressTopBorder: hide this fragment's top border (covered by previous fragment's extension) * - gapBelow: px to extend the border layer downward into the paragraph-spacing gap */ export type BetweenBorderInfo = { showBetweenBorder: boolean; suppressTopBorder: boolean; suppressBottomBorder: boolean; gapBelow: number; }; /** * Pre-computes per-fragment between-border rendering info for a page. * * Two fragments (i, i+1) form a border group pair when: * 1. Both are para fragments (not table/image/drawing) * 2. Neither is a page-split continuation * 3. They represent different logical paragraphs * 4. Both have border definitions * 5. Their full border definitions match (same border group) * * Per ECMA-376 ยง17.3.1.5: grouping occurs when all border properties are * identical. A `between` border is NOT required โ€” when absent, the group * is rendered as a single box without a separator line. * * For each pair, the first fragment gets: * - showBetweenBorder: true โ€” bottom border replaced with between definition * - gapBelow: px distance to extend border layer into spacing gap * * The second fragment gets: * - suppressTopBorder: true โ€” the previous fragment's extension covers the boundary * * Middle fragments in a chain of 3+ get both flags. */ export declare const computeBetweenBorderFlags: (resolvedItems: readonly ResolvedPaintItem[]) => Map; //# sourceMappingURL=group-analysis.d.ts.map