• Robert Knight's avatar
    Normalize multi-range selections to a single range in Firefox · 6eb68bb6
    Robert Knight authored
    There are situations where Firefox creates a selection with multiple
    ranges, even though the spec forbids this. In various places in our code
    we called `selection.getRangeAt(0)` assuming there would only be one
    range. In the case where FF had created multiple ranges, this led to
    only part of the user's selection being respected.
    
     - Modifying the `selectedRange` utility to combine multi-range
       selections into a single Range, so that the results in Firefox are
       the same as in other browsers.
    
     - Replacing various direct calls to `selection.getRangeAt(0)` with
       calls to `selectedRange` so that they take get this normalization
       applied.
    
       In the tests for `Guest`, this led to refactoring to make some tests
       less tied to implementation details.
    
    Fixes https://github.com/hypothesis/client/issues/5485
    6eb68bb6
Name
Last commit
Last update
.github Loading commit data...
bin Loading commit data...
dev-server Loading commit data...
docs Loading commit data...
embedding-examples Loading commit data...
images Loading commit data...
requirements Loading commit data...
scripts Loading commit data...
src Loading commit data...
.babelrc Loading commit data...
.eslintignore Loading commit data...
.eslintrc Loading commit data...
.gitignore Loading commit data...
.npmignore Loading commit data...
.npmrc Loading commit data...
.prettierignore Loading commit data...
.python-version Loading commit data...
.readthedocs.yaml Loading commit data...
HACKING.md Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
codecov.yml Loading commit data...
gulpfile.mjs Loading commit data...
package.json Loading commit data...
pyproject.toml Loading commit data...
rollup-boot.config.mjs Loading commit data...
rollup-tests.config.mjs Loading commit data...
rollup.config.mjs Loading commit data...
tailwind-annotator.config.mjs Loading commit data...
tailwind-sidebar.config.mjs Loading commit data...
tailwind.config.mjs Loading commit data...
tox.ini Loading commit data...
tsconfig.json Loading commit data...
yarn.lock Loading commit data...