From 4458c7d5845f47b0a387ca646f5ec04c479a616d Mon Sep 17 00:00:00 2001 From: fredc Date: Fri, 29 Apr 2022 16:58:02 -0700 Subject: [PATCH] Update location generation --- src/index.js | 4 +++- src/publication/publication.js | 10 +++++++--- src/utils/locations.js | 5 +++-- src/utils/queue.js | 2 +- 4 files changed, 14 insertions(+), 7 deletions(-) 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