UNPKG

@vivliostyle/core

Version:

Vivliostyle Core library for HTML+CSS typesetting with EPUB/Web publications support

206 lines (205 loc) 7.29 kB
/** * Copyright 2013 Google, Inc. * Copyright 2015 Trim-marks Inc. * Copyright 2019 Vivliostyle Foundation * * Vivliostyle.js is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Vivliostyle.js is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Vivliostyle.js. If not, see <http://www.gnu.org/licenses/>. * * @fileoverview Css - CSS Values and utilities to handle them. */ import * as Base from "./base"; import * as Exprs from "./exprs"; export declare class Visitor { visitValues(values: Val[]): Val[]; visitEmpty(empty: Val): Val; visitSlash(slash: Val): Val; visitStr(str: Str): Val; visitIdent(ident: Ident): Val; visitNumeric(numeric: Numeric): Val; visitNum(num: Num): Val; visitInt(num: Int): Val; visitHexColor(color: HexColor): Val; visitURL(url: URL): Val; visitURange(urange: URange): Val; visitSpaceList(list: SpaceList): Val; visitCommaList(list: CommaList): Val; visitFunc(func: Func): Val; visitExpr(expr: Expr): Val; } export declare class FilterVisitor extends Visitor { error: boolean; constructor(); visitValues(values: Val[]): Val[]; visitEmpty(empty: Val): Val; visitStr(str: Str): Val; visitIdent(ident: Ident): Val; visitSlash(slash: Val): Val; visitNumeric(numeric: Numeric): Val; visitNum(num: Num): Val; visitInt(num: Int): Val; visitHexColor(color: HexColor): Val; visitURL(url: URL): Val; visitURange(urange: URange): Val; visitSpaceList(list: SpaceList): Val; visitCommaList(list: CommaList): Val; visitFunc(func: Func): Val; visitExpr(expr: Expr): Val; } export declare class Val { /** @override */ toString(): string; stringValue(): string; toExpr(scope: Exprs.LexicalScope, ref: Exprs.Val): Exprs.Val; appendTo(buf: Base.StringBuffer, toString: boolean): void; isExpr(): boolean; isNumeric(): boolean; isNum(): boolean; isIdent(): boolean; isSpaceList(): boolean; visit(visitor: Visitor): Val; } export declare class Empty extends Val { private static empty; static get instance(): Empty; private constructor(); toExpr(scope: Exprs.LexicalScope, ref: Exprs.Val): Exprs.Val; appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; } export declare const empty: Empty; export declare class Slash extends Val { private static slash; static get instance(): Slash; private constructor(); toExpr(scope: Exprs.LexicalScope, ref: Exprs.Val): Exprs.Val; appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; } export declare const slash: Slash; export declare class Str extends Val { str: string; constructor(str: string); toExpr(scope: Exprs.LexicalScope, ref: Exprs.Val): Exprs.Val; appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; } export declare class Ident extends Val { name: string; constructor(name: string); toExpr(scope: Exprs.LexicalScope, ref: Exprs.Val): Exprs.Val; appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; isIdent(): boolean; } export declare function getName(name: string): Ident; export declare class Numeric extends Val { num: number; unit: string; constructor(num: number, unit: string); toExpr(scope: Exprs.LexicalScope, ref: Exprs.Val): Exprs.Val; appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; isNumeric(): boolean; } export declare class Num extends Val { num: number; constructor(num: number); toExpr(scope: Exprs.LexicalScope, ref: Exprs.Val): Exprs.Val; appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; isNum(): boolean; } export declare class Int extends Num { constructor(num: number); visit(visitor: Visitor): Val; } export declare class HexColor extends Val { hex: string; constructor(hex: string); appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; } export declare class URL extends Val { url: string; constructor(url: string); appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; } export declare class URange extends Val { urangeText: string; constructor(urangeText: string); appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; } export declare function appendList(buf: Base.StringBuffer, values: Val[], separator: string, toString: boolean): void; export declare class SpaceList extends Val { values: Val[]; constructor(values: Val[]); appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; isSpaceList(): boolean; } export declare class CommaList extends Val { values: Val[]; constructor(values: Val[]); appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; } export declare class Func extends Val { name: string; values: Val[]; constructor(name: string, values: Val[]); appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; } export declare class Expr extends Val { expr: Exprs.Val; constructor(expr: Exprs.Val); toExpr(): Exprs.Val; appendTo(buf: Base.StringBuffer, toString: boolean): void; visit(visitor: Visitor): Val; isExpr(): boolean; } /** * Custom property value, may be arbitrary token */ export declare class AnyToken extends Val { text: string; constructor(text: string); appendTo(buf: Base.StringBuffer, toString: boolean): void; } export declare function toNumber(val: Val, context: Exprs.Context): number; /** * Convert numeric value to px */ export declare function convertNumericToPx(val: Val, context: Exprs.Context): Numeric; export declare const ident: { [key: string]: Ident; }; export declare const hundredPercent: Numeric; export declare const fullWidth: Numeric; export declare const fullHeight: Numeric; export declare const numericZero: Numeric; export declare const fullURange: URange; export declare const processingOrder: { "font-size": number; "line-height": number; color: number; }; export declare function isDefaultingValue(value: Val): boolean; /** * Function to sort property names in the order they should be processed */ export declare function processingOrderFn(name1: string, name2: string): number; export declare function isCustomPropName(name: string): boolean;