@soomo/text-annotator 3.0.0-staging.6 → 3.0.0-staging.61

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