Skip to content

Commit 36958ad

Browse files
committed
TEI reviveTarget function now also regenerates start/end character offsets
1 parent e95f760 commit 36958ad

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

packages/extension-tei/src/crosswalk/forward.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { reviveTarget as reviveTextOffsetTarget } from '@recogito/text-annotator';
1+
import { rangeToSelector, reviveTarget as reviveTextOffsetTarget } from '@recogito/text-annotator';
22
import type {
33
TextAnnotation,
44
TextAnnotationTarget,
@@ -116,10 +116,10 @@ export const reviveTarget = (t: TextAnnotationTarget, container: HTMLElement) =>
116116
if ('start' in selector && 'end' in selector) {
117117
return reviveTextOffsetTarget(t, container);
118118
} else {
119-
const start = (selector as TEIRangeSelector).startSelector?.value;
120-
const end = (selector as TEIRangeSelector).endSelector?.value;
119+
const startExpression = (selector as TEIRangeSelector).startSelector?.value;
120+
const endExpression = (selector as TEIRangeSelector).endSelector?.value;
121121

122-
if (!start || !end) {
122+
if (!startExpression || !endExpression) {
123123
console.error(t);
124124
throw 'Could not revive TEI target.'
125125
}
@@ -141,20 +141,23 @@ export const reviveTarget = (t: TextAnnotationTarget, container: HTMLElement) =>
141141
return [node, offset] as [Node, number];
142142
}
143143

144-
const [startNode, startOffset] = evaluateSelector(start);
145-
const [endNode, endOffset] = evaluateSelector(end);
144+
const [startNode, startOffset] = evaluateSelector(startExpression);
145+
const [endNode, endOffset] = evaluateSelector(endExpression);
146146

147147
const range = document.createRange();
148148
range.setStart(startNode.firstChild, startOffset);
149149
range.setEnd(endNode.firstChild, endOffset);
150150

151+
const textSelector = rangeToSelector(range, container);
152+
151153
return reviveTextOffsetTarget({
152154
...t,
153155
selector: [{
156+
...textSelector,
154157
...(selector as TEIRangeSelector),
155158
range
156159
}]
157-
}, container)
160+
}, container);
158161
}
159162
}
160163

0 commit comments

Comments
 (0)