@recogito/text-annotator 3.0.0-rc.18 → 3.0.0-rc.19

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