-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathepub.js
More file actions
91 lines (78 loc) · 2.17 KB
/
epub.js
File metadata and controls
91 lines (78 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
module.exports = (filepath) => {
const container = document.getElementById('container');
container.innerHTML = `
<div id="area"></div>
<a id="prev" href="#prev" class="arrow">‹</a>
<a id="next" href="#next" class="arrow">›</a>
`;
const ePub = require('epubjs');
book = new ePub.default(filepath);
rendition = book.renderTo('area', {
width: 800,
height: 600,
spread: 'always',
flow: 'paginated',
});
rendition.display();
book.ready.then(function () {
var next = document.getElementById('next');
next.addEventListener(
'click',
function (e) {
book.package.metadata.direction === 'rtl'
? rendition.prev()
: rendition.next();
e.preventDefault();
},
false
);
var prev = document.getElementById('prev');
prev.addEventListener(
'click',
function (e) {
book.package.metadata.direction === 'rtl'
? rendition.next()
: rendition.prev();
e.preventDefault();
},
false
);
var keyListener = function (e) {
// Left Key
if ((e.keyCode || e.which) == 37) {
book.package.metadata.direction === 'rtl'
? rendition.next()
: rendition.prev();
}
// Right Key
if ((e.keyCode || e.which) == 39) {
book.package.metadata.direction === 'rtl'
? rendition.prev()
: rendition.next();
}
};
rendition.on('keyup', keyListener);
document.addEventListener('keyup', keyListener, false);
});
rendition.on('relocated', function (location) {
console.log(location);
var next =
book.package.metadata.direction === 'rtl'
? document.getElementById('prev')
: document.getElementById('next');
var prev =
book.package.metadata.direction === 'rtl'
? document.getElementById('next')
: document.getElementById('prev');
if (location.atEnd) {
next.style.visibility = 'hidden';
} else {
next.style.visibility = 'visible';
}
if (location.atStart) {
prev.style.visibility = 'hidden';
} else {
prev.style.visibility = 'visible';
}
});
};