@soomo/text-annotator 3.0.0-staging.25 → 3.0.0-staging.27

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.
@@ -34,7 +34,7 @@ const P = {
34
34
  o.setStartAfter(n), o.collapsed || e.push(o);
35
35
  }
36
36
  return e.length > 0 ? e : [t];
37
- }, pt = (t) => {
37
+ }, gt = (t) => {
38
38
  const e = t.cloneContents();
39
39
  return e.querySelectorAll(D).forEach((n) => n.remove()), e;
40
40
  }, te = (t) => {
@@ -72,30 +72,30 @@ const P = {
72
72
  endContainer: i,
73
73
  endOffset: r
74
74
  } = t, s = Array.from(e.childNodes).map((l) => {
75
- const g = l.cloneNode(!0);
76
- return l.nodeName === "CANVAS" ? l : g;
75
+ const p = l.cloneNode(!0);
76
+ return l.nodeName === "CANVAS" ? l : p;
77
77
  }), c = wt(n, e), u = wt(i, e), h = () => {
78
78
  const l = e;
79
79
  l.replaceChildren(...s);
80
- const g = xt(c, l), f = xt(u, l);
81
- return t.setStart(g, o), t.setEnd(f, r), t;
80
+ const p = xt(c, l), f = xt(u, l);
81
+ return t.setStart(p, o), t.setEnd(f, r), t;
82
82
  }, m = (l) => {
83
- const g = document.createElement("SPAN");
84
- return l.surroundContents(g), g;
83
+ const p = document.createElement("SPAN");
84
+ return l.surroundContents(p), p;
85
85
  };
86
86
  if (n === i)
87
87
  throw "Not implemented";
88
88
  {
89
89
  const l = document.createRange();
90
90
  l.selectNodeContents(n), l.setStart(n, o);
91
- const g = m(l), f = document.createRange();
91
+ const p = m(l), f = document.createRange();
92
92
  f.selectNode(i), f.setEnd(i, r);
93
- const w = m(f), p = ne(t).reverse().map((d) => {
93
+ const w = m(f), g = ne(t).reverse().map((d) => {
94
94
  var y;
95
95
  const a = document.createElement("SPAN");
96
96
  return (y = d.parentNode) == null || y.insertBefore(a, d), a.appendChild(d), a;
97
97
  });
98
- return { unwrap: h, nodes: [g, ...p, w] };
98
+ return { unwrap: h, nodes: [p, ...g, w] };
99
99
  }
100
100
  }, ne = (t) => {
101
101
  const {
@@ -119,9 +119,9 @@ const P = {
119
119
  }, oe = (t, e, n = 10, o) => {
120
120
  const i = o ? t.startContainer.parentElement.closest(o) : e, r = document.createRange();
121
121
  r.setStart(i, 0), r.setEnd(t.startContainer, t.startOffset);
122
- const s = pt(r).textContent, c = document.createRange();
122
+ const s = gt(r).textContent, c = document.createRange();
123
123
  c.setStart(t.endContainer, t.endOffset), i === document.body ? c.setEnd(i, i.childNodes.length) : c.setEndAfter(i);
124
- const u = pt(c).textContent;
124
+ const u = gt(c).textContent;
125
125
  return {
126
126
  prefix: s.substring(s.length - n),
127
127
  suffix: u.substring(0, n)
@@ -177,16 +177,16 @@ const P = {
177
177
  }, []), le = (t, e, n) => {
178
178
  const o = document.createRange(), i = n ? t.startContainer.parentElement.closest(n) : e;
179
179
  o.setStart(i, 0), o.setEnd(t.startContainer, t.startOffset);
180
- const r = pt(o).textContent, s = t.toString(), c = r.length || 0, u = c + s.length;
180
+ const r = gt(o).textContent, s = t.toString(), c = r.length || 0, u = c + s.length;
181
181
  return n ? { quote: s, start: c, end: u, range: t, offsetReference: i } : { quote: s, start: c, end: u, range: t };
182
182
  }, Dt = (t, e) => {
183
183
  var m, l;
184
184
  const { start: n, end: o } = t, i = t.offsetReference || e, r = document.createNodeIterator(
185
185
  e,
186
186
  NodeFilter.SHOW_TEXT,
187
- (g) => {
187
+ (p) => {
188
188
  var f;
189
- return (f = g.parentElement) != null && f.closest(D) ? NodeFilter.FILTER_SKIP : NodeFilter.FILTER_ACCEPT;
189
+ return (f = p.parentElement) != null && f.closest(D) ? NodeFilter.FILTER_SKIP : NodeFilter.FILTER_ACCEPT;
190
190
  }
191
191
  );
192
192
  let s = 0;
@@ -196,22 +196,22 @@ const P = {
196
196
  let h = !i;
197
197
  for (; u !== null; ) {
198
198
  if (h || (h = i == null ? void 0 : i.contains(u)), h) {
199
- const g = ((m = u.textContent) == null ? void 0 : m.length) || 0;
200
- if (s + g > n) {
199
+ const p = ((m = u.textContent) == null ? void 0 : m.length) || 0;
200
+ if (s + p > n) {
201
201
  c.setStart(u, n - s);
202
202
  break;
203
203
  }
204
- s += g;
204
+ s += p;
205
205
  }
206
206
  u = r.nextNode();
207
207
  }
208
208
  for (; u !== null; ) {
209
- const g = ((l = u.textContent) == null ? void 0 : l.length) || 0;
210
- if (s + g >= o) {
209
+ const p = ((l = u.textContent) == null ? void 0 : l.length) || 0;
210
+ if (s + p >= o) {
211
211
  c.setEnd(u, o - s);
212
212
  break;
213
213
  }
214
- s += g, u = r.nextNode();
214
+ s += p, u = r.nextNode();
215
215
  }
216
216
  return {
217
217
  ...t,
@@ -237,7 +237,7 @@ const P = {
237
237
  x ? s.current !== x.id && (t.classList.add("hovered"), s.set(x.id)) : s.current && (t.classList.remove("hovered"), s.set(null));
238
238
  };
239
239
  t.addEventListener("pointermove", l);
240
- const g = (B = !1) => {
240
+ const p = (B = !1) => {
241
241
  h && h.clear();
242
242
  const M = de(t), { minX: b, minY: x, maxX: A, maxY: C } = M, R = u ? i.getIntersecting(b, x, A, C).filter(({ annotation: _ }) => u(_)) : i.getIntersecting(b, x, A, C), O = r.selected.map(({ id: _ }) => _), H = R.map(({ annotation: _, rects: qt }) => {
243
243
  const jt = O.includes(_.id), Gt = _.id === s.current;
@@ -245,29 +245,29 @@ const P = {
245
245
  });
246
246
  o.redraw(H, M, c, h, B), setTimeout(() => m(R.map(({ annotation: _ }) => _)), 1);
247
247
  }, f = (B) => {
248
- h = B, g();
248
+ h = B, p();
249
249
  }, w = (B) => {
250
- c = B, g();
250
+ c = B, p();
251
251
  }, v = (B) => {
252
- u = B, g(!1);
253
- }, p = () => g();
254
- i.observe(p);
255
- const d = r.subscribe(() => g()), a = () => g(!0);
252
+ u = B, p(!1);
253
+ }, g = () => p();
254
+ i.observe(g);
255
+ const d = r.subscribe(() => p()), a = () => p(!0);
256
256
  document.addEventListener("scroll", a, { capture: !0, passive: !0 });
257
257
  const y = bt(() => {
258
- i.recalculatePositions(), h && h.reset(), g();
258
+ i.recalculatePositions(), h && h.reset(), p();
259
259
  });
260
260
  window.addEventListener("resize", y);
261
261
  const S = new ResizeObserver(y);
262
262
  S.observe(t);
263
263
  const L = { attributes: !0, childList: !0, subtree: !0 }, E = new MutationObserver((B) => {
264
- B.every((b) => b.target === t || t.contains(b.target)) || g(!0);
264
+ B.every((b) => b.target === t || t.contains(b.target)) || p(!0);
265
265
  });
266
266
  return E.observe(document.body, L), {
267
267
  destroy: () => {
268
- t.removeEventListener("pointermove", l), o.destroy(), i.unobserve(p), d(), document.removeEventListener("scroll", a), window.removeEventListener("resize", y), S.disconnect(), E.disconnect();
268
+ t.removeEventListener("pointermove", l), o.destroy(), i.unobserve(g), d(), document.removeEventListener("scroll", a), window.removeEventListener("resize", y), S.disconnect(), E.disconnect();
269
269
  },
270
- redraw: g,
270
+ redraw: p,
271
271
  setStyle: w,
272
272
  setFilter: v,
273
273
  setPainter: f,
@@ -278,39 +278,32 @@ const P = {
278
278
  return t.width = window.innerWidth, t.height = window.innerHeight, t.className = "r6o-highlight-layer bg", t;
279
279
  }, fe = (t, e) => {
280
280
  t.width = window.innerWidth, t.height = window.innerHeight;
281
- }, ge = (t) => {
281
+ }, pe = (t) => {
282
282
  t.classList.add("r6o-annotatable");
283
283
  const e = he(), n = e.getContext("2d");
284
- t.insertBefore(e, t.firstChild);
284
+ document.body.appendChild(e);
285
285
  const o = (c, u, h, m) => requestAnimationFrame(() => {
286
- const { width: l, height: g } = e;
287
- n.clearRect(-0.5, -0.5, l + 1, g + 1), m && m.clear();
286
+ const { width: l, height: p } = e;
287
+ n.clearRect(-0.5, -0.5, l + 1, p + 1), m && m.clear();
288
288
  const { top: f, left: w } = u;
289
- [...c].sort((p, d) => {
290
- const { annotation: { target: { created: a } } } = p, { annotation: { target: { created: y } } } = d;
289
+ [...c].sort((g, d) => {
290
+ const { annotation: { target: { created: a } } } = g, { annotation: { target: { created: y } } } = d;
291
291
  return a.getTime() - y.getTime();
292
- }).forEach((p) => {
293
- var L;
294
- const d = h ? typeof h == "function" ? h(p.annotation, p.state) : h : (L = p.state) != null && L.selected ? ot : P, a = m && m.paint(p, u) || d, y = p.rects.map(({ x: E, y: T, width: B, height: M }) => ({
295
- x: E + w,
296
- y: T + f,
297
- width: B,
298
- height: M
292
+ }).forEach((g) => {
293
+ var S;
294
+ const d = h ? typeof h == "function" ? h(g.annotation, g.state) : h : (S = g.state) != null && S.selected ? ot : P, a = m && m.paint(g, u) || d, y = g.rects.map(({ x: L, y: E, width: T, height: B }) => ({
295
+ x: L + w,
296
+ y: E + f,
297
+ width: T,
298
+ height: B
299
299
  }));
300
- n.fillStyle = a.fill, n.globalAlpha = a.fillOpacity || 1;
301
- const S = 5;
302
- if (y.forEach(
303
- ({ x: E, y: T, width: B, height: M }) => n.fillRect(
304
- E,
305
- T - S / 2,
306
- B,
307
- M + S
308
- )
300
+ if (n.fillStyle = a.fill, n.globalAlpha = a.fillOpacity || 1, y.forEach(
301
+ ({ x: L, y: E, width: T, height: B }) => n.fillRect(L, E, T, B)
309
302
  ), a.underlineColor) {
310
303
  n.globalAlpha = 1, n.strokeStyle = a.underlineColor, n.lineWidth = a.underlineThickness ?? 1;
311
- const E = S / 2 + (a.underlineOffset ?? 0);
312
- y.forEach(({ x: T, y: B, width: M, height: b }) => {
313
- n.beginPath(), n.moveTo(T, B + b + E), n.lineTo(T + M, B + b + E), n.stroke();
304
+ const L = a.underlineOffset ?? 0;
305
+ y.forEach(({ x: E, y: T, width: B, height: M }) => {
306
+ n.beginPath(), n.moveTo(E, T + M + L), n.lineTo(E + B, T + M + L), n.stroke();
314
307
  });
315
308
  }
316
309
  });
@@ -319,14 +312,14 @@ const P = {
319
312
  });
320
313
  return window.addEventListener("resize", i), {
321
314
  destroy: () => {
322
- t.removeChild(e), window.removeEventListener("resize", i);
315
+ e.remove(), window.removeEventListener("resize", i);
323
316
  },
324
317
  setVisible: (c) => {
325
318
  console.log("setVisible not implemented on Canvas renderer");
326
319
  },
327
320
  redraw: o
328
321
  };
329
- }, pe = (t, e, n) => vt(t, e, n, ge(t));
322
+ }, ge = (t, e, n) => vt(t, e, n, pe(t));
330
323
  var me = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, X = function(t) {
331
324
  return typeof t == "string" ? t.length > 0 : typeof t == "number";
332
325
  }, I = function(t, e, n) {
@@ -480,12 +473,12 @@ const Ee = (t) => [
480
473
  Array.from(e).filter((l) => !h.has(l));
481
474
  const m = r.map((l) => {
482
475
  var w;
483
- const g = c ? typeof c == "function" ? c(l.annotation, l.state) : c : (w = l.state) != null && w.selected ? ot : P, f = u && u.paint(l, s) || g;
476
+ const p = c ? typeof c == "function" ? c(l.annotation, l.state) : c : (w = l.state) != null && w.selected ? ot : P, f = u && u.paint(l, s) || p;
484
477
  return `::highlight(_${l.annotation.id}) { ${Ee(f)} }`;
485
478
  });
486
479
  t.innerHTML = m.join(`
487
480
  `), CSS.highlights.clear(), r.forEach(({ annotation: l }) => {
488
- const g = l.target.selector.map((w) => w.range), f = new Highlight(...g);
481
+ const p = l.target.selector.map((w) => w.range), f = new Highlight(...p);
489
482
  CSS.highlights.set(`_${l.id}`, f);
490
483
  }), e = h;
491
484
  }
@@ -525,18 +518,16 @@ const Le = (t, e) => {
525
518
  e.remove();
526
519
  },
527
520
  redraw: (s, c, u, h, m) => {
528
- const g = !(mt(n, s) && m);
529
- if (!h && !g) return;
530
- g && (e.innerHTML = "");
521
+ const p = !(mt(n, s) && m);
522
+ if (!h && !p) return;
523
+ p && (e.innerHTML = "");
531
524
  const f = s.reduce((w, { rects: v }) => [...w, ...v], []);
532
525
  s.forEach((w) => {
533
526
  w.rects.map((v) => {
534
- const p = Le(v, f), d = Kt(w, c, u, h, p);
535
- if (g) {
527
+ const g = Le(v, f), d = Kt(w, c, u, h, g);
528
+ if (p) {
536
529
  const a = document.createElement("span");
537
- a.className = "r6o-annotation", a.dataset.annotation = w.annotation.id, a.style.left = `${v.x}px`, a.style.top = `${v.y}px`, a.style.width = `${v.width}px`, a.style.height = `${v.height}px`;
538
- const y = Y((d == null ? void 0 : d.fill) || P.fill).alpha((d == null ? void 0 : d.fillOpacity) === void 0 ? P.fillOpacity : d.fillOpacity).toHex();
539
- a.style.backgroundColor = y, d.underlineStyle && (a.style.borderStyle = d.underlineStyle), d.underlineColor && (a.style.borderColor = d.underlineColor), d.underlineThickness && (a.style.borderBottomWidth = `${d.underlineThickness}px`), d.underlineOffset && (a.style.paddingBottom = `${d.underlineOffset}px`), e.appendChild(a);
530
+ a.className = "r6o-annotation", a.dataset.annotation = w.annotation.id, a.style.left = `${v.x}px`, a.style.top = `${v.y}px`, a.style.width = `${v.width}px`, a.style.height = `${v.height}px`, a.style.backgroundColor = Y((d == null ? void 0 : d.fill) || P.fill).alpha((d == null ? void 0 : d.fillOpacity) === void 0 ? P.fillOpacity : d.fillOpacity).toHex(), d.underlineStyle && (a.style.borderStyle = d.underlineStyle), d.underlineColor && (a.style.borderColor = d.underlineColor), d.underlineThickness && (a.style.borderBottomWidth = `${d.underlineThickness}px`), d.underlineOffset && (a.style.paddingBottom = `${d.underlineOffset}px`), e.appendChild(a);
540
531
  }
541
532
  });
542
533
  }), n = s;
@@ -650,30 +641,30 @@ const ut = { selected: [] }, ke = (t, e = "EDIT") => {
650
641
  }, c = (l) => {
651
642
  if (i.selected.length === 0)
652
643
  return !1;
653
- const g = typeof l == "string" ? l : l.id;
654
- return i.selected.some((f) => f.id === g);
655
- }, u = (l, g) => {
644
+ const p = typeof l == "string" ? l : l.id;
645
+ return i.selected.some((f) => f.id === p);
646
+ }, u = (l, p) => {
656
647
  const f = t.getAnnotation(l);
657
648
  if (f) {
658
649
  const w = It(f, e);
659
- o(w === "EDIT" ? { selected: [{ id: l, editable: !0 }], pointerEvent: g } : w === "SELECT" ? { selected: [{ id: l }], pointerEvent: g } : { selected: [], pointerEvent: g });
650
+ o(w === "EDIT" ? { selected: [{ id: l, editable: !0 }], pointerEvent: p } : w === "SELECT" ? { selected: [{ id: l }], pointerEvent: p } : { selected: [], pointerEvent: p });
660
651
  } else
661
652
  console.warn("Invalid selection: " + l);
662
- }, h = (l, g) => {
653
+ }, h = (l, p) => {
663
654
  const f = Array.isArray(l) ? l : [l], w = f.map((v) => t.getAnnotation(v)).filter(Boolean);
664
655
  o({
665
656
  selected: w.map((v) => {
666
- const p = g === void 0 ? It(v, e) === "EDIT" : g;
667
- return { id: v.id, editable: p };
657
+ const g = p === void 0 ? It(v, e) === "EDIT" : p;
658
+ return { id: v.id, editable: g };
668
659
  })
669
660
  }), w.length !== f.length && console.warn("Invalid selection", l);
670
661
  }, m = (l) => {
671
662
  if (i.selected.length === 0)
672
663
  return !1;
673
- const { selected: g } = i;
674
- g.filter(({ id: f }) => l.includes(f)).length > 0 && o({ selected: g.filter(({ id: f }) => !l.includes(f)) });
664
+ const { selected: p } = i;
665
+ p.filter(({ id: f }) => l.includes(f)).length > 0 && o({ selected: p.filter(({ id: f }) => !l.includes(f)) });
675
666
  };
676
- return t.observe(({ changes: l }) => m((l.deleted || []).map((g) => g.id))), {
667
+ return t.observe(({ changes: l }) => m((l.deleted || []).map((p) => p.id))), {
677
668
  clear: r,
678
669
  clickSelect: u,
679
670
  get selected() {
@@ -762,17 +753,17 @@ const We = (t, e) => {
762
753
  return !0;
763
754
  }, qe = (t, e) => {
764
755
  const n = new Set((t.created || []).map((l) => l.id)), o = new Set((t.updated || []).map(({ newValue: l }) => l.id)), i = new Set((e.created || []).map((l) => l.id)), r = new Set((e.deleted || []).map((l) => l.id)), s = new Set((e.updated || []).map(({ oldValue: l }) => l.id)), c = new Set((e.updated || []).filter(({ oldValue: l }) => n.has(l.id) || o.has(l.id)).map(({ oldValue: l }) => l.id)), u = [
765
- ...(t.created || []).filter((l) => !r.has(l.id)).map((l) => s.has(l.id) ? e.updated.find(({ oldValue: g }) => g.id === l.id).newValue : l),
756
+ ...(t.created || []).filter((l) => !r.has(l.id)).map((l) => s.has(l.id) ? e.updated.find(({ oldValue: p }) => p.id === l.id).newValue : l),
766
757
  ...e.created || []
767
758
  ], h = [
768
759
  ...(t.deleted || []).filter((l) => !i.has(l.id)),
769
760
  ...(e.deleted || []).filter((l) => !n.has(l.id))
770
761
  ], m = [
771
762
  ...(t.updated || []).filter(({ newValue: l }) => !r.has(l.id)).map((l) => {
772
- const { oldValue: g, newValue: f } = l;
763
+ const { oldValue: p, newValue: f } = l;
773
764
  if (s.has(f.id)) {
774
765
  const w = e.updated.find((v) => v.oldValue.id === f.id).newValue;
775
- return Pt(g, w);
766
+ return Pt(p, w);
776
767
  } else
777
768
  return l;
778
769
  }),
@@ -830,7 +821,7 @@ const We = (t, e) => {
830
821
  }] });
831
822
  } else
832
823
  console.warn(`Attempt to add body to missing annotation: ${b.annotation}`);
833
- }, l = () => [...t.values()], g = (b = N.LOCAL) => {
824
+ }, l = () => [...t.values()], p = (b = N.LOCAL) => {
834
825
  const x = [...t.values()];
835
826
  t.clear(), e.clear(), r(b, { deleted: x });
836
827
  }, f = (b, x = !0, A = N.LOCAL) => {
@@ -858,7 +849,7 @@ const We = (t, e) => {
858
849
  }, v = (b, x = N.LOCAL) => {
859
850
  const A = w(b);
860
851
  A && r(x, { deleted: [A] });
861
- }, p = (b, x = N.LOCAL) => {
852
+ }, g = (b, x = N.LOCAL) => {
862
853
  const A = b.reduce((C, R) => {
863
854
  const O = w(R);
864
855
  return O ? [...C, O] : C;
@@ -949,7 +940,7 @@ const We = (t, e) => {
949
940
  addBody: m,
950
941
  all: l,
951
942
  bulkAddAnnotation: f,
952
- bulkDeleteAnnotation: p,
943
+ bulkDeleteAnnotation: g,
953
944
  bulkDeleteBodies: y,
954
945
  bulkUpdateAnnotation: h,
955
946
  bulkUpdateBodies: B,
@@ -957,7 +948,7 @@ const We = (t, e) => {
957
948
  const A = b.map((C) => M(C)).filter(Boolean);
958
949
  A.length > 0 && r(x, { updated: A });
959
950
  },
960
- clear: g,
951
+ clear: p,
961
952
  deleteAnnotation: v,
962
953
  deleteBody: a,
963
954
  getAnnotation: S,
@@ -995,15 +986,15 @@ const Qe = 250, Je = (t) => {
995
986
  if (v - r > Qe)
996
987
  n.splice(o + 1), n.push(w), o = n.length - 1;
997
988
  else {
998
- const p = n.length - 1;
999
- n[p] = qe(n[p], w);
989
+ const g = n.length - 1;
990
+ n[g] = qe(n[g], w);
1000
991
  }
1001
992
  r = v;
1002
993
  }
1003
994
  i = !1;
1004
995
  };
1005
996
  t.observe(s, { origin: N.LOCAL });
1006
- const c = (f) => f && f.length > 0 && t.bulkDeleteAnnotation(f), u = (f) => f && f.length > 0 && t.bulkAddAnnotation(f, !1), h = (f) => f && f.length > 0 && t.bulkUpdateAnnotation(f.map(({ oldValue: w }) => w)), m = (f) => f && f.length > 0 && t.bulkUpdateAnnotation(f.map(({ newValue: w }) => w)), l = (f) => f && f.length > 0 && t.bulkAddAnnotation(f, !1), g = (f) => f && f.length > 0 && t.bulkDeleteAnnotation(f);
997
+ const c = (f) => f && f.length > 0 && t.bulkDeleteAnnotation(f), u = (f) => f && f.length > 0 && t.bulkAddAnnotation(f, !1), h = (f) => f && f.length > 0 && t.bulkUpdateAnnotation(f.map(({ oldValue: w }) => w)), m = (f) => f && f.length > 0 && t.bulkUpdateAnnotation(f.map(({ newValue: w }) => w)), l = (f) => f && f.length > 0 && t.bulkAddAnnotation(f, !1), p = (f) => f && f.length > 0 && t.bulkDeleteAnnotation(f);
1007
998
  return {
1008
999
  canRedo: () => n.length - 1 > o,
1009
1000
  canUndo: () => o > -1,
@@ -1013,7 +1004,7 @@ const Qe = 250, Je = (t) => {
1013
1004
  if (n.length - 1 > o) {
1014
1005
  i = !0;
1015
1006
  const { created: f, updated: w, deleted: v } = n[o + 1];
1016
- u(f), m(w), g(v), e.emit("redo", n[o + 1]), o += 1;
1007
+ u(f), m(w), p(v), e.emit("redo", n[o + 1]), o += 1;
1017
1008
  }
1018
1009
  },
1019
1010
  undo: () => {
@@ -1033,36 +1024,36 @@ const Qe = 250, Je = (t) => {
1033
1024
  }, tn = (t, e, n, o) => {
1034
1025
  const { store: i, selection: r, hover: s, viewport: c } = t, u = /* @__PURE__ */ new Map();
1035
1026
  let h = [], m;
1036
- const l = (v, p) => {
1037
- u.has(v) ? u.get(v).push(p) : u.set(v, [p]);
1038
- }, g = (v, p) => {
1027
+ const l = (v, g) => {
1028
+ u.has(v) ? u.get(v).push(g) : u.set(v, [g]);
1029
+ }, p = (v, g) => {
1039
1030
  const d = u.get(v);
1040
1031
  if (d) {
1041
- const a = d.indexOf(p);
1032
+ const a = d.indexOf(g);
1042
1033
  a !== -1 && d.splice(a, 1);
1043
1034
  }
1044
- }, f = (v, p, d) => {
1035
+ }, f = (v, g, d) => {
1045
1036
  u.has(v) && setTimeout(() => {
1046
1037
  u.get(v).forEach((a) => {
1047
1038
  if (n) {
1048
- const y = Array.isArray(p) ? p.map((L) => n.serialize(L)) : n.serialize(p), S = d ? d instanceof PointerEvent ? d : n.serialize(d) : void 0;
1039
+ const y = Array.isArray(g) ? g.map((L) => n.serialize(L)) : n.serialize(g), S = d ? d instanceof PointerEvent ? d : n.serialize(d) : void 0;
1049
1040
  a(y, S);
1050
1041
  } else
1051
- a(p, d);
1042
+ a(g, d);
1052
1043
  });
1053
1044
  }, 1);
1054
1045
  };
1055
1046
  r.subscribe(({ selected: v }) => {
1056
1047
  if (!(h.length === 0 && v.length === 0)) {
1057
1048
  if (h.length === 0 && v.length > 0)
1058
- h = v.map(({ id: p }) => i.getAnnotation(p));
1049
+ h = v.map(({ id: g }) => i.getAnnotation(g));
1059
1050
  else if (h.length > 0 && v.length === 0)
1060
- h.forEach((p) => {
1061
- const d = i.getAnnotation(p.id);
1062
- d && !q(d, p) && f("updateAnnotation", d, p);
1051
+ h.forEach((g) => {
1052
+ const d = i.getAnnotation(g.id);
1053
+ d && !q(d, g) && f("updateAnnotation", d, g);
1063
1054
  }), h = [];
1064
1055
  else {
1065
- const p = new Set(h.map((a) => a.id)), d = new Set(v.map(({ id: a }) => a));
1056
+ const g = new Set(h.map((a) => a.id)), d = new Set(v.map(({ id: a }) => a));
1066
1057
  h.filter((a) => !d.has(a.id)).forEach((a) => {
1067
1058
  const y = i.getAnnotation(a.id);
1068
1059
  y && !q(y, a) && f("updateAnnotation", y, a);
@@ -1070,16 +1061,16 @@ const Qe = 250, Je = (t) => {
1070
1061
  // Remove annotations that were deselected
1071
1062
  ...h.filter((a) => d.has(a.id)),
1072
1063
  // Add editable annotations that were selected
1073
- ...v.filter(({ id: a }) => !p.has(a)).map(({ id: a }) => i.getAnnotation(a))
1064
+ ...v.filter(({ id: a }) => !g.has(a)).map(({ id: a }) => i.getAnnotation(a))
1074
1065
  ];
1075
1066
  }
1076
1067
  f("selectionChanged", h);
1077
1068
  }
1078
1069
  }), s.subscribe((v) => {
1079
1070
  !m && v ? f("mouseEnterAnnotation", i.getAnnotation(v)) : m && !v ? f("mouseLeaveAnnotation", i.getAnnotation(m)) : m && v && (f("mouseLeaveAnnotation", i.getAnnotation(m)), f("mouseEnterAnnotation", i.getAnnotation(v))), m = v;
1080
- }), c == null || c.subscribe((v) => f("viewportIntersect", v.map((p) => i.getAnnotation(p)))), i.observe((v) => {
1081
- const { created: p, deleted: d } = v.changes;
1082
- (p || []).forEach((a) => f("createAnnotation", a)), (d || []).forEach((a) => f("deleteAnnotation", a)), (v.changes.updated || []).filter((a) => [
1071
+ }), c == null || c.subscribe((v) => f("viewportIntersect", v.map((g) => i.getAnnotation(g)))), i.observe((v) => {
1072
+ const { created: g, deleted: d } = v.changes;
1073
+ (g || []).forEach((a) => f("createAnnotation", a)), (d || []).forEach((a) => f("deleteAnnotation", a)), (v.changes.updated || []).filter((a) => [
1083
1074
  ...a.bodiesCreated || [],
1084
1075
  ...a.bodiesDeleted || [],
1085
1076
  ...a.bodiesUpdated || []
@@ -1089,15 +1080,15 @@ const Qe = 250, Je = (t) => {
1089
1080
  });
1090
1081
  }, { origin: N.LOCAL }), i.observe((v) => {
1091
1082
  if (h) {
1092
- const p = new Set(h.map((a) => a.id)), d = (v.changes.updated || []).filter(({ newValue: a }) => p.has(a.id)).map(({ newValue: a }) => a);
1083
+ const g = new Set(h.map((a) => a.id)), d = (v.changes.updated || []).filter(({ newValue: a }) => g.has(a.id)).map(({ newValue: a }) => a);
1093
1084
  d.length > 0 && (h = h.map((a) => d.find((S) => S.id === a.id) || a));
1094
1085
  }
1095
1086
  }, { origin: N.REMOTE });
1096
- const w = (v) => (p) => {
1097
- const { updated: d } = p;
1087
+ const w = (v) => (g) => {
1088
+ const { updated: d } = g;
1098
1089
  v ? (d || []).forEach((a) => f("updateAnnotation", a.oldValue, a.newValue)) : (d || []).forEach((a) => f("updateAnnotation", a.newValue, a.oldValue));
1099
1090
  };
1100
- return e.on("undo", w(!0)), e.on("redo", w(!1)), { on: l, off: g, emit: f };
1091
+ return e.on("undo", w(!0)), e.on("redo", w(!1)), { on: l, off: p, emit: f };
1101
1092
  }, en = (t) => (e) => e.reduce((n, o) => {
1102
1093
  const { parsed: i, error: r } = t.parse(o);
1103
1094
  return r ? {
@@ -1110,44 +1101,44 @@ const Qe = 250, Je = (t) => {
1110
1101
  ...n
1111
1102
  };
1112
1103
  }, { parsed: [], failed: [] }), nn = (t, e, n) => {
1113
- const { store: o, selection: i } = t, r = (p) => {
1104
+ const { store: o, selection: i } = t, r = (g) => {
1114
1105
  if (n) {
1115
- const { parsed: d, error: a } = n.parse(p);
1106
+ const { parsed: d, error: a } = n.parse(g);
1116
1107
  d ? o.addAnnotation(d, N.REMOTE) : console.error(a);
1117
1108
  } else
1118
- o.addAnnotation(p, N.REMOTE);
1119
- }, s = () => i.clear(), c = () => o.clear(), u = (p) => {
1120
- const d = o.getAnnotation(p);
1109
+ o.addAnnotation(g, N.REMOTE);
1110
+ }, s = () => i.clear(), c = () => o.clear(), u = (g) => {
1111
+ const d = o.getAnnotation(g);
1121
1112
  return n && d ? n.serialize(d) : d;
1122
1113
  }, h = () => n ? o.all().map(n.serialize) : o.all(), m = () => {
1123
- var p;
1124
- const d = (((p = i.selected) == null ? void 0 : p.map((a) => a.id)) || []).map((a) => o.getAnnotation(a)).filter(Boolean);
1114
+ var g;
1115
+ const d = (((g = i.selected) == null ? void 0 : g.map((a) => a.id)) || []).map((a) => o.getAnnotation(a)).filter(Boolean);
1125
1116
  return n ? d.map(n.serialize) : d;
1126
- }, l = (p, d = !0) => fetch(p).then((a) => a.json()).then((a) => (f(a, d), a)), g = (p) => {
1127
- if (typeof p == "string") {
1128
- const d = o.getAnnotation(p);
1129
- if (o.deleteAnnotation(p), d)
1117
+ }, l = (g, d = !0) => fetch(g).then((a) => a.json()).then((a) => (f(a, d), a)), p = (g) => {
1118
+ if (typeof g == "string") {
1119
+ const d = o.getAnnotation(g);
1120
+ if (o.deleteAnnotation(g), d)
1130
1121
  return n ? n.serialize(d) : d;
1131
1122
  } else {
1132
- const d = n ? n.parse(p).parsed : p;
1123
+ const d = n ? n.parse(g).parsed : g;
1133
1124
  if (d)
1134
- return o.deleteAnnotation(d), p;
1125
+ return o.deleteAnnotation(d), g;
1135
1126
  }
1136
- }, f = (p, d = !0) => {
1127
+ }, f = (g, d = !0) => {
1137
1128
  if (n) {
1138
- const { parsed: a, failed: y } = en(n)(p);
1129
+ const { parsed: a, failed: y } = en(n)(g);
1139
1130
  y.length > 0 && console.warn(`Discarded ${y.length} invalid annotations`, y), o.bulkAddAnnotation(a, d, N.REMOTE);
1140
1131
  } else
1141
- o.bulkAddAnnotation(p, d, N.REMOTE);
1142
- }, w = (p, d) => {
1143
- p ? i.setSelected(p, d) : i.clear();
1144
- }, v = (p) => {
1132
+ o.bulkAddAnnotation(g, d, N.REMOTE);
1133
+ }, w = (g, d) => {
1134
+ g ? i.setSelected(g, d) : i.clear();
1135
+ }, v = (g) => {
1145
1136
  if (n) {
1146
- const d = n.parse(p).parsed, a = n.serialize(o.getAnnotation(d.id));
1137
+ const d = n.parse(g).parsed, a = n.serialize(o.getAnnotation(d.id));
1147
1138
  return o.updateAnnotation(d), a;
1148
1139
  } else {
1149
- const d = o.getAnnotation(p.id);
1150
- return o.updateAnnotation(p), d;
1140
+ const d = o.getAnnotation(g.id);
1141
+ return o.updateAnnotation(g), d;
1151
1142
  }
1152
1143
  };
1153
1144
  return {
@@ -1161,7 +1152,7 @@ const Qe = 250, Je = (t) => {
1161
1152
  getSelected: m,
1162
1153
  loadAnnotations: l,
1163
1154
  redo: e.redo,
1164
- removeAnnotation: g,
1155
+ removeAnnotation: p,
1165
1156
  setAnnotations: f,
1166
1157
  setSelected: w,
1167
1158
  undo: e.undo,
@@ -1216,9 +1207,9 @@ const ln = () => ({ isGuest: !0, id: an("1234567890abcdefghijklmnopqrstuvwxyzABC
1216
1207
  });
1217
1208
  cn();
1218
1209
  const Un = (t, e) => ({
1219
- parse: (n) => pn(n),
1210
+ parse: (n) => gn(n),
1220
1211
  serialize: (n) => mn(n, t, e)
1221
- }), fn = (t) => t.quote !== void 0 && t.start !== void 0 && t.end !== void 0, gn = (t) => {
1212
+ }), fn = (t) => t.quote !== void 0 && t.start !== void 0 && t.end !== void 0, pn = (t) => {
1222
1213
  const {
1223
1214
  id: e,
1224
1215
  creator: n,
@@ -1237,13 +1228,13 @@ const Un = (t, e) => ({
1237
1228
  styleClass: s[0].styleClass
1238
1229
  };
1239
1230
  for (const u of s) {
1240
- const m = (Array.isArray(u.selector) ? u.selector : [u.selector]).reduce((l, g) => {
1241
- switch (g.type) {
1231
+ const m = (Array.isArray(u.selector) ? u.selector : [u.selector]).reduce((l, p) => {
1232
+ switch (p.type) {
1242
1233
  case "TextQuoteSelector":
1243
- l.quote = g.exact;
1234
+ l.quote = p.exact;
1244
1235
  break;
1245
1236
  case "TextPositionSelector":
1246
- l.start = g.start, l.end = g.end;
1237
+ l.start = p.start, l.end = p.end;
1247
1238
  break;
1248
1239
  }
1249
1240
  return l;
@@ -1259,14 +1250,14 @@ const Un = (t, e) => ({
1259
1250
  }
1260
1251
  }
1261
1252
  return { parsed: c };
1262
- }, pn = (t) => {
1253
+ }, gn = (t) => {
1263
1254
  const e = t.id || Ht(), {
1264
1255
  creator: n,
1265
1256
  created: o,
1266
1257
  modified: i,
1267
1258
  body: r,
1268
1259
  ...s
1269
- } = t, c = un(r, e), u = gn(t);
1260
+ } = t, c = un(r, e), u = pn(t);
1270
1261
  return "error" in u ? { error: u.error } : {
1271
1262
  parsed: {
1272
1263
  ...s,
@@ -1282,8 +1273,8 @@ const Un = (t, e) => ({
1282
1273
  created: u,
1283
1274
  updated: h,
1284
1275
  ...m
1285
- } = i, l = s.map((g) => {
1286
- const { quote: f, start: w, end: v, range: p } = g, { prefix: d, suffix: a } = oe(p, n), y = [{
1276
+ } = i, l = s.map((p) => {
1277
+ const { quote: f, start: w, end: v, range: g } = p, { prefix: d, suffix: a } = oe(g, n), y = [{
1287
1278
  type: "TextQuoteSelector",
1288
1279
  exact: f,
1289
1280
  prefix: d,
@@ -1295,7 +1286,7 @@ const Un = (t, e) => ({
1295
1286
  }];
1296
1287
  return {
1297
1288
  ...m,
1298
- id: g.id,
1289
+ id: p.id,
1299
1290
  source: e,
1300
1291
  selector: y
1301
1292
  };
@@ -1321,12 +1312,12 @@ function zt(t, e, n, o, i) {
1321
1312
  var r = o - n + 1, s = e - n + 1, c = Math.log(r), u = 0.5 * Math.exp(2 * c / 3), h = 0.5 * Math.sqrt(c * u * (r - u) / r) * (s - r / 2 < 0 ? -1 : 1), m = Math.max(n, Math.floor(e - s * u / r + h)), l = Math.min(o, Math.floor(e + (r - s) * u / r + h));
1322
1313
  zt(t, e, m, l, i);
1323
1314
  }
1324
- var g = t[e], f = n, w = o;
1325
- for (j(t, n, e), i(t[o], g) > 0 && j(t, n, o); f < w; ) {
1326
- for (j(t, f, w), f++, w--; i(t[f], g) < 0; ) f++;
1327
- for (; i(t[w], g) > 0; ) w--;
1315
+ var p = t[e], f = n, w = o;
1316
+ for (j(t, n, e), i(t[o], p) > 0 && j(t, n, o); f < w; ) {
1317
+ for (j(t, f, w), f++, w--; i(t[f], p) < 0; ) f++;
1318
+ for (; i(t[w], p) > 0; ) w--;
1328
1319
  }
1329
- i(t[n], g) === 0 ? j(t, n, w) : (w++, j(t, w, o)), w <= e && (n = w + 1), e <= w && (o = w - 1);
1320
+ i(t[n], p) === 0 ? j(t, n, w) : (w++, j(t, w, o)), w <= e && (n = w + 1), e <= w && (o = w - 1);
1330
1321
  }
1331
1322
  }
1332
1323
  function j(t, e, n) {
@@ -1351,7 +1342,7 @@ class yn {
1351
1342
  for (; n; ) {
1352
1343
  for (let s = 0; s < n.children.length; s++) {
1353
1344
  const c = n.children[s], u = n.leaf ? i(c) : c;
1354
- nt(e, u) && (n.leaf ? o.push(c) : gt(e, u) ? this._all(c, o) : r.push(c));
1345
+ nt(e, u) && (n.leaf ? o.push(c) : pt(e, u) ? this._all(c, o) : r.push(c));
1355
1346
  }
1356
1347
  n = r.pop();
1357
1348
  }
@@ -1365,7 +1356,7 @@ class yn {
1365
1356
  for (let i = 0; i < n.children.length; i++) {
1366
1357
  const r = n.children[i], s = n.leaf ? this.toBBox(r) : r;
1367
1358
  if (nt(e, s)) {
1368
- if (n.leaf || gt(e, s)) return !0;
1359
+ if (n.leaf || pt(e, s)) return !0;
1369
1360
  o.push(r);
1370
1361
  }
1371
1362
  }
@@ -1411,7 +1402,7 @@ class yn {
1411
1402
  if (m !== -1)
1412
1403
  return o.children.splice(m, 1), r.push(o), this._condense(r), this;
1413
1404
  }
1414
- !h && !o.leaf && gt(o, i) ? (r.push(o), s.push(c), c = 0, u = o, o = o.children[0]) : u ? (c++, o = u.children[c], h = !1) : o = null;
1405
+ !h && !o.leaf && pt(o, i) ? (r.push(o), s.push(c), c = 0, u = o, o = o.children[0]) : u ? (c++, o = u.children[c], h = !1) : o = null;
1415
1406
  }
1416
1407
  return this;
1417
1408
  }
@@ -1447,9 +1438,9 @@ class yn {
1447
1438
  for (let m = n; m <= o; m += h) {
1448
1439
  const l = Math.min(m + h - 1, o);
1449
1440
  Ut(e, m, l, u, this.compareMinY);
1450
- for (let g = m; g <= l; g += u) {
1451
- const f = Math.min(g + u - 1, l);
1452
- c.children.push(this._build(e, g, f, i - 1));
1441
+ for (let p = m; p <= l; p += u) {
1442
+ const f = Math.min(p + u - 1, l);
1443
+ c.children.push(this._build(e, p, f, i - 1));
1453
1444
  }
1454
1445
  }
1455
1446
  return z(c, this.toBBox), c;
@@ -1557,7 +1548,7 @@ function Sn(t, e) {
1557
1548
  const n = Math.max(t.minX, e.minX), o = Math.max(t.minY, e.minY), i = Math.min(t.maxX, e.maxX), r = Math.min(t.maxY, e.maxY);
1558
1549
  return Math.max(0, i - n) * Math.max(0, r - o);
1559
1550
  }
1560
- function gt(t, e) {
1551
+ function pt(t, e) {
1561
1552
  return t.minX <= e.minX && t.minY <= e.minY && e.maxX <= t.maxX && e.maxY <= t.maxY;
1562
1553
  }
1563
1554
  function nt(t, e) {
@@ -1625,7 +1616,7 @@ const Cn = (t, e) => {
1625
1616
  maxY: a
1626
1617
  }), L = (E) => E.annotation.rects.reduce((T, B) => T + B.width * B.height, 0);
1627
1618
  return S.length > 0 ? (S.sort((E, T) => L(E) - L(T)), y ? S.map((E) => E.annotation.id) : [S[0].annotation.id]) : [];
1628
- }, g = (d) => {
1619
+ }, p = (d) => {
1629
1620
  const a = f(d);
1630
1621
  if (a.length === 0)
1631
1622
  return;
@@ -1643,7 +1634,7 @@ const Cn = (t, e) => {
1643
1634
  all: r,
1644
1635
  clear: s,
1645
1636
  getAt: l,
1646
- getAnnotationBounds: g,
1637
+ getAnnotationBounds: p,
1647
1638
  getAnnotationRects: f,
1648
1639
  getIntersecting: (d, a, y, S) => {
1649
1640
  const L = n.search({ minX: d, minY: a, maxX: y, maxY: S }), E = new Set(L.map((T) => T.annotation.id));
@@ -1660,39 +1651,39 @@ const Cn = (t, e) => {
1660
1651
  update: h
1661
1652
  };
1662
1653
  }, Ln = (t, e) => {
1663
- const n = Ge(), o = Cn(n, t), i = ke(n, e), r = Ve(n), s = Ze(), c = (v, p = N.LOCAL) => {
1654
+ const n = Ge(), o = Cn(n, t), i = ke(n, e), r = Ve(n), s = Ze(), c = (v, g = N.LOCAL) => {
1664
1655
  const d = rt(v, t), a = $(d.target.selector);
1665
- return a && n.addAnnotation(d, p), a;
1666
- }, u = (v, p = !0, d = N.LOCAL) => {
1656
+ return a && n.addAnnotation(d, g), a;
1657
+ }, u = (v, g = !0, d = N.LOCAL) => {
1667
1658
  const a = v.map((S) => rt(S, t)), y = a.filter((S) => !$(S.target.selector));
1668
- return y.length > 0 ? (console.warn("Could not revive all targets for these annotations:", y), n.bulkAddAnnotation(a, p, d), y) : (n.bulkAddAnnotation(a, p, d), []);
1669
- }, h = (v, p = N.LOCAL) => {
1659
+ return y.length > 0 ? (console.warn("Could not revive all targets for these annotations:", y), n.bulkAddAnnotation(a, g, d), y) : (n.bulkAddAnnotation(a, g, d), []);
1660
+ }, h = (v, g = N.LOCAL) => {
1670
1661
  const d = v.map((y) => rt(y, t)), a = d.filter((y) => !$(y.target.selector));
1671
1662
  return a.length > 0 && console.warn("Could not revive all targets for these annotations:", a), d.forEach((y) => {
1672
- n.getAnnotation(y.id) ? n.updateAnnotation(y, p) : n.addAnnotation(y, p);
1663
+ n.getAnnotation(y.id) ? n.updateAnnotation(y, g) : n.addAnnotation(y, g);
1673
1664
  }), a;
1674
- }, m = (v, p = N.LOCAL) => {
1665
+ }, m = (v, g = N.LOCAL) => {
1675
1666
  const d = it(v, t);
1676
- n.updateTarget(d, p);
1677
- }, l = (v, p = N.LOCAL) => {
1667
+ n.updateTarget(d, g);
1668
+ }, l = (v, g = N.LOCAL) => {
1678
1669
  const d = v.map((a) => it(a, t));
1679
- n.bulkUpdateTargets(d, p);
1680
- }, g = (v, p, d) => {
1681
- const a = o.getAt(v, p, !!d).map((S) => n.getAnnotation(S)), y = d ? a.filter(d) : a;
1670
+ n.bulkUpdateTargets(d, g);
1671
+ }, p = (v, g, d) => {
1672
+ const a = o.getAt(v, g, !!d).map((S) => n.getAnnotation(S)), y = d ? a.filter(d) : a;
1682
1673
  return y.length > 0 ? y[0] : void 0;
1683
- }, f = (v, p, d, a = 5) => {
1674
+ }, f = (v, g, d, a = 5) => {
1684
1675
  const y = o.getAnnotationRects(v);
1685
1676
  if (y.length !== 0) {
1686
- if (p && d) {
1687
- const S = y.find(({ top: L, right: E, bottom: T, left: B }) => p >= B - a && p <= E + a && d >= L - a && d <= T + a);
1677
+ if (g && d) {
1678
+ const S = y.find(({ top: L, right: E, bottom: T, left: B }) => g >= B - a && g <= E + a && d >= L - a && d <= T + a);
1688
1679
  if (S) return S;
1689
1680
  }
1690
1681
  return o.getAnnotationBounds(v);
1691
1682
  }
1692
1683
  }, w = () => o.recalculate();
1693
1684
  return n.observe(({ changes: v }) => {
1694
- const p = (v.deleted || []).filter((y) => $(y.target.selector)), d = (v.created || []).filter((y) => $(y.target.selector)), a = (v.updated || []).filter((y) => $(y.newValue.target.selector));
1695
- (p == null ? void 0 : p.length) > 0 && p.forEach((y) => o.remove(y.target)), d.length > 0 && o.set(d.map((y) => y.target), !1), (a == null ? void 0 : a.length) > 0 && a.forEach(({ newValue: y }) => o.update(y.target));
1685
+ const g = (v.deleted || []).filter((y) => $(y.target.selector)), d = (v.created || []).filter((y) => $(y.target.selector)), a = (v.updated || []).filter((y) => $(y.newValue.target.selector));
1686
+ (g == null ? void 0 : g.length) > 0 && g.forEach((y) => o.remove(y.target)), d.length > 0 && o.set(d.map((y) => y.target), !1), (a == null ? void 0 : a.length) > 0 && a.forEach(({ newValue: y }) => o.update(y.target));
1696
1687
  }), {
1697
1688
  store: {
1698
1689
  ...n,
@@ -1701,7 +1692,7 @@ const Cn = (t, e) => {
1701
1692
  bulkUpdateTargets: l,
1702
1693
  bulkUpsertAnnotations: h,
1703
1694
  getAnnotationBounds: f,
1704
- getAt: g,
1695
+ getAt: p,
1705
1696
  getIntersecting: o.getIntersecting,
1706
1697
  recalculatePositions: w,
1707
1698
  updateTarget: m
@@ -1717,26 +1708,26 @@ const Cn = (t, e) => {
1717
1708
  return e.scale(2, 2), e.translate(0.5, 0.5), t;
1718
1709
  }, Tn = (t, e, n = {}) => {
1719
1710
  const o = Bn(), i = o.getContext("2d");
1720
- t.appendChild(o);
1721
- const r = /* @__PURE__ */ new Map(), s = (l) => Array.from(r.entries()).filter(([g, f]) => f.presenceKey === l.presenceKey).map(([g, f]) => g);
1722
- return e.on("selectionChange", (l, g) => {
1723
- s(l).forEach((w) => r.delete(w)), g && g.forEach((w) => r.set(w, l));
1711
+ document.body.appendChild(o);
1712
+ const r = /* @__PURE__ */ new Map(), s = (l) => Array.from(r.entries()).filter(([p, f]) => f.presenceKey === l.presenceKey).map(([p, f]) => p);
1713
+ return e.on("selectionChange", (l, p) => {
1714
+ s(l).forEach((w) => r.delete(w)), p && p.forEach((w) => r.set(w, l));
1724
1715
  }), {
1725
1716
  clear: () => {
1726
- const { width: l, height: g } = o;
1727
- i.clearRect(-0.5, -0.5, l + 1, g + 1);
1717
+ const { width: l, height: p } = o;
1718
+ i.clearRect(-0.5, -0.5, l + 1, p + 1);
1728
1719
  },
1729
1720
  destroy: () => {
1730
1721
  o.remove();
1731
1722
  },
1732
- paint: (l, g, f) => {
1723
+ paint: (l, p, f) => {
1733
1724
  n.font && (i.font = n.font);
1734
1725
  const w = r.get(l.annotation.id);
1735
1726
  if (w) {
1736
- const { height: v } = l.rects[0], p = l.rects[0].x + g.left, d = l.rects[0].y + g.top;
1737
- i.fillStyle = w.appearance.color, i.fillRect(p - 2, d - 2.5, 2, v + 5);
1727
+ const { height: v } = l.rects[0], g = l.rects[0].x + p.left, d = l.rects[0].y + p.top;
1728
+ i.fillStyle = w.appearance.color, i.fillRect(g - 2, d - 2.5, 2, v + 5);
1738
1729
  const a = i.measureText(w.appearance.label), y = a.width + 6, S = a.actualBoundingBoxAscent + a.actualBoundingBoxDescent + 8, L = a.fontBoundingBoxAscent ? 8 : 6.5;
1739
- return i.fillRect(p - 2, d - 2.5 - S, y, S), i.fillStyle = "#fff", i.fillText(w.appearance.label, p + 1, d - L), {
1730
+ return i.fillRect(g - 2, d - 2.5 - S, y, S), i.fillStyle = "#fff", i.fillText(w.appearance.label, g + 1, d - L), {
1740
1731
  fill: w.appearance.color,
1741
1732
  fillOpacity: f ? 0.45 : 0.18
1742
1733
  };
@@ -1755,7 +1746,7 @@ const Cn = (t, e) => {
1755
1746
  return e !== "visible" && e !== "hidden" && t.scrollHeight > t.clientHeight ? t : Wt(t.parentElement);
1756
1747
  }, Rn = (t, e) => (n) => {
1757
1748
  const o = typeof n == "string" ? n : n.id, i = (s) => {
1758
- const c = r.getBoundingClientRect(), u = r.clientHeight, h = r.clientWidth, m = s.selector[0].range.getBoundingClientRect(), { width: l, height: g } = e.getAnnotationBounds(o), f = m.top - c.top, w = m.left - c.left, v = r.parentElement ? r.scrollTop : 0, p = r.parentElement ? r.scrollLeft : 0, d = f + v - (u - g) / 2, a = w + p - (h - l) / 2;
1749
+ const c = r.getBoundingClientRect(), u = r.clientHeight, h = r.clientWidth, m = s.selector[0].range.getBoundingClientRect(), { width: l, height: p } = e.getAnnotationBounds(o), f = m.top - c.top, w = m.left - c.left, v = r.parentElement ? r.scrollTop : 0, g = r.parentElement ? r.scrollLeft : 0, d = f + v - (u - p) / 2, a = w + g - (h - l) / 2;
1759
1750
  r.scroll({ top: d, left: a, behavior: "smooth" });
1760
1751
  }, r = Wt(t);
1761
1752
  if (r) {
@@ -1778,7 +1769,7 @@ const Cn = (t, e) => {
1778
1769
  const r = (a) => i = a;
1779
1770
  let s;
1780
1771
  const c = (a) => s = a, { store: u, selection: h } = e;
1781
- let m, l = !1, g;
1772
+ let m, l = !1, p;
1782
1773
  const f = (a) => {
1783
1774
  var S;
1784
1775
  if (!l) return;
@@ -1797,7 +1788,7 @@ const Cn = (t, e) => {
1797
1788
  m = void 0;
1798
1789
  return;
1799
1790
  }
1800
- if (a.timeStamp - ((g == null ? void 0 : g.timeStamp) || a.timeStamp) < 1e3 && !m && f(g), y.isCollapsed || !l || !m) return;
1791
+ if (a.timeStamp - ((p == null ? void 0 : p.timeStamp) || a.timeStamp) < 1e3 && !m && f(p), y.isCollapsed || !l || !m) return;
1801
1792
  const L = y.getRangeAt(0);
1802
1793
  if (re(L)) return;
1803
1794
  const E = Zt(L.cloneRange());
@@ -1812,15 +1803,15 @@ const Cn = (t, e) => {
1812
1803
  id: m.annotation,
1813
1804
  bodies: [],
1814
1805
  target: m
1815
- }, N.LOCAL), h.clickSelect(m.annotation, g)));
1806
+ }, N.LOCAL), h.clickSelect(m.annotation, p)));
1816
1807
  });
1817
1808
  n && document.addEventListener("selectionchange", w);
1818
1809
  const v = (a) => {
1819
1810
  const { target: y, timeStamp: S, offsetX: L, offsetY: E, type: T } = a;
1820
- g = { ...a, target: y, timeStamp: S, offsetX: L, offsetY: E, type: T }, l = a.button === 0;
1811
+ p = { ...a, target: y, timeStamp: S, offsetX: L, offsetY: E, type: T }, l = a.button === 0;
1821
1812
  };
1822
1813
  t.addEventListener("pointerdown", v);
1823
- const p = (a) => {
1814
+ const g = (a) => {
1824
1815
  var E;
1825
1816
  if (!!((E = a.target.parentElement) != null && E.closest(D)) || !l)
1826
1817
  return;
@@ -1830,12 +1821,12 @@ const Cn = (t, e) => {
1830
1821
  const { selected: b } = h;
1831
1822
  (b.length !== 1 || b[0].id !== M.id) && h.clickSelect(M.id, a);
1832
1823
  } else h.isEmpty() || h.clear();
1833
- }, L = a.timeStamp - g.timeStamp;
1824
+ }, L = a.timeStamp - p.timeStamp;
1834
1825
  document.getSelection().isCollapsed && L < 300 ? (m = void 0, S()) : m && h.clickSelect(m.annotation, a);
1835
1826
  };
1836
- return document.addEventListener("pointerup", p), {
1827
+ return document.addEventListener("pointerup", g), {
1837
1828
  destroy: () => {
1838
- t.removeEventListener("selectstart", f), document.removeEventListener("selectionchange", w), t.removeEventListener("pointerdown", v), document.removeEventListener("pointerup", p);
1829
+ t.removeEventListener("selectstart", f), document.removeEventListener("selectionchange", w), t.removeEventListener("pointerdown", v), document.removeEventListener("pointerup", g);
1839
1830
  },
1840
1831
  setFilter: c,
1841
1832
  setUser: r
@@ -1847,16 +1838,16 @@ const Cn = (t, e) => {
1847
1838
  user: ln()
1848
1839
  }), o = Ln(t, n.pointerAction), { selection: i, viewport: r } = o, s = o.store, c = Je(s), u = tn(o, c, n.adapter);
1849
1840
  let h = n.user;
1850
- const m = n.renderer === "CSS_HIGHLIGHTS" ? CSS.highlights ? "CSS_HIGHLIGHTS" : kt : n.renderer || kt, l = m === "SPANS" ? Te(t, o, r) : m === "CSS_HIGHLIGHTS" ? Ce(t, o, r) : m === "CANVAS" ? pe(t, o, r) : void 0;
1841
+ const m = n.renderer === "CSS_HIGHLIGHTS" ? CSS.highlights ? "CSS_HIGHLIGHTS" : kt : n.renderer || kt, l = m === "SPANS" ? Te(t, o, r) : m === "CSS_HIGHLIGHTS" ? Ce(t, o, r) : m === "CANVAS" ? ge(t, o, r) : void 0;
1851
1842
  if (!l)
1852
1843
  throw `Unknown renderer implementation: ${m}`;
1853
1844
  console.debug(`Using ${m} renderer`), n.style && l.setStyle(n.style);
1854
- const g = Mn(t, o, n.annotationEnabled, n.offsetReferenceSelector);
1855
- g.setUser(h);
1845
+ const p = Mn(t, o, n.annotationEnabled, n.offsetReferenceSelector);
1846
+ p.setUser(h);
1856
1847
  const f = nn(o, c, n.adapter), w = () => h, v = (E) => {
1857
- l.setFilter(E), g.setFilter(E);
1858
- }, p = (E) => l.setStyle(E), d = (E) => {
1859
- h = E, g.setUser(E);
1848
+ l.setFilter(E), p.setFilter(E);
1849
+ }, g = (E) => l.setStyle(E), d = (E) => {
1850
+ h = E, p.setUser(E);
1860
1851
  }, a = (E) => {
1861
1852
  E && (l.setPainter(Tn(t, E, n.presence)), E.on("selectionChange", () => l.redraw()));
1862
1853
  }, y = (E) => {
@@ -1865,12 +1856,12 @@ const Cn = (t, e) => {
1865
1856
  return {
1866
1857
  ...f,
1867
1858
  destroy: () => {
1868
- l.destroy(), g.destroy(), c.destroy();
1859
+ l.destroy(), p.destroy(), c.destroy();
1869
1860
  },
1870
1861
  element: t,
1871
1862
  getUser: w,
1872
1863
  setFilter: v,
1873
- setStyle: p,
1864
+ setStyle: g,
1874
1865
  redraw: l.redraw.bind(l),
1875
1866
  setUser: d,
1876
1867
  setSelected: y,
@@ -1892,7 +1883,7 @@ export {
1892
1883
  Un as W3CTextFormat,
1893
1884
  te as cancelSingleClickEvents,
1894
1885
  Vn as createBody,
1895
- pe as createCanvasRenderer,
1886
+ ge as createCanvasRenderer,
1896
1887
  Ce as createHighlightsRenderer,
1897
1888
  Se as createRenderer,
1898
1889
  Te as createSpansRenderer,
@@ -1903,12 +1894,12 @@ export {
1903
1894
  On as getAnnotatableFragment,
1904
1895
  In as getClientRectsPonyfill,
1905
1896
  oe as getQuoteContext,
1906
- pt as getRangeAnnotatableContents,
1897
+ gt as getRangeAnnotatableContents,
1907
1898
  $ as isRevived,
1908
1899
  re as isWhitespaceOrEmpty,
1909
1900
  ce as mergeClientRects,
1910
1901
  Kt as paint,
1911
- pn as parseW3CTextAnnotation,
1902
+ gn as parseW3CTextAnnotation,
1912
1903
  le as rangeToSelector,
1913
1904
  rt as reviveAnnotation,
1914
1905
  Dt as reviveSelector,