Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
prepend(section) {
var displaying = new core.defer();
let sections = [section];
// if (this.scrolling) {
// // queue
// console.log("queue");
// return;
// }
if (this.state.sections.includes(section)) {
return;
}
if (this.fixed && this.spreads) {
let prevSection = section.prev();
prevSection && sections.unshift(prevSection);
}
expand() {
var width, height;
var expanded;
var expanding;
__DEV__ && console.log("expanding", this.index);
// if (this.expanding || this.loading) {
// return;
// }
this.expanding = true;
if (this.props.layout.name === "pre-paginated") {
// this.expanding = false;
var defered = new core.defer();
let width = this.props.columnWidth;
let marginLeft = 0;
if (this.props.spreads && this.props.section.index === 0) {
width = this.props.columnWidth * 2;
marginLeft = this.props.columnWidth;
}
if (this.props.spreads &&
this.props.section.index === this.props.lastSectionIndex &&
this.props.section.index % 2 > 0 ) {
width = this.props.columnWidth * 2;
}
this.setState({
width,
load() {
var loaded = new core.defer();
if (!this.sectionRendering) {
this.sectionRendering = this.props.section.render(this.props.request);
}
// console.log("loading", this.props.section.index);
if (!this.state.contents) {
this.sectionRendering.then((contents) => {
if (!this.mounted) {
return; // Prevent updating an unmounted component
}
this.setState({ contents }, () => {
this.rendering.resolve();
loaded.resolve();
}).then((h) => {
var defered = new core.defer();
var margin = 0;
height = h;
// console.log("Height", height);
this.setState({ height, margin }, () => {
this.expanding = false;
defered.resolve();
});
return defered.promise;
});
}
append(section) {
var displaying = new core.defer();
let sections = [section];
if (this.state.sections.includes(section)) {
return;
}
if (this.fixed && this.spreads) {
let nextSection = section.next();
nextSection && sections.push(nextSection);
}
// __DEV__ && console.log("append", section.index);
this.setState({
sections: this.state.sections.concat(sections),
},
handleReadyRendition() {
this.updateRenditionTheme(this.themeStyle);
this.rendition.on(EVENTS.RENDITION.RELOCATED, location => this.relocatedHandler(location));
this.rendition.on('keyup', this.handleKeyUps);
this.rendition.on('click', () => this.closeSideBar());
window.addEventListener('mousedown', this.handleMouseDown, { passive: true });
this.loaded = true;
this.book.locations.generate(LOCATIONS_INTERVAL).then(locations => {
this.locations = locations;
this.$emit('startTracking');
this.updateContentStateInterval = setInterval(this.updateProgress, 30000);
// Update current location, .currentLocation() can return Promise or value
Promise.resolve()
.then(() => this.rendition.currentLocation())
.then(currentLocation => {
showEpub() {
// 生成Book对象
this.book = new Epub(DOWNLOAD_URL)
// 通过Book.renderTo生成Rendition对象
this.rendition = this.book.renderTo('read', {
width: window.innerWidth,
height: window.innerHeight,
// 兼容iOS
method: 'default'
})
// 通过Rendtion.display渲染电子书
this.rendition.display()
// 获取Theme对象
this.themes = this.rendition.themes
// 设置默认字体
this.setFontSize(this.defaultFontSize)
// 注册主题
this.registerTheme()
// 设置默认主题
function getInfo(filePath, callback) {
// parameter validation
if (!filePath || typeof filePath !== 'string') {
return;
}
// create a key from path
const key = genrateKey(filePath);
// file load on file protocol
const uri = fileUrl(filePath);
const book = new Book(uri);
book.ready
.then(() => {
return book.locations.generate();
})
.then(locations => {
const meta = book.package.metadata;
const info = {
id: key,
title: meta.title,
author: meta.creator,
publisher: meta.publisher,
path: uri,
bookmarks: [],
highlights: [],
_loadBook(bookUrl) {
__DEV__ && console.log("loading book: ", bookUrl);
this.book = ePub({
replacements: this.props.base64 || "none"
});
return this._openBook(bookUrl);
/*
var type = this.book.determineType(bookUrl);
var uri = new Uri(bookUrl);
if ((type === "directory") || (type === "opf")) {
return this._openBook(bookUrl);
} else {
return this.streamer.start()
.then((localOrigin) => {
this.setState({localOrigin})
return this.streamer.get(bookUrl);
viewport: () => this.ask("viewport"),
addStylesheet: (src) => this.ask("addStylesheet", [src]),
addStylesheetRules: (rules) => this.ask("addStylesheetRules", [rules]),
addScript: (src) => this.ask("addScript", [src]),
range: (_cfi, ignoreClass) => this.ask("addStylesheet", [_cfi, ignoreClass]),
map: (map) => this.ask("map", [map]),
columns: (width, height, columnWidth, gap) => this.ask("columns", [width, height, columnWidth, gap]),
fit: (width, height) => this.ask("fit", [width, height]),
size: (width, height) => this.ask("size", [width, height]),
mapPage: (cfiBase, start, end) => this.ask("mapPage", [cfiBase, start, end]),
locationOf: (target) => this.ask("locationOf", [target]),
}
EventEmitter(this.contents);
this.rendering = new core.defer();
this.rendered = this.rendering.promise;
this.loading = true;
this.expanded = false;
}