mirror of
https://github.com/futurepress/epub.js.git
synced 2025-10-04 15:09:16 +02:00
This commit is contained in:
parent
eeb566c6f8
commit
61f4ab7c57
1 changed files with 36 additions and 21 deletions
|
@ -69,6 +69,41 @@ class Navigation {
|
||||||
return this.toc[index];
|
return this.toc[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
createTocItem(linkElement, id) {
|
||||||
|
var list = [],
|
||||||
|
tocLinkElms = linkElement.childNodes,
|
||||||
|
tocLinkArry = Array.prototype.slice.call(tocLinkElms);
|
||||||
|
var index = id ? id : 0;
|
||||||
|
for (var linkElm of tocLinkArry) {
|
||||||
|
if (linkElm.nodeName === 'li') {
|
||||||
|
var tocLink = qs(linkElm, 'a'),
|
||||||
|
tocLinkData = {
|
||||||
|
id: -1,
|
||||||
|
href: tocLink.getAttribute('href'),
|
||||||
|
label: tocLink.textContent,
|
||||||
|
parent: null
|
||||||
|
},
|
||||||
|
subItemElm = qs(linkElm, 'ol');
|
||||||
|
index++;
|
||||||
|
tocLinkData.id = index;
|
||||||
|
if (id) {
|
||||||
|
tocLinkData.parent = id;
|
||||||
|
}
|
||||||
|
list.push(tocLinkData);
|
||||||
|
if (subItemElm) {
|
||||||
|
var subitems = this.createTocItem(subItemElm, index);
|
||||||
|
if (subitems && subitems.length > 0) {
|
||||||
|
index = index + subitems.length;
|
||||||
|
list = list.concat(subitems);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse from a Epub > 3.0 Nav
|
* Parse from a Epub > 3.0 Nav
|
||||||
* @private
|
* @private
|
||||||
|
@ -77,27 +112,7 @@ class Navigation {
|
||||||
*/
|
*/
|
||||||
parseNav(navHtml){
|
parseNav(navHtml){
|
||||||
var navElement = querySelectorByType(navHtml, "nav", "toc");
|
var navElement = querySelectorByType(navHtml, "nav", "toc");
|
||||||
var navItems = navElement ? qsa(navElement, "li") : [];
|
return this.createTocItem(qs(navElement, "ol"));
|
||||||
var length = navItems.length;
|
|
||||||
var i;
|
|
||||||
var toc = {};
|
|
||||||
var list = [];
|
|
||||||
var item, parent;
|
|
||||||
|
|
||||||
if(!navItems || length === 0) return list;
|
|
||||||
|
|
||||||
for (i = 0; i < length; ++i) {
|
|
||||||
item = this.navItem(navItems[i]);
|
|
||||||
toc[item.id] = item;
|
|
||||||
if(!item.parent) {
|
|
||||||
list.push(item);
|
|
||||||
} else {
|
|
||||||
parent = toc[item.parent];
|
|
||||||
parent.subitems.push(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue