@soomo/text-annotator 3.0.0-staging.3 → 3.0.0-staging.30

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