import * as OOXML from 'ooxml-types'; import { type CellStyle } from '../../treb-base-types/src/index'; import { Theme } from './workbook-theme'; export interface Font { size?: number; name?: string; family?: number; color_theme?: number; color_argb?: string; color_tint?: number; scheme?: string; bold?: boolean; italic?: boolean; underline?: boolean; strike?: boolean; } export interface NumberFormat { id?: number; symbolic_name?: string; format?: string; } export interface XlColor { theme?: number; tint?: number; indexed?: number; argb?: string; } export interface Fill { pattern_type: 'none' | 'solid' | 'gray'; pattern_gray?: number; fg_color?: XlColor; bg_color?: XlColor; } export interface CellXf { number_format: number; font: number; fill: number; border: number; wrap_text?: boolean; horizontal_alignment?: string; vertical_alignment?: string; xfid?: number; indent?: number; } export interface BorderEdge { style?: string; color?: number; rgba?: string; theme?: number; tint?: number; } /** * this is flat so we can map/copy better, even thought it makes * more sense as a map of simple objects */ export interface BorderStyle { top: BorderEdge; left: BorderEdge; bottom: BorderEdge; right: BorderEdge; diagonal: BorderEdge; } export interface StyleOptions { font?: Font; border?: BorderStyle; number_format?: NumberFormat; horizontal_alignment?: string; vertical_alignment?: string; wrap?: boolean; fill?: Fill; indent?: number; } export declare class StyleCache { /** * thanks to * http://polymathprogrammer.com/2011/02/15/built-in-styles-for-excel-open-xml/ */ static default_styles: { [index: number]: string; }; theme: Theme; cell_xfs: CellXf[]; fonts: Font[]; borders: BorderStyle[]; fills: Fill[]; number_formats: NumberFormat[]; base_number_format_id: number; dxf_styles: CellStyle[]; modified: boolean; Clamp(value: number, min: number, max: number): number; TintColor(base: string, tint: number): string; StyleOptionsFromProperties(source: CellStyle): StyleOptions; CellXfToStyle(xf: CellXf): CellStyle; /** map all cell xfs to styles; retain order */ CellXfToStyles(): CellStyle[]; EnsureNumberFormat(number_format: NumberFormat): number; CompareBorderEdge(a: BorderEdge, b: BorderEdge): boolean; CompareBorder(a: BorderStyle, b: BorderStyle): boolean; EnsureBorder(border: BorderStyle): number; MatchColor(a: XlColor | undefined, b: XlColor | undefined): boolean; EnsureFill(fill: Fill): number; /** * for the time being we are ignoring font face, family, size, color and * scheme (whatever that is). every font is based on font 0, the default. * we add bold/italic/underline as necessary. */ EnsureFont(font: Font): number; EnsureStyle(options: StyleOptions): number; FromXML(stylesheet: OOXML.StyleSheet, theme: Theme): void; }