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

Update location generation

This commit is contained in:
fredc 2022-04-29 16:58:02 -07:00
parent ff2693af47
commit 4458c7d584
4 changed files with 14 additions and 7 deletions

View file

@ -5,6 +5,7 @@ import Contents from "./rendition/contents.js";
import Layout from "./rendition/layout.js"; import Layout from "./rendition/layout.js";
import Epub from "./epub/epub.js"; import Epub from "./epub/epub.js";
import Manifest from "./manifest/manifest.js"; import Manifest from "./manifest/manifest.js";
import { generateLocations } from "./utils/locations.js"
// import ePub from "./epub.js"; // import ePub from "./epub.js";
export { export {
Publication, Publication,
@ -13,5 +14,6 @@ export {
EpubCFI, EpubCFI,
Rendition, Rendition,
Contents, Contents,
Layout Layout,
generateLocations
}; };

View file

@ -313,12 +313,16 @@ class Publication {
if (!items) { if (!items) {
return; return;
} }
for (const item of items) { 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); this.data.locations.append(loc);
} }
return this.data.locations; return this.data.locations;
} }

View file

@ -2,6 +2,7 @@ import {qs, sprint} from "./core.js";
import Queue from "./queue.js"; import Queue from "./queue.js";
import EpubCFI from "./epubcfi.js"; import EpubCFI from "./epubcfi.js";
import request from "./request.js"; import request from "./request.js";
import Locator from "../publication/locator.js";
export async function generateLocations(sections, options={}) { export async function generateLocations(sections, options={}) {
let q = new Queue(); let q = new Queue();
@ -106,7 +107,7 @@ function parse(doc, cfiBase, chars) {
range.endOffset = pos; range.endOffset = pos;
// cfi = section.cfiFromRange(range); // cfi = section.cfiFromRange(range);
let cfi = new EpubCFI(range, cfiBase).toString(); let cfi = new EpubCFI(range, cfiBase).toString();
locations.push(cfi); locations.push({cfi});
counter = 0; counter = 0;
} }
} }
@ -120,7 +121,7 @@ function parse(doc, cfiBase, chars) {
range.endContainer = prev; range.endContainer = prev;
range.endOffset = prev.length; range.endOffset = prev.length;
let cfi = new EpubCFI(range, cfiBase).toString(); let cfi = new EpubCFI(range, cfiBase).toString();
locations.push(cfi); locations.push({cfi});
counter = 0; counter = 0;
} }

View file

@ -1,4 +1,4 @@
import { defer, requestAnimationFrame } from "./core.js"; import { defer } from "./core.js";
/** /**
* Queue for handling tasks one at a time * Queue for handling tasks one at a time