@recogito/text-annotator 3.0.0-rc.51 → 3.0.0-rc.52

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