* Extract CategorySelect usage into hook
* Extract logic to change manga in library state into hook
* Change manga in library state on long press when browsing source
* Update local storage functions
* Update local storage hooks
* Add session storage
* Improve storing virtuoso grid snapshot
* Use "useSyncExternalStore" for browser storage access
* Get rid of location replacements in "AppbarSearch"
Use session storage instead to prevent reloading the page all the time due to changing the location
* Get rid of location replacements in "SourceMangas"
Use session storage instead to prevent reloading the page all the time due to changing the location
Somehow the grid ref was undefined after the resize observer was already connected.
This should not be possible, so just disconnect the observer in case this still happens
Due to triggering the refresh in the TrackerActiveCard it was triggered everytime this component got rendered, which was also the case when closing the track search
The ResizeObserver triggers the first time when the element has a height of 0, which apparently did not work with scrolling it into view.
Due to immediately disconnecting the observer, the next resize event, which would successfully scroll the page into view, was never handled
Regression introduced with 0c1abebaf4
* [Codegen] Update generated files
* Use new "unbindTrack" mutation
* Add option to delete remote track on unbind
* [VersionMapping] Require server version "r1510" for preview
* Fix missing box shadow of active tracker card
Due to missing side paddings the box shadow wasn't visible
* Extract tracker card styling
* Prevent breaking title when selecting manga
* Limit max lines of titles
* Move button icon on top of text on small screens
* Fix colors of buttons
In case a manga is in the library all buttons were colored blue instead of only the library button.
Use white as default color since buttons can also be disabled and with a grey default color it's not easy to tell if the button is disabled or not
* Remove wrapping "button" inside "a" tag
In the reader the preloaded page requests were triggered before the actual page got rendered and thus, the image request of the rendered page had to wait for all the preloaded images to finish
Basically, instead of updating the width of the image after clicking
`ok`, the width is adjusted live, which makes it easier to figure out
the right value for the manga being viewed.
While implementing this, I realized we can't update the backend every
time we re-render when `liveUpdate` is true, so I've updated the logic
for persisting settings to support skipping the API call to save the
settings in the backend, and only perform the API it when the user
clicks ok on the number setting.
Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>