@vivliostyle/core
Version:
Vivliostyle Core library for HTML+CSS typesetting with EPUB/Web publications support
239 lines (238 loc) • 8.94 kB
TypeScript
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;
}