import type { Areas, SubProcessor } from "./layout.js"; import { LayoutContext } from "./layout.js"; import type { FragmentorEvents, FragmentorOptions } from "./fragments.js"; import { Fragment, Fragmentor } from "./fragments.js"; import type { ForcedBreakType } from "./flow.js"; import { Mutations } from "./mutations.js"; import type { Point } from "./util/ranges.js"; import type { Process } from "./process.js"; import { GCPMContext } from "./gcpm.js"; export declare class Column extends Fragment { } export declare class ColumnSpan extends Fragment { } declare class ColumnsGroup { sequences: HTMLElement[]; columnParent: HTMLElement; span: HTMLElement; columnsMut: Mutations; spanMut: Mutations; } export interface ColumnizatorOptions extends FragmentorOptions { parentAreas?: Areas; columnCount?: number; parentLayoutContext?: LayoutContext; } export interface ColumnizatorEvents extends FragmentorEvents { 'column-start': { column: Column; }; 'column-end': { column: Column; }; 'columnization-start': Record; 'columnization-end': Record; } export declare class ColumnsLayoutContext extends LayoutContext { maxHeightChanged: boolean; constructor(source: HTMLElement, root: HTMLElement, areas: Areas, parentCtx?: LayoutContext); } export declare class Columnizator extends Fragmentor { static defaultOptions: ColumnizatorOptions; avoidBreakTypes: string[]; forcedBreakTypes: ForcedBreakType[]; layoutContext: ColumnsLayoutContext; columnizationMut: Mutations; breakPoint: Point | false | null; parentAvoidBreakTypes: string[]; columnCount: number; fillProp: string; sourceBody: HTMLElement; isLastGroup: boolean; _maxBottom: number; logNoValidBreakPoint: boolean; constructor(source: HTMLElement, gcpmContext?: GCPMContext, options?: ColumnizatorOptions); /** Returns the max height defined on the element style or Infinity */ columnsMaxHeight(top: number): number; columnizationProcess(): Process; /** * A the end of this process, the remaining bodies are replaced in the source body */ columnsGroupProcess(group: ColumnsGroup, firstGroup: boolean): Process; columnSpanProcess(group: ColumnsGroup): Process; createLayoutContext(root: HTMLElement, areas: Areas, parentCtx: LayoutContext): LayoutContext; } export declare function createColumn(doc: Document, number: number): Column; export declare const columnsSubProcessor: SubProcessor; export {};