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