-
Notifications
You must be signed in to change notification settings - Fork 16
Preferences API #106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
JayPanoz
wants to merge
176
commits into
develop
Choose a base branch
from
PreferencesAPI
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Preferences API #106
+3,575
−141
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
These anchor elements are implementation-specific and shouldn’t be forced upon all consumers of the ts-toolkit. An Injectable API should be provided to do this.
So that they stay consistent across the Navigator package
Rewritten as a class whose properties you can update for user settings
Updates from Playground: - user line length is used instead of optimal if defined - colCount more than 2 - colCount null instead of auto - line length getters in px
This has been fixed in ReadiumCSS
We have to pretty much nuke everything for it to work properly, otherwise it inits with paged or scroll while the currentCSS Property may have been updated, and that throws everything off.
Previously it was only doing it for the hrefs in the pool, which missed blobs whose href was not in the pool
To report progress. Re #72
So that progress is reported when preferences update triggers a relayout
Update: there are some additional changes coming (line-length, removal of advanced settings/publisherStyles) so I have to delay things a little bit. |
Since some are set to false as a fallback in defaults, the flag was applied so we filter the types that should append the prop
Handle blob invalidation on setCssProperties in FramePoolManager. This keeps track of blobs that should be revoked and re-created to update CSS Properties, only when needed i.e. href is added to pool. If href is currently in the pool, it will be updated dynamically then handled when disposed of.
Re Firefox Bug with non-publisher font
Not implementing the sniffing in ts-toolkit right now, even as a fallback in EpubDefaults, as we have to discuss where it should belong.
In case you prefer to rely on the older implementation of ReadiumCSS font-size user setting instead of the new one.
Basically zoom does not change metrics while font-size does, so we must apply compensation differently
Depends on UA sniffing + deprecated font size implementation so it makes sense to handle it by default in the Preferences API. It’s still possible to disable it through defaults or Preferences though.
When lines of text are less than 20% of the viewport height, the column can fit without requiring a column break
So basically if it’s 99% it fits… it has to be the height of the iframe document…
So that it can be overridden and not handled internally without any way to do so
Otherwise it’s always overridden
It was bumped in Thorium Desktop on user’s demand since 2.5 was not enough
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This branch is meant to implementing the Preferences API in the ts-toolkit Navigator, bringing it on par with – and taking inspiration from – Readium’s Mobile toolkits.
This will make it a lot easier to implement user settings in apps and is using ReadiumCSS version 2.
It will be merged as a new major version since it will consequently come with breaking changes.
In ReadiumCSS v1,
auto
pagination was built-in, switching from 1 to 2 columns depending on the window/screen width. This is no longer the case. However, we plan to replace this feature with preferences that can be set:ch
(number of characters)ch
, can beundefined
, ornull
.The logic is the following:
2
. It can be as many as apps see fitauto
mode1
, dropping a column in the process if it can’t fitundefined
, then optimal line-length is the minimal onenull
then this lower bound is disabled entirely and apps can enforce the number of columns they wantThis is currently implemented in Readium/Playground and will be ported back into the ts-toolkit.