* Show errors in logs always. nullLogger --> justErrorsLogger
Reasoning: too often we ended up showing errors in the Informer bubble, but not in the console, which is wrong and annoying. Devs still have an option to silence logs or direct them elsewhere by setting a custom logger
* Hide pause/resume buttons when error occures
* Update tests
* Update website/src/docs/uppy.md
Co-Authored-By: Renée Kooi <renee@kooi.me>
Co-authored-by: Renée Kooi <renee@kooi.me>
* Changed aria-level attribute to correct syntax.
Changed the aria-level attribute to the correct syntax. Changes were also made to meet ADA compliance.
* update a few more aria-level attributes
Co-authored-by: Renée Kooi <renee@kooi.me>
* core: add an addFiles() method that only updates state once
Previously, adding 1300-ish files took around 260ms, and looked like
this in Firefox's performance tab:

All of the downward peaks are `setState()` calls and GC.
Now it takes around 60ms, and looks like this:

Here, most of the time is spent generating file IDs and guessing file
types. Those would be areas to look at next.
* dashboard: prevent frequent state update if nothing changed
After the last commit, `addFiles()` still spends a lot of time in
`emit()` and `hideAllPanels()`. The reason is that `addFiles()` still
emits all the hundreds of file-added events, and the Dashboard responds
to each with `hideAllPanels()`, which does a state update. But this all
happens synchronously, and the state almost certainly did not change
since the last `file-added` event that fired a millisecond ago.
This adds a check to avoid the state update if it is not necessary.

Adding 1300 files takes about 40ms now.
With this change, the `addFiles()` call is no longer the slowest
part—now preact rendering all the items is!
* utils: optimize generateFileID and getFileNameAndExtension
Replaces some clever things with more mundane and faster things!
Now, generateFileID is a bunch of string concatenations.
Now, getFileNameAndExtension uses `lastIndexOf()` instead of a regex.

Adding 1300 files takes about 25ms.
* dashboard: use preact-virtual-list
* thumbnail-generator: add `lazy` option
* dashboard: request thumbnails once file item renders the first time
* dashboard: fork preact-virtual-list
* core: add removeFiles() to remove files in bulk
* Implement removeFile() in terms of removeFiles()
* thumbnail-generator: only queue files that can be previewed
* rename size constants to accommodate WIDTH/HEIGHT
* Use new uppy.addFiles in DragDrop and FileInput
* utils: fix getFileNameAndExtension() type
* Rip out the lazy thumbnail generation
* Rip out virtualization.
* Remove virtualization leftovers
* tell future people that this is intentionally verbose
* Update package-lock.json
* henlo i am spell
* Make `addFiles()` respect maxNumberOfFiles
* core: show an informer error if some files fail in bulk add
* locales: fix quotes to make build:locale-pack happy
Co-authored-by: Artur Paikin <artur@arturpaikin.com>
* fix#2011
The isXml() method will return false if the Content-Type header is not set in the S3 response
* aws-s3: fix lint
Co-authored-by: Renée Kooi <renee@kooi.me>
Update `prepareUploadPart` contract to accept an optional `headers` property in the returned value.
If `headers` are present, they will be sent along the S3 presigned URL
Fixes#1984
Updating `dropEffect` on `ondrop` doesn't matter, since the effect will
already have been executed at that point. It should be updated in
ondragenter/ondragover instead.
fixes#1978
* Move stats to plugin list, add table with versions of all plugins
* Update Hexo to 4.0, and other deps too
* update hexo-filter-github-emojis dependecy, run lerna bootstrap
* re-create package-lock.json
* crap, it adds body/html to any document now, and this is a partial :(
* companion: temporary fix for ts compile error
* fix netlify maybe
* node 12 is lts
* revert attempted netlify command fix
* update package-lock.json