@vivliostyle/core
Version:
Vivliostyle Core library for HTML+CSS typesetting with EPUB/Web publications support
165 lines (164 loc) • 5.28 kB
TypeScript
import * as Base from "./base";
import * as Constants from "./constants";
import * as Epub from "./epub";
import * as Exprs from "./exprs";
import * as Font from "./font";
import * as Task from "./task";
import * as Vgen from "./vgen";
import * as Vtree from "./vtree";
export declare type Action = (p1: Base.JSON) => Task.Result<boolean>;
export declare type ViewportSize = {
marginLeft: number;
marginRight: number;
marginTop: number;
marginBottom: number;
width: number;
height: number;
};
export declare const VIEWPORT_STATUS_ATTRIBUTE = "data-vivliostyle-viewer-status";
export declare const VIEWPORT_SPREAD_VIEW_ATTRIBUTE = "data-vivliostyle-spread-view";
/**
* @enum {string}
*/
export declare enum PageViewMode {
SINGLE_PAGE = "singlePage",
SPREAD = "spread",
AUTO_SPREAD = "autoSpread"
}
export declare type SingleDocumentParam = {
url: string;
startPage: number | null;
skipPagesBefore: number | null;
};
export declare class AdaptiveViewer {
readonly window: Window;
readonly viewportElement: HTMLElement;
readonly instanceId: string;
readonly callbackFn: (p1: Base.JSON) => void;
fontMapper: Font.Mapper;
kick: () => void;
sendCommand: (p1: Base.JSON | string) => void;
resizeListener: () => void;
hyperlinkListener: Base.EventListener;
pageRuleStyleElement: HTMLElement;
pageSheetSizeAlreadySet: boolean;
renderTask: Task.Task | null;
actions: {
[key: string]: Action;
};
readyState: Constants.ReadyState;
packageURL: string[];
opf: Epub.OPFDoc;
haveZipMetadata: boolean;
touchActive: boolean;
touchX: number;
touchY: number;
needResize: boolean;
needRefresh: boolean;
viewportSize: ViewportSize | null;
currentPage: Vtree.Page;
currentSpread: Vtree.Spread | null;
pagePosition: Epub.Position | null;
fontSize: number;
zoom: number;
fitToScreen: boolean;
pageViewMode: PageViewMode;
waitForLoading: boolean;
renderAllPages: boolean;
pref: Exprs.Preferences;
pageSizes: {
width: number;
height: number;
}[];
viewport: Vgen.Viewport | null;
opfView: Epub.OPFView;
constructor(window: Window, viewportElement: HTMLElement, instanceId: string, callbackFn: (p1: Base.JSON) => void);
private init;
addLogListeners(): void;
private callback;
/**
* Set readyState and notify to listeners
*/
setReadyState(readyState: Constants.ReadyState): void;
loadPublication(command: Base.JSON): Task.Result<boolean>;
loadXML(command: Base.JSON): Task.Result<boolean>;
private render;
private resolveLength;
configure(command: Base.JSON): Task.Result<boolean>;
configurePlugins(command: Base.JSON): void;
/**
* Refresh view when a currently displayed page is replaced (by re-layout
* caused by cross reference resolutions)
*/
pageReplacedListener(evt: Base.Event): void;
/**
* Iterate through currently displayed pages and do something
*/
private forCurrentPages;
private removePageListeners;
/**
* Hide current pages (this.currentPage, this.currentSpread)
*/
private hidePages;
private showSinglePage;
private showPage;
private showSpread;
private reportPosition;
private createViewport;
private resolveSpreadView;
private updateSpreadView;
private sizeIsGood;
private setPageSize;
private setPageSizePageRules;
removePageSizePageRules(): void;
private reset;
/**
* Show current page or spread depending on the setting
* (this.pref.spreadView).
* @param sync If true, get the necessary page synchronously (not waiting
* another rendering task)
*/
private showCurrent;
setPageZoom(page: Vtree.Page): void;
setSpreadZoom(spread: Vtree.Spread): void;
/**
* @returns adjusted zoom factor
*/
getAdjustedZoomFactor(pageDimension: {
width: number;
height: number;
}): number;
/**
* Returns width and height of the spread, including the margin between pages.
*/
getSpreadDimensions(spread: Vtree.Spread): {
width: number;
height: number;
};
/**
* Returns zoom factor corresponding to the specified zoom type.
*/
queryZoomFactor(type: ZoomType): number;
/**
* @returns zoom factor to fit inside viewport
*/
calculateZoomFactorToFitInsideViewPort(pageDimension: {
width: number;
height: number;
}): number;
private cancelRenderingTask;
resize(): Task.Result<boolean>;
private sendLocationNotification;
getCurrentPageProgression(): Constants.PageProgression | null;
moveTo(command: Base.JSON): Task.Result<boolean>;
showTOC(command: Base.JSON): Task.Result<boolean>;
runCommand(command: Base.JSON): Task.Result<boolean>;
initEmbed(cmd: Base.JSON | string): void;
}
/**
* @enum {string}
*/
export declare enum ZoomType {
FIT_INSIDE_VIEWPORT = "fit inside viewport"
}
export declare function maybeParse(cmd: any): Base.JSON;