Harmonize create and describe
diff --git a/demo/index.js b/demo/index.js
index c8fe1b5..d65e87e 100644
--- a/demo/index.js
+++ b/demo/index.js
@@ -22,7 +22,7 @@
import {
createRangeSelectorCreator,
createTextQuoteSelector,
- describeTextQuoteByRange as describeRange,
+ describeTextQuote,
} from '@annotator/dom';
import { makeRefinable } from '@annotator/selector';
import highlightRange from 'dom-highlight-range';
@@ -70,13 +70,13 @@
if (selection.isCollapsed) return;
const range = selection.getRangeAt(0);
- const context = document.createRange();
- context.selectNodeContents(selectable);
+ const scope = document.createRange();
+ scope.selectNodeContents(selectable);
- if (!context.isPointInRange(range.startContainer, range.startOffset)) return;
- if (!context.isPointInRange(range.endContainer, range.endOffset)) return;
+ if (!scope.isPointInRange(range.startContainer, range.startOffset)) return;
+ if (!scope.isPointInRange(range.endContainer, range.endOffset)) return;
- return describeRange({ range, context });
+ return describeTextQuote(range, scope);
}
async function onSelectionChange() {
diff --git a/packages/dom/src/text-quote.js b/packages/dom/src/text-quote.js
index bc56fa1..9a7f28c 100644
--- a/packages/dom/src/text-quote.js
+++ b/packages/dom/src/text-quote.js
@@ -117,9 +117,11 @@
};
}
-export async function describeTextQuoteByRange({ range, context }) {
- const root = context.commonAncestorContainer;
- const text = context.toString();
+export async function describeTextQuote(range, scope = null) {
+ scope = rangeFromScope(scope || ownerDocument(range).documentElement);
+
+ const root = scope.commonAncestorContainer;
+ const text = scope.toString();
const exact = range.toString();
const selector = createTextQuoteSelector({ exact });
@@ -135,7 +137,7 @@
const affixLengthPairs = [[0, 0]];
- for await (const match of selector(context)) {
+ for await (const match of selector(scope)) {
const matchIter = createNodeIterator(root, SHOW_TEXT);
const matchStartNode = firstTextNodeInRange(match);