From 0a9c418711d41d1a29b1fae8a6d048ae0b71c4b9 Mon Sep 17 00:00:00 2001 From: John Factotum <50942278+johnfactotum@users.noreply.github.com> Date: Sun, 24 Sep 2023 02:37:33 +0800 Subject: [PATCH] Allow getting page/TOC item for ranges --- view.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/view.js b/view.js index 789f099..805c179 100644 --- a/view.js +++ b/view.js @@ -241,7 +241,7 @@ export class View extends HTMLElement { doc.addEventListener('click', e => { const [value, range] = overlayer.hitTest(e) if (value && !value.startsWith(SEARCH_PREFIX)) { - this.#emit('show-annotation', { value, range }) + this.#emit('show-annotation', { value, index, range }) } }, false) @@ -258,7 +258,7 @@ export class View extends HTMLElement { const { index, anchor } = resolved const { doc } = this.#getOverlayer(index) const range = anchor(doc) - this.#emit('show-annotation', { value, range }) + this.#emit('show-annotation', { value, index, range }) } } getCFI(index, range) { @@ -320,6 +320,11 @@ export class View extends HTMLElement { for (const { doc } of this.renderer.getContents()) doc.defaultView.getSelection().removeAllRanges() } + getProgressOf(index, range) { + const tocItem = this.#tocProgress?.getProgress(index, range) + const pageItem = this.#pageProgress?.getProgress(index, range) + return { tocItem, pageItem } + } async getTOCItemOf(target) { try { const { index, anchor } = await this.resolveNavigation(target)