@recogito/text-annotator 3.0.0-rc.43 → 3.0.0-rc.45

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