* Update dependency typescript to v3.3.1
* Fix trailing commas for function calls
* Reverting trailing comma change
* Avoiding trailing comma rule for imports
* I never know what the right thing to do is
* lockfile
* Add basic history handling (#288)
* Move history management to Compress component
* Remove unused pathname property from history
* Rename history listener functions
* Use history.back instead of history.replace
* Support going forward in history. Persist last selected file in runtime
* Add netlify redirects file
* Use 301 status code for redirect
* Cleanup _redirects file
* Use 200 status code for redirects
* Simplify onPopState function
* Always redirect to 301 with url rewrite
* Remove redundant history function
* Remove file check on render. Call openEditor synchronously
* Use pushState only if user is on the initial screen. Mount history listener in constructor
* Simplify openEditor condition
* Update early return condition
* Rolling abstractions back into the main component
* Notification of updates & reloading
* Using version in service worker & allowing version to appear elsewhere
* Stupid file
* Ditching changelog for now. Using package json.
* Ugh.
* Add a serviceworker
* rename + fix random extra character
* Fixing worker typings
* Fixing types properly this time.
* Once of those rare cases where this matters.
* Naming the things.
* Move registration to the app (so we can use snackbar later)
* Moving SW plugin later so it picks up things like HTML
* MVP service worker
* Two stage-service worker
* Fix prerendering by conditionally awaiting Custom Elements polyfill.
* Fix icon 404's
* add doc comment to autoswplugin
* Fix type
* Class for file drop
* OCD
* We don't need the invalid state, as we'll accept all types.
* Flattening CSS
* Fixing zoom input in Firefox
* Fixing 'container' scaleTo
* two-up closer design match & smaller line
* Fixing edge bug
* Splitting main part of app out of the main bundle.
Also improving the transition from intro to compressor.
* Showing error if app fails to load.
* lol these aren't async
* Please don't tell anyone I did this
* Spinner if user selects a file before the app has loaded. (#208)
* Allow loading SVG. Fixes#138.
I also made the resizer vector-aware, so you can resize the image larger & stay sharp.
* Handling SVG without width/height set.
* Simplifying maths
* Doh, case sensitive
* Move gzipped size calculations into a worker and wrap it up in a `<GzipSize />` component that will also handle showing % of original size once that info is plumbed
* A couple tweaks for the app welcome (drop files) screen. We don't have mocks for this one, but this is at least a minor improvement.
* Prettier "pop" effect and styling for the drop zone/indicator.
* Styling for the quantization toggle to make it look like a disclosure triangle/button.
* Add controls bar (zoom in/out/to, background toggle). @todo: extract into its own component.
* When clicking/tapping the image area, give it focus.
* Utilities used by this PR
* Add a `two-up-handle` attribute to the handle for easier styling (classname gets mangled so it doesn't make for a good public API)
* Add a dummy comment to test netlify deploy
* Remove commented-out code.
* Fix styling of vertical split (which as it turns out is slightly different in the mocks anyway)
* Use a composited overlay for the dark background instead of animating background-color
* Move grayscale styling into `<two-up>` by default, then set colors via custom properties
* Remove commented-out svg fill
* Remove dummy comment
* Change `<GzipSize>` to be `<FileSize>`, add `compress` option that lets us show gzipped sizes later if we need. Defaults to `false`, and the gzip worker is only lazily instantiated the first time a compressed size calculation is requested.
* Dependency updates
* Remove color animations from dnd overlay
* Don't use a cyclical import for EncodedImage, instead just specify the types of the properties we Options actually uses.
* Pass source image through to FileSize component so it can compute delta
* Stylize size display with colors based on delta amount/direction
* Remove box-shadow animation.
* Simplify font stack
* Remove commented out code
* Remove gzip compression from size component
* Remove memoization bits
* Use specific flattend props instead of passing large context objects around.
* Remove unused packages.
* Remove unreachable String case in FileSize, and omit redundant File type
* Simplify calculateSize()
* Fix types for FileSize!
* Remove FileSize title
* Make delta variable consistent.
* Skip passing compareTo value for original image
* Remove manual focus
* Fix whitespace
* remove unused keyframes
* remove pointless flex-wrap property
* Remove unused resetZoom() method
* Remove pointless flex properties
* Use `on` prefix for event handling
* Remove pointless justify-self property
* Use an inline SVG for TwoUp's handle icon so it can be colored from outside the component..
* Move orientation state up from `<Output>` into `<App>` and share it with `<Options>`.
* Make the options panels responsive :)
* Show a plus sign for size increases `(+8%)`
* Use inline SVG for the zoom +/- icons, collect SVG icons into one file now that I've verified they get tree-shaken properly.
* Fix top/bottom options panels being reversed
* remove commented out code
* lockfile
* Revert quanitzation toggle styles so it's just a checkbox.
* Remove minimum delta for compare size
* Rename data prop to file.
* scale int -> float
* remove tabIndex
* Remove old icon files
* Add width to options panels
* Add vertical scrolling when options are taller than 80% of the screen height.
* Initial swing
* Finish up <snack-bar> implementation and integrate it
* Add missing types
* Use shift() since we dont care about referential equality
* Use `_` for private fields
* Remove rogue handler
* Remove impossible fallback value
* Make `<snack-bar>` actually contain its children
* will-change for the button ripple
* Guard against mutliple button action clicks
* `onhide()` -> `onremove()`
* remove transitionend
* Replace inline ref callback with linkRef
* showError only accepts strings
* Remove undefined initialization
* Throw on error
* Add missing error type.
* `SnackBar` ▶️ `Snack`
* Avoid child retaining a reference to parent, make show() return a Promise.
* async/await and avoid processing the stack if it is already being processed
* Add a meaningful return value to showSnackbar()