@recogito/text-annotator 4.1.0 → 4.2.0

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