Commit graph

1268 commits

Author SHA1 Message Date
Jordan Eldredge
e98eae3936 Use MutationObserver to detect focused decedents leaving the DOM 2019-05-07 17:09:46 -07:00
Jordan Eldredge
c56bf0a964 Use React's blur event to detect with Webamp itself loses focus 2019-05-07 17:08:08 -07:00
Jordan Eldredge
bd3f986ade Only clear focus is the focus is leaving the app 2019-05-06 22:22:32 -07:00
Jordan Eldredge
bd1999778d Fix bug with ref
When using a ref in an effect, you need to use a state ref, otherwise the binding happens too early.
2019-05-06 22:22:13 -07:00
Jordan Eldredge
e5f6edf602 Add onMouseDown handlers to snapshots 2019-05-02 19:56:25 -07:00
Jordan Eldredge
5ee1a4f7b0 Order windows based upon which one was last clicked 2019-05-02 17:46:02 -07:00
Jordan Eldredge
3aa25f0b55 Focus target on click
I'm not sure why onFoucs+tabIndex does not do this
2019-05-02 17:45:07 -07:00
Jordan Eldredge
2569e7fb95 Remove logic that resets position on track load
I think this dates from back when we only had one track at a time, or something.

Fixes #775
2019-05-02 16:58:05 -07:00
Jordan Eldredge
f8167dd322 Autoplay tracks that are dropped on the main window 2019-05-02 16:58:05 -07:00
Jordan Eldredge
8a4a594dd0 Change nesting to preserve playlist styling
The `#playlist-window` div is a flex container so it needs to be the direct parent.
2019-05-02 16:58:01 -07:00
Jordan Eldredge
0f97529a39 Update snapshot to reflect new version of rc-slider 2019-05-02 16:32:29 -07:00
Jordan Eldredge
fe3a48e39a Document semi-private API 2019-05-02 07:46:46 -07:00
Jordan Eldredge
3b4a66f2fe Allow users to customize the media class 2019-05-02 07:46:46 -07:00
Jordan Eldredge
c75214dcd7 Improve reliance on selector caching 2019-05-02 07:23:41 -07:00
Jordan Eldredge
756854eaec Clean up console.log 2019-05-02 07:11:17 -07:00
Jordan Eldredge
73f87be7c3 Memoize hot components 2019-05-02 07:04:31 -07:00
Jordan Eldredge
92d95f57eb Remove unused import 2019-05-01 22:42:38 -07:00
Jordan Eldredge
4322aade4b Improve selector memoization and ordering 2019-05-01 22:42:16 -07:00
Jordan Eldredge
e89aa26612 Avoid uneeded renders 2019-05-01 22:38:17 -07:00
Jordan Eldredge
c00cb44b8d Update tests to reflect new focus management style 2019-05-01 22:29:10 -07:00
Jordan Eldredge
6cd2181d78 Clean up types 2019-05-01 22:29:10 -07:00
Jordan Eldredge
0792c51fb8 Trap focus 2019-05-01 22:29:10 -07:00
Jordan Eldredge
20a025541e Clear focus when bluring out of app 2019-05-01 22:29:10 -07:00
Jordan Eldredge
9f7e92f370 Simplify focus Target 2019-05-01 22:29:10 -07:00
Jordan Eldredge
059669f3e5 Don't prevent text selection with preventDefault
We should use `user-select: none;` for this.

I think all places are already doing this.
2019-05-01 22:29:10 -07:00
Jordan Eldredge
6132acdf2c Make focus nullable 2019-05-01 22:29:10 -07:00
Jordan Eldredge
72bd83e1ae Clean up arrayEquals 2019-05-01 22:29:10 -07:00
Jordan Eldredge
8627b4d2c4 Use native event handling for keydown
This allows us to stopPropogation and actually prevent global hotkeys
2019-05-01 22:29:10 -07:00
Jordan Eldredge
0a4c1cc4f7 Make easter egg handling more efficient 2019-05-01 22:29:10 -07:00
Jordan Eldredge
24d446e47b Extract focus management to a component 2019-05-01 22:29:10 -07:00
Jordan Eldredge
67441f3c1b Change how actions are typed
If we want to use the new version of react-redux we need to be compatible with their types.

Sadly it does not seem to be possible to create a Dispatchable type which can be eiher a plain action or a thunk and still be compatible with react-redux's types becuase they use redux's Store type under the hood which assumes you have an object with a string type property.
2019-05-01 22:29:10 -07:00
Jordan Eldredge
f1696fd7e6 Type getGenExColors 2019-05-01 22:05:42 -07:00
Jordan Eldredge
cb0e328ec7 Type getPlaylistStyle 2019-05-01 22:05:42 -07:00
Jordan Eldredge
4dfc19a527 Type getCursorFromFilename 2019-05-01 22:05:42 -07:00
Jordan Eldredge
b873e0df31 Type getSpriteUrisFromFilename 2019-05-01 22:05:42 -07:00
Jordan Eldredge
f56e707a16 Type getImgFromFilename 2019-05-01 22:05:42 -07:00
Jordan Eldredge
8b49b5fa6a Move getFileExtension to skinparserutils 2019-05-01 22:05:42 -07:00
Jordan Eldredge
2de880a917 Type getFileFromZip 2019-04-29 06:22:22 -07:00
Jordan Eldredge
3c97b2668f Type getSpriteUrisFromImg 2019-04-25 07:29:25 -07:00
Jordan Eldredge
a1495cfd16 Start pulling parts of skinParser out into a TypeScript utils file
This will let us gradually type this file
2019-04-25 06:57:10 -07:00
Jordan Eldredge
fb35324ab6 Always parse skins as blobs
This avoids converting the skin to an arrayBuffer for no reason
2019-04-25 06:49:56 -07:00
Jordan Eldredge
7913048e41 Send users to the GitHub page via webamp.org
At some point in the future github may not be the canonical URL for
webamp. However, people are integrating Webamp all the time and very
likely won't ever upgrade.

It's better if the url baked into the binary we distribute is under our
control so that it can be pointed somewhere else in the future.

It's also an open question if GitHub is the best place to send users.
Non technical users may get very confused.
2019-04-12 16:50:47 -07:00
Jordan Eldredge
80f34157dd Notate some places where we have known bugs 2019-04-07 12:37:03 -07:00
Jordan Eldredge
4310d5475d Prettier 2019-04-05 07:36:59 -07:00
Jordan Eldredge
cce7928f4e Accept the reality of event emitter 2019-04-05 07:34:14 -07:00
Jordan Eldredge
5713052415 Type ref callback 2019-04-05 07:34:14 -07:00
Jordan Eldredge
646b38319e Remove unused property 2019-04-05 07:34:14 -07:00
Jordan Eldredge
12139fb190 Type bindings 2019-04-05 07:34:14 -07:00
Jordan Eldredge
071c54b870 Initial typing of App.tsx 2019-04-05 07:34:14 -07:00
Jordan Eldredge
f45a3ec3f3 Make it safe to reparent the #webamp node
For now users can't control where Webamp inserts itself into the DOM. We want to add that as and option. In the mean time, we can enable users to hack it.

For example, https://github.com/ShizukuIchi/winXP wants to be able to keep Webamp in a div in order to control how it gets layerd with other apps.
2019-04-05 07:34:14 -07:00