* Basic grid setup
* Fixing thumb on two-up
* Adding margin so you can still access the two-up
* Allow multi-panel to keep one open only
* Edge cases for one-open
* Abstracting results so it can be used as a heading.
* Ordering of items in mobile view. Changing scrolling element.
* Adding labels to collapsed view
* Adding height animation to multi-panel
* Fixing animation bugs
* Expand/collapse icon
* Allow two-up and pinch-zoom to work beneath controls
* Range bubble now behaves properly on mobile
* No longer need this.
* Prevent options overflow at larger widths
* wip
* Commenting stuff to keep the build happy
* Revealing sections
* Custom select elements & more form work
* Range input styles
* Text fields with inputs do the right thing
* Safari & Firefox fixes
* Large compress select
* oops
* MozJPEG options updated
* OptPNG options
* These asserts weren't true
* Generic options
* WebP options
* Hiding "edit" when "original image"
* Download icon
* Copy setting button - still not happy with this
* Progress indicator
* Loading icon enter/exit anim
* Preventing controls going under options
* Ahh so that's what was causing scrolling
* Ahh so that's what was causing outlines
* Simplifying range styles and fixing cross-browser
* Processing custom element styles
* Get precision from step by default
* I don't know how or when this happened.
* Don't need that many steps
* Avoid having an element that covers the pinch zoom
* Preventing overlap with zoom controls
* Prevent ts warning
* Fixing spinner position
* Simplifying FileSize
* 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.
* Switching to embind
* Adding options to mozjpeg wasm
* Updating packages
* Ditching enum - causing more problems than it's worth
* Adding mozjpeg options UI
* Forgot about this enum
* Bools just work
* lol zx quant
* Adding ZX option
* Improving colour selection so we don't end up with the same colour twice. Also fixing a bug with the colour conflict resolution.
* Putting it behind a konami code
* Better comments
* Adding comment
* Removing unnecessary malloc.
* Initial work to add Options config
* Use a single encoder instance and retry up to 10 times on failure.
* Switch both sides to allow encoding from the source image, add options configuration for each.
* Styling for options (and a few tweaks for the app)
* Dep updates.
* Remove commented out code.
* Fix Encoder typing
* Fix lint issues
* Apparently I didnt have tslint autofix enabled on the chromebook
* Attempt to fix layout/panning issues
* Fix missing custom element import!
* Fix variable naming, remove dynamic encoder names, remove retry, allow encoders to return ImageData.
* Refactor state management to use an Array of objects and immutable updates instead of relying on explicit update notifications.
* Add Identity encoder, which is a passthrough encoder that handles the "original" view.
* Drop comlink-loader into the project and add ".worker" to the jpeg encoder filename so it runs in a worker (🦄)
* lint fixes.
* cleanup
* smaller PR feedback fixes
* rename "jpeg" codec to "MozJpeg"
* Formatting fixes for Options
* Colocate codecs and their options UIs in src/codecs, and standardize the namings
* Handle canvas errors
* Throw if quality is undefined, add default quality
* add note about temp styles
* add note about temp styles [2]
* Renaming updateOption
* Clarify option input bindings
* Move updateCanvas() to util and rename to drawBitmapToCanvas
* use generics to pass through encoder options
* Remove unused dependencies
* fix options type
* const
* Use `Array.prototype.some()` for image loading check
* Display encoding errors in the UI.
* I fought typescript and I think I won
* This doesn't need to be optional
* Quality isn't optional
* Simplifying comlink casting
* Splitting counters into loading and displaying
* Still loading if the loading counter isn't equal.