Skip to content

Commit f42a0c2

Browse files
authored
Merge pull request #8 from recogito/PR-5
Fixes/revisions to original PR#5
2 parents 8ccace6 + e53e9c8 commit f42a0c2

File tree

5 files changed

+43
-15
lines changed

5 files changed

+43
-15
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
.vscode
2+
.idea
23
dist
34
node_modules
45
**/config.json
5-
.DS_Store
6+
.DS_Store

packages/text-annotator/src/SelectionHandler.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,8 @@ export const rangeToSelector = (range: Range, container: HTMLElement, offsetRefe
2424
}
2525

2626
export const SelectionHandler = (
27-
container: HTMLElement,
27+
container: HTMLElement,
2828
state: TextAnnotatorState,
29-
// Experimental
3029
offsetReferenceSelector?: string
3130
) => {
3231

@@ -47,7 +46,7 @@ export const SelectionHandler = (
4746
return;
4847

4948
// Make sure we don't listen to selection changes that
50-
// were not started on the container, or which are not supposed to
49+
// were not started on the container, or which are not supposed to
5150
// be annotatable (like the popup)
5251
const annotatable = !(evt.target as Node).parentElement.closest('.not-annotatable');
5352
if (annotatable) {
@@ -72,7 +71,7 @@ export const SelectionHandler = (
7271
debounceTimer = setTimeout(() => onSelectionChange(), 50);
7372
});
7473

75-
const onSelectionChange = () => {
74+
const onSelectionChange = () => {
7675
const sel = document.getSelection();
7776

7877
if (!sel.isCollapsed && isLeftClick && currentTarget) {
@@ -89,7 +88,7 @@ export const SelectionHandler = (
8988
...currentTarget,
9089
selector: rangeToSelector(ranges[0], container, offsetReferenceSelector)
9190
};
92-
91+
9392
if (store.getAnnotation(currentTarget.annotation)) {
9493
store.updateTarget(currentTarget, Origin.LOCAL);
9594
} else {
@@ -129,13 +128,13 @@ export const SelectionHandler = (
129128

130129
currentTarget = null;
131130
lastPointerEvent = undefined;
132-
} else {
131+
} else {
133132
const { x, y } = container.getBoundingClientRect();
134-
133+
135134
const hovered = store.getAt(evt.clientX - x, evt.clientY - y);
136135
if (hovered) {
137136
const { selected } = selection;
138-
137+
139138
if (selected.length !== 1 || selected[0].id !== hovered.id) {
140139
selection.clickSelect(hovered.id, evt);
141140
lastPointerEvent = undefined;
@@ -151,4 +150,4 @@ export const SelectionHandler = (
151150
setUser
152151
}
153152

154-
}
153+
}

packages/text-annotator/src/model/TextAnnotation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ export interface TextSelector {
2424

2525
offsetReference?: HTMLElement
2626

27-
}
27+
}

packages/text-annotator/src/state/reviveTarget.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export const reviveTarget = (
1111
target: TextAnnotationTarget,
1212
container: HTMLElement
1313
): TextAnnotationTarget => {
14-
const { quote, start, end } = target.selector;
14+
const { start, end } = target.selector;
1515

1616
const offsetReference = target.selector.offsetReference ? target.selector.offsetReference : container;
1717
if (!offsetReference)
@@ -65,9 +65,6 @@ export const reviveTarget = (
6565
...target,
6666
selector: {
6767
...target.selector,
68-
quote,
69-
start,
70-
end,
7168
range
7269
}
7370
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
export const getContext = (
2+
range: Range,
3+
container: HTMLElement,
4+
length = 10,
5+
offsetReferenceSelector?: string
6+
) => {
7+
const offsetReference: HTMLElement = offsetReferenceSelector
8+
? (range.startContainer.parentElement as HTMLElement).closest(offsetReferenceSelector)
9+
: container;
10+
11+
const rangeBefore = document.createRange();
12+
rangeBefore.setStart(offsetReference, 0);
13+
rangeBefore.setEnd(range.startContainer, range.startOffset);
14+
15+
const before = rangeBefore.toString();
16+
17+
const rangeAfter = document.createRange();
18+
rangeAfter.setStart(range.endContainer, range.endOffset);
19+
20+
if (offsetReference === document.body)
21+
rangeAfter.setEnd(offsetReference, offsetReference.childNodes.length);
22+
else
23+
rangeAfter.setEndAfter(offsetReference);
24+
25+
const after = rangeAfter.toString();
26+
27+
return {
28+
prefix: before.substring(before.length - length),
29+
suffix: after.substring(0, length)
30+
}
31+
}

0 commit comments

Comments
 (0)