-
Robert Knight authored
Rewrite the selection change observer in `src/annotator/selections` to make it easier to understand how this functionality works and change it in future. The major change is to remove the dependency on the `Observable` class provided by `zen-observable`, which adds cognitive overhead here, isn't used elsewhere and is stuck on an old version due to subtle breaking changes in newer releases. Replace it instead with a `SelectionObserver` class which is modeled after DOM APIs like `MutationObserver`. It takes a callback in the constructor that is invoked with the selected `Range` or `null` when the selection changes and provides a `disconnect` method which stops watching for future changes. The implementation only uses DOM APIs.
f1dd2973