1
0
Fork 0
mirror of https://github.com/futurepress/epub.js.git synced 2025-10-04 15:09:16 +02:00
Sunil-BB 2017-01-13 17:58:51 +05:30 committed by Sunil.Belakeri
parent eeb566c6f8
commit 61f4ab7c57

View file

@ -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;
} }
/** /**