export declare const PT_PER_MM = 2.834645669291339; export declare const mmNaarPt: (mm: number) => number; export declare const ptNaarMm: (pt: number) => number; export declare const DOCUMENT_MODEL_VERSIE = 1; export declare const KLEUR_DONKER = "#111827"; export declare const KLEUR_GRIJS = "#6b7280"; export declare const KLEUR_MIDDEN = "#4b5563"; export declare const KLEUR_LIJN = "#d1d5db"; export type Uitlijning = "left" | "center" | "right"; export interface FlowTekst { kind: "tekst"; tekst: string; groottePt?: number; vet?: boolean; kleur?: string; uitlijning?: Uitlijning; margeOnderMm?: number; } export interface FlowBand { kind: "band"; titel: string; meta?: string; groottePt?: number; metaGroottePt?: number; achtergrond?: string; lijnBovenOnder?: boolean; uitlijning?: Uitlijning; margeOnderMm?: number; } export interface FlowKv { kind: "kv"; label: string; waarde: string; groottePt?: number; } export interface FlowKvGrid { kind: "kvgrid"; items: { label: string; waarde: string; }[]; kolommen: number; groottePt?: number; } export interface FlowTussen { kind: "tussen"; links: string; rechts: string; vet?: boolean; lijnOnder?: boolean; lijnBoven?: boolean; groottePt?: number; } export interface FlowKolom { label: string; /** Relatieve breedte in procenten van de tabelbreedte. */ breedte: number; uitlijning?: Uitlijning; vet?: boolean; groottePt?: number; } export interface FlowTabel { kind: "tabel"; kolommen: FlowKolom[]; rijen: string[][]; toonKop?: boolean; groottePt?: number; kopGroottePt?: number; randen?: "onder" | "rand" | "geen"; zebra?: boolean; /** Kop herhalen wanneer de tabel over een pagina-einde loopt. */ kopHerhalen?: boolean; } export interface FlowBarcode { kind: "barcode"; waarde: string; breedteMm: number; hoogteMm: number; uitlijning?: Uitlijning; toonWaarde?: boolean; } export interface FlowAfbeelding { kind: "afbeelding"; src: string; hoogteMm: number; breedteMm?: number; uitlijning?: Uitlijning; } export interface FlowLijn { kind: "lijn"; dikteMm?: number; kleur?: string; margeMm?: number; } export interface FlowRuimte { kind: "ruimte"; hoogteMm: number; } export interface FlowLijnveld { kind: "lijnveld"; label: string; hoogteMm: number; } export interface FlowGroep { kind: "groep"; kinderen: Flow[]; /** Nooit over een pagina-einde splitsen wanneer dat past. */ bijElkaar?: boolean; kader?: boolean; achtergrond?: string; paddingMm?: number; breedtePercent?: number; uitlijning?: Uitlijning; margeOnderMm?: number; } export interface FlowPaginabreuk { kind: "paginabreuk"; } export type Flow = FlowTekst | FlowBand | FlowKv | FlowKvGrid | FlowTussen | FlowTabel | FlowBarcode | FlowAfbeelding | FlowLijn | FlowRuimte | FlowLijnveld | FlowGroep | FlowPaginabreuk; export interface DocTekst { type: "tekst"; xMm: number; yMm: number; breedteMm: number; regels: string[]; groottePt: number; vet: boolean; kleur: string; uitlijning: Uitlijning; regelhoogteMm: number; } export interface DocVlak { type: "vlak"; xMm: number; yMm: number; breedteMm: number; hoogteMm: number; vulling?: string; randKleur?: string; randMm?: number; } export interface DocLijn { type: "lijn"; xMm: number; yMm: number; breedteMm: number; dikteMm: number; kleur: string; } export interface DocBarcode { type: "barcode"; xMm: number; yMm: number; breedteMm: number; hoogteMm: number; waarde: string; formaat: "CODE128"; } export interface DocAfbeelding { type: "afbeelding"; xMm: number; yMm: number; breedteMm: number; hoogteMm: number; src: string; } export type DocElement = DocTekst | DocVlak | DocLijn | DocBarcode | DocAfbeelding; export interface DocPagina { elementen: DocElement[]; } export interface PakbonDocumentModel { documentModelVersie: number; breedteMm: number; hoogteMm: number; margeMm: number; basisGroottePt: number; paginanummers: boolean; paginas: DocPagina[]; } export interface LayoutOpties { breedteMm: number; hoogteMm: number; margeMm: number; basisGroottePt?: number; paginanummers?: boolean; /** Blokken die bovenaan iedere pagina worden herhaald. */ paginaKop?: Flow[]; /** Blokken die onderaan iedere pagina worden herhaald (bijv. totalen). */ paginaVoet?: Flow[]; } /** * Rekent het inhoudsmodel één keer door tot een bevroren DocumentModel in mm. * Dezelfde invoer levert altijd hetzelfde model: geen DOM-metingen, geen * browser-afhankelijkheden en geen willekeur. */ export declare function berekenDocumentModel(flows: Flow[], opties: LayoutOpties): PakbonDocumentModel; /** Maakt het model definitief; renderers mogen niets meer wijzigen. */ export declare function bevries(model: PakbonDocumentModel): PakbonDocumentModel; //# sourceMappingURL=pakbonDocument.d.ts.map