diff --git a/src/index.js b/src/index.js index 30bef87..c81c653 100644 --- a/src/index.js +++ b/src/index.js @@ -5,6 +5,7 @@ import Contents from "./rendition/contents.js"; import Layout from "./rendition/layout.js"; import Epub from "./epub/epub.js"; import Manifest from "./manifest/manifest.js"; +import { generateLocations } from "./utils/locations.js" // import ePub from "./epub.js"; export { Publication, @@ -13,5 +14,6 @@ export { EpubCFI, Rendition, Contents, - Layout + Layout, + generateLocations }; diff --git a/src/publication/publication.js b/src/publication/publication.js index 47f3201..f66b1e9 100644 --- a/src/publication/publication.js +++ b/src/publication/publication.js @@ -313,12 +313,16 @@ class Publication { if (!items) { return; } - for (const item of items) { - const loc = new Locator({ url: item, cfi: item}); + let loc; + if (typeof item === "string") { + loc = new Locator({ url: item, cfi: item}); + } else { + const { url, cfi } = item; + loc = new Locator({ url: url || cfi, cfi: cfi || url }); + } this.data.locations.append(loc); } - return this.data.locations; } diff --git a/src/utils/locations.js b/src/utils/locations.js index 08f36b1..1100fa1 100644 --- a/src/utils/locations.js +++ b/src/utils/locations.js @@ -2,6 +2,7 @@ import {qs, sprint} from "./core.js"; import Queue from "./queue.js"; import EpubCFI from "./epubcfi.js"; import request from "./request.js"; +import Locator from "../publication/locator.js"; export async function generateLocations(sections, options={}) { let q = new Queue(); @@ -106,7 +107,7 @@ function parse(doc, cfiBase, chars) { range.endOffset = pos; // cfi = section.cfiFromRange(range); let cfi = new EpubCFI(range, cfiBase).toString(); - locations.push(cfi); + locations.push({cfi}); counter = 0; } } @@ -120,7 +121,7 @@ function parse(doc, cfiBase, chars) { range.endContainer = prev; range.endOffset = prev.length; let cfi = new EpubCFI(range, cfiBase).toString(); - locations.push(cfi); + locations.push({cfi}); counter = 0; } diff --git a/src/utils/queue.js b/src/utils/queue.js index b3df70b..32f27e3 100644 --- a/src/utils/queue.js +++ b/src/utils/queue.js @@ -1,4 +1,4 @@ -import { defer, requestAnimationFrame } from "./core.js"; +import { defer } from "./core.js"; /** * Queue for handling tasks one at a time