I don't know how we'll feasibly solve the multide of potential race conditons and async clean up memory leaks without something like rxjs. So, this is a trial to see the following:
1. How much does it increase bundle size?
2. How effective is typechecking?
3. Does it solve some of the difficult cancelation issues we have?
SteroPannerNode handled mono files correctly, but apparently panning is not the same as balance.
Eventually I found a work around [here](https://github.com/WebAudio/web-audio-api/issues/975#issue-177242377). The idea is to use a dummy GainNode before the channel splitter to handle the up-mixing before the split is applied.
Tested a mono file as well as left/right balance on Chrome, Firefox, and Safari on Mac desktop.
* Revert "Don't re-center windows when loading from serialized state"
This reverts commit d778c03f61.
* Revert "Clean up comment"
This reverts commit 8253093a2b.
* Revert "Fix spelling of IndexedDB"
This reverts commit b34d90e998.
* Revert "Add a few more generic assertions about serialized state"
This reverts commit a8267581d0.
* Revert "Refactor debounce and throttle"
This reverts commit 6ecc5142b5.
* Revert "Double check that the serialized state we generated equals the one we have saved"
This reverts commit 82a81bf584.
* Revert "Add many tests for serialization"
This reverts commit 55603346c2.
* Revert "Split serialized state types into their own file"
This reverts commit 4c9c5b99d3.
* Revert "Refactor how we manage window positions"
This reverts commit d6a1baece3.
* Revert "Fix export"
This reverts commit 462cf4b42d.
* Revert "Clean up selectors file"
This reverts commit cdfa99383a.
* Revert "Mark serialization methods priviate for now"
This reverts commit fc79c77451.
* Revert "Add types for WindowManager"
This reverts commit 0a7f258b64.
* Revert "Export Box"
This reverts commit e94cdef100.
* Revert "Use browserSize from state. Make it non-optional"
This reverts commit 53481ba892.
* Revert "Add back resetWindowLayout"
This reverts commit 35f4004caa.
* Revert "Begin tracking window size"
This reverts commit 96ed2b353c.
* Revert "Use namespaced Utils for webamplazy"
This reverts commit 949a2bc771.
* Revert "Use namespaced Utils"
This reverts commit 3049350701.
* Revert "Add initial approach of recovering from bad window positions"
This reverts commit 1791babf1a.
* Revert "Move centerWindowsIfNeeded to an action creatorThis forces us to type it, as a nice side benefit"
This reverts commit 40e31f0577.
* Revert "Make state serialization opt-in (for now)"
This reverts commit bef421ebed.
* Revert "Persist focus, and handle bad focus"
This reverts commit 3f1861d4f8.
* Revert "Handle the case where `positions` might be an empty object to begin with"
This reverts commit f8544ed126.
* Revert "Don't center windows when restoring from serialized state"
This reverts commit ca1cfe3dc6.
* Revert "Center windows correctly, even if the windows don't start at 0,0"
This reverts commit 777d482e73.
* Revert "Make hotkeys a function not a singleton class that has side effects when you construct it"
This reverts commit 87ca43ba45.
* Revert "Move global file input out of NPM module"
This reverts commit 9f726899c7.
* Revert "Don't exclude generic windows"
This reverts commit 245dd166a2.
* Revert "Serialize window position as well"
This reverts commit b71e09284e.
* Revert "Persist window states (exept position)"
This reverts commit 690f650e4c.
* Revert "Serialize media state, and apply equalizer state to on deserialize"
This reverts commit 94e105b104.
* Revert "Add a flag to clear IndexDB state"
This reverts commit 364ddb7411.
* Revert "Serialize state to indexdb"
This reverts commit 60429b280a.