From 94f002e9cc28d677b004d42b9fcec818dd07f64f Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 1 Aug 2017 20:02:17 +0300 Subject: update epub.js --- lib/epub.js | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'lib/epub.js') diff --git a/lib/epub.js b/lib/epub.js index f5ad7db..277d998 100644 --- a/lib/epub.js +++ b/lib/epub.js @@ -6077,19 +6077,24 @@ EPUBJS.Locations.prototype.process = function(chapter) { var counter = 0; var prev; var cfi; + var _break = this.break; this.sprint(contents, function(node) { var len = node.length; var dist; var pos = 0; + if (node.textContent.trim().length === 0) { + return false; // continue + } + // Start range if (counter === 0) { range = doc.createRange(); range.setStart(node, 0); } - dist = this.break - counter; + dist = _break - counter; // Node is smaller than a break if(dist > len){ @@ -6098,28 +6103,31 @@ EPUBJS.Locations.prototype.process = function(chapter) { } while (pos < len) { - counter = this.break; - pos += this.break; + dist = _break - counter; + + if (counter === 0) { + pos += 1; + range = doc.createRange(); + range.setStart(node, pos); + } // Gone over - if(pos >= len){ + if(pos + dist >= len){ // Continue counter for next node - counter = len - (pos - this.break); - + counter += len - pos; + // break + pos = len; // At End } else { + // Advance pos + pos += dist; + // End the previous range range.setEnd(node, pos); cfi = chapter.cfiFromRange(range); this._locations.push(cfi); counter = 0; - - // Start new range - pos += 1; - range = doc.createRange(); - range.setStart(node, pos); } - } prev = node; -- cgit v1.2.3