@annotorious/core 3.0.5 → 3.0.6

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.
@@ -24,41 +24,41 @@ function _() {
24
24
  function X(e, n) {
25
25
  return e != e ? n == n : e !== n || e && typeof e == "object" || typeof e == "function";
26
26
  }
27
- const k = [];
27
+ const x = [];
28
28
  function M(e, n = _) {
29
29
  let t;
30
30
  const o = /* @__PURE__ */ new Set();
31
- function i(b) {
32
- if (X(e, b) && (e = b, t)) {
33
- const w = !k.length;
34
- for (const g of o)
35
- g[1](), k.push(g, e);
31
+ function r(v) {
32
+ if (X(e, v) && (e = v, t)) {
33
+ const w = !x.length;
34
+ for (const p of o)
35
+ p[1](), x.push(p, e);
36
36
  if (w) {
37
- for (let g = 0; g < k.length; g += 2)
38
- k[g][0](k[g + 1]);
39
- k.length = 0;
37
+ for (let p = 0; p < x.length; p += 2)
38
+ x[p][0](x[p + 1]);
39
+ x.length = 0;
40
40
  }
41
41
  }
42
42
  }
43
- function f(b) {
44
- i(b(e));
43
+ function g(v) {
44
+ r(v(e));
45
45
  }
46
- function y(b, w = _) {
47
- const g = [b, w];
48
- return o.add(g), o.size === 1 && (t = n(i, f) || _), b(e), () => {
49
- o.delete(g), o.size === 0 && t && (t(), t = null);
46
+ function m(v, w = _) {
47
+ const p = [v, w];
48
+ return o.add(p), o.size === 1 && (t = n(r, g) || _), v(e), () => {
49
+ o.delete(p), o.size === 0 && t && (t(), t = null);
50
50
  };
51
51
  }
52
- return { set: i, update: f, subscribe: y };
52
+ return { set: r, update: g, subscribe: m };
53
53
  }
54
54
  const Ue = (e) => {
55
55
  const { subscribe: n, set: t } = M();
56
56
  let o;
57
- return n((i) => o = i), e.observe(({ changes: i }) => {
57
+ return n((r) => o = r), e.observe(({ changes: r }) => {
58
58
  if (o) {
59
- (i.deleted || []).some((b) => b.id === o) && t(void 0);
60
- const y = (i.updated || []).find(({ oldValue: b }) => b.id === o);
61
- y && t(y.newValue.id);
59
+ (r.deleted || []).some((v) => v.id === o) && t(void 0);
60
+ const m = (r.updated || []).find(({ oldValue: v }) => v.id === o);
61
+ m && t(m.newValue.id);
62
62
  }
63
63
  }), {
64
64
  get current() {
@@ -69,71 +69,74 @@ const Ue = (e) => {
69
69
  };
70
70
  };
71
71
  var Z = /* @__PURE__ */ ((e) => (e.EDIT = "EDIT", e.SELECT = "SELECT", e.NONE = "NONE", e))(Z || {});
72
- const z = { selected: [] }, Te = (e, n) => {
73
- const { subscribe: t, set: o } = M(z);
74
- let i = n, f = z;
75
- t((A) => f = A);
76
- const y = () => {
77
- I(f, z) || o(z);
78
- }, b = () => {
79
- var A;
80
- return ((A = f.selected) == null ? void 0 : A.length) === 0;
81
- }, w = (A) => {
82
- if (b())
72
+ const z = { selected: [] }, Te = (e, n, t) => {
73
+ const { subscribe: o, set: r } = M(z);
74
+ let g = n, m = z;
75
+ o((h) => m = h);
76
+ const v = () => {
77
+ I(m, z) || r(z);
78
+ }, w = () => {
79
+ var h;
80
+ return ((h = m.selected) == null ? void 0 : h.length) === 0;
81
+ }, p = (h) => {
82
+ if (w())
83
83
  return !1;
84
- const v = typeof A == "string" ? A : A.id;
85
- return f.selected.some((L) => L.id === v);
86
- }, g = (A, v) => {
87
- const L = e.getAnnotation(A);
88
- if (!L) {
89
- console.warn("Invalid selection: " + A);
84
+ const y = typeof h == "string" ? h : h.id;
85
+ return m.selected.some((O) => O.id === y);
86
+ }, L = (h, y) => {
87
+ const O = e.getAnnotation(h);
88
+ if (!O) {
89
+ console.warn("Invalid selection: " + h);
90
90
  return;
91
91
  }
92
- switch (G(L, i)) {
92
+ switch (G(O, g, t)) {
93
93
  case "EDIT":
94
- o({ selected: [{ id: A, editable: !0 }], event: v });
94
+ r({ selected: [{ id: h, editable: !0 }], event: y });
95
95
  break;
96
96
  case "SELECT":
97
- o({ selected: [{ id: A }], event: v });
97
+ r({ selected: [{ id: h }], event: y });
98
98
  break;
99
99
  default:
100
- o({ selected: [], event: v });
100
+ r({ selected: [], event: y });
101
101
  }
102
- }, S = (A, v) => {
103
- const L = Array.isArray(A) ? A : [A], O = L.map((a) => e.getAnnotation(a)).filter((a) => !!a);
104
- o({
105
- selected: O.map((a) => {
106
- const u = v === void 0 ? G(a, i) === "EDIT" : v;
107
- return { id: a.id, editable: u };
102
+ }, a = (h, y) => {
103
+ const O = Array.isArray(h) ? h : [h], d = O.map((u) => e.getAnnotation(u)).filter((u) => !!u);
104
+ r({
105
+ selected: d.map((u) => {
106
+ const s = y === void 0 ? G(u, g, t) === "EDIT" : y;
107
+ return { id: u.id, editable: s };
108
108
  })
109
- }), O.length !== L.length && console.warn("Invalid selection", A);
110
- }, r = (A) => {
111
- if (b())
109
+ }), d.length !== O.length && console.warn("Invalid selection", h);
110
+ }, E = (h) => {
111
+ if (w())
112
112
  return !1;
113
- const { selected: v } = f;
114
- v.some(({ id: O }) => A.includes(O)) && o({ selected: v.filter(({ id: O }) => !A.includes(O)) });
115
- }, E = (A) => i = A;
113
+ const { selected: y } = m;
114
+ y.some(({ id: d }) => h.includes(d)) && r({ selected: y.filter(({ id: d }) => !h.includes(d)) });
115
+ }, U = (h) => g = h;
116
116
  return e.observe(
117
- ({ changes: A }) => r((A.deleted || []).map((v) => v.id))
117
+ ({ changes: h }) => E((h.deleted || []).map((y) => y.id))
118
118
  ), {
119
119
  get event() {
120
- return f ? f.event : null;
120
+ return m ? m.event : null;
121
121
  },
122
122
  get selected() {
123
- return f ? [...f.selected] : null;
123
+ return m ? [...m.selected] : null;
124
124
  },
125
125
  get userSelectAction() {
126
- return i;
126
+ return g;
127
127
  },
128
- clear: y,
129
- isEmpty: b,
130
- isSelected: w,
131
- setSelected: S,
132
- setUserSelectAction: E,
133
- subscribe: t,
134
- userSelect: g
128
+ clear: v,
129
+ isEmpty: w,
130
+ isSelected: p,
131
+ setSelected: a,
132
+ setUserSelectAction: U,
133
+ subscribe: o,
134
+ userSelect: L
135
135
  };
136
- }, G = (e, n) => typeof n == "function" ? n(e) : n || "EDIT";
136
+ }, G = (e, n, t) => {
137
+ const o = t ? t.serialize(e) : e;
138
+ return typeof n == "function" ? n(o) : n || "EDIT";
139
+ };
137
140
  var D = [];
138
141
  for (var Y = 0; Y < 256; ++Y)
139
142
  D.push((Y + 256).toString(16).slice(1));
@@ -158,12 +161,12 @@ function F(e, n, t) {
158
161
  return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, K(o);
159
162
  }
160
163
  const Oe = (e) => {
161
- const { creator: n, updatedBy: t } = e.target, o = e.bodies.reduce((i, f) => [...i, f.creator, f.updatedBy].filter(Boolean), []);
164
+ const { creator: n, updatedBy: t } = e.target, o = e.bodies.reduce((r, g) => [...r, g.creator, g.updatedBy].filter(Boolean), []);
162
165
  return [
163
166
  n,
164
167
  t,
165
168
  ...o
166
- ].filter((i) => i);
169
+ ].filter((r) => r);
167
170
  }, j = (e) => {
168
171
  const n = (t) => {
169
172
  const o = { ...t };
@@ -187,61 +190,61 @@ const Oe = (e) => {
187
190
  const t = new Set(n.bodies.map((o) => o.id));
188
191
  return e.bodies.filter((o) => !t.has(o.id));
189
192
  }, ie = (e, n) => n.bodies.map((t) => {
190
- const o = e.bodies.find((i) => i.id === t.id);
193
+ const o = e.bodies.find((r) => r.id === t.id);
191
194
  return { newBody: t, oldBody: o && !I(o, t) ? o : void 0 };
192
195
  }).filter(({ oldBody: t }) => t).map(({ oldBody: t, newBody: o }) => ({ oldBody: t, newBody: o })), de = (e, n) => !I(e.target, n.target), J = (e, n) => {
193
- const t = oe(e, n), o = se(e, n), i = ie(e, n);
196
+ const t = oe(e, n), o = se(e, n), r = ie(e, n);
194
197
  return {
195
198
  oldValue: e,
196
199
  newValue: n,
197
200
  bodiesCreated: t.length > 0 ? t : void 0,
198
201
  bodiesDeleted: o.length > 0 ? o : void 0,
199
- bodiesUpdated: i.length > 0 ? i : void 0,
202
+ bodiesUpdated: r.length > 0 ? r : void 0,
200
203
  targetUpdated: de(e, n) ? { oldTarget: e.target, newTarget: n.target } : void 0
201
204
  };
202
205
  };
203
- var ae = /* @__PURE__ */ ((e) => (e.BODY_ONLY = "BODY_ONLY", e.TARGET_ONLY = "TARGET_ONLY", e))(ae || {}), T = /* @__PURE__ */ ((e) => (e.LOCAL = "LOCAL", e.REMOTE = "REMOTE", e.SILENT = "SILENT", e))(T || {});
204
- const re = (e, n) => {
205
- var f, y;
206
+ var re = /* @__PURE__ */ ((e) => (e.BODY_ONLY = "BODY_ONLY", e.TARGET_ONLY = "TARGET_ONLY", e))(re || {}), T = /* @__PURE__ */ ((e) => (e.LOCAL = "LOCAL", e.REMOTE = "REMOTE", e.SILENT = "SILENT", e))(T || {});
207
+ const ae = (e, n) => {
208
+ var g, m;
206
209
  const { changes: t, origin: o } = n;
207
210
  if (!(e.options.origin ? e.options.origin === o : o !== "SILENT"))
208
211
  return !1;
209
212
  if (e.options.ignore) {
210
- const { ignore: b } = e.options, w = (S) => S && S.length > 0;
213
+ const { ignore: v } = e.options, w = (L) => L && L.length > 0;
211
214
  if (!(w(t.created) || w(t.deleted))) {
212
- const S = (f = t.updated) == null ? void 0 : f.some((E) => w(E.bodiesCreated) || w(E.bodiesDeleted) || w(E.bodiesUpdated)), r = (y = t.updated) == null ? void 0 : y.some((E) => E.targetUpdated);
213
- if (b === "BODY_ONLY" && S && !r || b === "TARGET_ONLY" && r && !S)
215
+ const L = (g = t.updated) == null ? void 0 : g.some((E) => w(E.bodiesCreated) || w(E.bodiesDeleted) || w(E.bodiesUpdated)), a = (m = t.updated) == null ? void 0 : m.some((E) => E.targetUpdated);
216
+ if (v === "BODY_ONLY" && L && !a || v === "TARGET_ONLY" && a && !L)
214
217
  return !1;
215
218
  }
216
219
  }
217
220
  if (e.options.annotations) {
218
- const b = /* @__PURE__ */ new Set([
219
- ...(t.created || []).map((g) => g.id),
220
- ...(t.deleted || []).map((g) => g.id),
221
- ...(t.updated || []).map(({ oldValue: g }) => g.id)
221
+ const v = /* @__PURE__ */ new Set([
222
+ ...(t.created || []).map((p) => p.id),
223
+ ...(t.deleted || []).map((p) => p.id),
224
+ ...(t.updated || []).map(({ oldValue: p }) => p.id)
222
225
  ]);
223
- return !!(Array.isArray(e.options.annotations) ? e.options.annotations : [e.options.annotations]).find((g) => b.has(g));
226
+ return !!(Array.isArray(e.options.annotations) ? e.options.annotations : [e.options.annotations]).find((p) => v.has(p));
224
227
  } else
225
228
  return !0;
226
229
  }, ce = (e, n) => {
227
- const t = new Set((e.created || []).map((r) => r.id)), o = new Set((e.updated || []).map(({ newValue: r }) => r.id)), i = new Set((n.created || []).map((r) => r.id)), f = new Set((n.deleted || []).map((r) => r.id)), y = new Set((n.updated || []).map(({ oldValue: r }) => r.id)), b = new Set((n.updated || []).filter(({ oldValue: r }) => t.has(r.id) || o.has(r.id)).map(({ oldValue: r }) => r.id)), w = [
228
- ...(e.created || []).filter((r) => !f.has(r.id)).map((r) => y.has(r.id) ? n.updated.find(({ oldValue: E }) => E.id === r.id).newValue : r),
230
+ const t = new Set((e.created || []).map((a) => a.id)), o = new Set((e.updated || []).map(({ newValue: a }) => a.id)), r = new Set((n.created || []).map((a) => a.id)), g = new Set((n.deleted || []).map((a) => a.id)), m = new Set((n.updated || []).map(({ oldValue: a }) => a.id)), v = new Set((n.updated || []).filter(({ oldValue: a }) => t.has(a.id) || o.has(a.id)).map(({ oldValue: a }) => a.id)), w = [
231
+ ...(e.created || []).filter((a) => !g.has(a.id)).map((a) => m.has(a.id) ? n.updated.find(({ oldValue: E }) => E.id === a.id).newValue : a),
229
232
  ...n.created || []
230
- ], g = [
231
- ...(e.deleted || []).filter((r) => !i.has(r.id)),
232
- ...(n.deleted || []).filter((r) => !t.has(r.id))
233
- ], S = [
234
- ...(e.updated || []).filter(({ newValue: r }) => !f.has(r.id)).map((r) => {
235
- const { oldValue: E, newValue: A } = r;
236
- if (y.has(A.id)) {
237
- const v = n.updated.find((L) => L.oldValue.id === A.id).newValue;
238
- return J(E, v);
233
+ ], p = [
234
+ ...(e.deleted || []).filter((a) => !r.has(a.id)),
235
+ ...(n.deleted || []).filter((a) => !t.has(a.id))
236
+ ], L = [
237
+ ...(e.updated || []).filter(({ newValue: a }) => !g.has(a.id)).map((a) => {
238
+ const { oldValue: E, newValue: U } = a;
239
+ if (m.has(U.id)) {
240
+ const h = n.updated.find((y) => y.oldValue.id === U.id).newValue;
241
+ return J(E, h);
239
242
  } else
240
- return r;
243
+ return a;
241
244
  }),
242
- ...(n.updated || []).filter(({ oldValue: r }) => !b.has(r.id))
245
+ ...(n.updated || []).filter(({ oldValue: a }) => !v.has(a.id))
243
246
  ];
244
- return { created: w, deleted: g, updated: S };
247
+ return { created: w, deleted: p, updated: L };
245
248
  }, V = (e) => {
246
249
  const n = e.id === void 0 ? F() : e.id;
247
250
  return {
@@ -257,14 +260,14 @@ const re = (e, n) => {
257
260
  }
258
261
  };
259
262
  }, le = (e) => e.id !== void 0, Re = () => {
260
- const e = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), t = [], o = (d, c = {}) => {
261
- t.push({ onChange: d, options: c });
262
- }, i = (d) => {
263
- const c = t.findIndex((l) => l.onChange == d);
263
+ const e = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), t = [], o = (i, c = {}) => {
264
+ t.push({ onChange: i, options: c });
265
+ }, r = (i) => {
266
+ const c = t.findIndex((l) => l.onChange == i);
264
267
  c > -1 && t.splice(c, 1);
265
- }, f = (d, c) => {
268
+ }, g = (i, c) => {
266
269
  const l = {
267
- origin: d,
270
+ origin: i,
268
271
  changes: {
269
272
  created: c.created || [],
270
273
  updated: c.updated || [],
@@ -272,148 +275,148 @@ const re = (e, n) => {
272
275
  },
273
276
  state: [...e.values()]
274
277
  };
275
- t.forEach((p) => {
276
- re(p, l) && p.onChange(l);
278
+ t.forEach((f) => {
279
+ ae(f, l) && f.onChange(l);
277
280
  });
278
- }, y = (d, c = T.LOCAL) => {
279
- if (d.id && e.get(d.id))
280
- throw Error(`Cannot add annotation ${d.id} - exists already`);
281
+ }, m = (i, c = T.LOCAL) => {
282
+ if (i.id && e.get(i.id))
283
+ throw Error(`Cannot add annotation ${i.id} - exists already`);
281
284
  {
282
- const p = V(d);
283
- e.set(p.id, p), p.bodies.forEach((U) => n.set(U.id, p.id)), f(c, { created: [p] });
285
+ const f = V(i);
286
+ e.set(f.id, f), f.bodies.forEach((S) => n.set(S.id, f.id)), g(c, { created: [f] });
284
287
  }
285
- }, b = (d, c) => {
286
- const l = V(typeof d == "string" ? c : d), p = typeof d == "string" ? d : d.id, U = p && e.get(p);
287
- if (U) {
288
- const C = J(U, l);
289
- return p === l.id ? e.set(p, l) : (e.delete(p), e.set(l.id, l)), U.bodies.forEach((B) => n.delete(B.id)), l.bodies.forEach((B) => n.set(B.id, l.id)), C;
288
+ }, v = (i, c) => {
289
+ const l = V(typeof i == "string" ? c : i), f = typeof i == "string" ? i : i.id, S = f && e.get(f);
290
+ if (S) {
291
+ const C = J(S, l);
292
+ return f === l.id ? e.set(f, l) : (e.delete(f), e.set(l.id, l)), S.bodies.forEach((B) => n.delete(B.id)), l.bodies.forEach((B) => n.set(B.id, l.id)), C;
290
293
  } else
291
- console.warn(`Cannot update annotation ${p} - does not exist`);
292
- }, w = (d, c = T.LOCAL, l = T.LOCAL) => {
293
- const p = le(c) ? l : c, U = b(d, c);
294
- U && f(p, { updated: [U] });
295
- }, g = (d, c = T.LOCAL) => {
296
- const l = d.reduce((p, U) => {
297
- const C = b(U);
298
- return C ? [...p, C] : p;
294
+ console.warn(`Cannot update annotation ${f} - does not exist`);
295
+ }, w = (i, c = T.LOCAL, l = T.LOCAL) => {
296
+ const f = le(c) ? l : c, S = v(i, c);
297
+ S && g(f, { updated: [S] });
298
+ }, p = (i, c = T.LOCAL) => {
299
+ const l = i.reduce((f, S) => {
300
+ const C = v(S);
301
+ return C ? [...f, C] : f;
299
302
  }, []);
300
- l.length > 0 && f(c, { updated: l });
301
- }, S = (d, c = T.LOCAL) => {
302
- const l = e.get(d.annotation);
303
+ l.length > 0 && g(c, { updated: l });
304
+ }, L = (i, c = T.LOCAL) => {
305
+ const l = e.get(i.annotation);
303
306
  if (l) {
304
- const p = {
307
+ const f = {
305
308
  ...l,
306
- bodies: [...l.bodies, d]
309
+ bodies: [...l.bodies, i]
307
310
  };
308
- e.set(l.id, p), n.set(d.id, p.id), f(c, { updated: [{
311
+ e.set(l.id, f), n.set(i.id, f.id), g(c, { updated: [{
309
312
  oldValue: l,
310
- newValue: p,
311
- bodiesCreated: [d]
313
+ newValue: f,
314
+ bodiesCreated: [i]
312
315
  }] });
313
316
  } else
314
- console.warn(`Attempt to add body to missing annotation: ${d.annotation}`);
315
- }, r = () => [...e.values()], E = (d = T.LOCAL) => {
317
+ console.warn(`Attempt to add body to missing annotation: ${i.annotation}`);
318
+ }, a = () => [...e.values()], E = (i = T.LOCAL) => {
316
319
  const c = [...e.values()];
317
- e.clear(), n.clear(), f(d, { deleted: c });
318
- }, A = (d, c = !0, l = T.LOCAL) => {
319
- const p = d.map(V);
320
+ e.clear(), n.clear(), g(i, { deleted: c });
321
+ }, U = (i, c = !0, l = T.LOCAL) => {
322
+ const f = i.map(V);
320
323
  if (c) {
321
- const U = [...e.values()];
322
- e.clear(), n.clear(), p.forEach((C) => {
324
+ const S = [...e.values()];
325
+ e.clear(), n.clear(), f.forEach((C) => {
323
326
  e.set(C.id, C), C.bodies.forEach((B) => n.set(B.id, C.id));
324
- }), f(l, { created: p, deleted: U });
327
+ }), g(l, { created: f, deleted: S });
325
328
  } else {
326
- const U = d.reduce((C, B) => {
329
+ const S = i.reduce((C, B) => {
327
330
  const W = B.id && e.get(B.id);
328
331
  return W ? [...C, W] : C;
329
332
  }, []);
330
- if (U.length > 0)
331
- throw Error(`Bulk insert would overwrite the following annotations: ${U.map((C) => C.id).join(", ")}`);
332
- p.forEach((C) => {
333
+ if (S.length > 0)
334
+ throw Error(`Bulk insert would overwrite the following annotations: ${S.map((C) => C.id).join(", ")}`);
335
+ f.forEach((C) => {
333
336
  e.set(C.id, C), C.bodies.forEach((B) => n.set(B.id, C.id));
334
- }), f(l, { created: p });
337
+ }), g(l, { created: f });
335
338
  }
336
- }, v = (d) => {
337
- const c = typeof d == "string" ? d : d.id, l = e.get(c);
339
+ }, h = (i) => {
340
+ const c = typeof i == "string" ? i : i.id, l = e.get(c);
338
341
  if (l)
339
- return e.delete(c), l.bodies.forEach((p) => n.delete(p.id)), l;
342
+ return e.delete(c), l.bodies.forEach((f) => n.delete(f.id)), l;
340
343
  console.warn(`Attempt to delete missing annotation: ${c}`);
341
- }, L = (d, c = T.LOCAL) => {
342
- const l = v(d);
343
- l && f(c, { deleted: [l] });
344
- }, O = (d, c = T.LOCAL) => {
345
- const l = d.reduce((p, U) => {
346
- const C = v(U);
347
- return C ? [...p, C] : p;
344
+ }, y = (i, c = T.LOCAL) => {
345
+ const l = h(i);
346
+ l && g(c, { deleted: [l] });
347
+ }, O = (i, c = T.LOCAL) => {
348
+ const l = i.reduce((f, S) => {
349
+ const C = h(S);
350
+ return C ? [...f, C] : f;
348
351
  }, []);
349
- l.length > 0 && f(c, { deleted: l });
350
- }, a = (d) => {
351
- const c = e.get(d.annotation);
352
+ l.length > 0 && g(c, { deleted: l });
353
+ }, d = (i) => {
354
+ const c = e.get(i.annotation);
352
355
  if (c) {
353
- const l = c.bodies.find((p) => p.id === d.id);
356
+ const l = c.bodies.find((f) => f.id === i.id);
354
357
  if (l) {
355
358
  n.delete(l.id);
356
- const p = {
359
+ const f = {
357
360
  ...c,
358
- bodies: c.bodies.filter((C) => C.id !== d.id)
361
+ bodies: c.bodies.filter((C) => C.id !== i.id)
359
362
  };
360
- return e.set(c.id, p), {
363
+ return e.set(c.id, f), {
361
364
  oldValue: c,
362
- newValue: p,
365
+ newValue: f,
363
366
  bodiesDeleted: [l]
364
367
  };
365
368
  } else
366
- console.warn(`Attempt to delete missing body ${d.id} from annotation ${d.annotation}`);
369
+ console.warn(`Attempt to delete missing body ${i.id} from annotation ${i.annotation}`);
367
370
  } else
368
- console.warn(`Attempt to delete body from missing annotation ${d.annotation}`);
369
- }, u = (d, c = T.LOCAL) => {
370
- const l = a(d);
371
- l && f(c, { updated: [l] });
372
- }, s = (d, c = T.LOCAL) => {
373
- const l = d.map((p) => a(p)).filter(Boolean);
374
- l.length > 0 && f(c, { updated: l });
375
- }, h = (d) => {
376
- const c = e.get(d);
371
+ console.warn(`Attempt to delete body from missing annotation ${i.annotation}`);
372
+ }, u = (i, c = T.LOCAL) => {
373
+ const l = d(i);
374
+ l && g(c, { updated: [l] });
375
+ }, s = (i, c = T.LOCAL) => {
376
+ const l = i.map((f) => d(f)).filter(Boolean);
377
+ l.length > 0 && g(c, { updated: l });
378
+ }, A = (i) => {
379
+ const c = e.get(i);
377
380
  return c ? { ...c } : void 0;
378
- }, m = (d) => {
379
- const c = n.get(d);
381
+ }, b = (i) => {
382
+ const c = n.get(i);
380
383
  if (c) {
381
- const p = h(c).bodies.find((U) => U.id === d);
382
- if (p)
383
- return p;
384
- console.error(`Store integrity error: body ${d} in index, but not in annotation`);
384
+ const f = A(c).bodies.find((S) => S.id === i);
385
+ if (f)
386
+ return f;
387
+ console.error(`Store integrity error: body ${i} in index, but not in annotation`);
385
388
  } else
386
- console.warn(`Attempt to retrieve missing body: ${d}`);
387
- }, R = (d, c) => {
388
- if (d.annotation !== c.annotation)
389
+ console.warn(`Attempt to retrieve missing body: ${i}`);
390
+ }, R = (i, c) => {
391
+ if (i.annotation !== c.annotation)
389
392
  throw "Annotation integrity violation: annotation ID must be the same when updating bodies";
390
- const l = e.get(d.annotation);
393
+ const l = e.get(i.annotation);
391
394
  if (l) {
392
- const p = l.bodies.find((C) => C.id === d.id), U = {
395
+ const f = l.bodies.find((C) => C.id === i.id), S = {
393
396
  ...l,
394
- bodies: l.bodies.map((C) => C.id === p.id ? c : C)
397
+ bodies: l.bodies.map((C) => C.id === f.id ? c : C)
395
398
  };
396
- return e.set(l.id, U), p.id !== c.id && (n.delete(p.id), n.set(c.id, U.id)), {
399
+ return e.set(l.id, S), f.id !== c.id && (n.delete(f.id), n.set(c.id, S.id)), {
397
400
  oldValue: l,
398
- newValue: U,
399
- bodiesUpdated: [{ oldBody: p, newBody: c }]
401
+ newValue: S,
402
+ bodiesUpdated: [{ oldBody: f, newBody: c }]
400
403
  };
401
404
  } else
402
- console.warn(`Attempt to add body to missing annotation ${d.annotation}`);
403
- }, N = (d, c, l = T.LOCAL) => {
404
- const p = R(d, c);
405
- p && f(l, { updated: [p] });
406
- }, x = (d, c = T.LOCAL) => {
407
- const l = d.map((p) => R({ id: p.id, annotation: p.annotation }, p)).filter(Boolean);
408
- f(c, { updated: l });
409
- }, P = (d) => {
410
- const c = e.get(d.annotation);
405
+ console.warn(`Attempt to add body to missing annotation ${i.annotation}`);
406
+ }, N = (i, c, l = T.LOCAL) => {
407
+ const f = R(i, c);
408
+ f && g(l, { updated: [f] });
409
+ }, k = (i, c = T.LOCAL) => {
410
+ const l = i.map((f) => R({ id: f.id, annotation: f.annotation }, f)).filter(Boolean);
411
+ g(c, { updated: l });
412
+ }, P = (i) => {
413
+ const c = e.get(i.annotation);
411
414
  if (c) {
412
415
  const l = {
413
416
  ...c,
414
417
  target: {
415
418
  ...c.target,
416
- ...d
419
+ ...i
417
420
  }
418
421
  };
419
422
  return e.set(c.id, l), {
@@ -421,49 +424,49 @@ const re = (e, n) => {
421
424
  newValue: l,
422
425
  targetUpdated: {
423
426
  oldTarget: c.target,
424
- newTarget: d
427
+ newTarget: i
425
428
  }
426
429
  };
427
430
  } else
428
- console.warn(`Attempt to update target on missing annotation: ${d.annotation}`);
431
+ console.warn(`Attempt to update target on missing annotation: ${i.annotation}`);
429
432
  };
430
433
  return {
431
- addAnnotation: y,
432
- addBody: S,
433
- all: r,
434
- bulkAddAnnotation: A,
434
+ addAnnotation: m,
435
+ addBody: L,
436
+ all: a,
437
+ bulkAddAnnotation: U,
435
438
  bulkDeleteAnnotation: O,
436
439
  bulkDeleteBodies: s,
437
- bulkUpdateAnnotation: g,
438
- bulkUpdateBodies: x,
439
- bulkUpdateTargets: (d, c = T.LOCAL) => {
440
- const l = d.map((p) => P(p)).filter(Boolean);
441
- l.length > 0 && f(c, { updated: l });
440
+ bulkUpdateAnnotation: p,
441
+ bulkUpdateBodies: k,
442
+ bulkUpdateTargets: (i, c = T.LOCAL) => {
443
+ const l = i.map((f) => P(f)).filter(Boolean);
444
+ l.length > 0 && g(c, { updated: l });
442
445
  },
443
446
  clear: E,
444
- deleteAnnotation: L,
447
+ deleteAnnotation: y,
445
448
  deleteBody: u,
446
- getAnnotation: h,
447
- getBody: m,
449
+ getAnnotation: A,
450
+ getBody: b,
448
451
  observe: o,
449
- unobserve: i,
452
+ unobserve: r,
450
453
  updateAnnotation: w,
451
454
  updateBody: N,
452
- updateTarget: (d, c = T.LOCAL) => {
453
- const l = P(d);
454
- l && f(c, { updated: [l] });
455
+ updateTarget: (i, c = T.LOCAL) => {
456
+ const l = P(i);
457
+ l && g(c, { updated: [l] });
455
458
  }
456
459
  };
457
460
  }, Be = (e) => ({
458
461
  ...e,
459
462
  subscribe: (t) => {
460
- const o = (i) => t(i.state);
463
+ const o = (r) => t(r.state);
461
464
  return e.observe(o), t(e.all()), () => e.unobserve(o);
462
465
  }
463
466
  });
464
467
  let Q = () => ({
465
468
  emit(e, ...n) {
466
- for (let t = 0, o = this.events[e] || [], i = o.length; t < i; t++)
469
+ for (let t = 0, o = this.events[e] || [], r = o.length; t < r; t++)
467
470
  o[t](...n);
468
471
  },
469
472
  events: {},
@@ -471,216 +474,216 @@ let Q = () => ({
471
474
  var t;
472
475
  return ((t = this.events)[e] || (t[e] = [])).push(n), () => {
473
476
  var o;
474
- this.events[e] = (o = this.events[e]) == null ? void 0 : o.filter((i) => n !== i);
477
+ this.events[e] = (o = this.events[e]) == null ? void 0 : o.filter((r) => n !== r);
475
478
  };
476
479
  }
477
480
  });
478
481
  const ue = 250, Ie = (e) => {
479
482
  const n = Q(), t = [];
480
- let o = -1, i = !1, f = 0;
481
- const y = (s) => {
482
- if (!i) {
483
- const { changes: h } = s, m = performance.now();
484
- if (m - f > ue)
485
- t.splice(o + 1), t.push(h), o = t.length - 1;
483
+ let o = -1, r = !1, g = 0;
484
+ const m = (s) => {
485
+ if (!r) {
486
+ const { changes: A } = s, b = performance.now();
487
+ if (b - g > ue)
488
+ t.splice(o + 1), t.push(A), o = t.length - 1;
486
489
  else {
487
490
  const R = t.length - 1;
488
- t[R] = ce(t[R], h);
491
+ t[R] = ce(t[R], A);
489
492
  }
490
- f = m;
493
+ g = b;
491
494
  }
492
- i = !1;
495
+ r = !1;
493
496
  };
494
- e.observe(y, { origin: T.LOCAL });
495
- const b = (s) => s && s.length > 0 && e.bulkDeleteAnnotation(s), w = (s) => s && s.length > 0 && e.bulkAddAnnotation(s, !1), g = (s) => s && s.length > 0 && e.bulkUpdateAnnotation(s.map(({ oldValue: h }) => h)), S = (s) => s && s.length > 0 && e.bulkUpdateAnnotation(s.map(({ newValue: h }) => h)), r = (s) => s && s.length > 0 && e.bulkAddAnnotation(s, !1), E = (s) => s && s.length > 0 && e.bulkDeleteAnnotation(s);
497
+ e.observe(m, { origin: T.LOCAL });
498
+ const v = (s) => s && s.length > 0 && e.bulkDeleteAnnotation(s), w = (s) => s && s.length > 0 && e.bulkAddAnnotation(s, !1), p = (s) => s && s.length > 0 && e.bulkUpdateAnnotation(s.map(({ oldValue: A }) => A)), L = (s) => s && s.length > 0 && e.bulkUpdateAnnotation(s.map(({ newValue: A }) => A)), a = (s) => s && s.length > 0 && e.bulkAddAnnotation(s, !1), E = (s) => s && s.length > 0 && e.bulkDeleteAnnotation(s);
496
499
  return {
497
500
  canRedo: () => t.length - 1 > o,
498
501
  canUndo: () => o > -1,
499
- destroy: () => e.unobserve(y),
500
- on: (s, h) => n.on(s, h),
502
+ destroy: () => e.unobserve(m),
503
+ on: (s, A) => n.on(s, A),
501
504
  redo: () => {
502
505
  if (t.length - 1 > o) {
503
- i = !0;
504
- const { created: s, updated: h, deleted: m } = t[o + 1];
505
- w(s), S(h), E(m), n.emit("redo", t[o + 1]), o += 1;
506
+ r = !0;
507
+ const { created: s, updated: A, deleted: b } = t[o + 1];
508
+ w(s), L(A), E(b), n.emit("redo", t[o + 1]), o += 1;
506
509
  }
507
510
  },
508
511
  undo: () => {
509
512
  if (o > -1) {
510
- i = !0;
511
- const { created: s, updated: h, deleted: m } = t[o];
512
- b(s), g(h), r(m), n.emit("undo", t[o]), o -= 1;
513
+ r = !0;
514
+ const { created: s, updated: A, deleted: b } = t[o];
515
+ v(s), p(A), a(b), n.emit("undo", t[o]), o -= 1;
513
516
  }
514
517
  }
515
518
  };
516
- }, xe = () => {
519
+ }, ke = () => {
517
520
  const { subscribe: e, set: n } = M([]);
518
521
  return {
519
522
  subscribe: e,
520
523
  set: n
521
524
  };
522
- }, ke = (e, n, t, o) => {
523
- const { store: i, selection: f, hover: y, viewport: b } = e, w = /* @__PURE__ */ new Map();
524
- let g = [], S, r;
525
- const E = (a, u) => {
526
- w.has(a) ? w.get(a).push(u) : w.set(a, [u]);
527
- }, A = (a, u) => {
528
- const s = w.get(a);
525
+ }, xe = (e, n, t, o) => {
526
+ const { hover: r, selection: g, store: m, viewport: v } = e, w = /* @__PURE__ */ new Map();
527
+ let p = [], L, a;
528
+ const E = (d, u) => {
529
+ w.has(d) ? w.get(d).push(u) : w.set(d, [u]);
530
+ }, U = (d, u) => {
531
+ const s = w.get(d);
529
532
  if (s) {
530
- const h = s.indexOf(u);
531
- h !== -1 && s.splice(h, 1);
533
+ const A = s.indexOf(u);
534
+ A !== -1 && s.splice(A, 1);
532
535
  }
533
- }, v = (a, u, s) => {
534
- w.has(a) && setTimeout(() => {
535
- w.get(a).forEach((h) => {
536
+ }, h = (d, u, s) => {
537
+ w.has(d) && setTimeout(() => {
538
+ w.get(d).forEach((A) => {
536
539
  if (t) {
537
- const m = Array.isArray(u) ? u.map((N) => t.serialize(N)) : t.serialize(u), R = s ? s instanceof PointerEvent ? s : t.serialize(s) : void 0;
538
- h(m, R);
540
+ const b = Array.isArray(u) ? u.map((N) => t.serialize(N)) : t.serialize(u), R = s ? s instanceof PointerEvent ? s : t.serialize(s) : void 0;
541
+ A(b, R);
539
542
  } else
540
- h(u, s);
543
+ A(u, s);
541
544
  });
542
545
  }, 1);
543
- }, L = () => {
544
- const { selected: a } = f, u = (a || []).map(({ id: s }) => i.getAnnotation(s));
546
+ }, y = () => {
547
+ const { selected: d } = g, u = (d || []).map(({ id: s }) => m.getAnnotation(s));
545
548
  u.forEach((s) => {
546
- const h = g.find((m) => m.id === s.id);
547
- (!h || !I(h, s)) && v("updateAnnotation", s, h);
548
- }), g = g.map((s) => {
549
- const h = u.find(({ id: m }) => m === s.id);
550
- return h || s;
549
+ const A = p.find((b) => b.id === s.id);
550
+ (!A || !I(A, s)) && h("updateAnnotation", s, A);
551
+ }), p = p.map((s) => {
552
+ const A = u.find(({ id: b }) => b === s.id);
553
+ return A || s;
551
554
  });
552
555
  };
553
- f.subscribe(({ selected: a }) => {
554
- if (!(g.length === 0 && a.length === 0)) {
555
- if (g.length === 0 && a.length > 0)
556
- g = a.map(({ id: u }) => i.getAnnotation(u));
557
- else if (g.length > 0 && a.length === 0)
558
- g.forEach((u) => {
559
- const s = i.getAnnotation(u.id);
560
- s && !I(s, u) && v("updateAnnotation", s, u);
561
- }), g = [];
556
+ g.subscribe(({ selected: d }) => {
557
+ if (!(p.length === 0 && d.length === 0)) {
558
+ if (p.length === 0 && d.length > 0)
559
+ p = d.map(({ id: u }) => m.getAnnotation(u));
560
+ else if (p.length > 0 && d.length === 0)
561
+ p.forEach((u) => {
562
+ const s = m.getAnnotation(u.id);
563
+ s && !I(s, u) && h("updateAnnotation", s, u);
564
+ }), p = [];
562
565
  else {
563
- const u = new Set(g.map((m) => m.id)), s = new Set(a.map(({ id: m }) => m));
564
- g.filter((m) => !s.has(m.id)).forEach((m) => {
565
- const R = i.getAnnotation(m.id);
566
- R && !I(R, m) && v("updateAnnotation", R, m);
567
- }), g = [
566
+ const u = new Set(p.map((b) => b.id)), s = new Set(d.map(({ id: b }) => b));
567
+ p.filter((b) => !s.has(b.id)).forEach((b) => {
568
+ const R = m.getAnnotation(b.id);
569
+ R && !I(R, b) && h("updateAnnotation", R, b);
570
+ }), p = [
568
571
  // Remove annotations that were deselected
569
- ...g.filter((m) => s.has(m.id)),
572
+ ...p.filter((b) => s.has(b.id)),
570
573
  // Add editable annotations that were selected
571
- ...a.filter(({ id: m }) => !u.has(m)).map(({ id: m }) => i.getAnnotation(m))
574
+ ...d.filter(({ id: b }) => !u.has(b)).map(({ id: b }) => m.getAnnotation(b))
572
575
  ];
573
576
  }
574
- v("selectionChanged", g);
577
+ h("selectionChanged", p);
575
578
  }
576
- }), y.subscribe((a) => {
577
- !S && a ? v("mouseEnterAnnotation", i.getAnnotation(a)) : S && !a ? v("mouseLeaveAnnotation", i.getAnnotation(S)) : S && a && (v("mouseLeaveAnnotation", i.getAnnotation(S)), v("mouseEnterAnnotation", i.getAnnotation(a))), S = a;
578
- }), b == null || b.subscribe((a) => v("viewportIntersect", a.map((u) => i.getAnnotation(u)))), i.observe((a) => {
579
- o && (r && clearTimeout(r), r = setTimeout(L, 1e3));
580
- const { created: u, deleted: s } = a.changes;
581
- (u || []).forEach((m) => v("createAnnotation", m)), (s || []).forEach((m) => v("deleteAnnotation", m)), (a.changes.updated || []).filter((m) => [
582
- ...m.bodiesCreated || [],
583
- ...m.bodiesDeleted || [],
584
- ...m.bodiesUpdated || []
585
- ].length > 0).forEach(({ oldValue: m, newValue: R }) => {
586
- const N = g.find((x) => x.id === m.id) || m;
587
- g = g.map((x) => x.id === m.id ? R : x), v("updateAnnotation", R, N);
579
+ }), r.subscribe((d) => {
580
+ !L && d ? h("mouseEnterAnnotation", m.getAnnotation(d)) : L && !d ? h("mouseLeaveAnnotation", m.getAnnotation(L)) : L && d && (h("mouseLeaveAnnotation", m.getAnnotation(L)), h("mouseEnterAnnotation", m.getAnnotation(d))), L = d;
581
+ }), v == null || v.subscribe((d) => h("viewportIntersect", d.map((u) => m.getAnnotation(u)))), m.observe((d) => {
582
+ o && (a && clearTimeout(a), a = setTimeout(y, 1e3));
583
+ const { created: u, deleted: s } = d.changes;
584
+ (u || []).forEach((b) => h("createAnnotation", b)), (s || []).forEach((b) => h("deleteAnnotation", b)), (d.changes.updated || []).filter((b) => [
585
+ ...b.bodiesCreated || [],
586
+ ...b.bodiesDeleted || [],
587
+ ...b.bodiesUpdated || []
588
+ ].length > 0).forEach(({ oldValue: b, newValue: R }) => {
589
+ const N = p.find((k) => k.id === b.id) || b;
590
+ p = p.map((k) => k.id === b.id ? R : k), h("updateAnnotation", R, N);
588
591
  });
589
- }, { origin: T.LOCAL }), i.observe((a) => {
590
- if (g) {
591
- const u = new Set(g.map((h) => h.id)), s = (a.changes.updated || []).filter(({ newValue: h }) => u.has(h.id)).map(({ newValue: h }) => h);
592
- s.length > 0 && (g = g.map((h) => {
593
- const m = s.find((R) => R.id === h.id);
594
- return m || h;
592
+ }, { origin: T.LOCAL }), m.observe((d) => {
593
+ if (p) {
594
+ const u = new Set(p.map((A) => A.id)), s = (d.changes.updated || []).filter(({ newValue: A }) => u.has(A.id)).map(({ newValue: A }) => A);
595
+ s.length > 0 && (p = p.map((A) => {
596
+ const b = s.find((R) => R.id === A.id);
597
+ return b || A;
595
598
  }));
596
599
  }
597
600
  }, { origin: T.REMOTE });
598
- const O = (a) => (u) => {
601
+ const O = (d) => (u) => {
599
602
  const { updated: s } = u;
600
- a ? (s || []).forEach((h) => v("updateAnnotation", h.oldValue, h.newValue)) : (s || []).forEach((h) => v("updateAnnotation", h.newValue, h.oldValue));
603
+ d ? (s || []).forEach((A) => h("updateAnnotation", A.oldValue, A.newValue)) : (s || []).forEach((A) => h("updateAnnotation", A.newValue, A.oldValue));
601
604
  };
602
- return n.on("undo", O(!0)), n.on("redo", O(!1)), { on: E, off: A, emit: v };
605
+ return n.on("undo", O(!0)), n.on("redo", O(!1)), { on: E, off: U, emit: h };
603
606
  }, Ne = (e) => (n) => n.map((t) => e.serialize(t)), fe = (e) => (n) => n.reduce((t, o) => {
604
- const { parsed: i, error: f } = e.parse(o);
605
- return f ? {
607
+ const { parsed: r, error: g } = e.parse(o);
608
+ return g ? {
606
609
  parsed: t.parsed,
607
610
  failed: [...t.failed, o]
608
- } : i ? {
609
- parsed: [...t.parsed, i],
611
+ } : r ? {
612
+ parsed: [...t.parsed, r],
610
613
  failed: t.failed
611
614
  } : {
612
615
  ...t
613
616
  };
614
617
  }, { parsed: [], failed: [] }), ze = (e, n, t) => {
615
- const { store: o, selection: i } = e, f = (a) => {
618
+ const { store: o, selection: r } = e, g = (d) => {
616
619
  if (t) {
617
- const { parsed: u, error: s } = t.parse(a);
620
+ const { parsed: u, error: s } = t.parse(d);
618
621
  u ? o.addAnnotation(u, T.REMOTE) : console.error(s);
619
622
  } else
620
- o.addAnnotation(j(a), T.REMOTE);
621
- }, y = () => i.clear(), b = () => o.clear(), w = (a) => {
622
- const u = o.getAnnotation(a);
623
+ o.addAnnotation(j(d), T.REMOTE);
624
+ }, m = () => r.clear(), v = () => o.clear(), w = (d) => {
625
+ const u = o.getAnnotation(d);
623
626
  return t && u ? t.serialize(u) : u;
624
- }, g = () => t ? o.all().map(t.serialize) : o.all(), S = () => {
627
+ }, p = () => t ? o.all().map(t.serialize) : o.all(), L = () => {
625
628
  var s;
626
- const u = (((s = i.selected) == null ? void 0 : s.map((h) => h.id)) || []).map((h) => o.getAnnotation(h)).filter(Boolean);
629
+ const u = (((s = r.selected) == null ? void 0 : s.map((A) => A.id)) || []).map((A) => o.getAnnotation(A)).filter(Boolean);
627
630
  return t ? u.map(t.serialize) : u;
628
- }, r = (a, u = !0) => fetch(a).then((s) => s.json()).then((s) => (A(s, u), s)), E = (a) => {
629
- if (typeof a == "string") {
630
- const u = o.getAnnotation(a);
631
- if (o.deleteAnnotation(a), u)
631
+ }, a = (d, u = !0) => fetch(d).then((s) => s.json()).then((s) => (U(s, u), s)), E = (d) => {
632
+ if (typeof d == "string") {
633
+ const u = o.getAnnotation(d);
634
+ if (o.deleteAnnotation(d), u)
632
635
  return t ? t.serialize(u) : u;
633
636
  } else {
634
- const u = t ? t.parse(a).parsed : a;
637
+ const u = t ? t.parse(d).parsed : d;
635
638
  if (u)
636
- return o.deleteAnnotation(u), a;
639
+ return o.deleteAnnotation(u), d;
637
640
  }
638
- }, A = (a, u = !0) => {
641
+ }, U = (d, u = !0) => {
639
642
  if (t) {
640
- const s = t.parseAll || fe(t), { parsed: h, failed: m } = s(a);
641
- m.length > 0 && console.warn(`Discarded ${m.length} invalid annotations`, m), o.bulkAddAnnotation(h, u, T.REMOTE);
643
+ const s = t.parseAll || fe(t), { parsed: A, failed: b } = s(d);
644
+ b.length > 0 && console.warn(`Discarded ${b.length} invalid annotations`, b), o.bulkAddAnnotation(A, u, T.REMOTE);
642
645
  } else
643
- o.bulkAddAnnotation(a.map(j), u, T.REMOTE);
644
- }, v = (a, u) => {
645
- a ? i.setSelected(a, u) : i.clear();
646
- }, L = (a) => {
647
- i.clear(), i.setUserSelectAction(a);
648
- }, O = (a) => {
646
+ o.bulkAddAnnotation(d.map(j), u, T.REMOTE);
647
+ }, h = (d, u) => {
648
+ d ? r.setSelected(d, u) : r.clear();
649
+ }, y = (d) => {
650
+ r.clear(), r.setUserSelectAction(d);
651
+ }, O = (d) => {
649
652
  if (t) {
650
- const u = t.parse(a).parsed, s = t.serialize(o.getAnnotation(u.id));
653
+ const u = t.parse(d).parsed, s = t.serialize(o.getAnnotation(u.id));
651
654
  return o.updateAnnotation(u), s;
652
655
  } else {
653
- const u = o.getAnnotation(a.id);
654
- return o.updateAnnotation(j(a)), u;
656
+ const u = o.getAnnotation(d.id);
657
+ return o.updateAnnotation(j(d)), u;
655
658
  }
656
659
  };
657
660
  return {
658
- addAnnotation: f,
659
- cancelSelected: y,
661
+ addAnnotation: g,
662
+ cancelSelected: m,
660
663
  canRedo: n.canRedo,
661
664
  canUndo: n.canUndo,
662
- clearAnnotations: b,
665
+ clearAnnotations: v,
663
666
  getAnnotationById: w,
664
- getAnnotations: g,
665
- getSelected: S,
666
- loadAnnotations: r,
667
+ getAnnotations: p,
668
+ getSelected: L,
669
+ loadAnnotations: a,
667
670
  redo: n.redo,
668
671
  removeAnnotation: E,
669
- setAnnotations: A,
670
- setSelected: v,
671
- setUserSelectAction: L,
672
+ setAnnotations: U,
673
+ setSelected: h,
674
+ setUserSelectAction: y,
672
675
  undo: n.undo,
673
676
  updateAnnotation: O
674
677
  };
675
678
  }, pe = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
676
679
  let ge = (e) => crypto.getRandomValues(new Uint8Array(e)), he = (e, n, t) => {
677
- let o = (2 << Math.log(e.length - 1) / Math.LN2) - 1, i = -~(1.6 * o * n / e.length);
678
- return (f = n) => {
679
- let y = "";
680
+ let o = (2 << Math.log(e.length - 1) / Math.LN2) - 1, r = -~(1.6 * o * n / e.length);
681
+ return (g = n) => {
682
+ let m = "";
680
683
  for (; ; ) {
681
- let b = t(i), w = i;
684
+ let v = t(r), w = r;
682
685
  for (; w--; )
683
- if (y += e[b[w] & o] || "", y.length === f) return y;
686
+ if (m += e[v[w] & o] || "", m.length === g) return m;
684
687
  }
685
688
  };
686
689
  }, me = (e, n = 21) => he(e, n, ge), Ae = (e = 21) => {
@@ -692,32 +695,32 @@ let ge = (e) => crypto.getRandomValues(new Uint8Array(e)), he = (e, n, t) => {
692
695
  const $e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_", 20)() }), be = (e) => {
693
696
  const n = JSON.stringify(e);
694
697
  let t = 0;
695
- for (let o = 0, i = n.length; o < i; o++) {
696
- let f = n.charCodeAt(o);
697
- t = (t << 5) - t + f, t |= 0;
698
+ for (let o = 0, r = n.length; o < r; o++) {
699
+ let g = n.charCodeAt(o);
700
+ t = (t << 5) - t + g, t |= 0;
698
701
  }
699
702
  return `${t}`;
700
703
  }, ve = (e) => e ? typeof e == "object" ? { ...e } : e : void 0, Ve = (e, n) => (Array.isArray(e) ? e : [e]).map((t) => {
701
- const { id: o, type: i, purpose: f, value: y, created: b, modified: w, creator: g, ...S } = t;
704
+ const { id: o, type: r, purpose: g, value: m, created: v, modified: w, creator: p, ...L } = t;
702
705
  return {
703
706
  id: o || `temp-${be(t)}`,
704
707
  annotation: n,
705
- type: i,
706
- purpose: f,
707
- value: y,
708
- creator: ve(g),
709
- created: b ? new Date(b) : void 0,
708
+ type: r,
709
+ purpose: g,
710
+ value: m,
711
+ creator: ve(p),
712
+ created: v ? new Date(v) : void 0,
710
713
  updated: w ? new Date(w) : void 0,
711
- ...S
714
+ ...L
712
715
  };
713
716
  }), _e = (e) => e.map((n) => {
714
- var b;
715
- const { annotation: t, created: o, updated: i, ...f } = n, y = {
716
- ...f,
717
+ var v;
718
+ const { annotation: t, created: o, updated: r, ...g } = n, m = {
719
+ ...g,
717
720
  created: o == null ? void 0 : o.toISOString(),
718
- modified: i == null ? void 0 : i.toISOString()
721
+ modified: r == null ? void 0 : r.toISOString()
719
722
  };
720
- return (b = y.id) != null && b.startsWith("temp-") && delete y.id, y;
723
+ return (v = m.id) != null && v.startsWith("temp-") && delete m.id, m;
721
724
  }), Ee = [
722
725
  "#ff7c00",
723
726
  // orange
@@ -740,70 +743,70 @@ const $e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABC
740
743
  ], we = () => {
741
744
  const e = [...Ee];
742
745
  return { assignRandomColor: () => {
743
- const o = Math.floor(Math.random() * e.length), i = e[o];
744
- return e.splice(o, 1), i;
746
+ const o = Math.floor(Math.random() * e.length), r = e[o];
747
+ return e.splice(o, 1), r;
745
748
  }, releaseColor: (o) => e.push(o) };
746
749
  }, ye = () => {
747
750
  const e = we();
748
- return { addUser: (o, i) => {
749
- const f = e.assignRandomColor();
751
+ return { addUser: (o, r) => {
752
+ const g = e.assignRandomColor();
750
753
  return {
751
- label: i.name || i.id,
752
- avatar: i.avatar,
753
- color: f
754
+ label: r.name || r.id,
755
+ avatar: r.avatar,
756
+ color: g
754
757
  };
755
758
  }, removeUser: (o) => e.releaseColor(o.appearance.color) };
756
759
  }, Ce = (e, n) => e.every((t) => e.includes(t)) && n.every((t) => e.includes(t)), Ye = Ae(), je = (e = ye()) => {
757
- const n = Q(), t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), i = (r, E) => {
758
- if (t.has(r)) {
759
- console.warn("Attempt to add user that is already present", r, E);
760
+ const n = Q(), t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), r = (a, E) => {
761
+ if (t.has(a)) {
762
+ console.warn("Attempt to add user that is already present", a, E);
760
763
  return;
761
764
  }
762
- const A = e.addUser(r, E);
763
- t.set(r, {
765
+ const U = e.addUser(a, E);
766
+ t.set(a, {
764
767
  ...E,
765
- presenceKey: r,
766
- appearance: A
768
+ presenceKey: a,
769
+ appearance: U
767
770
  });
768
- }, f = (r) => {
769
- const E = t.get(r);
771
+ }, g = (a) => {
772
+ const E = t.get(a);
770
773
  if (!E) {
771
- console.warn("Attempt to remove user that is not present", r);
774
+ console.warn("Attempt to remove user that is not present", a);
772
775
  return;
773
776
  }
774
- e.removeUser(E), t.delete(r);
775
- }, y = (r) => {
776
- const E = new Set(r.map((L) => L.presenceKey)), A = r.filter(({ presenceKey: L }) => !t.has(L)), v = Array.from(t.values()).filter((L) => !E.has(L.presenceKey));
777
- A.forEach(({ presenceKey: L, user: O }) => i(L, O)), v.forEach((L) => {
778
- const { presenceKey: O } = L;
779
- o.has(O) && n.emit("selectionChange", L, null), f(O);
780
- }), (A.length > 0 || v.length > 0) && n.emit("presence", g());
781
- }, b = (r, E) => {
782
- const A = t.get(r);
783
- if (!A) {
777
+ e.removeUser(E), t.delete(a);
778
+ }, m = (a) => {
779
+ const E = new Set(a.map((y) => y.presenceKey)), U = a.filter(({ presenceKey: y }) => !t.has(y)), h = Array.from(t.values()).filter((y) => !E.has(y.presenceKey));
780
+ U.forEach(({ presenceKey: y, user: O }) => r(y, O)), h.forEach((y) => {
781
+ const { presenceKey: O } = y;
782
+ o.has(O) && n.emit("selectionChange", y, null), g(O);
783
+ }), (U.length > 0 || h.length > 0) && n.emit("presence", p());
784
+ }, v = (a, E) => {
785
+ const U = t.get(a);
786
+ if (!U) {
784
787
  console.warn("Activity notification from user that is not present");
785
788
  return;
786
789
  }
787
- const v = o.get(r);
788
- (!v || !Ce(v, E)) && (o.set(r, E), n.emit("selectionChange", A, E));
789
- }, w = (r, E) => {
790
- const A = t.get(r);
791
- if (!A) {
792
- console.warn("Selection change for user that is not present", r);
790
+ const h = o.get(a);
791
+ (!h || !Ce(h, E)) && (o.set(a, E), n.emit("selectionChange", U, E));
792
+ }, w = (a, E) => {
793
+ const U = t.get(a);
794
+ if (!U) {
795
+ console.warn("Selection change for user that is not present", a);
793
796
  return;
794
797
  }
795
- E ? o.set(r, E) : o.delete(r), n.emit("selectionChange", A, E);
796
- }, g = () => [...Array.from(t.values())];
798
+ E ? o.set(a, E) : o.delete(a), n.emit("selectionChange", U, E);
799
+ }, p = () => [...Array.from(t.values())];
797
800
  return {
798
- getPresentUsers: g,
799
- notifyActivity: b,
800
- on: (r, E) => n.on(r, E),
801
- syncUsers: y,
801
+ getPresentUsers: p,
802
+ notifyActivity: v,
803
+ on: (a, E) => n.on(a, E),
804
+ syncUsers: m,
802
805
  updateSelection: w
803
806
  };
804
807
  };
805
808
  export {
806
- ae as Ignore,
809
+ re as Ignore,
807
810
  T as Origin,
808
811
  Ye as PRESENCE_KEY,
809
812
  Z as UserSelectAction,
@@ -812,12 +815,12 @@ export {
812
815
  De as createBody,
813
816
  ye as createDefaultAppearanceProvider,
814
817
  Ue as createHoverState,
815
- ke as createLifecycleObserver,
818
+ xe as createLifecycleObserver,
816
819
  je as createPresenceState,
817
820
  Te as createSelectionState,
818
821
  Re as createStore,
819
822
  Ie as createUndoStack,
820
- xe as createViewportState,
823
+ ke as createViewportState,
821
824
  we as defaultColorProvider,
822
825
  J as diffAnnotations,
823
826
  Oe as getContributors,
@@ -829,7 +832,7 @@ export {
829
832
  j as reviveDates,
830
833
  Ne as serializeAll,
831
834
  _e as serializeW3CBodies,
832
- re as shouldNotify,
835
+ ae as shouldNotify,
833
836
  Be as toSvelteStore
834
837
  };
835
838
  //# sourceMappingURL=annotorious-core.es.js.map