UNPKG

@vivliostyle/core

Version:

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

239 lines (238 loc) 8.94 kB
import * as Base from "./base"; import * as Css from "./css"; import * as CssCascade from "./css-cascade"; import * as CssStyler from "./css-styler"; import * as Exprs from "./exprs"; import * as Font from "./font"; import * as Task from "./task"; import * as TaskUtil from "./task-util"; import * as Vtree from "./vtree"; import { XmlDoc } from "./types"; export declare const frontEdgeBlackListHor: { [key: string]: string; }; export declare const frontEdgeBlackListVert: { [key: string]: string; }; export declare const frontEdgeUnforcedBreakBlackListHor: { [key: string]: string; }; export declare const frontEdgeUnforcedBreakBlackListVert: { [key: string]: string; }; export declare type CustomRenderer = (p1: Element, p2: Element, p3: { [key: string]: Css.Val; }) => Task.Result<Element>; export interface CustomRendererFactory { makeCustomRenderer(xmldoc: XmlDoc.XMLDocHolder): CustomRenderer; } /** * Creates an epubReadingSystem object in the iframe.contentWindow.navigator * when load event fires. */ export declare function initIFrame(iframe: HTMLIFrameElement): void; export interface StylerProducer { getStylerForDoc(xmldoc: XmlDoc.XMLDocHolder): CssStyler.AbstractStyler; } export declare class ViewFactory extends Base.SimpleEventTarget implements Vtree.LayoutContext { readonly flowName: string; readonly context: Exprs.Context; readonly viewport: Viewport; readonly styler: CssStyler.Styler; readonly regionIds: string[]; readonly xmldoc: XmlDoc.XMLDocHolder; readonly docFaces: Font.DocumentFaces; readonly footnoteStyle: CssCascade.ElementStyle; readonly stylerProducer: StylerProducer; readonly page: Vtree.Page; readonly customRenderer: CustomRenderer; readonly fallbackMap: { [key: string]: string; }; readonly documentURLTransformer: Base.DocumentURLTransformer; private static SVG_URL_ATTRIBUTES; document: Document; exprContentListener: Vtree.ExprContentListener; nodeContext: Vtree.NodeContext | null; viewRoot: Element | null; isFootnote: boolean; sourceNode: Node | null; offsetInNode: number; viewNode: Node | null; constructor(flowName: string, context: Exprs.Context, viewport: Viewport, styler: CssStyler.Styler, regionIds: string[], xmldoc: XmlDoc.XMLDocHolder, docFaces: Font.DocumentFaces, footnoteStyle: CssCascade.ElementStyle, stylerProducer: StylerProducer, page: Vtree.Page, customRenderer: CustomRenderer, fallbackMap: { [key: string]: string; }, documentURLTransformer: Base.DocumentURLTransformer); /** * @override */ clone(): Vtree.LayoutContext; createPseudoelementShadow(element: Element, isRoot: boolean, cascStyle: CssCascade.ElementStyle, computedStyle: { [key: string]: Css.Val; }, styler: CssStyler.AbstractStyler, context: Exprs.Context, parentShadow: Vtree.ShadowContext, subShadow: Vtree.ShadowContext): Vtree.ShadowContext; getPseudoMap(cascStyle: CssCascade.ElementStyle, regionIds: string[], isFootnote: boolean, nodeContext: Vtree.NodeContext, context: Exprs.Context): {}; createRefShadow(href: string, type: Vtree.ShadowType, element: Element, parentShadow: Vtree.ShadowContext, subShadow: Vtree.ShadowContext): Task.Result<Vtree.ShadowContext>; createShadows(element: Element, isRoot: any, cascStyle: CssCascade.ElementStyle, computedStyle: { [key: string]: Css.Val; }, styler: CssStyler.AbstractStyler, context: Exprs.Context, shadowContext: Vtree.ShadowContext): Task.Result<Vtree.ShadowContext>; /** * @override */ setViewRoot(viewRoot: Element, isFootnote: boolean): void; /** * @return vertical */ computeStyle(vertical: boolean, rtl: boolean, style: CssCascade.ElementStyle, computedStyle: { [key: string]: Css.Val; }): boolean; private inheritFromSourceParent; resolveURL(url: string): string; inheritLangAttribute(): void; transferPolyfilledInheritedProps(computedStyle: { [key: string]: Css.Val; }): void; resolveFormattingContext(nodeContext: Vtree.NodeContext, firstTime: boolean, display: Css.Ident, position: Css.Ident, float: Css.Ident, isRoot: boolean): void; /** * @return holding true if children should be processed */ private createElementView; private processAfterIfcontinues; /** * @return isSVGUrlAttribute */ isSVGUrlAttribute(attributeName: string): boolean; modifyElemDimensionWithImageResolution(images: { image: HTMLElement; element: HTMLElement; fetcher: TaskUtil.Fetcher<string>; }[], imageResolution: number, computedStyle: { [key: string]: Css.Val; }, isVertical: boolean): void; private preprocessElementStyle; private findAndProcessRepeatingElements; private processRepeatOnBreak; private createTextNodeView; private preprocessTextContent; /** * @return holding true if children should be processed */ createNodeView(firstTime: boolean, atUnforcedBreak: boolean): Task.Result<boolean>; /** * @override */ setCurrent(nodeContext: Vtree.NodeContext, firstTime: boolean, atUnforcedBreak?: boolean): Task.Result<boolean>; processShadowContent(pos: Vtree.NodeContext): Vtree.NodeContext; private nextPositionInTree; isTransclusion(element: Element, elementStyle: CssCascade.ElementStyle, transclusionType: string | null): boolean; /** * @override */ nextInTree(position: Vtree.NodeContext, atUnforcedBreak?: boolean): Task.Result<Vtree.NodeContext>; addImageFetchers(bg: Css.Val): void; applyComputedStyles(target: Element, computedStyle: { [key: string]: Css.Val; }): void; /** * @override */ applyPseudoelementStyle(nodeContext: Vtree.NodeContext, pseudoName: string, target: Element): void; /** * @override */ peelOff(nodeContext: Vtree.NodeContext, nodeOffset: number): Task.Result<Vtree.NodeContext>; createElement(ns: string, tag: string): Element; /** * @override */ applyFootnoteStyle(vertical: boolean, rtl: boolean, target: Element): boolean; /** * @override */ processFragmentedBlockEdge(nodeContext: Vtree.NodeContext): void; /** * @override */ convertLengthToPx(numeric: Css.Numeric, viewNode: Node, clientLayout: Vtree.ClientLayout): number | Css.Numeric; /** * Returns if two NodePositionStep are equivalent. */ isSameNodePositionStep(step1: Vtree.NodePositionStep, step2: Vtree.NodePositionStep): boolean; /** * @override */ isSameNodePosition(nodePosition1: Vtree.NodePosition, nodePosition2: Vtree.NodePosition): boolean; isPseudoelement(elem: any): boolean; } export declare const fb2Remap: { a: string; sub: string; sup: string; table: string; tr: string; td: string; th: string; code: string; body: string; p: string; v: string; date: string; emphasis: string; strong: string; style: string; strikethrough: string; }; export declare const propertiesNotPassedToDOM: { "box-decoration-break": boolean; "float-min-wrap-block": boolean; "float-reference": boolean; "flow-into": boolean; "flow-linger": boolean; "flow-options": boolean; "flow-priority": boolean; "footnote-policy": boolean; page: boolean; }; export declare class DefaultClientLayout implements Vtree.ClientLayout { layoutBox: Element; window: Window; constructor(viewport: Viewport); private subtractOffsets; /** * @override */ getRangeClientRects(range: Range): ClientRect[]; /** * @override */ getElementClientRect(element: Element): ClientRect; /** * @override */ getElementComputedStyle(element: Element): CSSStyleDeclaration; } export declare class Viewport { readonly window: Window; readonly fontSize: number; document: Document; root: HTMLElement; private outerZoomBox; contentContainer: HTMLElement; layoutBox: Element; width: number; height: number; constructor(window: Window, fontSize: number, opt_root?: HTMLElement, opt_width?: number, opt_height?: number); /** * Reset zoom. */ resetZoom(): void; /** * Zoom viewport. * @param width Overall width of contents before scaling (px) * @param height Overall height of contents before scaling (px) * @param scale Factor to which the viewport will be scaled. */ zoom(width: number, height: number, scale: number): void; /** * Remove all pages inside the viewport. */ clear(): void; }