@recogito/text-annotator 4.2.3 → 4.2.4

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