@recogito/text-annotator 3.4.1 → 3.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,25 +1,25 @@
1
- import { UAParser as ft } from "ua-parser-js";
2
- import { OS as ut } from "ua-parser-js/enums";
3
- import $ from "debounce";
4
- import { colord as Z } from "colord";
5
- import { dequal as gt } from "dequal/lite";
6
- import { v4 as st } from "uuid";
7
- import { serializeW3CBodies as mt, parseW3CBodies as pt, parseW3CUser as ht, createStore as bt, createSelectionState as yt, createHoverState as St, createViewportState as Ct, Origin as K, createAnonymousGuest as Et, createUndoStack as wt, createLifecycleObserver as At, createBaseAnnotator as vt } from "@annotorious/core";
8
- import { Origin as He, UserSelectAction as Pe, createBody as _e } from "@annotorious/core";
9
- import xt from "rbush";
10
- import { createNanoEvents as Tt } from "nanoevents";
11
- import Y from "hotkeys-js";
12
- import { poll as Rt } from "poll";
13
- const rt = "not-annotatable", W = `.${rt}`, z = (t, e) => {
1
+ import { UAParser as ht } from "ua-parser-js";
2
+ import { OS as yt } from "ua-parser-js/enums";
3
+ import Y from "debounce";
4
+ import { UserSelectAction as bt, serializeW3CBodies as St, parseW3CBodies as Ct, parseW3CUser as Et, createStore as At, createSelectionState as wt, createHoverState as vt, createViewportState as Tt, Origin as F, createAnonymousGuest as Rt, createUndoStack as xt, createLifecycleObserver as Lt, createBaseAnnotator as Nt } from "@annotorious/core";
5
+ import { Origin as Ue, UserSelectAction as Fe, createBody as $e } from "@annotorious/core";
6
+ import { colord as nt } from "colord";
7
+ import { dequal as Ot } from "dequal/lite";
8
+ import { v4 as at } from "uuid";
9
+ import Bt from "rbush";
10
+ import { createNanoEvents as kt } from "nanoevents";
11
+ import z from "hotkeys-js";
12
+ import { poll as Mt } from "poll";
13
+ const lt = "not-annotatable", $ = `.${lt}`, j = (t, e) => {
14
14
  var r;
15
- return t.contains(e) ? !!(e instanceof HTMLElement ? e.closest(W) : (r = e.parentElement) == null ? void 0 : r.closest(W)) : !0;
16
- }, Lt = (t, e) => {
15
+ return t.contains(e) ? !!(e instanceof HTMLElement ? e.closest($) : (r = e.parentElement) == null ? void 0 : r.closest($)) : !0;
16
+ }, It = (t, e) => {
17
17
  const n = e.commonAncestorContainer;
18
- return !z(t, n);
19
- }, Nt = (t) => t.addEventListener("click", (e) => {
18
+ return !j(t, n);
19
+ }, Ht = (t) => t.addEventListener("click", (e) => {
20
20
  // Allow clicks within not-annotatable elements
21
- !e.target.closest(W) && !e.target.closest("a") && e.preventDefault();
22
- }), G = (t) => ({
21
+ !e.target.closest($) && !e.target.closest("a") && e.preventDefault();
22
+ }), tt = (t) => ({
23
23
  ...t,
24
24
  type: t.type,
25
25
  x: t.x,
@@ -45,7 +45,7 @@ const rt = "not-annotatable", W = `.${rt}`, z = (t, e) => {
45
45
  pointerId: t.pointerId,
46
46
  pointerType: t.pointerType,
47
47
  timeStamp: t.timeStamp
48
- }), X = (t) => ({
48
+ }), q = (t) => ({
49
49
  ...t,
50
50
  type: t.type,
51
51
  key: t.key,
@@ -61,9 +61,9 @@ const rt = "not-annotatable", W = `.${rt}`, z = (t, e) => {
61
61
  defaultPrevented: t.defaultPrevented,
62
62
  detail: t.detail,
63
63
  timeStamp: t.timeStamp
64
- }), Ot = ft(), kt = Ot.os.is(ut.MACOS), Bt = (t) => {
64
+ }), _t = ht(), dt = _t.os.is(yt.MACOS), Dt = (t) => {
65
65
  !t.hasAttribute("tabindex") && t.tabIndex < 0 && t.setAttribute("tabindex", "-1"), t.classList.add("no-focus-outline");
66
- }, It = (t) => {
66
+ }, Pt = (t) => {
67
67
  const e = [], n = document.createNodeIterator(
68
68
  t.commonAncestorContainer,
69
69
  NodeFilter.SHOW_TEXT
@@ -74,313 +74,322 @@ const rt = "not-annotatable", W = `.${rt}`, z = (t, e) => {
74
74
  if (e.length < 2)
75
75
  return Array.from(t.getClientRects());
76
76
  {
77
- const o = e[0], s = e[e.length - 1], i = document.createRange();
78
- if (i.selectNode(o), t.startContainer.nodeType === Node.TEXT_NODE)
79
- i.setStart(o, t.startOffset);
77
+ const s = e[0], o = e[e.length - 1], i = document.createRange();
78
+ if (i.selectNode(s), t.startContainer.nodeType === Node.TEXT_NODE)
79
+ i.setStart(s, t.startOffset);
80
80
  else {
81
81
  const f = t.startContainer.childNodes[t.startOffset];
82
82
  f ? i.setStartBefore(f) : i.setStartAfter(t.startContainer);
83
83
  }
84
- const c = document.createRange();
85
- if (c.selectNode(s), t.endContainer.nodeType === Node.TEXT_NODE)
86
- c.setEnd(s, t.endOffset);
84
+ const a = document.createRange();
85
+ if (a.selectNode(o), t.endContainer.nodeType === Node.TEXT_NODE)
86
+ a.setEnd(o, t.endOffset);
87
87
  else {
88
88
  const f = t.endContainer.childNodes[t.endOffset];
89
- f ? c.setEndBefore(f) : c.setEndAfter(t.endContainer);
89
+ f ? a.setEndBefore(f) : a.setEndAfter(t.endContainer);
90
90
  }
91
- const d = (f) => {
91
+ const l = (f) => {
92
92
  const p = document.createRange();
93
93
  return p.selectNode(f), Array.from(p.getClientRects());
94
94
  };
95
95
  return [
96
96
  ...Array.from(i.getClientRects()),
97
- ...e.slice(1, -1).flatMap(d),
98
- ...Array.from(c.getClientRects())
97
+ ...e.slice(1, -1).flatMap(l),
98
+ ...Array.from(a.getClientRects())
99
99
  ];
100
100
  }
101
- }, Mt = function* (t) {
101
+ }, Kt = function* (t) {
102
102
  const e = document.createNodeIterator(
103
103
  t.commonAncestorContainer,
104
104
  NodeFilter.SHOW_ELEMENT,
105
- (r) => r instanceof HTMLElement && r.classList.contains(rt) && !r.parentElement.closest(W) && t.intersectsNode(r) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP
105
+ (r) => r instanceof HTMLElement && r.classList.contains(lt) && !r.parentElement.closest($) && t.intersectsNode(r) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP
106
106
  );
107
107
  let n;
108
108
  for (; n = e.nextNode(); )
109
109
  n instanceof HTMLElement && (yield n);
110
- }, Ht = (t, e) => {
111
- if (!Lt(t, e)) return [];
110
+ }, Ut = (t, e) => {
111
+ if (!It(t, e)) return [];
112
112
  const n = [];
113
113
  let r = null;
114
- for (const o of Mt(e)) {
115
- let s;
116
- r ? (s = document.createRange(), s.setStartAfter(r), s.setEndBefore(o)) : (s = e.cloneRange(), s.setEndBefore(o)), s.collapsed || n.push(s), r = o;
114
+ for (const s of Kt(e)) {
115
+ let o;
116
+ r ? (o = document.createRange(), o.setStartAfter(r), o.setEndBefore(s)) : (o = e.cloneRange(), o.setEndBefore(s)), o.collapsed || n.push(o), r = s;
117
117
  }
118
118
  if (r) {
119
- const o = e.cloneRange();
120
- o.setStartAfter(r), o.collapsed || n.push(o);
119
+ const s = e.cloneRange();
120
+ s.setStartAfter(r), s.collapsed || n.push(s);
121
121
  }
122
122
  return n.length > 0 ? n : [e];
123
- }, J = (t) => {
123
+ }, ot = (t) => {
124
124
  const e = t.cloneContents();
125
- return e.querySelectorAll(W).forEach((n) => n.remove()), e;
126
- }, Pt = (t, e, n = 10, r) => {
127
- const o = r ? t.startContainer.parentElement.closest(r) : e, s = document.createRange();
128
- s.setStart(o, 0), s.setEnd(t.startContainer, t.startOffset);
129
- const i = J(s).textContent, c = document.createRange();
130
- c.setStart(t.endContainer, t.endOffset), o === document.body ? c.setEnd(o, o.childNodes.length) : c.setEndAfter(o);
131
- const d = J(c).textContent;
125
+ return e.querySelectorAll($).forEach((n) => n.remove()), e;
126
+ }, Ft = (t, e, n = 10, r) => {
127
+ const s = r ? t.startContainer.parentElement.closest(r) : e, o = document.createRange();
128
+ o.setStart(s, 0), o.setEnd(t.startContainer, t.startOffset);
129
+ const i = ot(o).textContent, a = document.createRange();
130
+ a.setStart(t.endContainer, t.endOffset), s === document.body ? a.setEnd(s, s.childNodes.length) : a.setEndAfter(s);
131
+ const l = ot(a).textContent;
132
132
  return {
133
133
  prefix: i.substring(i.length - n),
134
- suffix: d.substring(0, n)
134
+ suffix: l.substring(0, n)
135
135
  };
136
- }, P = (t) => t.every((e) => e.range instanceof Range && !e.range.collapsed), it = /^\s*$/, _t = (t) => it.test(t.toString()), Le = (t) => it.test(t.textContent || ""), Dt = (t, e, n, r) => {
137
- const o = (c) => Math.round(c * 10) / 10, s = {
138
- top: o(t.top),
139
- bottom: o(t.bottom),
140
- left: o(t.left),
141
- right: o(t.right)
136
+ }, H = (t) => t.every((e) => e.range instanceof Range && !e.range.collapsed), ft = /^\s*$/, $t = (t) => ft.test(t.toString()), Me = (t) => ft.test(t.textContent || ""), Wt = (t, e, n, r) => {
137
+ const s = (a) => Math.round(a * 10) / 10, o = {
138
+ top: s(t.top),
139
+ bottom: s(t.bottom),
140
+ left: s(t.left),
141
+ right: s(t.right)
142
142
  }, i = {
143
- top: o(e.top),
144
- bottom: o(e.bottom),
145
- left: o(e.left),
146
- right: o(e.right)
143
+ top: s(e.top),
144
+ bottom: s(e.bottom),
145
+ left: s(e.left),
146
+ right: s(e.right)
147
147
  };
148
- if (Math.abs(s.top - i.top) < r && Math.abs(s.bottom - i.bottom) < r) {
149
- if (Math.abs(s.left - i.right) < n || Math.abs(s.right - i.left) < n)
148
+ if (Math.abs(o.top - i.top) < r && Math.abs(o.bottom - i.bottom) < r) {
149
+ if (Math.abs(o.left - i.right) < n || Math.abs(o.right - i.left) < n)
150
150
  return "inline-adjacent";
151
- if (s.left >= i.left && s.right <= i.right)
151
+ if (o.left >= i.left && o.right <= i.right)
152
152
  return "inline-is-contained";
153
- if (s.left <= i.left && s.right >= i.right)
153
+ if (o.left <= i.left && o.right >= i.right)
154
154
  return "inline-contains";
155
- } else if (s.top <= i.top && s.bottom >= i.bottom) {
156
- if (s.left <= i.left && s.right >= i.right)
155
+ } else if (o.top <= i.top && o.bottom >= i.bottom) {
156
+ if (o.left <= i.left && o.right >= i.right)
157
157
  return "block-contains";
158
- } else if (s.top >= i.top && s.bottom <= i.bottom && s.left >= i.left && s.right <= i.right)
158
+ } else if (o.top >= i.top && o.bottom <= i.bottom && o.left >= i.left && o.right <= i.right)
159
159
  return "block-is-contained";
160
- }, Ut = (t, e) => {
161
- const n = Math.min(t.left, e.left), r = Math.max(t.right, e.right), o = Math.min(t.top, e.top), s = Math.max(t.bottom, e.bottom);
162
- return new DOMRect(n, o, r - n, s - o);
163
- }, Ft = (t, e = 0.5, n = 0.5) => t.reduce((r, o) => {
164
- if (o.width === 0 || o.height === 0)
160
+ }, Vt = (t, e) => {
161
+ const n = Math.min(t.left, e.left), r = Math.max(t.right, e.right), s = Math.min(t.top, e.top), o = Math.max(t.bottom, e.bottom);
162
+ return new DOMRect(n, s, r - n, o - s);
163
+ }, Yt = (t, e = 0.5, n = 0.5) => t.reduce((r, s) => {
164
+ if (s.width === 0 || s.height === 0)
165
165
  return r;
166
- let s = [...r], i = !1;
167
- for (const c of r) {
168
- const d = Dt(o, c, e, n);
169
- if (d === "inline-adjacent") {
170
- s = s.map((f) => f === c ? Ut(o, c) : f), i = !0;
166
+ let o = [...r], i = !1;
167
+ for (const a of r) {
168
+ const l = Wt(s, a, e, n);
169
+ if (l === "inline-adjacent") {
170
+ o = o.map((f) => f === a ? Vt(s, a) : f), i = !0;
171
171
  break;
172
- } else if (d === "inline-contains") {
173
- s = s.map((f) => f === c ? o : f), i = !0;
172
+ } else if (l === "inline-contains") {
173
+ o = o.map((f) => f === a ? s : f), i = !0;
174
174
  break;
175
- } else if (d === "inline-is-contained") {
175
+ } else if (l === "inline-is-contained") {
176
176
  i = !0;
177
177
  break;
178
- } else if (d === "block-contains" || d === "block-is-contained") {
179
- o.width < c.width && (s = s.map((f) => f === c ? o : f)), o.width === c.width && o.height < c.width && (s = s.map((f) => f === c ? o : f)), i = !0;
178
+ } else if (l === "block-contains" || l === "block-is-contained") {
179
+ s.width < a.width && (o = o.map((f) => f === a ? s : f)), s.width === a.width && s.height < a.width && (o = o.map((f) => f === a ? s : f)), i = !0;
180
180
  break;
181
181
  }
182
182
  }
183
- return i ? s : [...s, o];
184
- }, []), Ne = (t) => ({
183
+ return i ? o : [...o, s];
184
+ }, []), Ie = (t) => ({
185
185
  length: t.length,
186
186
  item: (e) => t[e],
187
187
  [Symbol.iterator]: function* () {
188
188
  for (let e = 0; e < this.length; e++)
189
189
  yield this.item(e);
190
190
  }
191
- }), Kt = (t, e, n) => {
192
- const r = document.createRange(), o = n ? t.startContainer.parentElement.closest(n) : e;
193
- r.setStart(o, 0), r.setEnd(t.startContainer, t.startOffset);
194
- const s = J(r).textContent, i = t.toString(), c = s.length || 0, d = c + i.length;
195
- return n ? { quote: i, start: c, end: d, range: t, offsetReference: o } : { quote: i, start: c, end: d, range: t };
196
- }, $t = (t, e) => {
197
- const { left: n, top: r, right: o, bottom: s } = t;
198
- return new DOMRect(n - e.left, r - e.top, o - n, s - r);
199
- }, Oe = (t, e) => {
200
- const { left: n, top: r, right: o, bottom: s } = t;
201
- return new DOMRect(n + e.left, r + e.top, o - n, s - r);
202
- }, at = (t, e) => {
191
+ }), Xt = (t) => {
192
+ if (t.length === 0) return [];
193
+ if (t.length === 1) return [t[0]];
194
+ t.sort((s, o) => {
195
+ const i = s.compareBoundaryPoints(Range.START_TO_START, o);
196
+ return i !== 0 ? i : s.compareBoundaryPoints(Range.END_TO_END, o);
197
+ });
198
+ const [e, ...n] = t, r = n.reduce((s, o) => s.current.compareBoundaryPoints(Range.START_TO_END, o) >= 0 ? (s.current.compareBoundaryPoints(Range.END_TO_END, o) < 0 && s.current.setEnd(o.endContainer, o.endOffset), s) : (s.merged.push(s.current), s.current = o.cloneRange(), s), { merged: [], current: e.cloneRange() });
199
+ return [...r.merged, r.current];
200
+ }, zt = (t, e, n) => {
201
+ const r = document.createRange(), s = n ? t.startContainer.parentElement.closest(n) : e;
202
+ r.setStart(s, 0), r.setEnd(t.startContainer, t.startOffset);
203
+ const o = ot(r).textContent, i = t.toString(), a = o.length || 0, l = a + i.length;
204
+ return n ? { quote: i, start: a, end: l, range: t, offsetReference: s } : { quote: i, start: a, end: l, range: t };
205
+ }, qt = (t, e) => {
206
+ const { left: n, top: r, right: s, bottom: o } = t;
207
+ return new DOMRect(n - e.left, r - e.top, s - n, o - r);
208
+ }, He = (t, e) => {
209
+ const { left: n, top: r, right: s, bottom: o } = t;
210
+ return new DOMRect(n + e.left, r + e.top, s - n, o - r);
211
+ }, ut = (t, e) => {
203
212
  var p, u;
204
- const { start: n, end: r } = t, o = t.offsetReference || e, s = document.createNodeIterator(
213
+ const { start: n, end: r } = t, s = t.offsetReference || e, o = document.createNodeIterator(
205
214
  e,
206
215
  NodeFilter.SHOW_TEXT,
207
216
  (m) => {
208
- var l;
209
- return (l = m.parentElement) != null && l.closest(W) ? NodeFilter.FILTER_SKIP : NodeFilter.FILTER_ACCEPT;
217
+ var R;
218
+ return (R = m.parentElement) != null && R.closest($) ? NodeFilter.FILTER_SKIP : NodeFilter.FILTER_ACCEPT;
210
219
  }
211
220
  );
212
221
  let i = 0;
213
- const c = document.createRange();
214
- let d = s.nextNode();
215
- d === null && console.error("Could not revive annotation target. Content missing.");
216
- let f = !o;
217
- for (; d !== null; ) {
218
- if (f || (f = typeof (o == null ? void 0 : o.contains) == "function" ? o.contains(d) : !1), f) {
219
- const m = ((p = d.textContent) == null ? void 0 : p.length) || 0;
222
+ const a = document.createRange();
223
+ let l = o.nextNode();
224
+ l === null && console.error("Could not revive annotation target. Content missing.");
225
+ let f = !s;
226
+ for (; l !== null; ) {
227
+ if (f || (f = typeof (s == null ? void 0 : s.contains) == "function" ? s.contains(l) : !1), f) {
228
+ const m = ((p = l.textContent) == null ? void 0 : p.length) || 0;
220
229
  if (i + m > n) {
221
- c.setStart(d, n - i);
230
+ a.setStart(l, n - i);
222
231
  break;
223
232
  }
224
233
  i += m;
225
234
  }
226
- d = s.nextNode();
235
+ l = o.nextNode();
227
236
  }
228
- for (; d !== null; ) {
229
- const m = ((u = d.textContent) == null ? void 0 : u.length) || 0;
237
+ for (; l !== null; ) {
238
+ const m = ((u = l.textContent) == null ? void 0 : u.length) || 0;
230
239
  if (i + m >= r) {
231
- c.setEnd(d, r - i);
240
+ a.setEnd(l, r - i);
232
241
  break;
233
242
  }
234
- i += m, d = s.nextNode();
243
+ i += m, l = o.nextNode();
235
244
  }
236
245
  return {
237
246
  ...t,
238
- range: c
247
+ range: a
239
248
  };
240
- }, q = (t, e) => P(t.selector) ? t : {
249
+ }, G = (t, e) => H(t.selector) ? t : {
241
250
  ...t,
242
- selector: t.selector.map((n) => n.range instanceof Range && !n.range.collapsed ? n : at(n, e))
243
- }, Q = (t, e) => P(t.target.selector) ? t : { ...t, target: q(t.target, e) }, Wt = (t, e) => {
251
+ selector: t.selector.map((n) => n.range instanceof Range && !n.range.collapsed ? n : ut(n, e))
252
+ }, et = (t, e) => H(t.target.selector) ? t : { ...t, target: G(t.target, e) }, jt = (t, e) => {
244
253
  const n = t.cloneRange();
245
254
  return e.contains(n.startContainer) || n.setStart(e, 0), e.contains(n.endContainer) || n.setEnd(e, e.childNodes.length), n;
246
- }, ct = (t) => {
255
+ }, gt = (t) => {
247
256
  if (!t)
248
257
  return document.scrollingElement;
249
258
  const { overflowY: e } = window.getComputedStyle(t);
250
- return e !== "visible" && e !== "hidden" && t.scrollHeight > t.clientHeight ? t : ct(t.parentElement);
251
- }, et = (t, e, n) => {
252
- const r = n.getBoundingClientRect(), o = n.clientHeight, s = n.clientWidth, i = e.selector[0].range.getBoundingClientRect(), { width: c, height: d } = t.getAnnotationBounds(e.annotation), f = i.top - r.top, p = i.left - r.left, u = n.parentElement ? n.scrollTop : 0, m = n.parentElement ? n.scrollLeft : 0, l = f + u - (o - d) / 2, L = p + m - (s - c) / 2;
253
- n.scroll({ top: l, left: L, behavior: "smooth" });
254
- }, Vt = (t, e) => (n, r) => {
255
- const o = typeof n == "string" ? n : n.id, s = r ? typeof r == "string" ? document.getElementById(r) : r : ct(t);
256
- if (!s)
257
- return console.warn(`The scroll parent is missing for the annotation: ${o}`, { container: t }), !1;
258
- const i = e.getAnnotation(o);
259
+ return e !== "visible" && e !== "hidden" && t.scrollHeight > t.clientHeight ? t : gt(t.parentElement);
260
+ }, rt = (t, e, n) => {
261
+ const r = n.getBoundingClientRect(), s = n.clientHeight, o = n.clientWidth, i = e.selector[0].range.getBoundingClientRect(), { width: a, height: l } = t.getAnnotationBounds(e.annotation), f = i.top - r.top, p = i.left - r.left, u = n.parentElement ? n.scrollTop : 0, m = n.parentElement ? n.scrollLeft : 0, R = f + u - (s - l) / 2, d = p + m - (o - a) / 2;
262
+ n.scroll({ top: R, left: d, behavior: "smooth" });
263
+ }, Gt = (t, e) => (n, r) => {
264
+ const s = typeof n == "string" ? n : n.id, o = r ? typeof r == "string" ? document.getElementById(r) : r : gt(t);
265
+ if (!o)
266
+ return console.warn(`The scroll parent is missing for the annotation: ${s}`, { container: t }), !1;
267
+ const i = e.getAnnotation(s);
259
268
  if (!i)
260
- return console.warn(`The annotation is missing in the store: ${o}`), !1;
261
- const { range: c } = i.target.selector[0];
262
- if (c && !c.collapsed)
263
- return et(e, i.target, s), !0;
264
- const d = q(i.target, t), { range: f } = d.selector[0];
265
- return f && !f.collapsed ? (et(e, d, s), !0) : !1;
269
+ return console.warn(`The annotation is missing in the store: ${s}`), !1;
270
+ const { range: a } = i.target.selector[0];
271
+ if (a && !a.collapsed)
272
+ return rt(e, i.target, o), !0;
273
+ const l = G(i.target, t), { range: f } = l.selector[0];
274
+ return f && !f.collapsed ? (rt(e, l, o), !0) : !1;
266
275
  }, _ = {
267
276
  fill: "rgb(0, 128, 255)",
268
277
  fillOpacity: 0.18
269
- }, j = {
278
+ }, Q = {
270
279
  fill: "rgb(0, 128, 255)",
271
280
  fillOpacity: 0.45
272
- }, Yt = (t, e, n, r, o) => {
273
- var i, c;
274
- const s = n ? typeof n == "function" ? n(t.annotation, t.state, o) || ((i = t.state) != null && i.selected ? j : _) : n : (c = t.state) != null && c.selected ? j : _;
275
- return r && r.paint(t, e) || s;
276
- }, Xt = (t) => {
277
- const { top: e, left: n } = t.getBoundingClientRect(), { innerWidth: r, innerHeight: o } = window, s = -n, i = -e, c = r - n, d = o - e;
278
- return { top: e, left: n, minX: s, minY: i, maxX: c, maxY: d };
279
- }, zt = (t) => {
281
+ }, Qt = (t, e, n, r, s) => {
282
+ var i, a;
283
+ const o = n ? typeof n == "function" ? n(t.annotation, t.state, s) || ((i = t.state) != null && i.selected ? Q : _) : n : (a = t.state) != null && a.selected ? Q : _;
284
+ return r && r.paint(t, e) || o;
285
+ }, Zt = (t) => {
286
+ const { top: e, left: n } = t.getBoundingClientRect(), { innerWidth: r, innerHeight: s } = window, o = -n, i = -e, a = r - n, l = s - e;
287
+ return { top: e, left: n, minX: o, minY: i, maxX: a, maxY: l };
288
+ }, Jt = (t) => {
280
289
  let e = /* @__PURE__ */ new Set();
281
290
  return (r) => {
282
- const o = r.map((s) => s.id);
283
- (e.size !== o.length || o.some((s) => !e.has(s))) && t.set(o), e = new Set(o);
291
+ const s = r.map((o) => o.id);
292
+ (e.size !== s.length || s.some((o) => !e.has(o))) && t.set(s), e = new Set(s);
293
+ };
294
+ }, st = (t, e, n, r) => {
295
+ const { store: s, selection: o, hover: i } = e;
296
+ let a, l, f;
297
+ const p = Jt(n), u = (C) => {
298
+ const { x: v, y: x } = t.getBoundingClientRect(), B = s.getAt(C.clientX - v, C.clientY - x, !1, l);
299
+ B && e.selection.evalSelectAction(B) !== bt.NONE ? i.current !== B.id && (t.classList.add("hovered"), i.set(B.id)) : i.current && (t.classList.remove("hovered"), i.set(null));
284
300
  };
285
- }, tt = (t, e, n, r) => {
286
- const { store: o, selection: s, hover: i } = e;
287
- let c, d, f;
288
- const p = zt(n), u = $((S) => {
289
- const { x: A, y: T } = t.getBoundingClientRect(), B = o.getAt(S.clientX - A, S.clientY - T, !1, d);
290
- B ? i.current !== B.id && (t.classList.add("hovered"), i.set(B.id)) : i.current && (t.classList.remove("hovered"), i.set(null));
291
- }, 10);
292
301
  t.addEventListener("pointermove", u);
293
- const m = $((S = !1) => requestAnimationFrame(() => {
302
+ const m = Y((C = !1) => requestAnimationFrame(() => {
294
303
  f && f.clear();
295
- const A = Xt(t), { minX: T, minY: B, maxX: y, maxY: v } = A, I = d ? o.getIntersecting(T, B, y, v).filter(({ annotation: O }) => d(O)) : o.getIntersecting(T, B, y, v), D = s.selected.map(({ id: O }) => O), M = I.map(({ annotation: O, rects: H }) => {
296
- const k = D.includes(O.id), U = O.id === i.current;
304
+ const v = Zt(t), { minX: x, minY: B, maxX: K, maxY: U } = v, Z = l ? s.getIntersecting(x, B, K, U).filter(({ annotation: N }) => l(N)) : s.getIntersecting(x, B, K, U), b = o.selected.map(({ id: N }) => N), w = Z.map(({ annotation: N, rects: P }) => {
305
+ const M = b.includes(N.id), I = N.id === i.current;
297
306
  return {
298
- annotation: O,
299
- rects: H,
300
- state: { selected: k, hovered: U }
307
+ annotation: N,
308
+ rects: P,
309
+ state: { selected: M, hovered: I }
301
310
  };
302
311
  });
303
- r.redraw(M, A, c, f, S), setTimeout(() => p(I.map(({ annotation: O }) => O)), 1);
304
- }), 10), l = (S) => {
305
- f = S, m();
306
- }, L = (S) => {
307
- c = S, m();
308
- }, w = (S) => {
309
- d = S, m(!1);
310
- }, x = () => m();
311
- o.observe(x);
312
- const R = s.subscribe(() => m()), C = i.subscribe(() => m()), N = () => m(!0);
313
- document.addEventListener("scroll", N, { capture: !0, passive: !0 });
314
- const E = $(() => {
315
- o.recalculatePositions(), f == null || f.reset(), m();
312
+ r.redraw(w, v, a, f, C), setTimeout(() => p(Z.map(({ annotation: N }) => N)), 1);
313
+ }), 10), R = (C) => {
314
+ f = C, m();
315
+ }, d = (C) => {
316
+ a = C, m();
317
+ }, L = (C) => {
318
+ l = C, m(!1);
319
+ }, T = () => m();
320
+ s.observe(T);
321
+ const S = o.subscribe(() => m()), A = i.subscribe(() => m()), O = () => m(!0);
322
+ document.addEventListener("scroll", O, { capture: !0, passive: !0 });
323
+ const E = Y(() => {
324
+ s.recalculatePositions(), f == null || f.reset(), m();
316
325
  }, 10);
317
326
  window.addEventListener("resize", E);
318
- const a = new ResizeObserver(E);
319
- a.observe(t);
320
- const g = { attributes: !0, childList: !0, subtree: !0 }, b = new MutationObserver($((S) => {
321
- S.every((T) => T.target === t || t.contains(T.target)) || m(!0);
327
+ const c = new ResizeObserver(E);
328
+ c.observe(t);
329
+ const g = { attributes: !0, childList: !0, subtree: !0 }, y = new MutationObserver(Y((C) => {
330
+ C.every((x) => x.target === t || t.contains(x.target)) || m(!0);
322
331
  }, 150));
323
- return b.observe(document.body, g), {
332
+ return y.observe(document.body, g), {
324
333
  destroy: () => {
325
- t.removeEventListener("pointermove", u), r.destroy(), o.unobserve(x), R(), C(), document.removeEventListener("scroll", N), E.clear(), window.removeEventListener("resize", E), a.disconnect(), b.disconnect();
334
+ t.removeEventListener("pointermove", u), r.destroy(), s.unobserve(T), S(), A(), document.removeEventListener("scroll", O), E.clear(), window.removeEventListener("resize", E), c.disconnect(), y.disconnect();
326
335
  },
327
336
  redraw: m,
328
- setStyle: L,
329
- setFilter: w,
330
- setPainter: l,
337
+ setStyle: d,
338
+ setFilter: L,
339
+ setPainter: R,
331
340
  setVisible: r.setVisible
332
341
  };
333
- }, qt = () => {
342
+ }, te = () => {
334
343
  const t = document.createElement("canvas");
335
344
  return t.width = window.innerWidth, t.height = window.innerHeight, t.className = "r6o-canvas-highlight-layer bg", t;
336
- }, jt = (t, e) => {
345
+ }, ee = (t, e) => {
337
346
  t.width = window.innerWidth, t.height = window.innerHeight;
338
- }, Gt = (t) => {
347
+ }, ne = (t) => {
339
348
  t.classList.add("r6o-annotatable");
340
- const e = qt(), n = e.getContext("2d");
349
+ const e = te(), n = e.getContext("2d");
341
350
  document.body.appendChild(e);
342
- const r = (c, d, f, p) => requestAnimationFrame(() => {
351
+ const r = (a, l, f, p) => requestAnimationFrame(() => {
343
352
  const { width: u, height: m } = e;
344
353
  n.clearRect(-0.5, -0.5, u + 1, m + 1), p && p.clear();
345
- const { top: l, left: L } = d;
346
- [...c].sort((x, R) => {
347
- const { annotation: { target: { created: C } } } = x, { annotation: { target: { created: N } } } = R;
348
- return C.getTime() - N.getTime();
349
- }).forEach((x) => {
354
+ const { top: R, left: d } = l;
355
+ [...a].sort((T, S) => {
356
+ const { annotation: { target: { created: A } } } = T, { annotation: { target: { created: O } } } = S;
357
+ return A.getTime() - O.getTime();
358
+ }).forEach((T) => {
350
359
  var E;
351
- const R = f ? typeof f == "function" ? f(x.annotation, x.state) : f : (E = x.state) != null && E.selected ? j : _, C = p && p.paint(x, d) || R, N = x.rects.map(({ x: a, y: g, width: b, height: h }) => ({
352
- x: a + L,
353
- y: g + l,
354
- width: b,
360
+ const S = f ? typeof f == "function" ? f(T.annotation, T.state) : f : (E = T.state) != null && E.selected ? Q : _, A = p && p.paint(T, l) || S, O = T.rects.map(({ x: c, y: g, width: y, height: h }) => ({
361
+ x: c + d,
362
+ y: g + R,
363
+ width: y,
355
364
  height: h
356
365
  }));
357
- if (n.fillStyle = C.fill, n.globalAlpha = C.fillOpacity || 1, N.forEach(
358
- ({ x: a, y: g, width: b, height: h }) => n.fillRect(a, g, b, h)
359
- ), C.underlineColor) {
360
- n.globalAlpha = 1, n.strokeStyle = C.underlineColor, n.lineWidth = C.underlineThickness ?? 1;
361
- const a = C.underlineOffset ?? 0;
362
- N.forEach(({ x: g, y: b, width: h, height: S }) => {
363
- n.beginPath(), n.moveTo(g, b + S + a), n.lineTo(g + h, b + S + a), n.stroke();
366
+ if (n.fillStyle = A.fill, n.globalAlpha = A.fillOpacity || 1, O.forEach(
367
+ ({ x: c, y: g, width: y, height: h }) => n.fillRect(c, g, y, h)
368
+ ), A.underlineColor) {
369
+ n.globalAlpha = 1, n.strokeStyle = A.underlineColor, n.lineWidth = A.underlineThickness ?? 1;
370
+ const c = A.underlineOffset ?? 0;
371
+ O.forEach(({ x: g, y, width: h, height: C }) => {
372
+ n.beginPath(), n.moveTo(g, y + C + c), n.lineTo(g + h, y + C + c), n.stroke();
364
373
  });
365
374
  }
366
375
  });
367
- }), o = $(() => jt(e), 10);
368
- return window.addEventListener("resize", o), {
376
+ }), s = Y(() => ee(e), 10);
377
+ return window.addEventListener("resize", s), {
369
378
  destroy: () => {
370
- e.remove(), o.clear(), window.removeEventListener("resize", o);
379
+ e.remove(), s.clear(), window.removeEventListener("resize", s);
371
380
  },
372
- setVisible: (c) => {
381
+ setVisible: (a) => {
373
382
  console.log("setVisible not implemented on Canvas renderer");
374
383
  },
375
384
  redraw: r
376
385
  };
377
- }, Qt = (t, e, n) => tt(t, e, n, Gt(t)), Zt = (t) => [
378
- `background-color:${Z((t == null ? void 0 : t.fill) || _.fill).alpha((t == null ? void 0 : t.fillOpacity) === void 0 ? _.fillOpacity : t.fillOpacity).toHex()}`,
386
+ }, oe = (t, e, n) => st(t, e, n, ne(t)), se = (t) => [
387
+ `background-color:${nt((t == null ? void 0 : t.fill) || _.fill).alpha((t == null ? void 0 : t.fillOpacity) === void 0 ? _.fillOpacity : t.fillOpacity).toHex()}`,
379
388
  t != null && t.underlineThickness ? "text-decoration:underline" : void 0,
380
389
  t != null && t.underlineColor ? `text-decoration-color:${t.underlineColor}` : void 0,
381
390
  t != null && t.underlineOffset ? `text-underline-offset:${t.underlineOffset}px` : void 0,
382
391
  t != null && t.underlineThickness ? `text-decoration-thickness:${t.underlineThickness}px` : void 0
383
- ].filter(Boolean).join(";"), Jt = () => {
392
+ ].filter(Boolean).join(";"), re = () => {
384
393
  const t = document.createElement("style");
385
394
  document.getElementsByTagName("head")[0].appendChild(t);
386
395
  let e = /* @__PURE__ */ new Set();
@@ -388,29 +397,29 @@ const rt = "not-annotatable", W = `.${rt}`, z = (t, e) => {
388
397
  destroy: () => {
389
398
  CSS.highlights.clear(), t.remove();
390
399
  },
391
- setVisible: (s) => {
400
+ setVisible: (o) => {
392
401
  console.log("setVisible not implemented on CSS Custom Highlights renderer");
393
402
  },
394
- redraw: (s, i, c, d) => {
395
- d && d.clear();
396
- const f = new Set(s.map((u) => u.annotation.id));
403
+ redraw: (o, i, a, l) => {
404
+ l && l.clear();
405
+ const f = new Set(o.map((u) => u.annotation.id));
397
406
  Array.from(e).filter((u) => !f.has(u));
398
- const p = s.map((u) => {
399
- var L;
400
- const m = c ? typeof c == "function" ? c(u.annotation, u.state) : c : (L = u.state) != null && L.selected ? j : _, l = d && d.paint(u, i) || m;
401
- return `::highlight(_${u.annotation.id}) { ${Zt(l)} }`;
407
+ const p = o.map((u) => {
408
+ var d;
409
+ const m = a ? typeof a == "function" ? a(u.annotation, u.state) : a : (d = u.state) != null && d.selected ? Q : _, R = l && l.paint(u, i) || m;
410
+ return `::highlight(_${u.annotation.id}) { ${se(R)} }`;
402
411
  });
403
412
  t.innerHTML = p.join(`
404
- `), CSS.highlights.clear(), s.forEach(({ annotation: u }) => {
405
- const m = u.target.selector.map((L) => L.range), l = new Highlight(...m);
406
- CSS.highlights.set(`_${u.id}`, l);
413
+ `), CSS.highlights.clear(), o.forEach(({ annotation: u }) => {
414
+ const m = u.target.selector.map((d) => d.range), R = new Highlight(...m);
415
+ CSS.highlights.set(`_${u.id}`, R);
407
416
  }), e = f;
408
417
  }
409
418
  };
410
- }, te = (t, e, n) => tt(t, e, n, Jt()), ee = (t) => (t == null ? void 0 : t.fillOpacity) !== void 0 ? Z((t == null ? void 0 : t.fill) || _.fill).alpha(t.fillOpacity).toHex() : t != null && t.fill ? t.fill : Z(_.fill).alpha(_.fillOpacity).toHex(), ne = (t, e) => {
411
- const n = (s, i) => s.x <= i.x + i.width && s.x + s.width >= i.x && s.y <= i.y + i.height && s.y + s.height >= i.y, r = (s) => s.rects.reduce((i, c) => i + c.width, 0), o = e.filter(({ rects: s }) => s.some((i) => n(t, i)));
412
- return o.sort((s, i) => r(i) - r(s)), o.findIndex((s) => s.rects.includes(t));
413
- }, oe = (t) => {
419
+ }, ie = (t, e, n) => st(t, e, n, re()), ce = (t) => (t == null ? void 0 : t.fillOpacity) !== void 0 ? nt((t == null ? void 0 : t.fill) || _.fill).alpha(t.fillOpacity).toHex() : t != null && t.fill ? t.fill : nt(_.fill).alpha(_.fillOpacity).toHex(), ae = (t, e) => {
420
+ const n = (o, i) => o.x <= i.x + i.width && o.x + o.width >= i.x && o.y <= i.y + i.height && o.y + o.height >= i.y, r = (o) => o.rects.reduce((i, a) => i + a.width, 0), s = e.filter(({ rects: o }) => o.some((i) => n(t, i)));
421
+ return s.sort((o, i) => r(i) - r(o)), s.findIndex((o) => o.rects.includes(t));
422
+ }, le = (t) => {
414
423
  t.classList.add("r6o-annotatable");
415
424
  const e = document.createElement("div");
416
425
  e.className = "r6o-span-highlight-layer", t.insertBefore(e, t.firstChild);
@@ -419,18 +428,18 @@ const rt = "not-annotatable", W = `.${rt}`, z = (t, e) => {
419
428
  destroy: () => {
420
429
  e.remove();
421
430
  },
422
- redraw: (i, c, d, f, p) => {
423
- const m = !(gt(n, i) && p);
431
+ redraw: (i, a, l, f, p) => {
432
+ const m = !(Ot(n, i) && p);
424
433
  if (!f && !m) return;
425
- m && (e.innerHTML = ""), [...i].sort((L, w) => {
426
- const { annotation: { target: { created: x } } } = L, { annotation: { target: { created: R } } } = w;
427
- return x && R ? x.getTime() - R.getTime() : 0;
428
- }).forEach((L) => {
429
- L.rects.map((w) => {
430
- const x = ne(w, i), R = Yt(L, c, d, f, x);
434
+ m && (e.innerHTML = ""), [...i].sort((d, L) => {
435
+ const { annotation: { target: { created: T } } } = d, { annotation: { target: { created: S } } } = L;
436
+ return T && S ? T.getTime() - S.getTime() : 0;
437
+ }).forEach((d) => {
438
+ d.rects.map((L) => {
439
+ const T = ae(L, i), S = Qt(d, a, l, f, T);
431
440
  if (m) {
432
- const C = document.createElement("span");
433
- C.className = "r6o-annotation", C.dataset.annotation = L.annotation.id, C.style.left = `${w.x}px`, C.style.top = `${w.y}px`, C.style.width = `${w.width}px`, C.style.height = `${w.height}px`, C.style.backgroundColor = ee(R), R.underlineStyle && (C.style.borderStyle = R.underlineStyle), R.underlineColor && (C.style.borderColor = R.underlineColor), R.underlineThickness && (C.style.borderBottomWidth = `${R.underlineThickness}px`), R.underlineOffset && (C.style.paddingBottom = `${R.underlineOffset}px`), e.appendChild(C);
441
+ const A = document.createElement("span");
442
+ A.className = "r6o-annotation", A.dataset.annotation = d.annotation.id, A.style.left = `${L.x}px`, A.style.top = `${L.y}px`, A.style.width = `${L.width}px`, A.style.height = `${L.height}px`, A.style.backgroundColor = ce(S), S.underlineStyle && (A.style.borderStyle = S.underlineStyle), S.underlineColor && (A.style.borderColor = S.underlineColor), S.underlineThickness && (A.style.borderBottomWidth = `${S.underlineThickness}px`), S.underlineOffset && (A.style.paddingBottom = `${S.underlineOffset}px`), e.appendChild(A);
434
443
  }
435
444
  });
436
445
  }), n = i;
@@ -439,30 +448,30 @@ const rt = "not-annotatable", W = `.${rt}`, z = (t, e) => {
439
448
  i ? e.classList.remove("hidden") : e.classList.add("hidden");
440
449
  }
441
450
  };
442
- }, se = (t, e, n) => tt(t, e, n, oe(t)), ke = (t, e) => ({
443
- parse: (n) => ae(n),
444
- serialize: (n) => ce(n, t, e)
445
- }), re = (t) => t.quote !== void 0 && t.start !== void 0 && t.end !== void 0, ie = (t) => {
451
+ }, de = (t, e, n) => st(t, e, n, le(t)), _e = (t, e) => ({
452
+ parse: (n) => ge(n),
453
+ serialize: (n) => me(n, t, e)
454
+ }), fe = (t) => t.quote !== void 0 && t.start !== void 0 && t.end !== void 0, ue = (t) => {
446
455
  const {
447
456
  id: e,
448
457
  creator: n,
449
458
  created: r,
450
- modified: o,
451
- target: s
452
- } = t, i = Array.isArray(s) ? s : [s];
459
+ modified: s,
460
+ target: o
461
+ } = t, i = Array.isArray(o) ? o : [o];
453
462
  if (i.length === 0)
454
463
  return { error: Error(`No targets found for annotation: ${t.id}`) };
455
- const c = {
456
- creator: ht(n),
464
+ const a = {
465
+ creator: Et(n),
457
466
  created: r ? new Date(r) : void 0,
458
- updated: o ? new Date(o) : void 0,
467
+ updated: s ? new Date(s) : void 0,
459
468
  annotation: e,
460
469
  selector: [],
461
470
  // @ts-expect-error: `styleClass` is not part of the core `TextAnnotationTarget` type
462
471
  styleClass: "styleClass" in i[0] ? i[0].styleClass : void 0
463
472
  };
464
- for (const d of i) {
465
- const p = (Array.isArray(d.selector) ? d.selector : [d.selector]).reduce((u, m) => {
473
+ for (const l of i) {
474
+ const p = (Array.isArray(l.selector) ? l.selector : [l.selector]).reduce((u, m) => {
466
475
  switch (m.type) {
467
476
  case "TextQuoteSelector":
468
477
  u.quote = m.exact;
@@ -473,13 +482,13 @@ const rt = "not-annotatable", W = `.${rt}`, z = (t, e) => {
473
482
  }
474
483
  return u;
475
484
  }, {});
476
- if (re(p))
477
- c.selector.push(
485
+ if (fe(p))
486
+ a.selector.push(
478
487
  {
479
488
  ...p,
480
- id: d.id,
489
+ id: l.id,
481
490
  // @ts-expect-error: `scope` is not part of the core `TextSelector` type
482
- scope: d.scope
491
+ scope: l.scope
483
492
  }
484
493
  );
485
494
  else {
@@ -490,205 +499,205 @@ const rt = "not-annotatable", W = `.${rt}`, z = (t, e) => {
490
499
  return { error: Error(`Missing selector types: ${u.join(" and ")} for annotation: ${t.id}`) };
491
500
  }
492
501
  }
493
- return { parsed: c };
494
- }, ae = (t) => {
495
- const e = t.id || st(), {
502
+ return { parsed: a };
503
+ }, ge = (t) => {
504
+ const e = t.id || at(), {
496
505
  creator: n,
497
506
  created: r,
498
- modified: o,
499
- body: s,
507
+ modified: s,
508
+ body: o,
500
509
  ...i
501
- } = t, c = pt(s, e), d = ie(t);
502
- return "error" in d ? { error: d.error } : {
510
+ } = t, a = Ct(o, e), l = ue(t);
511
+ return "error" in l ? { error: l.error } : {
503
512
  parsed: {
504
513
  ...i,
505
514
  id: e,
506
- bodies: c,
507
- target: d.parsed
515
+ bodies: a,
516
+ target: l.parsed
508
517
  }
509
518
  };
510
- }, ce = (t, e, n) => {
511
- const { bodies: r, target: o, ...s } = t, {
519
+ }, me = (t, e, n) => {
520
+ const { bodies: r, target: s, ...o } = t, {
512
521
  selector: i,
513
- creator: c,
514
- created: d,
522
+ creator: a,
523
+ created: l,
515
524
  updated: f,
516
525
  ...p
517
- } = o, u = i.map((m) => {
518
- const { id: l, quote: L, start: w, end: x, range: R } = m, C = {
526
+ } = s, u = i.map((m) => {
527
+ const { id: R, quote: d, start: L, end: T, range: S } = m, A = {
519
528
  type: "TextQuoteSelector",
520
- exact: L
529
+ exact: d
521
530
  };
522
531
  if (n) {
523
- const { prefix: E, suffix: a } = Pt(R, n);
524
- C.prefix = E, C.suffix = a;
532
+ const { prefix: E, suffix: c } = Ft(S, n);
533
+ A.prefix = E, A.suffix = c;
525
534
  }
526
- const N = {
535
+ const O = {
527
536
  type: "TextPositionSelector",
528
- start: w,
529
- end: x
537
+ start: L,
538
+ end: T
530
539
  };
531
540
  return {
532
541
  ...p,
533
- id: l,
542
+ id: R,
534
543
  // @ts-expect-error: `scope` is not part of the core `TextSelector` type
535
544
  scope: "scope" in m ? m.scope : void 0,
536
545
  source: e,
537
- selector: [C, N]
546
+ selector: [A, O]
538
547
  };
539
548
  });
540
549
  return {
541
- ...s,
550
+ ...o,
542
551
  "@context": "http://www.w3.org/ns/anno.jsonld",
543
552
  id: t.id,
544
553
  type: "Annotation",
545
- body: mt(t.bodies),
546
- creator: c,
547
- created: d == null ? void 0 : d.toISOString(),
554
+ body: St(t.bodies),
555
+ creator: a,
556
+ created: l == null ? void 0 : l.toISOString(),
548
557
  modified: f == null ? void 0 : f.toISOString(),
549
558
  target: u
550
559
  };
551
- }, le = (t, e, n, r) => {
552
- const o = new xt(), s = /* @__PURE__ */ new Map(), i = Tt(), c = (a, g) => {
553
- const b = a.selector.flatMap((S) => {
554
- const A = P([S]) ? S.range : at(S, e).range;
555
- return It(A);
556
- }), h = Ft(b, n, r).map((S) => $t(S, g));
557
- return h.map((S) => {
558
- const { x: A, y: T, width: B, height: y } = S;
560
+ }, pe = (t, e, n, r) => {
561
+ const s = new Bt(), o = /* @__PURE__ */ new Map(), i = kt(), a = (c, g) => {
562
+ const y = c.selector.flatMap((C) => {
563
+ const v = H([C]) ? C.range : ut(C, e).range;
564
+ return Pt(v);
565
+ }), h = Yt(y, n, r).map((C) => qt(C, g));
566
+ return h.map((C) => {
567
+ const { x: v, y: x, width: B, height: K } = C;
559
568
  return {
560
- minX: A,
561
- minY: T,
562
- maxX: A + B,
563
- maxY: T + y,
569
+ minX: v,
570
+ minY: x,
571
+ maxX: v + B,
572
+ maxY: x + K,
564
573
  annotation: {
565
- id: a.annotation,
574
+ id: c.annotation,
566
575
  rects: h
567
576
  }
568
577
  };
569
578
  });
570
- }, d = () => [...s.values()], f = () => {
571
- o.clear(), s.clear();
572
- }, p = (a) => {
573
- const g = c(a, e.getBoundingClientRect());
574
- g.length !== 0 && (g.forEach((b) => o.insert(b)), s.set(a.annotation, g));
575
- }, u = (a) => {
576
- const g = s.get(a.annotation);
577
- g && (g.forEach((b) => o.remove(b)), s.delete(a.annotation));
578
- }, m = (a) => {
579
- u(a), p(a);
580
- }, l = (a, g = !0) => {
579
+ }, l = () => [...o.values()], f = () => {
580
+ s.clear(), o.clear();
581
+ }, p = (c) => {
582
+ const g = a(c, e.getBoundingClientRect());
583
+ g.length !== 0 && (g.forEach((y) => s.insert(y)), o.set(c.annotation, g));
584
+ }, u = (c) => {
585
+ const g = o.get(c.annotation);
586
+ g && (g.forEach((y) => s.remove(y)), o.delete(c.annotation));
587
+ }, m = (c) => {
588
+ u(c), p(c);
589
+ }, R = (c, g = !0) => {
581
590
  g && f();
582
- const b = e.getBoundingClientRect(), h = a.map((A) => ({ target: A, rects: c(A, b) }));
583
- h.forEach(({ target: A, rects: T }) => {
584
- T.length > 0 && s.set(A.annotation, T);
591
+ const y = e.getBoundingClientRect(), h = c.map((v) => ({ target: v, rects: a(v, y) }));
592
+ h.forEach(({ target: v, rects: x }) => {
593
+ x.length > 0 && o.set(v.annotation, x);
585
594
  });
586
- const S = h.flatMap(({ rects: A }) => A);
587
- o.load(S);
588
- }, L = (a, g, b = !1) => {
589
- const h = o.search({
590
- minX: a,
595
+ const C = h.flatMap(({ rects: v }) => v);
596
+ s.load(C);
597
+ }, d = (c, g, y = !1) => {
598
+ const h = s.search({
599
+ minX: c,
591
600
  minY: g,
592
- maxX: a,
601
+ maxX: c,
593
602
  maxY: g
594
- }), S = (A) => A.annotation.rects.reduce((T, B) => T + B.width * B.height, 0);
595
- return h.length > 0 ? (h.sort((A, T) => S(A) - S(T)), b ? h.map((A) => A.annotation.id) : [h[0].annotation.id]) : [];
596
- }, w = (a) => {
597
- const g = x(a);
603
+ }), C = (v) => v.annotation.rects.reduce((x, B) => x + B.width * B.height, 0);
604
+ return h.length > 0 ? (h.sort((v, x) => C(v) - C(x)), y ? h.map((v) => v.annotation.id) : [h[0].annotation.id]) : [];
605
+ }, L = (c) => {
606
+ const g = T(c);
598
607
  if (g.length === 0)
599
608
  return;
600
- let b = g[0].left, h = g[0].top, S = g[0].right, A = g[0].bottom;
601
- for (let T = 1; T < g.length; T++) {
602
- const B = g[T];
603
- b = Math.min(b, B.left), h = Math.min(h, B.top), S = Math.max(S, B.right), A = Math.max(A, B.bottom);
609
+ let y = g[0].left, h = g[0].top, C = g[0].right, v = g[0].bottom;
610
+ for (let x = 1; x < g.length; x++) {
611
+ const B = g[x];
612
+ y = Math.min(y, B.left), h = Math.min(h, B.top), C = Math.max(C, B.right), v = Math.max(v, B.bottom);
604
613
  }
605
- return new DOMRect(b, h, S - b, A - h);
606
- }, x = (a) => {
607
- const g = s.get(a);
614
+ return new DOMRect(y, h, C - y, v - h);
615
+ }, T = (c) => {
616
+ const g = o.get(c);
608
617
  return g ? g[0].annotation.rects : [];
609
618
  };
610
619
  return {
611
- all: d,
620
+ all: l,
612
621
  clear: f,
613
- getAt: L,
614
- getAnnotationBounds: w,
615
- getAnnotationRects: x,
616
- getIntersecting: (a, g, b, h) => {
617
- const S = o.search({ minX: a, minY: g, maxX: b, maxY: h }), A = new Set(S.map((T) => T.annotation.id));
618
- return Array.from(A).map((T) => ({
619
- annotation: t.getAnnotation(T),
620
- rects: x(T)
621
- })).filter((T) => !!T.annotation);
622
+ getAt: d,
623
+ getAnnotationBounds: L,
624
+ getAnnotationRects: T,
625
+ getIntersecting: (c, g, y, h) => {
626
+ const C = s.search({ minX: c, minY: g, maxX: y, maxY: h }), v = new Set(C.map((x) => x.annotation.id));
627
+ return Array.from(v).map((x) => ({
628
+ annotation: t.getAnnotation(x),
629
+ rects: T(x)
630
+ })).filter((x) => !!x.annotation);
622
631
  },
623
632
  insert: p,
624
633
  recalculate: () => {
625
- l(t.all().map((a) => a.target), !0), i.emit("recalculate");
634
+ R(t.all().map((c) => c.target), !0), i.emit("recalculate");
626
635
  },
627
636
  remove: u,
628
- set: l,
629
- size: () => o.all().length,
637
+ set: R,
638
+ size: () => s.all().length,
630
639
  update: m,
631
- on: (a, g) => i.on(a, g)
640
+ on: (c, g) => i.on(c, g)
632
641
  };
633
- }, de = (t, e) => {
634
- var C, N;
635
- const n = bt(), r = le(n, t, (C = e.mergeHighlights) == null ? void 0 : C.horizontalTolerance, (N = e.mergeHighlights) == null ? void 0 : N.verticalTolerance), o = yt(n, e.userSelectAction, e.adapter), s = St(n), i = Ct(), c = (E, a = K.LOCAL) => {
636
- const g = Q(E, t), b = P(g.target.selector);
637
- return b && n.addAnnotation(g, a), b;
638
- }, d = (E, a = !0, g = K.LOCAL) => {
639
- const b = E.map((S) => Q(S, t)), h = b.filter((S) => !P(S.target.selector));
640
- return n.bulkAddAnnotations(b, a, g), h;
641
- }, f = (E, a = K.LOCAL) => {
642
- const g = E.map((h) => Q(h, t)), b = g.filter((h) => !P(h.target.selector));
642
+ }, he = (t, e) => {
643
+ var A, O;
644
+ const n = At(), r = pe(n, t, (A = e.mergeHighlights) == null ? void 0 : A.horizontalTolerance, (O = e.mergeHighlights) == null ? void 0 : O.verticalTolerance), s = wt(n, e.userSelectAction, e.adapter), o = vt(n), i = Tt(), a = (E, c = F.LOCAL) => {
645
+ const g = et(E, t), y = H(g.target.selector);
646
+ return y && n.addAnnotation(g, c), y;
647
+ }, l = (E, c = !0, g = F.LOCAL) => {
648
+ const y = E.map((C) => et(C, t)), h = y.filter((C) => !H(C.target.selector));
649
+ return n.bulkAddAnnotations(y, c, g), h;
650
+ }, f = (E, c = F.LOCAL) => {
651
+ const g = E.map((h) => et(h, t)), y = g.filter((h) => !H(h.target.selector));
643
652
  return g.forEach((h) => {
644
- n.getAnnotation(h.id) ? n.updateAnnotation(h, a) : n.addAnnotation(h, a);
645
- }), b;
646
- }, p = (E, a = K.LOCAL) => {
647
- const g = q(E, t);
648
- n.updateTarget(g, a);
649
- }, u = (E, a = K.LOCAL) => {
650
- const g = E.map((b) => q(b, t));
651
- n.bulkUpdateTargets(g, a);
653
+ n.getAnnotation(h.id) ? n.updateAnnotation(h, c) : n.addAnnotation(h, c);
654
+ }), y;
655
+ }, p = (E, c = F.LOCAL) => {
656
+ const g = G(E, t);
657
+ n.updateTarget(g, c);
658
+ }, u = (E, c = F.LOCAL) => {
659
+ const g = E.map((y) => G(y, t));
660
+ n.bulkUpdateTargets(g, c);
652
661
  };
653
- function m(E, a, g, b) {
654
- const h = g || !!b, S = r.getAt(E, a, h).map((T) => n.getAnnotation(T)), A = b ? S.filter(b) : S;
655
- if (A.length !== 0)
656
- return g ? A : A[0];
662
+ function m(E, c, g, y) {
663
+ const h = g || !!y, C = r.getAt(E, c, h).map((x) => n.getAnnotation(x)), v = y ? C.filter(y) : C;
664
+ if (v.length !== 0)
665
+ return g ? v : v[0];
657
666
  }
658
- const l = (E) => r.getAnnotationRects(E).length > 0 ? r.getAnnotationBounds(E) : void 0, L = (E, a, g, b) => r.getIntersecting(E, a, g, b), w = (E) => r.getAnnotationRects(E), x = () => r.recalculate(), R = (E) => r.on("recalculate", E);
667
+ const R = (E) => r.getAnnotationRects(E).length > 0 ? r.getAnnotationBounds(E) : void 0, d = (E, c, g, y) => r.getIntersecting(E, c, g, y), L = (E) => r.getAnnotationRects(E), T = () => r.recalculate(), S = (E) => r.on("recalculate", E);
659
668
  return n.observe(({ changes: E }) => {
660
- const a = (E.deleted || []).filter((h) => P(h.target.selector)), g = (E.created || []).filter((h) => P(h.target.selector)), b = (E.updated || []).filter((h) => P(h.newValue.target.selector));
661
- (a == null ? void 0 : a.length) > 0 && a.forEach((h) => r.remove(h.target)), g.length > 0 && r.set(g.map((h) => h.target), !1), (b == null ? void 0 : b.length) > 0 && b.forEach(({ newValue: h }) => r.update(h.target));
669
+ const c = (E.deleted || []).filter((h) => H(h.target.selector)), g = (E.created || []).filter((h) => H(h.target.selector)), y = (E.updated || []).filter((h) => H(h.newValue.target.selector));
670
+ (c == null ? void 0 : c.length) > 0 && c.forEach((h) => r.remove(h.target)), g.length > 0 && r.set(g.map((h) => h.target), !1), (y == null ? void 0 : y.length) > 0 && y.forEach(({ newValue: h }) => r.update(h.target));
662
671
  }), {
663
672
  store: {
664
673
  ...n,
665
- addAnnotation: c,
666
- bulkAddAnnotations: d,
674
+ addAnnotation: a,
675
+ bulkAddAnnotations: l,
667
676
  bulkUpdateTargets: u,
668
677
  bulkUpsertAnnotations: f,
669
- getAnnotationBounds: l,
670
- getAnnotationRects: w,
671
- getIntersecting: L,
678
+ getAnnotationBounds: R,
679
+ getAnnotationRects: L,
680
+ getIntersecting: d,
672
681
  getAt: m,
673
- recalculatePositions: x,
674
- onRecalculatePositions: R,
682
+ recalculatePositions: T,
683
+ onRecalculatePositions: S,
675
684
  updateTarget: p
676
685
  },
677
- selection: o,
678
- hover: s,
686
+ selection: s,
687
+ hover: o,
679
688
  viewport: i
680
689
  };
681
- }, fe = () => {
690
+ }, ye = () => {
682
691
  const t = document.createElement("canvas");
683
692
  t.width = 2 * window.innerWidth, t.height = 2 * window.innerHeight, t.className = "r6o-presence-layer";
684
693
  const e = t.getContext("2d");
685
694
  return e.scale(2, 2), e.translate(0.5, 0.5), t;
686
- }, ue = (t, e = {}) => {
687
- const n = fe(), r = n.getContext("2d");
695
+ }, be = (t, e = {}) => {
696
+ const n = ye(), r = n.getContext("2d");
688
697
  document.body.appendChild(n);
689
- const o = /* @__PURE__ */ new Map(), s = (p) => Array.from(o.entries()).filter(([u, m]) => m.presenceKey === p.presenceKey).map(([u, m]) => u);
698
+ const s = /* @__PURE__ */ new Map(), o = (p) => Array.from(s.entries()).filter(([u, m]) => m.presenceKey === p.presenceKey).map(([u, m]) => u);
690
699
  return t.on("selectionChange", (p, u) => {
691
- s(p).forEach((l) => o.delete(l)), u && u.forEach((l) => o.set(l, p));
700
+ o(p).forEach((R) => s.delete(R)), u && u.forEach((R) => s.set(R, p));
692
701
  }), {
693
702
  clear: () => {
694
703
  const { width: p, height: u } = n;
@@ -699,13 +708,13 @@ const rt = "not-annotatable", W = `.${rt}`, z = (t, e) => {
699
708
  },
700
709
  paint: (p, u, m) => {
701
710
  e.font && (r.font = e.font);
702
- const l = o.get(p.annotation.id);
703
- if (l) {
704
- const { height: L } = p.rects[0], w = p.rects[0].x + u.left, x = p.rects[0].y + u.top;
705
- r.fillStyle = l.appearance.color, r.fillRect(w - 2, x - 2.5, 2, L + 5);
706
- const R = r.measureText(l.appearance.label), C = R.width + 6, N = R.actualBoundingBoxAscent + R.actualBoundingBoxDescent + 8, E = R.fontBoundingBoxAscent ? 8 : 6.5;
707
- return r.fillRect(w - 2, x - 2.5 - N, C, N), r.fillStyle = "#fff", r.fillText(l.appearance.label, w + 1, x - E), {
708
- fill: l.appearance.color,
711
+ const R = s.get(p.annotation.id);
712
+ if (R) {
713
+ const { height: d } = p.rects[0], L = p.rects[0].x + u.left, T = p.rects[0].y + u.top;
714
+ r.fillStyle = R.appearance.color, r.fillRect(L - 2, T - 2.5, 2, d + 5);
715
+ const S = r.measureText(R.appearance.label), A = S.width + 6, O = S.actualBoundingBoxAscent + S.actualBoundingBoxDescent + 8, E = S.fontBoundingBoxAscent ? 8 : 6.5;
716
+ return r.fillRect(L - 2, T - 2.5 - O, A, O), r.fillStyle = "#fff", r.fillText(R.appearance.label, L + 1, T - E), {
717
+ fill: R.appearance.color,
709
718
  fillOpacity: m ? 0.45 : 0.18
710
719
  };
711
720
  }
@@ -716,233 +725,258 @@ const rt = "not-annotatable", W = `.${rt}`, z = (t, e) => {
716
725
  p.scale(2, 2), p.translate(0.5, 0.5);
717
726
  }
718
727
  };
719
- }, nt = 300, lt = ["up", "down", "left", "right"], dt = kt ? "⌘+a" : "ctrl+a", ge = [
720
- ...lt.map((t) => `shift+${t}`),
721
- dt
722
- ], me = (t, e, n) => {
723
- const { store: r, selection: o } = e;
724
- let s;
728
+ }, it = 300, mt = ["up", "down", "left", "right"], pt = dt ? "⌘+a" : "ctrl+a", Se = [
729
+ ...mt.map((t) => `shift+${t}`),
730
+ pt
731
+ ], Ce = (t, e, n, r) => {
732
+ const { store: s, selection: o } = e;
733
+ let i;
725
734
  const {
726
- annotatingEnabled: i,
727
- offsetReferenceSelector: c,
728
- selectionMode: d,
729
- dismissOnNotAnnotatable: f = "NEVER"
730
- } = n, p = (y) => s = y;
731
- let u;
732
- const m = (y) => u = y;
733
- let l, L, w, x = i;
734
- const R = (y) => {
735
- x = y, N.clear(), y || (l = void 0, L = void 0, w = void 0);
736
- }, C = () => {
737
- x && L !== !1 && (l = {
738
- annotation: st(),
735
+ annotatingEnabled: a,
736
+ offsetReferenceSelector: l,
737
+ selectionMode: f,
738
+ dismissOnNotAnnotatable: p = "NEVER"
739
+ } = r, u = (b) => i = b;
740
+ let m;
741
+ const R = (b) => m = b;
742
+ let d, L, T, S, A = a;
743
+ const O = (b) => {
744
+ A = b, g.clear(), b || (L = void 0, d = void 0, T = void 0, S = void 0);
745
+ }, E = (b) => {
746
+ const w = b;
747
+ return dt ? w.metaKey : w.ctrlKey;
748
+ }, c = () => {
749
+ if (!A || T === !1) return;
750
+ const { selected: b } = o;
751
+ if (r.allowModifierSelect && E(S) && b.length === 1 && b[0].editable) {
752
+ const N = s.getAnnotation(b[0].id);
753
+ if (N != null && N.target) {
754
+ L = N.target, d = {
755
+ annotation: N.id,
756
+ selector: [],
757
+ created: L.created,
758
+ creator: L.creator,
759
+ updated: /* @__PURE__ */ new Date(),
760
+ updatedBy: i
761
+ };
762
+ return;
763
+ }
764
+ }
765
+ L = void 0, d = {
766
+ annotation: at(),
739
767
  selector: [],
740
- creator: s,
741
- created: /* @__PURE__ */ new Date()
742
- });
743
- }, N = $((y) => {
744
- if (!x) return;
745
- const v = document.getSelection();
746
- if (!(v != null && v.anchorNode))
768
+ created: /* @__PURE__ */ new Date(),
769
+ creator: i
770
+ };
771
+ }, g = Y((b) => {
772
+ if (!A) return;
773
+ const w = document.getSelection();
774
+ if (!(w != null && w.anchorNode))
747
775
  return;
748
- const I = Array.from(Array(v.rangeCount).keys()).map((k) => v.getRangeAt(k));
749
- if (!I.some((k) => k.intersectsNode(t))) {
750
- l = void 0;
776
+ const N = Array.from(Array(w.rangeCount).keys()).map((k) => w.getRangeAt(k));
777
+ if (!N.some((k) => k.intersectsNode(t))) {
778
+ d = void 0;
751
779
  return;
752
780
  }
753
- const D = y.timeStamp - ((w == null ? void 0 : w.timeStamp) || y.timeStamp);
754
- if ((w == null ? void 0 : w.type) === "pointerdown" && (D < 1e3 && !l || v.isCollapsed && D < nt) && C(), l || C(), v.isCollapsed) {
755
- r.getAnnotation(l.annotation) && (o.clear(), r.deleteAnnotation(l.annotation));
781
+ const P = b.timeStamp - ((S == null ? void 0 : S.timeStamp) || b.timeStamp);
782
+ if ((S == null ? void 0 : S.type) === "pointerdown" && (P < 1e3 && !d || w.isCollapsed && P < it) && c(), d || c(), w.isCollapsed) {
783
+ s.getAnnotation(d.annotation) && !E(S) && (o.clear(), s.deleteAnnotation(d.annotation));
756
784
  return;
757
785
  }
758
- const M = I.map((k) => Wt(k, t));
759
- if (M.every((k) => _t(k))) return;
760
- const O = M.flatMap((k) => Ht(t, k.cloneRange()));
761
- (O.length > 0 && !l || O.length !== l.selector.length || O.some((k, U) => {
762
- var F;
763
- return k.toString() !== ((F = l.selector[U]) == null ? void 0 : F.quote);
764
- })) && (l = {
765
- ...l,
766
- selector: O.map((k) => Kt(k, t, c)),
786
+ const M = N.map((k) => jt(k, t));
787
+ if (M.every((k) => $t(k))) return;
788
+ const I = M.flatMap((k) => Ut(t, k.cloneRange()));
789
+ if (!(I.length > 0 && !d || I.length !== d.selector.length || I.some((k, W) => {
790
+ var J;
791
+ return k.toString() !== ((J = d.selector[W]) == null ? void 0 : J.quote);
792
+ }))) return;
793
+ const X = L ? Xt([
794
+ ...L.selector.map((k) => k.range),
795
+ ...I
796
+ ]) : I;
797
+ d = {
798
+ ...d,
799
+ selector: X.map((k) => zt(k, t, l)),
767
800
  updated: /* @__PURE__ */ new Date()
768
- }, r.getAnnotation(l.annotation) ? r.updateTarget(l, K.LOCAL) : o.clear());
769
- }, 10), E = (y) => {
770
- w = G(y), L = w.button === 0;
771
- }, a = async (y) => {
772
- if (!L) return;
773
- const v = G(y), I = () => {
774
- const { x: M, y: O } = t.getBoundingClientRect();
775
- if (z(t, v.target)) {
776
- (typeof f == "function" ? f(v, t) : f === "ALWAYS") && o.clear();
801
+ }, s.getAnnotation(d.annotation) ? s.updateTarget(d, F.LOCAL) : E(b) || o.clear();
802
+ }, 10), y = (b) => {
803
+ S = tt(b), T = S.button === 0;
804
+ }, h = async (b) => {
805
+ if (!T) return;
806
+ const w = tt(b), N = () => {
807
+ const { x: M, y: I } = t.getBoundingClientRect();
808
+ if (j(t, w.target)) {
809
+ (typeof p == "function" ? p(w, t) : p === "ALWAYS") && o.clear();
777
810
  return;
778
811
  }
779
- const H = v.target instanceof Node && t.contains(v.target) && r.getAt(
780
- v.clientX - M,
781
- v.clientY - O,
782
- d === "all",
783
- u
812
+ const D = w.target instanceof Node && t.contains(w.target) && s.getAt(
813
+ w.clientX - M,
814
+ w.clientY - I,
815
+ f === "all",
816
+ m
784
817
  );
785
- if (H) {
786
- const { selected: k } = o, U = new Set(k.map((V) => V.id)), F = Array.isArray(H) ? H.map((V) => V.id) : [H.id];
787
- (U.size !== F.length || !F.every((V) => U.has(V))) && o.userSelect(F, v);
818
+ if (D) {
819
+ const { selected: X } = o, k = new Set(X.map((V) => V.id)), W = Array.isArray(D) ? D.map((V) => V.id) : [D.id];
820
+ (k.size !== W.length || !W.every((V) => k.has(V))) && (n.emit("clickAnnotation", D), o.userSelect(W, w));
788
821
  } else
789
822
  o.clear();
790
823
  };
791
- if (v.timeStamp - w.timeStamp < nt) {
792
- await g();
793
- const M = document.getSelection(), O = z(t, w.target), H = z(t, v.target);
794
- if (M != null && M.isCollapsed || O && H) {
795
- l = void 0, I();
824
+ if (w.timeStamp - S.timeStamp < it) {
825
+ await C();
826
+ const M = document.getSelection(), I = j(t, S.target), D = j(t, w.target);
827
+ if (M != null && M.isCollapsed || I && D) {
828
+ d = void 0, N();
796
829
  return;
797
830
  }
798
831
  }
799
- l && l.selector.length > 0 && (T(), o.userSelect(l.annotation, v));
800
- }, g = async () => {
801
- const y = document.getSelection();
802
- let v = !1, I = y == null ? void 0 : y.isCollapsed;
803
- const D = () => I || v, M = 1;
804
- return setTimeout(() => v = !0, 50), Rt(() => I = y == null ? void 0 : y.isCollapsed, M, D);
805
- }, b = (y) => {
806
- const v = document.getSelection();
807
- v != null && v.isCollapsed || ((!l || l.selector.length === 0) && N(y), l && (T(), o.userSelect(l.annotation, G(y))));
808
- }, h = (y) => {
809
- x && y.key === "Shift" && l && (document.getSelection().isCollapsed || (T(), o.userSelect(l.annotation, X(y))));
810
- }, S = (y) => {
811
- const v = () => setTimeout(() => {
812
- (l == null ? void 0 : l.selector.length) > 0 && (o.clear(), r.addAnnotation({
813
- id: l.annotation,
832
+ d && d.selector.length > 0 && (U(), o.userSelect(d.annotation, w));
833
+ }, C = async () => {
834
+ const b = document.getSelection();
835
+ let w = !1, N = b == null ? void 0 : b.isCollapsed;
836
+ const P = () => N || w, M = 1;
837
+ return setTimeout(() => w = !0, 50), Mt(() => N = b == null ? void 0 : b.isCollapsed, M, P);
838
+ }, v = (b) => {
839
+ const w = document.getSelection();
840
+ w != null && w.isCollapsed || ((!d || d.selector.length === 0) && g(b), d && (U(), o.userSelect(d.annotation, tt(b))));
841
+ }, x = (b) => {
842
+ A && b.key === "Shift" && d && (document.getSelection().isCollapsed || (U(), o.userSelect(d.annotation, q(b))));
843
+ }, B = (b) => {
844
+ const w = () => setTimeout(() => {
845
+ (d == null ? void 0 : d.selector.length) > 0 && (o.clear(), s.addAnnotation({
846
+ id: d.annotation,
814
847
  bodies: [],
815
- target: l
816
- }), o.userSelect(l.annotation, X(y))), document.removeEventListener("selectionchange", v);
848
+ target: d
849
+ }), o.userSelect(d.annotation, q(b))), document.removeEventListener("selectionchange", w);
817
850
  }, 100);
818
- document.addEventListener("selectionchange", v), C();
851
+ document.addEventListener("selectionchange", w), c();
819
852
  };
820
- Y(ge.join(","), { element: t, keydown: !0, keyup: !1 }, (y) => {
821
- y.repeat || (w = X(y));
822
- }), Y(dt, { keydown: !0, keyup: !1 }, (y) => {
823
- w = X(y), S(y);
853
+ z(Se.join(","), { element: t, keydown: !0, keyup: !1 }, (b) => {
854
+ b.repeat || (S = q(b));
855
+ }), z(pt, { keydown: !0, keyup: !1 }, (b) => {
856
+ S = q(b), B(b);
824
857
  });
825
- const A = (y) => {
826
- y.repeat || y.target !== t && y.target !== document.body || (l = void 0, o.clear());
858
+ const K = (b) => {
859
+ b.repeat || b.target !== t && b.target !== document.body || (d = void 0, o.clear());
827
860
  };
828
- Y(lt.join(","), { keydown: !0, keyup: !1 }, A);
829
- const T = () => {
830
- const y = r.getAnnotation(l.annotation);
831
- if (!y) {
832
- r.addAnnotation({
833
- id: l.annotation,
861
+ z(mt.join(","), { keydown: !0, keyup: !1 }, K);
862
+ const U = () => {
863
+ const b = s.getAnnotation(d.annotation);
864
+ if (!b) {
865
+ s.addAnnotation({
866
+ id: d.annotation,
834
867
  bodies: [],
835
- target: l
868
+ target: d
836
869
  });
837
870
  return;
838
871
  }
839
- const { target: { updated: v } } = y, { updated: I } = l;
840
- (!v || !I || v < I) && r.updateTarget(l);
872
+ const { target: { updated: w } } = b, { updated: N } = d;
873
+ (!w || !N || w < N) && s.updateTarget(d);
841
874
  };
842
- return document.addEventListener("pointerdown", E), document.addEventListener("pointerup", a), document.addEventListener("contextmenu", b), t.addEventListener("keyup", h), t.addEventListener("selectstart", C), document.addEventListener("selectionchange", N), {
875
+ return document.addEventListener("pointerdown", y), document.addEventListener("pointerup", h), document.addEventListener("contextmenu", v), t.addEventListener("keyup", x), t.addEventListener("selectstart", c), document.addEventListener("selectionchange", g), {
843
876
  destroy: () => {
844
- l = void 0, L = void 0, w = void 0, N.clear(), document.removeEventListener("pointerdown", E), document.removeEventListener("pointerup", a), document.removeEventListener("contextmenu", b), t.removeEventListener("keyup", h), t.removeEventListener("selectstart", C), document.removeEventListener("selectionchange", N), Y.unbind();
877
+ d = void 0, L = void 0, T = void 0, S = void 0, g.clear(), document.removeEventListener("pointerdown", y), document.removeEventListener("pointerup", h), document.removeEventListener("contextmenu", v), t.removeEventListener("keyup", x), t.removeEventListener("selectstart", c), document.removeEventListener("selectionchange", g), z.unbind();
845
878
  },
846
- setFilter: m,
847
- setUser: p,
848
- setAnnotatingEnabled: R
879
+ setFilter: R,
880
+ setUser: u,
881
+ setAnnotatingEnabled: O
849
882
  };
850
- }, pe = (t, e) => ({
883
+ }, Ee = (t, e) => ({
851
884
  ...t,
852
885
  annotatingEnabled: t.annotatingEnabled ?? e.annotatingEnabled,
853
886
  user: t.user || e.user
854
- }), ot = "SPANS", Be = (t, e = {}) => {
855
- Nt(t), Bt(t);
856
- const n = pe(e, {
887
+ }), ct = "SPANS", De = (t, e = {}) => {
888
+ Ht(t), Dt(t);
889
+ const n = Ee(e, {
857
890
  annotatingEnabled: !0,
858
- user: Et()
859
- }), r = de(t, n), { selection: o, viewport: s } = r, i = r.store, c = wt(i), d = At(r, c, n.adapter);
891
+ user: Rt()
892
+ }), r = he(t, n), { selection: s, viewport: o } = r, i = r.store, a = xt(i), l = Lt(r, a, n.adapter);
860
893
  let f = n.user;
861
- const p = n.renderer === "CSS_HIGHLIGHTS" ? CSS.highlights ? "CSS_HIGHLIGHTS" : ot : n.renderer || ot, u = p === "SPANS" ? se(t, r, s) : p === "CSS_HIGHLIGHTS" ? te(t, r, s) : p === "CANVAS" ? Qt(t, r, s) : void 0;
894
+ const p = n.renderer === "CSS_HIGHLIGHTS" ? CSS.highlights ? "CSS_HIGHLIGHTS" : ct : n.renderer || ct, u = p === "SPANS" ? de(t, r, o) : p === "CSS_HIGHLIGHTS" ? ie(t, r, o) : p === "CANVAS" ? oe(t, r, o) : void 0;
862
895
  if (!u)
863
896
  throw `Unknown renderer implementation: ${p}`;
864
897
  console.debug(`Using ${p} renderer`), n.style && u.setStyle(n.style);
865
- const m = me(t, r, n);
898
+ const m = Ce(t, r, l, n);
866
899
  m.setUser(f);
867
- const l = vt(r, c, n.adapter), L = () => f, w = (a) => {
900
+ const R = Nt(r, a, n.adapter), d = () => f, L = (c) => {
868
901
  m.setAnnotatingEnabled(
869
- a === void 0 ? !0 : a
902
+ c === void 0 ? !0 : c
870
903
  );
871
- }, x = (a) => {
872
- u.setFilter(a), m.setFilter(a);
873
- }, R = (a) => {
874
- f = a, m.setUser(a);
875
- }, C = (a) => {
876
- a && (u.setPainter(ue(a, n.presence)), a.on("selectionChange", () => u.redraw()));
877
- }, N = (a) => {
878
- a ? o.setSelected(a) : o.clear();
904
+ }, T = (c) => {
905
+ u.setFilter(c), m.setFilter(c);
906
+ }, S = (c) => {
907
+ f = c, m.setUser(c);
908
+ }, A = (c) => {
909
+ c && (u.setPainter(be(c, n.presence)), c.on("selectionChange", () => u.redraw()));
910
+ }, O = (c) => {
911
+ c ? s.setSelected(c) : s.clear();
879
912
  };
880
913
  return {
881
- ...l,
914
+ ...R,
882
915
  destroy: () => {
883
- u.destroy(), m.destroy(), c.destroy();
916
+ u.destroy(), m.destroy(), a.destroy();
884
917
  },
885
918
  element: t,
886
- getUser: L,
887
- setAnnotatingEnabled: w,
888
- setFilter: x,
919
+ getUser: d,
920
+ setAnnotatingEnabled: L,
921
+ setFilter: T,
889
922
  setStyle: u.setStyle.bind(u),
890
923
  redraw: u.redraw.bind(u),
891
- setUser: R,
892
- setSelected: N,
893
- setPresenceProvider: C,
924
+ setUser: S,
925
+ setSelected: O,
926
+ setPresenceProvider: A,
894
927
  setVisible: u.setVisible.bind(u),
895
- on: d.on,
896
- off: d.off,
897
- scrollIntoView: Vt(t, i),
928
+ on: l.on,
929
+ off: l.off,
930
+ scrollIntoView: Gt(t, i),
898
931
  state: r
899
932
  };
900
933
  };
901
934
  export {
902
- j as DEFAULT_SELECTED_STYLE,
935
+ Q as DEFAULT_SELECTED_STYLE,
903
936
  _ as DEFAULT_STYLE,
904
- rt as NOT_ANNOTATABLE_CLASS,
905
- W as NOT_ANNOTATABLE_SELECTOR,
906
- He as Origin,
907
- Pe as UserSelectAction,
908
- ke as W3CTextFormat,
909
- Nt as cancelSingleClickEvents,
910
- X as cloneKeyboardEvent,
911
- G as clonePointerEvent,
912
- _e as createBody,
913
- Qt as createCanvasRenderer,
914
- te as createHighlightsRenderer,
915
- ue as createPresencePainter,
916
- Jt as createRenderer,
917
- me as createSelectionHandler,
918
- se as createSpansRenderer,
919
- Be as createTextAnnotator,
920
- de as createTextAnnotatorState,
921
- pe as fillDefaults,
922
- It as getHighlightClientRects,
923
- Pt as getQuoteContext,
924
- J as getRangeAnnotatableContents,
925
- kt as isMac,
926
- Le as isNodeWhitespaceOrEmpty,
927
- z as isNotAnnotatable,
928
- Lt as isRangeAnnotatable,
929
- _t as isRangeWhitespaceOrEmpty,
930
- P as isRevived,
931
- Ft as mergeClientRects,
932
- Yt as paint,
933
- ae as parseW3CTextAnnotation,
934
- Bt as programmaticallyFocusable,
935
- Kt as rangeToSelector,
936
- Q as reviveAnnotation,
937
- at as reviveSelector,
938
- q as reviveTarget,
939
- Vt as scrollIntoView,
940
- ce as serializeW3CTextAnnotation,
941
- Ht as splitAnnotatableRanges,
942
- Ne as toDomRectList,
943
- $t as toParentBounds,
944
- Oe as toViewportBounds,
945
- Wt as trimRangeToContainer,
946
- it as whitespaceOrEmptyRegex
937
+ lt as NOT_ANNOTATABLE_CLASS,
938
+ $ as NOT_ANNOTATABLE_SELECTOR,
939
+ Ue as Origin,
940
+ Fe as UserSelectAction,
941
+ _e as W3CTextFormat,
942
+ Ht as cancelSingleClickEvents,
943
+ q as cloneKeyboardEvent,
944
+ tt as clonePointerEvent,
945
+ $e as createBody,
946
+ oe as createCanvasRenderer,
947
+ ie as createHighlightsRenderer,
948
+ be as createPresencePainter,
949
+ re as createRenderer,
950
+ Ce as createSelectionHandler,
951
+ de as createSpansRenderer,
952
+ De as createTextAnnotator,
953
+ he as createTextAnnotatorState,
954
+ Ee as fillDefaults,
955
+ Pt as getHighlightClientRects,
956
+ Ft as getQuoteContext,
957
+ ot as getRangeAnnotatableContents,
958
+ dt as isMac,
959
+ Me as isNodeWhitespaceOrEmpty,
960
+ j as isNotAnnotatable,
961
+ It as isRangeAnnotatable,
962
+ $t as isRangeWhitespaceOrEmpty,
963
+ H as isRevived,
964
+ Yt as mergeClientRects,
965
+ Xt as mergeRanges,
966
+ Qt as paint,
967
+ ge as parseW3CTextAnnotation,
968
+ Dt as programmaticallyFocusable,
969
+ zt as rangeToSelector,
970
+ et as reviveAnnotation,
971
+ ut as reviveSelector,
972
+ G as reviveTarget,
973
+ Gt as scrollIntoView,
974
+ me as serializeW3CTextAnnotation,
975
+ Ut as splitAnnotatableRanges,
976
+ Ie as toDomRectList,
977
+ qt as toParentBounds,
978
+ He as toViewportBounds,
979
+ jt as trimRangeToContainer,
980
+ ft as whitespaceOrEmptyRegex
947
981
  };
948
982
  //# sourceMappingURL=text-annotator.es.js.map