@annotorious/core 3.0.5 → 3.0.7

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.
@@ -21,44 +21,44 @@ function I(e, n) {
21
21
  }
22
22
  function _() {
23
23
  }
24
- function X(e, n) {
24
+ function Z(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;
31
+ function d(v) {
32
+ if (Z(e, v) && (e = v, t)) {
33
+ const w = !x.length;
34
34
  for (const g of o)
35
- g[1](), k.push(g, e);
35
+ g[1](), x.push(g, 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 g = 0; g < x.length; g += 2)
38
+ x[g][0](x[g + 1]);
39
+ x.length = 0;
40
40
  }
41
41
  }
42
42
  }
43
- function f(b) {
44
- i(b(e));
43
+ function p(v) {
44
+ d(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), () => {
46
+ function m(v, w = _) {
47
+ const g = [v, w];
48
+ return o.add(g), o.size === 1 && (t = n(d, p) || _), v(e), () => {
49
49
  o.delete(g), o.size === 0 && t && (t(), t = null);
50
50
  };
51
51
  }
52
- return { set: i, update: f, subscribe: y };
52
+ return { set: d, update: p, 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((d) => o = d), e.observe(({ changes: d }) => {
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
+ (d.deleted || []).some((v) => v.id === o) && t(void 0);
60
+ const m = (d.updated || []).find(({ oldValue: v }) => v.id === o);
61
+ m && t(m.newValue.id);
62
62
  }
63
63
  }), {
64
64
  get current() {
@@ -68,72 +68,75 @@ const Ue = (e) => {
68
68
  set: t
69
69
  };
70
70
  };
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())
71
+ var F = /* @__PURE__ */ ((e) => (e.EDIT = "EDIT", e.SELECT = "SELECT", e.NONE = "NONE", e))(F || {});
72
+ const z = { selected: [] }, Te = (e, n, t) => {
73
+ const { subscribe: o, set: d } = M(z);
74
+ let p = n, m = z;
75
+ o((h) => m = h);
76
+ const v = () => {
77
+ I(m, z) || d(z);
78
+ }, w = () => {
79
+ var h;
80
+ return ((h = m.selected) == null ? void 0 : h.length) === 0;
81
+ }, g = (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 C = typeof h == "string" ? h : h.id;
85
+ return m.selected.some((O) => O.id === C);
86
+ }, L = (h, C) => {
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, p, t)) {
93
93
  case "EDIT":
94
- o({ selected: [{ id: A, editable: !0 }], event: v });
94
+ d({ selected: [{ id: h, editable: !0 }], event: C });
95
95
  break;
96
96
  case "SELECT":
97
- o({ selected: [{ id: A }], event: v });
97
+ d({ selected: [{ id: h }], event: C });
98
98
  break;
99
99
  default:
100
- o({ selected: [], event: v });
100
+ d({ selected: [], event: C });
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, C) => {
103
+ const O = Array.isArray(h) ? h : [h], r = O.map((u) => e.getAnnotation(u)).filter((u) => !!u);
104
+ d({
105
+ selected: r.map((u) => {
106
+ const s = C === void 0 ? G(u, p, t) === "EDIT" : C;
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
+ }), r.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: C } = m;
114
+ C.some(({ id: r }) => h.includes(r)) && d({ selected: C.filter(({ id: r }) => !h.includes(r)) });
115
+ }, U = (h) => p = h;
116
116
  return e.observe(
117
- ({ changes: A }) => r((A.deleted || []).map((v) => v.id))
117
+ ({ changes: h }) => E((h.deleted || []).map((C) => C.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 p;
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: g,
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));
@@ -150,7 +153,7 @@ var ne = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(cryp
150
153
  const H = {
151
154
  randomUUID: ne
152
155
  };
153
- function F(e, n, t) {
156
+ function J(e, n, t) {
154
157
  if (H.randomUUID && !n && !e)
155
158
  return H.randomUUID();
156
159
  e = e || {};
@@ -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((d, p) => [...d, p.creator, p.updatedBy].filter(Boolean), []);
162
165
  return [
163
166
  n,
164
167
  t,
165
168
  ...o
166
- ].filter((i) => i);
169
+ ].filter((d) => d);
167
170
  }, j = (e) => {
168
171
  const n = (t) => {
169
172
  const o = { ...t };
@@ -175,7 +178,7 @@ const Oe = (e) => {
175
178
  target: n(e.target)
176
179
  };
177
180
  }, De = (e, n, t, o) => ({
178
- id: F(),
181
+ id: J(),
179
182
  annotation: typeof e == "string" ? e : e.id,
180
183
  created: t || /* @__PURE__ */ new Date(),
181
184
  creator: o,
@@ -187,63 +190,63 @@ 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((d) => d.id === t.id);
191
194
  return { newBody: t, oldBody: o && !I(o, t) ? o : void 0 };
192
- }).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);
195
+ }).filter(({ oldBody: t }) => t).map(({ oldBody: t, newBody: o }) => ({ oldBody: t, newBody: o })), de = (e, n) => !I(e.target, n.target), Q = (e, n) => {
196
+ const t = oe(e, n), o = se(e, n), d = 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: d.length > 0 ? d : 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 p, 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 = (p = t.updated) == null ? void 0 : p.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([
221
+ const v = /* @__PURE__ */ new Set([
219
222
  ...(t.created || []).map((g) => g.id),
220
223
  ...(t.deleted || []).map((g) => g.id),
221
224
  ...(t.updated || []).map(({ oldValue: g }) => g.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((g) => v.has(g));
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)), d = new Set((n.created || []).map((a) => a.id)), p = 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) => !p.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
233
  ], 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);
234
+ ...(e.deleted || []).filter((a) => !d.has(a.id)),
235
+ ...(n.deleted || []).filter((a) => !t.has(a.id))
236
+ ], L = [
237
+ ...(e.updated || []).filter(({ newValue: a }) => !p.has(a.id)).map((a) => {
238
+ const { oldValue: E, newValue: U } = a;
239
+ if (m.has(U.id)) {
240
+ const h = n.updated.find((C) => C.oldValue.id === U.id).newValue;
241
+ return Q(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: g, updated: L };
245
248
  }, V = (e) => {
246
- const n = e.id === void 0 ? F() : e.id;
249
+ const n = e.id === void 0 ? J() : e.id;
247
250
  return {
248
251
  ...e,
249
252
  id: n,
@@ -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
+ }, d = (i) => {
266
+ const c = t.findIndex((l) => l.onChange == i);
264
267
  c > -1 && t.splice(c, 1);
265
- }, f = (d, c) => {
268
+ }, p = (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)), p(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 y = Q(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)), y;
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 && p(f, { updated: [S] });
298
+ }, g = (i, c = T.LOCAL) => {
299
+ const l = i.reduce((f, S) => {
300
+ const y = v(S);
301
+ return y ? [...f, y] : 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 && p(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), p(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(), p(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) => {
323
- e.set(C.id, C), C.bodies.forEach((B) => n.set(B.id, C.id));
324
- }), f(l, { created: p, deleted: U });
324
+ const S = [...e.values()];
325
+ e.clear(), n.clear(), f.forEach((y) => {
326
+ e.set(y.id, y), y.bodies.forEach((B) => n.set(B.id, y.id));
327
+ }), p(l, { created: f, deleted: S });
325
328
  } else {
326
- const U = d.reduce((C, B) => {
329
+ const S = i.reduce((y, B) => {
327
330
  const W = B.id && e.get(B.id);
328
- return W ? [...C, W] : C;
331
+ return W ? [...y, W] : y;
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
- e.set(C.id, C), C.bodies.forEach((B) => n.set(B.id, C.id));
334
- }), f(l, { created: p });
333
+ if (S.length > 0)
334
+ throw Error(`Bulk insert would overwrite the following annotations: ${S.map((y) => y.id).join(", ")}`);
335
+ f.forEach((y) => {
336
+ e.set(y.id, y), y.bodies.forEach((B) => n.set(B.id, y.id));
337
+ }), p(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
+ }, C = (i, c = T.LOCAL) => {
345
+ const l = h(i);
346
+ l && p(c, { deleted: [l] });
347
+ }, O = (i, c = T.LOCAL) => {
348
+ const l = i.reduce((f, S) => {
349
+ const y = h(S);
350
+ return y ? [...f, y] : 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 && p(c, { deleted: l });
353
+ }, r = (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((y) => y.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 = r(i);
374
+ l && p(c, { updated: [l] });
375
+ }, s = (i, c = T.LOCAL) => {
376
+ const l = i.map((f) => r(f)).filter(Boolean);
377
+ l.length > 0 && p(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((y) => y.id === i.id), S = {
393
396
  ...l,
394
- bodies: l.bodies.map((C) => C.id === p.id ? c : C)
397
+ bodies: l.bodies.map((y) => y.id === f.id ? c : y)
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 && p(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
+ p(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
440
  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 });
441
+ bulkUpdateBodies: k,
442
+ bulkUpdateTargets: (i, c = T.LOCAL) => {
443
+ const l = i.map((f) => P(f)).filter(Boolean);
444
+ l.length > 0 && p(c, { updated: l });
442
445
  },
443
446
  clear: E,
444
- deleteAnnotation: L,
447
+ deleteAnnotation: C,
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: d,
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 && p(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 = (d) => t(d.state);
461
464
  return e.observe(o), t(e.all()), () => e.unobserve(o);
462
465
  }
463
466
  });
464
- let Q = () => ({
467
+ let X = () => ({
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] || [], d = o.length; t < d; t++)
467
470
  o[t](...n);
468
471
  },
469
472
  events: {},
@@ -471,216 +474,225 @@ 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((d) => n !== d);
475
478
  };
476
479
  }
477
480
  });
478
481
  const ue = 250, Ie = (e) => {
479
- 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;
482
+ const n = X(), t = [];
483
+ let o = -1, d = !1, p = 0;
484
+ const m = (s) => {
485
+ if (!d) {
486
+ const { changes: A } = s, b = performance.now();
487
+ if (b - p > 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
+ p = b;
491
494
  }
492
- i = !1;
495
+ d = !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), g = (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
+ d = !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
+ d = !0;
514
+ const { created: s, updated: A, deleted: b } = t[o];
515
+ v(s), g(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: d, selection: p, store: m, viewport: v } = e, w = /* @__PURE__ */ new Map();
527
+ let g = [], L, a;
528
+ const E = (r, u) => {
529
+ w.has(r) ? w.get(r).push(u) : w.set(r, [u]);
530
+ }, U = (r, u) => {
531
+ const s = w.get(r);
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 = (r, u, s) => {
537
+ w.has(r) && setTimeout(() => {
538
+ w.get(r).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
+ }, C = () => {
547
+ const { selected: r } = p, u = (r || []).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);
549
+ const A = g.find((b) => b.id === s.id);
550
+ (!A || !I(A, s)) && h("updateAnnotation", s, A);
548
551
  }), g = g.map((s) => {
549
- const h = u.find(({ id: m }) => m === s.id);
550
- return h || 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)
556
+ p.subscribe(({ selected: r }) => {
557
+ if (!(g.length === 0 && r.length === 0)) {
558
+ if (g.length === 0 && r.length > 0)
559
+ g = r.map(({ id: u }) => m.getAnnotation(u));
560
+ else if (g.length > 0 && r.length === 0)
558
561
  g.forEach((u) => {
559
- const s = i.getAnnotation(u.id);
560
- s && !I(s, u) && v("updateAnnotation", s, u);
562
+ const s = m.getAnnotation(u.id);
563
+ s && !I(s, u) && h("updateAnnotation", s, u);
561
564
  }), g = [];
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);
566
+ const u = new Set(g.map((b) => b.id)), s = new Set(r.map(({ id: b }) => b));
567
+ g.filter((b) => !s.has(b.id)).forEach((b) => {
568
+ const R = m.getAnnotation(b.id);
569
+ R && !I(R, b) && h("updateAnnotation", R, b);
567
570
  }), g = [
568
571
  // Remove annotations that were deselected
569
- ...g.filter((m) => s.has(m.id)),
572
+ ...g.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
+ ...r.filter(({ id: b }) => !u.has(b)).map(({ id: b }) => m.getAnnotation(b))
572
575
  ];
573
576
  }
574
- v("selectionChanged", g);
577
+ h("selectionChanged", g);
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
+ }), d.subscribe((r) => {
580
+ !L && r ? h("mouseEnterAnnotation", m.getAnnotation(r)) : L && !r ? h("mouseLeaveAnnotation", m.getAnnotation(L)) : L && r && (h("mouseLeaveAnnotation", m.getAnnotation(L)), h("mouseEnterAnnotation", m.getAnnotation(r))), L = r;
581
+ }), v == null || v.subscribe((r) => h("viewportIntersect", r.map((u) => m.getAnnotation(u)))), m.observe((r) => {
582
+ o && (a && clearTimeout(a), a = setTimeout(C, 1e3));
583
+ const { created: u, deleted: s } = r.changes;
584
+ (u || []).forEach((b) => h("createAnnotation", b)), (s || []).forEach((b) => h("deleteAnnotation", b)), (r.changes.updated || []).filter((b) => [
585
+ ...b.bodiesCreated || [],
586
+ ...b.bodiesDeleted || [],
587
+ ...b.bodiesUpdated || []
588
+ ].length > 0).forEach(({ oldValue: b, newValue: R }) => {
589
+ const N = g.find((k) => k.id === b.id) || b;
590
+ g = g.map((k) => k.id === b.id ? R : k), h("updateAnnotation", R, N);
588
591
  });
589
- }, { origin: T.LOCAL }), i.observe((a) => {
592
+ }, { origin: T.LOCAL }), m.observe((r) => {
590
593
  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;
594
+ const u = new Set(g.map((A) => A.id)), s = (r.changes.updated || []).filter(({ newValue: A }) => u.has(A.id)).map(({ newValue: A }) => A);
595
+ s.length > 0 && (g = g.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 = (r) => (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
+ r ? (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: d, error: p } = e.parse(o);
608
+ return p ? {
606
609
  parsed: t.parsed,
607
610
  failed: [...t.failed, o]
608
- } : i ? {
609
- parsed: [...t.parsed, i],
611
+ } : d ? {
612
+ parsed: [...t.parsed, d],
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: d } = e, p = (r) => {
616
619
  if (t) {
617
- const { parsed: u, error: s } = t.parse(a);
620
+ const { parsed: u, error: s } = t.parse(r);
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(r), T.REMOTE);
624
+ }, m = () => d.clear(), v = () => o.clear(), w = (r) => {
625
+ const u = o.getAnnotation(r);
623
626
  return t && u ? t.serialize(u) : u;
624
- }, g = () => t ? o.all().map(t.serialize) : o.all(), S = () => {
627
+ }, g = () => 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 = d.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 = (r, u = !0) => fetch(r).then((s) => s.json()).then((s) => (U(s, u), s)), E = (r) => {
632
+ if (typeof r == "string") {
633
+ const u = o.getAnnotation(r);
634
+ if (o.deleteAnnotation(r), 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(r).parsed : r;
635
638
  if (u)
636
- return o.deleteAnnotation(u), a;
639
+ return o.deleteAnnotation(u), r;
637
640
  }
638
- }, A = (a, u = !0) => {
641
+ }, U = (r, 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(r);
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(r.map(j), u, T.REMOTE);
647
+ }, h = (r, u) => {
648
+ r ? d.setSelected(r, u) : d.clear();
649
+ }, C = (r) => {
650
+ d.clear(), d.setUserSelectAction(r);
651
+ }, O = (r) => {
649
652
  if (t) {
650
- const u = t.parse(a).parsed, s = t.serialize(o.getAnnotation(u.id));
653
+ const u = t.parse(r).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(r.id);
657
+ return o.updateAnnotation(j(r)), u;
655
658
  }
656
659
  };
657
660
  return {
658
- addAnnotation: f,
659
- cancelSelected: y,
661
+ addAnnotation: p,
662
+ cancelSelected: m,
660
663
  canRedo: n.canRedo,
661
664
  canUndo: n.canUndo,
662
- clearAnnotations: b,
665
+ clearAnnotations: v,
663
666
  getAnnotationById: w,
664
667
  getAnnotations: g,
665
- getSelected: S,
666
- loadAnnotations: r,
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: C,
672
675
  undo: n.undo,
673
676
  updateAnnotation: O
674
677
  };
678
+ }, $e = (e, n, t) => typeof n == "function" ? n(e, t) : n, Ve = (e, n) => typeof e != "function" && typeof n != "function" ? {
679
+ ...e || {},
680
+ ...n || {}
681
+ } : (t, o) => {
682
+ const d = typeof e == "function" ? e(t, o) : e, p = typeof n == "function" ? n(t, o) : n;
683
+ return {
684
+ ...d || {},
685
+ ...p || {}
686
+ };
675
687
  }, pe = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
676
688
  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 = "";
689
+ let o = (2 << Math.log(e.length - 1) / Math.LN2) - 1, d = -~(1.6 * o * n / e.length);
690
+ return (p = n) => {
691
+ let m = "";
680
692
  for (; ; ) {
681
- let b = t(i), w = i;
693
+ let v = t(d), w = d;
682
694
  for (; w--; )
683
- if (y += e[b[w] & o] || "", y.length === f) return y;
695
+ if (m += e[v[w] & o] || "", m.length === p) return m;
684
696
  }
685
697
  };
686
698
  }, me = (e, n = 21) => he(e, n, ge), Ae = (e = 21) => {
@@ -689,35 +701,35 @@ let ge = (e) => crypto.getRandomValues(new Uint8Array(e)), he = (e, n, t) => {
689
701
  n += pe[t[e] & 63];
690
702
  return n;
691
703
  };
692
- const $e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_", 20)() }), be = (e) => {
704
+ const _e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_", 20)() }), be = (e) => {
693
705
  const n = JSON.stringify(e);
694
706
  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;
707
+ for (let o = 0, d = n.length; o < d; o++) {
708
+ let p = n.charCodeAt(o);
709
+ t = (t << 5) - t + p, t |= 0;
698
710
  }
699
711
  return `${t}`;
700
- }, 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;
712
+ }, ve = (e) => e ? typeof e == "object" ? { ...e } : e : void 0, Ye = (e, n) => (Array.isArray(e) ? e : [e]).map((t) => {
713
+ const { id: o, type: d, purpose: p, value: m, created: v, modified: w, creator: g, ...L } = t;
702
714
  return {
703
715
  id: o || `temp-${be(t)}`,
704
716
  annotation: n,
705
- type: i,
706
- purpose: f,
707
- value: y,
717
+ type: d,
718
+ purpose: p,
719
+ value: m,
708
720
  creator: ve(g),
709
- created: b ? new Date(b) : void 0,
721
+ created: v ? new Date(v) : void 0,
710
722
  updated: w ? new Date(w) : void 0,
711
- ...S
723
+ ...L
712
724
  };
713
- }), _e = (e) => e.map((n) => {
714
- var b;
715
- const { annotation: t, created: o, updated: i, ...f } = n, y = {
716
- ...f,
725
+ }), je = (e) => e.map((n) => {
726
+ var v;
727
+ const { annotation: t, created: o, updated: d, ...p } = n, m = {
728
+ ...p,
717
729
  created: o == null ? void 0 : o.toISOString(),
718
- modified: i == null ? void 0 : i.toISOString()
730
+ modified: d == null ? void 0 : d.toISOString()
719
731
  };
720
- return (b = y.id) != null && b.startsWith("temp-") && delete y.id, y;
732
+ return (v = m.id) != null && v.startsWith("temp-") && delete m.id, m;
721
733
  }), Ee = [
722
734
  "#ff7c00",
723
735
  // orange
@@ -740,96 +752,98 @@ const $e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABC
740
752
  ], we = () => {
741
753
  const e = [...Ee];
742
754
  return { assignRandomColor: () => {
743
- const o = Math.floor(Math.random() * e.length), i = e[o];
744
- return e.splice(o, 1), i;
755
+ const o = Math.floor(Math.random() * e.length), d = e[o];
756
+ return e.splice(o, 1), d;
745
757
  }, releaseColor: (o) => e.push(o) };
746
- }, ye = () => {
758
+ }, Ce = () => {
747
759
  const e = we();
748
- return { addUser: (o, i) => {
749
- const f = e.assignRandomColor();
760
+ return { addUser: (o, d) => {
761
+ const p = e.assignRandomColor();
750
762
  return {
751
- label: i.name || i.id,
752
- avatar: i.avatar,
753
- color: f
763
+ label: d.name || d.id,
764
+ avatar: d.avatar,
765
+ color: p
754
766
  };
755
767
  }, removeUser: (o) => e.releaseColor(o.appearance.color) };
756
- }, 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);
768
+ }, ye = (e, n) => e.every((t) => e.includes(t)) && n.every((t) => e.includes(t)), Me = Ae(), Pe = (e = Ce()) => {
769
+ const n = X(), t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), d = (a, E) => {
770
+ if (t.has(a)) {
771
+ console.warn("Attempt to add user that is already present", a, E);
760
772
  return;
761
773
  }
762
- const A = e.addUser(r, E);
763
- t.set(r, {
774
+ const U = e.addUser(a, E);
775
+ t.set(a, {
764
776
  ...E,
765
- presenceKey: r,
766
- appearance: A
777
+ presenceKey: a,
778
+ appearance: U
767
779
  });
768
- }, f = (r) => {
769
- const E = t.get(r);
780
+ }, p = (a) => {
781
+ const E = t.get(a);
770
782
  if (!E) {
771
- console.warn("Attempt to remove user that is not present", r);
783
+ console.warn("Attempt to remove user that is not present", a);
772
784
  return;
773
785
  }
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) {
786
+ e.removeUser(E), t.delete(a);
787
+ }, m = (a) => {
788
+ const E = new Set(a.map((C) => C.presenceKey)), U = a.filter(({ presenceKey: C }) => !t.has(C)), h = Array.from(t.values()).filter((C) => !E.has(C.presenceKey));
789
+ U.forEach(({ presenceKey: C, user: O }) => d(C, O)), h.forEach((C) => {
790
+ const { presenceKey: O } = C;
791
+ o.has(O) && n.emit("selectionChange", C, null), p(O);
792
+ }), (U.length > 0 || h.length > 0) && n.emit("presence", g());
793
+ }, v = (a, E) => {
794
+ const U = t.get(a);
795
+ if (!U) {
784
796
  console.warn("Activity notification from user that is not present");
785
797
  return;
786
798
  }
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);
799
+ const h = o.get(a);
800
+ (!h || !ye(h, E)) && (o.set(a, E), n.emit("selectionChange", U, E));
801
+ }, w = (a, E) => {
802
+ const U = t.get(a);
803
+ if (!U) {
804
+ console.warn("Selection change for user that is not present", a);
793
805
  return;
794
806
  }
795
- E ? o.set(r, E) : o.delete(r), n.emit("selectionChange", A, E);
807
+ E ? o.set(a, E) : o.delete(a), n.emit("selectionChange", U, E);
796
808
  }, g = () => [...Array.from(t.values())];
797
809
  return {
798
810
  getPresentUsers: g,
799
- notifyActivity: b,
800
- on: (r, E) => n.on(r, E),
801
- syncUsers: y,
811
+ notifyActivity: v,
812
+ on: (a, E) => n.on(a, E),
813
+ syncUsers: m,
802
814
  updateSelection: w
803
815
  };
804
816
  };
805
817
  export {
806
- ae as Ignore,
818
+ re as Ignore,
807
819
  T as Origin,
808
- Ye as PRESENCE_KEY,
809
- Z as UserSelectAction,
810
- $e as createAnonymousGuest,
820
+ Me as PRESENCE_KEY,
821
+ F as UserSelectAction,
822
+ Ve as chainStyles,
823
+ $e as computeStyle,
824
+ _e as createAnonymousGuest,
811
825
  ze as createBaseAnnotator,
812
826
  De as createBody,
813
- ye as createDefaultAppearanceProvider,
827
+ Ce as createDefaultAppearanceProvider,
814
828
  Ue as createHoverState,
815
- ke as createLifecycleObserver,
816
- je as createPresenceState,
829
+ xe as createLifecycleObserver,
830
+ Pe as createPresenceState,
817
831
  Te as createSelectionState,
818
832
  Re as createStore,
819
833
  Ie as createUndoStack,
820
- xe as createViewportState,
834
+ ke as createViewportState,
821
835
  we as defaultColorProvider,
822
- J as diffAnnotations,
836
+ Q as diffAnnotations,
823
837
  Oe as getContributors,
824
838
  ce as mergeChanges,
825
839
  G as onUserSelect,
826
840
  fe as parseAll,
827
- Ve as parseW3CBodies,
841
+ Ye as parseW3CBodies,
828
842
  ve as parseW3CUser,
829
843
  j as reviveDates,
830
844
  Ne as serializeAll,
831
- _e as serializeW3CBodies,
832
- re as shouldNotify,
845
+ je as serializeW3CBodies,
846
+ ae as shouldNotify,
833
847
  Be as toSvelteStore
834
848
  };
835
849
  //# sourceMappingURL=annotorious-core.es.js.map