• Robert Knight's avatar
    Rewrite selection buffering implementation · f1dd2973
    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
selection-observer.js 2.76 KB