@soomo/text-annotator 3.0.0-staging.4 → 3.0.0-staging.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/src/SelectionHandler.d.ts +5 -3
  2. package/dist/src/TextAnnotator.d.ts +7 -5
  3. package/dist/src/TextAnnotatorOptions.d.ts +7 -4
  4. package/dist/src/api/scrollIntoView.d.ts +2 -2
  5. package/dist/src/highlight/Highlight.d.ts +1 -1
  6. package/dist/src/highlight/HighlightPainter.d.ts +2 -2
  7. package/dist/src/highlight/HighlightStyle.d.ts +2 -2
  8. package/dist/src/highlight/baseRenderer.d.ts +5 -5
  9. package/dist/src/highlight/canvas/canvasRenderer.d.ts +1 -1
  10. package/dist/src/highlight/highlights/highlightsRenderer.d.ts +2 -2
  11. package/dist/src/highlight/span/spansRenderer.d.ts +1 -1
  12. package/dist/src/highlight/viewport.d.ts +1 -1
  13. package/dist/src/index.d.ts +2 -3
  14. package/dist/src/model/w3c/W3CTextFormatAdapter.d.ts +2 -2
  15. package/dist/src/presence/PresencePainter.d.ts +2 -2
  16. package/dist/src/state/TextAnnotationStore.d.ts +7 -3
  17. package/dist/src/state/TextAnnotatorState.d.ts +3 -3
  18. package/dist/src/state/spatialTree.d.ts +8 -3
  19. package/dist/src/utils/cancelSingleClickEvents.d.ts +6 -0
  20. package/dist/src/utils/cloneEvents.d.ts +11 -0
  21. package/dist/src/utils/index.d.ts +5 -0
  22. package/dist/src/utils/mergeClientRects.d.ts +1 -0
  23. package/dist/src/utils/normalizeRects.d.ts +2 -0
  24. package/dist/src/utils/programmaticallyFocusable.d.ts +6 -0
  25. package/dist/src/utils/trimRangeToContainer.d.ts +1 -0
  26. package/dist/text-annotator.css +1 -1
  27. package/dist/text-annotator.es.js +1668 -1152
  28. package/dist/text-annotator.es.js.map +1 -1
  29. package/dist/text-annotator.umd.js +2 -2
  30. package/dist/text-annotator.umd.js.map +1 -1
  31. package/package.json +14 -12
@@ -1,37 +1,31 @@
1
- const H = {
1
+ const q = {
2
2
  fill: "rgb(0, 128, 255)",
3
3
  fillOpacity: 0.18
4
- }, dt = {
4
+ }, gt = {
5
5
  fill: "rgb(0, 128, 255)",
6
6
  fillOpacity: 0.45
7
- }, zt = (t, e, n, o, i) => {
8
- var s;
9
- const r = n ? typeof n == "function" ? n(t.annotation, t.state, i) : n : (s = t.state) != null && s.selected ? dt : H;
10
- return o && o.paint(t, e) || r;
11
- }, ut = (t, e = 10) => {
12
- let n;
13
- return (...o) => {
14
- clearTimeout(n), n = setTimeout(() => t.apply(void 0, o), e);
15
- };
16
- }, Rt = "not-annotatable", X = `.${Rt}`, Ft = (t) => {
7
+ }, xe = (t, e, n, o, i) => {
8
+ var a, r;
9
+ const s = n ? typeof n == "function" ? n(t.annotation, t.state, i) || ((a = t.state) != null && a.selected ? gt : q) : n : (r = t.state) != null && r.selected ? gt : q;
10
+ return o && o.paint(t, e) || s;
11
+ }, ne = "not-annotatable", H = `.${ne}`, ve = (t) => {
17
12
  var n;
18
13
  const e = t.commonAncestorContainer;
19
- return e instanceof HTMLElement ? !e.closest(X) : !((n = e.parentElement) != null && n.closest(X));
20
- }, Wt = function* (t) {
14
+ return e instanceof HTMLElement ? !e.closest(H) : !((n = e.parentElement) != null && n.closest(H));
15
+ }, Ae = function* (t) {
21
16
  const e = document.createNodeIterator(
22
17
  t.commonAncestorContainer,
23
18
  NodeFilter.SHOW_ELEMENT,
24
- (o) => o instanceof HTMLElement && o.classList.contains(Rt) && !o.parentElement.closest(X) && t.intersectsNode(o) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP
19
+ (o) => o instanceof HTMLElement && o.classList.contains(ne) && !o.parentElement.closest(H) && t.intersectsNode(o) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP
25
20
  );
26
21
  let n;
27
22
  for (; n = e.nextNode(); )
28
23
  n instanceof HTMLElement && (yield n);
29
- }, qt = (t) => {
30
- if (!Ft(t))
31
- return [];
24
+ }, Ee = (t) => {
25
+ if (!ve(t)) return [];
32
26
  const e = [];
33
27
  let n = null;
34
- for (const o of Wt(t)) {
28
+ for (const o of Ae(t)) {
35
29
  let i;
36
30
  n ? (i = document.createRange(), i.setStartAfter(n), i.setEndBefore(o)) : (i = t.cloneRange(), i.setEndBefore(o)), i.collapsed || e.push(i), n = o;
37
31
  }
@@ -40,13 +34,23 @@ const H = {
40
34
  o.setStartAfter(n), o.collapsed || e.push(o);
41
35
  }
42
36
  return e.length > 0 ? e : [t];
43
- }, lt = (t) => {
37
+ }, Bt = (t) => {
44
38
  const e = t.cloneContents();
45
- return e.querySelectorAll(X).forEach((n) => n.remove()), e;
46
- }, xn = (t) => {
39
+ return e.querySelectorAll(H).forEach((n) => n.remove()), e;
40
+ }, Se = (t) => t.addEventListener("click", (e) => {
41
+ // Allow clicks within not-annotatable elements
42
+ !e.target.closest(H) && !e.target.closest("a") && e.preventDefault();
43
+ }), Ce = (t) => {
44
+ !t.hasAttribute("tabindex") && t.tabIndex < 0 && t.setAttribute("tabindex", "-1"), t.classList.add("no-focus-outline");
45
+ }, Nt = (t, e = 10) => {
46
+ let n;
47
+ return (...o) => {
48
+ clearTimeout(n), n = setTimeout(() => t.apply(void 0, o), e);
49
+ };
50
+ }, wo = (t) => {
47
51
  const e = t.cloneContents();
48
- return e.querySelectorAll(X).forEach((n) => n.remove()), e;
49
- }, gt = (t, e) => {
52
+ return e.querySelectorAll(H).forEach((n) => n.remove()), e;
53
+ }, Vt = (t, e) => {
50
54
  const n = document.createNodeIterator(e);
51
55
  let o = 0, i = n.nextNode();
52
56
  for (; i !== null; ) {
@@ -54,76 +58,76 @@ const H = {
54
58
  return o;
55
59
  o += 1, i = n.nextNode();
56
60
  }
57
- }, pt = (t, e) => {
61
+ }, Yt = (t, e) => {
58
62
  const n = document.createNodeIterator(e);
59
63
  let o = null;
60
64
  for (let i = 0; i < t + 1; i++)
61
65
  o = n.nextNode();
62
66
  return o;
63
- }, jt = (t) => {
67
+ }, Le = (t) => {
64
68
  const {
65
69
  commonAncestorContainer: e,
66
70
  startContainer: n,
67
71
  startOffset: o,
68
72
  endContainer: i,
69
- endOffset: r
70
- } = t, s = Array.from(e.childNodes).map((l) => {
71
- const m = l.cloneNode(!0);
72
- return l.nodeName === "CANVAS" ? l : m;
73
- }), a = gt(n, e), u = gt(i, e), h = () => {
74
- const l = e;
75
- l.replaceChildren(...s);
76
- const m = pt(a, l), g = pt(u, l);
77
- return t.setStart(m, o), t.setEnd(g, r), t;
78
- }, v = (l) => {
73
+ endOffset: s
74
+ } = t, a = Array.from(e.childNodes).map((c) => {
75
+ const m = c.cloneNode(!0);
76
+ return c.nodeName === "CANVAS" ? c : m;
77
+ }), r = Vt(n, e), l = Vt(i, e), f = () => {
78
+ const c = e;
79
+ c.replaceChildren(...a);
80
+ const m = Yt(r, c), d = Yt(l, c);
81
+ return t.setStart(m, o), t.setEnd(d, s), t;
82
+ }, p = (c) => {
79
83
  const m = document.createElement("SPAN");
80
- return l.surroundContents(m), m;
84
+ return c.surroundContents(m), m;
81
85
  };
82
86
  if (n === i)
83
87
  throw "Not implemented";
84
88
  {
85
- const l = document.createRange();
86
- l.selectNodeContents(n), l.setStart(n, o);
87
- const m = v(l), g = document.createRange();
88
- g.selectNode(i), g.setEnd(i, r);
89
- const x = v(g), w = Gt(t).reverse().map((c) => {
90
- var f;
91
- const d = document.createElement("SPAN");
92
- return (f = c.parentNode) == null || f.insertBefore(d, c), d.appendChild(c), d;
89
+ const c = document.createRange();
90
+ c.selectNodeContents(n), c.setStart(n, o);
91
+ const m = p(c), d = document.createRange();
92
+ d.selectNode(i), d.setEnd(i, s);
93
+ const x = p(d), y = Oe(t).reverse().map((h) => {
94
+ var b;
95
+ const u = document.createElement("SPAN");
96
+ return (b = h.parentNode) == null || b.insertBefore(u, h), u.appendChild(h), u;
93
97
  });
94
- return { unwrap: h, nodes: [m, ...w, x] };
98
+ return { unwrap: f, nodes: [m, ...y, x] };
95
99
  }
96
- }, Gt = (t) => {
100
+ }, Oe = (t) => {
97
101
  const {
98
102
  commonAncestorContainer: e,
99
103
  startContainer: n,
100
104
  endContainer: o
101
105
  } = t, i = document.createNodeIterator(e, NodeFilter.SHOW_TEXT);
102
- let r = i.nextNode(), s = !1;
103
- const a = [];
104
- for (; r != null; )
105
- r === o && (s = !1), s && a.push(r), r === n && (s = !0), r = i.nextNode();
106
- return a;
107
- }, yn = (t) => {
106
+ let s = i.nextNode(), a = !1;
107
+ const r = [];
108
+ for (; s != null; )
109
+ s === o && (a = !1), a && r.push(s), s === n && (a = !0), s = i.nextNode();
110
+ return r;
111
+ }, xo = (t) => {
108
112
  const { startContainer: e, endContainer: n } = t;
109
113
  if (e === n)
110
114
  return Array.from(t.getClientRects());
111
115
  {
112
- const { unwrap: o, nodes: i } = jt(t), r = i.reduce((s, a) => [...s, ...a.getClientRects()], []);
113
- return o(), r;
116
+ const { unwrap: o, nodes: i } = Le(t), s = i.reduce((a, r) => [...a, ...r.getClientRects()], []);
117
+ return o(), s;
114
118
  }
115
- }, Kt = (t, e, n = 10, o) => {
116
- const i = o ? t.startContainer.parentElement.closest(o) : e, r = document.createRange();
117
- r.setStart(i, 0), r.setEnd(t.startContainer, t.startOffset);
118
- const s = lt(r).textContent, a = document.createRange();
119
- a.setStart(t.endContainer, t.endOffset), i === document.body ? a.setEnd(i, i.childNodes.length) : a.setEndAfter(i);
120
- const u = lt(a).textContent;
119
+ }, Te = (t, e, n = 10, o) => {
120
+ const i = o ? t.startContainer.parentElement.closest(o) : e, s = document.createRange();
121
+ s.setStart(i, 0), s.setEnd(t.startContainer, t.startOffset);
122
+ const a = Bt(s).textContent, r = document.createRange();
123
+ r.setStart(t.endContainer, t.endOffset), i === document.body ? r.setEnd(i, i.childNodes.length) : r.setEndAfter(i);
124
+ const l = Bt(r).textContent;
121
125
  return {
122
- prefix: s.substring(s.length - n),
123
- suffix: u.substring(0, n)
126
+ prefix: a.substring(a.length - n),
127
+ suffix: l.substring(0, n)
124
128
  };
125
- }, Qt = /^\s*$/, Jt = (t) => Qt.test(t.toString()), _ = (t) => t.every((e) => e.range instanceof Range && !e.range.collapsed), Zt = (t, e) => {
126
- const n = (r) => Math.round(r * 10) / 10, o = {
129
+ }, Re = /^\s*$/, Be = (t) => Re.test(t.toString()), W = (t) => t.every((e) => e.range instanceof Range && !e.range.collapsed), Me = (t, e) => {
130
+ const n = (s) => Math.round(s * 10) / 10, o = {
127
131
  top: n(t.top),
128
132
  bottom: n(t.bottom),
129
133
  left: n(t.left),
@@ -146,311 +150,371 @@ const H = {
146
150
  return "block-contains";
147
151
  } else if (o.top >= i.top && o.bottom <= i.bottom && o.left >= i.left && o.right <= i.right)
148
152
  return "block-is-contained";
149
- }, te = (t, e) => {
150
- const n = Math.min(t.left, e.left), o = Math.max(t.right, e.right), i = Math.min(t.top, e.top), r = Math.max(t.bottom, e.bottom);
151
- return new DOMRect(n, i, o - n, r - i);
152
- }, ee = (t) => t.reduce((e, n) => {
153
+ }, ke = (t, e) => {
154
+ const n = Math.min(t.left, e.left), o = Math.max(t.right, e.right), i = Math.min(t.top, e.top), s = Math.max(t.bottom, e.bottom);
155
+ return new DOMRect(n, i, o - n, s - i);
156
+ }, Ne = (t) => t.reduce((e, n) => {
153
157
  if (n.width === 0 || n.height === 0)
154
158
  return e;
155
159
  let o = [...e], i = !1;
156
- for (const r of e) {
157
- const s = Zt(n, r);
158
- if (s === "inline-adjacent") {
159
- o = o.map((a) => a === r ? te(n, r) : a), i = !0;
160
+ for (const s of e) {
161
+ const a = Me(n, s);
162
+ if (a === "inline-adjacent") {
163
+ o = o.map((r) => r === s ? ke(n, s) : r), i = !0;
160
164
  break;
161
- } else if (s === "inline-contains") {
162
- o = o.map((a) => a === r ? n : a), i = !0;
165
+ } else if (a === "inline-contains") {
166
+ o = o.map((r) => r === s ? n : r), i = !0;
163
167
  break;
164
- } else if (s === "inline-is-contained") {
168
+ } else if (a === "inline-is-contained") {
165
169
  i = !0;
166
170
  break;
167
- } else if (s === "block-contains" || s === "block-is-contained") {
168
- n.width < r.width && (o = o.map((a) => a === r ? n : a)), i = !0;
171
+ } else if (a === "block-contains" || a === "block-is-contained") {
172
+ n.width < s.width && (o = o.map((r) => r === s ? n : r)), i = !0;
169
173
  break;
170
174
  }
171
175
  }
172
176
  return i ? o : [...o, n];
173
- }, []), ne = (t, e, n) => {
177
+ }, []), vo = (t) => ({
178
+ length: t.length,
179
+ item: (e) => t[e],
180
+ [Symbol.iterator]: function* () {
181
+ for (let e = 0; e < this.length; e++)
182
+ yield this.item(e);
183
+ }
184
+ }), Ie = (t, e, n) => {
174
185
  const o = document.createRange(), i = n ? t.startContainer.parentElement.closest(n) : e;
175
186
  o.setStart(i, 0), o.setEnd(t.startContainer, t.startOffset);
176
- const r = lt(o).textContent, s = t.toString(), a = r.length || 0, u = a + s.length;
177
- return n ? { quote: s, start: a, end: u, range: t, offsetReference: i } : { quote: s, start: a, end: u, range: t };
178
- }, Mt = (t, e) => {
179
- var v, l;
180
- const { start: n, end: o } = t, i = t.offsetReference || e, r = document.createNodeIterator(
187
+ const s = Bt(o).textContent, a = t.toString(), r = s.length || 0, l = r + a.length;
188
+ return n ? { quote: a, start: r, end: l, range: t, offsetReference: i } : { quote: a, start: r, end: l, range: t };
189
+ }, oe = (t, e) => {
190
+ var p, c;
191
+ const { start: n, end: o } = t, i = t.offsetReference || e, s = document.createNodeIterator(
181
192
  e,
182
193
  NodeFilter.SHOW_TEXT,
183
194
  (m) => {
184
- var g;
185
- return (g = m.parentElement) != null && g.closest(X) ? NodeFilter.FILTER_SKIP : NodeFilter.FILTER_ACCEPT;
195
+ var d;
196
+ return (d = m.parentElement) != null && d.closest(H) ? NodeFilter.FILTER_SKIP : NodeFilter.FILTER_ACCEPT;
186
197
  }
187
198
  );
188
- let s = 0;
189
- const a = document.createRange();
190
- let u = r.nextNode();
191
- u === null && console.error("Could not revive annotation target. Content missing.");
192
- let h = !i;
193
- for (; u !== null; ) {
194
- if (h || (h = i == null ? void 0 : i.contains(u)), h) {
195
- const m = ((v = u.textContent) == null ? void 0 : v.length) || 0;
196
- if (s + m > n) {
197
- a.setStart(u, n - s);
199
+ let a = 0;
200
+ const r = document.createRange();
201
+ let l = s.nextNode();
202
+ l === null && console.error("Could not revive annotation target. Content missing.");
203
+ let f = !i;
204
+ for (; l !== null; ) {
205
+ if (f || (f = i == null ? void 0 : i.contains(l)), f) {
206
+ const m = ((p = l.textContent) == null ? void 0 : p.length) || 0;
207
+ if (a + m > n) {
208
+ r.setStart(l, n - a);
198
209
  break;
199
210
  }
200
- s += m;
211
+ a += m;
201
212
  }
202
- u = r.nextNode();
213
+ l = s.nextNode();
203
214
  }
204
- for (; u !== null; ) {
205
- const m = ((l = u.textContent) == null ? void 0 : l.length) || 0;
206
- if (s + m >= o) {
207
- a.setEnd(u, o - s);
215
+ for (; l !== null; ) {
216
+ const m = ((c = l.textContent) == null ? void 0 : c.length) || 0;
217
+ if (a + m >= o) {
218
+ r.setEnd(l, o - a);
208
219
  break;
209
220
  }
210
- s += m, u = r.nextNode();
221
+ a += m, l = s.nextNode();
211
222
  }
212
223
  return {
213
224
  ...t,
214
- range: a
225
+ range: r
215
226
  };
216
- }, Z = (t, e) => _(t.selector) ? t : {
227
+ }, mt = (t, e) => W(t.selector) ? t : {
217
228
  ...t,
218
- selector: t.selector.map((n) => n.range instanceof Range && !n.range.collapsed ? n : Mt(n, e))
219
- }, tt = (t, e) => _(t.target.selector) ? t : { ...t, target: Z(t.target, e) }, oe = (t) => {
220
- const { top: e, left: n } = t.getBoundingClientRect(), { innerWidth: o, innerHeight: i } = window, r = -n, s = -e, a = o - n, u = i - e;
221
- return { top: e, left: n, minX: r, minY: s, maxX: a, maxY: u };
222
- }, ie = (t) => {
229
+ selector: t.selector.map((n) => n.range instanceof Range && !n.range.collapsed ? n : oe(n, e))
230
+ }, yt = (t, e) => W(t.target.selector) ? t : { ...t, target: mt(t.target, e) }, _e = (t, e) => {
231
+ const n = t.cloneRange();
232
+ return e.contains(n.startContainer) || n.setStart(e, 0), e.contains(n.endContainer) || n.setEnd(e, e.childNodes.length), n;
233
+ }, Ue = (t, e) => {
234
+ const { left: n, top: o, right: i, bottom: s } = t;
235
+ return new DOMRect(n - e.left, o - e.top, i - n, s - o);
236
+ }, Ao = (t, e) => {
237
+ const { left: n, top: o, right: i, bottom: s } = t;
238
+ return new DOMRect(n + e.left, o + e.top, i - n, s - o);
239
+ }, Ve = (t) => ({
240
+ ...t,
241
+ type: t.type,
242
+ x: t.x,
243
+ y: t.y,
244
+ clientX: t.clientX,
245
+ clientY: t.clientY,
246
+ offsetX: t.offsetX,
247
+ offsetY: t.offsetY,
248
+ screenX: t.screenX,
249
+ screenY: t.screenY,
250
+ isPrimary: t.isPrimary,
251
+ altKey: t.altKey,
252
+ ctrlKey: t.ctrlKey,
253
+ metaKey: t.metaKey,
254
+ shiftKey: t.shiftKey,
255
+ button: t.button,
256
+ buttons: t.buttons,
257
+ currentTarget: t.currentTarget,
258
+ target: t.target,
259
+ defaultPrevented: t.defaultPrevented,
260
+ detail: t.detail,
261
+ eventPhase: t.eventPhase,
262
+ pointerId: t.pointerId,
263
+ pointerType: t.pointerType,
264
+ timeStamp: t.timeStamp
265
+ }), Ye = (t) => ({
266
+ ...t,
267
+ type: t.type,
268
+ key: t.key,
269
+ code: t.code,
270
+ location: t.location,
271
+ repeat: t.repeat,
272
+ altKey: t.altKey,
273
+ ctrlKey: t.ctrlKey,
274
+ metaKey: t.metaKey,
275
+ shiftKey: t.shiftKey,
276
+ currentTarget: t.currentTarget,
277
+ target: t.target,
278
+ defaultPrevented: t.defaultPrevented,
279
+ detail: t.detail,
280
+ timeStamp: t.timeStamp
281
+ }), De = (t) => {
282
+ const { top: e, left: n } = t.getBoundingClientRect(), { innerWidth: o, innerHeight: i } = window, s = -n, a = -e, r = o - n, l = i - e;
283
+ return { top: e, left: n, minX: s, minY: a, maxX: r, maxY: l };
284
+ }, Ke = (t) => {
223
285
  let e = /* @__PURE__ */ new Set();
224
286
  return (o) => {
225
- const i = o.map((r) => r.id);
226
- (e.size !== i.length || i.some((r) => !e.has(r))) && t.set(i), e = new Set(i);
287
+ const i = o.map((s) => s.id);
288
+ (e.size !== i.length || i.some((s) => !e.has(s))) && t.set(i), e = new Set(i);
227
289
  };
228
- }, ht = (t, e, n, o) => {
229
- const { store: i, selection: r, hover: s } = e;
230
- let a, u, h;
231
- const v = ie(n), l = (p) => {
232
- const { x: S, y: A } = t.getBoundingClientRect(), C = i.getAt(p.clientX - S, p.clientY - A);
233
- C && (!u || u(C)) ? s.current !== C.id && (t.classList.add("hovered"), s.set(C.id)) : s.current && (t.classList.remove("hovered"), s.set(null));
290
+ }, It = (t, e, n, o) => {
291
+ const { store: i, selection: s, hover: a } = e;
292
+ let r, l, f;
293
+ const p = Ke(n), c = (L) => {
294
+ const { x: T, y: g } = t.getBoundingClientRect(), v = i.getAt(L.clientX - T, L.clientY - g, l);
295
+ v ? a.current !== v.id && (t.classList.add("hovered"), a.set(v.id)) : a.current && (t.classList.remove("hovered"), a.set(null));
234
296
  };
235
- t.addEventListener("pointermove", l);
236
- const m = (p = !1) => {
237
- h && h.clear();
238
- const S = oe(t), { minX: A, minY: C, maxX: T, maxY: M } = S, U = u ? i.getIntersecting(A, C, T, M).filter(({ annotation: k }) => u(k)) : i.getIntersecting(A, C, T, M), Xt = r.selected.map(({ id: k }) => k), Dt = U.map(({ annotation: k, rects: Ht }) => {
239
- const $t = Xt.includes(k.id), Pt = k.id === s.current;
240
- return { annotation: k, rects: Ht, state: { selected: $t, hover: Pt, custom: {} } };
297
+ t.addEventListener("pointermove", c);
298
+ const m = (L = !1) => {
299
+ f && f.clear();
300
+ const T = De(t), { minX: g, minY: v, maxX: S, maxY: C } = T, R = l ? i.getIntersecting(g, v, S, C).filter(({ annotation: D }) => l(D)) : i.getIntersecting(g, v, S, C), N = s.selected.map(({ id: D }) => D), $ = R.map(({ annotation: D, rects: ye }) => {
301
+ const be = N.includes(D.id), we = D.id === a.current;
302
+ return { annotation: D, rects: ye, state: { selected: be, hover: we } };
241
303
  });
242
- o.redraw(Dt, S, a, h, p), setTimeout(() => v(U.map(({ annotation: k }) => k)), 1);
243
- }, g = (p) => {
244
- h = p, m();
245
- }, x = (p) => {
246
- a = p, m();
247
- }, y = (p) => {
248
- u = p, m(!1);
249
- }, w = () => m();
250
- i.observe(w);
251
- const c = r.subscribe(() => m()), d = () => m(!0);
252
- document.addEventListener("scroll", d, { capture: !0, passive: !0 });
253
- const f = ut(() => {
254
- i.recalculatePositions(), h && h.reset(), m();
304
+ o.redraw($, T, r, f, L), setTimeout(() => p(R.map(({ annotation: D }) => D)), 1);
305
+ }, d = (L) => {
306
+ f = L, m();
307
+ }, x = (L) => {
308
+ r = L, m();
309
+ }, A = (L) => {
310
+ l = L, m(!1);
311
+ }, y = () => m();
312
+ i.observe(y);
313
+ const h = s.subscribe(() => m()), u = () => m(!0);
314
+ document.addEventListener("scroll", u, { capture: !0, passive: !0 });
315
+ const b = Nt(() => {
316
+ i.recalculatePositions(), f && f.reset(), m();
255
317
  });
256
- window.addEventListener("resize", f);
257
- const b = new ResizeObserver(f);
258
- b.observe(t);
259
- const E = { attributes: !0, childList: !0, subtree: !0 }, L = new MutationObserver((p) => {
260
- p.every((A) => A.target === t || t.contains(A.target)) || m(!0);
318
+ window.addEventListener("resize", b);
319
+ const E = new ResizeObserver(b);
320
+ E.observe(t);
321
+ const w = { attributes: !0, childList: !0, subtree: !0 }, O = new MutationObserver((L) => {
322
+ L.every((g) => g.target === t || t.contains(g.target)) || m(!0);
261
323
  });
262
- return L.observe(document.body, E), {
324
+ return O.observe(document.body, w), {
263
325
  destroy: () => {
264
- t.removeEventListener("pointermove", l), o.destroy(), i.unobserve(w), c(), document.removeEventListener("scroll", d), window.removeEventListener("resize", f), b.disconnect(), L.disconnect();
326
+ t.removeEventListener("pointermove", c), o.destroy(), i.unobserve(y), h(), document.removeEventListener("scroll", u), window.removeEventListener("resize", b), E.disconnect(), O.disconnect();
265
327
  },
266
328
  redraw: m,
267
329
  setStyle: x,
268
- setFilter: y,
269
- setPainter: g,
330
+ setFilter: A,
331
+ setPainter: d,
270
332
  setVisible: o.setVisible
271
333
  };
272
- }, re = () => {
334
+ }, Xe = () => {
273
335
  const t = document.createElement("canvas");
274
- return t.width = window.innerWidth, t.height = window.innerHeight, t.className = "r6o-highlight-layer bg", t;
275
- }, se = (t, e) => {
276
- if (t.width = e ? 2 * window.innerWidth : window.innerWidth, t.height = e ? 2 * window.innerHeight : window.innerHeight, e) {
277
- const n = t.getContext("2d");
278
- n.scale(2, 2), n.translate(0.5, 0.5);
279
- }
280
- }, ae = (t) => {
336
+ return t.width = window.innerWidth, t.height = window.innerHeight, t.className = "r6o-canvas-highlight-layer bg", t;
337
+ }, Pe = (t, e) => {
338
+ t.width = window.innerWidth, t.height = window.innerHeight;
339
+ }, $e = (t) => {
281
340
  t.classList.add("r6o-annotatable");
282
- const e = re(), n = e.getContext("2d");
283
- t.insertBefore(e, t.firstChild);
284
- const o = (a, u, h, v) => requestAnimationFrame(() => {
285
- const { width: l, height: m } = e;
286
- n.clearRect(-0.5, -0.5, l + 1, m + 1), v && v.clear();
287
- const { top: g, left: x } = u;
288
- a.forEach((y) => {
289
- var f;
290
- const w = h ? typeof h == "function" ? h(y.annotation, y.state) : h : (f = y.state) != null && f.selected ? dt : H, c = v && v.paint(y, u) || w, d = y.rects.map(({ x: b, y: E, width: L, height: B }) => ({
291
- x: b + x,
292
- y: E + g,
293
- width: L,
294
- height: B
295
- }));
296
- n.fillStyle = c.fill, n.globalAlpha = c.fillOpacity || 1, d.forEach(({ x: b, y: E, width: L, height: B }) => n.fillRect(b, E - 2.5, L, B + 5)), c.underlineColor && (n.globalAlpha = 1, n.strokeStyle = c.underlineColor, d.forEach(({ x: b, y: E, width: L, height: B }) => {
297
- n.beginPath(), n.moveTo(b, E + B + 4), n.lineTo(b + L, E + B + 4), n.stroke();
341
+ const e = Xe(), n = e.getContext("2d");
342
+ document.body.appendChild(e);
343
+ const o = (r, l, f, p) => requestAnimationFrame(() => {
344
+ const { width: c, height: m } = e;
345
+ n.clearRect(-0.5, -0.5, c + 1, m + 1), p && p.clear();
346
+ const { top: d, left: x } = l;
347
+ [...r].sort((y, h) => {
348
+ const { annotation: { target: { created: u } } } = y, { annotation: { target: { created: b } } } = h;
349
+ return u.getTime() - b.getTime();
350
+ }).forEach((y) => {
351
+ var E;
352
+ const h = f ? typeof f == "function" ? f(y.annotation, y.state) : f : (E = y.state) != null && E.selected ? gt : q, u = p && p.paint(y, l) || h, b = y.rects.map(({ x: w, y: O, width: B, height: L }) => ({
353
+ x: w + x,
354
+ y: O + d,
355
+ width: B,
356
+ height: L
298
357
  }));
358
+ if (n.fillStyle = u.fill, n.globalAlpha = u.fillOpacity || 1, b.forEach(
359
+ ({ x: w, y: O, width: B, height: L }) => n.fillRect(w, O, B, L)
360
+ ), u.underlineColor) {
361
+ n.globalAlpha = 1, n.strokeStyle = u.underlineColor, n.lineWidth = u.underlineThickness ?? 1;
362
+ const w = u.underlineOffset ?? 0;
363
+ b.forEach(({ x: O, y: B, width: L, height: T }) => {
364
+ n.beginPath(), n.moveTo(O, B + T + w), n.lineTo(O + L, B + T + w), n.stroke();
365
+ });
366
+ }
299
367
  });
300
- }), i = ut(() => {
301
- se(e);
368
+ }), i = Nt(() => {
369
+ Pe(e);
302
370
  });
303
371
  return window.addEventListener("resize", i), {
304
372
  destroy: () => {
305
- t.removeChild(e), window.removeEventListener("resize", i);
373
+ e.remove(), window.removeEventListener("resize", i);
306
374
  },
307
- setVisible: (a) => {
375
+ setVisible: (r) => {
308
376
  console.log("setVisible not implemented on Canvas renderer");
309
377
  },
310
378
  redraw: o
311
379
  };
312
- }, le = (t, e, n) => ht(t, e, n, ae(t));
313
- var ce = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, Y = function(t) {
380
+ }, He = (t, e, n) => It(t, e, n, $e(t));
381
+ var je = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, z = function(t) {
314
382
  return typeof t == "string" ? t.length > 0 : typeof t == "number";
315
- }, O = function(t, e, n) {
383
+ }, _ = function(t, e, n) {
316
384
  return e === void 0 && (e = 0), n === void 0 && (n = Math.pow(10, e)), Math.round(n * t) / n + 0;
317
- }, N = function(t, e, n) {
385
+ }, K = function(t, e, n) {
318
386
  return e === void 0 && (e = 0), n === void 0 && (n = 1), t > n ? n : t > e ? t : e;
319
- }, Ot = function(t) {
387
+ }, ie = function(t) {
320
388
  return (t = isFinite(t) ? t % 360 : 0) > 0 ? t : t + 360;
321
- }, mt = function(t) {
322
- return { r: N(t.r, 0, 255), g: N(t.g, 0, 255), b: N(t.b, 0, 255), a: N(t.a) };
323
- }, et = function(t) {
324
- return { r: O(t.r), g: O(t.g), b: O(t.b), a: O(t.a, 3) };
325
- }, de = /^#([0-9a-f]{3,8})$/i, G = function(t) {
389
+ }, Dt = function(t) {
390
+ return { r: K(t.r, 0, 255), g: K(t.g, 0, 255), b: K(t.b, 0, 255), a: K(t.a) };
391
+ }, bt = function(t) {
392
+ return { r: _(t.r), g: _(t.g), b: _(t.b), a: _(t.a, 3) };
393
+ }, ze = /^#([0-9a-f]{3,8})$/i, lt = function(t) {
326
394
  var e = t.toString(16);
327
395
  return e.length < 2 ? "0" + e : e;
328
- }, It = function(t) {
329
- var e = t.r, n = t.g, o = t.b, i = t.a, r = Math.max(e, n, o), s = r - Math.min(e, n, o), a = s ? r === e ? (n - o) / s : r === n ? 2 + (o - e) / s : 4 + (e - n) / s : 0;
330
- return { h: 60 * (a < 0 ? a + 6 : a), s: r ? s / r * 100 : 0, v: r / 255 * 100, a: i };
331
- }, Nt = function(t) {
396
+ }, se = function(t) {
397
+ var e = t.r, n = t.g, o = t.b, i = t.a, s = Math.max(e, n, o), a = s - Math.min(e, n, o), r = a ? s === e ? (n - o) / a : s === n ? 2 + (o - e) / a : 4 + (e - n) / a : 0;
398
+ return { h: 60 * (r < 0 ? r + 6 : r), s: s ? a / s * 100 : 0, v: s / 255 * 100, a: i };
399
+ }, re = function(t) {
332
400
  var e = t.h, n = t.s, o = t.v, i = t.a;
333
401
  e = e / 360 * 6, n /= 100, o /= 100;
334
- var r = Math.floor(e), s = o * (1 - n), a = o * (1 - (e - r) * n), u = o * (1 - (1 - e + r) * n), h = r % 6;
335
- return { r: 255 * [o, a, s, s, u, o][h], g: 255 * [u, o, o, a, s, s][h], b: 255 * [s, s, u, o, o, a][h], a: i };
336
- }, bt = function(t) {
337
- return { h: Ot(t.h), s: N(t.s, 0, 100), l: N(t.l, 0, 100), a: N(t.a) };
338
- }, vt = function(t) {
339
- return { h: O(t.h), s: O(t.s), l: O(t.l), a: O(t.a, 3) };
340
- }, wt = function(t) {
341
- return Nt((n = (e = t).s, { h: e.h, s: (n *= ((o = e.l) < 50 ? o : 100 - o) / 100) > 0 ? 2 * n / (o + n) * 100 : 0, v: o + n, a: e.a }));
402
+ var s = Math.floor(e), a = o * (1 - n), r = o * (1 - (e - s) * n), l = o * (1 - (1 - e + s) * n), f = s % 6;
403
+ return { r: 255 * [o, r, a, a, l, o][f], g: 255 * [l, o, o, r, a, a][f], b: 255 * [a, a, l, o, o, r][f], a: i };
404
+ }, Kt = function(t) {
405
+ return { h: ie(t.h), s: K(t.s, 0, 100), l: K(t.l, 0, 100), a: K(t.a) };
406
+ }, Xt = function(t) {
407
+ return { h: _(t.h), s: _(t.s), l: _(t.l), a: _(t.a, 3) };
408
+ }, Pt = function(t) {
409
+ return re((n = (e = t).s, { h: e.h, s: (n *= ((o = e.l) < 50 ? o : 100 - o) / 100) > 0 ? 2 * n / (o + n) * 100 : 0, v: o + n, a: e.a }));
342
410
  var e, n, o;
343
- }, j = function(t) {
344
- return { h: (e = It(t)).h, s: (i = (200 - (n = e.s)) * (o = e.v) / 100) > 0 && i < 200 ? n * o / 100 / (i <= 100 ? i : 200 - i) * 100 : 0, l: i / 2, a: e.a };
411
+ }, it = function(t) {
412
+ return { h: (e = se(t)).h, s: (i = (200 - (n = e.s)) * (o = e.v) / 100) > 0 && i < 200 ? n * o / 100 / (i <= 100 ? i : 200 - i) * 100 : 0, l: i / 2, a: e.a };
345
413
  var e, n, o, i;
346
- }, ue = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, he = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, fe = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, ge = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, xt = { string: [[function(t) {
347
- var e = de.exec(t);
348
- return e ? (t = e[1]).length <= 4 ? { r: parseInt(t[0] + t[0], 16), g: parseInt(t[1] + t[1], 16), b: parseInt(t[2] + t[2], 16), a: t.length === 4 ? O(parseInt(t[3] + t[3], 16) / 255, 2) : 1 } : t.length === 6 || t.length === 8 ? { r: parseInt(t.substr(0, 2), 16), g: parseInt(t.substr(2, 2), 16), b: parseInt(t.substr(4, 2), 16), a: t.length === 8 ? O(parseInt(t.substr(6, 2), 16) / 255, 2) : 1 } : null : null;
414
+ }, Fe = /^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, qe = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, Ge = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i, $t = { string: [[function(t) {
415
+ var e = ze.exec(t);
416
+ 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 ? _(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 ? _(parseInt(t.substr(6, 2), 16) / 255, 2) : 1 } : null : null;
349
417
  }, "hex"], [function(t) {
350
- var e = fe.exec(t) || ge.exec(t);
351
- return e ? e[2] !== e[4] || e[4] !== e[6] ? null : mt({ r: Number(e[1]) / (e[2] ? 100 / 255 : 1), g: Number(e[3]) / (e[4] ? 100 / 255 : 1), b: Number(e[5]) / (e[6] ? 100 / 255 : 1), a: e[7] === void 0 ? 1 : Number(e[7]) / (e[8] ? 100 : 1) }) : null;
418
+ var e = qe.exec(t) || Ge.exec(t);
419
+ return e ? e[2] !== e[4] || e[4] !== e[6] ? null : Dt({ r: Number(e[1]) / (e[2] ? 100 / 255 : 1), g: Number(e[3]) / (e[4] ? 100 / 255 : 1), b: Number(e[5]) / (e[6] ? 100 / 255 : 1), a: e[7] === void 0 ? 1 : Number(e[7]) / (e[8] ? 100 : 1) }) : null;
352
420
  }, "rgb"], [function(t) {
353
- var e = ue.exec(t) || he.exec(t);
354
- if (!e)
355
- return null;
356
- var n, o, i = bt({ h: (n = e[1], o = e[2], o === void 0 && (o = "deg"), Number(n) * (ce[o] || 1)), s: Number(e[3]), l: Number(e[4]), a: e[5] === void 0 ? 1 : Number(e[5]) / (e[6] ? 100 : 1) });
357
- return wt(i);
421
+ var e = Fe.exec(t) || We.exec(t);
422
+ if (!e) return null;
423
+ var n, o, i = Kt({ h: (n = e[1], o = e[2], o === void 0 && (o = "deg"), Number(n) * (je[o] || 1)), s: Number(e[3]), l: Number(e[4]), a: e[5] === void 0 ? 1 : Number(e[5]) / (e[6] ? 100 : 1) });
424
+ return Pt(i);
358
425
  }, "hsl"]], object: [[function(t) {
359
- var e = t.r, n = t.g, o = t.b, i = t.a, r = i === void 0 ? 1 : i;
360
- return Y(e) && Y(n) && Y(o) ? mt({ r: Number(e), g: Number(n), b: Number(o), a: Number(r) }) : null;
426
+ var e = t.r, n = t.g, o = t.b, i = t.a, s = i === void 0 ? 1 : i;
427
+ return z(e) && z(n) && z(o) ? Dt({ r: Number(e), g: Number(n), b: Number(o), a: Number(s) }) : null;
361
428
  }, "rgb"], [function(t) {
362
- var e = t.h, n = t.s, o = t.l, i = t.a, r = i === void 0 ? 1 : i;
363
- if (!Y(e) || !Y(n) || !Y(o))
364
- return null;
365
- var s = bt({ h: Number(e), s: Number(n), l: Number(o), a: Number(r) });
366
- return wt(s);
429
+ var e = t.h, n = t.s, o = t.l, i = t.a, s = i === void 0 ? 1 : i;
430
+ if (!z(e) || !z(n) || !z(o)) return null;
431
+ var a = Kt({ h: Number(e), s: Number(n), l: Number(o), a: Number(s) });
432
+ return Pt(a);
367
433
  }, "hsl"], [function(t) {
368
- var e = t.h, n = t.s, o = t.v, i = t.a, r = i === void 0 ? 1 : i;
369
- if (!Y(e) || !Y(n) || !Y(o))
370
- return null;
371
- var s = function(a) {
372
- return { h: Ot(a.h), s: N(a.s, 0, 100), v: N(a.v, 0, 100), a: N(a.a) };
373
- }({ h: Number(e), s: Number(n), v: Number(o), a: Number(r) });
374
- return Nt(s);
375
- }, "hsv"]] }, yt = function(t, e) {
434
+ var e = t.h, n = t.s, o = t.v, i = t.a, s = i === void 0 ? 1 : i;
435
+ if (!z(e) || !z(n) || !z(o)) return null;
436
+ var a = function(r) {
437
+ return { h: ie(r.h), s: K(r.s, 0, 100), v: K(r.v, 0, 100), a: K(r.a) };
438
+ }({ h: Number(e), s: Number(n), v: Number(o), a: Number(s) });
439
+ return re(a);
440
+ }, "hsv"]] }, Ht = function(t, e) {
376
441
  for (var n = 0; n < e.length; n++) {
377
442
  var o = e[n][0](t);
378
- if (o)
379
- return [o, e[n][1]];
443
+ if (o) return [o, e[n][1]];
380
444
  }
381
445
  return [null, void 0];
382
- }, pe = function(t) {
383
- return typeof t == "string" ? yt(t.trim(), xt.string) : typeof t == "object" && t !== null ? yt(t, xt.object) : [null, void 0];
384
- }, nt = function(t, e) {
385
- var n = j(t);
386
- return { h: n.h, s: N(n.s + 100 * e, 0, 100), l: n.l, a: n.a };
387
- }, ot = function(t) {
446
+ }, Qe = function(t) {
447
+ return typeof t == "string" ? Ht(t.trim(), $t.string) : typeof t == "object" && t !== null ? Ht(t, $t.object) : [null, void 0];
448
+ }, wt = function(t, e) {
449
+ var n = it(t);
450
+ return { h: n.h, s: K(n.s + 100 * e, 0, 100), l: n.l, a: n.a };
451
+ }, xt = function(t) {
388
452
  return (299 * t.r + 587 * t.g + 114 * t.b) / 1e3 / 255;
389
- }, At = function(t, e) {
390
- var n = j(t);
391
- return { h: n.h, s: n.s, l: N(n.l + 100 * e, 0, 100), a: n.a };
392
- }, Et = function() {
453
+ }, jt = function(t, e) {
454
+ var n = it(t);
455
+ return { h: n.h, s: n.s, l: K(n.l + 100 * e, 0, 100), a: n.a };
456
+ }, zt = function() {
393
457
  function t(e) {
394
- this.parsed = pe(e)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 };
458
+ this.parsed = Qe(e)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 };
395
459
  }
396
460
  return t.prototype.isValid = function() {
397
461
  return this.parsed !== null;
398
462
  }, t.prototype.brightness = function() {
399
- return O(ot(this.rgba), 2);
463
+ return _(xt(this.rgba), 2);
400
464
  }, t.prototype.isDark = function() {
401
- return ot(this.rgba) < 0.5;
465
+ return xt(this.rgba) < 0.5;
402
466
  }, t.prototype.isLight = function() {
403
- return ot(this.rgba) >= 0.5;
467
+ return xt(this.rgba) >= 0.5;
404
468
  }, t.prototype.toHex = function() {
405
- return e = et(this.rgba), n = e.r, o = e.g, i = e.b, s = (r = e.a) < 1 ? G(O(255 * r)) : "", "#" + G(n) + G(o) + G(i) + s;
406
- var e, n, o, i, r, s;
469
+ return e = bt(this.rgba), n = e.r, o = e.g, i = e.b, a = (s = e.a) < 1 ? lt(_(255 * s)) : "", "#" + lt(n) + lt(o) + lt(i) + a;
470
+ var e, n, o, i, s, a;
407
471
  }, t.prototype.toRgb = function() {
408
- return et(this.rgba);
472
+ return bt(this.rgba);
409
473
  }, t.prototype.toRgbString = function() {
410
- return e = et(this.rgba), n = e.r, o = e.g, i = e.b, (r = e.a) < 1 ? "rgba(" + n + ", " + o + ", " + i + ", " + r + ")" : "rgb(" + n + ", " + o + ", " + i + ")";
411
- var e, n, o, i, r;
474
+ return e = bt(this.rgba), n = e.r, o = e.g, i = e.b, (s = e.a) < 1 ? "rgba(" + n + ", " + o + ", " + i + ", " + s + ")" : "rgb(" + n + ", " + o + ", " + i + ")";
475
+ var e, n, o, i, s;
412
476
  }, t.prototype.toHsl = function() {
413
- return vt(j(this.rgba));
477
+ return Xt(it(this.rgba));
414
478
  }, t.prototype.toHslString = function() {
415
- return e = vt(j(this.rgba)), n = e.h, o = e.s, i = e.l, (r = e.a) < 1 ? "hsla(" + n + ", " + o + "%, " + i + "%, " + r + ")" : "hsl(" + n + ", " + o + "%, " + i + "%)";
416
- var e, n, o, i, r;
479
+ return e = Xt(it(this.rgba)), n = e.h, o = e.s, i = e.l, (s = e.a) < 1 ? "hsla(" + n + ", " + o + "%, " + i + "%, " + s + ")" : "hsl(" + n + ", " + o + "%, " + i + "%)";
480
+ var e, n, o, i, s;
417
481
  }, t.prototype.toHsv = function() {
418
- return e = It(this.rgba), { h: O(e.h), s: O(e.s), v: O(e.v), a: O(e.a, 3) };
482
+ return e = se(this.rgba), { h: _(e.h), s: _(e.s), v: _(e.v), a: _(e.a, 3) };
419
483
  var e;
420
484
  }, t.prototype.invert = function() {
421
- return V({ r: 255 - (e = this.rgba).r, g: 255 - e.g, b: 255 - e.b, a: e.a });
485
+ return X({ r: 255 - (e = this.rgba).r, g: 255 - e.g, b: 255 - e.b, a: e.a });
422
486
  var e;
423
487
  }, t.prototype.saturate = function(e) {
424
- return e === void 0 && (e = 0.1), V(nt(this.rgba, e));
488
+ return e === void 0 && (e = 0.1), X(wt(this.rgba, e));
425
489
  }, t.prototype.desaturate = function(e) {
426
- return e === void 0 && (e = 0.1), V(nt(this.rgba, -e));
490
+ return e === void 0 && (e = 0.1), X(wt(this.rgba, -e));
427
491
  }, t.prototype.grayscale = function() {
428
- return V(nt(this.rgba, -1));
492
+ return X(wt(this.rgba, -1));
429
493
  }, t.prototype.lighten = function(e) {
430
- return e === void 0 && (e = 0.1), V(At(this.rgba, e));
494
+ return e === void 0 && (e = 0.1), X(jt(this.rgba, e));
431
495
  }, t.prototype.darken = function(e) {
432
- return e === void 0 && (e = 0.1), V(At(this.rgba, -e));
496
+ return e === void 0 && (e = 0.1), X(jt(this.rgba, -e));
433
497
  }, t.prototype.rotate = function(e) {
434
498
  return e === void 0 && (e = 15), this.hue(this.hue() + e);
435
499
  }, t.prototype.alpha = function(e) {
436
- return typeof e == "number" ? V({ r: (n = this.rgba).r, g: n.g, b: n.b, a: e }) : O(this.rgba.a, 3);
500
+ return typeof e == "number" ? X({ r: (n = this.rgba).r, g: n.g, b: n.b, a: e }) : _(this.rgba.a, 3);
437
501
  var n;
438
502
  }, t.prototype.hue = function(e) {
439
- var n = j(this.rgba);
440
- return typeof e == "number" ? V({ h: e, s: n.s, l: n.l, a: n.a }) : O(n.h);
503
+ var n = it(this.rgba);
504
+ return typeof e == "number" ? X({ h: e, s: n.s, l: n.l, a: n.a }) : _(n.h);
441
505
  }, t.prototype.isEqual = function(e) {
442
- return this.toHex() === V(e).toHex();
506
+ return this.toHex() === X(e).toHex();
443
507
  }, t;
444
- }(), V = function(t) {
445
- return t instanceof Et ? t : new Et(t);
508
+ }(), X = function(t) {
509
+ return t instanceof zt ? t : new zt(t);
446
510
  };
447
- const me = (t) => [
448
- `background-color:${V((t == null ? void 0 : t.fill) || H.fill).alpha((t == null ? void 0 : t.fillOpacity) === void 0 ? H.fillOpacity : t.fillOpacity).toHex()}`,
511
+ const Je = (t) => [
512
+ `background-color:${X((t == null ? void 0 : t.fill) || q.fill).alpha((t == null ? void 0 : t.fillOpacity) === void 0 ? q.fillOpacity : t.fillOpacity).toHex()}`,
449
513
  t != null && t.underlineThickness ? "text-decoration:underline" : void 0,
450
514
  t != null && t.underlineColor ? `text-decoration-color:${t.underlineColor}` : void 0,
451
515
  t != null && t.underlineOffset ? `text-underline-offset:${t.underlineOffset}px` : void 0,
452
516
  t != null && t.underlineThickness ? `text-decoration-thickness:${t.underlineThickness}px` : void 0
453
- ].filter(Boolean).join(";"), be = () => {
517
+ ].filter(Boolean).join(";"), Ze = () => {
454
518
  const t = document.createElement("style");
455
519
  document.getElementsByTagName("head")[0].appendChild(t);
456
520
  let e = /* @__PURE__ */ new Set();
@@ -458,56 +522,51 @@ const me = (t) => [
458
522
  destroy: () => {
459
523
  CSS.highlights.clear(), t.remove();
460
524
  },
461
- setVisible: (r) => {
525
+ setVisible: (s) => {
462
526
  console.log("setVisible not implemented on CSS Custom Highlights renderer");
463
527
  },
464
- redraw: (r, s, a, u) => {
465
- u && u.clear();
466
- const h = new Set(r.map((l) => l.annotation.id));
467
- Array.from(e).filter((l) => !h.has(l));
468
- const v = r.map((l) => {
528
+ redraw: (s, a, r, l) => {
529
+ l && l.clear();
530
+ const f = new Set(s.map((c) => c.annotation.id));
531
+ Array.from(e).filter((c) => !f.has(c));
532
+ const p = s.map((c) => {
469
533
  var x;
470
- const m = a ? typeof a == "function" ? a(l.annotation, l.state) : a : (x = l.state) != null && x.selected ? dt : H, g = u && u.paint(l, s) || m;
471
- return `::highlight(_${l.annotation.id}) { ${me(g)} }`;
534
+ const m = r ? typeof r == "function" ? r(c.annotation, c.state) : r : (x = c.state) != null && x.selected ? gt : q, d = l && l.paint(c, a) || m;
535
+ return `::highlight(_${c.annotation.id}) { ${Je(d)} }`;
472
536
  });
473
- t.innerHTML = v.join(`
474
- `), CSS.highlights.clear(), r.forEach(({ annotation: l }) => {
475
- const m = l.target.selector.map((x) => x.range), g = new Highlight(...m);
476
- CSS.highlights.set(`_${l.id}`, g);
477
- }), e = h;
537
+ t.innerHTML = p.join(`
538
+ `), CSS.highlights.clear(), s.forEach(({ annotation: c }) => {
539
+ const m = c.target.selector.map((x) => x.range), d = new Highlight(...m);
540
+ CSS.highlights.set(`_${c.id}`, d);
541
+ }), e = f;
478
542
  }
479
543
  };
480
- }, ve = (t, e, n) => ht(t, e, n, be());
481
- var St = Object.prototype.hasOwnProperty;
482
- function ct(t, e) {
544
+ }, tn = (t, e, n) => It(t, e, n, Ze());
545
+ var Ft = Object.prototype.hasOwnProperty;
546
+ function Mt(t, e) {
483
547
  var n, o;
484
- if (t === e)
485
- return !0;
548
+ if (t === e) return !0;
486
549
  if (t && e && (n = t.constructor) === e.constructor) {
487
- if (n === Date)
488
- return t.getTime() === e.getTime();
489
- if (n === RegExp)
490
- return t.toString() === e.toString();
550
+ if (n === Date) return t.getTime() === e.getTime();
551
+ if (n === RegExp) return t.toString() === e.toString();
491
552
  if (n === Array) {
492
553
  if ((o = t.length) === e.length)
493
- for (; o-- && ct(t[o], e[o]); )
494
- ;
554
+ for (; o-- && Mt(t[o], e[o]); ) ;
495
555
  return o === -1;
496
556
  }
497
557
  if (!n || typeof t == "object") {
498
558
  o = 0;
499
559
  for (n in t)
500
- if (St.call(t, n) && ++o && !St.call(e, n) || !(n in e) || !ct(t[n], e[n]))
501
- return !1;
560
+ if (Ft.call(t, n) && ++o && !Ft.call(e, n) || !(n in e) || !Mt(t[n], e[n])) return !1;
502
561
  return Object.keys(e).length === o;
503
562
  }
504
563
  }
505
564
  return t !== t && e !== e;
506
565
  }
507
- const we = (t, e) => {
508
- const n = (o, i) => o.x <= i.x + i.width && o.x + o.width >= i.x && o.y <= i.y + i.height && o.y + o.height >= i.y;
509
- return e.filter((o) => t !== o && n(t, o) && o.width > t.width).length;
510
- }, xe = (t) => {
566
+ const en = (t, e) => {
567
+ const n = (s, a) => s.x <= a.x + a.width && s.x + s.width >= a.x && s.y <= a.y + a.height && s.y + s.height >= a.y, o = (s) => s.rects.reduce((a, r) => a + r.width, 0), i = e.filter(({ rects: s }) => s.some((a) => n(t, a)));
568
+ return i.sort((s, a) => o(a) - o(s)), i.findIndex((s) => s.rects.includes(t));
569
+ }, nn = (t) => {
511
570
  t.classList.add("r6o-annotatable");
512
571
  const e = document.createElement("div");
513
572
  e.className = "r6o-span-highlight-layer", t.insertBefore(e, t.firstChild);
@@ -516,121 +575,107 @@ const we = (t, e) => {
516
575
  destroy: () => {
517
576
  e.remove();
518
577
  },
519
- redraw: (s, a, u, h, v) => {
520
- if (ct(n, s) && v)
521
- return;
522
- e.innerHTML = "";
523
- const m = s.reduce((g, { rects: x }) => [...g, ...x], []);
524
- s.forEach((g) => {
525
- const x = g.rects.map((y) => {
526
- const w = document.createElement("span");
527
- w.className = "r6o-annotation", w.dataset.annotation = g.annotation.id, w.style.left = `${y.x}px`, w.style.top = `${y.y}px`, w.style.width = `${y.width}px`, w.style.height = `${y.height}px`;
528
- const c = we(y, m), d = zt(g, a, u, h, c), f = V((d == null ? void 0 : d.fill) || H.fill).alpha((d == null ? void 0 : d.fillOpacity) === void 0 ? H.fillOpacity : d.fillOpacity).toHex();
529
- return w.style.backgroundColor = f, d.underlineStyle && (w.style.borderStyle = d.underlineStyle), d.underlineColor && (w.style.borderColor = d.underlineColor), d.underlineThickness && (w.style.borderBottomWidth = `${d.underlineThickness}px`), d.underlineOffset && (w.style.paddingBottom = `${d.underlineOffset}px`), e.appendChild(w), w;
578
+ redraw: (a, r, l, f, p) => {
579
+ const m = !(Mt(n, a) && p);
580
+ !f && !m || (m && (e.innerHTML = ""), a.forEach((d) => {
581
+ d.rects.map((x) => {
582
+ const A = en(x, a), y = xe(d, r, l, f, A);
583
+ if (m) {
584
+ const h = document.createElement("span");
585
+ h.className = "r6o-annotation", h.dataset.annotation = d.annotation.id, h.style.left = `${x.x}px`, h.style.top = `${x.y}px`, h.style.width = `${x.width}px`, h.style.height = `${x.height}px`, h.style.backgroundColor = X((y == null ? void 0 : y.fill) || q.fill).alpha((y == null ? void 0 : y.fillOpacity) === void 0 ? q.fillOpacity : y.fillOpacity).toHex(), y.underlineStyle && (h.style.borderStyle = y.underlineStyle), y.underlineColor && (h.style.borderColor = y.underlineColor), y.underlineThickness && (h.style.borderBottomWidth = `${y.underlineThickness}px`), y.underlineOffset && (h.style.paddingBottom = `${y.underlineOffset}px`), e.appendChild(h);
586
+ }
530
587
  });
531
- return { id: g.annotation.id, spans: x };
532
- }), n = s;
588
+ }), n = a);
533
589
  },
534
- setVisible: (s) => {
535
- s ? e.classList.remove("hidden") : e.classList.add("hidden");
590
+ setVisible: (a) => {
591
+ a ? e.classList.remove("hidden") : e.classList.add("hidden");
536
592
  }
537
593
  };
538
- }, ye = (t, e, n) => ht(t, e, n, xe(t));
539
- let K;
540
- const Ae = new Uint8Array(16);
541
- function Ee() {
542
- if (!K && (K = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !K))
543
- throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
544
- return K(Ae);
594
+ }, on = (t, e, n) => It(t, e, n, nn(t));
595
+ var U = [];
596
+ for (var vt = 0; vt < 256; ++vt)
597
+ U.push((vt + 256).toString(16).slice(1));
598
+ function sn(t, e = 0) {
599
+ 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();
545
600
  }
546
- const I = [];
547
- for (let t = 0; t < 256; ++t)
548
- I.push((t + 256).toString(16).slice(1));
549
- function Se(t, e = 0) {
550
- return I[t[e + 0]] + I[t[e + 1]] + I[t[e + 2]] + I[t[e + 3]] + "-" + I[t[e + 4]] + I[t[e + 5]] + "-" + I[t[e + 6]] + I[t[e + 7]] + "-" + I[t[e + 8]] + I[t[e + 9]] + "-" + I[t[e + 10]] + I[t[e + 11]] + I[t[e + 12]] + I[t[e + 13]] + I[t[e + 14]] + I[t[e + 15]];
601
+ var dt, rn = new Uint8Array(16);
602
+ function an() {
603
+ if (!dt && (dt = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !dt))
604
+ throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
605
+ return dt(rn);
551
606
  }
552
- const Ce = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), Ct = {
553
- randomUUID: Ce
607
+ var cn = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
608
+ const Wt = {
609
+ randomUUID: cn
554
610
  };
555
- function Vt(t, e, n) {
556
- if (Ct.randomUUID && !e && !t)
557
- return Ct.randomUUID();
611
+ function ae(t, e, n) {
612
+ if (Wt.randomUUID && !e && !t)
613
+ return Wt.randomUUID();
558
614
  t = t || {};
559
- const o = t.random || (t.rng || Ee)();
560
- if (o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, e) {
561
- n = n || 0;
562
- for (let i = 0; i < 16; ++i)
563
- e[n + i] = o[i];
564
- return e;
565
- }
566
- return Se(o);
615
+ var o = t.random || (t.rng || an)();
616
+ return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, sn(o);
567
617
  }
568
- var Lt = Object.prototype.hasOwnProperty;
569
- function D(t, e) {
618
+ var qt = Object.prototype.hasOwnProperty;
619
+ function Z(t, e) {
570
620
  var n, o;
571
- if (t === e)
572
- return !0;
621
+ if (t === e) return !0;
573
622
  if (t && e && (n = t.constructor) === e.constructor) {
574
- if (n === Date)
575
- return t.getTime() === e.getTime();
576
- if (n === RegExp)
577
- return t.toString() === e.toString();
623
+ if (n === Date) return t.getTime() === e.getTime();
624
+ if (n === RegExp) return t.toString() === e.toString();
578
625
  if (n === Array) {
579
626
  if ((o = t.length) === e.length)
580
- for (; o-- && D(t[o], e[o]); )
581
- ;
627
+ for (; o-- && Z(t[o], e[o]); ) ;
582
628
  return o === -1;
583
629
  }
584
630
  if (!n || typeof t == "object") {
585
631
  o = 0;
586
632
  for (n in t)
587
- if (Lt.call(t, n) && ++o && !Lt.call(e, n) || !(n in e) || !D(t[n], e[n]))
588
- return !1;
633
+ if (qt.call(t, n) && ++o && !qt.call(e, n) || !(n in e) || !Z(t[n], e[n])) return !1;
589
634
  return Object.keys(e).length === o;
590
635
  }
591
636
  }
592
637
  return t !== t && e !== e;
593
638
  }
594
- function it() {
639
+ function At() {
595
640
  }
596
- function Le(t, e) {
641
+ function ln(t, e) {
597
642
  return t != t ? e == e : t !== e || t && typeof t == "object" || typeof t == "function";
598
643
  }
599
- const $ = [];
600
- function ft(t, e = it) {
644
+ const G = [];
645
+ function _t(t, e = At) {
601
646
  let n;
602
647
  const o = /* @__PURE__ */ new Set();
603
- function i(a) {
604
- if (Le(t, a) && (t = a, n)) {
605
- const u = !$.length;
606
- for (const h of o)
607
- h[1](), $.push(h, t);
608
- if (u) {
609
- for (let h = 0; h < $.length; h += 2)
610
- $[h][0]($[h + 1]);
611
- $.length = 0;
648
+ function i(r) {
649
+ if (ln(t, r) && (t = r, n)) {
650
+ const l = !G.length;
651
+ for (const f of o)
652
+ f[1](), G.push(f, t);
653
+ if (l) {
654
+ for (let f = 0; f < G.length; f += 2)
655
+ G[f][0](G[f + 1]);
656
+ G.length = 0;
612
657
  }
613
658
  }
614
659
  }
615
- function r(a) {
616
- i(a(t));
660
+ function s(r) {
661
+ i(r(t));
617
662
  }
618
- function s(a, u = it) {
619
- const h = [a, u];
620
- return o.add(h), o.size === 1 && (n = e(i, r) || it), a(t), () => {
621
- o.delete(h), o.size === 0 && n && (n(), n = null);
663
+ function a(r, l = At) {
664
+ const f = [r, l];
665
+ return o.add(f), o.size === 1 && (n = e(i, s) || At), r(t), () => {
666
+ o.delete(f), o.size === 0 && n && (n(), n = null);
622
667
  };
623
668
  }
624
- return { set: i, update: r, subscribe: s };
669
+ return { set: i, update: s, subscribe: a };
625
670
  }
626
- const Be = (t) => {
627
- const { subscribe: e, set: n } = ft();
671
+ const dn = (t) => {
672
+ const { subscribe: e, set: n } = _t();
628
673
  let o;
629
674
  return e((i) => o = i), t.observe(({ changes: i }) => {
630
675
  if (o) {
631
- (i.deleted || []).some((s) => s.id === o) && n(void 0);
632
- const r = (i.updated || []).find(({ oldValue: s }) => s.id === o);
633
- r && n(r.newValue.id);
676
+ (i.deleted || []).some((a) => a.id === o) && n(void 0);
677
+ const s = (i.updated || []).find(({ oldValue: a }) => a.id === o);
678
+ s && n(s.newValue.id);
634
679
  }
635
680
  }), {
636
681
  get current() {
@@ -639,301 +684,353 @@ const Be = (t) => {
639
684
  subscribe: e,
640
685
  set: n
641
686
  };
642
- }, rt = { selected: [] }, Te = (t, e = "EDIT") => {
643
- const { subscribe: n, set: o } = ft(rt);
644
- let i = rt;
645
- n((l) => i = l);
646
- const r = () => o(rt), s = () => {
647
- var l;
648
- return ((l = i.selected) == null ? void 0 : l.length) === 0;
649
- }, a = (l) => {
650
- if (i.selected.length === 0)
687
+ };
688
+ var un = /* @__PURE__ */ ((t) => (t.EDIT = "EDIT", t.SELECT = "SELECT", t.NONE = "NONE", t))(un || {});
689
+ const Et = { selected: [] }, fn = (t, e = "EDIT") => {
690
+ const { subscribe: n, set: o } = _t(Et);
691
+ let i = e, s = Et;
692
+ n((d) => s = d);
693
+ const a = () => o(Et), r = () => {
694
+ var d;
695
+ return ((d = s.selected) == null ? void 0 : d.length) === 0;
696
+ }, l = (d) => {
697
+ if (r())
651
698
  return !1;
652
- const m = typeof l == "string" ? l : l.id;
653
- return i.selected.some((g) => g.id === m);
654
- }, u = (l, m) => {
655
- const g = t.getAnnotation(l);
656
- if (g) {
657
- const x = Re(g, e);
658
- o(x === "EDIT" ? { selected: [{ id: l, editable: !0 }], pointerEvent: m } : x === "SELECT" ? { selected: [{ id: l }], pointerEvent: m } : { selected: [], pointerEvent: m });
659
- } else
660
- console.warn("Invalid selection: " + l);
661
- }, h = (l, m = !0) => {
662
- const g = Array.isArray(l) ? l : [l], x = g.map((y) => t.getAnnotation(y)).filter(Boolean);
663
- o({ selected: x.map(({ id: y }) => ({ id: y, editable: m })) }), x.length !== g.length && console.warn("Invalid selection", l);
664
- }, v = (l) => {
665
- if (i.selected.length === 0)
699
+ const x = typeof d == "string" ? d : d.id;
700
+ return s.selected.some((A) => A.id === x);
701
+ }, f = (d, x) => {
702
+ const A = t.getAnnotation(d);
703
+ if (!A) {
704
+ console.warn("Invalid selection: " + d);
705
+ return;
706
+ }
707
+ switch (Gt(A, i)) {
708
+ case "EDIT":
709
+ o({ selected: [{ id: d, editable: !0 }], event: x });
710
+ break;
711
+ case "SELECT":
712
+ o({ selected: [{ id: d }], event: x });
713
+ break;
714
+ default:
715
+ o({ selected: [], event: x });
716
+ }
717
+ }, p = (d, x) => {
718
+ const A = Array.isArray(d) ? d : [d], y = A.map((h) => t.getAnnotation(h)).filter((h) => !!h);
719
+ o({
720
+ selected: y.map((h) => {
721
+ const u = x === void 0 ? Gt(h, i) === "EDIT" : x;
722
+ return { id: h.id, editable: u };
723
+ })
724
+ }), y.length !== A.length && console.warn("Invalid selection", d);
725
+ }, c = (d) => {
726
+ if (r())
666
727
  return !1;
667
- const { selected: m } = i;
668
- m.filter(({ id: g }) => l.includes(g)).length > 0 && o({ selected: m.filter(({ id: g }) => !l.includes(g)) });
669
- };
670
- return t.observe(({ changes: l }) => v((l.deleted || []).map((m) => m.id))), {
671
- clear: r,
672
- clickSelect: u,
673
- get selected() {
674
- return i ? [...i.selected] : null;
728
+ const { selected: x } = s;
729
+ x.some(({ id: A }) => d.includes(A)) && o({ selected: x.filter(({ id: A }) => !d.includes(A)) });
730
+ }, m = (d) => i = d;
731
+ return t.observe(
732
+ ({ changes: d }) => c((d.deleted || []).map((x) => x.id))
733
+ ), {
734
+ get event() {
735
+ return s ? s.event : null;
675
736
  },
676
- get pointerEvent() {
677
- return i ? i.pointerEvent : null;
737
+ get selected() {
738
+ return s ? [...s.selected] : null;
678
739
  },
679
- isEmpty: s,
680
- isSelected: a,
681
- setSelected: h,
682
- subscribe: n
740
+ clear: a,
741
+ isEmpty: r,
742
+ isSelected: l,
743
+ setSelected: p,
744
+ setUserSelectAction: m,
745
+ subscribe: n,
746
+ userSelect: f
683
747
  };
684
- }, Re = (t, e) => typeof e == "function" ? e(t) || "EDIT" : e || "EDIT", Me = [];
685
- for (let t = 0; t < 256; ++t)
686
- Me.push((t + 256).toString(16).slice(1));
687
- typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
688
- const Oe = (t, e) => {
748
+ }, Gt = (t, e) => typeof e == "function" ? e(t) : e || "EDIT";
749
+ var V = [];
750
+ for (var St = 0; St < 256; ++St)
751
+ V.push((St + 256).toString(16).slice(1));
752
+ function hn(t, e = 0) {
753
+ 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();
754
+ }
755
+ var ut, pn = new Uint8Array(16);
756
+ function gn() {
757
+ if (!ut && (ut = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !ut))
758
+ throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
759
+ return ut(pn);
760
+ }
761
+ var mn = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
762
+ const Qt = {
763
+ randomUUID: mn
764
+ };
765
+ function yn(t, e, n) {
766
+ if (Qt.randomUUID && !e && !t)
767
+ return Qt.randomUUID();
768
+ t = t || {};
769
+ var o = t.random || (t.rng || gn)();
770
+ return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, hn(o);
771
+ }
772
+ const Eo = (t, e, n, o) => ({
773
+ id: yn(),
774
+ annotation: typeof t == "string" ? t : t.id,
775
+ created: n || /* @__PURE__ */ new Date(),
776
+ creator: o,
777
+ ...e
778
+ }), bn = (t, e) => {
689
779
  const n = new Set(t.bodies.map((o) => o.id));
690
780
  return e.bodies.filter((o) => !n.has(o.id));
691
- }, Ie = (t, e) => {
781
+ }, wn = (t, e) => {
692
782
  const n = new Set(e.bodies.map((o) => o.id));
693
783
  return t.bodies.filter((o) => !n.has(o.id));
694
- }, Ne = (t, e) => e.bodies.map((n) => {
784
+ }, xn = (t, e) => e.bodies.map((n) => {
695
785
  const o = t.bodies.find((i) => i.id === n.id);
696
- return { newBody: n, oldBody: o && !D(o, n) ? o : void 0 };
697
- }).filter(({ oldBody: n }) => n).map(({ oldBody: n, newBody: o }) => ({ oldBody: n, newBody: o })), Ve = (t, e) => !D(t.target, e.target), Ut = (t, e) => {
698
- const n = Oe(t, e), o = Ie(t, e), i = Ne(t, e);
786
+ return { newBody: n, oldBody: o && !Z(o, n) ? o : void 0 };
787
+ }).filter(({ oldBody: n }) => n).map(({ oldBody: n, newBody: o }) => ({ oldBody: n, newBody: o })), vn = (t, e) => !Z(t.target, e.target), ce = (t, e) => {
788
+ const n = bn(t, e), o = wn(t, e), i = xn(t, e);
699
789
  return {
700
790
  oldValue: t,
701
791
  newValue: e,
702
792
  bodiesCreated: n.length > 0 ? n : void 0,
703
793
  bodiesDeleted: o.length > 0 ? o : void 0,
704
794
  bodiesUpdated: i.length > 0 ? i : void 0,
705
- targetUpdated: Ve(t, e) ? { oldTarget: t.target, newTarget: e.target } : void 0
795
+ targetUpdated: vn(t, e) ? { oldTarget: t.target, newTarget: e.target } : void 0
706
796
  };
707
797
  };
708
- var R = /* @__PURE__ */ ((t) => (t.LOCAL = "LOCAL", t.REMOTE = "REMOTE", t))(R || {});
709
- const Ue = (t, e) => {
798
+ var M = /* @__PURE__ */ ((t) => (t.LOCAL = "LOCAL", t.REMOTE = "REMOTE", t))(M || {});
799
+ const An = (t, e) => {
710
800
  var n, o;
711
- const { changes: i, origin: r } = e;
712
- if (!(!t.options.origin || t.options.origin === r))
801
+ const { changes: i, origin: s } = e;
802
+ if (!(!t.options.origin || t.options.origin === s))
713
803
  return !1;
714
804
  if (t.options.ignore) {
715
- const { ignore: s } = t.options, a = (u) => u && u.length > 0;
716
- if (!(a(i.created) || a(i.deleted))) {
717
- const u = (n = i.updated) == null ? void 0 : n.some((v) => a(v.bodiesCreated) || a(v.bodiesDeleted) || a(v.bodiesUpdated)), h = (o = i.updated) == null ? void 0 : o.some((v) => v.targetUpdated);
718
- if (s === "BODY_ONLY" && u && !h || s === "TARGET_ONLY" && h && !u)
805
+ const { ignore: a } = t.options, r = (l) => l && l.length > 0;
806
+ if (!(r(i.created) || r(i.deleted))) {
807
+ const l = (n = i.updated) == null ? void 0 : n.some((p) => r(p.bodiesCreated) || r(p.bodiesDeleted) || r(p.bodiesUpdated)), f = (o = i.updated) == null ? void 0 : o.some((p) => p.targetUpdated);
808
+ if (a === "BODY_ONLY" && l && !f || a === "TARGET_ONLY" && f && !l)
719
809
  return !1;
720
810
  }
721
811
  }
722
812
  if (t.options.annotations) {
723
- const s = /* @__PURE__ */ new Set([
724
- ...(i.created || []).map((a) => a.id),
725
- ...(i.deleted || []).map((a) => a.id),
726
- ...(i.updated || []).map(({ oldValue: a }) => a.id)
813
+ const a = /* @__PURE__ */ new Set([
814
+ ...(i.created || []).map((r) => r.id),
815
+ ...(i.deleted || []).map((r) => r.id),
816
+ ...(i.updated || []).map(({ oldValue: r }) => r.id)
727
817
  ]);
728
- return !!(Array.isArray(t.options.annotations) ? t.options.annotations : [t.options.annotations]).find((a) => s.has(a));
818
+ return !!(Array.isArray(t.options.annotations) ? t.options.annotations : [t.options.annotations]).find((r) => a.has(r));
729
819
  } else
730
820
  return !0;
731
- }, ke = (t, e) => {
732
- const n = new Set((t.created || []).map((l) => l.id)), o = new Set((t.updated || []).map(({ newValue: l }) => l.id)), i = new Set((e.created || []).map((l) => l.id)), r = new Set((e.deleted || []).map((l) => l.id)), s = new Set((e.updated || []).map(({ oldValue: l }) => l.id)), a = new Set((e.updated || []).filter(({ oldValue: l }) => n.has(l.id) || o.has(l.id)).map(({ oldValue: l }) => l.id)), u = [
733
- ...(t.created || []).filter((l) => !r.has(l.id)).map((l) => s.has(l.id) ? e.updated.find(({ oldValue: m }) => m.id === l.id).newValue : l),
821
+ }, En = (t, e) => {
822
+ const n = new Set((t.created || []).map((c) => c.id)), o = new Set((t.updated || []).map(({ newValue: c }) => c.id)), i = new Set((e.created || []).map((c) => c.id)), s = new Set((e.deleted || []).map((c) => c.id)), a = new Set((e.updated || []).map(({ oldValue: c }) => c.id)), r = new Set((e.updated || []).filter(({ oldValue: c }) => n.has(c.id) || o.has(c.id)).map(({ oldValue: c }) => c.id)), l = [
823
+ ...(t.created || []).filter((c) => !s.has(c.id)).map((c) => a.has(c.id) ? e.updated.find(({ oldValue: m }) => m.id === c.id).newValue : c),
734
824
  ...e.created || []
735
- ], h = [
736
- ...(t.deleted || []).filter((l) => !i.has(l.id)),
737
- ...(e.deleted || []).filter((l) => !n.has(l.id))
738
- ], v = [
739
- ...(t.updated || []).filter(({ newValue: l }) => !r.has(l.id)).map((l) => {
740
- const { oldValue: m, newValue: g } = l;
741
- if (s.has(g.id)) {
742
- const x = e.updated.find((y) => y.oldValue.id === g.id).newValue;
743
- return Ut(m, x);
825
+ ], f = [
826
+ ...(t.deleted || []).filter((c) => !i.has(c.id)),
827
+ ...(e.deleted || []).filter((c) => !n.has(c.id))
828
+ ], p = [
829
+ ...(t.updated || []).filter(({ newValue: c }) => !s.has(c.id)).map((c) => {
830
+ const { oldValue: m, newValue: d } = c;
831
+ if (a.has(d.id)) {
832
+ const x = e.updated.find((A) => A.oldValue.id === d.id).newValue;
833
+ return ce(m, x);
744
834
  } else
745
- return l;
835
+ return c;
746
836
  }),
747
- ...(e.updated || []).filter(({ oldValue: l }) => !a.has(l.id))
837
+ ...(e.updated || []).filter(({ oldValue: c }) => !r.has(c.id))
748
838
  ];
749
- return { created: u, deleted: h, updated: v };
750
- }, Ye = (t) => t.id !== void 0, _e = () => {
751
- const t = /* @__PURE__ */ new Map(), e = /* @__PURE__ */ new Map(), n = [], o = (p, S = {}) => n.push({ onChange: p, options: S }), i = (p) => {
752
- const S = n.findIndex((A) => A.onChange == p);
753
- S > -1 && n.splice(S, 1);
754
- }, r = (p, S) => {
755
- const A = {
756
- origin: p,
839
+ return { created: l, deleted: f, updated: p };
840
+ }, Sn = (t) => t.id !== void 0, Cn = () => {
841
+ const t = /* @__PURE__ */ new Map(), e = /* @__PURE__ */ new Map(), n = [], o = (g, v = {}) => n.push({ onChange: g, options: v }), i = (g) => {
842
+ const v = n.findIndex((S) => S.onChange == g);
843
+ v > -1 && n.splice(v, 1);
844
+ }, s = (g, v) => {
845
+ const S = {
846
+ origin: g,
757
847
  changes: {
758
- created: S.created || [],
759
- updated: S.updated || [],
760
- deleted: S.deleted || []
848
+ created: v.created || [],
849
+ updated: v.updated || [],
850
+ deleted: v.deleted || []
761
851
  },
762
852
  state: [...t.values()]
763
853
  };
764
854
  n.forEach((C) => {
765
- Ue(C, A) && C.onChange(A);
855
+ An(C, S) && C.onChange(S);
766
856
  });
767
- }, s = (p, S = R.LOCAL) => {
768
- if (t.get(p.id))
769
- throw Error(`Cannot add annotation ${p.id} - exists already`);
770
- t.set(p.id, p), p.bodies.forEach((A) => e.set(A.id, p.id)), r(S, { created: [p] });
771
- }, a = (p, S) => {
772
- const A = typeof p == "string" ? S : p, C = typeof p == "string" ? p : p.id, T = t.get(C);
773
- if (T) {
774
- const M = Ut(T, A);
775
- return C === A.id ? t.set(C, A) : (t.delete(C), t.set(A.id, A)), T.bodies.forEach((U) => e.delete(U.id)), A.bodies.forEach((U) => e.set(U.id, A.id)), M;
857
+ }, a = (g, v = M.LOCAL) => {
858
+ if (t.get(g.id))
859
+ throw Error(`Cannot add annotation ${g.id} - exists already`);
860
+ t.set(g.id, g), g.bodies.forEach((S) => e.set(S.id, g.id)), s(v, { created: [g] });
861
+ }, r = (g, v) => {
862
+ const S = typeof g == "string" ? v : g, C = typeof g == "string" ? g : g.id, R = t.get(C);
863
+ if (R) {
864
+ const N = ce(R, S);
865
+ return C === S.id ? t.set(C, S) : (t.delete(C), t.set(S.id, S)), R.bodies.forEach(($) => e.delete($.id)), S.bodies.forEach(($) => e.set($.id, S.id)), N;
776
866
  } else
777
867
  console.warn(`Cannot update annotation ${C} - does not exist`);
778
- }, u = (p, S = R.LOCAL, A = R.LOCAL) => {
779
- const C = Ye(S) ? A : S, T = a(p, S);
780
- T && r(C, { updated: [T] });
781
- }, h = (p, S = R.LOCAL) => {
782
- const A = p.reduce((C, T) => {
783
- const M = a(T);
784
- return M ? [...C, M] : C;
868
+ }, l = (g, v = M.LOCAL, S = M.LOCAL) => {
869
+ const C = Sn(v) ? S : v, R = r(g, v);
870
+ R && s(C, { updated: [R] });
871
+ }, f = (g, v = M.LOCAL) => {
872
+ const S = g.reduce((C, R) => {
873
+ const N = r(R);
874
+ return N ? [...C, N] : C;
785
875
  }, []);
786
- A.length > 0 && r(S, { updated: A });
787
- }, v = (p, S = R.LOCAL) => {
788
- const A = t.get(p.annotation);
789
- if (A) {
876
+ S.length > 0 && s(v, { updated: S });
877
+ }, p = (g, v = M.LOCAL) => {
878
+ const S = t.get(g.annotation);
879
+ if (S) {
790
880
  const C = {
791
- ...A,
792
- bodies: [...A.bodies, p]
881
+ ...S,
882
+ bodies: [...S.bodies, g]
793
883
  };
794
- t.set(A.id, C), e.set(p.id, C.id), r(S, { updated: [{
795
- oldValue: A,
884
+ t.set(S.id, C), e.set(g.id, C.id), s(v, { updated: [{
885
+ oldValue: S,
796
886
  newValue: C,
797
- bodiesCreated: [p]
887
+ bodiesCreated: [g]
798
888
  }] });
799
889
  } else
800
- console.warn(`Attempt to add body to missing annotation: ${p.annotation}`);
801
- }, l = () => [...t.values()], m = (p = R.LOCAL) => {
802
- const S = [...t.values()];
803
- t.clear(), e.clear(), r(p, { deleted: S });
804
- }, g = (p, S = !0, A = R.LOCAL) => {
805
- if (S) {
890
+ console.warn(`Attempt to add body to missing annotation: ${g.annotation}`);
891
+ }, c = () => [...t.values()], m = (g = M.LOCAL) => {
892
+ const v = [...t.values()];
893
+ t.clear(), e.clear(), s(g, { deleted: v });
894
+ }, d = (g, v = !0, S = M.LOCAL) => {
895
+ if (v) {
806
896
  const C = [...t.values()];
807
- t.clear(), e.clear(), p.forEach((T) => {
808
- t.set(T.id, T), T.bodies.forEach((M) => e.set(M.id, T.id));
809
- }), r(A, { created: p, deleted: C });
897
+ t.clear(), e.clear(), g.forEach((R) => {
898
+ t.set(R.id, R), R.bodies.forEach((N) => e.set(N.id, R.id));
899
+ }), s(S, { created: g, deleted: C });
810
900
  } else {
811
- const C = p.reduce((T, M) => {
812
- const U = t.get(M.id);
813
- return U ? [...T, U] : T;
901
+ const C = g.reduce((R, N) => {
902
+ const $ = t.get(N.id);
903
+ return $ ? [...R, $] : R;
814
904
  }, []);
815
905
  if (C.length > 0)
816
- throw Error(`Bulk insert would overwrite the following annotations: ${C.map((T) => T.id).join(", ")}`);
817
- p.forEach((T) => {
818
- t.set(T.id, T), T.bodies.forEach((M) => e.set(M.id, T.id));
819
- }), r(A, { created: p });
906
+ throw Error(`Bulk insert would overwrite the following annotations: ${C.map((R) => R.id).join(", ")}`);
907
+ g.forEach((R) => {
908
+ t.set(R.id, R), R.bodies.forEach((N) => e.set(N.id, R.id));
909
+ }), s(S, { created: g });
820
910
  }
821
- }, x = (p) => {
822
- const S = typeof p == "string" ? p : p.id, A = t.get(S);
823
- if (A)
824
- return t.delete(S), A.bodies.forEach((C) => e.delete(C.id)), A;
825
- console.warn(`Attempt to delete missing annotation: ${S}`);
826
- }, y = (p, S = R.LOCAL) => {
827
- const A = x(p);
828
- A && r(S, { deleted: [A] });
829
- }, w = (p, S = R.LOCAL) => {
830
- const A = p.reduce((C, T) => {
831
- const M = x(T);
832
- return M ? [...C, M] : C;
911
+ }, x = (g) => {
912
+ const v = typeof g == "string" ? g : g.id, S = t.get(v);
913
+ if (S)
914
+ return t.delete(v), S.bodies.forEach((C) => e.delete(C.id)), S;
915
+ console.warn(`Attempt to delete missing annotation: ${v}`);
916
+ }, A = (g, v = M.LOCAL) => {
917
+ const S = x(g);
918
+ S && s(v, { deleted: [S] });
919
+ }, y = (g, v = M.LOCAL) => {
920
+ const S = g.reduce((C, R) => {
921
+ const N = x(R);
922
+ return N ? [...C, N] : C;
833
923
  }, []);
834
- A.length > 0 && r(S, { deleted: A });
835
- }, c = (p, S = R.LOCAL) => {
836
- const A = t.get(p.annotation);
837
- if (A) {
838
- const C = A.bodies.find((T) => T.id === p.id);
839
- if (C) {
840
- e.delete(C.id);
841
- const T = {
842
- ...A,
843
- bodies: A.bodies.filter((M) => M.id !== p.id)
924
+ S.length > 0 && s(v, { deleted: S });
925
+ }, h = (g) => {
926
+ const v = t.get(g.annotation);
927
+ if (v) {
928
+ const S = v.bodies.find((C) => C.id === g.id);
929
+ if (S) {
930
+ e.delete(S.id);
931
+ const C = {
932
+ ...v,
933
+ bodies: v.bodies.filter((R) => R.id !== g.id)
934
+ };
935
+ return t.set(v.id, C), {
936
+ oldValue: v,
937
+ newValue: C,
938
+ bodiesDeleted: [S]
844
939
  };
845
- t.set(A.id, T), r(S, { updated: [{
846
- oldValue: A,
847
- newValue: T,
848
- bodiesDeleted: [C]
849
- }] });
850
940
  } else
851
- console.warn(`Attempt to delete missing body ${p.id} from annotation ${p.annotation}`);
941
+ console.warn(`Attempt to delete missing body ${g.id} from annotation ${g.annotation}`);
852
942
  } else
853
- console.warn(`Attempt to delete body from missing annotation ${p.annotation}`);
854
- }, d = (p) => {
855
- const S = t.get(p);
856
- return S ? { ...S } : void 0;
857
- }, f = (p) => {
858
- const S = e.get(p);
859
- if (S) {
860
- const A = d(S).bodies.find((C) => C.id === p);
861
- if (A)
862
- return A;
863
- console.error(`Store integrity error: body ${p} in index, but not in annotation`);
943
+ console.warn(`Attempt to delete body from missing annotation ${g.annotation}`);
944
+ }, u = (g, v = M.LOCAL) => {
945
+ const S = h(g);
946
+ S && s(v, { updated: [S] });
947
+ }, b = (g, v = M.LOCAL) => {
948
+ const S = g.map((C) => h(C)).filter(Boolean);
949
+ S.length > 0 && s(v, { updated: S });
950
+ }, E = (g) => {
951
+ const v = t.get(g);
952
+ return v ? { ...v } : void 0;
953
+ }, w = (g) => {
954
+ const v = e.get(g);
955
+ if (v) {
956
+ const S = E(v).bodies.find((C) => C.id === g);
957
+ if (S)
958
+ return S;
959
+ console.error(`Store integrity error: body ${g} in index, but not in annotation`);
864
960
  } else
865
- console.warn(`Attempt to retrieve missing body: ${p}`);
866
- }, b = (p, S) => {
867
- if (p.annotation !== S.annotation)
961
+ console.warn(`Attempt to retrieve missing body: ${g}`);
962
+ }, O = (g, v) => {
963
+ if (g.annotation !== v.annotation)
868
964
  throw "Annotation integrity violation: annotation ID must be the same when updating bodies";
869
- const A = t.get(p.annotation);
870
- if (A) {
871
- const C = A.bodies.find((M) => M.id === p.id), T = {
872
- ...A,
873
- bodies: A.bodies.map((M) => M.id === C.id ? S : M)
965
+ const S = t.get(g.annotation);
966
+ if (S) {
967
+ const C = S.bodies.find((N) => N.id === g.id), R = {
968
+ ...S,
969
+ bodies: S.bodies.map((N) => N.id === C.id ? v : N)
874
970
  };
875
- return t.set(A.id, T), C.id !== S.id && (e.delete(C.id), e.set(S.id, T.id)), {
876
- oldValue: A,
877
- newValue: T,
878
- bodiesUpdated: [{ oldBody: C, newBody: S }]
971
+ return t.set(S.id, R), C.id !== v.id && (e.delete(C.id), e.set(v.id, R.id)), {
972
+ oldValue: S,
973
+ newValue: R,
974
+ bodiesUpdated: [{ oldBody: C, newBody: v }]
879
975
  };
880
976
  } else
881
- console.warn(`Attempt to add body to missing annotation ${p.annotation}`);
882
- }, E = (p, S, A = R.LOCAL) => {
883
- const C = b(p, S);
884
- C && r(A, { updated: [C] });
885
- }, L = (p, S = R.LOCAL) => {
886
- const A = p.map((C) => b({ id: C.id, annotation: C.annotation }, C)).filter(Boolean);
887
- r(S, { updated: A });
888
- }, B = (p) => {
889
- const S = t.get(p.annotation);
890
- if (S) {
891
- const A = {
892
- ...S,
977
+ console.warn(`Attempt to add body to missing annotation ${g.annotation}`);
978
+ }, B = (g, v, S = M.LOCAL) => {
979
+ const C = O(g, v);
980
+ C && s(S, { updated: [C] });
981
+ }, L = (g, v = M.LOCAL) => {
982
+ const S = g.map((C) => O({ id: C.id, annotation: C.annotation }, C)).filter(Boolean);
983
+ s(v, { updated: S });
984
+ }, T = (g) => {
985
+ const v = t.get(g.annotation);
986
+ if (v) {
987
+ const S = {
988
+ ...v,
893
989
  target: {
894
- ...S.target,
895
- ...p
990
+ ...v.target,
991
+ ...g
896
992
  }
897
993
  };
898
- return t.set(S.id, A), {
899
- oldValue: S,
900
- newValue: A,
994
+ return t.set(v.id, S), {
995
+ oldValue: v,
996
+ newValue: S,
901
997
  targetUpdated: {
902
- oldTarget: S.target,
903
- newTarget: p
998
+ oldTarget: v.target,
999
+ newTarget: g
904
1000
  }
905
1001
  };
906
1002
  } else
907
- console.warn(`Attempt to update target on missing annotation: ${p.annotation}`);
1003
+ console.warn(`Attempt to update target on missing annotation: ${g.annotation}`);
908
1004
  };
909
1005
  return {
910
- addAnnotation: s,
911
- addBody: v,
912
- all: l,
913
- bulkAddAnnotation: g,
914
- bulkDeleteAnnotation: w,
915
- bulkUpdateAnnotation: h,
1006
+ addAnnotation: a,
1007
+ addBody: p,
1008
+ all: c,
1009
+ bulkAddAnnotation: d,
1010
+ bulkDeleteAnnotation: y,
1011
+ bulkDeleteBodies: b,
1012
+ bulkUpdateAnnotation: f,
916
1013
  bulkUpdateBodies: L,
917
- bulkUpdateTargets: (p, S = R.LOCAL) => {
918
- const A = p.map((C) => B(C)).filter(Boolean);
919
- A.length > 0 && r(S, { updated: A });
1014
+ bulkUpdateTargets: (g, v = M.LOCAL) => {
1015
+ const S = g.map((C) => T(C)).filter(Boolean);
1016
+ S.length > 0 && s(v, { updated: S });
920
1017
  },
921
1018
  clear: m,
922
- deleteAnnotation: y,
923
- deleteBody: c,
924
- getAnnotation: d,
925
- getBody: f,
1019
+ deleteAnnotation: A,
1020
+ deleteBody: u,
1021
+ getAnnotation: E,
1022
+ getBody: w,
926
1023
  observe: o,
927
1024
  unobserve: i,
928
- updateAnnotation: u,
929
- updateBody: E,
930
- updateTarget: (p, S = R.LOCAL) => {
931
- const A = B(p);
932
- A && r(S, { updated: [A] });
1025
+ updateAnnotation: l,
1026
+ updateBody: B,
1027
+ updateTarget: (g, v = M.LOCAL) => {
1028
+ const S = T(g);
1029
+ S && s(v, { updated: [S] });
933
1030
  }
934
1031
  };
935
1032
  };
936
- let Xe = () => ({
1033
+ let Ln = () => ({
937
1034
  emit(t, ...e) {
938
1035
  for (let n = 0, o = this.events[t] || [], i = o.length; n < i; n++)
939
1036
  o[n](...e);
@@ -947,125 +1044,121 @@ let Xe = () => ({
947
1044
  };
948
1045
  }
949
1046
  });
950
- const De = 250, He = (t) => {
951
- const e = Xe(), n = [];
952
- let o = -1, i = !1, r = 0;
953
- const s = (g) => {
1047
+ const On = 250, Tn = (t) => {
1048
+ const e = Ln(), n = [];
1049
+ let o = -1, i = !1, s = 0;
1050
+ const a = (d) => {
954
1051
  if (!i) {
955
- const { changes: x } = g, y = performance.now();
956
- if (y - r > De)
1052
+ const { changes: x } = d, A = performance.now();
1053
+ if (A - s > On)
957
1054
  n.splice(o + 1), n.push(x), o = n.length - 1;
958
1055
  else {
959
- const w = n.length - 1;
960
- n[w] = ke(n[w], x);
1056
+ const y = n.length - 1;
1057
+ n[y] = En(n[y], x);
961
1058
  }
962
- r = y;
1059
+ s = A;
963
1060
  }
964
1061
  i = !1;
965
1062
  };
966
- t.observe(s, { origin: R.LOCAL });
967
- const a = (g) => g && g.length > 0 && t.bulkDeleteAnnotation(g), u = (g) => g && g.length > 0 && t.bulkAddAnnotation(g, !1), h = (g) => g && g.length > 0 && t.bulkUpdateAnnotation(g.map(({ oldValue: x }) => x)), v = (g) => g && g.length > 0 && t.bulkUpdateAnnotation(g.map(({ newValue: x }) => x)), l = (g) => g && g.length > 0 && t.bulkAddAnnotation(g, !1), m = (g) => g && g.length > 0 && t.bulkDeleteAnnotation(g);
1063
+ t.observe(a, { origin: M.LOCAL });
1064
+ const r = (d) => d && d.length > 0 && t.bulkDeleteAnnotation(d), l = (d) => d && d.length > 0 && t.bulkAddAnnotation(d, !1), f = (d) => d && d.length > 0 && t.bulkUpdateAnnotation(d.map(({ oldValue: x }) => x)), p = (d) => d && d.length > 0 && t.bulkUpdateAnnotation(d.map(({ newValue: x }) => x)), c = (d) => d && d.length > 0 && t.bulkAddAnnotation(d, !1), m = (d) => d && d.length > 0 && t.bulkDeleteAnnotation(d);
968
1065
  return {
969
1066
  canRedo: () => n.length - 1 > o,
970
1067
  canUndo: () => o > -1,
971
- destroy: () => t.unobserve(s),
972
- on: (g, x) => e.on(g, x),
1068
+ destroy: () => t.unobserve(a),
1069
+ on: (d, x) => e.on(d, x),
973
1070
  redo: () => {
974
1071
  if (n.length - 1 > o) {
975
1072
  i = !0;
976
- const { created: g, updated: x, deleted: y } = n[o + 1];
977
- u(g), v(x), m(y), e.emit("redo", n[o + 1]), o += 1;
1073
+ const { created: d, updated: x, deleted: A } = n[o + 1];
1074
+ l(d), p(x), m(A), e.emit("redo", n[o + 1]), o += 1;
978
1075
  }
979
1076
  },
980
1077
  undo: () => {
981
1078
  if (o > -1) {
982
1079
  i = !0;
983
- const { created: g, updated: x, deleted: y } = n[o];
984
- a(g), h(x), l(y), e.emit("undo", n[o]), o -= 1;
1080
+ const { created: d, updated: x, deleted: A } = n[o];
1081
+ r(d), f(x), c(A), e.emit("undo", n[o]), o -= 1;
985
1082
  }
986
1083
  }
987
1084
  };
988
- }, $e = () => {
989
- const { subscribe: t, set: e } = ft([]);
1085
+ }, Rn = () => {
1086
+ const { subscribe: t, set: e } = _t([]);
990
1087
  return {
991
1088
  subscribe: t,
992
1089
  set: e
993
1090
  };
994
- }, Pe = (t, e, n, o) => {
995
- const { store: i, selection: r, hover: s, viewport: a } = t, u = /* @__PURE__ */ new Map();
996
- let h = [], v, l;
997
- const m = (c, d) => {
998
- u.has(c) ? u.get(c).push(d) : u.set(c, [d]);
999
- }, g = (c, d) => {
1000
- const f = u.get(c);
1001
- f && f.indexOf(d) > 0 && f.splice(f.indexOf(d), 1);
1002
- }, x = (c, d, f) => {
1003
- u.has(c) && setTimeout(() => {
1004
- u.get(c).forEach((b) => {
1091
+ }, Bn = (t, e, n, o) => {
1092
+ const { store: i, selection: s, hover: a, viewport: r } = t, l = /* @__PURE__ */ new Map();
1093
+ let f = [], p;
1094
+ const c = (A, y) => {
1095
+ l.has(A) ? l.get(A).push(y) : l.set(A, [y]);
1096
+ }, m = (A, y) => {
1097
+ const h = l.get(A);
1098
+ if (h) {
1099
+ const u = h.indexOf(y);
1100
+ u !== -1 && h.splice(u, 1);
1101
+ }
1102
+ }, d = (A, y, h) => {
1103
+ l.has(A) && setTimeout(() => {
1104
+ l.get(A).forEach((u) => {
1005
1105
  if (n) {
1006
- const E = Array.isArray(d) ? d.map((B) => n.serialize(B)) : n.serialize(d), L = f ? f instanceof PointerEvent ? f : n.serialize(f) : void 0;
1007
- b(E, L);
1106
+ const b = Array.isArray(y) ? y.map((w) => n.serialize(w)) : n.serialize(y), E = h ? h instanceof PointerEvent ? h : n.serialize(h) : void 0;
1107
+ u(b, E);
1008
1108
  } else
1009
- b(d, f);
1109
+ u(y, h);
1010
1110
  });
1011
1111
  }, 1);
1012
- }, y = () => {
1013
- const { selected: c } = r, d = (c || []).map(({ id: f }) => i.getAnnotation(f));
1014
- d.forEach((f) => {
1015
- const b = h.find((E) => E.id === f.id);
1016
- (!b || !D(b, f)) && x("updateAnnotation", f, b);
1017
- }), h = h.map((f) => d.find(({ id: E }) => E === f.id) || f);
1018
1112
  };
1019
- r.subscribe(({ selected: c }) => {
1020
- if (!(h.length === 0 && c.length === 0)) {
1021
- if (h.length === 0 && c.length > 0)
1022
- h = c.map(({ id: d }) => i.getAnnotation(d));
1023
- else if (h.length > 0 && c.length === 0)
1024
- h.forEach((d) => {
1025
- const f = i.getAnnotation(d.id);
1026
- f && !D(f, d) && x("updateAnnotation", f, d);
1027
- }), h = [];
1113
+ s.subscribe(({ selected: A }) => {
1114
+ if (!(f.length === 0 && A.length === 0)) {
1115
+ if (f.length === 0 && A.length > 0)
1116
+ f = A.map(({ id: y }) => i.getAnnotation(y));
1117
+ else if (f.length > 0 && A.length === 0)
1118
+ f.forEach((y) => {
1119
+ const h = i.getAnnotation(y.id);
1120
+ h && !Z(h, y) && d("updateAnnotation", h, y);
1121
+ }), f = [];
1028
1122
  else {
1029
- const d = new Set(h.map((b) => b.id)), f = new Set(c.map(({ id: b }) => b));
1030
- h.filter((b) => !f.has(b.id)).forEach((b) => {
1031
- const E = i.getAnnotation(b.id);
1032
- E && !D(E, b) && x("updateAnnotation", E, b);
1033
- }), h = [
1123
+ const y = new Set(f.map((u) => u.id)), h = new Set(A.map(({ id: u }) => u));
1124
+ f.filter((u) => !h.has(u.id)).forEach((u) => {
1125
+ const b = i.getAnnotation(u.id);
1126
+ b && !Z(b, u) && d("updateAnnotation", b, u);
1127
+ }), f = [
1034
1128
  // Remove annotations that were deselected
1035
- ...h.filter((b) => f.has(b.id)),
1129
+ ...f.filter((u) => h.has(u.id)),
1036
1130
  // Add editable annotations that were selected
1037
- ...c.filter(({ id: b }) => !d.has(b)).map(({ id: b }) => i.getAnnotation(b))
1131
+ ...A.filter(({ id: u }) => !y.has(u)).map(({ id: u }) => i.getAnnotation(u))
1038
1132
  ];
1039
1133
  }
1040
- x("selectionChanged", h);
1134
+ d("selectionChanged", f);
1041
1135
  }
1042
- }), s.subscribe((c) => {
1043
- !v && c ? x("mouseEnterAnnotation", i.getAnnotation(c)) : v && !c ? x("mouseLeaveAnnotation", i.getAnnotation(v)) : v && c && (x("mouseLeaveAnnotation", i.getAnnotation(v)), x("mouseEnterAnnotation", i.getAnnotation(c))), v = c;
1044
- }), a == null || a.subscribe((c) => x("viewportIntersect", c.map((d) => i.getAnnotation(d)))), i.observe((c) => {
1045
- o && (l && clearTimeout(l), l = setTimeout(y, 1e3));
1046
- const { created: d, deleted: f } = c.changes;
1047
- (d || []).forEach((b) => x("createAnnotation", b)), (f || []).forEach((b) => x("deleteAnnotation", b)), (c.changes.updated || []).filter((b) => [
1048
- ...b.bodiesCreated || [],
1049
- ...b.bodiesDeleted || [],
1050
- ...b.bodiesUpdated || []
1051
- ].length > 0).forEach(({ oldValue: b, newValue: E }) => {
1052
- const L = h.find((B) => B.id === b.id) || b;
1053
- h = h.map((B) => B.id === b.id ? E : B), x("updateAnnotation", E, L);
1136
+ }), a.subscribe((A) => {
1137
+ !p && A ? d("mouseEnterAnnotation", i.getAnnotation(A)) : p && !A ? d("mouseLeaveAnnotation", i.getAnnotation(p)) : p && A && (d("mouseLeaveAnnotation", i.getAnnotation(p)), d("mouseEnterAnnotation", i.getAnnotation(A))), p = A;
1138
+ }), r == null || r.subscribe((A) => d("viewportIntersect", A.map((y) => i.getAnnotation(y)))), i.observe((A) => {
1139
+ const { created: y, deleted: h } = A.changes;
1140
+ (y || []).forEach((u) => d("createAnnotation", u)), (h || []).forEach((u) => d("deleteAnnotation", u)), (A.changes.updated || []).filter((u) => [
1141
+ ...u.bodiesCreated || [],
1142
+ ...u.bodiesDeleted || [],
1143
+ ...u.bodiesUpdated || []
1144
+ ].length > 0).forEach(({ oldValue: u, newValue: b }) => {
1145
+ const E = f.find((w) => w.id === u.id) || u;
1146
+ f = f.map((w) => w.id === u.id ? b : w), d("updateAnnotation", b, E);
1054
1147
  });
1055
- }, { origin: R.LOCAL }), i.observe((c) => {
1056
- if (h) {
1057
- const d = new Set(h.map((b) => b.id)), f = (c.changes.updated || []).filter(({ newValue: b }) => d.has(b.id)).map(({ newValue: b }) => b);
1058
- f.length > 0 && (h = h.map((b) => f.find((L) => L.id === b.id) || b));
1148
+ }, { origin: M.LOCAL }), i.observe((A) => {
1149
+ if (f) {
1150
+ const y = new Set(f.map((u) => u.id)), h = (A.changes.updated || []).filter(({ newValue: u }) => y.has(u.id)).map(({ newValue: u }) => u);
1151
+ h.length > 0 && (f = f.map((u) => h.find((E) => E.id === u.id) || u));
1059
1152
  }
1060
- }, { origin: R.REMOTE });
1061
- const w = (c) => (d) => {
1062
- const { updated: f } = d;
1063
- c ? (f || []).forEach((b) => x("updateAnnotation", b.oldValue, b.newValue)) : (f || []).forEach((b) => x("updateAnnotation", b.newValue, b.oldValue));
1153
+ }, { origin: M.REMOTE });
1154
+ const x = (A) => (y) => {
1155
+ const { updated: h } = y;
1156
+ A ? (h || []).forEach((u) => d("updateAnnotation", u.oldValue, u.newValue)) : (h || []).forEach((u) => d("updateAnnotation", u.newValue, u.oldValue));
1064
1157
  };
1065
- return e.on("undo", w(!0)), e.on("redo", w(!1)), { on: m, off: g, emit: x };
1066
- }, ze = (t) => (e) => e.reduce((n, o) => {
1067
- const { parsed: i, error: r } = t.parse(o);
1068
- return r ? {
1158
+ return e.on("undo", x(!0)), e.on("redo", x(!1)), { on: c, off: m, emit: d };
1159
+ }, Mn = (t) => (e) => e.reduce((n, o) => {
1160
+ const { parsed: i, error: s } = t.parse(o);
1161
+ return s ? {
1069
1162
  parsed: n.parsed,
1070
1163
  failed: [...n.failed, o]
1071
1164
  } : i ? {
@@ -1074,232 +1167,235 @@ const De = 250, He = (t) => {
1074
1167
  } : {
1075
1168
  ...n
1076
1169
  };
1077
- }, { parsed: [], failed: [] }), Fe = (t, e, n) => {
1078
- const { store: o, selection: i } = t, r = (w) => {
1170
+ }, { parsed: [], failed: [] }), kn = (t, e, n) => {
1171
+ const { store: o, selection: i } = t, s = (h) => {
1079
1172
  if (n) {
1080
- const { parsed: c, error: d } = n.parse(w);
1081
- c ? o.addAnnotation(c, R.REMOTE) : console.error(d);
1173
+ const { parsed: u, error: b } = n.parse(h);
1174
+ u ? o.addAnnotation(u, M.REMOTE) : console.error(b);
1082
1175
  } else
1083
- o.addAnnotation(w, R.REMOTE);
1084
- }, s = () => i.clear(), a = () => o.clear(), u = (w) => {
1085
- const c = o.getAnnotation(w);
1086
- return n && c ? n.serialize(c) : c;
1087
- }, h = () => n ? o.all().map(n.serialize) : o.all(), v = () => {
1088
- var w;
1089
- const c = (((w = i.selected) == null ? void 0 : w.map((d) => d.id)) || []).map((d) => o.getAnnotation(d)).filter(Boolean);
1090
- return n ? c.map(n.serialize) : c;
1091
- }, l = (w, c = !0) => fetch(w).then((d) => d.json()).then((d) => (g(d, c), d)), m = (w) => {
1092
- if (typeof w == "string") {
1093
- const c = o.getAnnotation(w);
1094
- if (o.deleteAnnotation(w), c)
1095
- return n ? n.serialize(c) : c;
1176
+ o.addAnnotation(h, M.REMOTE);
1177
+ }, a = () => i.clear(), r = () => o.clear(), l = (h) => {
1178
+ const u = o.getAnnotation(h);
1179
+ return n && u ? n.serialize(u) : u;
1180
+ }, f = () => n ? o.all().map(n.serialize) : o.all(), p = () => {
1181
+ var h;
1182
+ const u = (((h = i.selected) == null ? void 0 : h.map((b) => b.id)) || []).map((b) => o.getAnnotation(b)).filter(Boolean);
1183
+ return n ? u.map(n.serialize) : u;
1184
+ }, c = (h, u = !0) => fetch(h).then((b) => b.json()).then((b) => (d(b, u), b)), m = (h) => {
1185
+ if (typeof h == "string") {
1186
+ const u = o.getAnnotation(h);
1187
+ if (o.deleteAnnotation(h), u)
1188
+ return n ? n.serialize(u) : u;
1096
1189
  } else {
1097
- const c = n ? n.parse(w).parsed : w;
1098
- if (c)
1099
- return o.deleteAnnotation(c), w;
1190
+ const u = n ? n.parse(h).parsed : h;
1191
+ if (u)
1192
+ return o.deleteAnnotation(u), h;
1100
1193
  }
1101
- }, g = (w, c = !0) => {
1194
+ }, d = (h, u = !0) => {
1102
1195
  if (n) {
1103
- const { parsed: d, failed: f } = ze(n)(w);
1104
- f.length > 0 && console.warn(`Discarded ${f.length} invalid annotations`, f), o.bulkAddAnnotation(d, c, R.REMOTE);
1196
+ const { parsed: b, failed: E } = Mn(n)(h);
1197
+ E.length > 0 && console.warn(`Discarded ${E.length} invalid annotations`, E), o.bulkAddAnnotation(b, u, M.REMOTE);
1105
1198
  } else
1106
- o.bulkAddAnnotation(w, c, R.REMOTE);
1107
- }, x = (w) => {
1108
- w ? i.setSelected(w) : i.clear();
1109
- }, y = (w) => {
1199
+ o.bulkAddAnnotation(h, u, M.REMOTE);
1200
+ }, x = (h, u) => {
1201
+ h ? i.setSelected(h, u) : i.clear();
1202
+ }, A = (h) => {
1203
+ i.clear(), i.setUserSelectAction(h);
1204
+ }, y = (h) => {
1110
1205
  if (n) {
1111
- const c = n.parse(w).parsed, d = n.serialize(o.getAnnotation(c.id));
1112
- return o.updateAnnotation(c), d;
1206
+ const u = n.parse(h).parsed, b = n.serialize(o.getAnnotation(u.id));
1207
+ return o.updateAnnotation(u), b;
1113
1208
  } else {
1114
- const c = o.getAnnotation(w.id);
1115
- return o.updateAnnotation(w), c;
1209
+ const u = o.getAnnotation(h.id);
1210
+ return o.updateAnnotation(h), u;
1116
1211
  }
1117
1212
  };
1118
1213
  return {
1119
- addAnnotation: r,
1120
- cancelSelected: s,
1214
+ addAnnotation: s,
1215
+ cancelSelected: a,
1121
1216
  canRedo: e.canRedo,
1122
1217
  canUndo: e.canUndo,
1123
- clearAnnotations: a,
1124
- getAnnotationById: u,
1125
- getAnnotations: h,
1126
- getSelected: v,
1127
- loadAnnotations: l,
1218
+ clearAnnotations: r,
1219
+ getAnnotationById: l,
1220
+ getAnnotations: f,
1221
+ getSelected: p,
1222
+ loadAnnotations: c,
1128
1223
  redo: e.redo,
1129
1224
  removeAnnotation: m,
1130
- setAnnotations: g,
1225
+ setAnnotations: d,
1131
1226
  setSelected: x,
1227
+ setUserSelectAction: A,
1132
1228
  undo: e.undo,
1133
1229
  updateAnnotation: y
1134
1230
  };
1135
- }, We = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
1136
- let qe = (t) => crypto.getRandomValues(new Uint8Array(t)), je = (t, e, n) => {
1231
+ }, Nn = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
1232
+ let In = (t) => crypto.getRandomValues(new Uint8Array(t)), _n = (t, e, n) => {
1137
1233
  let o = (2 << Math.log(t.length - 1) / Math.LN2) - 1, i = -~(1.6 * o * e / t.length);
1138
- return (r = e) => {
1139
- let s = "";
1234
+ return (s = e) => {
1235
+ let a = "";
1140
1236
  for (; ; ) {
1141
- let a = n(i), u = i;
1142
- for (; u--; )
1143
- if (s += t[a[u] & o] || "", s.length === r)
1144
- return s;
1237
+ let r = n(i), l = i;
1238
+ for (; l--; )
1239
+ if (a += t[r[l] & o] || "", a.length === s) return a;
1145
1240
  }
1146
1241
  };
1147
- }, Ge = (t, e = 21) => je(t, e, qe), Ke = (t = 21) => {
1242
+ }, Un = (t, e = 21) => _n(t, e, In), Vn = (t = 21) => {
1148
1243
  let e = "", n = crypto.getRandomValues(new Uint8Array(t));
1149
1244
  for (; t--; )
1150
- e += We[n[t] & 63];
1245
+ e += Nn[n[t] & 63];
1151
1246
  return e;
1152
1247
  };
1153
- const Qe = () => ({ isGuest: !0, id: Ge("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_", 20)() }), Je = (t) => {
1248
+ const Yn = () => ({ isGuest: !0, id: Un("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_", 20)() }), Dn = (t) => {
1154
1249
  const e = JSON.stringify(t);
1155
1250
  let n = 0;
1156
1251
  for (let o = 0, i = e.length; o < i; o++) {
1157
- let r = e.charCodeAt(o);
1158
- n = (n << 5) - n + r, n |= 0;
1252
+ let s = e.charCodeAt(o);
1253
+ n = (n << 5) - n + s, n |= 0;
1159
1254
  }
1160
1255
  return `${n}`;
1161
- }, kt = (t) => t ? typeof t == "object" ? { ...t } : t : void 0, Ze = (t, e) => (Array.isArray(t) ? t : [t]).map((n) => {
1162
- const { id: o, type: i, purpose: r, value: s, created: a, creator: u, ...h } = n;
1256
+ }, le = (t) => t ? typeof t == "object" ? { ...t } : t : void 0, Kn = (t, e) => (Array.isArray(t) ? t : [t]).map((n) => {
1257
+ const { id: o, type: i, purpose: s, value: a, created: r, modified: l, creator: f, ...p } = n;
1163
1258
  return {
1164
- id: o || `temp-${Je(n)}`,
1259
+ id: o || `temp-${Dn(n)}`,
1165
1260
  annotation: e,
1166
1261
  type: i,
1167
- purpose: r,
1168
- value: s,
1169
- created: a ? new Date(a) : void 0,
1170
- creator: kt(u),
1171
- ...h
1262
+ purpose: s,
1263
+ value: a,
1264
+ creator: le(f),
1265
+ created: r ? new Date(r) : void 0,
1266
+ updated: l ? new Date(l) : void 0,
1267
+ ...p
1172
1268
  };
1173
- }), tn = (t) => t.map((e) => {
1174
- var n, o;
1175
- const i = { ...e };
1176
- return delete i.annotation, (n = i.id) != null && n.startsWith("temp-") && delete i.id, { ...i, created: (o = i.created) == null ? void 0 : o.toISOString() };
1269
+ }), Xn = (t) => t.map((e) => {
1270
+ var n;
1271
+ const { annotation: o, created: i, updated: s, ...a } = e, r = {
1272
+ ...a,
1273
+ created: i == null ? void 0 : i.toISOString(),
1274
+ modified: s == null ? void 0 : s.toISOString()
1275
+ };
1276
+ return (n = r.id) != null && n.startsWith("temp-") && delete r.id, r;
1177
1277
  });
1178
- Ke();
1179
- const An = (t, e) => ({
1180
- parse: (n) => on(n),
1181
- serialize: (n) => rn(n, t, e)
1182
- }), en = (t) => t.quote !== void 0 && t.start !== void 0 && t.end !== void 0, nn = (t) => {
1278
+ Vn();
1279
+ const So = (t, e) => ({
1280
+ parse: (n) => Hn(n),
1281
+ serialize: (n) => jn(n, t, e)
1282
+ }), Pn = (t) => t.quote !== void 0 && t.start !== void 0 && t.end !== void 0, $n = (t) => {
1183
1283
  const {
1184
1284
  id: e,
1185
1285
  creator: n,
1186
1286
  created: o,
1187
1287
  modified: i,
1188
- target: r
1189
- } = t, s = Array.isArray(r) ? r : [r];
1190
- if (s.length === 0)
1288
+ target: s
1289
+ } = t, a = Array.isArray(s) ? s : [s];
1290
+ if (a.length === 0)
1191
1291
  return { error: Error(`No targets found for annotation: ${t.id}`) };
1192
- const a = {
1193
- creator: kt(n),
1292
+ const r = {
1293
+ creator: le(n),
1194
1294
  created: o ? new Date(o) : void 0,
1195
1295
  updated: i ? new Date(i) : void 0,
1196
1296
  annotation: e,
1197
1297
  selector: [],
1198
- styleClass: s[0].styleClass
1298
+ styleClass: a[0].styleClass
1199
1299
  };
1200
- for (const u of s) {
1201
- const v = (Array.isArray(u.selector) ? u.selector : [u.selector]).reduce((l, m) => {
1300
+ for (const l of a) {
1301
+ const p = (Array.isArray(l.selector) ? l.selector : [l.selector]).reduce((c, m) => {
1202
1302
  switch (m.type) {
1203
1303
  case "TextQuoteSelector":
1204
- l.quote = m.exact;
1304
+ c.quote = m.exact;
1205
1305
  break;
1206
1306
  case "TextPositionSelector":
1207
- l.start = m.start, l.end = m.end;
1307
+ c.start = m.start, c.end = m.end;
1208
1308
  break;
1209
1309
  }
1210
- return l;
1310
+ return c;
1211
1311
  }, {});
1212
- if (en(v))
1213
- a.selector.push({ id: u.id, ...v });
1312
+ if (Pn(p))
1313
+ r.selector.push({ id: l.id, ...p });
1214
1314
  else {
1215
- const l = [
1216
- v.start ? void 0 : "TextPositionSelector",
1217
- v.quote ? void 0 : "TextQuoteSelector"
1315
+ const c = [
1316
+ p.start ? void 0 : "TextPositionSelector",
1317
+ p.quote ? void 0 : "TextQuoteSelector"
1218
1318
  ].filter(Boolean);
1219
- return { error: Error(`Missing selector types: ${l.join(" and ")} for annotation: ${t.id}`) };
1319
+ return { error: Error(`Missing selector types: ${c.join(" and ")} for annotation: ${t.id}`) };
1220
1320
  }
1221
1321
  }
1222
- return { parsed: a };
1223
- }, on = (t) => {
1224
- const e = t.id || Vt(), {
1322
+ return { parsed: r };
1323
+ }, Hn = (t) => {
1324
+ const e = t.id || ae(), {
1225
1325
  creator: n,
1226
1326
  created: o,
1227
1327
  modified: i,
1228
- body: r,
1229
- ...s
1230
- } = t, a = Ze(r, e), u = nn(t);
1231
- return "error" in u ? { error: u.error } : {
1328
+ body: s,
1329
+ ...a
1330
+ } = t, r = Kn(s, e), l = $n(t);
1331
+ return "error" in l ? { error: l.error } : {
1232
1332
  parsed: {
1233
- ...s,
1333
+ ...a,
1234
1334
  id: e,
1235
- bodies: a,
1236
- target: u.parsed
1335
+ bodies: r,
1336
+ target: l.parsed
1237
1337
  }
1238
1338
  };
1239
- }, rn = (t, e, n) => {
1240
- const { bodies: o, target: i, ...r } = t, {
1241
- selector: s,
1242
- creator: a,
1243
- created: u,
1244
- updated: h,
1245
- ...v
1246
- } = i, l = s.map((m) => {
1247
- const { quote: g, start: x, end: y, range: w } = m, { prefix: c, suffix: d } = Kt(w, n), f = [{
1339
+ }, jn = (t, e, n) => {
1340
+ const { bodies: o, target: i, ...s } = t, {
1341
+ selector: a,
1342
+ creator: r,
1343
+ created: l,
1344
+ updated: f,
1345
+ ...p
1346
+ } = i, c = a.map((m) => {
1347
+ const { quote: d, start: x, end: A, range: y } = m, { prefix: h, suffix: u } = Te(y, n), b = [{
1248
1348
  type: "TextQuoteSelector",
1249
- exact: g,
1250
- prefix: c,
1251
- suffix: d
1349
+ exact: d,
1350
+ prefix: h,
1351
+ suffix: u
1252
1352
  }, {
1253
1353
  type: "TextPositionSelector",
1254
1354
  start: x,
1255
- end: y
1355
+ end: A
1256
1356
  }];
1257
1357
  return {
1258
- ...v,
1358
+ ...p,
1259
1359
  id: m.id,
1260
1360
  source: e,
1261
- selector: f
1361
+ selector: b
1262
1362
  };
1263
1363
  });
1264
1364
  return {
1265
- ...r,
1365
+ ...s,
1266
1366
  "@context": "http://www.w3.org/ns/anno.jsonld",
1267
1367
  id: t.id,
1268
1368
  type: "Annotation",
1269
- body: tn(t.bodies),
1270
- creator: a,
1271
- created: u == null ? void 0 : u.toISOString(),
1272
- modified: h == null ? void 0 : h.toISOString(),
1273
- target: l
1369
+ body: Xn(t.bodies),
1370
+ creator: r,
1371
+ created: l == null ? void 0 : l.toISOString(),
1372
+ modified: f == null ? void 0 : f.toISOString(),
1373
+ target: c
1274
1374
  };
1275
1375
  };
1276
- function sn(t, e, n, o, i) {
1277
- Yt(t, e, n || 0, o || t.length - 1, i || an);
1278
- }
1279
- function Yt(t, e, n, o, i) {
1376
+ function de(t, e, n = 0, o = t.length - 1, i = zn) {
1280
1377
  for (; o > n; ) {
1281
1378
  if (o - n > 600) {
1282
- var r = o - n + 1, s = e - n + 1, a = Math.log(r), u = 0.5 * Math.exp(2 * a / 3), h = 0.5 * Math.sqrt(a * u * (r - u) / r) * (s - r / 2 < 0 ? -1 : 1), v = Math.max(n, Math.floor(e - s * u / r + h)), l = Math.min(o, Math.floor(e + (r - s) * u / r + h));
1283
- Yt(t, e, v, l, i);
1379
+ const l = o - n + 1, f = e - n + 1, p = Math.log(l), c = 0.5 * Math.exp(2 * p / 3), m = 0.5 * Math.sqrt(p * c * (l - c) / l) * (f - l / 2 < 0 ? -1 : 1), d = Math.max(n, Math.floor(e - f * c / l + m)), x = Math.min(o, Math.floor(e + (l - f) * c / l + m));
1380
+ de(t, e, d, x, i);
1284
1381
  }
1285
- var m = t[e], g = n, x = o;
1286
- for (F(t, n, e), i(t[o], m) > 0 && F(t, n, o); g < x; ) {
1287
- for (F(t, g, x), g++, x--; i(t[g], m) < 0; )
1288
- g++;
1289
- for (; i(t[x], m) > 0; )
1290
- x--;
1382
+ const s = t[e];
1383
+ let a = n, r = o;
1384
+ for (tt(t, n, e), i(t[o], s) > 0 && tt(t, n, o); a < r; ) {
1385
+ for (tt(t, a, r), a++, r--; i(t[a], s) < 0; ) a++;
1386
+ for (; i(t[r], s) > 0; ) r--;
1291
1387
  }
1292
- i(t[n], m) === 0 ? F(t, n, x) : (x++, F(t, x, o)), x <= e && (n = x + 1), e <= x && (o = x - 1);
1388
+ i(t[n], s) === 0 ? tt(t, n, r) : (r++, tt(t, r, o)), r <= e && (n = r + 1), e <= r && (o = r - 1);
1293
1389
  }
1294
1390
  }
1295
- function F(t, e, n) {
1296
- var o = t[e];
1391
+ function tt(t, e, n) {
1392
+ const o = t[e];
1297
1393
  t[e] = t[n], t[n] = o;
1298
1394
  }
1299
- function an(t, e) {
1395
+ function zn(t, e) {
1300
1396
  return t < e ? -1 : t > e ? 1 : 0;
1301
1397
  }
1302
- class ln {
1398
+ class Fn {
1303
1399
  constructor(e = 9) {
1304
1400
  this._maxEntries = Math.max(4, e), this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4)), this.clear();
1305
1401
  }
@@ -1309,30 +1405,27 @@ class ln {
1309
1405
  search(e) {
1310
1406
  let n = this.data;
1311
1407
  const o = [];
1312
- if (!J(e, n))
1313
- return o;
1314
- const i = this.toBBox, r = [];
1408
+ if (!ht(e, n)) return o;
1409
+ const i = this.toBBox, s = [];
1315
1410
  for (; n; ) {
1316
- for (let s = 0; s < n.children.length; s++) {
1317
- const a = n.children[s], u = n.leaf ? i(a) : a;
1318
- J(e, u) && (n.leaf ? o.push(a) : at(e, u) ? this._all(a, o) : r.push(a));
1411
+ for (let a = 0; a < n.children.length; a++) {
1412
+ const r = n.children[a], l = n.leaf ? i(r) : r;
1413
+ ht(e, l) && (n.leaf ? o.push(r) : Lt(e, l) ? this._all(r, o) : s.push(r));
1319
1414
  }
1320
- n = r.pop();
1415
+ n = s.pop();
1321
1416
  }
1322
1417
  return o;
1323
1418
  }
1324
1419
  collides(e) {
1325
1420
  let n = this.data;
1326
- if (!J(e, n))
1327
- return !1;
1421
+ if (!ht(e, n)) return !1;
1328
1422
  const o = [];
1329
1423
  for (; n; ) {
1330
1424
  for (let i = 0; i < n.children.length; i++) {
1331
- const r = n.children[i], s = n.leaf ? this.toBBox(r) : r;
1332
- if (J(e, s)) {
1333
- if (n.leaf || at(e, s))
1334
- return !0;
1335
- o.push(r);
1425
+ const s = n.children[i], a = n.leaf ? this.toBBox(s) : s;
1426
+ if (ht(e, a)) {
1427
+ if (n.leaf || Lt(e, a)) return !0;
1428
+ o.push(s);
1336
1429
  }
1337
1430
  }
1338
1431
  n = o.pop();
@@ -1340,8 +1433,7 @@ class ln {
1340
1433
  return !1;
1341
1434
  }
1342
1435
  load(e) {
1343
- if (!(e && e.length))
1344
- return this;
1436
+ if (!(e && e.length)) return this;
1345
1437
  if (e.length < this._minEntries) {
1346
1438
  for (let o = 0; o < e.length; o++)
1347
1439
  this.insert(e[o]);
@@ -1365,21 +1457,20 @@ class ln {
1365
1457
  return e && this._insert(e, this.data.height - 1), this;
1366
1458
  }
1367
1459
  clear() {
1368
- return this.data = z([]), this;
1460
+ return this.data = J([]), this;
1369
1461
  }
1370
1462
  remove(e, n) {
1371
- if (!e)
1372
- return this;
1463
+ if (!e) return this;
1373
1464
  let o = this.data;
1374
- const i = this.toBBox(e), r = [], s = [];
1375
- let a, u, h;
1376
- for (; o || r.length; ) {
1377
- if (o || (o = r.pop(), u = r[r.length - 1], a = s.pop(), h = !0), o.leaf) {
1378
- const v = cn(e, o.children, n);
1379
- if (v !== -1)
1380
- return o.children.splice(v, 1), r.push(o), this._condense(r), this;
1465
+ const i = this.toBBox(e), s = [], a = [];
1466
+ let r, l, f;
1467
+ for (; o || s.length; ) {
1468
+ if (o || (o = s.pop(), l = s[s.length - 1], r = a.pop(), f = !0), o.leaf) {
1469
+ const p = Wn(e, o.children, n);
1470
+ if (p !== -1)
1471
+ return o.children.splice(p, 1), s.push(o), this._condense(s), this;
1381
1472
  }
1382
- !h && !o.leaf && at(o, i) ? (r.push(o), s.push(a), a = 0, u = o, o = o.children[0]) : u ? (a++, o = u.children[a], h = !1) : o = null;
1473
+ !f && !o.leaf && Lt(o, i) ? (s.push(o), a.push(r), r = 0, l = o, o = o.children[0]) : l ? (r++, o = l.children[r], f = !1) : o = null;
1383
1474
  }
1384
1475
  return this;
1385
1476
  }
@@ -1405,135 +1496,133 @@ class ln {
1405
1496
  return n;
1406
1497
  }
1407
1498
  _build(e, n, o, i) {
1408
- const r = o - n + 1;
1409
- let s = this._maxEntries, a;
1410
- if (r <= s)
1411
- return a = z(e.slice(n, o + 1)), P(a, this.toBBox), a;
1412
- i || (i = Math.ceil(Math.log(r) / Math.log(s)), s = Math.ceil(r / Math.pow(s, i - 1))), a = z([]), a.leaf = !1, a.height = i;
1413
- const u = Math.ceil(r / s), h = u * Math.ceil(Math.sqrt(s));
1414
- Bt(e, n, o, h, this.compareMinX);
1415
- for (let v = n; v <= o; v += h) {
1416
- const l = Math.min(v + h - 1, o);
1417
- Bt(e, v, l, u, this.compareMinY);
1418
- for (let m = v; m <= l; m += u) {
1419
- const g = Math.min(m + u - 1, l);
1420
- a.children.push(this._build(e, m, g, i - 1));
1499
+ const s = o - n + 1;
1500
+ let a = this._maxEntries, r;
1501
+ if (s <= a)
1502
+ return r = J(e.slice(n, o + 1)), Q(r, this.toBBox), r;
1503
+ i || (i = Math.ceil(Math.log(s) / Math.log(a)), a = Math.ceil(s / Math.pow(a, i - 1))), r = J([]), r.leaf = !1, r.height = i;
1504
+ const l = Math.ceil(s / a), f = l * Math.ceil(Math.sqrt(a));
1505
+ Jt(e, n, o, f, this.compareMinX);
1506
+ for (let p = n; p <= o; p += f) {
1507
+ const c = Math.min(p + f - 1, o);
1508
+ Jt(e, p, c, l, this.compareMinY);
1509
+ for (let m = p; m <= c; m += l) {
1510
+ const d = Math.min(m + l - 1, c);
1511
+ r.children.push(this._build(e, m, d, i - 1));
1421
1512
  }
1422
1513
  }
1423
- return P(a, this.toBBox), a;
1514
+ return Q(r, this.toBBox), r;
1424
1515
  }
1425
1516
  _chooseSubtree(e, n, o, i) {
1426
1517
  for (; i.push(n), !(n.leaf || i.length - 1 === o); ) {
1427
- let r = 1 / 0, s = 1 / 0, a;
1428
- for (let u = 0; u < n.children.length; u++) {
1429
- const h = n.children[u], v = st(h), l = hn(e, h) - v;
1430
- l < s ? (s = l, r = v < r ? v : r, a = h) : l === s && v < r && (r = v, a = h);
1518
+ let s = 1 / 0, a = 1 / 0, r;
1519
+ for (let l = 0; l < n.children.length; l++) {
1520
+ const f = n.children[l], p = Ct(f), c = Qn(e, f) - p;
1521
+ c < a ? (a = c, s = p < s ? p : s, r = f) : c === a && p < s && (s = p, r = f);
1431
1522
  }
1432
- n = a || n.children[0];
1523
+ n = r || n.children[0];
1433
1524
  }
1434
1525
  return n;
1435
1526
  }
1436
1527
  _insert(e, n, o) {
1437
- const i = o ? e : this.toBBox(e), r = [], s = this._chooseSubtree(i, this.data, n, r);
1438
- for (s.children.push(e), q(s, i); n >= 0 && r[n].children.length > this._maxEntries; )
1439
- this._split(r, n), n--;
1440
- this._adjustParentBBoxes(i, r, n);
1528
+ const i = o ? e : this.toBBox(e), s = [], a = this._chooseSubtree(i, this.data, n, s);
1529
+ for (a.children.push(e), ot(a, i); n >= 0 && s[n].children.length > this._maxEntries; )
1530
+ this._split(s, n), n--;
1531
+ this._adjustParentBBoxes(i, s, n);
1441
1532
  }
1442
1533
  // split overflowed node into two
1443
1534
  _split(e, n) {
1444
- const o = e[n], i = o.children.length, r = this._minEntries;
1445
- this._chooseSplitAxis(o, r, i);
1446
- const s = this._chooseSplitIndex(o, r, i), a = z(o.children.splice(s, o.children.length - s));
1447
- a.height = o.height, a.leaf = o.leaf, P(o, this.toBBox), P(a, this.toBBox), n ? e[n - 1].children.push(a) : this._splitRoot(o, a);
1535
+ const o = e[n], i = o.children.length, s = this._minEntries;
1536
+ this._chooseSplitAxis(o, s, i);
1537
+ const a = this._chooseSplitIndex(o, s, i), r = J(o.children.splice(a, o.children.length - a));
1538
+ r.height = o.height, r.leaf = o.leaf, Q(o, this.toBBox), Q(r, this.toBBox), n ? e[n - 1].children.push(r) : this._splitRoot(o, r);
1448
1539
  }
1449
1540
  _splitRoot(e, n) {
1450
- this.data = z([e, n]), this.data.height = e.height + 1, this.data.leaf = !1, P(this.data, this.toBBox);
1541
+ this.data = J([e, n]), this.data.height = e.height + 1, this.data.leaf = !1, Q(this.data, this.toBBox);
1451
1542
  }
1452
1543
  _chooseSplitIndex(e, n, o) {
1453
- let i, r = 1 / 0, s = 1 / 0;
1454
- for (let a = n; a <= o - n; a++) {
1455
- const u = W(e, 0, a, this.toBBox), h = W(e, a, o, this.toBBox), v = fn(u, h), l = st(u) + st(h);
1456
- v < r ? (r = v, i = a, s = l < s ? l : s) : v === r && l < s && (s = l, i = a);
1544
+ let i, s = 1 / 0, a = 1 / 0;
1545
+ for (let r = n; r <= o - n; r++) {
1546
+ const l = nt(e, 0, r, this.toBBox), f = nt(e, r, o, this.toBBox), p = Jn(l, f), c = Ct(l) + Ct(f);
1547
+ p < s ? (s = p, i = r, a = c < a ? c : a) : p === s && c < a && (a = c, i = r);
1457
1548
  }
1458
1549
  return i || o - n;
1459
1550
  }
1460
1551
  // sorts node children by the best axis for split
1461
1552
  _chooseSplitAxis(e, n, o) {
1462
- const i = e.leaf ? this.compareMinX : dn, r = e.leaf ? this.compareMinY : un, s = this._allDistMargin(e, n, o, i), a = this._allDistMargin(e, n, o, r);
1463
- s < a && e.children.sort(i);
1553
+ const i = e.leaf ? this.compareMinX : qn, s = e.leaf ? this.compareMinY : Gn, a = this._allDistMargin(e, n, o, i), r = this._allDistMargin(e, n, o, s);
1554
+ a < r && e.children.sort(i);
1464
1555
  }
1465
1556
  // total margin of all possible split distributions where each node is at least m full
1466
1557
  _allDistMargin(e, n, o, i) {
1467
1558
  e.children.sort(i);
1468
- const r = this.toBBox, s = W(e, 0, n, r), a = W(e, o - n, o, r);
1469
- let u = Q(s) + Q(a);
1470
- for (let h = n; h < o - n; h++) {
1471
- const v = e.children[h];
1472
- q(s, e.leaf ? r(v) : v), u += Q(s);
1559
+ const s = this.toBBox, a = nt(e, 0, n, s), r = nt(e, o - n, o, s);
1560
+ let l = ft(a) + ft(r);
1561
+ for (let f = n; f < o - n; f++) {
1562
+ const p = e.children[f];
1563
+ ot(a, e.leaf ? s(p) : p), l += ft(a);
1473
1564
  }
1474
- for (let h = o - n - 1; h >= n; h--) {
1475
- const v = e.children[h];
1476
- q(a, e.leaf ? r(v) : v), u += Q(a);
1565
+ for (let f = o - n - 1; f >= n; f--) {
1566
+ const p = e.children[f];
1567
+ ot(r, e.leaf ? s(p) : p), l += ft(r);
1477
1568
  }
1478
- return u;
1569
+ return l;
1479
1570
  }
1480
1571
  _adjustParentBBoxes(e, n, o) {
1481
1572
  for (let i = o; i >= 0; i--)
1482
- q(n[i], e);
1573
+ ot(n[i], e);
1483
1574
  }
1484
1575
  _condense(e) {
1485
1576
  for (let n = e.length - 1, o; n >= 0; n--)
1486
- e[n].children.length === 0 ? n > 0 ? (o = e[n - 1].children, o.splice(o.indexOf(e[n]), 1)) : this.clear() : P(e[n], this.toBBox);
1577
+ e[n].children.length === 0 ? n > 0 ? (o = e[n - 1].children, o.splice(o.indexOf(e[n]), 1)) : this.clear() : Q(e[n], this.toBBox);
1487
1578
  }
1488
1579
  }
1489
- function cn(t, e, n) {
1490
- if (!n)
1491
- return e.indexOf(t);
1580
+ function Wn(t, e, n) {
1581
+ if (!n) return e.indexOf(t);
1492
1582
  for (let o = 0; o < e.length; o++)
1493
- if (n(t, e[o]))
1494
- return o;
1583
+ if (n(t, e[o])) return o;
1495
1584
  return -1;
1496
1585
  }
1497
- function P(t, e) {
1498
- W(t, 0, t.children.length, e, t);
1586
+ function Q(t, e) {
1587
+ nt(t, 0, t.children.length, e, t);
1499
1588
  }
1500
- function W(t, e, n, o, i) {
1501
- i || (i = z(null)), i.minX = 1 / 0, i.minY = 1 / 0, i.maxX = -1 / 0, i.maxY = -1 / 0;
1502
- for (let r = e; r < n; r++) {
1503
- const s = t.children[r];
1504
- q(i, t.leaf ? o(s) : s);
1589
+ function nt(t, e, n, o, i) {
1590
+ i || (i = J(null)), i.minX = 1 / 0, i.minY = 1 / 0, i.maxX = -1 / 0, i.maxY = -1 / 0;
1591
+ for (let s = e; s < n; s++) {
1592
+ const a = t.children[s];
1593
+ ot(i, t.leaf ? o(a) : a);
1505
1594
  }
1506
1595
  return i;
1507
1596
  }
1508
- function q(t, e) {
1597
+ function ot(t, e) {
1509
1598
  return t.minX = Math.min(t.minX, e.minX), t.minY = Math.min(t.minY, e.minY), t.maxX = Math.max(t.maxX, e.maxX), t.maxY = Math.max(t.maxY, e.maxY), t;
1510
1599
  }
1511
- function dn(t, e) {
1600
+ function qn(t, e) {
1512
1601
  return t.minX - e.minX;
1513
1602
  }
1514
- function un(t, e) {
1603
+ function Gn(t, e) {
1515
1604
  return t.minY - e.minY;
1516
1605
  }
1517
- function st(t) {
1606
+ function Ct(t) {
1518
1607
  return (t.maxX - t.minX) * (t.maxY - t.minY);
1519
1608
  }
1520
- function Q(t) {
1609
+ function ft(t) {
1521
1610
  return t.maxX - t.minX + (t.maxY - t.minY);
1522
1611
  }
1523
- function hn(t, e) {
1612
+ function Qn(t, e) {
1524
1613
  return (Math.max(e.maxX, t.maxX) - Math.min(e.minX, t.minX)) * (Math.max(e.maxY, t.maxY) - Math.min(e.minY, t.minY));
1525
1614
  }
1526
- function fn(t, e) {
1527
- const n = Math.max(t.minX, e.minX), o = Math.max(t.minY, e.minY), i = Math.min(t.maxX, e.maxX), r = Math.min(t.maxY, e.maxY);
1528
- return Math.max(0, i - n) * Math.max(0, r - o);
1615
+ function Jn(t, e) {
1616
+ const n = Math.max(t.minX, e.minX), o = Math.max(t.minY, e.minY), i = Math.min(t.maxX, e.maxX), s = Math.min(t.maxY, e.maxY);
1617
+ return Math.max(0, i - n) * Math.max(0, s - o);
1529
1618
  }
1530
- function at(t, e) {
1619
+ function Lt(t, e) {
1531
1620
  return t.minX <= e.minX && t.minY <= e.minY && e.maxX <= t.maxX && e.maxY <= t.maxY;
1532
1621
  }
1533
- function J(t, e) {
1622
+ function ht(t, e) {
1534
1623
  return e.minX <= t.maxX && e.minY <= t.maxY && e.maxX >= t.minX && e.maxY >= t.minY;
1535
1624
  }
1536
- function z(t) {
1625
+ function J(t) {
1537
1626
  return {
1538
1627
  children: t,
1539
1628
  height: 1,
@@ -1544,334 +1633,761 @@ function z(t) {
1544
1633
  maxY: -1 / 0
1545
1634
  };
1546
1635
  }
1547
- function Bt(t, e, n, o, i) {
1548
- const r = [e, n];
1549
- for (; r.length; ) {
1550
- if (n = r.pop(), e = r.pop(), n - e <= o)
1551
- continue;
1552
- const s = e + Math.ceil((n - e) / o / 2) * o;
1553
- sn(t, s, e, n, i), r.push(e, s, s, n);
1636
+ function Jt(t, e, n, o, i) {
1637
+ const s = [e, n];
1638
+ for (; s.length; ) {
1639
+ if (n = s.pop(), e = s.pop(), n - e <= o) continue;
1640
+ const a = e + Math.ceil((n - e) / o / 2) * o;
1641
+ de(t, a, e, n, i), s.push(e, a, a, n);
1554
1642
  }
1555
1643
  }
1556
- const gn = (t, e) => {
1557
- const n = new ln(), o = /* @__PURE__ */ new Map(), i = (c, d) => {
1558
- const f = c.selector.flatMap((E) => {
1559
- const L = _([E]) ? E.range : Mt(E, e).range;
1644
+ let Zn = () => ({
1645
+ emit(t, ...e) {
1646
+ for (let n = 0, o = this.events[t] || [], i = o.length; n < i; n++)
1647
+ o[n](...e);
1648
+ },
1649
+ events: {},
1650
+ on(t, e) {
1651
+ var n;
1652
+ return ((n = this.events)[t] || (n[t] = [])).push(e), () => {
1653
+ var o;
1654
+ this.events[t] = (o = this.events[t]) == null ? void 0 : o.filter((i) => e !== i);
1655
+ };
1656
+ }
1657
+ });
1658
+ const to = (t, e) => {
1659
+ const n = new Fn(), o = /* @__PURE__ */ new Map(), i = Zn(), s = (b, E) => {
1660
+ const w = b.selector.flatMap((B) => {
1661
+ const L = W([B]) ? B.range : oe(B, e).range;
1560
1662
  return Array.from(L.getClientRects());
1561
- }), b = ee(f).map(({ left: E, top: L, right: B, bottom: p }) => new DOMRect(E - d.left, L - d.top, B - E, p - L));
1562
- return b.map((E) => {
1563
- const { x: L, y: B, width: p, height: S } = E;
1663
+ }), O = Ne(w).map((B) => Ue(B, E));
1664
+ return O.map((B) => {
1665
+ const { x: L, y: T, width: g, height: v } = B;
1564
1666
  return {
1565
1667
  minX: L,
1566
- minY: B,
1567
- maxX: L + p,
1568
- maxY: B + S,
1668
+ minY: T,
1669
+ maxX: L + g,
1670
+ maxY: T + v,
1569
1671
  annotation: {
1570
- id: c.annotation,
1571
- rects: b
1672
+ id: b.annotation,
1673
+ rects: O
1572
1674
  }
1573
1675
  };
1574
1676
  });
1575
- }, r = () => [...o.values()], s = () => {
1677
+ }, a = () => [...o.values()], r = () => {
1576
1678
  n.clear(), o.clear();
1577
- }, a = (c) => {
1578
- const d = i(c, e.getBoundingClientRect());
1579
- d.forEach((f) => n.insert(f)), o.set(c.annotation, d);
1580
- }, u = (c) => {
1581
- const d = o.get(c.annotation);
1582
- d && (d.forEach((f) => n.remove(f)), o.delete(c.annotation));
1583
- }, h = (c) => {
1584
- u(c), a(c);
1585
- }, v = (c, d = !0) => {
1586
- d && s();
1587
- const f = e.getBoundingClientRect(), b = c.map((L) => ({ target: L, rects: i(L, f) }));
1588
- b.forEach(({ target: L, rects: B }) => o.set(L.annotation, B));
1589
- const E = b.reduce((L, { rects: B }) => [...L, ...B], []);
1590
- n.load(E);
1591
- }, l = (c, d) => {
1592
- const f = n.search({
1593
- minX: c,
1594
- minY: d,
1595
- maxX: c,
1596
- maxY: d
1597
- }), b = (E) => E.annotation.rects.reduce((L, B) => L + B.width * B.height, 0);
1598
- if (f.length > 0)
1599
- return f.sort((E, L) => b(E) - b(L)), f[0].annotation.id;
1600
- }, m = (c) => {
1601
- const d = g(c);
1602
- if (d.length === 0)
1679
+ }, l = (b) => {
1680
+ const E = s(b, e.getBoundingClientRect());
1681
+ E.forEach((w) => n.insert(w)), o.set(b.annotation, E);
1682
+ }, f = (b) => {
1683
+ const E = o.get(b.annotation);
1684
+ E && (E.forEach((w) => n.remove(w)), o.delete(b.annotation));
1685
+ }, p = (b) => {
1686
+ f(b), l(b);
1687
+ }, c = (b, E = !0) => {
1688
+ E && r();
1689
+ const w = e.getBoundingClientRect(), O = b.map((L) => ({ target: L, rects: s(L, w) }));
1690
+ O.forEach(({ target: L, rects: T }) => o.set(L.annotation, T));
1691
+ const B = O.flatMap(({ rects: L }) => L);
1692
+ n.load(B);
1693
+ }, m = (b, E, w = !1) => {
1694
+ const O = n.search({
1695
+ minX: b,
1696
+ minY: E,
1697
+ maxX: b,
1698
+ maxY: E
1699
+ }), B = (L) => L.annotation.rects.reduce((T, g) => T + g.width * g.height, 0);
1700
+ return O.length > 0 ? (O.sort((L, T) => B(L) - B(T)), w ? O.map((L) => L.annotation.id) : [O[0].annotation.id]) : [];
1701
+ }, d = (b) => {
1702
+ const E = x(b);
1703
+ if (E.length === 0)
1603
1704
  return;
1604
- let f = d[0].left, b = d[0].top, E = d[0].right, L = d[0].bottom;
1605
- for (let B = 1; B < d.length; B++) {
1606
- const p = d[B];
1607
- f = Math.min(f, p.left), b = Math.min(b, p.top), E = Math.max(E, p.right), L = Math.max(L, p.bottom);
1705
+ let w = E[0].left, O = E[0].top, B = E[0].right, L = E[0].bottom;
1706
+ for (let T = 1; T < E.length; T++) {
1707
+ const g = E[T];
1708
+ w = Math.min(w, g.left), O = Math.min(O, g.top), B = Math.max(B, g.right), L = Math.max(L, g.bottom);
1608
1709
  }
1609
- return new DOMRect(f, b, E - f, L - b);
1610
- }, g = (c) => {
1611
- const d = o.get(c);
1612
- return d ? d[0].annotation.rects : [];
1710
+ return new DOMRect(w, O, B - w, L - O);
1711
+ }, x = (b) => {
1712
+ const E = o.get(b);
1713
+ return E ? E[0].annotation.rects : [];
1613
1714
  };
1614
1715
  return {
1615
- all: r,
1616
- clear: s,
1617
- getAt: l,
1618
- getAnnotationBounds: m,
1619
- getAnnotationRects: g,
1620
- getIntersecting: (c, d, f, b) => {
1621
- const E = n.search({ minX: c, minY: d, maxX: f, maxY: b }), L = new Set(E.reduce((B, p) => [...B, p.annotation.id], []));
1622
- return Array.from(L).map((B) => ({
1623
- annotation: t.getAnnotation(B),
1624
- rects: g(B)
1625
- })).filter((B) => !!B.annotation);
1716
+ all: a,
1717
+ clear: r,
1718
+ getAt: m,
1719
+ getAnnotationBounds: d,
1720
+ getAnnotationRects: x,
1721
+ getIntersecting: (b, E, w, O) => {
1722
+ const B = n.search({ minX: b, minY: E, maxX: w, maxY: O }), L = new Set(B.map((T) => T.annotation.id));
1723
+ return Array.from(L).map((T) => ({
1724
+ annotation: t.getAnnotation(T),
1725
+ rects: x(T)
1726
+ })).filter((T) => !!T.annotation);
1626
1727
  },
1627
- insert: a,
1628
- recalculate: () => v(t.all().map((c) => c.target), !0),
1629
- remove: u,
1630
- set: v,
1728
+ insert: l,
1729
+ recalculate: () => {
1730
+ c(t.all().map((b) => b.target), !0), i.emit("recalculate");
1731
+ },
1732
+ remove: f,
1733
+ set: c,
1631
1734
  size: () => n.all().length,
1632
- update: h
1735
+ update: p,
1736
+ on: (b, E) => i.on(b, E)
1633
1737
  };
1634
- }, pn = (t, e) => {
1635
- const n = _e(), o = gn(n, t), i = Te(n, e), r = Be(n), s = $e(), a = (y, w = R.LOCAL) => {
1636
- const c = tt(y, t), d = _(c.target.selector);
1637
- return d && n.addAnnotation(c, w), d;
1638
- }, u = (y, w = !0, c = R.LOCAL) => {
1639
- const d = y.map((b) => tt(b, t)), f = d.filter((b) => !_(b.target.selector));
1640
- return f.length > 0 ? (console.warn("Could not revive all targets for these annotations:", f), n.bulkAddAnnotation(d, w, c), f) : (n.bulkAddAnnotation(d, w, c), []);
1641
- }, h = (y, w = R.LOCAL) => {
1642
- const c = y.map((f) => tt(f, t)), d = c.filter((f) => !_(f.target.selector));
1643
- return d.length > 0 && console.warn("Could not revive all targets for these annotations:", d), c.forEach((f) => {
1644
- n.getAnnotation(f.id) ? n.updateAnnotation(f, w) : n.addAnnotation(f, w);
1645
- }), d;
1646
- }, v = (y, w = R.LOCAL) => {
1647
- const c = Z(y, t);
1648
- n.updateTarget(c, w);
1649
- }, l = (y, w = R.LOCAL) => {
1650
- const c = y.map((d) => Z(d, t));
1651
- n.bulkUpdateTargets(c, w);
1652
- }, m = (y, w) => {
1653
- const c = o.getAt(y, w);
1654
- return c ? n.getAnnotation(c) : void 0;
1655
- }, g = (y, w, c, d = 5) => {
1656
- const f = o.getAnnotationRects(y);
1657
- if (f.length !== 0) {
1658
- if (w && c) {
1659
- const b = f.find(({ top: E, right: L, bottom: B, left: p }) => w >= p - d && w <= L + d && c >= E - d && c <= B + d);
1660
- if (b)
1661
- return b;
1738
+ }, eo = (t, e) => {
1739
+ const n = Cn(), o = to(n, t), i = fn(n, e), s = dn(n), a = Rn(), r = (y, h = M.LOCAL) => {
1740
+ const u = yt(y, t), b = W(u.target.selector);
1741
+ return b && n.addAnnotation(u, h), b;
1742
+ }, l = (y, h = !0, u = M.LOCAL) => {
1743
+ const b = y.map((w) => yt(w, t)), E = b.filter((w) => !W(w.target.selector));
1744
+ return E.length > 0 ? (console.warn("Could not revive all targets for these annotations:", E), n.bulkAddAnnotation(b, h, u), E) : (n.bulkAddAnnotation(b, h, u), []);
1745
+ }, f = (y, h = M.LOCAL) => {
1746
+ const u = y.map((E) => yt(E, t)), b = u.filter((E) => !W(E.target.selector));
1747
+ return b.length > 0 && console.warn("Could not revive all targets for these annotations:", b), u.forEach((E) => {
1748
+ n.getAnnotation(E.id) ? n.updateAnnotation(E, h) : n.addAnnotation(E, h);
1749
+ }), b;
1750
+ }, p = (y, h = M.LOCAL) => {
1751
+ const u = mt(y, t);
1752
+ n.updateTarget(u, h);
1753
+ }, c = (y, h = M.LOCAL) => {
1754
+ const u = y.map((b) => mt(b, t));
1755
+ n.bulkUpdateTargets(u, h);
1756
+ }, m = (y, h, u) => {
1757
+ const b = o.getAt(y, h, !!u).map((w) => n.getAnnotation(w)), E = u ? b.filter(u) : b;
1758
+ return E.length > 0 ? E[0] : void 0;
1759
+ }, d = (y, h, u, b = 5) => {
1760
+ const E = o.getAnnotationRects(y);
1761
+ if (E.length !== 0) {
1762
+ if (h && u) {
1763
+ const w = E.find(({ top: O, right: B, bottom: L, left: T }) => h >= T - b && h <= B + b && u >= O - b && u <= L + b);
1764
+ if (w) return w;
1662
1765
  }
1663
1766
  return o.getAnnotationBounds(y);
1664
1767
  }
1665
- }, x = () => o.recalculate();
1768
+ }, x = () => o.recalculate(), A = (y) => o.on("recalculate", y);
1666
1769
  return n.observe(({ changes: y }) => {
1667
- const w = (y.created || []).filter((f) => _(f.target.selector)), c = (y.deleted || []).filter((f) => _(f.target.selector)), d = (y.updated || []).filter((f) => _(f.newValue.target.selector));
1668
- w.length > 0 && o.set(w.map((f) => f.target), !1), (c == null ? void 0 : c.length) > 0 && c.forEach((f) => o.remove(f.target)), (d == null ? void 0 : d.length) > 0 && d.forEach(({ newValue: f }) => o.update(f.target));
1770
+ const h = (y.deleted || []).filter((E) => W(E.target.selector)), u = (y.created || []).filter((E) => W(E.target.selector)), b = (y.updated || []).filter((E) => W(E.newValue.target.selector));
1771
+ (h == null ? void 0 : h.length) > 0 && h.forEach((E) => o.remove(E.target)), u.length > 0 && o.set(u.map((E) => E.target), !1), (b == null ? void 0 : b.length) > 0 && b.forEach(({ newValue: E }) => o.update(E.target));
1669
1772
  }), {
1670
1773
  store: {
1671
1774
  ...n,
1672
- addAnnotation: a,
1673
- bulkAddAnnotation: u,
1674
- bulkUpdateTargets: l,
1675
- bulkUpsertAnnotations: h,
1676
- getAnnotationBounds: g,
1775
+ addAnnotation: r,
1776
+ bulkAddAnnotation: l,
1777
+ bulkUpdateTargets: c,
1778
+ bulkUpsertAnnotations: f,
1779
+ getAnnotationBounds: d,
1677
1780
  getAt: m,
1678
- getIntersecting: o.getIntersecting,
1781
+ getIntersecting: o.getIntersecting.bind(o),
1782
+ getAnnotationRects: o.getAnnotationRects.bind(o),
1679
1783
  recalculatePositions: x,
1680
- updateTarget: v
1784
+ onRecalculatePositions: A,
1785
+ updateTarget: p
1681
1786
  },
1682
1787
  selection: i,
1683
- hover: r,
1684
- viewport: s
1788
+ hover: s,
1789
+ viewport: a
1685
1790
  };
1686
- }, mn = () => {
1791
+ }, no = () => {
1687
1792
  const t = document.createElement("canvas");
1688
- t.width = 2 * window.innerWidth, t.height = 2 * window.innerHeight, t.className = "r6o-highlight-layer presence";
1793
+ t.width = 2 * window.innerWidth, t.height = 2 * window.innerHeight, t.className = "r6o-presence-layer";
1689
1794
  const e = t.getContext("2d");
1690
1795
  return e.scale(2, 2), e.translate(0.5, 0.5), t;
1691
- }, bn = (t, e, n = {}) => {
1692
- const o = mn(), i = o.getContext("2d");
1693
- t.appendChild(o);
1694
- const r = /* @__PURE__ */ new Map(), s = (l) => Array.from(r.entries()).filter(([m, g]) => g.presenceKey === l.presenceKey).map(([m, g]) => m);
1695
- return e.on("selectionChange", (l, m) => {
1696
- s(l).forEach((x) => r.delete(x)), m && m.forEach((x) => r.set(x, l));
1796
+ }, oo = (t, e, n = {}) => {
1797
+ const o = no(), i = o.getContext("2d");
1798
+ document.body.appendChild(o);
1799
+ const s = /* @__PURE__ */ new Map(), a = (c) => Array.from(s.entries()).filter(([m, d]) => d.presenceKey === c.presenceKey).map(([m, d]) => m);
1800
+ return e.on("selectionChange", (c, m) => {
1801
+ a(c).forEach((x) => s.delete(x)), m && m.forEach((x) => s.set(x, c));
1697
1802
  }), {
1698
1803
  clear: () => {
1699
- const { width: l, height: m } = o;
1700
- i.clearRect(-0.5, -0.5, l + 1, m + 1);
1804
+ const { width: c, height: m } = o;
1805
+ i.clearRect(-0.5, -0.5, c + 1, m + 1);
1701
1806
  },
1702
1807
  destroy: () => {
1703
1808
  o.remove();
1704
1809
  },
1705
- paint: (l, m, g) => {
1810
+ paint: (c, m, d) => {
1706
1811
  n.font && (i.font = n.font);
1707
- const x = r.get(l.annotation.id);
1812
+ const x = s.get(c.annotation.id);
1708
1813
  if (x) {
1709
- const { height: y } = l.rects[0], w = l.rects[0].x + m.left, c = l.rects[0].y + m.top;
1710
- i.fillStyle = x.appearance.color, i.fillRect(w - 2, c - 2.5, 2, y + 5);
1711
- const d = i.measureText(x.appearance.label), f = d.width + 6, b = d.actualBoundingBoxAscent + d.actualBoundingBoxDescent + 8, E = d.fontBoundingBoxAscent ? 8 : 6.5;
1712
- return i.fillRect(w - 2, c - 2.5 - b, f, b), i.fillStyle = "#fff", i.fillText(x.appearance.label, w + 1, c - E), {
1814
+ const { height: A } = c.rects[0], y = c.rects[0].x + m.left, h = c.rects[0].y + m.top;
1815
+ i.fillStyle = x.appearance.color, i.fillRect(y - 2, h - 2.5, 2, A + 5);
1816
+ const u = i.measureText(x.appearance.label), b = u.width + 6, E = u.actualBoundingBoxAscent + u.actualBoundingBoxDescent + 8, w = u.fontBoundingBoxAscent ? 8 : 6.5;
1817
+ return i.fillRect(y - 2, h - 2.5 - E, b, E), i.fillStyle = "#fff", i.fillText(x.appearance.label, y + 1, h - w), {
1713
1818
  fill: x.appearance.color,
1714
- fillOpacity: g ? 0.45 : 0.18
1819
+ fillOpacity: d ? 0.45 : 0.18
1715
1820
  };
1716
1821
  }
1717
1822
  },
1718
1823
  reset: () => {
1719
1824
  o.width = 2 * window.innerWidth, o.height = 2 * window.innerHeight;
1720
- const l = o.getContext("2d");
1721
- l.scale(2, 2), l.translate(0.5, 0.5);
1825
+ const c = o.getContext("2d");
1826
+ c.scale(2, 2), c.translate(0.5, 0.5);
1722
1827
  }
1723
1828
  };
1724
- }, _t = (t) => {
1829
+ }, ue = (t) => {
1725
1830
  if (t === null)
1726
1831
  return document.scrollingElement;
1727
1832
  const { overflowY: e } = window.getComputedStyle(t);
1728
- return e !== "visible" && e !== "hidden" && t.scrollHeight > t.clientHeight ? t : _t(t.parentElement);
1729
- }, vn = (t, e) => (n) => {
1730
- const o = (r) => {
1731
- const s = i.getBoundingClientRect(), a = i.clientHeight, u = i.clientWidth, h = r.selector[0].range.getBoundingClientRect(), { width: v, height: l } = e.getAnnotationBounds(n.id), m = h.top - s.top, g = h.left - s.left, x = i.parentElement ? i.scrollTop : 0, y = i.parentElement ? i.scrollLeft : 0, w = m + x - (a - l) / 2, c = g + y - (u - v) / 2;
1732
- i.scroll({ top: w, left: c, behavior: "smooth" });
1733
- }, i = _t(t);
1734
- if (i) {
1735
- const r = e.getAnnotation(n.id), { range: s } = r.target.selector[0];
1736
- if (s && !s.collapsed)
1737
- return o(r.target), !0;
1833
+ return e !== "visible" && e !== "hidden" && t.scrollHeight > t.clientHeight ? t : ue(t.parentElement);
1834
+ }, io = (t, e) => (n) => {
1835
+ const o = typeof n == "string" ? n : n.id, i = (a) => {
1836
+ const r = s.getBoundingClientRect(), l = s.clientHeight, f = s.clientWidth, p = a.selector[0].range.getBoundingClientRect(), { width: c, height: m } = e.getAnnotationBounds(o), d = p.top - r.top, x = p.left - r.left, A = s.parentElement ? s.scrollTop : 0, y = s.parentElement ? s.scrollLeft : 0, h = d + A - (l - m) / 2, u = x + y - (f - c) / 2;
1837
+ s.scroll({ top: h, left: u, behavior: "smooth" });
1838
+ }, s = ue(t);
1839
+ if (s) {
1840
+ const a = e.getAnnotation(o), { range: r } = a.target.selector[0];
1841
+ if (r && !r.collapsed)
1842
+ return i(a.target), !0;
1738
1843
  {
1739
- const a = Z(r.target, t), { range: u } = a.selector[0];
1740
- if (u && !u.collapsed)
1741
- return o(a), !0;
1844
+ const l = mt(a.target, t), { range: f } = l.selector[0];
1845
+ if (f && !f.collapsed)
1846
+ return i(l), !0;
1742
1847
  }
1743
1848
  }
1744
1849
  return !1;
1745
- }, wn = (t, e, n) => {
1746
- const { store: o, selection: i } = e;
1747
- let r, s;
1748
- const a = (y) => r = y;
1749
- let u = !1, h;
1750
- const v = (y) => {
1751
- var c;
1752
- if (!u)
1850
+ }, so = (t, e) => ({
1851
+ ...t,
1852
+ annotatingEnabled: t.annotatingEnabled ?? e.annotatingEnabled,
1853
+ user: t.user || e.user
1854
+ }), Ot = typeof navigator < "u" ? navigator.userAgent.toLowerCase().indexOf("firefox") > 0 : !1;
1855
+ function Tt(t, e, n, o) {
1856
+ t.addEventListener ? t.addEventListener(e, n, o) : t.attachEvent && t.attachEvent("on".concat(e), n);
1857
+ }
1858
+ function et(t, e, n, o) {
1859
+ t.removeEventListener ? t.removeEventListener(e, n, o) : t.detachEvent && t.detachEvent("on".concat(e), n);
1860
+ }
1861
+ function fe(t, e) {
1862
+ const n = e.slice(0, e.length - 1);
1863
+ for (let o = 0; o < n.length; o++) n[o] = t[n[o].toLowerCase()];
1864
+ return n;
1865
+ }
1866
+ function he(t) {
1867
+ typeof t != "string" && (t = ""), t = t.replace(/\s/g, "");
1868
+ const e = t.split(",");
1869
+ let n = e.lastIndexOf("");
1870
+ for (; n >= 0; )
1871
+ e[n - 1] += ",", e.splice(n, 1), n = e.lastIndexOf("");
1872
+ return e;
1873
+ }
1874
+ function ro(t, e) {
1875
+ const n = t.length >= e.length ? t : e, o = t.length >= e.length ? e : t;
1876
+ let i = !0;
1877
+ for (let s = 0; s < n.length; s++)
1878
+ o.indexOf(n[s]) === -1 && (i = !1);
1879
+ return i;
1880
+ }
1881
+ const rt = {
1882
+ backspace: 8,
1883
+ "⌫": 8,
1884
+ tab: 9,
1885
+ clear: 12,
1886
+ enter: 13,
1887
+ "↩": 13,
1888
+ return: 13,
1889
+ esc: 27,
1890
+ escape: 27,
1891
+ space: 32,
1892
+ left: 37,
1893
+ up: 38,
1894
+ right: 39,
1895
+ down: 40,
1896
+ del: 46,
1897
+ delete: 46,
1898
+ ins: 45,
1899
+ insert: 45,
1900
+ home: 36,
1901
+ end: 35,
1902
+ pageup: 33,
1903
+ pagedown: 34,
1904
+ capslock: 20,
1905
+ num_0: 96,
1906
+ num_1: 97,
1907
+ num_2: 98,
1908
+ num_3: 99,
1909
+ num_4: 100,
1910
+ num_5: 101,
1911
+ num_6: 102,
1912
+ num_7: 103,
1913
+ num_8: 104,
1914
+ num_9: 105,
1915
+ num_multiply: 106,
1916
+ num_add: 107,
1917
+ num_enter: 108,
1918
+ num_subtract: 109,
1919
+ num_decimal: 110,
1920
+ num_divide: 111,
1921
+ "⇪": 20,
1922
+ ",": 188,
1923
+ ".": 190,
1924
+ "/": 191,
1925
+ "`": 192,
1926
+ "-": Ot ? 173 : 189,
1927
+ "=": Ot ? 61 : 187,
1928
+ ";": Ot ? 59 : 186,
1929
+ "'": 222,
1930
+ "[": 219,
1931
+ "]": 221,
1932
+ "\\": 220
1933
+ }, j = {
1934
+ // shiftKey
1935
+ "⇧": 16,
1936
+ shift: 16,
1937
+ // altKey
1938
+ "⌥": 18,
1939
+ alt: 18,
1940
+ option: 18,
1941
+ // ctrlKey
1942
+ "⌃": 17,
1943
+ ctrl: 17,
1944
+ control: 17,
1945
+ // metaKey
1946
+ "⌘": 91,
1947
+ cmd: 91,
1948
+ command: 91
1949
+ }, kt = {
1950
+ 16: "shiftKey",
1951
+ 18: "altKey",
1952
+ 17: "ctrlKey",
1953
+ 91: "metaKey",
1954
+ shiftKey: 16,
1955
+ ctrlKey: 17,
1956
+ altKey: 18,
1957
+ metaKey: 91
1958
+ }, Y = {
1959
+ 16: !1,
1960
+ 18: !1,
1961
+ 17: !1,
1962
+ 91: !1
1963
+ }, I = {};
1964
+ for (let t = 1; t < 20; t++)
1965
+ rt["f".concat(t)] = 111 + t;
1966
+ let k = [], st = null, pe = "all";
1967
+ const F = /* @__PURE__ */ new Map(), ct = (t) => rt[t.toLowerCase()] || j[t.toLowerCase()] || t.toUpperCase().charCodeAt(0), ao = (t) => Object.keys(rt).find((e) => rt[e] === t), co = (t) => Object.keys(j).find((e) => j[e] === t);
1968
+ function ge(t) {
1969
+ pe = t || "all";
1970
+ }
1971
+ function at() {
1972
+ return pe || "all";
1973
+ }
1974
+ function lo() {
1975
+ return k.slice(0);
1976
+ }
1977
+ function uo() {
1978
+ return k.map((t) => ao(t) || co(t) || String.fromCharCode(t));
1979
+ }
1980
+ function fo() {
1981
+ const t = [];
1982
+ return Object.keys(I).forEach((e) => {
1983
+ I[e].forEach((n) => {
1984
+ let {
1985
+ key: o,
1986
+ scope: i,
1987
+ mods: s,
1988
+ shortcut: a
1989
+ } = n;
1990
+ t.push({
1991
+ scope: i,
1992
+ shortcut: a,
1993
+ mods: s,
1994
+ keys: o.split("+").map((r) => ct(r))
1995
+ });
1996
+ });
1997
+ }), t;
1998
+ }
1999
+ function ho(t) {
2000
+ const e = t.target || t.srcElement, {
2001
+ tagName: n
2002
+ } = e;
2003
+ let o = !0;
2004
+ const i = n === "INPUT" && !["checkbox", "radio", "range", "button", "file", "reset", "submit", "color"].includes(e.type);
2005
+ return (e.isContentEditable || (i || n === "TEXTAREA" || n === "SELECT") && !e.readOnly) && (o = !1), o;
2006
+ }
2007
+ function po(t) {
2008
+ return typeof t == "string" && (t = ct(t)), k.indexOf(t) !== -1;
2009
+ }
2010
+ function go(t, e) {
2011
+ let n, o;
2012
+ t || (t = at());
2013
+ for (const i in I)
2014
+ if (Object.prototype.hasOwnProperty.call(I, i))
2015
+ for (n = I[i], o = 0; o < n.length; )
2016
+ n[o].scope === t ? n.splice(o, 1).forEach((a) => {
2017
+ let {
2018
+ element: r
2019
+ } = a;
2020
+ return Ut(r);
2021
+ }) : o++;
2022
+ at() === t && ge(e || "all");
2023
+ }
2024
+ function mo(t) {
2025
+ let e = t.keyCode || t.which || t.charCode;
2026
+ const n = k.indexOf(e);
2027
+ if (n >= 0 && k.splice(n, 1), t.key && t.key.toLowerCase() === "meta" && k.splice(0, k.length), (e === 93 || e === 224) && (e = 91), e in Y) {
2028
+ Y[e] = !1;
2029
+ for (const o in j) j[o] === e && (P[o] = !1);
2030
+ }
2031
+ }
2032
+ function me(t) {
2033
+ if (typeof t > "u")
2034
+ Object.keys(I).forEach((i) => {
2035
+ Array.isArray(I[i]) && I[i].forEach((s) => pt(s)), delete I[i];
2036
+ }), Ut(null);
2037
+ else if (Array.isArray(t))
2038
+ t.forEach((i) => {
2039
+ i.key && pt(i);
2040
+ });
2041
+ else if (typeof t == "object")
2042
+ t.key && pt(t);
2043
+ else if (typeof t == "string") {
2044
+ for (var e = arguments.length, n = new Array(e > 1 ? e - 1 : 0), o = 1; o < e; o++)
2045
+ n[o - 1] = arguments[o];
2046
+ let [i, s] = n;
2047
+ typeof i == "function" && (s = i, i = ""), pt({
2048
+ key: t,
2049
+ scope: i,
2050
+ method: s,
2051
+ splitKey: "+"
2052
+ });
2053
+ }
2054
+ }
2055
+ const pt = (t) => {
2056
+ let {
2057
+ key: e,
2058
+ scope: n,
2059
+ method: o,
2060
+ splitKey: i = "+"
2061
+ } = t;
2062
+ he(e).forEach((a) => {
2063
+ const r = a.split(i), l = r.length, f = r[l - 1], p = f === "*" ? "*" : ct(f);
2064
+ if (!I[p]) return;
2065
+ n || (n = at());
2066
+ const c = l > 1 ? fe(j, r) : [], m = [];
2067
+ I[p] = I[p].filter((d) => {
2068
+ const A = (o ? d.method === o : !0) && d.scope === n && ro(d.mods, c);
2069
+ return A && m.push(d.element), !A;
2070
+ }), m.forEach((d) => Ut(d));
2071
+ });
2072
+ };
2073
+ function Zt(t, e, n, o) {
2074
+ if (e.element !== o)
2075
+ return;
2076
+ let i;
2077
+ if (e.scope === n || e.scope === "all") {
2078
+ i = e.mods.length > 0;
2079
+ for (const s in Y)
2080
+ Object.prototype.hasOwnProperty.call(Y, s) && (!Y[s] && e.mods.indexOf(+s) > -1 || Y[s] && e.mods.indexOf(+s) === -1) && (i = !1);
2081
+ (e.mods.length === 0 && !Y[16] && !Y[18] && !Y[17] && !Y[91] || i || e.shortcut === "*") && (e.keys = [], e.keys = e.keys.concat(k), e.method(t, e) === !1 && (t.preventDefault ? t.preventDefault() : t.returnValue = !1, t.stopPropagation && t.stopPropagation(), t.cancelBubble && (t.cancelBubble = !0)));
2082
+ }
2083
+ }
2084
+ function te(t, e) {
2085
+ const n = I["*"];
2086
+ let o = t.keyCode || t.which || t.charCode;
2087
+ if (!P.filter.call(this, t)) return;
2088
+ if ((o === 93 || o === 224) && (o = 91), k.indexOf(o) === -1 && o !== 229 && k.push(o), ["ctrlKey", "altKey", "shiftKey", "metaKey"].forEach((r) => {
2089
+ const l = kt[r];
2090
+ t[r] && k.indexOf(l) === -1 ? k.push(l) : !t[r] && k.indexOf(l) > -1 ? k.splice(k.indexOf(l), 1) : r === "metaKey" && t[r] && k.length === 3 && (t.ctrlKey || t.shiftKey || t.altKey || (k = k.slice(k.indexOf(l))));
2091
+ }), o in Y) {
2092
+ Y[o] = !0;
2093
+ for (const r in j)
2094
+ j[r] === o && (P[r] = !0);
2095
+ if (!n) return;
2096
+ }
2097
+ for (const r in Y)
2098
+ Object.prototype.hasOwnProperty.call(Y, r) && (Y[r] = t[kt[r]]);
2099
+ t.getModifierState && !(t.altKey && !t.ctrlKey) && t.getModifierState("AltGraph") && (k.indexOf(17) === -1 && k.push(17), k.indexOf(18) === -1 && k.push(18), Y[17] = !0, Y[18] = !0);
2100
+ const i = at();
2101
+ if (n)
2102
+ for (let r = 0; r < n.length; r++)
2103
+ n[r].scope === i && (t.type === "keydown" && n[r].keydown || t.type === "keyup" && n[r].keyup) && Zt(t, n[r], i, e);
2104
+ if (!(o in I)) return;
2105
+ const s = I[o], a = s.length;
2106
+ for (let r = 0; r < a; r++)
2107
+ if ((t.type === "keydown" && s[r].keydown || t.type === "keyup" && s[r].keyup) && s[r].key) {
2108
+ const l = s[r], {
2109
+ splitKey: f
2110
+ } = l, p = l.key.split(f), c = [];
2111
+ for (let m = 0; m < p.length; m++)
2112
+ c.push(ct(p[m]));
2113
+ c.sort().join("") === k.sort().join("") && Zt(t, l, i, e);
2114
+ }
2115
+ }
2116
+ function P(t, e, n) {
2117
+ k = [];
2118
+ const o = he(t);
2119
+ let i = [], s = "all", a = document, r = 0, l = !1, f = !0, p = "+", c = !1, m = !1;
2120
+ for (n === void 0 && typeof e == "function" && (n = e), Object.prototype.toString.call(e) === "[object Object]" && (e.scope && (s = e.scope), e.element && (a = e.element), e.keyup && (l = e.keyup), e.keydown !== void 0 && (f = e.keydown), e.capture !== void 0 && (c = e.capture), typeof e.splitKey == "string" && (p = e.splitKey), e.single === !0 && (m = !0)), typeof e == "string" && (s = e), m && me(t, s); r < o.length; r++)
2121
+ t = o[r].split(p), i = [], t.length > 1 && (i = fe(j, t)), t = t[t.length - 1], t = t === "*" ? "*" : ct(t), t in I || (I[t] = []), I[t].push({
2122
+ keyup: l,
2123
+ keydown: f,
2124
+ scope: s,
2125
+ mods: i,
2126
+ shortcut: o[r],
2127
+ method: n,
2128
+ key: o[r],
2129
+ splitKey: p,
2130
+ element: a
2131
+ });
2132
+ if (typeof a < "u" && window) {
2133
+ if (!F.has(a)) {
2134
+ const d = function() {
2135
+ let A = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : window.event;
2136
+ return te(A, a);
2137
+ }, x = function() {
2138
+ let A = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : window.event;
2139
+ te(A, a), mo(A);
2140
+ };
2141
+ F.set(a, {
2142
+ keydownListener: d,
2143
+ keyupListenr: x,
2144
+ capture: c
2145
+ }), Tt(a, "keydown", d, c), Tt(a, "keyup", x, c);
2146
+ }
2147
+ if (!st) {
2148
+ const d = () => {
2149
+ k = [];
2150
+ };
2151
+ st = {
2152
+ listener: d,
2153
+ capture: c
2154
+ }, Tt(window, "focus", d, c);
2155
+ }
2156
+ }
2157
+ }
2158
+ function yo(t) {
2159
+ let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "all";
2160
+ Object.keys(I).forEach((n) => {
2161
+ I[n].filter((i) => i.scope === e && i.shortcut === t).forEach((i) => {
2162
+ i && i.method && i.method();
2163
+ });
2164
+ });
2165
+ }
2166
+ function Ut(t) {
2167
+ const e = Object.values(I).flat();
2168
+ if (e.findIndex((o) => {
2169
+ let {
2170
+ element: i
2171
+ } = o;
2172
+ return i === t;
2173
+ }) < 0) {
2174
+ const {
2175
+ keydownListener: o,
2176
+ keyupListenr: i,
2177
+ capture: s
2178
+ } = F.get(t) || {};
2179
+ o && i && (et(t, "keyup", i, s), et(t, "keydown", o, s), F.delete(t));
2180
+ }
2181
+ if ((e.length <= 0 || F.size <= 0) && (Object.keys(F).forEach((i) => {
2182
+ const {
2183
+ keydownListener: s,
2184
+ keyupListenr: a,
2185
+ capture: r
2186
+ } = F.get(i) || {};
2187
+ s && a && (et(i, "keyup", a, r), et(i, "keydown", s, r), F.delete(i));
2188
+ }), F.clear(), Object.keys(I).forEach((i) => delete I[i]), st)) {
2189
+ const {
2190
+ listener: i,
2191
+ capture: s
2192
+ } = st;
2193
+ et(window, "focus", i, s), st = null;
2194
+ }
2195
+ }
2196
+ const Rt = {
2197
+ getPressedKeyString: uo,
2198
+ setScope: ge,
2199
+ getScope: at,
2200
+ deleteScope: go,
2201
+ getPressedKeyCodes: lo,
2202
+ getAllKeyCodes: fo,
2203
+ isPressed: po,
2204
+ filter: ho,
2205
+ trigger: yo,
2206
+ unbind: me,
2207
+ keyMap: rt,
2208
+ modifier: j,
2209
+ modifierMap: kt
2210
+ };
2211
+ for (const t in Rt)
2212
+ Object.prototype.hasOwnProperty.call(Rt, t) && (P[t] = Rt[t]);
2213
+ if (typeof window < "u") {
2214
+ const t = window.hotkeys;
2215
+ P.noConflict = (e) => (e && window.hotkeys === P && (window.hotkeys = t), P), window.hotkeys = P;
2216
+ }
2217
+ const bo = (t, e, n) => {
2218
+ let o;
2219
+ const i = (w) => o = w;
2220
+ let s;
2221
+ const a = (w) => s = w;
2222
+ let r = !0;
2223
+ const l = (w) => r = w, { store: f, selection: p } = e;
2224
+ let c, m, d;
2225
+ const x = (w) => {
2226
+ var B;
2227
+ if (!r || m === !1)
1753
2228
  return;
1754
- !((c = y.target.parentElement) != null && c.closest(X)) ? s = {
1755
- annotation: Vt(),
2229
+ c = !((B = w.target.parentElement) != null && B.closest(H)) ? {
2230
+ annotation: ae(),
1756
2231
  selector: [],
1757
- creator: r,
2232
+ creator: o,
1758
2233
  created: /* @__PURE__ */ new Date()
1759
- } : s = void 0;
2234
+ } : void 0;
1760
2235
  };
1761
- t.addEventListener("selectstart", v);
1762
- const l = ut((y) => {
1763
- const w = document.getSelection();
1764
- if (y.timeStamp - ((h == null ? void 0 : h.timeStamp) || y.timeStamp) < 1e3 && !s && v(h), w.isCollapsed || !u || !s)
2236
+ t.addEventListener("selectstart", x);
2237
+ const A = Nt((w) => {
2238
+ var C, R;
2239
+ if (!r) return;
2240
+ const O = document.getSelection();
2241
+ if (!!((R = (C = O.anchorNode) == null ? void 0 : C.parentElement) != null && R.closest(H))) {
2242
+ c = void 0;
2243
+ return;
2244
+ }
2245
+ if (w.timeStamp - ((d == null ? void 0 : d.timeStamp) || w.timeStamp) < 1e3 && !c && x(d || w), !c)
1765
2246
  return;
1766
- const c = w.getRangeAt(0);
1767
- if (Jt(c))
2247
+ if (O.isCollapsed && f.getAnnotation(c.annotation)) {
2248
+ p.clear(), f.deleteAnnotation(c.annotation);
1768
2249
  return;
1769
- const d = qt(c.cloneRange());
1770
- (d.length !== s.selector.length || d.some((b, E) => {
1771
- var L;
1772
- return b.toString() !== ((L = s.selector[E]) == null ? void 0 : L.quote);
1773
- })) && (s = {
1774
- ...s,
1775
- selector: d.map((b) => ne(b, t, n))
1776
- }, o.getAnnotation(s.annotation) ? o.updateTarget(s, R.LOCAL) : (o.addAnnotation({
1777
- id: s.annotation,
2250
+ }
2251
+ const T = O.getRangeAt(0), g = _e(T, t);
2252
+ if (Be(g)) return;
2253
+ const v = Ee(g.cloneRange());
2254
+ (v.length !== c.selector.length || v.some((N, $) => {
2255
+ var D;
2256
+ return N.toString() !== ((D = c.selector[$]) == null ? void 0 : D.quote);
2257
+ })) && (c = {
2258
+ ...c,
2259
+ selector: v.map((N) => Ie(N, t, n)),
2260
+ updated: /* @__PURE__ */ new Date()
2261
+ }, f.getAnnotation(c.annotation) ? f.updateTarget(c, M.LOCAL) : (p.clear(), f.addAnnotation({
2262
+ id: c.annotation,
1778
2263
  bodies: [],
1779
- target: s
1780
- }, R.LOCAL), i.clickSelect(s.annotation, h)));
2264
+ target: c
2265
+ }, M.LOCAL), p.userSelect(c.annotation, d)));
1781
2266
  });
1782
- document.addEventListener("selectionchange", l);
1783
- const m = (y) => {
1784
- const { target: w, timeStamp: c, offsetX: d, offsetY: f, type: b } = y;
1785
- h = { ...y, target: w, timeStamp: c, offsetX: d, offsetY: f, type: b }, u = y.button === 0;
2267
+ document.addEventListener("selectionchange", A);
2268
+ const y = (w) => {
2269
+ d = Ve(w), m = d.button === 0;
1786
2270
  };
1787
- t.addEventListener("pointerdown", m);
1788
- const g = (y) => {
1789
- var f;
1790
- if (!!((f = y.target.parentElement) != null && f.closest(X)) || !u)
2271
+ document.addEventListener("pointerdown", y);
2272
+ const h = (w) => {
2273
+ var T;
2274
+ if (!!((T = w.target.parentElement) != null && T.closest(H)) || !m)
1791
2275
  return;
1792
- const c = () => {
1793
- const { x: b, y: E } = t.getBoundingClientRect(), L = o.getAt(y.clientX - b, y.clientY - E);
1794
- if (L) {
1795
- const { selected: B } = i;
1796
- (B.length !== 1 || B[0].id !== L.id) && i.clickSelect(L.id, y);
1797
- } else
1798
- i.isEmpty() || i.clear();
1799
- }, d = y.timeStamp - h.timeStamp;
1800
- document.getSelection().isCollapsed && d < 300 ? (s = void 0, c()) : s && i.clickSelect(s.annotation, y);
2276
+ const B = () => {
2277
+ const { x: g, y: v } = t.getBoundingClientRect(), S = w.target instanceof Node && t.contains(w.target) && f.getAt(w.clientX - g, w.clientY - v, s);
2278
+ if (S) {
2279
+ const { selected: C } = p;
2280
+ (C.length !== 1 || C[0].id !== S.id) && p.userSelect(S.id, w);
2281
+ } else p.isEmpty() || p.clear();
2282
+ }, L = w.timeStamp - d.timeStamp;
2283
+ setTimeout(() => {
2284
+ const { isCollapsed: g } = document.getSelection();
2285
+ g && L < 300 ? (c = void 0, B()) : c && p.userSelect(c.annotation, w);
2286
+ });
1801
2287
  };
1802
- return document.addEventListener("pointerup", g), {
2288
+ document.addEventListener("pointerup", h);
2289
+ const u = ["up", "down", "left", "right"], b = [
2290
+ ...u.map((w) => `shift+${w}`),
2291
+ "ctrl+a",
2292
+ "⌘+a"
2293
+ ];
2294
+ return P(b.join(","), { element: t, keydown: !0, keyup: !1 }, (w) => {
2295
+ w.repeat || (d = Ye(w));
2296
+ }), P(u.join(","), { element: t, keydown: !0, keyup: !1 }, (w) => {
2297
+ w.repeat || (c = void 0, p.clear());
2298
+ }), {
1803
2299
  destroy: () => {
1804
- t.removeEventListener("selectstart", v), document.removeEventListener("selectionchange", l), t.removeEventListener("pointerdown", m), document.removeEventListener("pointerup", g);
2300
+ t.removeEventListener("selectstart", x), document.removeEventListener("selectionchange", A), document.removeEventListener("pointerdown", y), document.removeEventListener("pointerup", h), P.unbind();
1805
2301
  },
1806
- setUser: a
2302
+ setFilter: a,
2303
+ setUser: i,
2304
+ setAnnotatingEnabled: l
1807
2305
  };
1808
- }, Tt = "SPANS", En = (t, e = {}) => {
1809
- t.addEventListener("click", (E) => !E.target.closest("a") && E.preventDefault());
1810
- const n = pn(t, e.pointerAction), { selection: o, viewport: i } = n, r = n.store, s = He(r), a = Pe(
1811
- n,
1812
- s,
1813
- e.adapter
1814
- );
1815
- let u = Qe();
1816
- const h = e.renderer === "CSS_HIGHLIGHTS" ? CSS.highlights ? "CSS_HIGHLIGHTS" : Tt : e.renderer || Tt, v = h === "SPANS" ? ye(t, n, i) : h === "CSS_HIGHLIGHTS" ? ve(t, n, i) : h === "CANVAS" ? le(t, n, i) : void 0;
1817
- if (!v)
1818
- throw `Unknown renderer implementation: ${h}`;
1819
- console.debug(`Using ${h} renderer`), e.style && v.setStyle(e.style);
1820
- const l = wn(t, n, e.offsetReferenceSelector);
1821
- return l.setUser(u), {
1822
- ...Fe(n, s, e.adapter),
2306
+ }, ee = "SPANS", Co = (t, e = {}) => {
2307
+ Se(t), Ce(t);
2308
+ const n = so(e, {
2309
+ annotatingEnabled: !0,
2310
+ user: Yn()
2311
+ }), o = eo(t, n.userSelectAction), { selection: i, viewport: s } = o, a = o.store, r = Tn(a), l = Bn(o, r, n.adapter);
2312
+ let f = n.user;
2313
+ const p = n.renderer === "CSS_HIGHLIGHTS" ? CSS.highlights ? "CSS_HIGHLIGHTS" : ee : n.renderer || ee, c = p === "SPANS" ? on(t, o, s) : p === "CSS_HIGHLIGHTS" ? tn(t, o, s) : p === "CANVAS" ? He(t, o, s) : void 0;
2314
+ if (!c)
2315
+ throw `Unknown renderer implementation: ${p}`;
2316
+ console.debug(`Using ${p} renderer`), n.style && c.setStyle(n.style);
2317
+ const m = bo(t, o, n.offsetReferenceSelector);
2318
+ m.setUser(f), m.setAnnotatingEnabled(n.annotatingEnabled);
2319
+ const d = kn(o, r, n.adapter), x = () => f, A = (w) => {
2320
+ m.setAnnotatingEnabled(w);
2321
+ }, y = (w) => {
2322
+ c.setFilter(w), m.setFilter(w);
2323
+ }, h = (w) => {
2324
+ f = w, m.setUser(w);
2325
+ }, u = (w) => {
2326
+ w && (c.setPainter(oo(t, w, n.presence)), w.on("selectionChange", () => c.redraw()));
2327
+ }, b = (w) => {
2328
+ w ? i.setSelected(w) : i.clear();
2329
+ };
2330
+ return {
2331
+ ...d,
1823
2332
  destroy: () => {
1824
- v.destroy(), l.destroy(), s.destroy();
2333
+ c.destroy(), m.destroy(), r.destroy();
1825
2334
  },
1826
2335
  element: t,
1827
- getUser: () => u,
1828
- setFilter: (E) => v.setFilter(E),
1829
- setStyle: (E) => v.setStyle(E),
1830
- setUser: (E) => {
1831
- u = E, l.setUser(E);
1832
- },
1833
- setSelected: (E) => {
1834
- E ? o.setSelected(E) : o.clear();
1835
- },
1836
- setPresenceProvider: (E) => {
1837
- E && (v.setPainter(bn(t, E, e.presence)), E.on("selectionChange", () => v.redraw()));
1838
- },
1839
- setVisible: (E) => v.setVisible(E),
1840
- on: a.on,
1841
- off: a.off,
1842
- scrollIntoView: vn(t, r),
1843
- state: n
2336
+ getUser: x,
2337
+ setAnnotatingEnabled: A,
2338
+ setFilter: y,
2339
+ setStyle: c.setStyle.bind(c),
2340
+ redraw: c.redraw.bind(c),
2341
+ setUser: h,
2342
+ setSelected: b,
2343
+ setPresenceProvider: u,
2344
+ setVisible: c.setVisible.bind(c),
2345
+ on: l.on,
2346
+ off: l.off,
2347
+ scrollIntoView: io(t, a),
2348
+ state: o
1844
2349
  };
1845
2350
  };
1846
2351
  export {
1847
- dt as DEFAULT_SELECTED_STYLE,
1848
- H as DEFAULT_STYLE,
1849
- Rt as NOT_ANNOTATABLE_CLASS,
1850
- X as NOT_ANNOTATABLE_SELECTOR,
1851
- R as Origin,
1852
- An as W3CTextFormat,
1853
- le as createCanvasRenderer,
1854
- ve as createHighlightsRenderer,
1855
- be as createRenderer,
1856
- ye as createSpansRenderer,
1857
- En as createTextAnnotator,
1858
- pn as createTextAnnotatorState,
1859
- ut as debounce,
1860
- xn as getAnnotatableFragment,
1861
- yn as getClientRectsPonyfill,
1862
- Kt as getQuoteContext,
1863
- lt as getRangeAnnotatableContents,
1864
- _ as isRevived,
1865
- Jt as isWhitespaceOrEmpty,
1866
- ee as mergeClientRects,
1867
- zt as paint,
1868
- on as parseW3CTextAnnotation,
1869
- ne as rangeToSelector,
1870
- tt as reviveAnnotation,
1871
- Mt as reviveSelector,
1872
- Z as reviveTarget,
1873
- rn as serializeW3CTextAnnotation,
1874
- qt as splitAnnotatableRanges,
1875
- Qt as whitespaceOrEmptyRegex
2352
+ gt as DEFAULT_SELECTED_STYLE,
2353
+ q as DEFAULT_STYLE,
2354
+ ne as NOT_ANNOTATABLE_CLASS,
2355
+ H as NOT_ANNOTATABLE_SELECTOR,
2356
+ M as Origin,
2357
+ un as UserSelectAction,
2358
+ So as W3CTextFormat,
2359
+ Se as cancelSingleClickEvents,
2360
+ Ye as cloneKeyboardEvent,
2361
+ Ve as clonePointerEvent,
2362
+ Eo as createBody,
2363
+ He as createCanvasRenderer,
2364
+ tn as createHighlightsRenderer,
2365
+ Ze as createRenderer,
2366
+ on as createSpansRenderer,
2367
+ Co as createTextAnnotator,
2368
+ eo as createTextAnnotatorState,
2369
+ Nt as debounce,
2370
+ Ao as denormalizeRectWithOffset,
2371
+ so as fillDefaults,
2372
+ wo as getAnnotatableFragment,
2373
+ xo as getClientRectsPonyfill,
2374
+ Te as getQuoteContext,
2375
+ Bt as getRangeAnnotatableContents,
2376
+ W as isRevived,
2377
+ Be as isWhitespaceOrEmpty,
2378
+ Ne as mergeClientRects,
2379
+ Ue as normalizeRectWithOffset,
2380
+ xe as paint,
2381
+ Hn as parseW3CTextAnnotation,
2382
+ Ce as programmaticallyFocusable,
2383
+ Ie as rangeToSelector,
2384
+ yt as reviveAnnotation,
2385
+ oe as reviveSelector,
2386
+ mt as reviveTarget,
2387
+ jn as serializeW3CTextAnnotation,
2388
+ Ee as splitAnnotatableRanges,
2389
+ vo as toDomRectList,
2390
+ _e as trimRangeToContainer,
2391
+ Re as whitespaceOrEmptyRegex
1876
2392
  };
1877
2393
  //# sourceMappingURL=text-annotator.es.js.map