@soomo/text-annotator 3.1.0-staging.11 → 3.1.0-staging.13

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