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

Fix wrong TOC item retruns by Navigation.get() (#831)

This commit is contained in:
m8524769 2019-12-16 18:56:05 +08:00
parent a6bbf71363
commit 920846bda2
2 changed files with 30 additions and 1 deletions

View file

@ -93,7 +93,34 @@ class Navigation {
index = this.tocByHref[target]; index = this.tocByHref[target];
} }
return this.toc[index]; return this.getByIndex(target, index, this.toc);
}
/**
* Get an item from navigation subitems recursively by index
* @param {string} target
* @param {number} index
* @param {array} navItems
* @return {object} navItem
*/
getByIndex(target, index, navItems) {
if (navItems.length === 0) {
return;
}
const item = navItems[index];
if (item && (target === item.id || target === item.href)) {
return item;
} else {
let result;
for (let i = 0; i < navItems.length; ++i) {
result = this.getByIndex(target, index, navItems[i].subitems);
if (result) {
break;
}
}
return result;
}
} }
/** /**

View file

@ -41,4 +41,6 @@ export default class Navigation {
private parseNcx(navHtml: XMLDocument): Array<NavItem>; private parseNcx(navHtml: XMLDocument): Array<NavItem>;
private ncxItem(item: Element): NavItem; private ncxItem(item: Element): NavItem;
private getByIndex(target: string, index: number, navItems: NavItem[]): NavItem;
} }