@@ -1635,6 +1635,11 @@ function replaceLinks(contents, fn) {
16351635function substitute ( content , urls , replacements ) {
16361636 urls . forEach ( function ( url , i ) {
16371637 if ( url && replacements [ i ] ) {
1638+ try {
1639+ let decoded = decodeURIComponent ( url ) ;
1640+ content = content . replace ( new RegExp ( decoded . replace ( / [ - [ \] { } ( ) * + ? . , \\ ^ $ | # \s ] / g, "\\$&" ) , "g" ) , replacements [ i ] ) ;
1641+ } catch ( e ) {
1642+ }
16381643 url = url . replace ( / [ - [ \] { } ( ) * + ? . , \\ ^ $ | # \s ] / g, "\\$&" ) ;
16391644 content = content . replace ( new RegExp ( url , "g" ) , replacements [ i ] ) ;
16401645 }
@@ -2521,14 +2526,15 @@ var Locations = class {
25212526 var len = node . length ;
25222527 var dist ;
25232528 var pos = 0 ;
2524- if ( node . textContent . trim ( ) . length === 0 ) {
2525- return false ;
2526- }
2527- if ( counter == 0 ) {
2529+ if ( counter === 0 && range === void 0 ) {
25282530 range = this . createRange ( ) ;
25292531 range . startContainer = node ;
25302532 range . startOffset = 0 ;
25312533 }
2534+ if ( node . textContent . trim ( ) . length === 0 ) {
2535+ prev = node ;
2536+ return false ;
2537+ }
25322538 dist = _break - counter ;
25332539 if ( dist > len ) {
25342540 counter += len ;
@@ -2954,13 +2960,14 @@ var Packaging = class {
29542960 var selected = qsa ( manifestXml , "item" ) ;
29552961 var items = Array . prototype . slice . call ( selected ) ;
29562962 items . forEach ( function ( item ) {
2957- var id = item . getAttribute ( "id" ) , href = item . getAttribute ( "href" ) || "" , type2 = item . getAttribute ( "media-type" ) || "" , overlay = item . getAttribute ( "media-overlay" ) || "" , properties = item . getAttribute ( "properties" ) || "" ;
2963+ var id = item . getAttribute ( "id" ) , href = item . getAttribute ( "href" ) || "" , type2 = item . getAttribute ( "media-type" ) || "" , overlay = item . getAttribute ( "media-overlay" ) || "" , properties = item . getAttribute ( "properties" ) || "" , fallback = item . getAttribute ( "fallback" ) || "" ;
29582964 manifest [ id ] = {
29592965 "href" : href ,
29602966 // "url" : href,
29612967 "type" : type2 ,
29622968 "overlay" : overlay ,
2963- "properties" : properties . length ? properties . split ( " " ) : [ ]
2969+ "properties" : properties . length ? properties . split ( " " ) : [ ] ,
2970+ "fallback" : fallback
29642971 } ;
29652972 } ) ;
29662973 return manifest ;
@@ -3211,7 +3218,8 @@ var Navigation = class {
32113218 return this . toc ;
32123219 }
32133220 if ( target . indexOf ( "#" ) === 0 ) {
3214- index = this . tocById [ target . substring ( 1 ) ] ;
3221+ target = target . substring ( 1 ) ;
3222+ index = this . tocById [ target ] ;
32153223 } else if ( target in this . tocByHref ) {
32163224 index = this . tocByHref [ target ] ;
32173225 }
@@ -3836,6 +3844,7 @@ var PageList = class {
38363844 constructor ( xml ) {
38373845 this . pages = [ ] ;
38383846 this . locations = [ ] ;
3847+ this . hrefMap = { } ;
38393848 this . epubcfi = new epubcfi_default ( ) ;
38403849 this . firstPage = 0 ;
38413850 this . lastPage = 0 ;
@@ -3908,7 +3917,7 @@ var PageList = class {
39083917 var pageText = navLabelText . textContent ;
39093918 var content = qs ( item , "content" ) ;
39103919 var href = content . getAttribute ( "src" ) ;
3911- var page = parseInt ( pageText , 10 ) ;
3920+ var page = pageText ;
39123921 return {
39133922 "href" : href ,
39143923 "page" : page
@@ -3921,7 +3930,7 @@ var PageList = class {
39213930 * @return {object } pageListItem
39223931 */
39233932 item ( item ) {
3924- var content = qs ( item , "a" ) , href = content . getAttribute ( "href" ) || "" , text = content . textContent || "" , page = parseInt ( text ) , isCfi = href . indexOf ( "epubcfi" ) , split , packageUrl , cfi ;
3933+ var content = qs ( item , "a" ) , href = content . getAttribute ( "href" ) || "" , text = content . textContent || "" , page = text , isCfi = href . indexOf ( "epubcfi" ) , split , packageUrl , cfi ;
39253934 if ( isCfi != - 1 ) {
39263935 split = href . split ( "#" ) ;
39273936 packageUrl = split [ 0 ] ;
@@ -3947,18 +3956,19 @@ var PageList = class {
39473956 process ( pageList ) {
39483957 pageList . forEach ( function ( item ) {
39493958 this . pages . push ( item . page ) ;
3959+ this . hrefMap [ item . page ] = item . href ;
39503960 if ( item . cfi ) {
39513961 this . locations . push ( item . cfi ) ;
39523962 }
39533963 } , this ) ;
3954- this . firstPage = parseInt ( this . pages [ 0 ] ) ;
3955- this . lastPage = parseInt ( this . pages [ this . pages . length - 1 ] ) ;
3964+ this . firstPage = this . pages [ 0 ] ;
3965+ this . lastPage = this . pages [ this . pages . length - 1 ] ;
39563966 this . totalPages = this . lastPage - this . firstPage ;
39573967 }
39583968 /**
39593969 * Get a PageList result from a EpubCFI
39603970 * @param {string } cfi EpubCFI String
3961- * @return {number } page
3971+ * @return {string } page
39623972 */
39633973 pageFromCfi ( cfi ) {
39643974 var pg = - 1 ;
@@ -3980,20 +3990,25 @@ var PageList = class {
39803990 }
39813991 /**
39823992 * Get an EpubCFI from a Page List Item
3983- * @param {string | number } pg
3993+ * @param {string } pg
39843994 * @return {string } cfi
39853995 */
39863996 cfiFromPage ( pg ) {
39873997 var cfi = - 1 ;
3988- if ( typeof pg != "number" ) {
3989- pg = parseInt ( pg ) ;
3990- }
39913998 var index = this . pages . indexOf ( pg ) ;
39923999 if ( index != - 1 ) {
39934000 cfi = this . locations [ index ] ;
39944001 }
39954002 return cfi ;
39964003 }
4004+ /**
4005+ * Get the href for a page
4006+ * @param {string } pg
4007+ * @return {string } href
4008+ */
4009+ hrefFromPage ( pg ) {
4010+ return this . hrefMap [ pg ] ;
4011+ }
39974012 /**
39984013 * Get a Page from Book percentage
39994014 * @param {number } percent
0 commit comments