Fix EPUB.js CFI navigation bug

- Add patch-package to client dependencies
- Add postinstall script to apply patches automatically
- Add patch for EPUB.js v0.3.93 to fix CFI navigation
- Changes scrollBy to scrollTo in continuous manager for proper absolute positioning
- Fixes issue where CFI navigation loads content but target is outside viewport

This resolves CFI-based features like bookmarks, highlights, and reading position sync.
This commit is contained in:
Stephen Fenton 2025-07-29 17:39:02 -07:00
parent 0107cb4782
commit a498fdf17d
2 changed files with 40 additions and 1 deletions

View File

@ -12,7 +12,8 @@
"generate": "nuxt generate",
"test": "npm run compile-tailwind && cypress run --component --browser chrome",
"test-visually": "npm run compile-tailwind && cypress open --component --browser chrome",
"compile-tailwind": "npx @tailwindcss/cli -i ./assets/tailwind.css -o ./cypress/support/tailwind.compiled.css"
"compile-tailwind": "npx @tailwindcss/cli -i ./assets/tailwind.css -o ./cypress/support/tailwind.compiled.css",
"postinstall": "patch-package"
},
"author": "advplyr",
"license": "ISC",
@ -38,6 +39,7 @@
"devDependencies": {
"@nuxtjs/pwa": "^3.3.5",
"@tailwindcss/cli": "^4.0.14",
"patch-package": "^8.0.0",
"postcss": "^8.3.6",
"tailwindcss": "^4.0.13"
},

View File

@ -0,0 +1,37 @@
diff --git a/node_modules/epubjs/lib/managers/continuous/index.js b/node_modules/epubjs/lib/managers/continuous/index.js
index 4912876..a27dec2 100644
--- a/node_modules/epubjs/lib/managers/continuous/index.js
+++ b/node_modules/epubjs/lib/managers/continuous/index.js
@@ -91,14 +91,12 @@ class ContinuousViewManager extends _default2.default {
} else {
distX = Math.floor(offset.left / this.layout.delta) * this.layout.delta;
offsetX = distX + this.settings.offsetDelta;
- }
-
- if (distX > 0 || distY > 0) {
- this.scrollBy(distX, distY, true);
- }
- }
+ }
- afterResized(view) {
+ if (distX > 0 || distY > 0) {
+ this.scrollTo(distX, distY, true);
+ }
+ } afterResized(view) {
this.emit(_constants.EVENTS.MANAGERS.RESIZE, view.section);
} // Remove Previous Listeners if present
diff --git a/node_modules/epubjs/src/managers/continuous/index.js b/node_modules/epubjs/src/managers/continuous/index.js
index d61f8f7..0743938 100644
--- a/node_modules/epubjs/src/managers/continuous/index.js
+++ b/node_modules/epubjs/src/managers/continuous/index.js
@@ -90,7 +90,7 @@ class ContinuousViewManager extends DefaultViewManager {
}
if (distX > 0 || distY > 0) {
- this.scrollBy(distX, distY, true);
+ this.scrollTo(distX, distY, true);
}
}