Tag selector performance overhaul

- Use react-virtualized to render tags on demand, reducing the number
  of DOM elements from potentially tens of thousands to <100. This
  requires tags to be absolutely positioned, so sizing and
  positioning need to be precomputed rather than relying on CSS.
- Avoid unnecessary refreshes, speed up tag retrieval, and optimize
  sorting
- Debounce reflowing when resizing tag selector

Also:

- Scroll to top when changing collections
- Allow tags to take up full width of tag selector without truncation

Closes #1649
Closes #281
This commit is contained in:
Dan Stillman 2019-03-28 05:19:41 -04:00
parent c52589f96b
commit d9cee322cd
18 changed files with 959 additions and 270 deletions

View file

@ -31,6 +31,7 @@ const symlinkFiles = [
'resource/**/*',
'!resource/react.js',
'!resource/react-dom.js',
'!resource/react-virtualized.js',
'update.rdf'
];
@ -64,6 +65,7 @@ const jsFiles = [
// Special handling for React -- see note above
'resource/react.js',
'resource/react-dom.js',
'resource/react-virtualized.js',
];
const scssFiles = [