John Factotum
052123beaf
Add an EventTarget for transforming the book
...
And use it to do paginator-specific CSS replacements.
And use it to catch loading errors in reader.js.
Fixes #14
Closes #18
2025-03-29 15:09:23 +08:00
John Factotum
d4696cea4b
FB2: only check <binary>s when getting data
...
Fixes https://github.com/johnfactotum/foliate/issues/1492
2025-03-12 17:28:30 +08:00
John Factotum
34b9079a1b
Fix comparing CFIs with different number of !s
...
Fixes #45
2024-12-21 04:56:43 +08:00
John Factotum
63a5dbf3e3
Don't scroll to anchor if caret's moved by pointer
...
In Safari, clicking on links triggers `selectionchange`. Since we do not
move the caret when flipping through pages, when you have flipped to the
next or previous pages and click on any link, it would take you back to
the caret instead of activating the link.
Note that the bug occurs in Safari 17 but not in WebKitGTK 2.46.
Not sure if there's a way to fix this and still retain the "set anchor
to caret on click" behavior. But I guess this behavior isn't really that
essential, anyway. So removing it for now.
Fixes #44
2024-12-12 09:35:33 +08:00
John Factotum
cc2882ff39
Update README.md
...
Reflect the changes after 022ea7da87 , and
other clarifications.
2024-12-02 18:39:45 +08:00
John Factotum
2e30f3db35
Footnotes: improve superscript detection
2024-12-02 17:57:01 +08:00
John Factotum
6f8eb1b85b
Fix missing trailing comma
2024-12-02 09:54:55 +08:00
John Factotum
936c4f78e5
FB2: fix tables
...
Fixes https://github.com/johnfactotum/foliate/issues/1445
2024-12-02 09:47:58 +08:00
John Factotum
b5ae4c22c1
CBZ: remove body margin
...
Fixes https://github.com/johnfactotum/foliate/issues/1421
2024-11-04 05:37:40 +08:00
John Factotum
24187b79f9
EPUB: fix opf:file-as
...
Fixes #39
2024-11-03 11:19:14 +08:00
John Factotum
519c0329b2
PDF: improve metadata
2024-10-18 13:42:49 +08:00
John Factotum
022ea7da87
Make <foliate-view> handle opening files directly
2024-10-12 10:48:51 +08:00
John Factotum
76c15569db
Fix linguist-vendored attribute
2024-10-12 07:55:17 +08:00
John Factotum
ae61c5e85f
Make zip.js, fflate, and PDF.js dev dependencies
...
Previously, zip.js and fflate were built from the main Foliate repo.
And PDF.js files were copied manually. Now they all build here.
Unfortunately, two CSS files still need to be copied manually.
2024-10-12 07:44:33 +08:00
John Factotum
b82ec0b294
FXL: add zoom setting
...
The value of the `zoom` attribute can be either `"fit-page"` (default),
`"fit-width"`, or a number.
2024-10-11 06:41:32 +08:00
John Factotum
7cbc36b489
Media Overlay: fix skipping
...
- Fix not seeking when skipping to another section when paused
- Fix not playing when skipping when not paused in WebKit
2024-10-07 11:00:57 +08:00
John Factotum
fa85f135df
EPUB: fix metadata
2024-10-06 11:29:32 +08:00
John Factotum
2e8b4fab0d
OPDS: improve metadata
2024-10-06 10:16:46 +08:00
John Factotum
e384aaf6dd
Media Overlay: add stop() method
...
And don't remove highlight when pausing
2024-09-30 19:31:14 +08:00
John Factotum
bf9adef636
Paginator: react to selection only on input
2024-09-30 19:00:11 +08:00
John Factotum
916dfb13ac
View: don't destroy book on close
...
The book object is not created by the view class so it has no business
destroying it.
Fix bug caused by 1e952102bd where closing
the footnote view destroys the book, when it should not be destroyed,
being still displayed by another view
2024-09-30 18:50:07 +08:00
John Factotum
4cd2ca2eb3
PDF: fix comment
2024-09-28 19:32:14 +08:00
John Factotum
3409674e66
PDF: set isEvalSupported to false
...
`eval()` would be blocked by CSP and thus not supported
2024-09-28 19:17:12 +08:00
John Factotum
45d67a0db3
PDF: add CMaps and fonts
2024-09-28 17:41:38 +08:00
John Factotum
be76724699
PDF: fix text selection
2024-09-28 17:38:59 +08:00
John Factotum
ffb4f7b74e
Create FUNDING.yml
2024-09-28 06:39:01 +00:00
John Factotum
693341f008
PDF: fix links
2024-09-28 14:29:47 +08:00
John Factotum
1e952102bd
PDF: rerender when scale changes
...
The fixed-layout renderer now accepts an object for the return value of
`load()` (on the `book.sections` items). If it's an object, the `src`
is the URL of the section, and `onZoom`, if present, will be called
when the viewport is zoomed. With this you can scale the page yourself
rather than relying on the renderer's own scaling with CSS transform.
Also upgraded to PDF.js 4.6.82. And now internal links are broken...
Don't know how to fix that yet.
2024-09-28 12:12:59 +08:00
John Factotum
ba403301a2
View: add ability to automatically hide cursor
...
Controlled by the boolean attribute `autohide-cursor`
2024-09-27 10:24:45 +08:00
John Factotum
f3afcabd96
Media Overlay: support playback-active-class
2024-09-26 13:23:40 +08:00
John Factotum
357c129b5d
Media Overlay: don't seek in canplaythrough
...
So this is what was causing the `canplaythrough` loop in Chromium and
Firefox.
2024-09-26 12:56:09 +08:00
John Factotum
22189f184e
EPUB: fix media overlay playback
...
For some reason `canplaythrough` is firing more than once
2024-09-26 12:37:06 +08:00
John Factotum
e94b85ce09
FB2: don't throw when image has no xlink:href
...
Fixes #35
2024-09-25 23:15:02 +08:00
John Factotum
dcd4ff403e
Paginator: fix scrolling to collapsed ranges that contain elements
2024-09-25 22:41:20 +08:00
John Factotum
02a24ea25c
Grammar
2024-09-25 22:33:02 +08:00
John Factotum
59a5aa22a0
Paginator: respond to selection change
...
The view follows caret when using caret browsing (F7). Also allows
selecting across pages. And if you click on or select some text and
resize the window, the caret/selection always stays visible.
Some quirks regarding caret browsing:
- In Chromium, in paginated mode, it scrolls when changing selection
(https://issues.chromium.org/issues/40889650 )
- In WebKitGTK, in scrolled mode, the view doesn't follow the caret
(which would be a WebKit bug)
2024-09-24 11:54:47 +08:00
John Factotum
329e22227a
Paginator: fix offset
...
What's `margin` doing here?! It's like this since the first commit, but
it makes no sense... I think I added it incorrectly, being misled by
the getBoundingClientRect bug in Firefox...
2024-09-24 11:36:43 +08:00
John Factotum
59bb647057
Paginator: fix visible range in Firefox
2024-09-24 11:34:57 +08:00
John Factotum
4ef87c2ca7
Paginator: fix caret position when navigating
...
The effect of this is more obvious if you enable caret browsing (F7 in
all browsers). Previously, if you go to a fragment, the caret isn't
moved. Now it works as expected.
2024-09-23 20:33:46 +08:00
John Factotum
b8a0d11910
Paginator: fix changing background in Chromium
2024-09-23 16:48:11 +08:00
John Factotum
541bc07b6f
EPUB: redo metadata parsing
...
- Support the `prefix` attribute (for the `property` attr on `<meta>`)
- Localized titles, names (including `sortAs`)
- `belongsTo`, including `calibre:series`
- `altIdentifier`, converted to URN where possible
- Remove `producer`. It's now `contributor` with `role: 'bkp'`.
NOTE: this is a breaking change if you assumed that `title` will always
be a string, `author` will always be an array, etc.
2024-09-18 11:28:08 +08:00
John Factotum
e6937eed15
Paginator: fix focus lost when loading new section
...
Also add method for setting focus on the content window
2024-09-15 13:13:44 +08:00
John Factotum
c17b542b5c
Paginator: needn't fix tabbing in scrolled mode
2024-09-14 23:18:27 +08:00
John Factotum
3b96ddf3e6
Paginator: fix scroll offset when tabbing
2024-09-14 23:14:04 +08:00
John Factotum
b5d0453004
FXL: ignore linear & default to odd pages right
...
This matches the behavior of other reading systems. See
https://github.com/johnfactotum/foliate/issues/1318#issuecomment-2349375230
2024-09-14 01:21:54 +08:00
John Factotum
327031aca1
Paginator: add scroll event
...
Unlike `relocate`, which is debounced, a scroll event is useful when you
want to do stuff as soon as it scrolls.
2024-09-12 05:30:58 +08:00
John Factotum
3658b19a86
Quote Image: fix overflow
...
Note: simply setting `display: none` works in Firefox, but not in WebKit
Chromium.
2024-09-12 05:25:42 +08:00
John Factotum
0b9fac8ff3
Add module for generating quote images
2024-09-11 14:12:27 +08:00
John Factotum
ffceb8a4aa
Reader: update vendored libraries
...
Note: these are built from running `npm run build` from the main repo
https://github.com/johnfactotum/foliate
2024-09-11 13:50:39 +08:00
John Factotum
9ff893f3e7
Treat XHTML without xmlns as HTML
...
The XHTML 1.1 spec says
The start tag of the root element of the document MUST explicitly
contain an xmlns declaration for the XHTML namespace
There doesn't seem to be such a requirement in the WHATWG spec. But at
any rate browsers won't render it properly without the XHTML namespace.
2024-07-27 09:46:04 +08:00
John Factotum
660f6bbf1e
KF8: fix contributor not exposed in metadata
2024-07-15 00:11:25 +08:00
John Factotum
5cda2125d8
MOBI6: empty string instead of undefined in TOC
...
Should fix https://github.com/johnfactotum/foliate/issues/1347
2024-07-15 00:08:50 +08:00
John Factotum
92964699af
Paginator: make grid columns follow text block
...
This is a purely internal change, but it might make things easier in the
future if one wants to place stuff on the margins (e.g. to fade the edge
of the iframe when animating, or place prev/next buttons on the sides)
2024-06-22 18:34:19 +08:00
John Factotum
51c02bf594
EPUB: support display-options.xml
2024-06-22 01:42:47 +08:00
John Factotum
37626ba44a
PDF: default to odd pages right
2024-06-22 01:40:58 +08:00
John Factotum
8c378d68fc
README: fix warning formatting
...
Also add link to https://github.com/johnfactotum/epub-test
2024-05-17 05:10:55 +00:00
John Factotum
7372c658cf
Fix package.json
2024-04-27 16:51:04 +08:00
John Factotum
b7ff640943
Paginator: prevent spread in portrait
...
Or, for vertical writing, in landscape
2024-04-27 16:14:36 +08:00
John Factotum
5600b6c0dc
Migrate to ESLint 9 and fix linting issues
2024-04-23 12:59:31 +08:00
John Factotum
04b8789267
Footnotes: reject when failing to show footnote
...
Now `handle()` could return either undefined or a promise, which you can
catch to handle the case where footnote fails to show.
Also improve footnote extraction.
2024-03-26 16:41:30 +08:00
John Factotum
b45e08b10b
Paginator: fix unnecessary wrapping in tables
...
Fixes https://github.com/johnfactotum/foliate/issues/1278
2024-03-25 05:52:49 +08:00
John Factotum
b0d7ed481f
Paginator: destroy view before removing it
2024-03-23 12:12:39 +08:00
John Factotum
18159a4d07
Don't check document's existence when expanding
...
`expand()` is only called after `render()`, which assumes that it exists
2024-03-21 20:22:31 +08:00
John Factotum
b0a869b7ed
Fix page end cut off when starting with page break
...
Fixes https://github.com/johnfactotum/foliate/issues/1179
2024-03-20 08:44:47 +08:00
John Factotum
d9da576611
CBZ: add support for AVIF
...
Also throw when there are no images to show
2024-01-20 12:09:02 +08:00
John Factotum
35f749dd7c
CBZ: add JPEG XL support
2023-12-30 12:21:08 +08:00
John Factotum
1ff2d530c4
Add support for dictd and StarDict dictionaries
2023-12-16 15:04:43 +08:00
John Factotum
ad5ec4d0e9
Add OPDS
2023-12-16 14:45:05 +08:00
John Factotum
7d55731faf
Footnotes: include links with <length> or <percentage> vertical-align
2023-12-04 03:50:15 +08:00
John Factotum
449842fd0a
Fix argument
2023-12-04 03:48:41 +08:00
John Factotum
cbe9e0009c
Make animation setting an attribute instead of a property
2023-11-28 11:07:56 +08:00
John Factotum
2ea63929c7
Fix broken layout when book has !important styles
2023-11-15 04:33:02 +08:00
John Factotum
f75fbba096
Foonotes: get note type
...
Also rename footnote.js -> footnotes.js
2023-11-12 21:42:21 +08:00
John Factotum
9e80194ba3
Add footnote handler
2023-11-05 23:09:44 +08:00
John Factotum
2a6012d749
Move section marks calculation to view
...
Also try to fix section mark epsilon
2023-11-02 16:10:40 +08:00
John Factotum
7dcbc6921a
Update vendored libraries
2023-11-02 12:26:38 +08:00
John Factotum
4d7d010e29
MOBI6: build TOC from end-of-file TOC
...
Fixes #16
2023-10-29 19:04:52 +08:00
John Factotum
05329eba6e
Fix viewer background not updated when page background changes
...
Bit of a band-aid fix. Ideally it should have some sort of
"ComputedStyleObserver" but this should fix the most common problem
for now.
2023-10-27 15:13:54 +08:00
John Factotum
0d09ca12a2
EPUB: fix subjects
...
Also update README
2023-10-24 17:25:46 +08:00
John Factotum
7c3b7447f6
EPUB: add narrator
2023-10-24 16:38:31 +08:00
John Factotum
e91ff78534
Fix quotes
2023-10-24 13:38:15 +08:00
John Factotum
6d55d3e6b1
Convert break-*: page to break-*: column
...
`break-*` is the newer standard that replaced the legacy `page-break-*`
properties.
Note that setting it to `always` or `all` does not work. There seems to
be no way of telling browsers to break in both paged media and multicol.
2023-10-24 13:29:36 +08:00
John Factotum
969f4c1850
EPUB: improve metadata
2023-10-24 13:14:40 +08:00
John Factotum
28873972ef
Make highlight opacity and blend mode configurable
2023-10-13 17:42:04 +08:00
John Factotum
d44e8d6d64
EPUB: ignore query strings when resolving URLs
2023-10-11 01:49:20 +08:00
John Factotum
96d51e654a
Fix page list progress
2023-10-10 22:54:27 +08:00
John Factotum
4f321563c7
PDF: add annotation layer and handle links
2023-10-09 01:56:13 +08:00
John Factotum
c401fa7ab4
CFI: wrap fake CFI
2023-10-08 23:22:33 +08:00
John Factotum
a63a68eda0
Add PDF support
2023-10-08 21:27:06 +08:00
John Factotum
bcfb942935
Fix module path
2023-10-08 20:44:32 +08:00
John Factotum
27a290ff59
Allow processing hrefs in TOC asynchronously
2023-10-08 20:42:47 +08:00
John Factotum
819106c71f
FXL: fix getting viewport from SVGs
2023-10-08 20:40:16 +08:00
John Factotum
7a31359cd4
Media Overlay: add volume setting
2023-10-08 10:16:33 +08:00
John Factotum
f0aa16113f
EPUB: fix media: properties
2023-10-08 05:33:56 +08:00
John Factotum
08c2ba0b24
EPUB: add prev/next for media overlay playback
2023-10-07 01:37:30 +08:00
John Factotum
1ff15bdc26
EPUB: add support for media overlay playback
2023-10-06 01:23:44 +08:00
John Factotum
83cce01797
Make text walker a separate module
2023-10-01 18:19:13 +08:00
John Factotum
ecefeb86e1
TTS: split document into ranges of block elements
2023-10-01 01:18:43 +08:00
John Factotum
cea9375561
CFI: add ability to ignore nodes
...
Also test that comment nodes are ignore
2023-09-29 23:58:55 +08:00
John Factotum
87605c5235
TTS: add paused seeking
2023-09-28 23:42:33 +08:00