1
0
Fork 0
mirror of https://github.com/futurepress/epub.js.git synced 2025-10-02 14:49:16 +02:00

Clean up pageList

This commit is contained in:
Fred Chasen 2017-11-06 11:39:14 -08:00
parent 68956abeb9
commit c977fc10d4
6 changed files with 83 additions and 82 deletions

View file

@ -3,3 +3,11 @@ node_js:
- "node" - "node"
notifications: notifications:
email: false email: false
sudo: false
addons:
chrome: stable
cache:
directories:
- node_modules
script:
- npm test

View file

@ -100,7 +100,7 @@ module.exports = function(config) {
// start these browsers // start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['PhantomJS'], browsers: ['ChromeHeadless'],
// Continuous Integration mode // Continuous Integration mode

96
package-lock.json generated
View file

@ -1,6 +1,6 @@
{ {
"name": "epubjs", "name": "epubjs",
"version": "0.3.53", "version": "0.3.57",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -27,6 +27,16 @@
"through2": "2.0.3" "through2": "2.0.3"
} }
}, },
"JSONStream": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz",
"integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
"dev": true,
"requires": {
"jsonparse": "1.3.1",
"through": "2.3.8"
}
},
"abbrev": { "abbrev": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
@ -5478,6 +5488,15 @@
"integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
"dev": true "dev": true
}, },
"fs-access": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
"integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
"dev": true,
"requires": {
"null-check": "1.0.0"
}
},
"fs-exists-sync": { "fs-exists-sync": {
"version": "0.1.0", "version": "0.1.0",
"resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz",
@ -6276,14 +6295,6 @@
} }
} }
}, },
"string_decoder": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"requires": {
"safe-buffer": "5.0.1"
}
},
"string-width": { "string-width": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
@ -6294,6 +6305,14 @@
"strip-ansi": "3.0.1" "strip-ansi": "3.0.1"
} }
}, },
"string_decoder": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"requires": {
"safe-buffer": "5.0.1"
}
},
"stringstream": { "stringstream": {
"version": "0.0.5", "version": "0.0.5",
"bundled": true, "bundled": true,
@ -7909,6 +7928,12 @@
"sntp": "1.0.9" "sntp": "1.0.9"
} }
}, },
"he": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
"integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
"dev": true
},
"highlight.js": { "highlight.js": {
"version": "9.12.0", "version": "9.12.0",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz",
@ -8872,16 +8897,6 @@
"integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
"dev": true "dev": true
}, },
"JSONStream": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz",
"integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
"dev": true,
"requires": {
"jsonparse": "1.3.1",
"through": "2.3.8"
}
},
"jsprim": { "jsprim": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz",
@ -9042,6 +9057,16 @@
} }
} }
}, },
"karma-chrome-launcher": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz",
"integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==",
"dev": true,
"requires": {
"fs-access": "1.0.1",
"which": "1.2.14"
}
},
"karma-mocha": { "karma-mocha": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-1.3.0.tgz", "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-1.3.0.tgz",
@ -10181,9 +10206,9 @@
} }
}, },
"mocha": { "mocha": {
"version": "3.5.0", "version": "3.5.3",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.0.tgz", "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz",
"integrity": "sha512-pIU2PJjrPYvYRqVpjXzj76qltO9uBYI7woYAMoxbSefsa+vqAfptjoeevd6bUgwD0mPIO+hv9f7ltvsNreL2PA==", "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==",
"dev": true, "dev": true,
"requires": { "requires": {
"browser-stdout": "1.3.0", "browser-stdout": "1.3.0",
@ -10193,6 +10218,7 @@
"escape-string-regexp": "1.0.5", "escape-string-regexp": "1.0.5",
"glob": "7.1.1", "glob": "7.1.1",
"growl": "1.9.2", "growl": "1.9.2",
"he": "1.1.1",
"json3": "3.3.2", "json3": "3.3.2",
"lodash.create": "3.1.1", "lodash.create": "3.1.1",
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
@ -10270,13 +10296,13 @@
"integrity": "sha1-ElGkuixEqS32mJvQKdoSGk8hCbA=", "integrity": "sha1-ElGkuixEqS32mJvQKdoSGk8hCbA=",
"dev": true, "dev": true,
"requires": { "requires": {
"JSONStream": "1.3.1",
"browser-resolve": "1.11.2", "browser-resolve": "1.11.2",
"concat-stream": "1.5.2", "concat-stream": "1.5.2",
"defined": "1.0.0", "defined": "1.0.0",
"detective": "4.5.0", "detective": "4.5.0",
"duplexer2": "0.1.4", "duplexer2": "0.1.4",
"inherits": "2.0.3", "inherits": "2.0.3",
"JSONStream": "1.3.1",
"parents": "1.0.1", "parents": "1.0.1",
"readable-stream": "2.3.3", "readable-stream": "2.3.3",
"resolve": "1.3.3", "resolve": "1.3.3",
@ -10612,6 +10638,12 @@
"path-key": "2.0.1" "path-key": "2.0.1"
} }
}, },
"null-check": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
"integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
"dev": true
},
"num2fraction": { "num2fraction": {
"version": "1.2.2", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
@ -13549,15 +13581,6 @@
"integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
"dev": true "dev": true
}, },
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"string-template": { "string-template": {
"version": "0.2.1", "version": "0.2.1",
"resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz",
@ -13575,6 +13598,15 @@
"strip-ansi": "3.0.1" "strip-ansi": "3.0.1"
} }
}, },
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"stringify-entities": { "stringify-entities": {
"version": "1.3.1", "version": "1.3.1",
"resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.1.tgz", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.1.tgz",

View file

@ -9,7 +9,7 @@
"test": "test" "test": "test"
}, },
"scripts": { "scripts": {
"test": "./node_modules/.bin/karma start --single-run --browsers PhantomJS", "test": "./node_modules/.bin/karma start --single-run --browsers ChromeHeadless",
"documentation": "./node_modules/.bin/gulp docs", "documentation": "./node_modules/.bin/gulp docs",
"lint": "./node_modules/.bin/eslint -c .eslintrc.js src; exit 0", "lint": "./node_modules/.bin/eslint -c .eslintrc.js src; exit 0",
"start": "./node_modules/.bin/webpack-dev-server --inline --d", "start": "./node_modules/.bin/webpack-dev-server --inline --d",
@ -51,12 +51,13 @@
"jquery": "^3.2.1", "jquery": "^3.2.1",
"jshint": "^2.9.5", "jshint": "^2.9.5",
"karma": "^1.7.0", "karma": "^1.7.0",
"karma-chrome-launcher": "^2.2.0",
"karma-mocha": "^1.3.0", "karma-mocha": "^1.3.0",
"karma-mocha-reporter": "^2.2.4", "karma-mocha-reporter": "^2.2.4",
"karma-phantomjs-launcher": "^1.0.4", "karma-phantomjs-launcher": "^1.0.4",
"karma-sourcemap-loader": "^0.3.7", "karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^2.0.4", "karma-webpack": "^2.0.4",
"mocha": "^3.5.0", "mocha": "^3.5.3",
"mocha-loader": "^1.1.1", "mocha-loader": "^1.1.1",
"morgan": "^1.8.2", "morgan": "^1.8.2",
"optimist": "^0.6.1", "optimist": "^0.6.1",

View file

@ -125,7 +125,7 @@ class Book {
/** /**
* @property {PageList} pagelist * @property {PageList} pagelist
*/ */
this.pageList = new PageList(); this.pageList = undefined;
/** /**
* @property {Url} url * @property {Url} url
@ -441,11 +441,14 @@ class Book {
let navPath = opf.navPath || opf.ncxPath; let navPath = opf.navPath || opf.ncxPath;
let toc = opf.toc; let toc = opf.toc;
// From json manifest
if (toc) { if (toc) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.navigation = new Navigation(toc); this.navigation = new Navigation(toc);
this.pageList = new PageList(); // TODO: handle page lists if (opf.pageList) {
this.pageList = new PageList(opf.pageList); // TODO: handle page lists from Manifest
}
resolve(this.navigation); resolve(this.navigation);
}); });

View file

@ -24,7 +24,6 @@ class PageList {
this.toc = undefined; this.toc = undefined;
this.ncx = undefined; this.ncx = undefined;
this.lastPage
if (xml) { if (xml) {
this.pageList = this.parse(xml); this.pageList = this.parse(xml);
} }
@ -43,9 +42,9 @@ class PageList {
var ncx = qs(xml, "ncx"); var ncx = qs(xml, "ncx");
if(html) { if(html) {
this.toc = this.parseNav(xml); return this.parseNav(xml);
} else if(ncx){ // Not supported } else if(ncx){ // Not supported
// this.toc = this.parseNcx(xml); // return this.parseNcx(xml);
return; return;
} }
@ -126,48 +125,6 @@ class PageList {
this.totalPages = this.lastPage - this.firstPage; this.totalPages = this.lastPage - this.firstPage;
} }
/**
* Replace HREFs with CFI
* TODO: implement getting CFI from Href
*/
addCFIs() {
this.pageList.forEach(function(pg){
if(!pg.cfi) {
// epubcfi.generateCfiFromHref(pg.href, book).then(function(cfi){
// pg.cfi = cfi;
// pg.packageUrl = book.settings.packageUrl;
// });
}
});
}
/*
EPUBJS.generateCfiFromHref(href, book) {
var uri = EPUBJS.core.uri(href);
var path = uri.path;
var fragment = uri.fragment;
var spinePos = book.spineIndexByURL[path];
var loaded;
var deferred = new RSVP.defer();
var epubcfi = new EPUBJS.EpubCFI();
var spineItem;
if(typeof spinePos !== "undefined"){
spineItem = book.spine[spinePos];
loaded = book.loadXml(spineItem.url);
loaded.then(function(doc){
var element = doc.getElementById(fragment);
var cfi;
cfi = epubcfi.generateCfiFromElement(element, spineItem.cfiBase);
deferred.resolve(cfi);
});
}
return deferred.promise;
}
*/
/** /**
* Get a PageList result from a EpubCFI * Get a PageList result from a EpubCFI
* @param {string} cfi EpubCFI String * @param {string} cfi EpubCFI String