@soomo/text-annotator 3.0.0-staging.2 → 3.0.0-staging.21

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,37 +1,32 @@
1
- const D = {
1
+ const P = {
2
2
  fill: "rgb(0, 128, 255)",
3
3
  fillOpacity: 0.18
4
- }, dt = {
4
+ }, ot = {
5
5
  fill: "rgb(0, 128, 255)",
6
6
  fillOpacity: 0.45
7
- }, zt = (t, e, n, o, i) => {
8
- var s;
9
- const r = n ? typeof n == "function" ? n(t.annotation, t.state, i) : n : (s = t.state) != null && s.selected ? dt : D;
7
+ }, Kt = (t, e, n, o, i) => {
8
+ var a, s;
9
+ const r = n ? typeof n == "function" ? n(t.annotation, t.state, i) || ((a = t.state) != null && a.selected ? ot : P) : n : (s = t.state) != null && s.selected ? ot : P;
10
10
  return o && o.paint(t, e) || r;
11
- }, ut = (t, e = 10) => {
12
- let n;
13
- return (...o) => {
14
- clearTimeout(n), n = setTimeout(() => t.apply(void 0, o), e);
15
- };
16
- }, Rt = "not-annotatable", H = `.${Rt}`, Ft = (t) => {
11
+ }, Yt = "not-annotatable", D = `.${Yt}`, Qt = (t) => {
17
12
  var n;
18
13
  const e = t.commonAncestorContainer;
19
- return e instanceof HTMLElement ? !e.closest(H) : !((n = e.parentElement) != null && n.closest(H));
20
- }, Wt = function* (t) {
14
+ return e instanceof HTMLElement ? !e.closest(D) : !((n = e.parentElement) != null && n.closest(D));
15
+ }, Jt = function* (t) {
21
16
  const e = document.createNodeIterator(
22
17
  t.commonAncestorContainer,
23
18
  NodeFilter.SHOW_ELEMENT,
24
- (o) => o instanceof HTMLElement && o.classList.contains(Rt) && t.intersectsNode(o) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP
19
+ (o) => o instanceof HTMLElement && o.classList.contains(Yt) && !o.parentElement.closest(D) && t.intersectsNode(o) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP
25
20
  );
26
21
  let n;
27
22
  for (; n = e.nextNode(); )
28
23
  n instanceof HTMLElement && (yield n);
29
- }, qt = (t) => {
30
- if (!Ft(t))
24
+ }, Zt = (t) => {
25
+ if (!Qt(t))
31
26
  return [];
32
27
  const e = [];
33
28
  let n = null;
34
- for (const o of Wt(t)) {
29
+ for (const o of Jt(t)) {
35
30
  let i;
36
31
  n ? (i = document.createRange(), i.setStartAfter(n), i.setEndBefore(o)) : (i = t.cloneRange(), i.setEndBefore(o)), i.collapsed || e.push(i), n = o;
37
32
  }
@@ -40,13 +35,23 @@ const D = {
40
35
  o.setStartAfter(n), o.collapsed || e.push(o);
41
36
  }
42
37
  return e.length > 0 ? e : [t];
43
- }, lt = (t) => {
38
+ }, pt = (t) => {
44
39
  const e = t.cloneContents();
45
- return e.querySelectorAll(H).forEach((n) => n.remove()), e;
46
- }, xn = (t) => {
40
+ return e.querySelectorAll(D).forEach((n) => n.remove()), e;
41
+ }, te = (t) => {
42
+ t.addEventListener("click", (e) => {
43
+ // Allow clicks within not-annotatable elements
44
+ !e.target.closest(D) && !e.target.closest("a") && e.preventDefault();
45
+ });
46
+ }, bt = (t, e = 10) => {
47
+ let n;
48
+ return (...o) => {
49
+ clearTimeout(n), n = setTimeout(() => t.apply(void 0, o), e);
50
+ };
51
+ }, On = (t) => {
47
52
  const e = t.cloneContents();
48
- return e.querySelectorAll(H).forEach((n) => n.remove()), e;
49
- }, gt = (t, e) => {
53
+ return e.querySelectorAll(D).forEach((n) => n.remove()), e;
54
+ }, wt = (t, e) => {
50
55
  const n = document.createNodeIterator(e);
51
56
  let o = 0, i = n.nextNode();
52
57
  for (; i !== null; ) {
@@ -54,75 +59,75 @@ const D = {
54
59
  return o;
55
60
  o += 1, i = n.nextNode();
56
61
  }
57
- }, pt = (t, e) => {
62
+ }, xt = (t, e) => {
58
63
  const n = document.createNodeIterator(e);
59
64
  let o = null;
60
65
  for (let i = 0; i < t + 1; i++)
61
66
  o = n.nextNode();
62
67
  return o;
63
- }, jt = (t) => {
68
+ }, ee = (t) => {
64
69
  const {
65
70
  commonAncestorContainer: e,
66
71
  startContainer: n,
67
72
  startOffset: o,
68
73
  endContainer: i,
69
74
  endOffset: r
70
- } = t, s = Array.from(e.childNodes).map((l) => {
71
- const m = l.cloneNode(!0);
72
- return l.nodeName === "CANVAS" ? l : m;
73
- }), a = gt(n, e), u = gt(i, e), h = () => {
74
- const l = e;
75
- l.replaceChildren(...s);
76
- const m = pt(a, l), g = pt(u, l);
77
- return t.setStart(m, o), t.setEnd(g, r), t;
78
- }, v = (l) => {
79
- const m = document.createElement("SPAN");
80
- return l.surroundContents(m), m;
75
+ } = t, a = Array.from(e.childNodes).map((c) => {
76
+ const p = c.cloneNode(!0);
77
+ return c.nodeName === "CANVAS" ? c : p;
78
+ }), s = wt(n, e), u = wt(i, e), f = () => {
79
+ const c = e;
80
+ c.replaceChildren(...a);
81
+ const p = xt(s, c), g = xt(u, c);
82
+ return t.setStart(p, o), t.setEnd(g, r), t;
83
+ }, m = (c) => {
84
+ const p = document.createElement("SPAN");
85
+ return c.surroundContents(p), p;
81
86
  };
82
87
  if (n === i)
83
88
  throw "Not implemented";
84
89
  {
85
- const l = document.createRange();
86
- l.selectNodeContents(n), l.setStart(n, o);
87
- const m = v(l), g = document.createRange();
90
+ const c = document.createRange();
91
+ c.selectNodeContents(n), c.setStart(n, o);
92
+ const p = m(c), g = document.createRange();
88
93
  g.selectNode(i), g.setEnd(i, r);
89
- const x = v(g), w = Gt(t).reverse().map((c) => {
90
- var f;
91
- const d = document.createElement("SPAN");
92
- return (f = c.parentNode) == null || f.insertBefore(d, c), d.appendChild(c), d;
94
+ const w = m(g), h = ne(t).reverse().map((d) => {
95
+ var b;
96
+ const l = document.createElement("SPAN");
97
+ return (b = d.parentNode) == null || b.insertBefore(l, d), l.appendChild(d), l;
93
98
  });
94
- return { unwrap: h, nodes: [m, ...w, x] };
99
+ return { unwrap: f, nodes: [p, ...h, w] };
95
100
  }
96
- }, Gt = (t) => {
101
+ }, ne = (t) => {
97
102
  const {
98
103
  commonAncestorContainer: e,
99
104
  startContainer: n,
100
105
  endContainer: o
101
106
  } = t, i = document.createNodeIterator(e, NodeFilter.SHOW_TEXT);
102
- let r = i.nextNode(), s = !1;
103
- const a = [];
107
+ let r = i.nextNode(), a = !1;
108
+ const s = [];
104
109
  for (; r != null; )
105
- r === o && (s = !1), s && a.push(r), r === n && (s = !0), r = i.nextNode();
106
- return a;
107
- }, yn = (t) => {
110
+ r === o && (a = !1), a && s.push(r), r === n && (a = !0), r = i.nextNode();
111
+ return s;
112
+ }, In = (t) => {
108
113
  const { startContainer: e, endContainer: n } = t;
109
114
  if (e === n)
110
115
  return Array.from(t.getClientRects());
111
116
  {
112
- const { unwrap: o, nodes: i } = jt(t), r = i.reduce((s, a) => [...s, ...a.getClientRects()], []);
117
+ const { unwrap: o, nodes: i } = ee(t), r = i.reduce((a, s) => [...a, ...s.getClientRects()], []);
113
118
  return o(), r;
114
119
  }
115
- }, Kt = (t, e, n = 10, o) => {
120
+ }, oe = (t, e, n = 10, o) => {
116
121
  const i = o ? t.startContainer.parentElement.closest(o) : e, r = document.createRange();
117
122
  r.setStart(i, 0), r.setEnd(t.startContainer, t.startOffset);
118
- const s = lt(r).textContent, a = document.createRange();
119
- a.setStart(t.endContainer, t.endOffset), i === document.body ? a.setEnd(i, i.childNodes.length) : a.setEndAfter(i);
120
- const u = lt(a).textContent;
123
+ const a = pt(r).textContent, s = document.createRange();
124
+ s.setStart(t.endContainer, t.endOffset), i === document.body ? s.setEnd(i, i.childNodes.length) : s.setEndAfter(i);
125
+ const u = pt(s).textContent;
121
126
  return {
122
- prefix: s.substring(s.length - n),
127
+ prefix: a.substring(a.length - n),
123
128
  suffix: u.substring(0, n)
124
129
  };
125
- }, Qt = /^\s*$/, Jt = (t) => Qt.test(t.toString()), _ = (t) => t.every((e) => e.range instanceof Range && !e.range.collapsed), Zt = (t, e) => {
130
+ }, ie = /^\s*$/, re = (t) => ie.test(t.toString()), $ = (t) => t.every((e) => e.range instanceof Range && !e.range.collapsed), se = (t, e) => {
126
131
  const n = (r) => Math.round(r * 10) / 10, o = {
127
132
  top: n(t.top),
128
133
  bottom: n(t.bottom),
@@ -146,311 +151,324 @@ const D = {
146
151
  return "block-contains";
147
152
  } else if (o.top >= i.top && o.bottom <= i.bottom && o.left >= i.left && o.right <= i.right)
148
153
  return "block-is-contained";
149
- }, te = (t, e) => {
154
+ }, ae = (t, e) => {
150
155
  const n = Math.min(t.left, e.left), o = Math.max(t.right, e.right), i = Math.min(t.top, e.top), r = Math.max(t.bottom, e.bottom);
151
156
  return new DOMRect(n, i, o - n, r - i);
152
- }, ee = (t) => t.reduce((e, n) => {
157
+ }, ce = (t) => t.reduce((e, n) => {
153
158
  if (n.width === 0 || n.height === 0)
154
159
  return e;
155
160
  let o = [...e], i = !1;
156
161
  for (const r of e) {
157
- const s = Zt(n, r);
158
- if (s === "inline-adjacent") {
159
- o = o.map((a) => a === r ? te(n, r) : a), i = !0;
162
+ const a = se(n, r);
163
+ if (a === "inline-adjacent") {
164
+ o = o.map((s) => s === r ? ae(n, r) : s), i = !0;
160
165
  break;
161
- } else if (s === "inline-contains") {
162
- o = o.map((a) => a === r ? n : a), i = !0;
166
+ } else if (a === "inline-contains") {
167
+ o = o.map((s) => s === r ? n : s), i = !0;
163
168
  break;
164
- } else if (s === "inline-is-contained") {
169
+ } else if (a === "inline-is-contained") {
165
170
  i = !0;
166
171
  break;
167
- } else if (s === "block-contains" || s === "block-is-contained") {
168
- n.width < r.width && (o = o.map((a) => a === r ? n : a)), i = !0;
172
+ } else if (a === "block-contains" || a === "block-is-contained") {
173
+ n.width < r.width && (o = o.map((s) => s === r ? n : s)), i = !0;
169
174
  break;
170
175
  }
171
176
  }
172
177
  return i ? o : [...o, n];
173
- }, []), ne = (t, e, n) => {
178
+ }, []), le = (t, e, n) => {
174
179
  const o = document.createRange(), i = n ? t.startContainer.parentElement.closest(n) : e;
175
180
  o.setStart(i, 0), o.setEnd(t.startContainer, t.startOffset);
176
- const r = lt(o).textContent, s = t.toString(), a = r.length || 0, u = a + s.length;
177
- return n ? { quote: s, start: a, end: u, range: t, offsetReference: i } : { quote: s, start: a, end: u, range: t };
178
- }, Mt = (t, e) => {
179
- var v, l;
181
+ const r = pt(o).textContent, a = t.toString(), s = r.length || 0, u = s + a.length;
182
+ return n ? { quote: a, start: s, end: u, range: t, offsetReference: i } : { quote: a, start: s, end: u, range: t };
183
+ }, Dt = (t, e) => {
184
+ var m, c;
180
185
  const { start: n, end: o } = t, i = t.offsetReference || e, r = document.createNodeIterator(
181
186
  e,
182
187
  NodeFilter.SHOW_TEXT,
183
- (m) => {
188
+ (p) => {
184
189
  var g;
185
- return (g = m.parentElement) != null && g.closest(H) ? NodeFilter.FILTER_SKIP : NodeFilter.FILTER_ACCEPT;
190
+ return (g = p.parentElement) != null && g.closest(D) ? NodeFilter.FILTER_SKIP : NodeFilter.FILTER_ACCEPT;
186
191
  }
187
192
  );
188
- let s = 0;
189
- const a = document.createRange();
193
+ let a = 0;
194
+ const s = document.createRange();
190
195
  let u = r.nextNode();
191
196
  u === null && console.error("Could not revive annotation target. Content missing.");
192
- let h = !i;
197
+ let f = !i;
193
198
  for (; u !== null; ) {
194
- if (h || (h = i == null ? void 0 : i.contains(u)), h) {
195
- const m = ((v = u.textContent) == null ? void 0 : v.length) || 0;
196
- if (s + m > n) {
197
- a.setStart(u, n - s);
199
+ if (f || (f = i == null ? void 0 : i.contains(u)), f) {
200
+ const p = ((m = u.textContent) == null ? void 0 : m.length) || 0;
201
+ if (a + p > n) {
202
+ s.setStart(u, n - a);
198
203
  break;
199
204
  }
200
- s += m;
205
+ a += p;
201
206
  }
202
207
  u = r.nextNode();
203
208
  }
204
209
  for (; u !== null; ) {
205
- const m = ((l = u.textContent) == null ? void 0 : l.length) || 0;
206
- if (s + m >= o) {
207
- a.setEnd(u, o - s);
210
+ const p = ((c = u.textContent) == null ? void 0 : c.length) || 0;
211
+ if (a + p >= o) {
212
+ s.setEnd(u, o - a);
208
213
  break;
209
214
  }
210
- s += m, u = r.nextNode();
215
+ a += p, u = r.nextNode();
211
216
  }
212
217
  return {
213
218
  ...t,
214
- range: a
219
+ range: s
215
220
  };
216
- }, Z = (t, e) => _(t.selector) ? t : {
221
+ }, it = (t, e) => $(t.selector) ? t : {
217
222
  ...t,
218
- selector: t.selector.map((n) => n.range instanceof Range && !n.range.collapsed ? n : Mt(n, e))
219
- }, tt = (t, e) => _(t.target.selector) ? t : { ...t, target: Z(t.target, e) }, oe = (t) => {
220
- const { top: e, left: n } = t.getBoundingClientRect(), { innerWidth: o, innerHeight: i } = window, r = -n, s = -e, a = o - n, u = i - e;
221
- return { top: e, left: n, minX: r, minY: s, maxX: a, maxY: u };
222
- }, ie = (t) => {
223
+ selector: t.selector.map((n) => n.range instanceof Range && !n.range.collapsed ? n : Dt(n, e))
224
+ }, rt = (t, e) => $(t.target.selector) ? t : { ...t, target: it(t.target, e) }, de = (t) => {
225
+ const { top: e, left: n } = t.getBoundingClientRect(), { innerWidth: o, innerHeight: i } = window, r = -n, a = -e, s = o - n, u = i - e;
226
+ return { top: e, left: n, minX: r, minY: a, maxX: s, maxY: u };
227
+ }, ue = (t) => {
223
228
  let e = /* @__PURE__ */ new Set();
224
229
  return (o) => {
225
230
  const i = o.map((r) => r.id);
226
231
  (e.size !== i.length || i.some((r) => !e.has(r))) && t.set(i), e = new Set(i);
227
232
  };
228
- }, ht = (t, e, n, o) => {
229
- const { store: i, selection: r, hover: s } = e;
230
- let a, u, h;
231
- const v = ie(n), l = (p) => {
232
- const { x: S, y: A } = t.getBoundingClientRect(), C = i.getAt(p.clientX - S, p.clientY - A);
233
- C && (!u || u(C)) ? s.current !== C.id && (t.classList.add("hovered"), s.set(C.id)) : s.current && (t.classList.remove("hovered"), s.set(null));
233
+ }, vt = (t, e, n, o) => {
234
+ const { store: i, selection: r, hover: a } = e;
235
+ let s, u, f;
236
+ const m = ue(n), c = (T) => {
237
+ const { x: O, y: v } = t.getBoundingClientRect(), x = i.getAt(T.clientX - O, T.clientY - v);
238
+ x && (!u || u(x)) ? a.current !== x.id && (t.classList.add("hovered"), a.set(x.id)) : a.current && (t.classList.remove("hovered"), a.set(null));
234
239
  };
235
- t.addEventListener("pointermove", l);
236
- const m = (p = !1) => {
237
- h && h.clear();
238
- const S = oe(t), { minX: A, minY: C, maxX: T, maxY: M } = S, U = u ? i.getIntersecting(A, C, T, M).filter(({ annotation: k }) => u(k)) : i.getIntersecting(A, C, T, M), Xt = r.selected.map(({ id: k }) => k), Dt = U.map(({ annotation: k, rects: Ht }) => {
239
- const $t = Xt.includes(k.id), Pt = k.id === s.current;
240
- return { annotation: k, rects: Ht, state: { selected: $t, hover: Pt, custom: {} } };
240
+ t.addEventListener("pointermove", c);
241
+ const p = (T = !1) => {
242
+ f && f.clear();
243
+ const O = de(t), { minX: v, minY: x, maxX: A, maxY: E } = O, R = u ? i.getIntersecting(v, x, A, E).filter(({ annotation: _ }) => u(_)) : i.getIntersecting(v, x, A, E), M = r.selected.map(({ id: _ }) => _), H = R.map(({ annotation: _, rects: qt }) => {
244
+ const jt = M.includes(_.id), Gt = _.id === a.current;
245
+ return { annotation: _, rects: qt, state: { selected: jt, hover: Gt } };
241
246
  });
242
- o.redraw(Dt, S, a, h, p), setTimeout(() => v(U.map(({ annotation: k }) => k)), 1);
243
- }, g = (p) => {
244
- h = p, m();
245
- }, x = (p) => {
246
- a = p, m();
247
- }, y = (p) => {
248
- u = p, m();
249
- }, w = () => m();
250
- i.observe(w);
251
- const c = r.subscribe(() => m()), d = () => m();
252
- document.addEventListener("scroll", d, { capture: !0, passive: !0 });
253
- const f = ut(() => {
254
- i.recalculatePositions(), h && h.reset(), m();
247
+ o.redraw(H, O, s, f, T), setTimeout(() => m(R.map(({ annotation: _ }) => _)), 1);
248
+ }, g = (T) => {
249
+ f = T, p();
250
+ }, w = (T) => {
251
+ s = T, p();
252
+ }, y = (T) => {
253
+ u = T, p(!1);
254
+ }, h = () => p();
255
+ i.observe(h);
256
+ const d = r.subscribe(() => p()), l = () => p(!0);
257
+ document.addEventListener("scroll", l, { capture: !0, passive: !0 });
258
+ const b = bt(() => {
259
+ i.recalculatePositions(), f && f.reset(), p();
255
260
  });
256
- window.addEventListener("resize", f);
257
- const b = new ResizeObserver(f);
258
- b.observe(t);
259
- const E = { attributes: !0, childList: !0, subtree: !0 }, L = new MutationObserver((p) => {
260
- p.every((A) => A.target === t || t.contains(A.target)) || m(!0);
261
+ window.addEventListener("resize", b);
262
+ const S = new ResizeObserver(b);
263
+ S.observe(t);
264
+ const L = { attributes: !0, childList: !0, subtree: !0 }, C = new MutationObserver((T) => {
265
+ T.every((v) => v.target === t || t.contains(v.target)) || p(!0);
261
266
  });
262
- return L.observe(document.body, E), {
267
+ return C.observe(document.body, L), {
263
268
  destroy: () => {
264
- t.removeEventListener("pointermove", l), o.destroy(), i.unobserve(w), c(), document.removeEventListener("scroll", d), window.removeEventListener("resize", f), b.disconnect(), L.disconnect();
269
+ t.removeEventListener("pointermove", c), o.destroy(), i.unobserve(h), d(), document.removeEventListener("scroll", l), window.removeEventListener("resize", b), S.disconnect(), C.disconnect();
265
270
  },
266
- redraw: m,
267
- setStyle: x,
271
+ redraw: p,
272
+ setStyle: w,
268
273
  setFilter: y,
269
274
  setPainter: g,
270
275
  setVisible: o.setVisible
271
276
  };
272
- }, re = () => {
277
+ }, he = () => {
273
278
  const t = document.createElement("canvas");
274
279
  return t.width = window.innerWidth, t.height = window.innerHeight, t.className = "r6o-highlight-layer bg", t;
275
- }, se = (t, e) => {
276
- if (t.width = e ? 2 * window.innerWidth : window.innerWidth, t.height = e ? 2 * window.innerHeight : window.innerHeight, e) {
277
- const n = t.getContext("2d");
278
- n.scale(2, 2), n.translate(0.5, 0.5);
279
- }
280
- }, ae = (t) => {
280
+ }, fe = (t, e) => {
281
+ t.width = window.innerWidth, t.height = window.innerHeight;
282
+ }, ge = (t) => {
281
283
  t.classList.add("r6o-annotatable");
282
- const e = re(), n = e.getContext("2d");
284
+ const e = he(), n = e.getContext("2d");
283
285
  t.insertBefore(e, t.firstChild);
284
- const o = (a, u, h, v) => requestAnimationFrame(() => {
285
- const { width: l, height: m } = e;
286
- n.clearRect(-0.5, -0.5, l + 1, m + 1), v && v.clear();
287
- const { top: g, left: x } = u;
288
- a.forEach((y) => {
289
- var f;
290
- const w = h ? typeof h == "function" ? h(y.annotation, y.state) : h : (f = y.state) != null && f.selected ? dt : D, c = v && v.paint(y, u) || w, d = y.rects.map(({ x: b, y: E, width: L, height: B }) => ({
291
- x: b + x,
292
- y: E + g,
293
- width: L,
294
- height: B
295
- }));
296
- n.fillStyle = c.fill, n.globalAlpha = c.fillOpacity || 1, d.forEach(({ x: b, y: E, width: L, height: B }) => n.fillRect(b, E - 2.5, L, B + 5)), c.underlineColor && (n.globalAlpha = 1, n.strokeStyle = c.underlineColor, d.forEach(({ x: b, y: E, width: L, height: B }) => {
297
- n.beginPath(), n.moveTo(b, E + B + 4), n.lineTo(b + L, E + B + 4), n.stroke();
286
+ const o = (s, u, f, m) => requestAnimationFrame(() => {
287
+ const { width: c, height: p } = e;
288
+ n.clearRect(-0.5, -0.5, c + 1, p + 1), m && m.clear();
289
+ const { top: g, left: w } = u;
290
+ [...s].sort((h, d) => {
291
+ const { annotation: { target: { created: l } } } = h, { annotation: { target: { created: b } } } = d;
292
+ return l.getTime() - b.getTime();
293
+ }).forEach((h) => {
294
+ var L;
295
+ const d = f ? typeof f == "function" ? f(h.annotation, h.state) : f : (L = h.state) != null && L.selected ? ot : P, l = m && m.paint(h, u) || d, b = h.rects.map(({ x: C, y: B, width: T, height: O }) => ({
296
+ x: C + w,
297
+ y: B + g,
298
+ width: T,
299
+ height: O
298
300
  }));
301
+ n.fillStyle = l.fill, n.globalAlpha = l.fillOpacity || 1;
302
+ const S = 5;
303
+ if (b.forEach(
304
+ ({ x: C, y: B, width: T, height: O }) => n.fillRect(
305
+ C,
306
+ B - S / 2,
307
+ T,
308
+ O + S
309
+ )
310
+ ), l.underlineColor) {
311
+ n.globalAlpha = 1, n.strokeStyle = l.underlineColor, n.lineWidth = l.underlineThickness ?? 1;
312
+ const C = S / 2 + (l.underlineOffset ?? 0);
313
+ b.forEach(({ x: B, y: T, width: O, height: v }) => {
314
+ n.beginPath(), n.moveTo(B, T + v + C), n.lineTo(B + O, T + v + C), n.stroke();
315
+ });
316
+ }
299
317
  });
300
- }), i = ut(() => {
301
- se(e);
318
+ }), i = bt(() => {
319
+ fe(e);
302
320
  });
303
321
  return window.addEventListener("resize", i), {
304
322
  destroy: () => {
305
323
  t.removeChild(e), window.removeEventListener("resize", i);
306
324
  },
307
- setVisible: (a) => {
325
+ setVisible: (s) => {
308
326
  console.log("setVisible not implemented on Canvas renderer");
309
327
  },
310
328
  redraw: o
311
329
  };
312
- }, le = (t, e, n) => ht(t, e, n, ae(t));
313
- var ce = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, Y = function(t) {
330
+ }, pe = (t, e, n) => vt(t, e, n, ge(t));
331
+ var me = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, X = function(t) {
314
332
  return typeof t == "string" ? t.length > 0 : typeof t == "number";
315
- }, O = function(t, e, n) {
333
+ }, I = function(t, e, n) {
316
334
  return e === void 0 && (e = 0), n === void 0 && (n = Math.pow(10, e)), Math.round(n * t) / n + 0;
317
- }, N = function(t, e, n) {
335
+ }, k = function(t, e, n) {
318
336
  return e === void 0 && (e = 0), n === void 0 && (n = 1), t > n ? n : t > e ? t : e;
319
- }, Ot = function(t) {
337
+ }, _t = function(t) {
320
338
  return (t = isFinite(t) ? t % 360 : 0) > 0 ? t : t + 360;
321
- }, mt = function(t) {
322
- return { r: N(t.r, 0, 255), g: N(t.g, 0, 255), b: N(t.b, 0, 255), a: N(t.a) };
323
- }, et = function(t) {
324
- return { r: O(t.r), g: O(t.g), b: O(t.b), a: O(t.a, 3) };
325
- }, de = /^#([0-9a-f]{3,8})$/i, G = function(t) {
339
+ }, At = function(t) {
340
+ return { r: k(t.r, 0, 255), g: k(t.g, 0, 255), b: k(t.b, 0, 255), a: k(t.a) };
341
+ }, st = function(t) {
342
+ return { r: I(t.r), g: I(t.g), b: I(t.b), a: I(t.a, 3) };
343
+ }, be = /^#([0-9a-f]{3,8})$/i, J = function(t) {
326
344
  var e = t.toString(16);
327
345
  return e.length < 2 ? "0" + e : e;
328
- }, It = function(t) {
329
- var e = t.r, n = t.g, o = t.b, i = t.a, r = Math.max(e, n, o), s = r - Math.min(e, n, o), a = s ? r === e ? (n - o) / s : r === n ? 2 + (o - e) / s : 4 + (e - n) / s : 0;
330
- return { h: 60 * (a < 0 ? a + 6 : a), s: r ? s / r * 100 : 0, v: r / 255 * 100, a: i };
331
- }, Nt = function(t) {
346
+ }, Xt = function(t) {
347
+ var e = t.r, n = t.g, o = t.b, i = t.a, r = Math.max(e, n, o), a = r - Math.min(e, n, o), s = a ? r === e ? (n - o) / a : r === n ? 2 + (o - e) / a : 4 + (e - n) / a : 0;
348
+ return { h: 60 * (s < 0 ? s + 6 : s), s: r ? a / r * 100 : 0, v: r / 255 * 100, a: i };
349
+ }, $t = function(t) {
332
350
  var e = t.h, n = t.s, o = t.v, i = t.a;
333
351
  e = e / 360 * 6, n /= 100, o /= 100;
334
- var r = Math.floor(e), s = o * (1 - n), a = o * (1 - (e - r) * n), u = o * (1 - (1 - e + r) * n), h = r % 6;
335
- return { r: 255 * [o, a, s, s, u, o][h], g: 255 * [u, o, o, a, s, s][h], b: 255 * [s, s, u, o, o, a][h], a: i };
336
- }, bt = function(t) {
337
- return { h: Ot(t.h), s: N(t.s, 0, 100), l: N(t.l, 0, 100), a: N(t.a) };
338
- }, vt = function(t) {
339
- return { h: O(t.h), s: O(t.s), l: O(t.l), a: O(t.a, 3) };
340
- }, wt = function(t) {
341
- return Nt((n = (e = t).s, { h: e.h, s: (n *= ((o = e.l) < 50 ? o : 100 - o) / 100) > 0 ? 2 * n / (o + n) * 100 : 0, v: o + n, a: e.a }));
352
+ var r = Math.floor(e), a = o * (1 - n), s = o * (1 - (e - r) * n), u = o * (1 - (1 - e + r) * n), f = r % 6;
353
+ return { r: 255 * [o, s, a, a, u, o][f], g: 255 * [u, o, o, s, a, a][f], b: 255 * [a, a, u, o, o, s][f], a: i };
354
+ }, Et = function(t) {
355
+ return { h: _t(t.h), s: k(t.s, 0, 100), l: k(t.l, 0, 100), a: k(t.a) };
356
+ }, St = function(t) {
357
+ return { h: I(t.h), s: I(t.s), l: I(t.l), a: I(t.a, 3) };
358
+ }, Ct = function(t) {
359
+ return $t((n = (e = t).s, { h: e.h, s: (n *= ((o = e.l) < 50 ? o : 100 - o) / 100) > 0 ? 2 * n / (o + n) * 100 : 0, v: o + n, a: e.a }));
342
360
  var e, n, o;
343
- }, j = function(t) {
344
- return { h: (e = It(t)).h, s: (i = (200 - (n = e.s)) * (o = e.v) / 100) > 0 && i < 200 ? n * o / 100 / (i <= 100 ? i : 200 - i) * 100 : 0, l: i / 2, a: e.a };
361
+ }, Q = function(t) {
362
+ return { h: (e = Xt(t)).h, s: (i = (200 - (n = e.s)) * (o = e.v) / 100) > 0 && i < 200 ? n * o / 100 / (i <= 100 ? i : 200 - i) * 100 : 0, l: i / 2, a: e.a };
345
363
  var e, n, o, i;
346
- }, ue = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, he = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, fe = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, ge = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, xt = { string: [[function(t) {
347
- var e = de.exec(t);
348
- return e ? (t = e[1]).length <= 4 ? { r: parseInt(t[0] + t[0], 16), g: parseInt(t[1] + t[1], 16), b: parseInt(t[2] + t[2], 16), a: t.length === 4 ? O(parseInt(t[3] + t[3], 16) / 255, 2) : 1 } : t.length === 6 || t.length === 8 ? { r: parseInt(t.substr(0, 2), 16), g: parseInt(t.substr(2, 2), 16), b: parseInt(t.substr(4, 2), 16), a: t.length === 8 ? O(parseInt(t.substr(6, 2), 16) / 255, 2) : 1 } : null : null;
364
+ }, ve = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, ye = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, we = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, xe = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, Lt = { string: [[function(t) {
365
+ var e = be.exec(t);
366
+ return e ? (t = e[1]).length <= 4 ? { r: parseInt(t[0] + t[0], 16), g: parseInt(t[1] + t[1], 16), b: parseInt(t[2] + t[2], 16), a: t.length === 4 ? I(parseInt(t[3] + t[3], 16) / 255, 2) : 1 } : t.length === 6 || t.length === 8 ? { r: parseInt(t.substr(0, 2), 16), g: parseInt(t.substr(2, 2), 16), b: parseInt(t.substr(4, 2), 16), a: t.length === 8 ? I(parseInt(t.substr(6, 2), 16) / 255, 2) : 1 } : null : null;
349
367
  }, "hex"], [function(t) {
350
- var e = fe.exec(t) || ge.exec(t);
351
- return e ? e[2] !== e[4] || e[4] !== e[6] ? null : mt({ r: Number(e[1]) / (e[2] ? 100 / 255 : 1), g: Number(e[3]) / (e[4] ? 100 / 255 : 1), b: Number(e[5]) / (e[6] ? 100 / 255 : 1), a: e[7] === void 0 ? 1 : Number(e[7]) / (e[8] ? 100 : 1) }) : null;
368
+ var e = we.exec(t) || xe.exec(t);
369
+ return e ? e[2] !== e[4] || e[4] !== e[6] ? null : At({ r: Number(e[1]) / (e[2] ? 100 / 255 : 1), g: Number(e[3]) / (e[4] ? 100 / 255 : 1), b: Number(e[5]) / (e[6] ? 100 / 255 : 1), a: e[7] === void 0 ? 1 : Number(e[7]) / (e[8] ? 100 : 1) }) : null;
352
370
  }, "rgb"], [function(t) {
353
- var e = ue.exec(t) || he.exec(t);
371
+ var e = ve.exec(t) || ye.exec(t);
354
372
  if (!e)
355
373
  return null;
356
- var n, o, i = bt({ h: (n = e[1], o = e[2], o === void 0 && (o = "deg"), Number(n) * (ce[o] || 1)), s: Number(e[3]), l: Number(e[4]), a: e[5] === void 0 ? 1 : Number(e[5]) / (e[6] ? 100 : 1) });
357
- return wt(i);
374
+ var n, o, i = Et({ h: (n = e[1], o = e[2], o === void 0 && (o = "deg"), Number(n) * (me[o] || 1)), s: Number(e[3]), l: Number(e[4]), a: e[5] === void 0 ? 1 : Number(e[5]) / (e[6] ? 100 : 1) });
375
+ return Ct(i);
358
376
  }, "hsl"]], object: [[function(t) {
359
377
  var e = t.r, n = t.g, o = t.b, i = t.a, r = i === void 0 ? 1 : i;
360
- return Y(e) && Y(n) && Y(o) ? mt({ r: Number(e), g: Number(n), b: Number(o), a: Number(r) }) : null;
378
+ return X(e) && X(n) && X(o) ? At({ r: Number(e), g: Number(n), b: Number(o), a: Number(r) }) : null;
361
379
  }, "rgb"], [function(t) {
362
380
  var e = t.h, n = t.s, o = t.l, i = t.a, r = i === void 0 ? 1 : i;
363
- if (!Y(e) || !Y(n) || !Y(o))
381
+ if (!X(e) || !X(n) || !X(o))
364
382
  return null;
365
- var s = bt({ h: Number(e), s: Number(n), l: Number(o), a: Number(r) });
366
- return wt(s);
383
+ var a = Et({ h: Number(e), s: Number(n), l: Number(o), a: Number(r) });
384
+ return Ct(a);
367
385
  }, "hsl"], [function(t) {
368
386
  var e = t.h, n = t.s, o = t.v, i = t.a, r = i === void 0 ? 1 : i;
369
- if (!Y(e) || !Y(n) || !Y(o))
387
+ if (!X(e) || !X(n) || !X(o))
370
388
  return null;
371
- var s = function(a) {
372
- return { h: Ot(a.h), s: N(a.s, 0, 100), v: N(a.v, 0, 100), a: N(a.a) };
389
+ var a = function(s) {
390
+ return { h: _t(s.h), s: k(s.s, 0, 100), v: k(s.v, 0, 100), a: k(s.a) };
373
391
  }({ h: Number(e), s: Number(n), v: Number(o), a: Number(r) });
374
- return Nt(s);
375
- }, "hsv"]] }, yt = function(t, e) {
392
+ return $t(a);
393
+ }, "hsv"]] }, Bt = function(t, e) {
376
394
  for (var n = 0; n < e.length; n++) {
377
395
  var o = e[n][0](t);
378
396
  if (o)
379
397
  return [o, e[n][1]];
380
398
  }
381
399
  return [null, void 0];
382
- }, pe = function(t) {
383
- return typeof t == "string" ? yt(t.trim(), xt.string) : typeof t == "object" && t !== null ? yt(t, xt.object) : [null, void 0];
384
- }, nt = function(t, e) {
385
- var n = j(t);
386
- return { h: n.h, s: N(n.s + 100 * e, 0, 100), l: n.l, a: n.a };
387
- }, ot = function(t) {
400
+ }, Ae = function(t) {
401
+ return typeof t == "string" ? Bt(t.trim(), Lt.string) : typeof t == "object" && t !== null ? Bt(t, Lt.object) : [null, void 0];
402
+ }, at = function(t, e) {
403
+ var n = Q(t);
404
+ return { h: n.h, s: k(n.s + 100 * e, 0, 100), l: n.l, a: n.a };
405
+ }, ct = function(t) {
388
406
  return (299 * t.r + 587 * t.g + 114 * t.b) / 1e3 / 255;
389
- }, At = function(t, e) {
390
- var n = j(t);
391
- return { h: n.h, s: n.s, l: N(n.l + 100 * e, 0, 100), a: n.a };
392
- }, Et = function() {
407
+ }, Tt = function(t, e) {
408
+ var n = Q(t);
409
+ return { h: n.h, s: n.s, l: k(n.l + 100 * e, 0, 100), a: n.a };
410
+ }, Rt = function() {
393
411
  function t(e) {
394
- this.parsed = pe(e)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 };
412
+ this.parsed = Ae(e)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 };
395
413
  }
396
414
  return t.prototype.isValid = function() {
397
415
  return this.parsed !== null;
398
416
  }, t.prototype.brightness = function() {
399
- return O(ot(this.rgba), 2);
417
+ return I(ct(this.rgba), 2);
400
418
  }, t.prototype.isDark = function() {
401
- return ot(this.rgba) < 0.5;
419
+ return ct(this.rgba) < 0.5;
402
420
  }, t.prototype.isLight = function() {
403
- return ot(this.rgba) >= 0.5;
421
+ return ct(this.rgba) >= 0.5;
404
422
  }, t.prototype.toHex = function() {
405
- return e = et(this.rgba), n = e.r, o = e.g, i = e.b, s = (r = e.a) < 1 ? G(O(255 * r)) : "", "#" + G(n) + G(o) + G(i) + s;
406
- var e, n, o, i, r, s;
423
+ return e = st(this.rgba), n = e.r, o = e.g, i = e.b, a = (r = e.a) < 1 ? J(I(255 * r)) : "", "#" + J(n) + J(o) + J(i) + a;
424
+ var e, n, o, i, r, a;
407
425
  }, t.prototype.toRgb = function() {
408
- return et(this.rgba);
426
+ return st(this.rgba);
409
427
  }, t.prototype.toRgbString = function() {
410
- return e = et(this.rgba), n = e.r, o = e.g, i = e.b, (r = e.a) < 1 ? "rgba(" + n + ", " + o + ", " + i + ", " + r + ")" : "rgb(" + n + ", " + o + ", " + i + ")";
428
+ return e = st(this.rgba), n = e.r, o = e.g, i = e.b, (r = e.a) < 1 ? "rgba(" + n + ", " + o + ", " + i + ", " + r + ")" : "rgb(" + n + ", " + o + ", " + i + ")";
411
429
  var e, n, o, i, r;
412
430
  }, t.prototype.toHsl = function() {
413
- return vt(j(this.rgba));
431
+ return St(Q(this.rgba));
414
432
  }, t.prototype.toHslString = function() {
415
- return e = vt(j(this.rgba)), n = e.h, o = e.s, i = e.l, (r = e.a) < 1 ? "hsla(" + n + ", " + o + "%, " + i + "%, " + r + ")" : "hsl(" + n + ", " + o + "%, " + i + "%)";
433
+ return e = St(Q(this.rgba)), n = e.h, o = e.s, i = e.l, (r = e.a) < 1 ? "hsla(" + n + ", " + o + "%, " + i + "%, " + r + ")" : "hsl(" + n + ", " + o + "%, " + i + "%)";
416
434
  var e, n, o, i, r;
417
435
  }, t.prototype.toHsv = function() {
418
- return e = It(this.rgba), { h: O(e.h), s: O(e.s), v: O(e.v), a: O(e.a, 3) };
436
+ return e = Xt(this.rgba), { h: I(e.h), s: I(e.s), v: I(e.v), a: I(e.a, 3) };
419
437
  var e;
420
438
  }, t.prototype.invert = function() {
421
- return V({ r: 255 - (e = this.rgba).r, g: 255 - e.g, b: 255 - e.b, a: e.a });
439
+ return Y({ r: 255 - (e = this.rgba).r, g: 255 - e.g, b: 255 - e.b, a: e.a });
422
440
  var e;
423
441
  }, t.prototype.saturate = function(e) {
424
- return e === void 0 && (e = 0.1), V(nt(this.rgba, e));
442
+ return e === void 0 && (e = 0.1), Y(at(this.rgba, e));
425
443
  }, t.prototype.desaturate = function(e) {
426
- return e === void 0 && (e = 0.1), V(nt(this.rgba, -e));
444
+ return e === void 0 && (e = 0.1), Y(at(this.rgba, -e));
427
445
  }, t.prototype.grayscale = function() {
428
- return V(nt(this.rgba, -1));
446
+ return Y(at(this.rgba, -1));
429
447
  }, t.prototype.lighten = function(e) {
430
- return e === void 0 && (e = 0.1), V(At(this.rgba, e));
448
+ return e === void 0 && (e = 0.1), Y(Tt(this.rgba, e));
431
449
  }, t.prototype.darken = function(e) {
432
- return e === void 0 && (e = 0.1), V(At(this.rgba, -e));
450
+ return e === void 0 && (e = 0.1), Y(Tt(this.rgba, -e));
433
451
  }, t.prototype.rotate = function(e) {
434
452
  return e === void 0 && (e = 15), this.hue(this.hue() + e);
435
453
  }, t.prototype.alpha = function(e) {
436
- return typeof e == "number" ? V({ r: (n = this.rgba).r, g: n.g, b: n.b, a: e }) : O(this.rgba.a, 3);
454
+ return typeof e == "number" ? Y({ r: (n = this.rgba).r, g: n.g, b: n.b, a: e }) : I(this.rgba.a, 3);
437
455
  var n;
438
456
  }, t.prototype.hue = function(e) {
439
- var n = j(this.rgba);
440
- return typeof e == "number" ? V({ h: e, s: n.s, l: n.l, a: n.a }) : O(n.h);
457
+ var n = Q(this.rgba);
458
+ return typeof e == "number" ? Y({ h: e, s: n.s, l: n.l, a: n.a }) : I(n.h);
441
459
  }, t.prototype.isEqual = function(e) {
442
- return this.toHex() === V(e).toHex();
460
+ return this.toHex() === Y(e).toHex();
443
461
  }, t;
444
- }(), V = function(t) {
445
- return t instanceof Et ? t : new Et(t);
462
+ }(), Y = function(t) {
463
+ return t instanceof Rt ? t : new Rt(t);
446
464
  };
447
- const me = (t) => [
448
- `background-color:${V((t == null ? void 0 : t.fill) || D.fill).alpha((t == null ? void 0 : t.fillOpacity) === void 0 ? D.fillOpacity : t.fillOpacity).toHex()}`,
465
+ const Ee = (t) => [
466
+ `background-color:${Y((t == null ? void 0 : t.fill) || P.fill).alpha((t == null ? void 0 : t.fillOpacity) === void 0 ? P.fillOpacity : t.fillOpacity).toHex()}`,
449
467
  t != null && t.underlineThickness ? "text-decoration:underline" : void 0,
450
468
  t != null && t.underlineColor ? `text-decoration-color:${t.underlineColor}` : void 0,
451
469
  t != null && t.underlineOffset ? `text-underline-offset:${t.underlineOffset}px` : void 0,
452
470
  t != null && t.underlineThickness ? `text-decoration-thickness:${t.underlineThickness}px` : void 0
453
- ].filter(Boolean).join(";"), be = () => {
471
+ ].filter(Boolean).join(";"), Se = () => {
454
472
  const t = document.createElement("style");
455
473
  document.getElementsByTagName("head")[0].appendChild(t);
456
474
  let e = /* @__PURE__ */ new Set();
@@ -461,25 +479,25 @@ const me = (t) => [
461
479
  setVisible: (r) => {
462
480
  console.log("setVisible not implemented on CSS Custom Highlights renderer");
463
481
  },
464
- redraw: (r, s, a, u) => {
482
+ redraw: (r, a, s, u) => {
465
483
  u && u.clear();
466
- const h = new Set(r.map((l) => l.annotation.id));
467
- Array.from(e).filter((l) => !h.has(l));
468
- const v = r.map((l) => {
469
- var x;
470
- const m = a ? typeof a == "function" ? a(l.annotation, l.state) : a : (x = l.state) != null && x.selected ? dt : D, g = u && u.paint(l, s) || m;
471
- return `::highlight(_${l.annotation.id}) { ${me(g)} }`;
484
+ const f = new Set(r.map((c) => c.annotation.id));
485
+ Array.from(e).filter((c) => !f.has(c));
486
+ const m = r.map((c) => {
487
+ var w;
488
+ const p = s ? typeof s == "function" ? s(c.annotation, c.state) : s : (w = c.state) != null && w.selected ? ot : P, g = u && u.paint(c, a) || p;
489
+ return `::highlight(_${c.annotation.id}) { ${Ee(g)} }`;
472
490
  });
473
- t.innerHTML = v.join(`
474
- `), CSS.highlights.clear(), r.forEach(({ annotation: l }) => {
475
- const m = l.target.selector.map((x) => x.range), g = new Highlight(...m);
476
- CSS.highlights.set(`_${l.id}`, g);
477
- }), e = h;
491
+ t.innerHTML = m.join(`
492
+ `), CSS.highlights.clear(), r.forEach(({ annotation: c }) => {
493
+ const p = c.target.selector.map((w) => w.range), g = new Highlight(...p);
494
+ CSS.highlights.set(`_${c.id}`, g);
495
+ }), e = f;
478
496
  }
479
497
  };
480
- }, ve = (t, e, n) => ht(t, e, n, be());
481
- var St = Object.prototype.hasOwnProperty;
482
- function ct(t, e) {
498
+ }, Ce = (t, e, n) => vt(t, e, n, Se());
499
+ var Nt = Object.prototype.hasOwnProperty;
500
+ function mt(t, e) {
483
501
  var n, o;
484
502
  if (t === e)
485
503
  return !0;
@@ -490,24 +508,24 @@ function ct(t, e) {
490
508
  return t.toString() === e.toString();
491
509
  if (n === Array) {
492
510
  if ((o = t.length) === e.length)
493
- for (; o-- && ct(t[o], e[o]); )
511
+ for (; o-- && mt(t[o], e[o]); )
494
512
  ;
495
513
  return o === -1;
496
514
  }
497
515
  if (!n || typeof t == "object") {
498
516
  o = 0;
499
517
  for (n in t)
500
- if (St.call(t, n) && ++o && !St.call(e, n) || !(n in e) || !ct(t[n], e[n]))
518
+ if (Nt.call(t, n) && ++o && !Nt.call(e, n) || !(n in e) || !mt(t[n], e[n]))
501
519
  return !1;
502
520
  return Object.keys(e).length === o;
503
521
  }
504
522
  }
505
523
  return t !== t && e !== e;
506
524
  }
507
- const we = (t, e) => {
525
+ const Le = (t, e) => {
508
526
  const n = (o, i) => o.x <= i.x + i.width && o.x + o.width >= i.x && o.y <= i.y + i.height && o.y + o.height >= i.y;
509
527
  return e.filter((o) => t !== o && n(t, o) && o.width > t.width).length;
510
- }, xe = (t) => {
528
+ }, Be = (t) => {
511
529
  t.classList.add("r6o-annotatable");
512
530
  const e = document.createElement("div");
513
531
  e.className = "r6o-span-highlight-layer", t.insertBefore(e, t.firstChild);
@@ -516,57 +534,54 @@ const we = (t, e) => {
516
534
  destroy: () => {
517
535
  e.remove();
518
536
  },
519
- redraw: (s, a, u, h, v) => {
520
- if (ct(n, s) && !v)
537
+ redraw: (a, s, u, f, m) => {
538
+ const p = !(mt(n, a) && m);
539
+ if (!f && !p)
521
540
  return;
522
- e.innerHTML = "";
523
- const m = s.reduce((g, { rects: x }) => [...g, ...x], []);
524
- s.forEach((g) => {
525
- const x = g.rects.map((y) => {
526
- const w = document.createElement("span");
527
- w.className = "r6o-annotation", w.dataset.annotation = g.annotation.id, w.style.left = `${y.x}px`, w.style.top = `${y.y}px`, w.style.width = `${y.width}px`, w.style.height = `${y.height}px`;
528
- const c = we(y, m), d = zt(g, a, u, h, c), f = V((d == null ? void 0 : d.fill) || D.fill).alpha((d == null ? void 0 : d.fillOpacity) === void 0 ? D.fillOpacity : d.fillOpacity).toHex();
529
- return w.style.backgroundColor = f, d.underlineStyle && (w.style.borderStyle = d.underlineStyle), d.underlineColor && (w.style.borderColor = d.underlineColor), d.underlineThickness && (w.style.borderBottomWidth = `${d.underlineThickness}px`), d.underlineOffset && (w.style.paddingBottom = `${d.underlineOffset}px`), e.appendChild(w), w;
541
+ p && (e.innerHTML = "");
542
+ const g = a.reduce((w, { rects: y }) => [...w, ...y], []);
543
+ a.forEach((w) => {
544
+ w.rects.map((y) => {
545
+ const h = Le(y, g), d = Kt(w, s, u, f, h);
546
+ if (p) {
547
+ const l = document.createElement("span");
548
+ l.className = "r6o-annotation", l.dataset.annotation = w.annotation.id, l.style.left = `${y.x}px`, l.style.top = `${y.y}px`, l.style.width = `${y.width}px`, l.style.height = `${y.height}px`;
549
+ const b = Y((d == null ? void 0 : d.fill) || P.fill).alpha((d == null ? void 0 : d.fillOpacity) === void 0 ? P.fillOpacity : d.fillOpacity).toHex();
550
+ l.style.backgroundColor = b, d.underlineStyle && (l.style.borderStyle = d.underlineStyle), d.underlineColor && (l.style.borderColor = d.underlineColor), d.underlineThickness && (l.style.borderBottomWidth = `${d.underlineThickness}px`), d.underlineOffset && (l.style.paddingBottom = `${d.underlineOffset}px`), e.appendChild(l);
551
+ }
530
552
  });
531
- return { id: g.annotation.id, spans: x };
532
- }), n = s;
553
+ }), n = a;
533
554
  },
534
- setVisible: (s) => {
535
- s ? e.classList.remove("hidden") : e.classList.add("hidden");
555
+ setVisible: (a) => {
556
+ a ? e.classList.remove("hidden") : e.classList.add("hidden");
536
557
  }
537
558
  };
538
- }, ye = (t, e, n) => ht(t, e, n, xe(t));
539
- let K;
540
- const Ae = new Uint8Array(16);
541
- function Ee() {
542
- if (!K && (K = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !K))
543
- throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
544
- return K(Ae);
559
+ }, Te = (t, e, n) => vt(t, e, n, Be(t));
560
+ var V = [];
561
+ for (var lt = 0; lt < 256; ++lt)
562
+ V.push((lt + 256).toString(16).slice(1));
563
+ function Re(t, e = 0) {
564
+ return (V[t[e + 0]] + V[t[e + 1]] + V[t[e + 2]] + V[t[e + 3]] + "-" + V[t[e + 4]] + V[t[e + 5]] + "-" + V[t[e + 6]] + V[t[e + 7]] + "-" + V[t[e + 8]] + V[t[e + 9]] + "-" + V[t[e + 10]] + V[t[e + 11]] + V[t[e + 12]] + V[t[e + 13]] + V[t[e + 14]] + V[t[e + 15]]).toLowerCase();
545
565
  }
546
- const I = [];
547
- for (let t = 0; t < 256; ++t)
548
- I.push((t + 256).toString(16).slice(1));
549
- function Se(t, e = 0) {
550
- return I[t[e + 0]] + I[t[e + 1]] + I[t[e + 2]] + I[t[e + 3]] + "-" + I[t[e + 4]] + I[t[e + 5]] + "-" + I[t[e + 6]] + I[t[e + 7]] + "-" + I[t[e + 8]] + I[t[e + 9]] + "-" + I[t[e + 10]] + I[t[e + 11]] + I[t[e + 12]] + I[t[e + 13]] + I[t[e + 14]] + I[t[e + 15]];
566
+ var Z, Ne = new Uint8Array(16);
567
+ function Me() {
568
+ if (!Z && (Z = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !Z))
569
+ throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
570
+ return Z(Ne);
551
571
  }
552
- const Ce = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), Ct = {
553
- randomUUID: Ce
572
+ var Oe = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
573
+ const Mt = {
574
+ randomUUID: Oe
554
575
  };
555
- function Vt(t, e, n) {
556
- if (Ct.randomUUID && !e && !t)
557
- return Ct.randomUUID();
576
+ function Ht(t, e, n) {
577
+ if (Mt.randomUUID && !e && !t)
578
+ return Mt.randomUUID();
558
579
  t = t || {};
559
- const o = t.random || (t.rng || Ee)();
560
- if (o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, e) {
561
- n = n || 0;
562
- for (let i = 0; i < 16; ++i)
563
- e[n + i] = o[i];
564
- return e;
565
- }
566
- return Se(o);
580
+ var o = t.random || (t.rng || Me)();
581
+ return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, Re(o);
567
582
  }
568
- var Lt = Object.prototype.hasOwnProperty;
569
- function X(t, e) {
583
+ var Ot = Object.prototype.hasOwnProperty;
584
+ function q(t, e) {
570
585
  var n, o;
571
586
  if (t === e)
572
587
  return !0;
@@ -577,59 +592,59 @@ function X(t, e) {
577
592
  return t.toString() === e.toString();
578
593
  if (n === Array) {
579
594
  if ((o = t.length) === e.length)
580
- for (; o-- && X(t[o], e[o]); )
595
+ for (; o-- && q(t[o], e[o]); )
581
596
  ;
582
597
  return o === -1;
583
598
  }
584
599
  if (!n || typeof t == "object") {
585
600
  o = 0;
586
601
  for (n in t)
587
- if (Lt.call(t, n) && ++o && !Lt.call(e, n) || !(n in e) || !X(t[n], e[n]))
602
+ if (Ot.call(t, n) && ++o && !Ot.call(e, n) || !(n in e) || !q(t[n], e[n]))
588
603
  return !1;
589
604
  return Object.keys(e).length === o;
590
605
  }
591
606
  }
592
607
  return t !== t && e !== e;
593
608
  }
594
- function it() {
609
+ function dt() {
595
610
  }
596
- function Le(t, e) {
611
+ function Ie(t, e) {
597
612
  return t != t ? e == e : t !== e || t && typeof t == "object" || typeof t == "function";
598
613
  }
599
- const $ = [];
600
- function ft(t, e = it) {
614
+ const z = [];
615
+ function yt(t, e = dt) {
601
616
  let n;
602
617
  const o = /* @__PURE__ */ new Set();
603
- function i(a) {
604
- if (Le(t, a) && (t = a, n)) {
605
- const u = !$.length;
606
- for (const h of o)
607
- h[1](), $.push(h, t);
618
+ function i(s) {
619
+ if (Ie(t, s) && (t = s, n)) {
620
+ const u = !z.length;
621
+ for (const f of o)
622
+ f[1](), z.push(f, t);
608
623
  if (u) {
609
- for (let h = 0; h < $.length; h += 2)
610
- $[h][0]($[h + 1]);
611
- $.length = 0;
624
+ for (let f = 0; f < z.length; f += 2)
625
+ z[f][0](z[f + 1]);
626
+ z.length = 0;
612
627
  }
613
628
  }
614
629
  }
615
- function r(a) {
616
- i(a(t));
630
+ function r(s) {
631
+ i(s(t));
617
632
  }
618
- function s(a, u = it) {
619
- const h = [a, u];
620
- return o.add(h), o.size === 1 && (n = e(i, r) || it), a(t), () => {
621
- o.delete(h), o.size === 0 && n && (n(), n = null);
633
+ function a(s, u = dt) {
634
+ const f = [s, u];
635
+ return o.add(f), o.size === 1 && (n = e(i, r) || dt), s(t), () => {
636
+ o.delete(f), o.size === 0 && n && (n(), n = null);
622
637
  };
623
638
  }
624
- return { set: i, update: r, subscribe: s };
639
+ return { set: i, update: r, subscribe: a };
625
640
  }
626
- const Be = (t) => {
627
- const { subscribe: e, set: n } = ft();
641
+ const Ve = (t) => {
642
+ const { subscribe: e, set: n } = yt();
628
643
  let o;
629
644
  return e((i) => o = i), t.observe(({ changes: i }) => {
630
645
  if (o) {
631
- (i.deleted || []).some((s) => s.id === o) && n(void 0);
632
- const r = (i.updated || []).find(({ oldValue: s }) => s.id === o);
646
+ (i.deleted || []).some((a) => a.id === o) && n(void 0);
647
+ const r = (i.updated || []).find(({ oldValue: a }) => a.id === o);
633
648
  r && n(r.newValue.id);
634
649
  }
635
650
  }), {
@@ -639,35 +654,42 @@ const Be = (t) => {
639
654
  subscribe: e,
640
655
  set: n
641
656
  };
642
- }, rt = { selected: [] }, Te = (t, e = "EDIT") => {
643
- const { subscribe: n, set: o } = ft(rt);
644
- let i = rt;
645
- n((l) => i = l);
646
- const r = () => o(rt), s = () => {
647
- var l;
648
- return ((l = i.selected) == null ? void 0 : l.length) === 0;
649
- }, a = (l) => {
657
+ };
658
+ var Ue = /* @__PURE__ */ ((t) => (t.EDIT = "EDIT", t.SELECT = "SELECT", t.NONE = "NONE", t))(Ue || {});
659
+ const ut = { selected: [] }, ke = (t, e = "EDIT") => {
660
+ const { subscribe: n, set: o } = yt(ut);
661
+ let i = ut;
662
+ n((c) => i = c);
663
+ const r = () => o(ut), a = () => {
664
+ var c;
665
+ return ((c = i.selected) == null ? void 0 : c.length) === 0;
666
+ }, s = (c) => {
650
667
  if (i.selected.length === 0)
651
668
  return !1;
652
- const m = typeof l == "string" ? l : l.id;
653
- return i.selected.some((g) => g.id === m);
654
- }, u = (l, m) => {
655
- const g = t.getAnnotation(l);
669
+ const p = typeof c == "string" ? c : c.id;
670
+ return i.selected.some((g) => g.id === p);
671
+ }, u = (c, p) => {
672
+ const g = t.getAnnotation(c);
656
673
  if (g) {
657
- const x = Re(g, e);
658
- o(x === "EDIT" ? { selected: [{ id: l, editable: !0 }], pointerEvent: m } : x === "SELECT" ? { selected: [{ id: l }], pointerEvent: m } : { selected: [], pointerEvent: m });
674
+ const w = It(g, e);
675
+ o(w === "EDIT" ? { selected: [{ id: c, editable: !0 }], pointerEvent: p } : w === "SELECT" ? { selected: [{ id: c }], pointerEvent: p } : { selected: [], pointerEvent: p });
659
676
  } else
660
- console.warn("Invalid selection: " + l);
661
- }, h = (l, m = !0) => {
662
- const g = Array.isArray(l) ? l : [l], x = g.map((y) => t.getAnnotation(y)).filter(Boolean);
663
- o({ selected: x.map(({ id: y }) => ({ id: y, editable: m })) }), x.length !== g.length && console.warn("Invalid selection", l);
664
- }, v = (l) => {
677
+ console.warn("Invalid selection: " + c);
678
+ }, f = (c, p) => {
679
+ const g = Array.isArray(c) ? c : [c], w = g.map((y) => t.getAnnotation(y)).filter(Boolean);
680
+ o({
681
+ selected: w.map((y) => {
682
+ const h = p === void 0 ? It(y, e) === "EDIT" : p;
683
+ return { id: y.id, editable: h };
684
+ })
685
+ }), w.length !== g.length && console.warn("Invalid selection", c);
686
+ }, m = (c) => {
665
687
  if (i.selected.length === 0)
666
688
  return !1;
667
- const { selected: m } = i;
668
- m.filter(({ id: g }) => l.includes(g)).length > 0 && o({ selected: m.filter(({ id: g }) => !l.includes(g)) });
689
+ const { selected: p } = i;
690
+ p.filter(({ id: g }) => c.includes(g)).length > 0 && o({ selected: p.filter(({ id: g }) => !c.includes(g)) });
669
691
  };
670
- return t.observe(({ changes: l }) => v((l.deleted || []).map((m) => m.id))), {
692
+ return t.observe(({ changes: c }) => m((c.deleted || []).map((p) => p.id))), {
671
693
  clear: r,
672
694
  clickSelect: u,
673
695
  get selected() {
@@ -676,264 +698,297 @@ const Be = (t) => {
676
698
  get pointerEvent() {
677
699
  return i ? i.pointerEvent : null;
678
700
  },
679
- isEmpty: s,
680
- isSelected: a,
681
- setSelected: h,
701
+ isEmpty: a,
702
+ isSelected: s,
703
+ setSelected: f,
682
704
  subscribe: n
683
705
  };
684
- }, Re = (t, e) => typeof e == "function" ? e(t) || "EDIT" : e || "EDIT", Me = [];
685
- for (let t = 0; t < 256; ++t)
686
- Me.push((t + 256).toString(16).slice(1));
687
- typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
688
- const Oe = (t, e) => {
706
+ }, It = (t, e) => typeof e == "function" ? e(t) || "EDIT" : e || "EDIT";
707
+ var U = [];
708
+ for (var ht = 0; ht < 256; ++ht)
709
+ U.push((ht + 256).toString(16).slice(1));
710
+ function Ye(t, e = 0) {
711
+ return (U[t[e + 0]] + U[t[e + 1]] + U[t[e + 2]] + U[t[e + 3]] + "-" + U[t[e + 4]] + U[t[e + 5]] + "-" + U[t[e + 6]] + U[t[e + 7]] + "-" + U[t[e + 8]] + U[t[e + 9]] + "-" + U[t[e + 10]] + U[t[e + 11]] + U[t[e + 12]] + U[t[e + 13]] + U[t[e + 14]] + U[t[e + 15]]).toLowerCase();
712
+ }
713
+ var tt, De = new Uint8Array(16);
714
+ function _e() {
715
+ if (!tt && (tt = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !tt))
716
+ throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
717
+ return tt(De);
718
+ }
719
+ var Xe = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
720
+ const Vt = {
721
+ randomUUID: Xe
722
+ };
723
+ function $e(t, e, n) {
724
+ if (Vt.randomUUID && !e && !t)
725
+ return Vt.randomUUID();
726
+ t = t || {};
727
+ var o = t.random || (t.rng || _e)();
728
+ return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, Ye(o);
729
+ }
730
+ const Vn = (t, e, n, o) => ({
731
+ id: $e(),
732
+ annotation: t.id,
733
+ created: n || /* @__PURE__ */ new Date(),
734
+ creator: o,
735
+ ...e
736
+ }), He = (t, e) => {
689
737
  const n = new Set(t.bodies.map((o) => o.id));
690
738
  return e.bodies.filter((o) => !n.has(o.id));
691
- }, Ie = (t, e) => {
739
+ }, Pe = (t, e) => {
692
740
  const n = new Set(e.bodies.map((o) => o.id));
693
741
  return t.bodies.filter((o) => !n.has(o.id));
694
- }, Ne = (t, e) => e.bodies.map((n) => {
742
+ }, ze = (t, e) => e.bodies.map((n) => {
695
743
  const o = t.bodies.find((i) => i.id === n.id);
696
- return { newBody: n, oldBody: o && !X(o, n) ? o : void 0 };
697
- }).filter(({ oldBody: n }) => n).map(({ oldBody: n, newBody: o }) => ({ oldBody: n, newBody: o })), Ve = (t, e) => !X(t.target, e.target), Ut = (t, e) => {
698
- const n = Oe(t, e), o = Ie(t, e), i = Ne(t, e);
744
+ return { newBody: n, oldBody: o && !q(o, n) ? o : void 0 };
745
+ }).filter(({ oldBody: n }) => n).map(({ oldBody: n, newBody: o }) => ({ oldBody: n, newBody: o })), Fe = (t, e) => !q(t.target, e.target), Pt = (t, e) => {
746
+ const n = He(t, e), o = Pe(t, e), i = ze(t, e);
699
747
  return {
700
748
  oldValue: t,
701
749
  newValue: e,
702
750
  bodiesCreated: n.length > 0 ? n : void 0,
703
751
  bodiesDeleted: o.length > 0 ? o : void 0,
704
752
  bodiesUpdated: i.length > 0 ? i : void 0,
705
- targetUpdated: Ve(t, e) ? { oldTarget: t.target, newTarget: e.target } : void 0
753
+ targetUpdated: Fe(t, e) ? { oldTarget: t.target, newTarget: e.target } : void 0
706
754
  };
707
755
  };
708
- var R = /* @__PURE__ */ ((t) => (t.LOCAL = "LOCAL", t.REMOTE = "REMOTE", t))(R || {});
709
- const Ue = (t, e) => {
756
+ var N = /* @__PURE__ */ ((t) => (t.LOCAL = "LOCAL", t.REMOTE = "REMOTE", t))(N || {});
757
+ const We = (t, e) => {
710
758
  var n, o;
711
759
  const { changes: i, origin: r } = e;
712
760
  if (!(!t.options.origin || t.options.origin === r))
713
761
  return !1;
714
762
  if (t.options.ignore) {
715
- const { ignore: s } = t.options, a = (u) => u && u.length > 0;
716
- if (!(a(i.created) || a(i.deleted))) {
717
- const u = (n = i.updated) == null ? void 0 : n.some((v) => a(v.bodiesCreated) || a(v.bodiesDeleted) || a(v.bodiesUpdated)), h = (o = i.updated) == null ? void 0 : o.some((v) => v.targetUpdated);
718
- if (s === "BODY_ONLY" && u && !h || s === "TARGET_ONLY" && h && !u)
763
+ const { ignore: a } = t.options, s = (u) => u && u.length > 0;
764
+ if (!(s(i.created) || s(i.deleted))) {
765
+ const u = (n = i.updated) == null ? void 0 : n.some((m) => s(m.bodiesCreated) || s(m.bodiesDeleted) || s(m.bodiesUpdated)), f = (o = i.updated) == null ? void 0 : o.some((m) => m.targetUpdated);
766
+ if (a === "BODY_ONLY" && u && !f || a === "TARGET_ONLY" && f && !u)
719
767
  return !1;
720
768
  }
721
769
  }
722
770
  if (t.options.annotations) {
723
- const s = /* @__PURE__ */ new Set([
724
- ...(i.created || []).map((a) => a.id),
725
- ...(i.deleted || []).map((a) => a.id),
726
- ...(i.updated || []).map(({ oldValue: a }) => a.id)
771
+ const a = /* @__PURE__ */ new Set([
772
+ ...(i.created || []).map((s) => s.id),
773
+ ...(i.deleted || []).map((s) => s.id),
774
+ ...(i.updated || []).map(({ oldValue: s }) => s.id)
727
775
  ]);
728
- return !!(Array.isArray(t.options.annotations) ? t.options.annotations : [t.options.annotations]).find((a) => s.has(a));
776
+ return !!(Array.isArray(t.options.annotations) ? t.options.annotations : [t.options.annotations]).find((s) => a.has(s));
729
777
  } else
730
778
  return !0;
731
- }, ke = (t, e) => {
732
- 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)), a = new Set((e.updated || []).filter(({ oldValue: l }) => n.has(l.id) || o.has(l.id)).map(({ oldValue: l }) => l.id)), u = [
733
- ...(t.created || []).filter((l) => !r.has(l.id)).map((l) => s.has(l.id) ? e.updated.find(({ oldValue: m }) => m.id === l.id).newValue : l),
779
+ }, qe = (t, e) => {
780
+ const n = new Set((t.created || []).map((c) => c.id)), o = new Set((t.updated || []).map(({ newValue: c }) => c.id)), i = new Set((e.created || []).map((c) => c.id)), r = new Set((e.deleted || []).map((c) => c.id)), a = new Set((e.updated || []).map(({ oldValue: c }) => c.id)), s = new Set((e.updated || []).filter(({ oldValue: c }) => n.has(c.id) || o.has(c.id)).map(({ oldValue: c }) => c.id)), u = [
781
+ ...(t.created || []).filter((c) => !r.has(c.id)).map((c) => a.has(c.id) ? e.updated.find(({ oldValue: p }) => p.id === c.id).newValue : c),
734
782
  ...e.created || []
735
- ], h = [
736
- ...(t.deleted || []).filter((l) => !i.has(l.id)),
737
- ...(e.deleted || []).filter((l) => !n.has(l.id))
738
- ], v = [
739
- ...(t.updated || []).filter(({ newValue: l }) => !r.has(l.id)).map((l) => {
740
- const { oldValue: m, newValue: g } = l;
741
- if (s.has(g.id)) {
742
- const x = e.updated.find((y) => y.oldValue.id === g.id).newValue;
743
- return Ut(m, x);
783
+ ], f = [
784
+ ...(t.deleted || []).filter((c) => !i.has(c.id)),
785
+ ...(e.deleted || []).filter((c) => !n.has(c.id))
786
+ ], m = [
787
+ ...(t.updated || []).filter(({ newValue: c }) => !r.has(c.id)).map((c) => {
788
+ const { oldValue: p, newValue: g } = c;
789
+ if (a.has(g.id)) {
790
+ const w = e.updated.find((y) => y.oldValue.id === g.id).newValue;
791
+ return Pt(p, w);
744
792
  } else
745
- return l;
793
+ return c;
746
794
  }),
747
- ...(e.updated || []).filter(({ oldValue: l }) => !a.has(l.id))
795
+ ...(e.updated || []).filter(({ oldValue: c }) => !s.has(c.id))
748
796
  ];
749
- return { created: u, deleted: h, updated: v };
750
- }, Ye = (t) => t.id !== void 0, _e = () => {
751
- const t = /* @__PURE__ */ new Map(), e = /* @__PURE__ */ new Map(), n = [], o = (p, S = {}) => n.push({ onChange: p, options: S }), i = (p) => {
752
- const S = n.findIndex((A) => A.onChange == p);
753
- S > -1 && n.splice(S, 1);
754
- }, r = (p, S) => {
797
+ return { created: u, deleted: f, updated: m };
798
+ }, je = (t) => t.id !== void 0, Ge = () => {
799
+ const t = /* @__PURE__ */ new Map(), e = /* @__PURE__ */ new Map(), n = [], o = (v, x = {}) => n.push({ onChange: v, options: x }), i = (v) => {
800
+ const x = n.findIndex((A) => A.onChange == v);
801
+ x > -1 && n.splice(x, 1);
802
+ }, r = (v, x) => {
755
803
  const A = {
756
- origin: p,
804
+ origin: v,
757
805
  changes: {
758
- created: S.created || [],
759
- updated: S.updated || [],
760
- deleted: S.deleted || []
806
+ created: x.created || [],
807
+ updated: x.updated || [],
808
+ deleted: x.deleted || []
761
809
  },
762
810
  state: [...t.values()]
763
811
  };
764
- n.forEach((C) => {
765
- Ue(C, A) && C.onChange(A);
812
+ n.forEach((E) => {
813
+ We(E, A) && E.onChange(A);
766
814
  });
767
- }, s = (p, S = R.LOCAL) => {
768
- if (t.get(p.id))
769
- throw Error(`Cannot add annotation ${p.id} - exists already`);
770
- t.set(p.id, p), p.bodies.forEach((A) => e.set(A.id, p.id)), r(S, { created: [p] });
771
- }, a = (p, S) => {
772
- const A = typeof p == "string" ? S : p, C = typeof p == "string" ? p : p.id, T = t.get(C);
773
- if (T) {
774
- const M = Ut(T, A);
775
- return C === A.id ? t.set(C, A) : (t.delete(C), t.set(A.id, A)), T.bodies.forEach((U) => e.delete(U.id)), A.bodies.forEach((U) => e.set(U.id, A.id)), M;
815
+ }, a = (v, x = N.LOCAL) => {
816
+ if (t.get(v.id))
817
+ throw Error(`Cannot add annotation ${v.id} - exists already`);
818
+ t.set(v.id, v), v.bodies.forEach((A) => e.set(A.id, v.id)), r(x, { created: [v] });
819
+ }, s = (v, x) => {
820
+ const A = typeof v == "string" ? x : v, E = typeof v == "string" ? v : v.id, R = t.get(E);
821
+ if (R) {
822
+ const M = Pt(R, A);
823
+ return E === A.id ? t.set(E, A) : (t.delete(E), t.set(A.id, A)), R.bodies.forEach((H) => e.delete(H.id)), A.bodies.forEach((H) => e.set(H.id, A.id)), M;
776
824
  } else
777
- console.warn(`Cannot update annotation ${C} - does not exist`);
778
- }, u = (p, S = R.LOCAL, A = R.LOCAL) => {
779
- const C = Ye(S) ? A : S, T = a(p, S);
780
- T && r(C, { updated: [T] });
781
- }, h = (p, S = R.LOCAL) => {
782
- const A = p.reduce((C, T) => {
783
- const M = a(T);
784
- return M ? [...C, M] : C;
825
+ console.warn(`Cannot update annotation ${E} - does not exist`);
826
+ }, u = (v, x = N.LOCAL, A = N.LOCAL) => {
827
+ const E = je(x) ? A : x, R = s(v, x);
828
+ R && r(E, { updated: [R] });
829
+ }, f = (v, x = N.LOCAL) => {
830
+ const A = v.reduce((E, R) => {
831
+ const M = s(R);
832
+ return M ? [...E, M] : E;
785
833
  }, []);
786
- A.length > 0 && r(S, { updated: A });
787
- }, v = (p, S = R.LOCAL) => {
788
- const A = t.get(p.annotation);
834
+ A.length > 0 && r(x, { updated: A });
835
+ }, m = (v, x = N.LOCAL) => {
836
+ const A = t.get(v.annotation);
789
837
  if (A) {
790
- const C = {
838
+ const E = {
791
839
  ...A,
792
- bodies: [...A.bodies, p]
840
+ bodies: [...A.bodies, v]
793
841
  };
794
- t.set(A.id, C), e.set(p.id, C.id), r(S, { updated: [{
842
+ t.set(A.id, E), e.set(v.id, E.id), r(x, { updated: [{
795
843
  oldValue: A,
796
- newValue: C,
797
- bodiesCreated: [p]
844
+ newValue: E,
845
+ bodiesCreated: [v]
798
846
  }] });
799
847
  } else
800
- console.warn(`Attempt to add body to missing annotation: ${p.annotation}`);
801
- }, l = () => [...t.values()], m = (p = R.LOCAL) => {
802
- const S = [...t.values()];
803
- t.clear(), e.clear(), r(p, { deleted: S });
804
- }, g = (p, S = !0, A = R.LOCAL) => {
805
- if (S) {
806
- const C = [...t.values()];
807
- t.clear(), e.clear(), p.forEach((T) => {
808
- t.set(T.id, T), T.bodies.forEach((M) => e.set(M.id, T.id));
809
- }), r(A, { created: p, deleted: C });
848
+ console.warn(`Attempt to add body to missing annotation: ${v.annotation}`);
849
+ }, c = () => [...t.values()], p = (v = N.LOCAL) => {
850
+ const x = [...t.values()];
851
+ t.clear(), e.clear(), r(v, { deleted: x });
852
+ }, g = (v, x = !0, A = N.LOCAL) => {
853
+ if (x) {
854
+ const E = [...t.values()];
855
+ t.clear(), e.clear(), v.forEach((R) => {
856
+ t.set(R.id, R), R.bodies.forEach((M) => e.set(M.id, R.id));
857
+ }), r(A, { created: v, deleted: E });
810
858
  } else {
811
- const C = p.reduce((T, M) => {
812
- const U = t.get(M.id);
813
- return U ? [...T, U] : T;
859
+ const E = v.reduce((R, M) => {
860
+ const H = t.get(M.id);
861
+ return H ? [...R, H] : R;
814
862
  }, []);
815
- if (C.length > 0)
816
- throw Error(`Bulk insert would overwrite the following annotations: ${C.map((T) => T.id).join(", ")}`);
817
- p.forEach((T) => {
818
- t.set(T.id, T), T.bodies.forEach((M) => e.set(M.id, T.id));
819
- }), r(A, { created: p });
863
+ if (E.length > 0)
864
+ throw Error(`Bulk insert would overwrite the following annotations: ${E.map((R) => R.id).join(", ")}`);
865
+ v.forEach((R) => {
866
+ t.set(R.id, R), R.bodies.forEach((M) => e.set(M.id, R.id));
867
+ }), r(A, { created: v });
820
868
  }
821
- }, x = (p) => {
822
- const S = typeof p == "string" ? p : p.id, A = t.get(S);
869
+ }, w = (v) => {
870
+ const x = typeof v == "string" ? v : v.id, A = t.get(x);
823
871
  if (A)
824
- return t.delete(S), A.bodies.forEach((C) => e.delete(C.id)), A;
825
- console.warn(`Attempt to delete missing annotation: ${S}`);
826
- }, y = (p, S = R.LOCAL) => {
827
- const A = x(p);
828
- A && r(S, { deleted: [A] });
829
- }, w = (p, S = R.LOCAL) => {
830
- const A = p.reduce((C, T) => {
831
- const M = x(T);
832
- return M ? [...C, M] : C;
872
+ return t.delete(x), A.bodies.forEach((E) => e.delete(E.id)), A;
873
+ console.warn(`Attempt to delete missing annotation: ${x}`);
874
+ }, y = (v, x = N.LOCAL) => {
875
+ const A = w(v);
876
+ A && r(x, { deleted: [A] });
877
+ }, h = (v, x = N.LOCAL) => {
878
+ const A = v.reduce((E, R) => {
879
+ const M = w(R);
880
+ return M ? [...E, M] : E;
833
881
  }, []);
834
- A.length > 0 && r(S, { deleted: A });
835
- }, c = (p, S = R.LOCAL) => {
836
- const A = t.get(p.annotation);
837
- if (A) {
838
- const C = A.bodies.find((T) => T.id === p.id);
839
- if (C) {
840
- e.delete(C.id);
841
- const T = {
842
- ...A,
843
- bodies: A.bodies.filter((M) => M.id !== p.id)
882
+ A.length > 0 && r(x, { deleted: A });
883
+ }, d = (v) => {
884
+ const x = t.get(v.annotation);
885
+ if (x) {
886
+ const A = x.bodies.find((E) => E.id === v.id);
887
+ if (A) {
888
+ e.delete(A.id);
889
+ const E = {
890
+ ...x,
891
+ bodies: x.bodies.filter((R) => R.id !== v.id)
892
+ };
893
+ return t.set(x.id, E), {
894
+ oldValue: x,
895
+ newValue: E,
896
+ bodiesDeleted: [A]
844
897
  };
845
- t.set(A.id, T), r(S, { updated: [{
846
- oldValue: A,
847
- newValue: T,
848
- bodiesDeleted: [C]
849
- }] });
850
898
  } else
851
- console.warn(`Attempt to delete missing body ${p.id} from annotation ${p.annotation}`);
899
+ console.warn(`Attempt to delete missing body ${v.id} from annotation ${v.annotation}`);
852
900
  } else
853
- console.warn(`Attempt to delete body from missing annotation ${p.annotation}`);
854
- }, d = (p) => {
855
- const S = t.get(p);
856
- return S ? { ...S } : void 0;
857
- }, f = (p) => {
858
- const S = e.get(p);
859
- if (S) {
860
- const A = d(S).bodies.find((C) => C.id === p);
901
+ console.warn(`Attempt to delete body from missing annotation ${v.annotation}`);
902
+ }, l = (v, x = N.LOCAL) => {
903
+ const A = d(v);
904
+ A && r(x, { updated: [A] });
905
+ }, b = (v, x = N.LOCAL) => {
906
+ const A = v.map((E) => d(E)).filter(Boolean);
907
+ A.length > 0 && r(x, { updated: A });
908
+ }, S = (v) => {
909
+ const x = t.get(v);
910
+ return x ? { ...x } : void 0;
911
+ }, L = (v) => {
912
+ const x = e.get(v);
913
+ if (x) {
914
+ const A = S(x).bodies.find((E) => E.id === v);
861
915
  if (A)
862
916
  return A;
863
- console.error(`Store integrity error: body ${p} in index, but not in annotation`);
917
+ console.error(`Store integrity error: body ${v} in index, but not in annotation`);
864
918
  } else
865
- console.warn(`Attempt to retrieve missing body: ${p}`);
866
- }, b = (p, S) => {
867
- if (p.annotation !== S.annotation)
919
+ console.warn(`Attempt to retrieve missing body: ${v}`);
920
+ }, C = (v, x) => {
921
+ if (v.annotation !== x.annotation)
868
922
  throw "Annotation integrity violation: annotation ID must be the same when updating bodies";
869
- const A = t.get(p.annotation);
923
+ const A = t.get(v.annotation);
870
924
  if (A) {
871
- const C = A.bodies.find((M) => M.id === p.id), T = {
925
+ const E = A.bodies.find((M) => M.id === v.id), R = {
872
926
  ...A,
873
- bodies: A.bodies.map((M) => M.id === C.id ? S : M)
927
+ bodies: A.bodies.map((M) => M.id === E.id ? x : M)
874
928
  };
875
- return t.set(A.id, T), C.id !== S.id && (e.delete(C.id), e.set(S.id, T.id)), {
929
+ return t.set(A.id, R), E.id !== x.id && (e.delete(E.id), e.set(x.id, R.id)), {
876
930
  oldValue: A,
877
- newValue: T,
878
- bodiesUpdated: [{ oldBody: C, newBody: S }]
931
+ newValue: R,
932
+ bodiesUpdated: [{ oldBody: E, newBody: x }]
879
933
  };
880
934
  } else
881
- console.warn(`Attempt to add body to missing annotation ${p.annotation}`);
882
- }, E = (p, S, A = R.LOCAL) => {
883
- const C = b(p, S);
884
- C && r(A, { updated: [C] });
885
- }, L = (p, S = R.LOCAL) => {
886
- const A = p.map((C) => b({ id: C.id, annotation: C.annotation }, C)).filter(Boolean);
887
- r(S, { updated: A });
888
- }, B = (p) => {
889
- const S = t.get(p.annotation);
890
- if (S) {
935
+ console.warn(`Attempt to add body to missing annotation ${v.annotation}`);
936
+ }, B = (v, x, A = N.LOCAL) => {
937
+ const E = C(v, x);
938
+ E && r(A, { updated: [E] });
939
+ }, T = (v, x = N.LOCAL) => {
940
+ const A = v.map((E) => C({ id: E.id, annotation: E.annotation }, E)).filter(Boolean);
941
+ r(x, { updated: A });
942
+ }, O = (v) => {
943
+ const x = t.get(v.annotation);
944
+ if (x) {
891
945
  const A = {
892
- ...S,
946
+ ...x,
893
947
  target: {
894
- ...S.target,
895
- ...p
948
+ ...x.target,
949
+ ...v
896
950
  }
897
951
  };
898
- return t.set(S.id, A), {
899
- oldValue: S,
952
+ return t.set(x.id, A), {
953
+ oldValue: x,
900
954
  newValue: A,
901
955
  targetUpdated: {
902
- oldTarget: S.target,
903
- newTarget: p
956
+ oldTarget: x.target,
957
+ newTarget: v
904
958
  }
905
959
  };
906
960
  } else
907
- console.warn(`Attempt to update target on missing annotation: ${p.annotation}`);
961
+ console.warn(`Attempt to update target on missing annotation: ${v.annotation}`);
908
962
  };
909
963
  return {
910
- addAnnotation: s,
911
- addBody: v,
912
- all: l,
964
+ addAnnotation: a,
965
+ addBody: m,
966
+ all: c,
913
967
  bulkAddAnnotation: g,
914
- bulkDeleteAnnotation: w,
915
- bulkUpdateAnnotation: h,
916
- bulkUpdateBodies: L,
917
- bulkUpdateTargets: (p, S = R.LOCAL) => {
918
- const A = p.map((C) => B(C)).filter(Boolean);
919
- A.length > 0 && r(S, { updated: A });
968
+ bulkDeleteAnnotation: h,
969
+ bulkDeleteBodies: b,
970
+ bulkUpdateAnnotation: f,
971
+ bulkUpdateBodies: T,
972
+ bulkUpdateTargets: (v, x = N.LOCAL) => {
973
+ const A = v.map((E) => O(E)).filter(Boolean);
974
+ A.length > 0 && r(x, { updated: A });
920
975
  },
921
- clear: m,
976
+ clear: p,
922
977
  deleteAnnotation: y,
923
- deleteBody: c,
924
- getAnnotation: d,
925
- getBody: f,
978
+ deleteBody: l,
979
+ getAnnotation: S,
980
+ getBody: L,
926
981
  observe: o,
927
982
  unobserve: i,
928
983
  updateAnnotation: u,
929
- updateBody: E,
930
- updateTarget: (p, S = R.LOCAL) => {
931
- const A = B(p);
932
- A && r(S, { updated: [A] });
984
+ updateBody: B,
985
+ updateTarget: (v, x = N.LOCAL) => {
986
+ const A = O(v);
987
+ A && r(x, { updated: [A] });
933
988
  }
934
989
  };
935
990
  };
936
- let Xe = () => ({
991
+ let Ke = () => ({
937
992
  emit(t, ...e) {
938
993
  for (let n = 0, o = this.events[t] || [], i = o.length; n < i; n++)
939
994
  o[n](...e);
@@ -947,123 +1002,116 @@ let Xe = () => ({
947
1002
  };
948
1003
  }
949
1004
  });
950
- const De = 250, He = (t) => {
951
- const e = Xe(), n = [];
1005
+ const Qe = 250, Je = (t) => {
1006
+ const e = Ke(), n = [];
952
1007
  let o = -1, i = !1, r = 0;
953
- const s = (g) => {
1008
+ const a = (g) => {
954
1009
  if (!i) {
955
- const { changes: x } = g, y = performance.now();
956
- if (y - r > De)
957
- n.splice(o + 1), n.push(x), o = n.length - 1;
1010
+ const { changes: w } = g, y = performance.now();
1011
+ if (y - r > Qe)
1012
+ n.splice(o + 1), n.push(w), o = n.length - 1;
958
1013
  else {
959
- const w = n.length - 1;
960
- n[w] = ke(n[w], x);
1014
+ const h = n.length - 1;
1015
+ n[h] = qe(n[h], w);
961
1016
  }
962
1017
  r = y;
963
1018
  }
964
1019
  i = !1;
965
1020
  };
966
- t.observe(s, { origin: R.LOCAL });
967
- const a = (g) => g && g.length > 0 && t.bulkDeleteAnnotation(g), u = (g) => g && g.length > 0 && t.bulkAddAnnotation(g, !1), h = (g) => g && g.length > 0 && t.bulkUpdateAnnotation(g.map(({ oldValue: x }) => x)), v = (g) => g && g.length > 0 && t.bulkUpdateAnnotation(g.map(({ newValue: x }) => x)), l = (g) => g && g.length > 0 && t.bulkAddAnnotation(g, !1), m = (g) => g && g.length > 0 && t.bulkDeleteAnnotation(g);
1021
+ t.observe(a, { origin: N.LOCAL });
1022
+ const s = (g) => g && g.length > 0 && t.bulkDeleteAnnotation(g), u = (g) => g && g.length > 0 && t.bulkAddAnnotation(g, !1), f = (g) => g && g.length > 0 && t.bulkUpdateAnnotation(g.map(({ oldValue: w }) => w)), m = (g) => g && g.length > 0 && t.bulkUpdateAnnotation(g.map(({ newValue: w }) => w)), c = (g) => g && g.length > 0 && t.bulkAddAnnotation(g, !1), p = (g) => g && g.length > 0 && t.bulkDeleteAnnotation(g);
968
1023
  return {
969
1024
  canRedo: () => n.length - 1 > o,
970
1025
  canUndo: () => o > -1,
971
- destroy: () => t.unobserve(s),
972
- on: (g, x) => e.on(g, x),
1026
+ destroy: () => t.unobserve(a),
1027
+ on: (g, w) => e.on(g, w),
973
1028
  redo: () => {
974
1029
  if (n.length - 1 > o) {
975
1030
  i = !0;
976
- const { created: g, updated: x, deleted: y } = n[o + 1];
977
- u(g), v(x), m(y), e.emit("redo", n[o + 1]), o += 1;
1031
+ const { created: g, updated: w, deleted: y } = n[o + 1];
1032
+ u(g), m(w), p(y), e.emit("redo", n[o + 1]), o += 1;
978
1033
  }
979
1034
  },
980
1035
  undo: () => {
981
1036
  if (o > -1) {
982
1037
  i = !0;
983
- const { created: g, updated: x, deleted: y } = n[o];
984
- a(g), h(x), l(y), e.emit("undo", n[o]), o -= 1;
1038
+ const { created: g, updated: w, deleted: y } = n[o];
1039
+ s(g), f(w), c(y), e.emit("undo", n[o]), o -= 1;
985
1040
  }
986
1041
  }
987
1042
  };
988
- }, $e = () => {
989
- const { subscribe: t, set: e } = ft([]);
1043
+ }, Ze = () => {
1044
+ const { subscribe: t, set: e } = yt([]);
990
1045
  return {
991
1046
  subscribe: t,
992
1047
  set: e
993
1048
  };
994
- }, Pe = (t, e, n, o) => {
995
- const { store: i, selection: r, hover: s, viewport: a } = t, u = /* @__PURE__ */ new Map();
996
- let h = [], v, l;
997
- const m = (c, d) => {
998
- u.has(c) ? u.get(c).push(d) : u.set(c, [d]);
999
- }, g = (c, d) => {
1000
- const f = u.get(c);
1001
- f && f.indexOf(d) > 0 && f.splice(f.indexOf(d), 1);
1002
- }, x = (c, d, f) => {
1003
- u.has(c) && setTimeout(() => {
1004
- u.get(c).forEach((b) => {
1049
+ }, tn = (t, e, n, o) => {
1050
+ const { store: i, selection: r, hover: a, viewport: s } = t, u = /* @__PURE__ */ new Map();
1051
+ let f = [], m;
1052
+ const c = (y, h) => {
1053
+ u.has(y) ? u.get(y).push(h) : u.set(y, [h]);
1054
+ }, p = (y, h) => {
1055
+ const d = u.get(y);
1056
+ d && d.indexOf(h) > 0 && d.splice(d.indexOf(h), 1);
1057
+ }, g = (y, h, d) => {
1058
+ u.has(y) && setTimeout(() => {
1059
+ u.get(y).forEach((l) => {
1005
1060
  if (n) {
1006
- const E = Array.isArray(d) ? d.map((B) => n.serialize(B)) : n.serialize(d), L = f ? f instanceof PointerEvent ? f : n.serialize(f) : void 0;
1007
- b(E, L);
1061
+ const b = Array.isArray(h) ? h.map((L) => n.serialize(L)) : n.serialize(h), S = d ? d instanceof PointerEvent ? d : n.serialize(d) : void 0;
1062
+ l(b, S);
1008
1063
  } else
1009
- b(d, f);
1064
+ l(h, d);
1010
1065
  });
1011
1066
  }, 1);
1012
- }, y = () => {
1013
- const { selected: c } = r, d = (c || []).map(({ id: f }) => i.getAnnotation(f));
1014
- d.forEach((f) => {
1015
- const b = h.find((E) => E.id === f.id);
1016
- (!b || !X(b, f)) && x("updateAnnotation", f, b);
1017
- }), h = h.map((f) => d.find(({ id: E }) => E === f.id) || f);
1018
1067
  };
1019
- r.subscribe(({ selected: c }) => {
1020
- if (!(h.length === 0 && c.length === 0)) {
1021
- if (h.length === 0 && c.length > 0)
1022
- h = c.map(({ id: d }) => i.getAnnotation(d));
1023
- else if (h.length > 0 && c.length === 0)
1024
- h.forEach((d) => {
1025
- const f = i.getAnnotation(d.id);
1026
- f && !X(f, d) && x("updateAnnotation", f, d);
1027
- }), h = [];
1068
+ r.subscribe(({ selected: y }) => {
1069
+ if (!(f.length === 0 && y.length === 0)) {
1070
+ if (f.length === 0 && y.length > 0)
1071
+ f = y.map(({ id: h }) => i.getAnnotation(h));
1072
+ else if (f.length > 0 && y.length === 0)
1073
+ f.forEach((h) => {
1074
+ const d = i.getAnnotation(h.id);
1075
+ d && !q(d, h) && g("updateAnnotation", d, h);
1076
+ }), f = [];
1028
1077
  else {
1029
- const d = new Set(h.map((b) => b.id)), f = new Set(c.map(({ id: b }) => b));
1030
- h.filter((b) => !f.has(b.id)).forEach((b) => {
1031
- const E = i.getAnnotation(b.id);
1032
- E && !X(E, b) && x("updateAnnotation", E, b);
1033
- }), h = [
1078
+ const h = new Set(f.map((l) => l.id)), d = new Set(y.map(({ id: l }) => l));
1079
+ f.filter((l) => !d.has(l.id)).forEach((l) => {
1080
+ const b = i.getAnnotation(l.id);
1081
+ b && !q(b, l) && g("updateAnnotation", b, l);
1082
+ }), f = [
1034
1083
  // Remove annotations that were deselected
1035
- ...h.filter((b) => f.has(b.id)),
1084
+ ...f.filter((l) => d.has(l.id)),
1036
1085
  // Add editable annotations that were selected
1037
- ...c.filter(({ id: b }) => !d.has(b)).map(({ id: b }) => i.getAnnotation(b))
1086
+ ...y.filter(({ id: l }) => !h.has(l)).map(({ id: l }) => i.getAnnotation(l))
1038
1087
  ];
1039
1088
  }
1040
- x("selectionChanged", h);
1089
+ g("selectionChanged", f);
1041
1090
  }
1042
- }), s.subscribe((c) => {
1043
- !v && c ? x("mouseEnterAnnotation", i.getAnnotation(c)) : v && !c ? x("mouseLeaveAnnotation", i.getAnnotation(v)) : v && c && (x("mouseLeaveAnnotation", i.getAnnotation(v)), x("mouseEnterAnnotation", i.getAnnotation(c))), v = c;
1044
- }), a == null || a.subscribe((c) => x("viewportIntersect", c.map((d) => i.getAnnotation(d)))), i.observe((c) => {
1045
- o && (l && clearTimeout(l), l = setTimeout(y, 1e3));
1046
- const { created: d, deleted: f } = c.changes;
1047
- (d || []).forEach((b) => x("createAnnotation", b)), (f || []).forEach((b) => x("deleteAnnotation", b)), (c.changes.updated || []).filter((b) => [
1048
- ...b.bodiesCreated || [],
1049
- ...b.bodiesDeleted || [],
1050
- ...b.bodiesUpdated || []
1051
- ].length > 0).forEach(({ oldValue: b, newValue: E }) => {
1052
- const L = h.find((B) => B.id === b.id) || b;
1053
- h = h.map((B) => B.id === b.id ? E : B), x("updateAnnotation", E, L);
1091
+ }), a.subscribe((y) => {
1092
+ !m && y ? g("mouseEnterAnnotation", i.getAnnotation(y)) : m && !y ? g("mouseLeaveAnnotation", i.getAnnotation(m)) : m && y && (g("mouseLeaveAnnotation", i.getAnnotation(m)), g("mouseEnterAnnotation", i.getAnnotation(y))), m = y;
1093
+ }), s == null || s.subscribe((y) => g("viewportIntersect", y.map((h) => i.getAnnotation(h)))), i.observe((y) => {
1094
+ const { created: h, deleted: d } = y.changes;
1095
+ (h || []).forEach((l) => g("createAnnotation", l)), (d || []).forEach((l) => g("deleteAnnotation", l)), (y.changes.updated || []).filter((l) => [
1096
+ ...l.bodiesCreated || [],
1097
+ ...l.bodiesDeleted || [],
1098
+ ...l.bodiesUpdated || []
1099
+ ].length > 0).forEach(({ oldValue: l, newValue: b }) => {
1100
+ const S = f.find((L) => L.id === l.id) || l;
1101
+ f = f.map((L) => L.id === l.id ? b : L), g("updateAnnotation", b, S);
1054
1102
  });
1055
- }, { origin: R.LOCAL }), i.observe((c) => {
1056
- if (h) {
1057
- const d = new Set(h.map((b) => b.id)), f = (c.changes.updated || []).filter(({ newValue: b }) => d.has(b.id)).map(({ newValue: b }) => b);
1058
- f.length > 0 && (h = h.map((b) => f.find((L) => L.id === b.id) || b));
1103
+ }, { origin: N.LOCAL }), i.observe((y) => {
1104
+ if (f) {
1105
+ const h = new Set(f.map((l) => l.id)), d = (y.changes.updated || []).filter(({ newValue: l }) => h.has(l.id)).map(({ newValue: l }) => l);
1106
+ d.length > 0 && (f = f.map((l) => d.find((S) => S.id === l.id) || l));
1059
1107
  }
1060
- }, { origin: R.REMOTE });
1061
- const w = (c) => (d) => {
1062
- const { updated: f } = d;
1063
- c ? (f || []).forEach((b) => x("updateAnnotation", b.oldValue, b.newValue)) : (f || []).forEach((b) => x("updateAnnotation", b.newValue, b.oldValue));
1108
+ }, { origin: N.REMOTE });
1109
+ const w = (y) => (h) => {
1110
+ const { updated: d } = h;
1111
+ y ? (d || []).forEach((l) => g("updateAnnotation", l.oldValue, l.newValue)) : (d || []).forEach((l) => g("updateAnnotation", l.newValue, l.oldValue));
1064
1112
  };
1065
- return e.on("undo", w(!0)), e.on("redo", w(!1)), { on: m, off: g, emit: x };
1066
- }, ze = (t) => (e) => e.reduce((n, o) => {
1113
+ return e.on("undo", w(!0)), e.on("redo", w(!1)), { on: c, off: p, emit: g };
1114
+ }, en = (t) => (e) => e.reduce((n, o) => {
1067
1115
  const { parsed: i, error: r } = t.parse(o);
1068
1116
  return r ? {
1069
1117
  parsed: n.parsed,
@@ -1074,83 +1122,83 @@ const De = 250, He = (t) => {
1074
1122
  } : {
1075
1123
  ...n
1076
1124
  };
1077
- }, { parsed: [], failed: [] }), Fe = (t, e, n) => {
1078
- const { store: o, selection: i } = t, r = (w) => {
1125
+ }, { parsed: [], failed: [] }), nn = (t, e, n) => {
1126
+ const { store: o, selection: i } = t, r = (h) => {
1079
1127
  if (n) {
1080
- const { parsed: c, error: d } = n.parse(w);
1081
- c ? o.addAnnotation(c, R.REMOTE) : console.error(d);
1128
+ const { parsed: d, error: l } = n.parse(h);
1129
+ d ? o.addAnnotation(d, N.REMOTE) : console.error(l);
1082
1130
  } else
1083
- o.addAnnotation(w, R.REMOTE);
1084
- }, s = () => i.clear(), a = () => o.clear(), u = (w) => {
1085
- const c = o.getAnnotation(w);
1086
- return n && c ? n.serialize(c) : c;
1087
- }, h = () => n ? o.all().map(n.serialize) : o.all(), v = () => {
1088
- var w;
1089
- const c = (((w = i.selected) == null ? void 0 : w.map((d) => d.id)) || []).map((d) => o.getAnnotation(d)).filter(Boolean);
1090
- return n ? c.map(n.serialize) : c;
1091
- }, l = (w, c = !0) => fetch(w).then((d) => d.json()).then((d) => (g(d, c), d)), m = (w) => {
1092
- if (typeof w == "string") {
1093
- const c = o.getAnnotation(w);
1094
- if (o.deleteAnnotation(w), c)
1095
- return n ? n.serialize(c) : c;
1131
+ o.addAnnotation(h, N.REMOTE);
1132
+ }, a = () => i.clear(), s = () => o.clear(), u = (h) => {
1133
+ const d = o.getAnnotation(h);
1134
+ return n && d ? n.serialize(d) : d;
1135
+ }, f = () => n ? o.all().map(n.serialize) : o.all(), m = () => {
1136
+ var h;
1137
+ const d = (((h = i.selected) == null ? void 0 : h.map((l) => l.id)) || []).map((l) => o.getAnnotation(l)).filter(Boolean);
1138
+ return n ? d.map(n.serialize) : d;
1139
+ }, c = (h, d = !0) => fetch(h).then((l) => l.json()).then((l) => (g(l, d), l)), p = (h) => {
1140
+ if (typeof h == "string") {
1141
+ const d = o.getAnnotation(h);
1142
+ if (o.deleteAnnotation(h), d)
1143
+ return n ? n.serialize(d) : d;
1096
1144
  } else {
1097
- const c = n ? n.parse(w).parsed : w;
1098
- if (c)
1099
- return o.deleteAnnotation(c), w;
1145
+ const d = n ? n.parse(h).parsed : h;
1146
+ if (d)
1147
+ return o.deleteAnnotation(d), h;
1100
1148
  }
1101
- }, g = (w, c = !0) => {
1149
+ }, g = (h, d = !0) => {
1102
1150
  if (n) {
1103
- const { parsed: d, failed: f } = ze(n)(w);
1104
- f.length > 0 && console.warn(`Discarded ${f.length} invalid annotations`, f), o.bulkAddAnnotation(d, c, R.REMOTE);
1151
+ const { parsed: l, failed: b } = en(n)(h);
1152
+ b.length > 0 && console.warn(`Discarded ${b.length} invalid annotations`, b), o.bulkAddAnnotation(l, d, N.REMOTE);
1105
1153
  } else
1106
- o.bulkAddAnnotation(w, c, R.REMOTE);
1107
- }, x = (w) => {
1108
- w ? i.setSelected(w) : i.clear();
1109
- }, y = (w) => {
1154
+ o.bulkAddAnnotation(h, d, N.REMOTE);
1155
+ }, w = (h, d) => {
1156
+ h ? i.setSelected(h, d) : i.clear();
1157
+ }, y = (h) => {
1110
1158
  if (n) {
1111
- const c = n.parse(w).parsed, d = n.serialize(o.getAnnotation(c.id));
1112
- return o.updateAnnotation(c), d;
1159
+ const d = n.parse(h).parsed, l = n.serialize(o.getAnnotation(d.id));
1160
+ return o.updateAnnotation(d), l;
1113
1161
  } else {
1114
- const c = o.getAnnotation(w.id);
1115
- return o.updateAnnotation(w), c;
1162
+ const d = o.getAnnotation(h.id);
1163
+ return o.updateAnnotation(h), d;
1116
1164
  }
1117
1165
  };
1118
1166
  return {
1119
1167
  addAnnotation: r,
1120
- cancelSelected: s,
1168
+ cancelSelected: a,
1121
1169
  canRedo: e.canRedo,
1122
1170
  canUndo: e.canUndo,
1123
- clearAnnotations: a,
1171
+ clearAnnotations: s,
1124
1172
  getAnnotationById: u,
1125
- getAnnotations: h,
1126
- getSelected: v,
1127
- loadAnnotations: l,
1173
+ getAnnotations: f,
1174
+ getSelected: m,
1175
+ loadAnnotations: c,
1128
1176
  redo: e.redo,
1129
- removeAnnotation: m,
1177
+ removeAnnotation: p,
1130
1178
  setAnnotations: g,
1131
- setSelected: x,
1179
+ setSelected: w,
1132
1180
  undo: e.undo,
1133
1181
  updateAnnotation: y
1134
1182
  };
1135
- }, We = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
1136
- let qe = (t) => crypto.getRandomValues(new Uint8Array(t)), je = (t, e, n) => {
1183
+ }, on = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
1184
+ let rn = (t) => crypto.getRandomValues(new Uint8Array(t)), sn = (t, e, n) => {
1137
1185
  let o = (2 << Math.log(t.length - 1) / Math.LN2) - 1, i = -~(1.6 * o * e / t.length);
1138
1186
  return (r = e) => {
1139
- let s = "";
1187
+ let a = "";
1140
1188
  for (; ; ) {
1141
- let a = n(i), u = i;
1189
+ let s = n(i), u = i;
1142
1190
  for (; u--; )
1143
- if (s += t[a[u] & o] || "", s.length === r)
1144
- return s;
1191
+ if (a += t[s[u] & o] || "", a.length === r)
1192
+ return a;
1145
1193
  }
1146
1194
  };
1147
- }, Ge = (t, e = 21) => je(t, e, qe), Ke = (t = 21) => {
1195
+ }, an = (t, e = 21) => sn(t, e, rn), cn = (t = 21) => {
1148
1196
  let e = "", n = crypto.getRandomValues(new Uint8Array(t));
1149
1197
  for (; t--; )
1150
- e += We[n[t] & 63];
1198
+ e += on[n[t] & 63];
1151
1199
  return e;
1152
1200
  };
1153
- const Qe = () => ({ isGuest: !0, id: Ge("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_", 20)() }), Je = (t) => {
1201
+ const ln = () => ({ isGuest: !0, id: an("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_", 20)() }), dn = (t) => {
1154
1202
  const e = JSON.stringify(t);
1155
1203
  let n = 0;
1156
1204
  for (let o = 0, i = e.length; o < i; o++) {
@@ -1158,107 +1206,112 @@ const Qe = () => ({ isGuest: !0, id: Ge("1234567890abcdefghijklmnopqrstuvwxyzABC
1158
1206
  n = (n << 5) - n + r, n |= 0;
1159
1207
  }
1160
1208
  return `${n}`;
1161
- }, kt = (t) => t ? typeof t == "object" ? { ...t } : t : void 0, Ze = (t, e) => (Array.isArray(t) ? t : [t]).map((n) => {
1162
- const { id: o, type: i, purpose: r, value: s, created: a, creator: u, ...h } = n;
1209
+ }, zt = (t) => t ? typeof t == "object" ? { ...t } : t : void 0, un = (t, e) => (Array.isArray(t) ? t : [t]).map((n) => {
1210
+ const { id: o, type: i, purpose: r, value: a, created: s, modified: u, creator: f, ...m } = n;
1163
1211
  return {
1164
- id: o || `temp-${Je(n)}`,
1212
+ id: o || `temp-${dn(n)}`,
1165
1213
  annotation: e,
1166
1214
  type: i,
1167
1215
  purpose: r,
1168
- value: s,
1169
- created: a ? new Date(a) : void 0,
1170
- creator: kt(u),
1171
- ...h
1216
+ value: a,
1217
+ creator: zt(f),
1218
+ created: s ? new Date(s) : void 0,
1219
+ updated: u ? new Date(u) : void 0,
1220
+ ...m
1172
1221
  };
1173
- }), tn = (t) => t.map((e) => {
1174
- var n, o;
1175
- const i = { ...e };
1176
- return delete i.annotation, (n = i.id) != null && n.startsWith("temp-") && delete i.id, { ...i, created: (o = i.created) == null ? void 0 : o.toISOString() };
1222
+ }), hn = (t) => t.map((e) => {
1223
+ var n;
1224
+ const { annotation: o, created: i, updated: r, ...a } = e, s = {
1225
+ ...a,
1226
+ created: i == null ? void 0 : i.toISOString(),
1227
+ modified: r == null ? void 0 : r.toISOString()
1228
+ };
1229
+ return (n = s.id) != null && n.startsWith("temp-") && delete s.id, s;
1177
1230
  });
1178
- Ke();
1179
- const An = (t, e) => ({
1180
- parse: (n) => on(n),
1181
- serialize: (n) => rn(n, t, e)
1182
- }), en = (t) => t.quote !== void 0 && t.start !== void 0 && t.end !== void 0, nn = (t) => {
1231
+ cn();
1232
+ const Un = (t, e) => ({
1233
+ parse: (n) => pn(n),
1234
+ serialize: (n) => mn(n, t, e)
1235
+ }), fn = (t) => t.quote !== void 0 && t.start !== void 0 && t.end !== void 0, gn = (t) => {
1183
1236
  const {
1184
1237
  id: e,
1185
1238
  creator: n,
1186
1239
  created: o,
1187
1240
  modified: i,
1188
1241
  target: r
1189
- } = t, s = Array.isArray(r) ? r : [r];
1190
- if (s.length === 0)
1242
+ } = t, a = Array.isArray(r) ? r : [r];
1243
+ if (a.length === 0)
1191
1244
  return { error: Error(`No targets found for annotation: ${t.id}`) };
1192
- const a = {
1193
- creator: kt(n),
1245
+ const s = {
1246
+ creator: zt(n),
1194
1247
  created: o ? new Date(o) : void 0,
1195
1248
  updated: i ? new Date(i) : void 0,
1196
1249
  annotation: e,
1197
1250
  selector: [],
1198
- styleClass: s[0].styleClass
1251
+ styleClass: a[0].styleClass
1199
1252
  };
1200
- for (const u of s) {
1201
- const v = (Array.isArray(u.selector) ? u.selector : [u.selector]).reduce((l, m) => {
1202
- switch (m.type) {
1253
+ for (const u of a) {
1254
+ const m = (Array.isArray(u.selector) ? u.selector : [u.selector]).reduce((c, p) => {
1255
+ switch (p.type) {
1203
1256
  case "TextQuoteSelector":
1204
- l.quote = m.exact;
1257
+ c.quote = p.exact;
1205
1258
  break;
1206
1259
  case "TextPositionSelector":
1207
- l.start = m.start, l.end = m.end;
1260
+ c.start = p.start, c.end = p.end;
1208
1261
  break;
1209
1262
  }
1210
- return l;
1263
+ return c;
1211
1264
  }, {});
1212
- if (en(v))
1213
- a.selector.push({ id: u.id, ...v });
1265
+ if (fn(m))
1266
+ s.selector.push({ id: u.id, ...m });
1214
1267
  else {
1215
- const l = [
1216
- v.start ? void 0 : "TextPositionSelector",
1217
- v.quote ? void 0 : "TextQuoteSelector"
1268
+ const c = [
1269
+ m.start ? void 0 : "TextPositionSelector",
1270
+ m.quote ? void 0 : "TextQuoteSelector"
1218
1271
  ].filter(Boolean);
1219
- return { error: Error(`Missing selector types: ${l.join(" and ")} for annotation: ${t.id}`) };
1272
+ return { error: Error(`Missing selector types: ${c.join(" and ")} for annotation: ${t.id}`) };
1220
1273
  }
1221
1274
  }
1222
- return { parsed: a };
1223
- }, on = (t) => {
1224
- const e = t.id || Vt(), {
1275
+ return { parsed: s };
1276
+ }, pn = (t) => {
1277
+ const e = t.id || Ht(), {
1225
1278
  creator: n,
1226
1279
  created: o,
1227
1280
  modified: i,
1228
1281
  body: r,
1229
- ...s
1230
- } = t, a = Ze(r, e), u = nn(t);
1282
+ ...a
1283
+ } = t, s = un(r, e), u = gn(t);
1231
1284
  return "error" in u ? { error: u.error } : {
1232
1285
  parsed: {
1233
- ...s,
1286
+ ...a,
1234
1287
  id: e,
1235
- bodies: a,
1288
+ bodies: s,
1236
1289
  target: u.parsed
1237
1290
  }
1238
1291
  };
1239
- }, rn = (t, e, n) => {
1292
+ }, mn = (t, e, n) => {
1240
1293
  const { bodies: o, target: i, ...r } = t, {
1241
- selector: s,
1242
- creator: a,
1294
+ selector: a,
1295
+ creator: s,
1243
1296
  created: u,
1244
- updated: h,
1245
- ...v
1246
- } = i, l = s.map((m) => {
1247
- const { quote: g, start: x, end: y, range: w } = m, { prefix: c, suffix: d } = Kt(w, n), f = [{
1297
+ updated: f,
1298
+ ...m
1299
+ } = i, c = a.map((p) => {
1300
+ const { quote: g, start: w, end: y, range: h } = p, { prefix: d, suffix: l } = oe(h, n), b = [{
1248
1301
  type: "TextQuoteSelector",
1249
1302
  exact: g,
1250
- prefix: c,
1251
- suffix: d
1303
+ prefix: d,
1304
+ suffix: l
1252
1305
  }, {
1253
1306
  type: "TextPositionSelector",
1254
- start: x,
1307
+ start: w,
1255
1308
  end: y
1256
1309
  }];
1257
1310
  return {
1258
- ...v,
1259
- id: m.id,
1311
+ ...m,
1312
+ id: p.id,
1260
1313
  source: e,
1261
- selector: f
1314
+ selector: b
1262
1315
  };
1263
1316
  });
1264
1317
  return {
@@ -1266,40 +1319,40 @@ const An = (t, e) => ({
1266
1319
  "@context": "http://www.w3.org/ns/anno.jsonld",
1267
1320
  id: t.id,
1268
1321
  type: "Annotation",
1269
- body: tn(t.bodies),
1270
- creator: a,
1322
+ body: hn(t.bodies),
1323
+ creator: s,
1271
1324
  created: u == null ? void 0 : u.toISOString(),
1272
- modified: h == null ? void 0 : h.toISOString(),
1273
- target: l
1325
+ modified: f == null ? void 0 : f.toISOString(),
1326
+ target: c
1274
1327
  };
1275
1328
  };
1276
- function sn(t, e, n, o, i) {
1277
- Yt(t, e, n || 0, o || t.length - 1, i || an);
1329
+ function bn(t, e, n, o, i) {
1330
+ Ft(t, e, n || 0, o || t.length - 1, i || vn);
1278
1331
  }
1279
- function Yt(t, e, n, o, i) {
1332
+ function Ft(t, e, n, o, i) {
1280
1333
  for (; o > n; ) {
1281
1334
  if (o - n > 600) {
1282
- var r = o - n + 1, s = e - n + 1, a = Math.log(r), u = 0.5 * Math.exp(2 * a / 3), h = 0.5 * Math.sqrt(a * u * (r - u) / r) * (s - r / 2 < 0 ? -1 : 1), v = Math.max(n, Math.floor(e - s * u / r + h)), l = Math.min(o, Math.floor(e + (r - s) * u / r + h));
1283
- Yt(t, e, v, l, i);
1335
+ var r = o - n + 1, a = e - n + 1, s = Math.log(r), u = 0.5 * Math.exp(2 * s / 3), f = 0.5 * Math.sqrt(s * u * (r - u) / r) * (a - r / 2 < 0 ? -1 : 1), m = Math.max(n, Math.floor(e - a * u / r + f)), c = Math.min(o, Math.floor(e + (r - a) * u / r + f));
1336
+ Ft(t, e, m, c, i);
1284
1337
  }
1285
- var m = t[e], g = n, x = o;
1286
- for (F(t, n, e), i(t[o], m) > 0 && F(t, n, o); g < x; ) {
1287
- for (F(t, g, x), g++, x--; i(t[g], m) < 0; )
1338
+ var p = t[e], g = n, w = o;
1339
+ for (j(t, n, e), i(t[o], p) > 0 && j(t, n, o); g < w; ) {
1340
+ for (j(t, g, w), g++, w--; i(t[g], p) < 0; )
1288
1341
  g++;
1289
- for (; i(t[x], m) > 0; )
1290
- x--;
1342
+ for (; i(t[w], p) > 0; )
1343
+ w--;
1291
1344
  }
1292
- i(t[n], m) === 0 ? F(t, n, x) : (x++, F(t, x, o)), x <= e && (n = x + 1), e <= x && (o = x - 1);
1345
+ i(t[n], p) === 0 ? j(t, n, w) : (w++, j(t, w, o)), w <= e && (n = w + 1), e <= w && (o = w - 1);
1293
1346
  }
1294
1347
  }
1295
- function F(t, e, n) {
1348
+ function j(t, e, n) {
1296
1349
  var o = t[e];
1297
1350
  t[e] = t[n], t[n] = o;
1298
1351
  }
1299
- function an(t, e) {
1352
+ function vn(t, e) {
1300
1353
  return t < e ? -1 : t > e ? 1 : 0;
1301
1354
  }
1302
- class ln {
1355
+ class yn {
1303
1356
  constructor(e = 9) {
1304
1357
  this._maxEntries = Math.max(4, e), this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4)), this.clear();
1305
1358
  }
@@ -1309,13 +1362,13 @@ class ln {
1309
1362
  search(e) {
1310
1363
  let n = this.data;
1311
1364
  const o = [];
1312
- if (!J(e, n))
1365
+ if (!nt(e, n))
1313
1366
  return o;
1314
1367
  const i = this.toBBox, r = [];
1315
1368
  for (; n; ) {
1316
- for (let s = 0; s < n.children.length; s++) {
1317
- const a = n.children[s], u = n.leaf ? i(a) : a;
1318
- J(e, u) && (n.leaf ? o.push(a) : at(e, u) ? this._all(a, o) : r.push(a));
1369
+ for (let a = 0; a < n.children.length; a++) {
1370
+ const s = n.children[a], u = n.leaf ? i(s) : s;
1371
+ nt(e, u) && (n.leaf ? o.push(s) : gt(e, u) ? this._all(s, o) : r.push(s));
1319
1372
  }
1320
1373
  n = r.pop();
1321
1374
  }
@@ -1323,14 +1376,14 @@ class ln {
1323
1376
  }
1324
1377
  collides(e) {
1325
1378
  let n = this.data;
1326
- if (!J(e, n))
1379
+ if (!nt(e, n))
1327
1380
  return !1;
1328
1381
  const o = [];
1329
1382
  for (; n; ) {
1330
1383
  for (let i = 0; i < n.children.length; i++) {
1331
- const r = n.children[i], s = n.leaf ? this.toBBox(r) : r;
1332
- if (J(e, s)) {
1333
- if (n.leaf || at(e, s))
1384
+ const r = n.children[i], a = n.leaf ? this.toBBox(r) : r;
1385
+ if (nt(e, a)) {
1386
+ if (n.leaf || gt(e, a))
1334
1387
  return !0;
1335
1388
  o.push(r);
1336
1389
  }
@@ -1365,21 +1418,21 @@ class ln {
1365
1418
  return e && this._insert(e, this.data.height - 1), this;
1366
1419
  }
1367
1420
  clear() {
1368
- return this.data = z([]), this;
1421
+ return this.data = W([]), this;
1369
1422
  }
1370
1423
  remove(e, n) {
1371
1424
  if (!e)
1372
1425
  return this;
1373
1426
  let o = this.data;
1374
- const i = this.toBBox(e), r = [], s = [];
1375
- let a, u, h;
1427
+ const i = this.toBBox(e), r = [], a = [];
1428
+ let s, u, f;
1376
1429
  for (; o || r.length; ) {
1377
- if (o || (o = r.pop(), u = r[r.length - 1], a = s.pop(), h = !0), o.leaf) {
1378
- const v = cn(e, o.children, n);
1379
- if (v !== -1)
1380
- return o.children.splice(v, 1), r.push(o), this._condense(r), this;
1430
+ if (o || (o = r.pop(), u = r[r.length - 1], s = a.pop(), f = !0), o.leaf) {
1431
+ const m = wn(e, o.children, n);
1432
+ if (m !== -1)
1433
+ return o.children.splice(m, 1), r.push(o), this._condense(r), this;
1381
1434
  }
1382
- !h && !o.leaf && at(o, i) ? (r.push(o), s.push(a), a = 0, u = o, o = o.children[0]) : u ? (a++, o = u.children[a], h = !1) : o = null;
1435
+ !f && !o.leaf && gt(o, i) ? (r.push(o), a.push(s), s = 0, u = o, o = o.children[0]) : u ? (s++, o = u.children[s], f = !1) : o = null;
1383
1436
  }
1384
1437
  return this;
1385
1438
  }
@@ -1406,36 +1459,36 @@ class ln {
1406
1459
  }
1407
1460
  _build(e, n, o, i) {
1408
1461
  const r = o - n + 1;
1409
- let s = this._maxEntries, a;
1410
- if (r <= s)
1411
- return a = z(e.slice(n, o + 1)), P(a, this.toBBox), a;
1412
- i || (i = Math.ceil(Math.log(r) / Math.log(s)), s = Math.ceil(r / Math.pow(s, i - 1))), a = z([]), a.leaf = !1, a.height = i;
1413
- const u = Math.ceil(r / s), h = u * Math.ceil(Math.sqrt(s));
1414
- Bt(e, n, o, h, this.compareMinX);
1415
- for (let v = n; v <= o; v += h) {
1416
- const l = Math.min(v + h - 1, o);
1417
- Bt(e, v, l, u, this.compareMinY);
1418
- for (let m = v; m <= l; m += u) {
1419
- const g = Math.min(m + u - 1, l);
1420
- a.children.push(this._build(e, m, g, i - 1));
1462
+ let a = this._maxEntries, s;
1463
+ if (r <= a)
1464
+ return s = W(e.slice(n, o + 1)), F(s, this.toBBox), s;
1465
+ i || (i = Math.ceil(Math.log(r) / Math.log(a)), a = Math.ceil(r / Math.pow(a, i - 1))), s = W([]), s.leaf = !1, s.height = i;
1466
+ const u = Math.ceil(r / a), f = u * Math.ceil(Math.sqrt(a));
1467
+ Ut(e, n, o, f, this.compareMinX);
1468
+ for (let m = n; m <= o; m += f) {
1469
+ const c = Math.min(m + f - 1, o);
1470
+ Ut(e, m, c, u, this.compareMinY);
1471
+ for (let p = m; p <= c; p += u) {
1472
+ const g = Math.min(p + u - 1, c);
1473
+ s.children.push(this._build(e, p, g, i - 1));
1421
1474
  }
1422
1475
  }
1423
- return P(a, this.toBBox), a;
1476
+ return F(s, this.toBBox), s;
1424
1477
  }
1425
1478
  _chooseSubtree(e, n, o, i) {
1426
1479
  for (; i.push(n), !(n.leaf || i.length - 1 === o); ) {
1427
- let r = 1 / 0, s = 1 / 0, a;
1480
+ let r = 1 / 0, a = 1 / 0, s;
1428
1481
  for (let u = 0; u < n.children.length; u++) {
1429
- const h = n.children[u], v = st(h), l = hn(e, h) - v;
1430
- l < s ? (s = l, r = v < r ? v : r, a = h) : l === s && v < r && (r = v, a = h);
1482
+ const f = n.children[u], m = ft(f), c = En(e, f) - m;
1483
+ c < a ? (a = c, r = m < r ? m : r, s = f) : c === a && m < r && (r = m, s = f);
1431
1484
  }
1432
- n = a || n.children[0];
1485
+ n = s || n.children[0];
1433
1486
  }
1434
1487
  return n;
1435
1488
  }
1436
1489
  _insert(e, n, o) {
1437
- const i = o ? e : this.toBBox(e), r = [], s = this._chooseSubtree(i, this.data, n, r);
1438
- for (s.children.push(e), q(s, i); n >= 0 && r[n].children.length > this._maxEntries; )
1490
+ const i = o ? e : this.toBBox(e), r = [], a = this._chooseSubtree(i, this.data, n, r);
1491
+ for (a.children.push(e), K(a, i); n >= 0 && r[n].children.length > this._maxEntries; )
1439
1492
  this._split(r, n), n--;
1440
1493
  this._adjustParentBBoxes(i, r, n);
1441
1494
  }
@@ -1443,50 +1496,50 @@ class ln {
1443
1496
  _split(e, n) {
1444
1497
  const o = e[n], i = o.children.length, r = this._minEntries;
1445
1498
  this._chooseSplitAxis(o, r, i);
1446
- const s = this._chooseSplitIndex(o, r, i), a = z(o.children.splice(s, o.children.length - s));
1447
- a.height = o.height, a.leaf = o.leaf, P(o, this.toBBox), P(a, this.toBBox), n ? e[n - 1].children.push(a) : this._splitRoot(o, a);
1499
+ const a = this._chooseSplitIndex(o, r, i), s = W(o.children.splice(a, o.children.length - a));
1500
+ s.height = o.height, s.leaf = o.leaf, F(o, this.toBBox), F(s, this.toBBox), n ? e[n - 1].children.push(s) : this._splitRoot(o, s);
1448
1501
  }
1449
1502
  _splitRoot(e, n) {
1450
- this.data = z([e, n]), this.data.height = e.height + 1, this.data.leaf = !1, P(this.data, this.toBBox);
1503
+ this.data = W([e, n]), this.data.height = e.height + 1, this.data.leaf = !1, F(this.data, this.toBBox);
1451
1504
  }
1452
1505
  _chooseSplitIndex(e, n, o) {
1453
- let i, r = 1 / 0, s = 1 / 0;
1454
- for (let a = n; a <= o - n; a++) {
1455
- const u = W(e, 0, a, this.toBBox), h = W(e, a, o, this.toBBox), v = fn(u, h), l = st(u) + st(h);
1456
- v < r ? (r = v, i = a, s = l < s ? l : s) : v === r && l < s && (s = l, i = a);
1506
+ let i, r = 1 / 0, a = 1 / 0;
1507
+ for (let s = n; s <= o - n; s++) {
1508
+ const u = G(e, 0, s, this.toBBox), f = G(e, s, o, this.toBBox), m = Sn(u, f), c = ft(u) + ft(f);
1509
+ m < r ? (r = m, i = s, a = c < a ? c : a) : m === r && c < a && (a = c, i = s);
1457
1510
  }
1458
1511
  return i || o - n;
1459
1512
  }
1460
1513
  // sorts node children by the best axis for split
1461
1514
  _chooseSplitAxis(e, n, o) {
1462
- const i = e.leaf ? this.compareMinX : dn, r = e.leaf ? this.compareMinY : un, s = this._allDistMargin(e, n, o, i), a = this._allDistMargin(e, n, o, r);
1463
- s < a && e.children.sort(i);
1515
+ const i = e.leaf ? this.compareMinX : xn, r = e.leaf ? this.compareMinY : An, a = this._allDistMargin(e, n, o, i), s = this._allDistMargin(e, n, o, r);
1516
+ a < s && e.children.sort(i);
1464
1517
  }
1465
1518
  // total margin of all possible split distributions where each node is at least m full
1466
1519
  _allDistMargin(e, n, o, i) {
1467
1520
  e.children.sort(i);
1468
- const r = this.toBBox, s = W(e, 0, n, r), a = W(e, o - n, o, r);
1469
- let u = Q(s) + Q(a);
1470
- for (let h = n; h < o - n; h++) {
1471
- const v = e.children[h];
1472
- q(s, e.leaf ? r(v) : v), u += Q(s);
1521
+ const r = this.toBBox, a = G(e, 0, n, r), s = G(e, o - n, o, r);
1522
+ let u = et(a) + et(s);
1523
+ for (let f = n; f < o - n; f++) {
1524
+ const m = e.children[f];
1525
+ K(a, e.leaf ? r(m) : m), u += et(a);
1473
1526
  }
1474
- for (let h = o - n - 1; h >= n; h--) {
1475
- const v = e.children[h];
1476
- q(a, e.leaf ? r(v) : v), u += Q(a);
1527
+ for (let f = o - n - 1; f >= n; f--) {
1528
+ const m = e.children[f];
1529
+ K(s, e.leaf ? r(m) : m), u += et(s);
1477
1530
  }
1478
1531
  return u;
1479
1532
  }
1480
1533
  _adjustParentBBoxes(e, n, o) {
1481
1534
  for (let i = o; i >= 0; i--)
1482
- q(n[i], e);
1535
+ K(n[i], e);
1483
1536
  }
1484
1537
  _condense(e) {
1485
1538
  for (let n = e.length - 1, o; n >= 0; n--)
1486
- e[n].children.length === 0 ? n > 0 ? (o = e[n - 1].children, o.splice(o.indexOf(e[n]), 1)) : this.clear() : P(e[n], this.toBBox);
1539
+ e[n].children.length === 0 ? n > 0 ? (o = e[n - 1].children, o.splice(o.indexOf(e[n]), 1)) : this.clear() : F(e[n], this.toBBox);
1487
1540
  }
1488
1541
  }
1489
- function cn(t, e, n) {
1542
+ function wn(t, e, n) {
1490
1543
  if (!n)
1491
1544
  return e.indexOf(t);
1492
1545
  for (let o = 0; o < e.length; o++)
@@ -1494,46 +1547,46 @@ function cn(t, e, n) {
1494
1547
  return o;
1495
1548
  return -1;
1496
1549
  }
1497
- function P(t, e) {
1498
- W(t, 0, t.children.length, e, t);
1550
+ function F(t, e) {
1551
+ G(t, 0, t.children.length, e, t);
1499
1552
  }
1500
- function W(t, e, n, o, i) {
1501
- i || (i = z(null)), i.minX = 1 / 0, i.minY = 1 / 0, i.maxX = -1 / 0, i.maxY = -1 / 0;
1553
+ function G(t, e, n, o, i) {
1554
+ i || (i = W(null)), i.minX = 1 / 0, i.minY = 1 / 0, i.maxX = -1 / 0, i.maxY = -1 / 0;
1502
1555
  for (let r = e; r < n; r++) {
1503
- const s = t.children[r];
1504
- q(i, t.leaf ? o(s) : s);
1556
+ const a = t.children[r];
1557
+ K(i, t.leaf ? o(a) : a);
1505
1558
  }
1506
1559
  return i;
1507
1560
  }
1508
- function q(t, e) {
1561
+ function K(t, e) {
1509
1562
  return t.minX = Math.min(t.minX, e.minX), t.minY = Math.min(t.minY, e.minY), t.maxX = Math.max(t.maxX, e.maxX), t.maxY = Math.max(t.maxY, e.maxY), t;
1510
1563
  }
1511
- function dn(t, e) {
1564
+ function xn(t, e) {
1512
1565
  return t.minX - e.minX;
1513
1566
  }
1514
- function un(t, e) {
1567
+ function An(t, e) {
1515
1568
  return t.minY - e.minY;
1516
1569
  }
1517
- function st(t) {
1570
+ function ft(t) {
1518
1571
  return (t.maxX - t.minX) * (t.maxY - t.minY);
1519
1572
  }
1520
- function Q(t) {
1573
+ function et(t) {
1521
1574
  return t.maxX - t.minX + (t.maxY - t.minY);
1522
1575
  }
1523
- function hn(t, e) {
1576
+ function En(t, e) {
1524
1577
  return (Math.max(e.maxX, t.maxX) - Math.min(e.minX, t.minX)) * (Math.max(e.maxY, t.maxY) - Math.min(e.minY, t.minY));
1525
1578
  }
1526
- function fn(t, e) {
1579
+ function Sn(t, e) {
1527
1580
  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);
1528
1581
  return Math.max(0, i - n) * Math.max(0, r - o);
1529
1582
  }
1530
- function at(t, e) {
1583
+ function gt(t, e) {
1531
1584
  return t.minX <= e.minX && t.minY <= e.minY && e.maxX <= t.maxX && e.maxY <= t.maxY;
1532
1585
  }
1533
- function J(t, e) {
1586
+ function nt(t, e) {
1534
1587
  return e.minX <= t.maxX && e.minY <= t.maxY && e.maxX >= t.minX && e.maxY >= t.minY;
1535
1588
  }
1536
- function z(t) {
1589
+ function W(t) {
1537
1590
  return {
1538
1591
  children: t,
1539
1592
  height: 1,
@@ -1544,333 +1597,350 @@ function z(t) {
1544
1597
  maxY: -1 / 0
1545
1598
  };
1546
1599
  }
1547
- function Bt(t, e, n, o, i) {
1600
+ function Ut(t, e, n, o, i) {
1548
1601
  const r = [e, n];
1549
1602
  for (; r.length; ) {
1550
1603
  if (n = r.pop(), e = r.pop(), n - e <= o)
1551
1604
  continue;
1552
- const s = e + Math.ceil((n - e) / o / 2) * o;
1553
- sn(t, s, e, n, i), r.push(e, s, s, n);
1605
+ const a = e + Math.ceil((n - e) / o / 2) * o;
1606
+ bn(t, a, e, n, i), r.push(e, a, a, n);
1554
1607
  }
1555
1608
  }
1556
- const gn = (t, e) => {
1557
- const n = new ln(), o = /* @__PURE__ */ new Map(), i = (c, d) => {
1558
- const f = c.selector.flatMap((E) => {
1559
- const L = _([E]) ? E.range : Mt(E, e).range;
1560
- return Array.from(L.getClientRects());
1561
- }), b = ee(f).map(({ left: E, top: L, right: B, bottom: p }) => new DOMRect(E - d.left, L - d.top, B - E, p - L));
1562
- return b.map((E) => {
1563
- const { x: L, y: B, width: p, height: S } = E;
1609
+ const Cn = (t, e) => {
1610
+ const n = new yn(), o = /* @__PURE__ */ new Map(), i = (d, l) => {
1611
+ const b = d.selector.flatMap((L) => {
1612
+ const C = $([L]) ? L.range : Dt(L, e).range;
1613
+ return Array.from(C.getClientRects());
1614
+ }), S = ce(b).map(({ left: L, top: C, right: B, bottom: T }) => new DOMRect(L - l.left, C - l.top, B - L, T - C));
1615
+ return S.map((L) => {
1616
+ const { x: C, y: B, width: T, height: O } = L;
1564
1617
  return {
1565
- minX: L,
1618
+ minX: C,
1566
1619
  minY: B,
1567
- maxX: L + p,
1568
- maxY: B + S,
1620
+ maxX: C + T,
1621
+ maxY: B + O,
1569
1622
  annotation: {
1570
- id: c.annotation,
1571
- rects: b
1623
+ id: d.annotation,
1624
+ rects: S
1572
1625
  }
1573
1626
  };
1574
1627
  });
1575
- }, r = () => [...o.values()], s = () => {
1628
+ }, r = () => [...o.values()], a = () => {
1576
1629
  n.clear(), o.clear();
1577
- }, a = (c) => {
1578
- const d = i(c, e.getBoundingClientRect());
1579
- d.forEach((f) => n.insert(f)), o.set(c.annotation, d);
1580
- }, u = (c) => {
1581
- const d = o.get(c.annotation);
1582
- d && (d.forEach((f) => n.remove(f)), o.delete(c.annotation));
1583
- }, h = (c) => {
1584
- u(c), a(c);
1585
- }, v = (c, d = !0) => {
1586
- d && s();
1587
- const f = e.getBoundingClientRect(), b = c.map((L) => ({ target: L, rects: i(L, f) }));
1588
- b.forEach(({ target: L, rects: B }) => o.set(L.annotation, B));
1589
- const E = b.reduce((L, { rects: B }) => [...L, ...B], []);
1590
- n.load(E);
1591
- }, l = (c, d) => {
1592
- const f = n.search({
1593
- minX: c,
1594
- minY: d,
1595
- maxX: c,
1596
- maxY: d
1597
- }), b = (E) => E.annotation.rects.reduce((L, B) => L + B.width * B.height, 0);
1598
- if (f.length > 0)
1599
- return f.sort((E, L) => b(E) - b(L)), f[0].annotation.id;
1600
- }, m = (c) => {
1601
- const d = g(c);
1602
- if (d.length === 0)
1630
+ }, s = (d) => {
1631
+ const l = i(d, e.getBoundingClientRect());
1632
+ l.forEach((b) => n.insert(b)), o.set(d.annotation, l);
1633
+ }, u = (d) => {
1634
+ const l = o.get(d.annotation);
1635
+ l && (l.forEach((b) => n.remove(b)), o.delete(d.annotation));
1636
+ }, f = (d) => {
1637
+ u(d), s(d);
1638
+ }, m = (d, l = !0) => {
1639
+ l && a();
1640
+ const b = e.getBoundingClientRect(), S = d.map((C) => ({ target: C, rects: i(C, b) }));
1641
+ S.forEach(({ target: C, rects: B }) => o.set(C.annotation, B));
1642
+ const L = S.reduce((C, { rects: B }) => [...C, ...B], []);
1643
+ n.load(L);
1644
+ }, c = (d, l) => {
1645
+ const b = n.search({
1646
+ minX: d,
1647
+ minY: l,
1648
+ maxX: d,
1649
+ maxY: l
1650
+ }), S = (L) => L.annotation.rects.reduce((C, B) => C + B.width * B.height, 0);
1651
+ if (b.length > 0)
1652
+ return b.sort((L, C) => S(L) - S(C)), b[0].annotation.id;
1653
+ }, p = (d) => {
1654
+ const l = g(d);
1655
+ if (l.length === 0)
1603
1656
  return;
1604
- let f = d[0].left, b = d[0].top, E = d[0].right, L = d[0].bottom;
1605
- for (let B = 1; B < d.length; B++) {
1606
- const p = d[B];
1607
- f = Math.min(f, p.left), b = Math.min(b, p.top), E = Math.max(E, p.right), L = Math.max(L, p.bottom);
1657
+ let b = l[0].left, S = l[0].top, L = l[0].right, C = l[0].bottom;
1658
+ for (let B = 1; B < l.length; B++) {
1659
+ const T = l[B];
1660
+ b = Math.min(b, T.left), S = Math.min(S, T.top), L = Math.max(L, T.right), C = Math.max(C, T.bottom);
1608
1661
  }
1609
- return new DOMRect(f, b, E - f, L - b);
1610
- }, g = (c) => {
1611
- const d = o.get(c);
1612
- return d ? d[0].annotation.rects : [];
1662
+ return new DOMRect(b, S, L - b, C - S);
1663
+ }, g = (d) => {
1664
+ const l = o.get(d);
1665
+ return l ? l[0].annotation.rects : [];
1613
1666
  };
1614
1667
  return {
1615
1668
  all: r,
1616
- clear: s,
1617
- getAt: l,
1618
- getAnnotationBounds: m,
1669
+ clear: a,
1670
+ getAt: c,
1671
+ getAnnotationBounds: p,
1619
1672
  getAnnotationRects: g,
1620
- getIntersecting: (c, d, f, b) => {
1621
- const E = n.search({ minX: c, minY: d, maxX: f, maxY: b }), L = new Set(E.reduce((B, p) => [...B, p.annotation.id], []));
1622
- return Array.from(L).map((B) => ({
1673
+ getIntersecting: (d, l, b, S) => {
1674
+ const L = n.search({ minX: d, minY: l, maxX: b, maxY: S }), C = new Set(L.reduce((B, T) => [...B, T.annotation.id], []));
1675
+ return Array.from(C).map((B) => ({
1623
1676
  annotation: t.getAnnotation(B),
1624
1677
  rects: g(B)
1625
1678
  })).filter((B) => !!B.annotation);
1626
1679
  },
1627
- insert: a,
1628
- recalculate: () => v(t.all().map((c) => c.target), !0),
1680
+ insert: s,
1681
+ recalculate: () => m(t.all().map((d) => d.target), !0),
1629
1682
  remove: u,
1630
- set: v,
1683
+ set: m,
1631
1684
  size: () => n.all().length,
1632
- update: h
1685
+ update: f
1633
1686
  };
1634
- }, pn = (t, e) => {
1635
- const n = _e(), o = gn(n, t), i = Te(n, e), r = Be(n), s = $e(), a = (y, w = R.LOCAL) => {
1636
- const c = tt(y, t), d = _(c.target.selector);
1637
- return d && n.addAnnotation(c, w), d;
1638
- }, u = (y, w = !0, c = R.LOCAL) => {
1639
- const d = y.map((b) => tt(b, t)), f = d.filter((b) => !_(b.target.selector));
1640
- return f.length > 0 ? (console.warn("Could not revive all targets for these annotations:", f), n.bulkAddAnnotation(d, w, c), f) : (n.bulkAddAnnotation(d, w, c), []);
1641
- }, h = (y, w = R.LOCAL) => {
1642
- const c = y.map((f) => tt(f, t)), d = c.filter((f) => !_(f.target.selector));
1643
- return d.length > 0 && console.warn("Could not revive all targets for these annotations:", d), c.forEach((f) => {
1644
- n.getAnnotation(f.id) ? n.updateAnnotation(f, w) : n.addAnnotation(f, w);
1645
- }), d;
1646
- }, v = (y, w = R.LOCAL) => {
1647
- const c = Z(y, t);
1648
- n.updateTarget(c, w);
1649
- }, l = (y, w = R.LOCAL) => {
1650
- const c = y.map((d) => Z(d, t));
1651
- n.bulkUpdateTargets(c, w);
1652
- }, m = (y, w) => {
1653
- const c = o.getAt(y, w);
1654
- return c ? n.getAnnotation(c) : void 0;
1655
- }, g = (y, w, c, d = 5) => {
1656
- const f = o.getAnnotationRects(y);
1657
- if (f.length !== 0) {
1658
- if (w && c) {
1659
- const b = f.find(({ top: E, right: L, bottom: B, left: p }) => w >= p - d && w <= L + d && c >= E - d && c <= B + d);
1660
- if (b)
1661
- return b;
1687
+ }, Ln = (t, e) => {
1688
+ const n = Ge(), o = Cn(n, t), i = ke(n, e), r = Ve(n), a = Ze(), s = (y, h = N.LOCAL) => {
1689
+ const d = rt(y, t), l = $(d.target.selector);
1690
+ return l && n.addAnnotation(d, h), l;
1691
+ }, u = (y, h = !0, d = N.LOCAL) => {
1692
+ const l = y.map((S) => rt(S, t)), b = l.filter((S) => !$(S.target.selector));
1693
+ return b.length > 0 ? (console.warn("Could not revive all targets for these annotations:", b), n.bulkAddAnnotation(l, h, d), b) : (n.bulkAddAnnotation(l, h, d), []);
1694
+ }, f = (y, h = N.LOCAL) => {
1695
+ const d = y.map((b) => rt(b, t)), l = d.filter((b) => !$(b.target.selector));
1696
+ return l.length > 0 && console.warn("Could not revive all targets for these annotations:", l), d.forEach((b) => {
1697
+ n.getAnnotation(b.id) ? n.updateAnnotation(b, h) : n.addAnnotation(b, h);
1698
+ }), l;
1699
+ }, m = (y, h = N.LOCAL) => {
1700
+ const d = it(y, t);
1701
+ n.updateTarget(d, h);
1702
+ }, c = (y, h = N.LOCAL) => {
1703
+ const d = y.map((l) => it(l, t));
1704
+ n.bulkUpdateTargets(d, h);
1705
+ }, p = (y, h) => {
1706
+ const d = o.getAt(y, h);
1707
+ return d ? n.getAnnotation(d) : void 0;
1708
+ }, g = (y, h, d, l = 5) => {
1709
+ const b = o.getAnnotationRects(y);
1710
+ if (b.length !== 0) {
1711
+ if (h && d) {
1712
+ const S = b.find(({ top: L, right: C, bottom: B, left: T }) => h >= T - l && h <= C + l && d >= L - l && d <= B + l);
1713
+ if (S)
1714
+ return S;
1662
1715
  }
1663
1716
  return o.getAnnotationBounds(y);
1664
1717
  }
1665
- }, x = () => o.recalculate();
1718
+ }, w = () => o.recalculate();
1666
1719
  return n.observe(({ changes: y }) => {
1667
- const w = (y.created || []).filter((f) => _(f.target.selector)), c = (y.deleted || []).filter((f) => _(f.target.selector)), d = (y.updated || []).filter((f) => _(f.newValue.target.selector));
1668
- w.length > 0 && o.set(w.map((f) => f.target), !1), (c == null ? void 0 : c.length) > 0 && c.forEach((f) => o.remove(f.target)), (d == null ? void 0 : d.length) > 0 && d.forEach(({ newValue: f }) => o.update(f.target));
1720
+ const h = (y.created || []).filter((b) => $(b.target.selector)), d = (y.deleted || []).filter((b) => $(b.target.selector)), l = (y.updated || []).filter((b) => $(b.newValue.target.selector));
1721
+ h.length > 0 && o.set(h.map((b) => b.target), !1), (d == null ? void 0 : d.length) > 0 && d.forEach((b) => o.remove(b.target)), (l == null ? void 0 : l.length) > 0 && l.forEach(({ newValue: b }) => o.update(b.target));
1669
1722
  }), {
1670
1723
  store: {
1671
1724
  ...n,
1672
- addAnnotation: a,
1725
+ addAnnotation: s,
1673
1726
  bulkAddAnnotation: u,
1674
- bulkUpdateTargets: l,
1675
- bulkUpsertAnnotations: h,
1727
+ bulkUpdateTargets: c,
1728
+ bulkUpsertAnnotations: f,
1676
1729
  getAnnotationBounds: g,
1677
- getAt: m,
1730
+ getAt: p,
1678
1731
  getIntersecting: o.getIntersecting,
1679
- recalculatePositions: x,
1680
- updateTarget: v
1732
+ recalculatePositions: w,
1733
+ updateTarget: m
1681
1734
  },
1682
1735
  selection: i,
1683
1736
  hover: r,
1684
- viewport: s
1737
+ viewport: a
1685
1738
  };
1686
- }, mn = () => {
1739
+ }, Bn = () => {
1687
1740
  const t = document.createElement("canvas");
1688
1741
  t.width = 2 * window.innerWidth, t.height = 2 * window.innerHeight, t.className = "r6o-highlight-layer presence";
1689
1742
  const e = t.getContext("2d");
1690
1743
  return e.scale(2, 2), e.translate(0.5, 0.5), t;
1691
- }, bn = (t, e, n = {}) => {
1692
- const o = mn(), i = o.getContext("2d");
1744
+ }, Tn = (t, e, n = {}) => {
1745
+ const o = Bn(), i = o.getContext("2d");
1693
1746
  t.appendChild(o);
1694
- const r = /* @__PURE__ */ new Map(), s = (l) => Array.from(r.entries()).filter(([m, g]) => g.presenceKey === l.presenceKey).map(([m, g]) => m);
1695
- return e.on("selectionChange", (l, m) => {
1696
- s(l).forEach((x) => r.delete(x)), m && m.forEach((x) => r.set(x, l));
1747
+ const r = /* @__PURE__ */ new Map(), a = (c) => Array.from(r.entries()).filter(([p, g]) => g.presenceKey === c.presenceKey).map(([p, g]) => p);
1748
+ return e.on("selectionChange", (c, p) => {
1749
+ a(c).forEach((w) => r.delete(w)), p && p.forEach((w) => r.set(w, c));
1697
1750
  }), {
1698
1751
  clear: () => {
1699
- const { width: l, height: m } = o;
1700
- i.clearRect(-0.5, -0.5, l + 1, m + 1);
1752
+ const { width: c, height: p } = o;
1753
+ i.clearRect(-0.5, -0.5, c + 1, p + 1);
1701
1754
  },
1702
1755
  destroy: () => {
1703
1756
  o.remove();
1704
1757
  },
1705
- paint: (l, m, g) => {
1758
+ paint: (c, p, g) => {
1706
1759
  n.font && (i.font = n.font);
1707
- const x = r.get(l.annotation.id);
1708
- if (x) {
1709
- const { height: y } = l.rects[0], w = l.rects[0].x + m.left, c = l.rects[0].y + m.top;
1710
- i.fillStyle = x.appearance.color, i.fillRect(w - 2, c - 2.5, 2, y + 5);
1711
- const d = i.measureText(x.appearance.label), f = d.width + 6, b = d.actualBoundingBoxAscent + d.actualBoundingBoxDescent + 8, E = d.fontBoundingBoxAscent ? 8 : 6.5;
1712
- return i.fillRect(w - 2, c - 2.5 - b, f, b), i.fillStyle = "#fff", i.fillText(x.appearance.label, w + 1, c - E), {
1713
- fill: x.appearance.color,
1760
+ const w = r.get(c.annotation.id);
1761
+ if (w) {
1762
+ const { height: y } = c.rects[0], h = c.rects[0].x + p.left, d = c.rects[0].y + p.top;
1763
+ i.fillStyle = w.appearance.color, i.fillRect(h - 2, d - 2.5, 2, y + 5);
1764
+ const l = i.measureText(w.appearance.label), b = l.width + 6, S = l.actualBoundingBoxAscent + l.actualBoundingBoxDescent + 8, L = l.fontBoundingBoxAscent ? 8 : 6.5;
1765
+ return i.fillRect(h - 2, d - 2.5 - S, b, S), i.fillStyle = "#fff", i.fillText(w.appearance.label, h + 1, d - L), {
1766
+ fill: w.appearance.color,
1714
1767
  fillOpacity: g ? 0.45 : 0.18
1715
1768
  };
1716
1769
  }
1717
1770
  },
1718
1771
  reset: () => {
1719
1772
  o.width = 2 * window.innerWidth, o.height = 2 * window.innerHeight;
1720
- const l = o.getContext("2d");
1721
- l.scale(2, 2), l.translate(0.5, 0.5);
1773
+ const c = o.getContext("2d");
1774
+ c.scale(2, 2), c.translate(0.5, 0.5);
1722
1775
  }
1723
1776
  };
1724
- }, _t = (t) => {
1777
+ }, Wt = (t) => {
1725
1778
  if (t === null)
1726
1779
  return document.scrollingElement;
1727
1780
  const { overflowY: e } = window.getComputedStyle(t);
1728
- return e !== "visible" && e !== "hidden" && t.scrollHeight > t.clientHeight ? t : _t(t.parentElement);
1729
- }, vn = (t, e) => (n) => {
1730
- const o = (r) => {
1731
- const s = i.getBoundingClientRect(), a = i.clientHeight, u = i.clientWidth, h = r.selector[0].range.getBoundingClientRect(), { width: v, height: l } = e.getAnnotationBounds(n.id), m = h.top - s.top, g = h.left - s.left, x = i.parentElement ? i.scrollTop : 0, y = i.parentElement ? i.scrollLeft : 0, w = m + x - (a - l) / 2, c = g + y - (u - v) / 2;
1732
- i.scroll({ top: w, left: c, behavior: "smooth" });
1733
- }, i = _t(t);
1734
- if (i) {
1735
- const r = e.getAnnotation(n.id), { range: s } = r.target.selector[0];
1781
+ return e !== "visible" && e !== "hidden" && t.scrollHeight > t.clientHeight ? t : Wt(t.parentElement);
1782
+ }, Rn = (t, e) => (n) => {
1783
+ const o = typeof n == "string" ? n : n.id, i = (a) => {
1784
+ const s = r.getBoundingClientRect(), u = r.clientHeight, f = r.clientWidth, m = a.selector[0].range.getBoundingClientRect(), { width: c, height: p } = e.getAnnotationBounds(o), g = m.top - s.top, w = m.left - s.left, y = r.parentElement ? r.scrollTop : 0, h = r.parentElement ? r.scrollLeft : 0, d = g + y - (u - p) / 2, l = w + h - (f - c) / 2;
1785
+ r.scroll({ top: d, left: l, behavior: "smooth" });
1786
+ }, r = Wt(t);
1787
+ if (r) {
1788
+ const a = e.getAnnotation(o), { range: s } = a.target.selector[0];
1736
1789
  if (s && !s.collapsed)
1737
- return o(r.target), !0;
1790
+ return i(a.target), !0;
1738
1791
  {
1739
- const a = Z(r.target, t), { range: u } = a.selector[0];
1740
- if (u && !u.collapsed)
1741
- return o(a), !0;
1792
+ const u = it(a.target, t), { range: f } = u.selector[0];
1793
+ if (f && !f.collapsed)
1794
+ return i(u), !0;
1742
1795
  }
1743
1796
  }
1744
1797
  return !1;
1745
- }, wn = (t, e, n) => {
1746
- const { store: o, selection: i } = e;
1747
- let r, s;
1748
- const a = (y) => r = y;
1749
- let u = !1, h;
1750
- const v = (y) => {
1751
- var c;
1752
- if (!u)
1798
+ }, Nn = (t, e) => ({
1799
+ ...t,
1800
+ annotationEnabled: t.annotationEnabled ?? e.annotationEnabled,
1801
+ user: t.user || e.user
1802
+ }), Mn = (t, e, n, o) => {
1803
+ const { store: i, selection: r } = e;
1804
+ let a, s;
1805
+ const u = (h) => a = h;
1806
+ let f = !1, m;
1807
+ const c = (h) => {
1808
+ var l;
1809
+ if (!f)
1753
1810
  return;
1754
- !((c = y.target.parentElement) != null && c.closest(H)) ? s = {
1755
- annotation: Vt(),
1811
+ !((l = h.target.parentElement) != null && l.closest(D)) ? s = {
1812
+ annotation: Ht(),
1756
1813
  selector: [],
1757
- creator: r,
1814
+ creator: a,
1758
1815
  created: /* @__PURE__ */ new Date()
1759
1816
  } : s = void 0;
1760
1817
  };
1761
- t.addEventListener("selectstart", v);
1762
- const l = ut((y) => {
1763
- const w = document.getSelection();
1764
- if (y.timeStamp - ((h == null ? void 0 : h.timeStamp) || y.timeStamp) < 1e3 && !s && v(h), w.isCollapsed || !u || !s)
1818
+ n && t.addEventListener("selectstart", c);
1819
+ const p = bt((h) => {
1820
+ var C, B;
1821
+ const d = document.getSelection();
1822
+ if (!!((B = (C = d.anchorNode) == null ? void 0 : C.parentElement) != null && B.closest(D))) {
1823
+ s = void 0;
1765
1824
  return;
1766
- const c = w.getRangeAt(0);
1767
- if (Jt(c))
1825
+ }
1826
+ if (h.timeStamp - ((m == null ? void 0 : m.timeStamp) || h.timeStamp) < 1e3 && !s && c(m), d.isCollapsed || !f || !s)
1768
1827
  return;
1769
- const d = qt(c.cloneRange());
1770
- (d.length !== s.selector.length || d.some((b, E) => {
1771
- var L;
1772
- return b.toString() !== ((L = s.selector[E]) == null ? void 0 : L.quote);
1828
+ const b = d.getRangeAt(0);
1829
+ if (re(b))
1830
+ return;
1831
+ const S = Zt(b.cloneRange());
1832
+ (S.length !== s.selector.length || S.some((T, O) => {
1833
+ var v;
1834
+ return T.toString() !== ((v = s.selector[O]) == null ? void 0 : v.quote);
1773
1835
  })) && (s = {
1774
1836
  ...s,
1775
- selector: d.map((b) => ne(b, t, n))
1776
- }, o.getAnnotation(s.annotation) ? o.updateTarget(s, R.LOCAL) : (o.addAnnotation({
1837
+ selector: S.map((T) => le(T, t, o)),
1838
+ updated: /* @__PURE__ */ new Date()
1839
+ }, i.getAnnotation(s.annotation) ? i.updateTarget(s, N.LOCAL) : (i.addAnnotation({
1777
1840
  id: s.annotation,
1778
1841
  bodies: [],
1779
1842
  target: s
1780
- }, R.LOCAL), i.clickSelect(s.annotation, h)));
1843
+ }, N.LOCAL), r.clickSelect(s.annotation, m)));
1781
1844
  });
1782
- document.addEventListener("selectionchange", l);
1783
- const m = (y) => {
1784
- const { target: w, timeStamp: c, offsetX: d, offsetY: f, type: b } = y;
1785
- h = { ...y, target: w, timeStamp: c, offsetX: d, offsetY: f, type: b }, u = y.button === 0;
1845
+ n && document.addEventListener("selectionchange", p);
1846
+ const g = (h) => {
1847
+ const { target: d, timeStamp: l, offsetX: b, offsetY: S, type: L } = h;
1848
+ m = { ...h, target: d, timeStamp: l, offsetX: b, offsetY: S, type: L }, f = h.button === 0;
1786
1849
  };
1787
- t.addEventListener("pointerdown", m);
1788
- const g = (y) => {
1789
- var f;
1790
- if (!!((f = y.target.parentElement) != null && f.closest(H)) || !u)
1850
+ t.addEventListener("pointerdown", g);
1851
+ const w = (h) => {
1852
+ var S;
1853
+ if (!!((S = h.target.parentElement) != null && S.closest(D)) || !f)
1791
1854
  return;
1792
- const c = () => {
1793
- const { x: b, y: E } = t.getBoundingClientRect(), L = o.getAt(y.clientX - b, y.clientY - E);
1794
- if (L) {
1795
- const { selected: B } = i;
1796
- (B.length !== 1 || B[0].id !== L.id) && i.clickSelect(L.id, y);
1855
+ const l = () => {
1856
+ const { x: L, y: C } = t.getBoundingClientRect(), B = i.getAt(h.clientX - L, h.clientY - C);
1857
+ if (B) {
1858
+ const { selected: T } = r;
1859
+ (T.length !== 1 || T[0].id !== B.id) && r.clickSelect(B.id, h);
1797
1860
  } else
1798
- i.isEmpty() || i.clear();
1799
- }, d = y.timeStamp - h.timeStamp;
1800
- document.getSelection().isCollapsed && d < 300 ? (s = void 0, c()) : s && i.clickSelect(s.annotation, y);
1861
+ r.isEmpty() || r.clear();
1862
+ }, b = h.timeStamp - m.timeStamp;
1863
+ document.getSelection().isCollapsed && b < 300 ? (s = void 0, l()) : s && r.clickSelect(s.annotation, h);
1801
1864
  };
1802
- return document.addEventListener("pointerup", g), {
1865
+ return document.addEventListener("pointerup", w), {
1803
1866
  destroy: () => {
1804
- t.removeEventListener("selectstart", v), document.removeEventListener("selectionchange", l), t.removeEventListener("pointerdown", m), document.removeEventListener("pointerup", g);
1867
+ t.removeEventListener("selectstart", c), document.removeEventListener("selectionchange", p), t.removeEventListener("pointerdown", g), document.removeEventListener("pointerup", w);
1805
1868
  },
1806
- setUser: a
1869
+ setUser: u
1807
1870
  };
1808
- }, Tt = "SPANS", En = (t, e = {}) => {
1809
- t.addEventListener("click", (E) => !E.target.closest("a") && E.preventDefault());
1810
- const n = pn(t, e.pointerAction), { selection: o, viewport: i } = n, r = n.store, s = He(r), a = Pe(
1811
- n,
1812
- s,
1813
- e.adapter
1814
- );
1815
- let u = Qe();
1816
- const h = e.renderer === "CSS_HIGHLIGHTS" ? CSS.highlights ? "CSS_HIGHLIGHTS" : Tt : e.renderer || Tt, v = h === "SPANS" ? ye(t, n, i) : h === "CSS_HIGHLIGHTS" ? ve(t, n, i) : h === "CANVAS" ? le(t, n, i) : void 0;
1817
- if (!v)
1818
- throw `Unknown renderer implementation: ${h}`;
1819
- console.log(`Using ${h} renderer`), e.style && v.setStyle(e.style);
1820
- const l = wn(t, n, e.offsetReferenceSelector);
1821
- return l.setUser(u), {
1822
- ...Fe(n, s, e.adapter),
1871
+ }, kt = "SPANS", kn = (t, e = {}) => {
1872
+ te(t);
1873
+ const n = Nn(e, {
1874
+ annotationEnabled: !0,
1875
+ user: ln()
1876
+ }), o = Ln(t, n.pointerAction), { selection: i, viewport: r } = o, a = o.store, s = Je(a), u = tn(o, s, n.adapter);
1877
+ let f = n.user;
1878
+ const m = n.renderer === "CSS_HIGHLIGHTS" ? CSS.highlights ? "CSS_HIGHLIGHTS" : kt : n.renderer || kt, c = m === "SPANS" ? Te(t, o, r) : m === "CSS_HIGHLIGHTS" ? Ce(t, o, r) : m === "CANVAS" ? pe(t, o, r) : void 0;
1879
+ if (!c)
1880
+ throw `Unknown renderer implementation: ${m}`;
1881
+ console.debug(`Using ${m} renderer`), n.style && c.setStyle(n.style);
1882
+ const p = Mn(t, o, n.annotationEnabled, n.offsetReferenceSelector);
1883
+ p.setUser(f);
1884
+ const g = nn(o, s, n.adapter), w = () => f, y = (b) => {
1885
+ f = b, p.setUser(b);
1886
+ }, h = (b) => {
1887
+ b && (c.setPainter(Tn(t, b, n.presence)), b.on("selectionChange", () => c.redraw()));
1888
+ }, d = (b) => {
1889
+ b ? i.setSelected(b) : i.clear();
1890
+ };
1891
+ return {
1892
+ ...g,
1823
1893
  destroy: () => {
1824
- v.destroy(), l.destroy(), s.destroy();
1894
+ c.destroy(), p.destroy(), s.destroy();
1825
1895
  },
1826
1896
  element: t,
1827
- getUser: () => u,
1828
- setFilter: (E) => v.setFilter(E),
1829
- setStyle: (E) => v.setStyle(E),
1830
- setUser: (E) => {
1831
- u = E, l.setUser(E);
1832
- },
1833
- setSelected: (E) => {
1834
- E ? o.setSelected(E) : o.clear();
1835
- },
1836
- setPresenceProvider: (E) => {
1837
- E && (v.setPainter(bn(t, E, e.presence)), E.on("selectionChange", () => v.redraw(!0)));
1838
- },
1839
- setVisible: (E) => v.setVisible(E),
1840
- on: a.on,
1841
- off: a.off,
1842
- scrollIntoView: vn(t, r),
1843
- state: n
1897
+ getUser: w,
1898
+ setFilter: c.setFilter.bind(c),
1899
+ setStyle: c.setStyle.bind(c),
1900
+ redraw: c.redraw.bind(c),
1901
+ setUser: y,
1902
+ setSelected: d,
1903
+ setPresenceProvider: h,
1904
+ setVisible: c.setVisible.bind(c),
1905
+ on: u.on,
1906
+ off: u.off,
1907
+ scrollIntoView: Rn(t, a),
1908
+ state: o
1844
1909
  };
1845
1910
  };
1846
1911
  export {
1847
- dt as DEFAULT_SELECTED_STYLE,
1848
- D as DEFAULT_STYLE,
1849
- H as NOT_ANNOTATABLE_SELECTOR,
1850
- R as Origin,
1851
- An as W3CTextFormat,
1852
- le as createCanvasRenderer,
1853
- ve as createHighlightsRenderer,
1854
- be as createRenderer,
1855
- ye as createSpansRenderer,
1856
- En as createTextAnnotator,
1857
- pn as createTextAnnotatorState,
1858
- ut as debounce,
1859
- xn as getAnnotatableFragment,
1860
- yn as getClientRectsPonyfill,
1861
- Kt as getQuoteContext,
1862
- lt as getRangeAnnotatableContents,
1863
- _ as isRevived,
1864
- Jt as isWhitespaceOrEmpty,
1865
- ee as mergeClientRects,
1866
- zt as paint,
1867
- on as parseW3CTextAnnotation,
1868
- ne as rangeToSelector,
1869
- tt as reviveAnnotation,
1870
- Mt as reviveSelector,
1871
- Z as reviveTarget,
1872
- rn as serializeW3CTextAnnotation,
1873
- qt as splitAnnotatableRanges,
1874
- Qt as whitespaceOrEmptyRegex
1912
+ ot as DEFAULT_SELECTED_STYLE,
1913
+ P as DEFAULT_STYLE,
1914
+ Yt as NOT_ANNOTATABLE_CLASS,
1915
+ D as NOT_ANNOTATABLE_SELECTOR,
1916
+ N as Origin,
1917
+ Ue as PointerSelectAction,
1918
+ Un as W3CTextFormat,
1919
+ te as cancelSingleClickEvents,
1920
+ Vn as createBody,
1921
+ pe as createCanvasRenderer,
1922
+ Ce as createHighlightsRenderer,
1923
+ Se as createRenderer,
1924
+ Te as createSpansRenderer,
1925
+ kn as createTextAnnotator,
1926
+ Ln as createTextAnnotatorState,
1927
+ bt as debounce,
1928
+ Nn as fillDefaults,
1929
+ On as getAnnotatableFragment,
1930
+ In as getClientRectsPonyfill,
1931
+ oe as getQuoteContext,
1932
+ pt as getRangeAnnotatableContents,
1933
+ $ as isRevived,
1934
+ re as isWhitespaceOrEmpty,
1935
+ ce as mergeClientRects,
1936
+ Kt as paint,
1937
+ pn as parseW3CTextAnnotation,
1938
+ le as rangeToSelector,
1939
+ rt as reviveAnnotation,
1940
+ Dt as reviveSelector,
1941
+ it as reviveTarget,
1942
+ mn as serializeW3CTextAnnotation,
1943
+ Zt as splitAnnotatableRanges,
1944
+ ie as whitespaceOrEmptyRegex
1875
1945
  };
1876
1946
  //# sourceMappingURL=text-annotator.es.js.map