Rewrite selection buffering implementation
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.
Showing
... | @@ -91,8 +91,7 @@ | ... | @@ -91,8 +91,7 @@ |
"typescript": "^4.0.2", | "typescript": "^4.0.2", | ||
"vinyl": "^2.2.0", | "vinyl": "^2.2.0", | ||
"watchify": "^3.7.0", | "watchify": "^3.7.0", | ||
"wrap-text": "^1.0.7", | "wrap-text": "^1.0.7" | ||
"zen-observable": "^0.3.0" | |||
}, | }, | ||
"browserslist": "chrome 55, edge 17, firefox 53, safari 10.1", | "browserslist": "chrome 55, edge 17, firefox 53, safari 10.1", | ||
"browserify": { | "browserify": { | ||
... | ... |
Please register or sign in to comment